@stream-io/video-react-sdk 1.35.1 → 1.36.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/embedded.cjs.js +3 -27
- package/dist/embedded.cjs.js.map +1 -1
- package/dist/embedded.es.js +4 -28
- package/dist/embedded.es.js.map +1 -1
- package/dist/index.cjs.js +4 -28
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +5 -29
- package/dist/index.es.js.map +1 -1
- package/dist/src/components/DeviceSettings/DeviceSelectorVideo.d.ts +6 -0
- package/package.json +3 -3
- package/src/components/DeviceSettings/DeviceSelectorVideo.tsx +6 -0
- package/src/core/components/CallLayout/PaginatedGridLayout.tsx +1 -0
- package/src/core/components/ParticipantView/DefaultParticipantViewUI.tsx +7 -35
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [1.36.0](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-1.35.2...@stream-io/video-react-sdk-1.36.0) (2026-04-28)
|
|
6
|
+
|
|
7
|
+
### Dependency Updates
|
|
8
|
+
|
|
9
|
+
- `@stream-io/video-client` updated to version `1.48.0`
|
|
10
|
+
- `@stream-io/video-react-bindings` updated to version `1.15.0`
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- audio connecting hook in bindings and RN UI ([#2214](https://github.com/GetStream/stream-video-js/issues/2214)) ([44c38fa](https://github.com/GetStream/stream-video-js/commit/44c38faaccb5327f6cd5cd6e70781bad93deafaf))
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
- **egress-composite:** adjust PaginatedGrid sizing ([#1966](https://github.com/GetStream/stream-video-js/issues/1966)) ([9c7009f](https://github.com/GetStream/stream-video-js/commit/9c7009f26d63ef4fcbc8441746e5cd3c2b1935b6))
|
|
19
|
+
|
|
20
|
+
## [1.35.2](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-1.35.1...@stream-io/video-react-sdk-1.35.2) (2026-04-15)
|
|
21
|
+
|
|
22
|
+
### Dependency Updates
|
|
23
|
+
|
|
24
|
+
- `@stream-io/video-client` updated to version `1.47.0`
|
|
25
|
+
- `@stream-io/video-react-bindings` updated to version `1.14.2`
|
|
26
|
+
|
|
27
|
+
### Bug Fixes
|
|
28
|
+
|
|
29
|
+
- **pronto:** use list visualType for device selection mobile devices ([#2202](https://github.com/GetStream/stream-video-js/issues/2202)) ([f6b6cd2](https://github.com/GetStream/stream-video-js/commit/f6b6cd2eeef3e776167cae515cc7beb2d566ccde))
|
|
30
|
+
|
|
5
31
|
## [1.35.1](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-1.35.0...@stream-io/video-react-sdk-1.35.1) (2026-04-09)
|
|
6
32
|
|
|
7
33
|
### Dependency Updates
|
package/dist/embedded.cjs.js
CHANGED
|
@@ -1207,7 +1207,7 @@ const SpeakerTest = (props) => {
|
|
|
1207
1207
|
const audioElementRef = react.useRef(null);
|
|
1208
1208
|
const [isPlaying, setIsPlaying] = react.useState(false);
|
|
1209
1209
|
const { t } = videoReactBindings.useI18n();
|
|
1210
|
-
const { audioUrl = `https://unpkg.com/${"@stream-io/video-react-sdk"}@${"1.
|
|
1210
|
+
const { audioUrl = `https://unpkg.com/${"@stream-io/video-react-sdk"}@${"1.36.0"}/assets/piano.mp3`, } = props;
|
|
1211
1211
|
// Update audio output device when selection changes
|
|
1212
1212
|
react.useEffect(() => {
|
|
1213
1213
|
const audio = audioElementRef.current;
|
|
@@ -1884,8 +1884,7 @@ const ParticipantDetails = ({ indicatorsVisible = true, }) => {
|
|
|
1884
1884
|
const hasVideoTrack = videoClient.hasVideo(participant);
|
|
1885
1885
|
const canUnpin = !!pin && pin.isLocalPin;
|
|
1886
1886
|
const isTrackPaused = trackType !== 'none' ? videoClient.hasPausedTrack(participant, trackType) : false;
|
|
1887
|
-
const
|
|
1888
|
-
const isAudioConnecting = hasAudioTrack && !isAudioTrackUnmuted;
|
|
1887
|
+
const isAudioConnecting = videoReactBindings.useIsAudioConnecting(participant);
|
|
1889
1888
|
return (jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [jsxRuntime.jsx("div", { className: "str-video__participant-details", children: jsxRuntime.jsxs("div", { className: "str-video__participant-details__name", children: [name || userId, indicatorsVisible && isAudioConnecting && (jsxRuntime.jsx(LoadingIndicator, { className: "str-video__participant-details__name--audio-connecting", tooltip: t('Audio is connecting...') })), indicatorsVisible && !hasAudioTrack && (jsxRuntime.jsx("span", { className: "str-video__participant-details__name--audio-muted" })), indicatorsVisible && !hasVideoTrack && (jsxRuntime.jsx("span", { className: "str-video__participant-details__name--video-muted" })), indicatorsVisible && isTrackPaused && (jsxRuntime.jsx("span", { title: t('Video paused due to insufficient bandwidth'), className: "str-video__participant-details__name--track-paused" })), indicatorsVisible && pin && (jsxRuntime.jsx("span", { title: canUnpin ? t('Unpin') : t('Pinned'), onClick: canUnpin ? () => call?.unpin(sessionId) : undefined, className: "str-video__participant-details__name--pinned" })), indicatorsVisible && jsxRuntime.jsx(SpeechIndicator, {})] }) }), indicatorsVisible && (jsxRuntime.jsx(Notification, { isVisible: isLocalParticipant &&
|
|
1890
1889
|
connectionQuality === videoClient.SfuModels.ConnectionQuality.POOR, message: t('Poor connection quality'), children: connectionQualityAsString && (jsxRuntime.jsx("span", { className: clsx('str-video__participant-details__connection-quality', `str-video__participant-details__connection-quality--${connectionQualityAsString}`), title: connectionQualityAsString })) }))] }));
|
|
1891
1890
|
};
|
|
@@ -1894,29 +1893,6 @@ const SpeechIndicator = () => {
|
|
|
1894
1893
|
const { isSpeaking, isDominantSpeaker } = participant;
|
|
1895
1894
|
return (jsxRuntime.jsxs("span", { className: clsx('str-video__speech-indicator', isSpeaking && 'str-video__speech-indicator--speaking', isDominantSpeaker && 'str-video__speech-indicator--dominant'), children: [jsxRuntime.jsx("span", { className: "str-video__speech-indicator__bar" }), jsxRuntime.jsx("span", { className: "str-video__speech-indicator__bar" }), jsxRuntime.jsx("span", { className: "str-video__speech-indicator__bar" })] }));
|
|
1896
1895
|
};
|
|
1897
|
-
const useIsTrackUnmuted = (participant) => {
|
|
1898
|
-
const audioStream = participant.audioStream;
|
|
1899
|
-
const [unmuted, setUnmuted] = react.useState(() => {
|
|
1900
|
-
const track = audioStream?.getAudioTracks()[0];
|
|
1901
|
-
return !!track && !track.muted;
|
|
1902
|
-
});
|
|
1903
|
-
react.useEffect(() => {
|
|
1904
|
-
const track = audioStream?.getAudioTracks()[0];
|
|
1905
|
-
if (!track)
|
|
1906
|
-
return;
|
|
1907
|
-
setUnmuted(!track.muted);
|
|
1908
|
-
const handler = () => {
|
|
1909
|
-
setUnmuted(!track.muted);
|
|
1910
|
-
};
|
|
1911
|
-
track.addEventListener('mute', handler);
|
|
1912
|
-
track.addEventListener('unmute', handler);
|
|
1913
|
-
return () => {
|
|
1914
|
-
track.removeEventListener('mute', handler);
|
|
1915
|
-
track.removeEventListener('unmute', handler);
|
|
1916
|
-
};
|
|
1917
|
-
}, [audioStream]);
|
|
1918
|
-
return unmuted;
|
|
1919
|
-
};
|
|
1920
1896
|
|
|
1921
1897
|
const ParticipantView = react.forwardRef(function ParticipantView({ participant, trackType = 'videoTrack', mirror, muteAudio, refs: { setVideoElement, setVideoPlaceholderElement } = {}, className, VideoPlaceholder, PictureInPicturePlaceholder, ParticipantViewUI = DefaultParticipantViewUI, }, ref) {
|
|
1922
1898
|
const { isLocalParticipant, isSpeaking, isDominantSpeaker, sessionId } = participant;
|
|
@@ -2422,7 +2398,7 @@ const formatDuration = (durationInMs) => {
|
|
|
2422
2398
|
|
|
2423
2399
|
const GROUP_SIZE = 16;
|
|
2424
2400
|
const PaginatedGridLayoutGroup = ({ group, mirror, VideoPlaceholder, PictureInPicturePlaceholder, ParticipantViewUI, }) => {
|
|
2425
|
-
return (jsxRuntime.jsx("div", { className: clsx('str-video__paginated-grid-layout__group', {
|
|
2401
|
+
return (jsxRuntime.jsx("div", { "data-group-size": group.length, className: clsx('str-video__paginated-grid-layout__group', {
|
|
2426
2402
|
'str-video__paginated-grid-layout--one': group.length === 1,
|
|
2427
2403
|
'str-video__paginated-grid-layout--two-four': group.length >= 2 && group.length <= 4,
|
|
2428
2404
|
'str-video__paginated-grid-layout--five-nine': group.length >= 5 && group.length <= 9,
|