@stream-io/video-react-sdk 0.3.36 → 0.3.38
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 +17 -0
- package/README.md +2 -2
- package/dist/src/components/CallParticipantsList/CallParticipantListingItem.js +16 -21
- package/dist/src/components/CallParticipantsList/CallParticipantListingItem.js.map +1 -1
- package/dist/src/core/components/Audio/Audio.d.ts +10 -2
- package/dist/src/core/components/Audio/Audio.js +4 -4
- package/dist/src/core/components/Audio/Audio.js.map +1 -1
- package/dist/src/core/components/Audio/ParticipantsAudio.js +13 -3
- package/dist/src/core/components/Audio/ParticipantsAudio.js.map +1 -1
- package/dist/src/core/components/ParticipantView/ParticipantView.js +3 -2
- package/dist/src/core/components/ParticipantView/ParticipantView.js.map +1 -1
- package/dist/src/translations/en.json +1 -0
- package/dist/src/translations/index.d.ts +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/src/components/CallParticipantsList/CallParticipantListingItem.tsx +25 -20
- package/src/core/components/Audio/Audio.tsx +21 -6
- package/src/core/components/Audio/ParticipantsAudio.tsx +25 -7
- package/src/core/components/ParticipantView/ParticipantView.tsx +15 -2
- package/src/translations/en.json +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
### [0.3.38](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-0.3.37...@stream-io/video-react-sdk-0.3.38) (2023-10-06)
|
|
6
|
+
|
|
7
|
+
### Dependency Updates
|
|
8
|
+
|
|
9
|
+
* `@stream-io/video-client` updated to version `0.3.30`
|
|
10
|
+
* `@stream-io/video-react-bindings` updated to version `0.2.31`
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* ScreenShare Audio support ([#1118](https://github.com/GetStream/stream-video-js/issues/1118)) ([5b63e1c](https://github.com/GetStream/stream-video-js/commit/5b63e1c5f52c76e3761e6907bd3786c19f0e5c6d))
|
|
15
|
+
|
|
16
|
+
### [0.3.37](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-0.3.36...@stream-io/video-react-sdk-0.3.37) (2023-10-05)
|
|
17
|
+
|
|
18
|
+
### Dependency Updates
|
|
19
|
+
|
|
20
|
+
* `@stream-io/video-client` updated to version `0.3.29`
|
|
21
|
+
* `@stream-io/video-react-bindings` updated to version `0.2.30`
|
|
5
22
|
### [0.3.36](https://github.com/GetStream/stream-video-js/compare/@stream-io/video-react-sdk-0.3.35...@stream-io/video-react-sdk-0.3.36) (2023-10-03)
|
|
6
23
|
|
|
7
24
|
|
package/README.md
CHANGED
|
@@ -58,8 +58,8 @@ Here are some of the features we support:
|
|
|
58
58
|
- [x] Enhanced device management API
|
|
59
59
|
- [x] Composite layout for streaming and recording
|
|
60
60
|
- [x] Livestream Player
|
|
61
|
-
- [
|
|
62
|
-
- [
|
|
61
|
+
- [x] Screenshare Audio
|
|
62
|
+
- [x] Screen-sharing bitrate and FPS control
|
|
63
63
|
- [ ] Fast-reconnects
|
|
64
64
|
- [ ] New Device Management API
|
|
65
65
|
- [x] SFU retries
|
|
@@ -39,46 +39,40 @@ const ToggleButton = forwardRef((props, ref) => {
|
|
|
39
39
|
export const ParticipantActionsContextMenu = ({ participant, participantViewElement, videoElement, }) => {
|
|
40
40
|
const [fullscreenModeOn, setFullscreenModeOn] = useState(!!document.fullscreenElement);
|
|
41
41
|
const [pictureInPictureElement, setPictureInPictureElement] = useState(document.pictureInPictureElement);
|
|
42
|
-
const
|
|
42
|
+
const call = useCall();
|
|
43
43
|
const { t } = useI18n();
|
|
44
44
|
const { pin, publishedTracks, sessionId, userId } = participant;
|
|
45
45
|
const hasAudio = publishedTracks.includes(SfuModels.TrackType.AUDIO);
|
|
46
46
|
const hasVideo = publishedTracks.includes(SfuModels.TrackType.VIDEO);
|
|
47
47
|
const hasScreenShare = publishedTracks.includes(SfuModels.TrackType.SCREEN_SHARE);
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
const muteVideo = () => {
|
|
55
|
-
activeCall === null || activeCall === void 0 ? void 0 : activeCall.muteUser(userId, 'video');
|
|
56
|
-
};
|
|
57
|
-
const muteScreenShare = () => {
|
|
58
|
-
activeCall === null || activeCall === void 0 ? void 0 : activeCall.muteUser(userId, 'screenshare');
|
|
59
|
-
};
|
|
48
|
+
const hasScreenShareAudio = publishedTracks.includes(SfuModels.TrackType.SCREEN_SHARE_AUDIO);
|
|
49
|
+
const blockUser = () => call === null || call === void 0 ? void 0 : call.blockUser(userId);
|
|
50
|
+
const muteAudio = () => call === null || call === void 0 ? void 0 : call.muteUser(userId, 'audio');
|
|
51
|
+
const muteVideo = () => call === null || call === void 0 ? void 0 : call.muteUser(userId, 'video');
|
|
52
|
+
const muteScreenShare = () => call === null || call === void 0 ? void 0 : call.muteUser(userId, 'screenshare');
|
|
53
|
+
const muteScreenShareAudio = () => call === null || call === void 0 ? void 0 : call.muteUser(userId, 'screenshare_audio');
|
|
60
54
|
const grantPermission = (permission) => () => {
|
|
61
|
-
|
|
55
|
+
call === null || call === void 0 ? void 0 : call.updateUserPermissions({
|
|
62
56
|
user_id: userId,
|
|
63
57
|
grant_permissions: [permission],
|
|
64
58
|
});
|
|
65
59
|
};
|
|
66
60
|
const revokePermission = (permission) => () => {
|
|
67
|
-
|
|
61
|
+
call === null || call === void 0 ? void 0 : call.updateUserPermissions({
|
|
68
62
|
user_id: userId,
|
|
69
63
|
revoke_permissions: [permission],
|
|
70
64
|
});
|
|
71
65
|
};
|
|
72
66
|
const toggleParticipantPinnedAt = () => {
|
|
73
67
|
if (pin) {
|
|
74
|
-
|
|
68
|
+
call === null || call === void 0 ? void 0 : call.unpin(sessionId);
|
|
75
69
|
}
|
|
76
70
|
else {
|
|
77
|
-
|
|
71
|
+
call === null || call === void 0 ? void 0 : call.pin(sessionId);
|
|
78
72
|
}
|
|
79
73
|
};
|
|
80
74
|
const pinForEveryone = () => {
|
|
81
|
-
|
|
75
|
+
call === null || call === void 0 ? void 0 : call.pinForEveryone({
|
|
82
76
|
user_id: userId,
|
|
83
77
|
session_id: sessionId,
|
|
84
78
|
}).catch((err) => {
|
|
@@ -86,7 +80,7 @@ export const ParticipantActionsContextMenu = ({ participant, participantViewElem
|
|
|
86
80
|
});
|
|
87
81
|
};
|
|
88
82
|
const unpinForEveryone = () => {
|
|
89
|
-
|
|
83
|
+
call === null || call === void 0 ? void 0 : call.unpinForEveryone({
|
|
90
84
|
user_id: userId,
|
|
91
85
|
session_id: sessionId,
|
|
92
86
|
}).catch((err) => {
|
|
@@ -116,13 +110,14 @@ export const ParticipantActionsContextMenu = ({ participant, participantViewElem
|
|
|
116
110
|
};
|
|
117
111
|
}, [videoElement]);
|
|
118
112
|
const togglePictureInPicture = () => {
|
|
119
|
-
if (videoElement && pictureInPictureElement !== videoElement)
|
|
113
|
+
if (videoElement && pictureInPictureElement !== videoElement) {
|
|
120
114
|
return videoElement
|
|
121
115
|
.requestPictureInPicture()
|
|
122
116
|
.catch(console.error);
|
|
117
|
+
}
|
|
123
118
|
document.exitPictureInPicture().catch(console.error);
|
|
124
119
|
};
|
|
125
|
-
return (_jsxs(GenericMenu, { children: [_jsxs(GenericMenuButtonItem, Object.assign({ onClick: toggleParticipantPinnedAt, disabled: pin && !pin.isLocalPin }, { children: [_jsx(Icon, { icon: "pin" }), pin ? t('Unpin') : t('Pin')] })), _jsxs(Restricted, Object.assign({ requiredGrants: [OwnCapability.PIN_FOR_EVERYONE] }, { children: [_jsxs(GenericMenuButtonItem, Object.assign({ onClick: pinForEveryone, disabled: pin && !pin.isLocalPin }, { children: [_jsx(Icon, { icon: "pin" }), t('Pin for everyone')] })), _jsxs(GenericMenuButtonItem, Object.assign({ onClick: unpinForEveryone, disabled: !pin || pin.isLocalPin }, { children: [_jsx(Icon, { icon: "pin" }), t('Unpin for everyone')] }))] })), _jsx(Restricted, Object.assign({ requiredGrants: [OwnCapability.BLOCK_USERS] }, { children: _jsxs(GenericMenuButtonItem, Object.assign({ onClick: blockUser }, { children: [_jsx(Icon, { icon: "not-allowed" }), t('Block')] })) })), _jsxs(Restricted, Object.assign({ requiredGrants: [OwnCapability.MUTE_USERS] }, { children: [_jsxs(GenericMenuButtonItem, Object.assign({ disabled: !hasVideo, onClick: muteVideo }, { children: [_jsx(Icon, { icon: "camera-off-outline" }), t('Turn off video')] })), _jsxs(GenericMenuButtonItem, Object.assign({ disabled: !hasScreenShare, onClick: muteScreenShare }, { children: [_jsx(Icon, { icon: "screen-share-off" }), t('Turn off screen share')] })), _jsxs(GenericMenuButtonItem, Object.assign({ disabled: !hasAudio, onClick: muteAudio }, { children: [_jsx(Icon, { icon: "no-audio" }), t('Mute audio')] }))] })), participantViewElement && (_jsx(GenericMenuButtonItem, Object.assign({ onClick: toggleFullscreenMode }, { children: t('{{ direction }} fullscreen', {
|
|
120
|
+
return (_jsxs(GenericMenu, { children: [_jsxs(GenericMenuButtonItem, Object.assign({ onClick: toggleParticipantPinnedAt, disabled: pin && !pin.isLocalPin }, { children: [_jsx(Icon, { icon: "pin" }), pin ? t('Unpin') : t('Pin')] })), _jsxs(Restricted, Object.assign({ requiredGrants: [OwnCapability.PIN_FOR_EVERYONE] }, { children: [_jsxs(GenericMenuButtonItem, Object.assign({ onClick: pinForEveryone, disabled: pin && !pin.isLocalPin }, { children: [_jsx(Icon, { icon: "pin" }), t('Pin for everyone')] })), _jsxs(GenericMenuButtonItem, Object.assign({ onClick: unpinForEveryone, disabled: !pin || pin.isLocalPin }, { children: [_jsx(Icon, { icon: "pin" }), t('Unpin for everyone')] }))] })), _jsx(Restricted, Object.assign({ requiredGrants: [OwnCapability.BLOCK_USERS] }, { children: _jsxs(GenericMenuButtonItem, Object.assign({ onClick: blockUser }, { children: [_jsx(Icon, { icon: "not-allowed" }), t('Block')] })) })), _jsxs(Restricted, Object.assign({ requiredGrants: [OwnCapability.MUTE_USERS] }, { children: [_jsxs(GenericMenuButtonItem, Object.assign({ disabled: !hasVideo, onClick: muteVideo }, { children: [_jsx(Icon, { icon: "camera-off-outline" }), t('Turn off video')] })), _jsxs(GenericMenuButtonItem, Object.assign({ disabled: !hasScreenShare, onClick: muteScreenShare }, { children: [_jsx(Icon, { icon: "screen-share-off" }), t('Turn off screen share')] })), _jsxs(GenericMenuButtonItem, Object.assign({ disabled: !hasAudio, onClick: muteAudio }, { children: [_jsx(Icon, { icon: "no-audio" }), t('Mute audio')] })), _jsxs(GenericMenuButtonItem, Object.assign({ disabled: !hasScreenShareAudio, onClick: muteScreenShareAudio }, { children: [_jsx(Icon, { icon: "no-audio" }), t('Mute screen share audio')] }))] })), participantViewElement && (_jsx(GenericMenuButtonItem, Object.assign({ onClick: toggleFullscreenMode }, { children: t('{{ direction }} fullscreen', {
|
|
126
121
|
direction: fullscreenModeOn ? t('Leave') : t('Enter'),
|
|
127
122
|
}) }))), videoElement && document.pictureInPictureEnabled && (_jsx(GenericMenuButtonItem, Object.assign({ onClick: togglePictureInPicture }, { children: t('{{ direction }} picture-in-picture', {
|
|
128
123
|
direction: pictureInPictureElement === videoElement
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CallParticipantListingItem.js","sourceRoot":"","sources":["../../../../src/components/CallParticipantsList/CallParticipantListingItem.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CallParticipantListingItem.js","sourceRoot":"","sources":["../../../../src/components/CallParticipantsList/CallParticipantListingItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { ComponentPropsWithoutRef } from 'react';
|
|
2
|
-
import { StreamVideoParticipant } from '@stream-io/video-client';
|
|
2
|
+
import { AudioTrackType, StreamVideoParticipant } from '@stream-io/video-client';
|
|
3
3
|
export type AudioProps = ComponentPropsWithoutRef<'audio'> & {
|
|
4
|
+
/**
|
|
5
|
+
* The participant whose audio stream we want to play.
|
|
6
|
+
*/
|
|
4
7
|
participant: StreamVideoParticipant;
|
|
8
|
+
/**
|
|
9
|
+
* The type of audio stream to play for the given participant.
|
|
10
|
+
* The default value is `audioTrack`.
|
|
11
|
+
*/
|
|
12
|
+
trackType?: AudioTrackType;
|
|
5
13
|
};
|
|
6
|
-
export declare const Audio: ({ participant, ...rest }: AudioProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export declare const Audio: ({ participant, trackType, ...rest }: AudioProps) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -13,18 +13,18 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
13
13
|
import { useEffect, useState } from 'react';
|
|
14
14
|
import { useCall } from '@stream-io/video-react-bindings';
|
|
15
15
|
export const Audio = (_a) => {
|
|
16
|
-
var { participant } = _a, rest = __rest(_a, ["participant"]);
|
|
16
|
+
var { participant, trackType = 'audioTrack' } = _a, rest = __rest(_a, ["participant", "trackType"]);
|
|
17
17
|
const call = useCall();
|
|
18
18
|
const [audioElement, setAudioElement] = useState(null);
|
|
19
19
|
const { userId, sessionId } = participant;
|
|
20
20
|
useEffect(() => {
|
|
21
21
|
if (!call || !audioElement)
|
|
22
22
|
return;
|
|
23
|
-
const cleanup = call.bindAudioElement(audioElement, sessionId);
|
|
23
|
+
const cleanup = call.bindAudioElement(audioElement, sessionId, trackType);
|
|
24
24
|
return () => {
|
|
25
25
|
cleanup === null || cleanup === void 0 ? void 0 : cleanup();
|
|
26
26
|
};
|
|
27
|
-
}, [call, sessionId, audioElement]);
|
|
28
|
-
return (_jsx("audio", Object.assign({ autoPlay: true }, rest, { ref: setAudioElement, "data-user-id": userId, "data-session-id": sessionId })));
|
|
27
|
+
}, [call, sessionId, audioElement, trackType]);
|
|
28
|
+
return (_jsx("audio", Object.assign({ autoPlay: true }, rest, { ref: setAudioElement, "data-user-id": userId, "data-session-id": sessionId, "data-track-type": trackType })));
|
|
29
29
|
};
|
|
30
30
|
//# sourceMappingURL=Audio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Audio.js","sourceRoot":"","sources":["../../../../../src/core/components/Audio/Audio.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAA4B,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Audio.js","sourceRoot":"","sources":["../../../../../src/core/components/Audio/Audio.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAA4B,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAKtE,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAe1D,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,EAIT,EAAE,EAAE;QAJK,EACpB,WAAW,EACX,SAAS,GAAG,YAAY,OAEb,EADR,IAAI,cAHa,4BAIrB,CADQ;IAEP,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAC9C,IAAI,CACL,CAAC;IACF,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,WAAW,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QACnC,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAC1E,OAAO,GAAG,EAAE;YACV,OAAO,aAAP,OAAO,uBAAP,OAAO,EAAI,CAAC;QACd,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;IAE/C,OAAO,CACL,8BACE,QAAQ,UACJ,IAAI,IACR,GAAG,EAAE,eAAe,kBACN,MAAM,qBACH,SAAS,qBACT,SAAS,IAC1B,CACH,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -4,8 +4,18 @@ import { SfuModels } from '@stream-io/video-client';
|
|
|
4
4
|
import { Audio } from './Audio';
|
|
5
5
|
export const ParticipantsAudio = (props) => {
|
|
6
6
|
const { participants, audioProps } = props;
|
|
7
|
-
return (_jsx(_Fragment, { children: participants.map((participant) =>
|
|
8
|
-
participant.
|
|
9
|
-
|
|
7
|
+
return (_jsx(_Fragment, { children: participants.map((participant) => {
|
|
8
|
+
if (participant.isLocalParticipant)
|
|
9
|
+
return null;
|
|
10
|
+
const hasAudio = participant.publishedTracks.includes(SfuModels.TrackType.AUDIO);
|
|
11
|
+
const hasScreenShareAudio = participant.publishedTracks.includes(SfuModels.TrackType.SCREEN_SHARE_AUDIO);
|
|
12
|
+
if (hasAudio && participant.audioStream) {
|
|
13
|
+
return (_createElement(Audio, Object.assign({}, audioProps, { trackType: "audioTrack", participant: participant, key: participant.sessionId })));
|
|
14
|
+
}
|
|
15
|
+
if (hasScreenShareAudio && participant.screenShareAudioStream) {
|
|
16
|
+
return (_createElement(Audio, Object.assign({}, audioProps, { trackType: "screenShareAudioTrack", participant: participant, key: participant.sessionId })));
|
|
17
|
+
}
|
|
18
|
+
return null;
|
|
19
|
+
}) }));
|
|
10
20
|
};
|
|
11
21
|
//# sourceMappingURL=ParticipantsAudio.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticipantsAudio.js","sourceRoot":"","sources":["../../../../../src/core/components/Audio/ParticipantsAudio.tsx"],"names":[],"mappings":";;AACA,OAAO,EAAE,SAAS,EAA0B,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAchC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAE,EAAE;IACjE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC3C,OAAO,CACL,4BACG,YAAY,CAAC,GAAG,
|
|
1
|
+
{"version":3,"file":"ParticipantsAudio.js","sourceRoot":"","sources":["../../../../../src/core/components/Audio/ParticipantsAudio.tsx"],"names":[],"mappings":";;AACA,OAAO,EAAE,SAAS,EAA0B,MAAM,yBAAyB,CAAC;AAC5E,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAchC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAA6B,EAAE,EAAE;IACjE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC3C,OAAO,CACL,4BACG,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;YAChC,IAAI,WAAW,CAAC,kBAAkB;gBAAE,OAAO,IAAI,CAAC;YAChD,MAAM,QAAQ,GAAG,WAAW,CAAC,eAAe,CAAC,QAAQ,CACnD,SAAS,CAAC,SAAS,CAAC,KAAK,CAC1B,CAAC;YACF,MAAM,mBAAmB,GAAG,WAAW,CAAC,eAAe,CAAC,QAAQ,CAC9D,SAAS,CAAC,SAAS,CAAC,kBAAkB,CACvC,CAAC;YACF,IAAI,QAAQ,IAAI,WAAW,CAAC,WAAW,EAAE;gBACvC,OAAO,CACL,eAAC,KAAK,oBACA,UAAU,IACd,SAAS,EAAC,YAAY,EACtB,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,WAAW,CAAC,SAAS,IAC1B,CACH,CAAC;aACH;YACD,IAAI,mBAAmB,IAAI,WAAW,CAAC,sBAAsB,EAAE;gBAC7D,OAAO,CACL,eAAC,KAAK,oBACA,UAAU,IACd,SAAS,EAAC,uBAAuB,EACjC,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,WAAW,CAAC,SAAS,IAC1B,CACH,CAAC;aACH;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,GACD,CACJ,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { createContext, forwardRef, useContext, useMemo, useState, } from 'react';
|
|
3
3
|
import clsx from 'clsx';
|
|
4
4
|
import { SfuModels, } from '@stream-io/video-client';
|
|
@@ -13,6 +13,7 @@ export const ParticipantView = forwardRef(({ participant, trackType = 'videoTrac
|
|
|
13
13
|
const { isLocalParticipant, isSpeaking, isDominantSpeaker, publishedTracks, sessionId, } = participant;
|
|
14
14
|
const hasAudio = publishedTracks.includes(SfuModels.TrackType.AUDIO);
|
|
15
15
|
const hasVideo = publishedTracks.includes(SfuModels.TrackType.VIDEO);
|
|
16
|
+
const hasScreenShareAudio = publishedTracks.includes(SfuModels.TrackType.SCREEN_SHARE_AUDIO);
|
|
16
17
|
const [trackedElement, setTrackedElement] = useState(null);
|
|
17
18
|
const [contextVideoElement, setContextVideoElement] = useState(null);
|
|
18
19
|
const [contextVideoPlaceholderElement, setContextVideoPlaceholderElement] = useState(null);
|
|
@@ -48,6 +49,6 @@ export const ParticipantView = forwardRef(({ participant, trackType = 'videoTrac
|
|
|
48
49
|
return (_jsx("div", Object.assign({ "data-testid": "participant-view", ref: (element) => {
|
|
49
50
|
applyElementToRef(ref, element);
|
|
50
51
|
setTrackedElement(element);
|
|
51
|
-
}, className: clsx('str-video__participant-view', isDominantSpeaker && 'str-video__participant-view--dominant-speaker', isSpeaking && 'str-video__participant-view--speaking', !hasVideo && 'str-video__participant-view--no-video', !hasAudio && 'str-video__participant-view--no-audio', className) }, { children: _jsxs(ParticipantViewContext.Provider, Object.assign({ value: participantViewContextValue }, { children: [!isLocalParticipant && !muteAudio && hasAudio && (_jsx(Audio, { participant: participant })), _jsx(Video, { VideoPlaceholder: VideoPlaceholder, participant: participant, trackType: trackType, refs: videoRefs, autoPlay: true }), isComponentType(ParticipantViewUI) ? (_jsx(ParticipantViewUI, {})) : (ParticipantViewUI)] })) })));
|
|
52
|
+
}, className: clsx('str-video__participant-view', isDominantSpeaker && 'str-video__participant-view--dominant-speaker', isSpeaking && 'str-video__participant-view--speaking', !hasVideo && 'str-video__participant-view--no-video', !hasAudio && 'str-video__participant-view--no-audio', className) }, { children: _jsxs(ParticipantViewContext.Provider, Object.assign({ value: participantViewContextValue }, { children: [!isLocalParticipant && !muteAudio && (_jsxs(_Fragment, { children: [hasAudio && (_jsx(Audio, { participant: participant, trackType: "audioTrack" })), hasScreenShareAudio && (_jsx(Audio, { participant: participant, trackType: "screenShareAudioTrack" }))] })), _jsx(Video, { VideoPlaceholder: VideoPlaceholder, participant: participant, trackType: trackType, refs: videoRefs, autoPlay: true }), isComponentType(ParticipantViewUI) ? (_jsx(ParticipantViewUI, {})) : (ParticipantViewUI)] })) })));
|
|
52
53
|
});
|
|
53
54
|
//# sourceMappingURL=ParticipantView.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParticipantView.js","sourceRoot":"","sources":["../../../../../src/core/components/ParticipantView/ParticipantView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAEL,aAAa,EACb,UAAU,EAEV,UAAU,EACV,OAAO,EACP,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EACL,SAAS,GAIV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,KAAK,EAAc,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAUxE,MAAM,sBAAsB,GAAG,aAAa,CAE1C,SAAS,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,EAAE,CAC5C,UAAU,CAAC,sBAAsB,CAAgC,CAAC;AAuCpE,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CACvC,CACE,EACE,WAAW,EACX,SAAS,GAAG,YAAY,EACxB,SAAS,EACT,IAAI,EAAE,EAAE,eAAe,EAAE,0BAA0B,EAAE,GAAG,EAAE,EAC1D,SAAS,EACT,gBAAgB,EAChB,iBAAiB,GAAG,wBAAyC,GAC9D,EACD,GAAG,EACH,EAAE;IACF,MAAM,EACJ,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,SAAS,GACV,GAAG,WAAW,CAAC;IAEhB,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrE,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ParticipantView.js","sourceRoot":"","sources":["../../../../../src/core/components/ParticipantView/ParticipantView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -50,6 +50,7 @@
|
|
|
50
50
|
"Turn off video": "Turn off video",
|
|
51
51
|
"Turn off screen share": "Turn off screen share",
|
|
52
52
|
"Mute audio": "Mute audio",
|
|
53
|
+
"Mute screen share audio": "Mute screen share audio",
|
|
53
54
|
"Allow audio": "Allow audio",
|
|
54
55
|
"Allow video": "Allow video",
|
|
55
56
|
"Allow screen sharing": "Allow screen sharing",
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "0.3.
|
|
1
|
+
export declare const version = "0.3.38";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '0.3.
|
|
1
|
+
export const version = '0.3.38';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stream-io/video-react-sdk",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.38",
|
|
4
4
|
"packageManager": "yarn@3.2.4",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"@nivo/core": "^0.80.0",
|
|
34
34
|
"@nivo/line": "^0.80.0",
|
|
35
35
|
"@stream-io/i18n": "^0.1.2",
|
|
36
|
-
"@stream-io/video-client": "^0.3.
|
|
37
|
-
"@stream-io/video-react-bindings": "^0.2.
|
|
36
|
+
"@stream-io/video-client": "^0.3.30",
|
|
37
|
+
"@stream-io/video-react-bindings": "^0.2.31",
|
|
38
38
|
"clsx": "^1.2.1",
|
|
39
39
|
"prop-types": "^15.8.1",
|
|
40
40
|
"rxjs": "~7.8.1"
|
|
@@ -142,7 +142,7 @@ export const ParticipantActionsContextMenu = ({
|
|
|
142
142
|
const [pictureInPictureElement, setPictureInPictureElement] = useState(
|
|
143
143
|
document.pictureInPictureElement,
|
|
144
144
|
);
|
|
145
|
-
const
|
|
145
|
+
const call = useCall();
|
|
146
146
|
const { t } = useI18n();
|
|
147
147
|
|
|
148
148
|
const { pin, publishedTracks, sessionId, userId } = participant;
|
|
@@ -152,29 +152,26 @@ export const ParticipantActionsContextMenu = ({
|
|
|
152
152
|
const hasScreenShare = publishedTracks.includes(
|
|
153
153
|
SfuModels.TrackType.SCREEN_SHARE,
|
|
154
154
|
);
|
|
155
|
+
const hasScreenShareAudio = publishedTracks.includes(
|
|
156
|
+
SfuModels.TrackType.SCREEN_SHARE_AUDIO,
|
|
157
|
+
);
|
|
155
158
|
|
|
156
|
-
const blockUser = () =>
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
const
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
const muteVideo = () => {
|
|
163
|
-
activeCall?.muteUser(userId, 'video');
|
|
164
|
-
};
|
|
165
|
-
const muteScreenShare = () => {
|
|
166
|
-
activeCall?.muteUser(userId, 'screenshare');
|
|
167
|
-
};
|
|
159
|
+
const blockUser = () => call?.blockUser(userId);
|
|
160
|
+
const muteAudio = () => call?.muteUser(userId, 'audio');
|
|
161
|
+
const muteVideo = () => call?.muteUser(userId, 'video');
|
|
162
|
+
const muteScreenShare = () => call?.muteUser(userId, 'screenshare');
|
|
163
|
+
const muteScreenShareAudio = () =>
|
|
164
|
+
call?.muteUser(userId, 'screenshare_audio');
|
|
168
165
|
|
|
169
166
|
const grantPermission = (permission: string) => () => {
|
|
170
|
-
|
|
167
|
+
call?.updateUserPermissions({
|
|
171
168
|
user_id: userId,
|
|
172
169
|
grant_permissions: [permission],
|
|
173
170
|
});
|
|
174
171
|
};
|
|
175
172
|
|
|
176
173
|
const revokePermission = (permission: string) => () => {
|
|
177
|
-
|
|
174
|
+
call?.updateUserPermissions({
|
|
178
175
|
user_id: userId,
|
|
179
176
|
revoke_permissions: [permission],
|
|
180
177
|
});
|
|
@@ -182,14 +179,14 @@ export const ParticipantActionsContextMenu = ({
|
|
|
182
179
|
|
|
183
180
|
const toggleParticipantPinnedAt = () => {
|
|
184
181
|
if (pin) {
|
|
185
|
-
|
|
182
|
+
call?.unpin(sessionId);
|
|
186
183
|
} else {
|
|
187
|
-
|
|
184
|
+
call?.pin(sessionId);
|
|
188
185
|
}
|
|
189
186
|
};
|
|
190
187
|
|
|
191
188
|
const pinForEveryone = () => {
|
|
192
|
-
|
|
189
|
+
call
|
|
193
190
|
?.pinForEveryone({
|
|
194
191
|
user_id: userId,
|
|
195
192
|
session_id: sessionId,
|
|
@@ -200,7 +197,7 @@ export const ParticipantActionsContextMenu = ({
|
|
|
200
197
|
};
|
|
201
198
|
|
|
202
199
|
const unpinForEveryone = () => {
|
|
203
|
-
|
|
200
|
+
call
|
|
204
201
|
?.unpinForEveryone({
|
|
205
202
|
user_id: userId,
|
|
206
203
|
session_id: sessionId,
|
|
@@ -253,10 +250,11 @@ export const ParticipantActionsContextMenu = ({
|
|
|
253
250
|
}, [videoElement]);
|
|
254
251
|
|
|
255
252
|
const togglePictureInPicture = () => {
|
|
256
|
-
if (videoElement && pictureInPictureElement !== videoElement)
|
|
253
|
+
if (videoElement && pictureInPictureElement !== videoElement) {
|
|
257
254
|
return videoElement
|
|
258
255
|
.requestPictureInPicture()
|
|
259
256
|
.catch(console.error) as Promise<void>;
|
|
257
|
+
}
|
|
260
258
|
|
|
261
259
|
document.exitPictureInPicture().catch(console.error);
|
|
262
260
|
};
|
|
@@ -308,6 +306,13 @@ export const ParticipantActionsContextMenu = ({
|
|
|
308
306
|
<Icon icon="no-audio" />
|
|
309
307
|
{t('Mute audio')}
|
|
310
308
|
</GenericMenuButtonItem>
|
|
309
|
+
<GenericMenuButtonItem
|
|
310
|
+
disabled={!hasScreenShareAudio}
|
|
311
|
+
onClick={muteScreenShareAudio}
|
|
312
|
+
>
|
|
313
|
+
<Icon icon="no-audio" />
|
|
314
|
+
{t('Mute screen share audio')}
|
|
315
|
+
</GenericMenuButtonItem>
|
|
311
316
|
</Restricted>
|
|
312
317
|
{participantViewElement && (
|
|
313
318
|
<GenericMenuButtonItem onClick={toggleFullscreenMode}>
|
|
@@ -1,12 +1,28 @@
|
|
|
1
1
|
import { ComponentPropsWithoutRef, useEffect, useState } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
AudioTrackType,
|
|
4
|
+
StreamVideoParticipant,
|
|
5
|
+
} from '@stream-io/video-client';
|
|
3
6
|
import { useCall } from '@stream-io/video-react-bindings';
|
|
4
7
|
|
|
5
8
|
export type AudioProps = ComponentPropsWithoutRef<'audio'> & {
|
|
9
|
+
/**
|
|
10
|
+
* The participant whose audio stream we want to play.
|
|
11
|
+
*/
|
|
6
12
|
participant: StreamVideoParticipant;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* The type of audio stream to play for the given participant.
|
|
16
|
+
* The default value is `audioTrack`.
|
|
17
|
+
*/
|
|
18
|
+
trackType?: AudioTrackType;
|
|
7
19
|
};
|
|
8
20
|
|
|
9
|
-
export const Audio = ({
|
|
21
|
+
export const Audio = ({
|
|
22
|
+
participant,
|
|
23
|
+
trackType = 'audioTrack',
|
|
24
|
+
...rest
|
|
25
|
+
}: AudioProps) => {
|
|
10
26
|
const call = useCall();
|
|
11
27
|
const [audioElement, setAudioElement] = useState<HTMLAudioElement | null>(
|
|
12
28
|
null,
|
|
@@ -15,13 +31,11 @@ export const Audio = ({ participant, ...rest }: AudioProps) => {
|
|
|
15
31
|
|
|
16
32
|
useEffect(() => {
|
|
17
33
|
if (!call || !audioElement) return;
|
|
18
|
-
|
|
19
|
-
const cleanup = call.bindAudioElement(audioElement, sessionId);
|
|
20
|
-
|
|
34
|
+
const cleanup = call.bindAudioElement(audioElement, sessionId, trackType);
|
|
21
35
|
return () => {
|
|
22
36
|
cleanup?.();
|
|
23
37
|
};
|
|
24
|
-
}, [call, sessionId, audioElement]);
|
|
38
|
+
}, [call, sessionId, audioElement, trackType]);
|
|
25
39
|
|
|
26
40
|
return (
|
|
27
41
|
<audio
|
|
@@ -30,6 +44,7 @@ export const Audio = ({ participant, ...rest }: AudioProps) => {
|
|
|
30
44
|
ref={setAudioElement}
|
|
31
45
|
data-user-id={userId}
|
|
32
46
|
data-session-id={sessionId}
|
|
47
|
+
data-track-type={trackType}
|
|
33
48
|
/>
|
|
34
49
|
);
|
|
35
50
|
};
|
|
@@ -18,18 +18,36 @@ export const ParticipantsAudio = (props: ParticipantsAudioProps) => {
|
|
|
18
18
|
const { participants, audioProps } = props;
|
|
19
19
|
return (
|
|
20
20
|
<>
|
|
21
|
-
{participants.map(
|
|
22
|
-
(participant)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
{participants.map((participant) => {
|
|
22
|
+
if (participant.isLocalParticipant) return null;
|
|
23
|
+
const hasAudio = participant.publishedTracks.includes(
|
|
24
|
+
SfuModels.TrackType.AUDIO,
|
|
25
|
+
);
|
|
26
|
+
const hasScreenShareAudio = participant.publishedTracks.includes(
|
|
27
|
+
SfuModels.TrackType.SCREEN_SHARE_AUDIO,
|
|
28
|
+
);
|
|
29
|
+
if (hasAudio && participant.audioStream) {
|
|
30
|
+
return (
|
|
26
31
|
<Audio
|
|
27
32
|
{...audioProps}
|
|
33
|
+
trackType="audioTrack"
|
|
28
34
|
participant={participant}
|
|
29
35
|
key={participant.sessionId}
|
|
30
36
|
/>
|
|
31
|
-
)
|
|
32
|
-
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
if (hasScreenShareAudio && participant.screenShareAudioStream) {
|
|
40
|
+
return (
|
|
41
|
+
<Audio
|
|
42
|
+
{...audioProps}
|
|
43
|
+
trackType="screenShareAudioTrack"
|
|
44
|
+
participant={participant}
|
|
45
|
+
key={participant.sessionId}
|
|
46
|
+
/>
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
})}
|
|
33
51
|
</>
|
|
34
52
|
);
|
|
35
53
|
};
|
|
@@ -96,6 +96,9 @@ export const ParticipantView = forwardRef<HTMLDivElement, ParticipantViewProps>(
|
|
|
96
96
|
|
|
97
97
|
const hasAudio = publishedTracks.includes(SfuModels.TrackType.AUDIO);
|
|
98
98
|
const hasVideo = publishedTracks.includes(SfuModels.TrackType.VIDEO);
|
|
99
|
+
const hasScreenShareAudio = publishedTracks.includes(
|
|
100
|
+
SfuModels.TrackType.SCREEN_SHARE_AUDIO,
|
|
101
|
+
);
|
|
99
102
|
|
|
100
103
|
const [trackedElement, setTrackedElement] = useState<HTMLDivElement | null>(
|
|
101
104
|
null,
|
|
@@ -163,8 +166,18 @@ export const ParticipantView = forwardRef<HTMLDivElement, ParticipantViewProps>(
|
|
|
163
166
|
>
|
|
164
167
|
<ParticipantViewContext.Provider value={participantViewContextValue}>
|
|
165
168
|
{/* mute the local participant, as we don't want to hear ourselves */}
|
|
166
|
-
{!isLocalParticipant && !muteAudio &&
|
|
167
|
-
|
|
169
|
+
{!isLocalParticipant && !muteAudio && (
|
|
170
|
+
<>
|
|
171
|
+
{hasAudio && (
|
|
172
|
+
<Audio participant={participant} trackType="audioTrack" />
|
|
173
|
+
)}
|
|
174
|
+
{hasScreenShareAudio && (
|
|
175
|
+
<Audio
|
|
176
|
+
participant={participant}
|
|
177
|
+
trackType="screenShareAudioTrack"
|
|
178
|
+
/>
|
|
179
|
+
)}
|
|
180
|
+
</>
|
|
168
181
|
)}
|
|
169
182
|
<Video
|
|
170
183
|
VideoPlaceholder={VideoPlaceholder}
|
package/src/translations/en.json
CHANGED
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
"Turn off video": "Turn off video",
|
|
55
55
|
"Turn off screen share": "Turn off screen share",
|
|
56
56
|
"Mute audio": "Mute audio",
|
|
57
|
+
"Mute screen share audio": "Mute screen share audio",
|
|
57
58
|
"Allow audio": "Allow audio",
|
|
58
59
|
"Allow video": "Allow video",
|
|
59
60
|
"Allow screen sharing": "Allow screen sharing",
|