@stream-io/video-react-native-sdk 1.1.3 → 1.1.5
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.
- package/CHANGELOG.md +13 -0
- package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer.js +3 -1
- package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer.js.map +1 -1
- package/dist/commonjs/hooks/index.js +11 -0
- package/dist/commonjs/hooks/index.js.map +1 -1
- package/dist/commonjs/hooks/useTrackDimensions.js +90 -0
- package/dist/commonjs/hooks/useTrackDimensions.js.map +1 -0
- package/dist/commonjs/version.js +1 -1
- package/dist/module/components/Participant/ParticipantView/VideoRenderer.js +3 -1
- package/dist/module/components/Participant/ParticipantView/VideoRenderer.js.map +1 -1
- package/dist/module/hooks/index.js +1 -0
- package/dist/module/hooks/index.js.map +1 -1
- package/dist/module/hooks/useTrackDimensions.js +85 -0
- package/dist/module/hooks/useTrackDimensions.js.map +1 -0
- package/dist/module/version.js +1 -1
- package/dist/typescript/components/Participant/ParticipantView/VideoRenderer.d.ts.map +1 -1
- package/dist/typescript/hooks/index.d.ts +1 -0
- package/dist/typescript/hooks/index.d.ts.map +1 -1
- package/dist/typescript/hooks/useTrackDimensions.d.ts +11 -0
- package/dist/typescript/hooks/useTrackDimensions.d.ts.map +1 -0
- package/dist/typescript/version.d.ts +1 -1
- package/package.json +3 -3
- package/src/components/Participant/ParticipantView/VideoRenderer.tsx +8 -1
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useTrackDimensions.ts +79 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [1.1.5](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.1.4...@stream-io/video-react-native-sdk-1.1.5) (2024-10-16)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
* **react-native:** set objectFit based on actual video track dimensions ([#1520](https://github.com/GetStream/stream-video-js/issues/1520)) ([44ef7d2](https://github.com/GetStream/stream-video-js/commit/44ef7d2e69a910be45b2d3a7643c3f58e0f29803))
|
|
11
|
+
|
|
12
|
+
## [1.1.4](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.1.3...@stream-io/video-react-native-sdk-1.1.4) (2024-10-10)
|
|
13
|
+
|
|
14
|
+
### Dependency Updates
|
|
15
|
+
|
|
16
|
+
* `@stream-io/video-client` updated to version `1.8.3`
|
|
17
|
+
* `@stream-io/video-react-bindings` updated to version `1.1.3`
|
|
5
18
|
## [1.1.3](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-native-sdk-1.1.2...@stream-io/video-react-native-sdk-1.1.3) (2024-10-10)
|
|
6
19
|
|
|
7
20
|
### Dependency Updates
|
|
@@ -11,6 +11,7 @@ var _videoClient = require("@stream-io/video-client");
|
|
|
11
11
|
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
12
12
|
var _ParticipantVideoFallback = require("./ParticipantVideoFallback");
|
|
13
13
|
var _ThemeContext = require("../../../contexts/ThemeContext");
|
|
14
|
+
var _useTrackDimensions = require("../../../hooks/useTrackDimensions");
|
|
14
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
17
|
const DEFAULT_VIEWPORT_VISIBILITY_STATE = {
|
|
@@ -55,6 +56,7 @@ const VideoRenderer = ({
|
|
|
55
56
|
const {
|
|
56
57
|
direction
|
|
57
58
|
} = useCameraState();
|
|
59
|
+
const videoDimensions = (0, _useTrackDimensions.useTrackDimensions)(participant, trackType);
|
|
58
60
|
const {
|
|
59
61
|
isLocalParticipant,
|
|
60
62
|
sessionId,
|
|
@@ -203,7 +205,7 @@ const VideoRenderer = ({
|
|
|
203
205
|
style: [styles.videoStream, videoRenderer.videoStream],
|
|
204
206
|
streamURL: videoStreamToRender.toURL(),
|
|
205
207
|
mirror: mirror,
|
|
206
|
-
objectFit: objectFit ?? (
|
|
208
|
+
objectFit: objectFit ?? (videoDimensions.width > videoDimensions.height ? 'contain' : 'cover'),
|
|
207
209
|
zOrder: videoZOrder
|
|
208
210
|
}) : ParticipantVideoFallback && /*#__PURE__*/_react.default.createElement(ParticipantVideoFallback, {
|
|
209
211
|
participant: participant
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeWebrtc","_videoClient","_videoReactBindings","_ParticipantVideoFallback","_ThemeContext","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","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","subscribedVideoLayoutRef","direction","isLocalParticipant","sessionId","viewportVisibilityState","videoStream","screenShareStream","isScreenSharing","isPublishingVideoTrack","hasScreenShare","hasVideo","hasJoinedCall","CallingState","JOINED","videoStreamToRender","canShowVideo","mirror","useEffect","VISIBLE","state","updateParticipant","p","INVISIBLE","current","undefined","updateIsNeeded","dimension","updateParticipantTracks","dynascaleManager","applyTrackSubscriptions","onLayout","event","width","Math","trunc","nativeEvent","layout","height","createElement","View","style","styles","container","RTCView","streamURL","toURL","zOrder","exports","StyleSheet","create","absoluteFillObject"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/VideoRenderer.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,kBAAA,GAAAF,OAAA;AAEA,IAAAG,YAAA,GAAAH,OAAA;AAQA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,yBAAA,GAAAL,OAAA;AACA,IAAAM,aAAA,GAAAN,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeWebrtc","_videoClient","_videoReactBindings","_ParticipantVideoFallback","_ThemeContext","_useTrackDimensions","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","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","subscribedVideoLayoutRef","direction","videoDimensions","useTrackDimensions","isLocalParticipant","sessionId","viewportVisibilityState","videoStream","screenShareStream","isScreenSharing","isPublishingVideoTrack","hasScreenShare","hasVideo","hasJoinedCall","CallingState","JOINED","videoStreamToRender","canShowVideo","mirror","useEffect","VISIBLE","state","updateParticipant","p","INVISIBLE","current","undefined","updateIsNeeded","dimension","updateParticipantTracks","dynascaleManager","applyTrackSubscriptions","onLayout","event","width","Math","trunc","nativeEvent","layout","height","createElement","View","style","styles","container","RTCView","streamURL","toURL","zOrder","exports","StyleSheet","create","absoluteFillObject"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/VideoRenderer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -102,4 +102,15 @@ Object.keys(_useScreenShareButton).forEach(function (key) {
|
|
|
102
102
|
}
|
|
103
103
|
});
|
|
104
104
|
});
|
|
105
|
+
var _useTrackDimensions = require("./useTrackDimensions");
|
|
106
|
+
Object.keys(_useTrackDimensions).forEach(function (key) {
|
|
107
|
+
if (key === "default" || key === "__esModule") return;
|
|
108
|
+
if (key in exports && exports[key] === _useTrackDimensions[key]) return;
|
|
109
|
+
Object.defineProperty(exports, key, {
|
|
110
|
+
enumerable: true,
|
|
111
|
+
get: function () {
|
|
112
|
+
return _useTrackDimensions[key];
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
});
|
|
105
116
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_usePermissionRequest","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_usePermissionNotification","_push","_useAndroidKeepCallAliveEffect","_useIsIosScreenshareBroadcastStarted","_useIsInPiPMode","_useAutoEnterPiPEffect","_useApplyDefaultMediaStreamSettings","_useScreenShareButton"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_usePermissionRequest","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_usePermissionNotification","_push","_useAndroidKeepCallAliveEffect","_useIsIosScreenshareBroadcastStarted","_useIsInPiPMode","_useAutoEnterPiPEffect","_useApplyDefaultMediaStreamSettings","_useScreenShareButton","_useTrackDimensions"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useTrackDimensions = useTrackDimensions;
|
|
7
|
+
var _videoReactBindings = require("@stream-io/video-react-bindings");
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
/**
|
|
10
|
+
* This is a utility hook to get the dimensions of the video track of the participant.
|
|
11
|
+
* Note: the `tracktype` is used only for local participants.
|
|
12
|
+
* `tracktype` should be 'videoTrack' for video track and 'screenShareTrack' for screen share track.
|
|
13
|
+
*/
|
|
14
|
+
function useTrackDimensions(participant, trackType) {
|
|
15
|
+
const [trackDimensions, setTrackDimensions] = (0, _react.useState)({
|
|
16
|
+
width: 0,
|
|
17
|
+
height: 0
|
|
18
|
+
});
|
|
19
|
+
const call = (0, _videoReactBindings.useCall)();
|
|
20
|
+
const {
|
|
21
|
+
isLocalParticipant,
|
|
22
|
+
sessionId,
|
|
23
|
+
videoStream,
|
|
24
|
+
screenShareStream
|
|
25
|
+
} = participant;
|
|
26
|
+
|
|
27
|
+
// for local participant we can get from track.getSettings()
|
|
28
|
+
(0, _react.useEffect)(() => {
|
|
29
|
+
if (call && isLocalParticipant) {
|
|
30
|
+
const stream = trackType === 'screenShareTrack' ? screenShareStream : videoStream;
|
|
31
|
+
if (!stream) return;
|
|
32
|
+
const [track] = stream?.getVideoTracks();
|
|
33
|
+
if (!track) return;
|
|
34
|
+
const {
|
|
35
|
+
width = 0,
|
|
36
|
+
height = 0
|
|
37
|
+
} = track.getSettings();
|
|
38
|
+
setTrackDimensions(prev => {
|
|
39
|
+
if (prev.width !== width || prev.height !== height) {
|
|
40
|
+
return {
|
|
41
|
+
width,
|
|
42
|
+
height
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
return prev;
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}, [call, isLocalParticipant, screenShareStream, trackType, videoStream]);
|
|
49
|
+
|
|
50
|
+
// start reporting stats for the remote participant
|
|
51
|
+
(0, _react.useEffect)(() => {
|
|
52
|
+
if (!call) return;
|
|
53
|
+
if (isLocalParticipant) return;
|
|
54
|
+
call.startReportingStatsFor(sessionId);
|
|
55
|
+
return () => {
|
|
56
|
+
call.stopReportingStatsFor(sessionId);
|
|
57
|
+
};
|
|
58
|
+
}, [call, sessionId, isLocalParticipant]);
|
|
59
|
+
|
|
60
|
+
// for remote participants track.getSettings() is not supported it returns an empty object
|
|
61
|
+
// so we need to rely on call stats to get the dimensions
|
|
62
|
+
(0, _react.useEffect)(() => {
|
|
63
|
+
if (!call) return;
|
|
64
|
+
const sub = call.state.callStatsReport$.subscribe(report => {
|
|
65
|
+
if (!report) return;
|
|
66
|
+
const reportForTracks = report.participants[sessionId];
|
|
67
|
+
const trackStats = reportForTracks?.flatMap(r => r.streams).filter(track => track.kind === 'video');
|
|
68
|
+
if (!trackStats) return;
|
|
69
|
+
const stat = trackStats[0];
|
|
70
|
+
if (stat) {
|
|
71
|
+
const {
|
|
72
|
+
frameWidth = 0,
|
|
73
|
+
frameHeight = 0
|
|
74
|
+
} = stat;
|
|
75
|
+
setTrackDimensions(prev => {
|
|
76
|
+
if (prev.width !== frameWidth || prev.height !== frameHeight) {
|
|
77
|
+
return {
|
|
78
|
+
width: frameWidth,
|
|
79
|
+
height: frameHeight
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
return prev;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
return () => sub.unsubscribe();
|
|
87
|
+
}, [call, sessionId]);
|
|
88
|
+
return trackDimensions;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=useTrackDimensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_videoReactBindings","require","_react","useTrackDimensions","participant","trackType","trackDimensions","setTrackDimensions","useState","width","height","call","useCall","isLocalParticipant","sessionId","videoStream","screenShareStream","useEffect","stream","track","getVideoTracks","getSettings","prev","startReportingStatsFor","stopReportingStatsFor","sub","state","callStatsReport$","subscribe","report","reportForTracks","participants","trackStats","flatMap","r","streams","filter","kind","stat","frameWidth","frameHeight","unsubscribe"],"sourceRoot":"../../../src","sources":["hooks/useTrackDimensions.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/commonjs/version.js
CHANGED
|
@@ -5,6 +5,7 @@ import { CallingState, hasScreenShare, hasVideo, VisibilityState } from '@stream
|
|
|
5
5
|
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
6
6
|
import { ParticipantVideoFallback as DefaultParticipantVideoFallback } from './ParticipantVideoFallback';
|
|
7
7
|
import { useTheme } from '../../../contexts/ThemeContext';
|
|
8
|
+
import { useTrackDimensions } from '../../../hooks/useTrackDimensions';
|
|
8
9
|
const DEFAULT_VIEWPORT_VISIBILITY_STATE = {
|
|
9
10
|
videoTrack: VisibilityState.UNKNOWN,
|
|
10
11
|
screenShareTrack: VisibilityState.UNKNOWN
|
|
@@ -47,6 +48,7 @@ export const VideoRenderer = ({
|
|
|
47
48
|
const {
|
|
48
49
|
direction
|
|
49
50
|
} = useCameraState();
|
|
51
|
+
const videoDimensions = useTrackDimensions(participant, trackType);
|
|
50
52
|
const {
|
|
51
53
|
isLocalParticipant,
|
|
52
54
|
sessionId,
|
|
@@ -195,7 +197,7 @@ export const VideoRenderer = ({
|
|
|
195
197
|
style: [styles.videoStream, videoRenderer.videoStream],
|
|
196
198
|
streamURL: videoStreamToRender.toURL(),
|
|
197
199
|
mirror: mirror,
|
|
198
|
-
objectFit: objectFit ?? (
|
|
200
|
+
objectFit: objectFit ?? (videoDimensions.width > videoDimensions.height ? 'contain' : 'cover'),
|
|
199
201
|
zOrder: videoZOrder
|
|
200
202
|
}) : ParticipantVideoFallback && /*#__PURE__*/React.createElement(ParticipantVideoFallback, {
|
|
201
203
|
participant: participant
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","StyleSheet","View","RTCView","CallingState","hasScreenShare","hasVideo","VisibilityState","useCall","useCallStateHooks","ParticipantVideoFallback","DefaultParticipantVideoFallback","useTheme","DEFAULT_VIEWPORT_VISIBILITY_STATE","videoTrack","UNKNOWN","screenShareTrack","VideoRenderer","trackType","participant","isVisible","objectFit","videoZOrder","theme","videoRenderer","call","useCallCallingState","useCameraState","useIncomingVideoSettings","isParticipantVideoEnabled","callingState","pendingVideoLayoutRef","subscribedVideoLayoutRef","direction","isLocalParticipant","sessionId","viewportVisibilityState","videoStream","screenShareStream","isScreenSharing","isPublishingVideoTrack","hasJoinedCall","JOINED","videoStreamToRender","canShowVideo","mirror","VISIBLE","state","updateParticipant","p","INVISIBLE","current","undefined","updateIsNeeded","dimension","updateParticipantTracks","dynascaleManager","applyTrackSubscriptions","onLayout","event","width","Math","trunc","nativeEvent","layout","height","createElement","style","styles","container","streamURL","toURL","zOrder","create","absoluteFillObject"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/VideoRenderer.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAChD,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SAASC,OAAO,QAAQ,gCAAgC;AAExD,SACEC,YAAY,EACZC,cAAc,EACdC,QAAQ,EAGRC,eAAe,QACV,yBAAyB;AAChC,SAASC,OAAO,EAAEC,iBAAiB,QAAQ,iCAAiC;AAC5E,SAASC,wBAAwB,IAAIC,+BAA+B,QAAQ,4BAA4B;AACxG,SAASC,QAAQ,QAAQ,gCAAgC;
|
|
1
|
+
{"version":3,"names":["React","useEffect","useRef","StyleSheet","View","RTCView","CallingState","hasScreenShare","hasVideo","VisibilityState","useCall","useCallStateHooks","ParticipantVideoFallback","DefaultParticipantVideoFallback","useTheme","useTrackDimensions","DEFAULT_VIEWPORT_VISIBILITY_STATE","videoTrack","UNKNOWN","screenShareTrack","VideoRenderer","trackType","participant","isVisible","objectFit","videoZOrder","theme","videoRenderer","call","useCallCallingState","useCameraState","useIncomingVideoSettings","isParticipantVideoEnabled","callingState","pendingVideoLayoutRef","subscribedVideoLayoutRef","direction","videoDimensions","isLocalParticipant","sessionId","viewportVisibilityState","videoStream","screenShareStream","isScreenSharing","isPublishingVideoTrack","hasJoinedCall","JOINED","videoStreamToRender","canShowVideo","mirror","VISIBLE","state","updateParticipant","p","INVISIBLE","current","undefined","updateIsNeeded","dimension","updateParticipantTracks","dynascaleManager","applyTrackSubscriptions","onLayout","event","width","Math","trunc","nativeEvent","layout","height","createElement","style","styles","container","streamURL","toURL","zOrder","create","absoluteFillObject"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/VideoRenderer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,QAAQ;AACtB,cAAc,iCAAiC;AAC/C,cAAc,uCAAuC;AACrD,cAAc,kBAAkB;AAChC,cAAc,yBAAyB;AACvC,cAAc,sCAAsC;AACpD,cAAc,wBAAwB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"AAAA,cAAc,wBAAwB;AACtC,cAAc,6BAA6B;AAC3C,cAAc,QAAQ;AACtB,cAAc,iCAAiC;AAC/C,cAAc,uCAAuC;AACrD,cAAc,kBAAkB;AAChC,cAAc,yBAAyB;AACvC,cAAc,sCAAsC;AACpD,cAAc,wBAAwB;AACtC,cAAc,sBAAsB","ignoreList":[]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { useCall } from '@stream-io/video-react-bindings';
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* This is a utility hook to get the dimensions of the video track of the participant.
|
|
6
|
+
* Note: the `tracktype` is used only for local participants.
|
|
7
|
+
* `tracktype` should be 'videoTrack' for video track and 'screenShareTrack' for screen share track.
|
|
8
|
+
*/
|
|
9
|
+
export function useTrackDimensions(participant, trackType) {
|
|
10
|
+
const [trackDimensions, setTrackDimensions] = useState({
|
|
11
|
+
width: 0,
|
|
12
|
+
height: 0
|
|
13
|
+
});
|
|
14
|
+
const call = useCall();
|
|
15
|
+
const {
|
|
16
|
+
isLocalParticipant,
|
|
17
|
+
sessionId,
|
|
18
|
+
videoStream,
|
|
19
|
+
screenShareStream
|
|
20
|
+
} = participant;
|
|
21
|
+
|
|
22
|
+
// for local participant we can get from track.getSettings()
|
|
23
|
+
useEffect(() => {
|
|
24
|
+
if (call && isLocalParticipant) {
|
|
25
|
+
const stream = trackType === 'screenShareTrack' ? screenShareStream : videoStream;
|
|
26
|
+
if (!stream) return;
|
|
27
|
+
const [track] = stream?.getVideoTracks();
|
|
28
|
+
if (!track) return;
|
|
29
|
+
const {
|
|
30
|
+
width = 0,
|
|
31
|
+
height = 0
|
|
32
|
+
} = track.getSettings();
|
|
33
|
+
setTrackDimensions(prev => {
|
|
34
|
+
if (prev.width !== width || prev.height !== height) {
|
|
35
|
+
return {
|
|
36
|
+
width,
|
|
37
|
+
height
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
return prev;
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}, [call, isLocalParticipant, screenShareStream, trackType, videoStream]);
|
|
44
|
+
|
|
45
|
+
// start reporting stats for the remote participant
|
|
46
|
+
useEffect(() => {
|
|
47
|
+
if (!call) return;
|
|
48
|
+
if (isLocalParticipant) return;
|
|
49
|
+
call.startReportingStatsFor(sessionId);
|
|
50
|
+
return () => {
|
|
51
|
+
call.stopReportingStatsFor(sessionId);
|
|
52
|
+
};
|
|
53
|
+
}, [call, sessionId, isLocalParticipant]);
|
|
54
|
+
|
|
55
|
+
// for remote participants track.getSettings() is not supported it returns an empty object
|
|
56
|
+
// so we need to rely on call stats to get the dimensions
|
|
57
|
+
useEffect(() => {
|
|
58
|
+
if (!call) return;
|
|
59
|
+
const sub = call.state.callStatsReport$.subscribe(report => {
|
|
60
|
+
if (!report) return;
|
|
61
|
+
const reportForTracks = report.participants[sessionId];
|
|
62
|
+
const trackStats = reportForTracks?.flatMap(r => r.streams).filter(track => track.kind === 'video');
|
|
63
|
+
if (!trackStats) return;
|
|
64
|
+
const stat = trackStats[0];
|
|
65
|
+
if (stat) {
|
|
66
|
+
const {
|
|
67
|
+
frameWidth = 0,
|
|
68
|
+
frameHeight = 0
|
|
69
|
+
} = stat;
|
|
70
|
+
setTrackDimensions(prev => {
|
|
71
|
+
if (prev.width !== frameWidth || prev.height !== frameHeight) {
|
|
72
|
+
return {
|
|
73
|
+
width: frameWidth,
|
|
74
|
+
height: frameHeight
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
return prev;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
return () => sub.unsubscribe();
|
|
82
|
+
}, [call, sessionId]);
|
|
83
|
+
return trackDimensions;
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=useTrackDimensions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCall","useState","useEffect","useTrackDimensions","participant","trackType","trackDimensions","setTrackDimensions","width","height","call","isLocalParticipant","sessionId","videoStream","screenShareStream","stream","track","getVideoTracks","getSettings","prev","startReportingStatsFor","stopReportingStatsFor","sub","state","callStatsReport$","subscribe","report","reportForTracks","participants","trackStats","flatMap","r","streams","filter","kind","stat","frameWidth","frameHeight","unsubscribe"],"sourceRoot":"../../../src","sources":["hooks/useTrackDimensions.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/module/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '1.1.
|
|
1
|
+
export const version = '1.1.5';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
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,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;
|
|
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,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAsBzD;;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,6FAOvB,kBAAkB,sBAoOpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,QAAQ,CAAC;AACvB,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,QAAQ,CAAC;AACvB,cAAc,iCAAiC,CAAC;AAChD,cAAc,uCAAuC,CAAC;AACtD,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sCAAsC,CAAC;AACrD,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { StreamVideoParticipant, VideoTrackType } from '@stream-io/video-client';
|
|
2
|
+
/**
|
|
3
|
+
* This is a utility hook to get the dimensions of the video track of the participant.
|
|
4
|
+
* Note: the `tracktype` is used only for local participants.
|
|
5
|
+
* `tracktype` should be 'videoTrack' for video track and 'screenShareTrack' for screen share track.
|
|
6
|
+
*/
|
|
7
|
+
export declare function useTrackDimensions(participant: StreamVideoParticipant, trackType: VideoTrackType): {
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=useTrackDimensions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTrackDimensions.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTrackDimensions.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAIjC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,sBAAsB,EACnC,SAAS,EAAE,cAAc;;;EAgE1B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "1.1.
|
|
1
|
+
export declare const version = "1.1.5";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stream-io/video-react-native-sdk",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"packageManager": "yarn@3.2.4",
|
|
5
5
|
"main": "dist/commonjs/index.js",
|
|
6
6
|
"module": "dist/module/index.js",
|
|
@@ -46,8 +46,8 @@
|
|
|
46
46
|
"!**/.*"
|
|
47
47
|
],
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@stream-io/video-client": "1.8.
|
|
50
|
-
"@stream-io/video-react-bindings": "1.1.
|
|
49
|
+
"@stream-io/video-client": "1.8.3",
|
|
50
|
+
"@stream-io/video-react-bindings": "1.1.3",
|
|
51
51
|
"intl-pluralrules": "2.0.1",
|
|
52
52
|
"lodash.merge": "^4.6.2",
|
|
53
53
|
"react-native-url-polyfill": "1.3.0",
|
|
@@ -14,6 +14,7 @@ import {
|
|
|
14
14
|
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
15
15
|
import { ParticipantVideoFallback as DefaultParticipantVideoFallback } from './ParticipantVideoFallback';
|
|
16
16
|
import { useTheme } from '../../../contexts/ThemeContext';
|
|
17
|
+
import { useTrackDimensions } from '../../../hooks/useTrackDimensions';
|
|
17
18
|
|
|
18
19
|
const DEFAULT_VIEWPORT_VISIBILITY_STATE: Record<
|
|
19
20
|
VideoTrackType,
|
|
@@ -60,6 +61,7 @@ export const VideoRenderer = ({
|
|
|
60
61
|
const pendingVideoLayoutRef = useRef<SfuModels.VideoDimension>();
|
|
61
62
|
const subscribedVideoLayoutRef = useRef<SfuModels.VideoDimension>();
|
|
62
63
|
const { direction } = useCameraState();
|
|
64
|
+
const videoDimensions = useTrackDimensions(participant, trackType);
|
|
63
65
|
const {
|
|
64
66
|
isLocalParticipant,
|
|
65
67
|
sessionId,
|
|
@@ -260,7 +262,12 @@ export const VideoRenderer = ({
|
|
|
260
262
|
style={[styles.videoStream, videoRenderer.videoStream]}
|
|
261
263
|
streamURL={videoStreamToRender.toURL()}
|
|
262
264
|
mirror={mirror}
|
|
263
|
-
objectFit={
|
|
265
|
+
objectFit={
|
|
266
|
+
objectFit ??
|
|
267
|
+
(videoDimensions.width > videoDimensions.height
|
|
268
|
+
? 'contain'
|
|
269
|
+
: 'cover')
|
|
270
|
+
}
|
|
264
271
|
zOrder={videoZOrder}
|
|
265
272
|
/>
|
|
266
273
|
) : (
|
package/src/hooks/index.ts
CHANGED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import {
|
|
2
|
+
StreamVideoParticipant,
|
|
3
|
+
VideoTrackType,
|
|
4
|
+
} from '@stream-io/video-client';
|
|
5
|
+
import { useCall } from '@stream-io/video-react-bindings';
|
|
6
|
+
import { useState, useEffect } from 'react';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* This is a utility hook to get the dimensions of the video track of the participant.
|
|
10
|
+
* Note: the `tracktype` is used only for local participants.
|
|
11
|
+
* `tracktype` should be 'videoTrack' for video track and 'screenShareTrack' for screen share track.
|
|
12
|
+
*/
|
|
13
|
+
export function useTrackDimensions(
|
|
14
|
+
participant: StreamVideoParticipant,
|
|
15
|
+
trackType: VideoTrackType
|
|
16
|
+
) {
|
|
17
|
+
const [trackDimensions, setTrackDimensions] = useState({
|
|
18
|
+
width: 0,
|
|
19
|
+
height: 0,
|
|
20
|
+
});
|
|
21
|
+
const call = useCall();
|
|
22
|
+
const { isLocalParticipant, sessionId, videoStream, screenShareStream } =
|
|
23
|
+
participant;
|
|
24
|
+
|
|
25
|
+
// for local participant we can get from track.getSettings()
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
if (call && isLocalParticipant) {
|
|
28
|
+
const stream =
|
|
29
|
+
trackType === 'screenShareTrack' ? screenShareStream : videoStream;
|
|
30
|
+
if (!stream) return;
|
|
31
|
+
const [track] = stream?.getVideoTracks();
|
|
32
|
+
if (!track) return;
|
|
33
|
+
const { width = 0, height = 0 } = track.getSettings();
|
|
34
|
+
setTrackDimensions((prev) => {
|
|
35
|
+
if (prev.width !== width || prev.height !== height) {
|
|
36
|
+
return { width, height };
|
|
37
|
+
}
|
|
38
|
+
return prev;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
}, [call, isLocalParticipant, screenShareStream, trackType, videoStream]);
|
|
42
|
+
|
|
43
|
+
// start reporting stats for the remote participant
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (!call) return;
|
|
46
|
+
if (isLocalParticipant) return;
|
|
47
|
+
call.startReportingStatsFor(sessionId);
|
|
48
|
+
return () => {
|
|
49
|
+
call.stopReportingStatsFor(sessionId);
|
|
50
|
+
};
|
|
51
|
+
}, [call, sessionId, isLocalParticipant]);
|
|
52
|
+
|
|
53
|
+
// for remote participants track.getSettings() is not supported it returns an empty object
|
|
54
|
+
// so we need to rely on call stats to get the dimensions
|
|
55
|
+
useEffect(() => {
|
|
56
|
+
if (!call) return;
|
|
57
|
+
const sub = call.state.callStatsReport$.subscribe((report) => {
|
|
58
|
+
if (!report) return;
|
|
59
|
+
const reportForTracks = report.participants[sessionId];
|
|
60
|
+
const trackStats = reportForTracks
|
|
61
|
+
?.flatMap((r) => r.streams)
|
|
62
|
+
.filter((track) => track.kind === 'video');
|
|
63
|
+
if (!trackStats) return;
|
|
64
|
+
const stat = trackStats[0];
|
|
65
|
+
if (stat) {
|
|
66
|
+
const { frameWidth = 0, frameHeight = 0 } = stat;
|
|
67
|
+
setTrackDimensions((prev) => {
|
|
68
|
+
if (prev.width !== frameWidth || prev.height !== frameHeight) {
|
|
69
|
+
return { width: frameWidth, height: frameHeight };
|
|
70
|
+
}
|
|
71
|
+
return prev;
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
return () => sub.unsubscribe();
|
|
76
|
+
}, [call, sessionId]);
|
|
77
|
+
|
|
78
|
+
return trackDimensions;
|
|
79
|
+
}
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '1.1.
|
|
1
|
+
export const version = '1.1.5';
|