@stream-io/video-react-sdk 0.3.41 → 0.3.43
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 +23 -0
- package/README.md +1 -1
- package/dist/index.cjs.js +2737 -0
- package/dist/index.cjs.js.map +1 -0
- package/dist/index.d.ts +0 -1
- package/dist/index.es.js +2633 -0
- package/dist/index.es.js.map +1 -0
- package/dist/src/components/Button/CompositeButton.d.ts +1 -1
- package/dist/src/core/components/ParticipantView/ParticipantView.d.ts +1 -1
- package/dist/src/hooks/useFloatingUIPreset.d.ts +1 -1
- package/index.ts +3 -3
- package/package.json +17 -15
- package/src/components/Permissions/PermissionRequests.tsx +1 -1
- package/dist/index.js +0 -18
- package/dist/index.js.map +0 -1
- package/dist/src/components/Avatar/Avatar.js +0 -24
- package/dist/src/components/Avatar/Avatar.js.map +0 -1
- package/dist/src/components/Avatar/index.js +0 -2
- package/dist/src/components/Avatar/index.js.map +0 -1
- package/dist/src/components/Button/CompositeButton.js +0 -13
- package/dist/src/components/Button/CompositeButton.js.map +0 -1
- package/dist/src/components/Button/CopyToClipboardButton.js +0 -54
- package/dist/src/components/Button/CopyToClipboardButton.js.map +0 -1
- package/dist/src/components/Button/IconButton.js +0 -26
- package/dist/src/components/Button/IconButton.js.map +0 -1
- package/dist/src/components/Button/TextButton.js +0 -17
- package/dist/src/components/Button/TextButton.js.map +0 -1
- package/dist/src/components/Button/index.js +0 -5
- package/dist/src/components/Button/index.js.map +0 -1
- package/dist/src/components/CallControls/AcceptCallButton.js +0 -27
- package/dist/src/components/CallControls/AcceptCallButton.js.map +0 -1
- package/dist/src/components/CallControls/CallControls.js +0 -5
- package/dist/src/components/CallControls/CallControls.js.map +0 -1
- package/dist/src/components/CallControls/CallStatsButton.js +0 -8
- package/dist/src/components/CallControls/CallStatsButton.js.map +0 -1
- package/dist/src/components/CallControls/CancelCallButton.js +0 -27
- package/dist/src/components/CallControls/CancelCallButton.js.map +0 -1
- package/dist/src/components/CallControls/ReactionsButton.js +0 -45
- package/dist/src/components/CallControls/ReactionsButton.js.map +0 -1
- package/dist/src/components/CallControls/RecordCallButton.js +0 -22
- package/dist/src/components/CallControls/RecordCallButton.js.map +0 -1
- package/dist/src/components/CallControls/ScreenShareButton.js +0 -15
- package/dist/src/components/CallControls/ScreenShareButton.js.map +0 -1
- package/dist/src/components/CallControls/ToggleAudioButton.js +0 -24
- package/dist/src/components/CallControls/ToggleAudioButton.js.map +0 -1
- package/dist/src/components/CallControls/ToggleAudioOutputButton.js +0 -10
- package/dist/src/components/CallControls/ToggleAudioOutputButton.js.map +0 -1
- package/dist/src/components/CallControls/ToggleVideoButton.js +0 -24
- package/dist/src/components/CallControls/ToggleVideoButton.js.map +0 -1
- package/dist/src/components/CallControls/index.js +0 -11
- package/dist/src/components/CallControls/index.js.map +0 -1
- package/dist/src/components/CallParticipantsList/BlockedUserListing.js +0 -18
- package/dist/src/components/CallParticipantsList/BlockedUserListing.js.map +0 -1
- package/dist/src/components/CallParticipantsList/CallParticipantListHeader.js +0 -10
- package/dist/src/components/CallParticipantsList/CallParticipantListHeader.js.map +0 -1
- package/dist/src/components/CallParticipantsList/CallParticipantListing.js +0 -4
- package/dist/src/components/CallParticipantsList/CallParticipantListing.js.map +0 -1
- package/dist/src/components/CallParticipantsList/CallParticipantListingItem.js +0 -128
- package/dist/src/components/CallParticipantsList/CallParticipantListingItem.js.map +0 -1
- package/dist/src/components/CallParticipantsList/CallParticipantsList.js +0 -83
- package/dist/src/components/CallParticipantsList/CallParticipantsList.js.map +0 -1
- package/dist/src/components/CallParticipantsList/EmptyParticipantSearchList.js +0 -7
- package/dist/src/components/CallParticipantsList/EmptyParticipantSearchList.js.map +0 -1
- package/dist/src/components/CallParticipantsList/index.js +0 -4
- package/dist/src/components/CallParticipantsList/index.js.map +0 -1
- package/dist/src/components/CallPreview/CallPreview.js +0 -21
- package/dist/src/components/CallPreview/CallPreview.js.map +0 -1
- package/dist/src/components/CallPreview/index.js +0 -2
- package/dist/src/components/CallPreview/index.js.map +0 -1
- package/dist/src/components/CallRecordingList/CallRecordingList.js +0 -9
- package/dist/src/components/CallRecordingList/CallRecordingList.js.map +0 -1
- package/dist/src/components/CallRecordingList/CallRecordingListHeader.js +0 -6
- package/dist/src/components/CallRecordingList/CallRecordingListHeader.js.map +0 -1
- package/dist/src/components/CallRecordingList/CallRecordingListItem.js +0 -11
- package/dist/src/components/CallRecordingList/CallRecordingListItem.js.map +0 -1
- package/dist/src/components/CallRecordingList/EmptyCallRecordingListing.js +0 -5
- package/dist/src/components/CallRecordingList/EmptyCallRecordingListing.js.map +0 -1
- package/dist/src/components/CallRecordingList/LoadingCallRecordingListing.js +0 -7
- package/dist/src/components/CallRecordingList/LoadingCallRecordingListing.js.map +0 -1
- package/dist/src/components/CallRecordingList/index.js +0 -6
- package/dist/src/components/CallRecordingList/index.js.map +0 -1
- package/dist/src/components/CallStats/CallStats.js +0 -70
- package/dist/src/components/CallStats/CallStats.js.map +0 -1
- package/dist/src/components/CallStats/CallStatsLatencyChart.js +0 -39
- package/dist/src/components/CallStats/CallStatsLatencyChart.js.map +0 -1
- package/dist/src/components/CallStats/index.js +0 -3
- package/dist/src/components/CallStats/index.js.map +0 -1
- package/dist/src/components/Debug/DebugParticipantPublishQuality.js +0 -46
- package/dist/src/components/Debug/DebugParticipantPublishQuality.js.map +0 -1
- package/dist/src/components/Debug/DebugStatsView.js +0 -66
- package/dist/src/components/Debug/DebugStatsView.js.map +0 -1
- package/dist/src/components/Debug/useIsDebugMode.js +0 -18
- package/dist/src/components/Debug/useIsDebugMode.js.map +0 -1
- package/dist/src/components/DeviceSettings/DeviceSelector.js +0 -26
- package/dist/src/components/DeviceSettings/DeviceSelector.js.map +0 -1
- package/dist/src/components/DeviceSettings/DeviceSelectorAudio.js +0 -20
- package/dist/src/components/DeviceSettings/DeviceSelectorAudio.js.map +0 -1
- package/dist/src/components/DeviceSettings/DeviceSelectorVideo.js +0 -11
- package/dist/src/components/DeviceSettings/DeviceSelectorVideo.js.map +0 -1
- package/dist/src/components/DeviceSettings/DeviceSettings.js +0 -15
- package/dist/src/components/DeviceSettings/DeviceSettings.js.map +0 -1
- package/dist/src/components/DeviceSettings/index.js +0 -5
- package/dist/src/components/DeviceSettings/index.js.map +0 -1
- package/dist/src/components/Icon/Icon.js +0 -4
- package/dist/src/components/Icon/Icon.js.map +0 -1
- package/dist/src/components/Icon/index.js +0 -2
- package/dist/src/components/Icon/index.js.map +0 -1
- package/dist/src/components/LoadingIndicator/LoadingIndicator.js +0 -6
- package/dist/src/components/LoadingIndicator/LoadingIndicator.js.map +0 -1
- package/dist/src/components/LoadingIndicator/index.js +0 -2
- package/dist/src/components/LoadingIndicator/index.js.map +0 -1
- package/dist/src/components/Menu/GenericMenu.js +0 -20
- package/dist/src/components/Menu/GenericMenu.js.map +0 -1
- package/dist/src/components/Menu/MenuToggle.js +0 -40
- package/dist/src/components/Menu/MenuToggle.js.map +0 -1
- package/dist/src/components/Menu/index.js +0 -3
- package/dist/src/components/Menu/index.js.map +0 -1
- package/dist/src/components/Notification/Notification.js +0 -25
- package/dist/src/components/Notification/Notification.js.map +0 -1
- package/dist/src/components/Notification/PermissionNotification.js +0 -26
- package/dist/src/components/Notification/PermissionNotification.js.map +0 -1
- package/dist/src/components/Notification/SpeakingWhileMutedNotification.js +0 -50
- package/dist/src/components/Notification/SpeakingWhileMutedNotification.js.map +0 -1
- package/dist/src/components/Notification/index.js +0 -4
- package/dist/src/components/Notification/index.js.map +0 -1
- package/dist/src/components/Permissions/PermissionRequests.js +0 -122
- package/dist/src/components/Permissions/PermissionRequests.js.map +0 -1
- package/dist/src/components/Permissions/index.js +0 -2
- package/dist/src/components/Permissions/index.js.map +0 -1
- package/dist/src/components/Reaction/Reaction.js +0 -29
- package/dist/src/components/Reaction/Reaction.js.map +0 -1
- package/dist/src/components/Reaction/index.js +0 -2
- package/dist/src/components/Reaction/index.js.map +0 -1
- package/dist/src/components/RingingCall/RingingCall.js +0 -45
- package/dist/src/components/RingingCall/RingingCall.js.map +0 -1
- package/dist/src/components/RingingCall/RingingCallControls.js +0 -14
- package/dist/src/components/RingingCall/RingingCallControls.js.map +0 -1
- package/dist/src/components/RingingCall/index.js +0 -3
- package/dist/src/components/RingingCall/index.js.map +0 -1
- package/dist/src/components/Search/SearchInput.js +0 -34
- package/dist/src/components/Search/SearchInput.js.map +0 -1
- package/dist/src/components/Search/SearchResults.js +0 -12
- package/dist/src/components/Search/SearchResults.js.map +0 -1
- package/dist/src/components/Search/hooks/index.js +0 -2
- package/dist/src/components/Search/hooks/index.js.map +0 -1
- package/dist/src/components/Search/hooks/useSearch.js +0 -39
- package/dist/src/components/Search/hooks/useSearch.js.map +0 -1
- package/dist/src/components/Search/index.js +0 -3
- package/dist/src/components/Search/index.js.map +0 -1
- package/dist/src/components/StreamTheme/StreamTheme.js +0 -18
- package/dist/src/components/StreamTheme/StreamTheme.js.map +0 -1
- package/dist/src/components/StreamTheme/index.js +0 -2
- package/dist/src/components/StreamTheme/index.js.map +0 -1
- package/dist/src/components/Tooltip/Tooltip.js +0 -22
- package/dist/src/components/Tooltip/Tooltip.js.map +0 -1
- package/dist/src/components/Tooltip/WithTooltip.js +0 -23
- package/dist/src/components/Tooltip/WithTooltip.js.map +0 -1
- package/dist/src/components/Tooltip/hooks/index.js +0 -2
- package/dist/src/components/Tooltip/hooks/index.js.map +0 -1
- package/dist/src/components/Tooltip/hooks/useEnterLeaveHandlers.js +0 -14
- package/dist/src/components/Tooltip/hooks/useEnterLeaveHandlers.js.map +0 -1
- package/dist/src/components/Tooltip/index.js +0 -3
- package/dist/src/components/Tooltip/index.js.map +0 -1
- package/dist/src/components/Video/VideoPreview.js +0 -75
- package/dist/src/components/Video/VideoPreview.js.map +0 -1
- package/dist/src/components/Video/index.js +0 -5
- package/dist/src/components/Video/index.js.map +0 -1
- package/dist/src/components/index.js +0 -18
- package/dist/src/components/index.js.map +0 -1
- package/dist/src/core/components/Audio/Audio.js +0 -30
- package/dist/src/core/components/Audio/Audio.js.map +0 -1
- package/dist/src/core/components/Audio/ParticipantsAudio.js +0 -21
- package/dist/src/core/components/Audio/ParticipantsAudio.js.map +0 -1
- package/dist/src/core/components/Audio/index.js +0 -3
- package/dist/src/core/components/Audio/index.js.map +0 -1
- package/dist/src/core/components/CallLayout/LivestreamLayout.js +0 -89
- package/dist/src/core/components/CallLayout/LivestreamLayout.js.map +0 -1
- package/dist/src/core/components/CallLayout/PaginatedGridLayout.js +0 -47
- package/dist/src/core/components/CallLayout/PaginatedGridLayout.js.map +0 -1
- package/dist/src/core/components/CallLayout/SpeakerLayout.js +0 -71
- package/dist/src/core/components/CallLayout/SpeakerLayout.js.map +0 -1
- package/dist/src/core/components/CallLayout/hooks.js +0 -41
- package/dist/src/core/components/CallLayout/hooks.js.map +0 -1
- package/dist/src/core/components/CallLayout/index.js +0 -4
- package/dist/src/core/components/CallLayout/index.js.map +0 -1
- package/dist/src/core/components/ParticipantView/DefaultParticipantViewUI.js +0 -48
- package/dist/src/core/components/ParticipantView/DefaultParticipantViewUI.js.map +0 -1
- package/dist/src/core/components/ParticipantView/ParticipantView.js +0 -54
- package/dist/src/core/components/ParticipantView/ParticipantView.js.map +0 -1
- package/dist/src/core/components/ParticipantView/index.js +0 -3
- package/dist/src/core/components/ParticipantView/index.js.map +0 -1
- package/dist/src/core/components/StreamCall/StreamCall.js +0 -7
- package/dist/src/core/components/StreamCall/StreamCall.js.map +0 -1
- package/dist/src/core/components/StreamCall/index.js +0 -2
- package/dist/src/core/components/StreamCall/index.js.map +0 -1
- package/dist/src/core/components/StreamVideo/StreamVideo.js +0 -7
- package/dist/src/core/components/StreamVideo/StreamVideo.js.map +0 -1
- package/dist/src/core/components/StreamVideo/index.js +0 -2
- package/dist/src/core/components/StreamVideo/index.js.map +0 -1
- package/dist/src/core/components/Video/BaseVideo.js +0 -48
- package/dist/src/core/components/Video/BaseVideo.js.map +0 -1
- package/dist/src/core/components/Video/DefaultVideoPlaceholder.js +0 -9
- package/dist/src/core/components/Video/DefaultVideoPlaceholder.js.map +0 -1
- package/dist/src/core/components/Video/Video.js +0 -82
- package/dist/src/core/components/Video/Video.js.map +0 -1
- package/dist/src/core/components/Video/index.js +0 -3
- package/dist/src/core/components/Video/index.js.map +0 -1
- package/dist/src/core/components/index.js +0 -7
- package/dist/src/core/components/index.js.map +0 -1
- package/dist/src/core/contexts/MediaDevicesContext.js +0 -178
- package/dist/src/core/contexts/MediaDevicesContext.js.map +0 -1
- package/dist/src/core/contexts/index.js +0 -2
- package/dist/src/core/contexts/index.js.map +0 -1
- package/dist/src/core/hooks/index.js +0 -5
- package/dist/src/core/hooks/index.js.map +0 -1
- package/dist/src/core/hooks/useAudioPublisher.js +0 -114
- package/dist/src/core/hooks/useAudioPublisher.js.map +0 -1
- package/dist/src/core/hooks/useCalculateHardLimit.js +0 -56
- package/dist/src/core/hooks/useCalculateHardLimit.js.map +0 -1
- package/dist/src/core/hooks/useDevices.js +0 -172
- package/dist/src/core/hooks/useDevices.js.map +0 -1
- package/dist/src/core/hooks/useTrackElementVisibility.js +0 -15
- package/dist/src/core/hooks/useTrackElementVisibility.js.map +0 -1
- package/dist/src/core/hooks/useVideoPublisher.js +0 -139
- package/dist/src/core/hooks/useVideoPublisher.js.map +0 -1
- package/dist/src/core/index.js +0 -4
- package/dist/src/core/index.js.map +0 -1
- package/dist/src/hooks/index.js +0 -8
- package/dist/src/hooks/index.js.map +0 -1
- package/dist/src/hooks/useFloatingUIPreset.js +0 -30
- package/dist/src/hooks/useFloatingUIPreset.js.map +0 -1
- package/dist/src/hooks/useRequestPermission.js +0 -46
- package/dist/src/hooks/useRequestPermission.js.map +0 -1
- package/dist/src/hooks/useScrollPosition.js +0 -63
- package/dist/src/hooks/useScrollPosition.js.map +0 -1
- package/dist/src/hooks/useToggleAudioMuteState.js +0 -34
- package/dist/src/hooks/useToggleAudioMuteState.js.map +0 -1
- package/dist/src/hooks/useToggleCallRecording.js +0 -44
- package/dist/src/hooks/useToggleCallRecording.js.map +0 -1
- package/dist/src/hooks/useToggleScreenShare.js +0 -38
- package/dist/src/hooks/useToggleScreenShare.js.map +0 -1
- package/dist/src/hooks/useToggleVideoMuteState.js +0 -34
- package/dist/src/hooks/useToggleVideoMuteState.js.map +0 -1
- package/dist/src/translations/en.json +0 -73
- package/dist/src/translations/index.js +0 -3
- package/dist/src/translations/index.js.map +0 -1
- package/dist/src/types/components.js +0 -2
- package/dist/src/types/components.js.map +0 -1
- package/dist/src/types/index.js +0 -2
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/utilities/applyElementToRef.js +0 -8
- package/dist/src/utilities/applyElementToRef.js.map +0 -1
- package/dist/src/utilities/chunk.js +0 -5
- package/dist/src/utilities/chunk.js.map +0 -1
- package/dist/src/utilities/index.js +0 -4
- package/dist/src/utilities/index.js.map +0 -1
- package/dist/src/utilities/isComponentType.js +0 -7
- package/dist/src/utilities/isComponentType.js.map +0 -1
- package/dist/version.d.ts +0 -1
- package/dist/version.js +0 -2
- package/dist/version.js.map +0 -1
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
-
var t = {};
|
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
-
t[p] = s[p];
|
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
-
t[p[i]] = s[p[i]];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
-
import { forwardRef, useEffect, useState } from 'react';
|
|
14
|
-
import { Browsers } from '@stream-io/video-client';
|
|
15
|
-
import { applyElementToRef } from '../../../utilities';
|
|
16
|
-
/**
|
|
17
|
-
* @description Extends video element with `stream` property
|
|
18
|
-
* (`srcObject`) to reactively handle stream changes
|
|
19
|
-
*/
|
|
20
|
-
export const BaseVideo = forwardRef((_a, ref) => {
|
|
21
|
-
var { stream } = _a, rest = __rest(_a, ["stream"]);
|
|
22
|
-
const [videoElement, setVideoElement] = useState(null);
|
|
23
|
-
useEffect(() => {
|
|
24
|
-
if (!videoElement || !stream)
|
|
25
|
-
return;
|
|
26
|
-
if (stream === videoElement.srcObject)
|
|
27
|
-
return;
|
|
28
|
-
videoElement.srcObject = stream;
|
|
29
|
-
if (Browsers.isSafari() || Browsers.isFirefox()) {
|
|
30
|
-
// Firefox and Safari have some timing issue
|
|
31
|
-
setTimeout(() => {
|
|
32
|
-
videoElement.srcObject = stream;
|
|
33
|
-
videoElement.play().catch((e) => {
|
|
34
|
-
console.error(`Failed to play stream`, e);
|
|
35
|
-
});
|
|
36
|
-
}, 0);
|
|
37
|
-
}
|
|
38
|
-
return () => {
|
|
39
|
-
videoElement.pause();
|
|
40
|
-
videoElement.srcObject = null;
|
|
41
|
-
};
|
|
42
|
-
}, [stream, videoElement]);
|
|
43
|
-
return (_jsx("video", Object.assign({ autoPlay: true, playsInline: true }, rest, { ref: (element) => {
|
|
44
|
-
applyElementToRef(ref, element);
|
|
45
|
-
setVideoElement(element);
|
|
46
|
-
} })));
|
|
47
|
-
});
|
|
48
|
-
//# sourceMappingURL=BaseVideo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BaseVideo.js","sourceRoot":"","sources":["../../../../../src/core/components/Video/BaseVideo.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAyB,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC/E,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAMvD;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,UAAU,CACjC,CAAC,EAAmB,EAAE,GAAG,EAAE,EAAE;QAA5B,EAAE,MAAM,OAAW,EAAN,IAAI,cAAjB,UAAmB,CAAF;IAChB,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAC9C,IAAI,CACL,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY,IAAI,CAAC,MAAM;YAAE,OAAO;QACrC,IAAI,MAAM,KAAK,YAAY,CAAC,SAAS;YAAE,OAAO;QAE9C,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC;QAChC,IAAI,QAAQ,CAAC,QAAQ,EAAE,IAAI,QAAQ,CAAC,SAAS,EAAE,EAAE;YAC/C,4CAA4C;YAC5C,UAAU,CAAC,GAAG,EAAE;gBACd,YAAY,CAAC,SAAS,GAAG,MAAM,CAAC;gBAChC,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;oBAC9B,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC,CAAC;YACL,CAAC,EAAE,CAAC,CAAC,CAAC;SACP;QAED,OAAO,GAAG,EAAE;YACV,YAAY,CAAC,KAAK,EAAE,CAAC;YACrB,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC;QAChC,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3B,OAAO,CACL,8BACE,QAAQ,QACR,WAAW,UACP,IAAI,IACR,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE;YACf,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAChC,eAAe,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,IACD,CACH,CAAC;AACJ,CAAC,CACF,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef, useState } from 'react';
|
|
3
|
-
export const DefaultVideoPlaceholder = forwardRef(({ participant, style }, ref) => {
|
|
4
|
-
const [error, setError] = useState(false);
|
|
5
|
-
const name = participant.name || participant.userId;
|
|
6
|
-
return (_jsxs("div", Object.assign({ className: "str-video__video-placeholder", style: style, ref: ref }, { children: [(!participant.image || error) &&
|
|
7
|
-
(name ? (_jsx("div", Object.assign({ className: "str-video__video-placeholder__initials-fallback" }, { children: _jsx("div", { children: name[0] }) }))) : (_jsx("div", { children: "Video is disabled" }))), participant.image && !error && (_jsx("img", { onError: () => setError(true), alt: "video-placeholder", className: "str-video__video-placeholder__avatar", src: participant.image }))] })));
|
|
8
|
-
});
|
|
9
|
-
//# sourceMappingURL=DefaultVideoPlaceholder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultVideoPlaceholder.js","sourceRoot":"","sources":["../../../../../src/core/components/Video/DefaultVideoPlaceholder.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAyB,UAAU,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAOpE,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAG/C,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE;IAChC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC;IACpD,OAAO,CACL,6BAAK,SAAS,EAAC,8BAA8B,EAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,iBACjE,CAAC,CAAC,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC;gBAC5B,CAAC,IAAI,CAAC,CAAC,CAAC,CACN,4BAAK,SAAS,EAAC,iDAAiD,gBAC9D,wBAAM,IAAI,CAAC,CAAC,CAAC,GAAO,IAChB,CACP,CAAC,CAAC,CAAC,CACF,8CAA4B,CAC7B,CAAC,EACH,WAAW,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,CAC9B,cACE,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAC7B,GAAG,EAAC,mBAAmB,EACvB,SAAS,EAAC,sCAAsC,EAChD,GAAG,EAAE,WAAW,CAAC,KAAK,GACtB,CACH,KACG,CACP,CAAC;AACJ,CAAC,CAAC,CAAC"}
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
-
var t = {};
|
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
-
t[p] = s[p];
|
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
-
t[p[i]] = s[p[i]];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
|
-
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
-
import { useEffect, useLayoutEffect, useState, } from 'react';
|
|
14
|
-
import { SfuModels, VisibilityState, } from '@stream-io/video-client';
|
|
15
|
-
import clsx from 'clsx';
|
|
16
|
-
import { DefaultVideoPlaceholder, } from './DefaultVideoPlaceholder';
|
|
17
|
-
import { useCall } from '@stream-io/video-react-bindings';
|
|
18
|
-
export const Video = (_a) => {
|
|
19
|
-
var { trackType, participant, className, VideoPlaceholder = DefaultVideoPlaceholder, refs } = _a, rest = __rest(_a, ["trackType", "participant", "className", "VideoPlaceholder", "refs"]);
|
|
20
|
-
const { sessionId, videoStream, screenShareStream, publishedTracks, viewportVisibilityState, isLocalParticipant, userId, } = participant;
|
|
21
|
-
const call = useCall();
|
|
22
|
-
const [videoElement, setVideoElement] = useState(null);
|
|
23
|
-
// start with true, will flip once the video starts playing
|
|
24
|
-
const [isVideoPaused, setIsVideoPaused] = useState(true);
|
|
25
|
-
const [isWideMode, setIsWideMode] = useState(true);
|
|
26
|
-
const stream = trackType === 'videoTrack'
|
|
27
|
-
? videoStream
|
|
28
|
-
: trackType === 'screenShareTrack'
|
|
29
|
-
? screenShareStream
|
|
30
|
-
: undefined;
|
|
31
|
-
useLayoutEffect(() => {
|
|
32
|
-
if (!call || !videoElement || trackType === 'none')
|
|
33
|
-
return;
|
|
34
|
-
const cleanup = call.bindVideoElement(videoElement, sessionId, trackType);
|
|
35
|
-
return () => {
|
|
36
|
-
cleanup === null || cleanup === void 0 ? void 0 : cleanup();
|
|
37
|
-
};
|
|
38
|
-
}, [call, trackType, sessionId, videoElement]);
|
|
39
|
-
useEffect(() => {
|
|
40
|
-
if (!stream || !videoElement)
|
|
41
|
-
return;
|
|
42
|
-
const [track] = stream.getVideoTracks();
|
|
43
|
-
if (!track)
|
|
44
|
-
return;
|
|
45
|
-
const handlePlayPause = () => {
|
|
46
|
-
setIsVideoPaused(videoElement.paused);
|
|
47
|
-
const { width = 0, height = 0 } = track.getSettings();
|
|
48
|
-
setIsWideMode(width >= height);
|
|
49
|
-
};
|
|
50
|
-
videoElement.addEventListener('play', handlePlayPause);
|
|
51
|
-
videoElement.addEventListener('pause', handlePlayPause);
|
|
52
|
-
track.addEventListener('unmute', handlePlayPause);
|
|
53
|
-
return () => {
|
|
54
|
-
videoElement.removeEventListener('play', handlePlayPause);
|
|
55
|
-
videoElement.removeEventListener('pause', handlePlayPause);
|
|
56
|
-
track.removeEventListener('unmute', handlePlayPause);
|
|
57
|
-
};
|
|
58
|
-
}, [stream, videoElement]);
|
|
59
|
-
if (!call)
|
|
60
|
-
return null;
|
|
61
|
-
const isPublishingTrack = trackType === 'videoTrack'
|
|
62
|
-
? publishedTracks.includes(SfuModels.TrackType.VIDEO)
|
|
63
|
-
: trackType === 'screenShareTrack'
|
|
64
|
-
? publishedTracks.includes(SfuModels.TrackType.SCREEN_SHARE)
|
|
65
|
-
: false;
|
|
66
|
-
const isInvisible = trackType === 'none' ||
|
|
67
|
-
(viewportVisibilityState === null || viewportVisibilityState === void 0 ? void 0 : viewportVisibilityState[trackType]) === VisibilityState.INVISIBLE;
|
|
68
|
-
const hasNoVideoOrInvisible = !isPublishingTrack || isInvisible;
|
|
69
|
-
const mirrorVideo = isLocalParticipant && trackType === 'videoTrack';
|
|
70
|
-
const isScreenShareTrack = trackType === 'screenShareTrack';
|
|
71
|
-
return (_jsxs(_Fragment, { children: [!hasNoVideoOrInvisible && (_jsx("video", Object.assign({}, rest, { className: clsx(className, 'str-video__video', {
|
|
72
|
-
'str-video__video--not-playing': isVideoPaused,
|
|
73
|
-
'str-video__video--tall': !isWideMode,
|
|
74
|
-
'str-video__video--mirror': mirrorVideo,
|
|
75
|
-
'str-video__video--screen-share': isScreenShareTrack,
|
|
76
|
-
}), "data-user-id": userId, "data-session-id": sessionId, ref: (element) => {
|
|
77
|
-
var _a;
|
|
78
|
-
setVideoElement(element);
|
|
79
|
-
(_a = refs === null || refs === void 0 ? void 0 : refs.setVideoElement) === null || _a === void 0 ? void 0 : _a.call(refs, element);
|
|
80
|
-
} }))), (hasNoVideoOrInvisible || isVideoPaused) && (_jsx(VideoPlaceholder, { style: { position: 'absolute' }, participant: participant, ref: refs === null || refs === void 0 ? void 0 : refs.setVideoPlaceholderElement }))] }));
|
|
81
|
-
};
|
|
82
|
-
//# sourceMappingURL=Video.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Video.js","sourceRoot":"","sources":["../../../../../src/core/components/Video/Video.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/components/Video/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAE9B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAGhC,cAAc,cAAc,CAAC"}
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
11
|
-
import { createContext, useCallback, useContext, useEffect, useState, } from 'react';
|
|
12
|
-
import { map } from 'rxjs';
|
|
13
|
-
import { CallingState, checkIfAudioOutputChangeSupported, disposeOfMediaStream, getAudioStream, getVideoStream, SfuModels, watchForDisconnectedAudioOutputDevice, } from '@stream-io/video-client';
|
|
14
|
-
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
15
|
-
import { useAudioInputDeviceFallback, useAudioOutputDeviceFallback, useAudioPublisher, useHasBrowserPermissions, useVideoDeviceFallback, useVideoPublisher, } from '../hooks';
|
|
16
|
-
const DEVICE_STATE_TOGGLE = {
|
|
17
|
-
starting: 'stopped',
|
|
18
|
-
playing: 'stopped',
|
|
19
|
-
stopped: 'starting',
|
|
20
|
-
uninitialized: 'starting',
|
|
21
|
-
error: 'starting',
|
|
22
|
-
};
|
|
23
|
-
/**
|
|
24
|
-
* Exclude types from documentation site, but we should still add doc comments
|
|
25
|
-
* @internal
|
|
26
|
-
*/
|
|
27
|
-
export const DEVICE_STATE = {
|
|
28
|
-
starting: { type: 'starting', enabled: true },
|
|
29
|
-
playing: { type: 'playing', enabled: true },
|
|
30
|
-
stopped: { type: 'stopped', enabled: false },
|
|
31
|
-
uninitialized: { type: 'uninitialized', enabled: false },
|
|
32
|
-
error: { type: 'error', message: '', enabled: false },
|
|
33
|
-
};
|
|
34
|
-
const DEFAULT_DEVICE_ID = 'default';
|
|
35
|
-
const MediaDevicesContext = createContext(null);
|
|
36
|
-
/**
|
|
37
|
-
* Context provider that internally puts in place mechanisms that:
|
|
38
|
-
* 1. fall back to selecting a default device when trying to switch to a non-existent device
|
|
39
|
-
* 2. fall back to a default device when an active device is disconnected
|
|
40
|
-
* 3. stop publishing a media stream when a non-default device is disconnected
|
|
41
|
-
* 4. republish a media stream from the newly connected default device
|
|
42
|
-
* 5. republish a media stream when a new device is selected
|
|
43
|
-
*
|
|
44
|
-
* Provides `MediaDevicesContextAPI` that allow the integrators to handle:
|
|
45
|
-
* 1. the initial device state enablement (for example apt for lobby scenario)
|
|
46
|
-
* 2. media stream retrieval and disposal
|
|
47
|
-
* 3. media stream publishing
|
|
48
|
-
* 4. specific device selection
|
|
49
|
-
* @param params
|
|
50
|
-
* @returns
|
|
51
|
-
*
|
|
52
|
-
* @category Device Management
|
|
53
|
-
*/
|
|
54
|
-
export const MediaDevicesProvider = ({ children, initialAudioEnabled, initialVideoEnabled, initialVideoInputDeviceId = DEFAULT_DEVICE_ID, initialAudioOutputDeviceId = DEFAULT_DEVICE_ID, initialAudioInputDeviceId = DEFAULT_DEVICE_ID, }) => {
|
|
55
|
-
const call = useCall();
|
|
56
|
-
const { useCallCallingState, useCallState, useCallSettings } = useCallStateHooks();
|
|
57
|
-
const callingState = useCallCallingState();
|
|
58
|
-
const callState = useCallState();
|
|
59
|
-
const { localParticipant$ } = callState;
|
|
60
|
-
const hasBrowserPermissionVideoInput = useHasBrowserPermissions('camera');
|
|
61
|
-
const hasBrowserPermissionAudioInput = useHasBrowserPermissions('microphone');
|
|
62
|
-
const [selectedAudioInputDeviceId, selectAudioInputDeviceId] = useState(initialAudioInputDeviceId);
|
|
63
|
-
const [selectedAudioOutputDeviceId, selectAudioOutputDeviceId] = useState(initialAudioOutputDeviceId);
|
|
64
|
-
const [selectedVideoDeviceId, selectVideoDeviceId] = useState(initialVideoInputDeviceId);
|
|
65
|
-
const [isAudioOutputChangeSupported] = useState(() => checkIfAudioOutputChangeSupported());
|
|
66
|
-
const [initAudioEnabled, setInitialAudioEnabled] = useState(!!initialAudioEnabled);
|
|
67
|
-
const [initialVideoState, setInitialVideoState] = useState(() => initialVideoEnabled ? DEVICE_STATE.starting : DEVICE_STATE.uninitialized);
|
|
68
|
-
const settings = useCallSettings();
|
|
69
|
-
useEffect(() => {
|
|
70
|
-
if (!settings)
|
|
71
|
-
return;
|
|
72
|
-
const { audio, video } = settings;
|
|
73
|
-
if (typeof initialAudioEnabled === 'undefined' && audio.mic_default_on) {
|
|
74
|
-
setInitialAudioEnabled(audio.mic_default_on);
|
|
75
|
-
}
|
|
76
|
-
if (typeof initialVideoEnabled === 'undefined' && video.camera_default_on) {
|
|
77
|
-
setInitialVideoState(DEVICE_STATE.starting);
|
|
78
|
-
}
|
|
79
|
-
}, [initialAudioEnabled, initialVideoEnabled, settings]);
|
|
80
|
-
const publishVideoStream = useVideoPublisher({
|
|
81
|
-
initialVideoMuted: !initialVideoState.enabled,
|
|
82
|
-
videoDeviceId: selectedVideoDeviceId,
|
|
83
|
-
});
|
|
84
|
-
const publishAudioStream = useAudioPublisher({
|
|
85
|
-
initialAudioMuted: !initAudioEnabled,
|
|
86
|
-
audioDeviceId: selectedAudioInputDeviceId,
|
|
87
|
-
});
|
|
88
|
-
const stopPublishingAudio = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
89
|
-
if (callingState === CallingState.IDLE ||
|
|
90
|
-
callingState === CallingState.RINGING) {
|
|
91
|
-
setInitialAudioEnabled(false);
|
|
92
|
-
}
|
|
93
|
-
else {
|
|
94
|
-
call === null || call === void 0 ? void 0 : call.stopPublish(SfuModels.TrackType.AUDIO);
|
|
95
|
-
}
|
|
96
|
-
}), [call, callingState]);
|
|
97
|
-
const stopPublishingVideo = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
98
|
-
if (callingState === CallingState.IDLE ||
|
|
99
|
-
callingState === CallingState.RINGING) {
|
|
100
|
-
setInitialVideoState(DEVICE_STATE.stopped);
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
call === null || call === void 0 ? void 0 : call.stopPublish(SfuModels.TrackType.VIDEO);
|
|
104
|
-
}
|
|
105
|
-
}), [call, callingState]);
|
|
106
|
-
const toggleInitialAudioMuteState = useCallback(() => setInitialAudioEnabled((prev) => !prev), []);
|
|
107
|
-
const toggleInitialVideoMuteState = useCallback(() => setInitialVideoState((prev) => {
|
|
108
|
-
const newType = DEVICE_STATE_TOGGLE[prev.type];
|
|
109
|
-
return DEVICE_STATE[newType];
|
|
110
|
-
}), []);
|
|
111
|
-
const switchDevice = useCallback((kind, deviceId) => {
|
|
112
|
-
if (kind === 'videoinput') {
|
|
113
|
-
selectVideoDeviceId(deviceId);
|
|
114
|
-
}
|
|
115
|
-
if (kind === 'audioinput') {
|
|
116
|
-
selectAudioInputDeviceId(deviceId);
|
|
117
|
-
}
|
|
118
|
-
if (kind === 'audiooutput') {
|
|
119
|
-
selectAudioOutputDeviceId(deviceId);
|
|
120
|
-
}
|
|
121
|
-
}, []);
|
|
122
|
-
useAudioInputDeviceFallback(() => switchDevice('audioinput', DEFAULT_DEVICE_ID), hasBrowserPermissionAudioInput, selectedAudioInputDeviceId);
|
|
123
|
-
useAudioOutputDeviceFallback(() => switchDevice('audiooutput', DEFAULT_DEVICE_ID),
|
|
124
|
-
// audiooutput devices can be enumerated only with microphone permissions
|
|
125
|
-
hasBrowserPermissionAudioInput, selectedAudioOutputDeviceId);
|
|
126
|
-
useVideoDeviceFallback(() => switchDevice('videoinput', DEFAULT_DEVICE_ID), hasBrowserPermissionVideoInput, selectedVideoDeviceId);
|
|
127
|
-
useEffect(() => {
|
|
128
|
-
if (!call || callingState !== CallingState.JOINED)
|
|
129
|
-
return;
|
|
130
|
-
call.setAudioOutputDevice(selectedAudioOutputDeviceId);
|
|
131
|
-
}, [call, callingState, selectedAudioOutputDeviceId]);
|
|
132
|
-
useEffect(() => {
|
|
133
|
-
// audiooutput devices can be enumerated only with microphone permissions
|
|
134
|
-
if (!localParticipant$ || !hasBrowserPermissionAudioInput)
|
|
135
|
-
return;
|
|
136
|
-
const subscription = watchForDisconnectedAudioOutputDevice(localParticipant$.pipe(map((p) => p === null || p === void 0 ? void 0 : p.audioOutputDeviceId))).subscribe(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
137
|
-
selectAudioOutputDeviceId(DEFAULT_DEVICE_ID);
|
|
138
|
-
}));
|
|
139
|
-
return () => {
|
|
140
|
-
subscription.unsubscribe();
|
|
141
|
-
};
|
|
142
|
-
}, [hasBrowserPermissionAudioInput, localParticipant$]);
|
|
143
|
-
const contextValue = {
|
|
144
|
-
disposeOfMediaStream,
|
|
145
|
-
getAudioStream,
|
|
146
|
-
getVideoStream,
|
|
147
|
-
isAudioOutputChangeSupported,
|
|
148
|
-
selectedAudioInputDeviceId,
|
|
149
|
-
selectedAudioOutputDeviceId,
|
|
150
|
-
selectedVideoDeviceId,
|
|
151
|
-
switchDevice,
|
|
152
|
-
initialAudioEnabled: initAudioEnabled,
|
|
153
|
-
initialVideoState,
|
|
154
|
-
setInitialAudioEnabled,
|
|
155
|
-
setInitialVideoState,
|
|
156
|
-
toggleInitialAudioMuteState,
|
|
157
|
-
toggleInitialVideoMuteState,
|
|
158
|
-
publishAudioStream,
|
|
159
|
-
publishVideoStream,
|
|
160
|
-
stopPublishingAudio,
|
|
161
|
-
stopPublishingVideo,
|
|
162
|
-
};
|
|
163
|
-
return (_jsx(MediaDevicesContext.Provider, Object.assign({ value: contextValue }, { children: children })));
|
|
164
|
-
};
|
|
165
|
-
/**
|
|
166
|
-
* Context consumer retrieving MediaDevicesContextAPI.
|
|
167
|
-
* @returns
|
|
168
|
-
*
|
|
169
|
-
* @category Device Management
|
|
170
|
-
*/
|
|
171
|
-
export const useMediaDevices = () => {
|
|
172
|
-
const value = useContext(MediaDevicesContext);
|
|
173
|
-
if (!value) {
|
|
174
|
-
console.warn(`Null MediaDevicesContext`);
|
|
175
|
-
}
|
|
176
|
-
return value;
|
|
177
|
-
};
|
|
178
|
-
//# sourceMappingURL=MediaDevicesContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"MediaDevicesContext.js","sourceRoot":"","sources":["../../../../src/core/contexts/MediaDevicesContext.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/contexts/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC"}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
-
});
|
|
9
|
-
};
|
|
10
|
-
import { useCallback, useEffect, useRef } from 'react';
|
|
11
|
-
import { map } from 'rxjs';
|
|
12
|
-
import { CallingState, getAudioStream, OwnCapability, SfuModels, watchForAddedDefaultAudioDevice, watchForDisconnectedAudioDevice, } from '@stream-io/video-client';
|
|
13
|
-
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
14
|
-
import { useHasBrowserPermissions } from './useDevices';
|
|
15
|
-
/**
|
|
16
|
-
* @internal
|
|
17
|
-
* @category Device Management
|
|
18
|
-
*/
|
|
19
|
-
export const useAudioPublisher = ({ initialAudioMuted, audioDeviceId, }) => {
|
|
20
|
-
const call = useCall();
|
|
21
|
-
const { useCallState, useCallCallingState, useLocalParticipant } = useCallStateHooks();
|
|
22
|
-
const callState = useCallState();
|
|
23
|
-
const callingState = useCallCallingState();
|
|
24
|
-
const participant = useLocalParticipant();
|
|
25
|
-
const hasBrowserPermissionAudioInput = useHasBrowserPermissions('microphone');
|
|
26
|
-
const { localParticipant$ } = callState;
|
|
27
|
-
const isPublishingAudio = participant === null || participant === void 0 ? void 0 : participant.publishedTracks.includes(SfuModels.TrackType.AUDIO);
|
|
28
|
-
const publishAudioStream = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
-
if (!call)
|
|
30
|
-
return;
|
|
31
|
-
if (!call.permissionsContext.hasPermission(OwnCapability.SEND_AUDIO)) {
|
|
32
|
-
throw new Error(`No permission to publish audio`);
|
|
33
|
-
}
|
|
34
|
-
try {
|
|
35
|
-
const audioStream = yield getAudioStream({
|
|
36
|
-
deviceId: audioDeviceId,
|
|
37
|
-
});
|
|
38
|
-
yield call.publishAudioStream(audioStream);
|
|
39
|
-
}
|
|
40
|
-
catch (e) {
|
|
41
|
-
console.log('Failed to publish audio stream', e);
|
|
42
|
-
}
|
|
43
|
-
}), [audioDeviceId, call]);
|
|
44
|
-
const lastAudioDeviceId = useRef(audioDeviceId);
|
|
45
|
-
useEffect(() => {
|
|
46
|
-
if (callingState === CallingState.JOINED &&
|
|
47
|
-
audioDeviceId !== lastAudioDeviceId.current) {
|
|
48
|
-
lastAudioDeviceId.current = audioDeviceId;
|
|
49
|
-
publishAudioStream().catch((e) => {
|
|
50
|
-
console.error('Failed to publish audio stream', e);
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
}, [audioDeviceId, callingState, publishAudioStream]);
|
|
54
|
-
const initialPublishRun = useRef(false);
|
|
55
|
-
useEffect(() => {
|
|
56
|
-
if (callingState === CallingState.JOINED &&
|
|
57
|
-
!initialPublishRun.current &&
|
|
58
|
-
!initialAudioMuted) {
|
|
59
|
-
// automatic publishing should happen only when joining the call
|
|
60
|
-
// from the lobby, and the audio is not muted
|
|
61
|
-
publishAudioStream().catch((e) => {
|
|
62
|
-
console.error('Failed to publish audio stream', e);
|
|
63
|
-
});
|
|
64
|
-
initialPublishRun.current = true;
|
|
65
|
-
}
|
|
66
|
-
}, [callingState, initialAudioMuted, publishAudioStream]);
|
|
67
|
-
useEffect(() => {
|
|
68
|
-
if (!localParticipant$ || !hasBrowserPermissionAudioInput)
|
|
69
|
-
return;
|
|
70
|
-
const subscription = watchForDisconnectedAudioDevice(localParticipant$.pipe(map((p) => p === null || p === void 0 ? void 0 : p.audioDeviceId))).subscribe(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
71
|
-
if (!call)
|
|
72
|
-
return;
|
|
73
|
-
call.setAudioDevice(undefined);
|
|
74
|
-
yield call.stopPublish(SfuModels.TrackType.AUDIO);
|
|
75
|
-
}));
|
|
76
|
-
return () => {
|
|
77
|
-
subscription.unsubscribe();
|
|
78
|
-
};
|
|
79
|
-
}, [hasBrowserPermissionAudioInput, localParticipant$, call]);
|
|
80
|
-
useEffect(() => {
|
|
81
|
-
if (!(participant === null || participant === void 0 ? void 0 : participant.audioStream) || !call || !isPublishingAudio)
|
|
82
|
-
return;
|
|
83
|
-
const [track] = participant.audioStream.getAudioTracks();
|
|
84
|
-
const selectedAudioDeviceId = track.getSettings().deviceId;
|
|
85
|
-
const republishDefaultDevice = watchForAddedDefaultAudioDevice().subscribe(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
86
|
-
if (!(call &&
|
|
87
|
-
participant.audioStream &&
|
|
88
|
-
selectedAudioDeviceId === 'default'))
|
|
89
|
-
return;
|
|
90
|
-
// We need to stop the original track first in order
|
|
91
|
-
// we can retrieve the new default device stream
|
|
92
|
-
track.stop();
|
|
93
|
-
const audioStream = yield getAudioStream({
|
|
94
|
-
deviceId: 'default',
|
|
95
|
-
});
|
|
96
|
-
yield call.publishAudioStream(audioStream);
|
|
97
|
-
}));
|
|
98
|
-
const handleTrackEnded = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
99
|
-
if (selectedAudioDeviceId === audioDeviceId) {
|
|
100
|
-
const audioStream = yield getAudioStream({
|
|
101
|
-
deviceId: audioDeviceId,
|
|
102
|
-
});
|
|
103
|
-
yield call.publishAudioStream(audioStream);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
track.addEventListener('ended', handleTrackEnded);
|
|
107
|
-
return () => {
|
|
108
|
-
track.removeEventListener('ended', handleTrackEnded);
|
|
109
|
-
republishDefaultDevice.unsubscribe();
|
|
110
|
-
};
|
|
111
|
-
}, [audioDeviceId, call, participant === null || participant === void 0 ? void 0 : participant.audioStream, isPublishingAudio]);
|
|
112
|
-
return publishAudioStream;
|
|
113
|
-
};
|
|
114
|
-
//# sourceMappingURL=useAudioPublisher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAudioPublisher.js","sourceRoot":"","sources":["../../../../src/core/hooks/useAudioPublisher.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react';
|
|
2
|
-
export const useCalculateHardLimit = (
|
|
3
|
-
/**
|
|
4
|
-
* Element that stretches to 100% of the whole layout component
|
|
5
|
-
*/
|
|
6
|
-
wrapperElement,
|
|
7
|
-
/**
|
|
8
|
-
* Element that directly hosts individual `ParticipantView` (or wrapper) elements
|
|
9
|
-
*/
|
|
10
|
-
hostElement, limit) => {
|
|
11
|
-
const [calculatedLimit, setCalculatedLimit] = useState({
|
|
12
|
-
vertical: typeof limit === 'number' ? limit : null,
|
|
13
|
-
horizontal: typeof limit === 'number' ? limit : null,
|
|
14
|
-
});
|
|
15
|
-
useEffect(() => {
|
|
16
|
-
if (!hostElement ||
|
|
17
|
-
!wrapperElement ||
|
|
18
|
-
typeof limit === 'number' ||
|
|
19
|
-
typeof limit === 'undefined')
|
|
20
|
-
return;
|
|
21
|
-
let childWidth = null;
|
|
22
|
-
let childHeight = null;
|
|
23
|
-
const resizeObserver = new ResizeObserver((entries, observer) => {
|
|
24
|
-
// this part should ideally run as little times as possible
|
|
25
|
-
// get child measurements and disconnect
|
|
26
|
-
// does not consider dynamically sized children
|
|
27
|
-
// this hook is for SpeakerLayout use only, where children in the bar are fixed size
|
|
28
|
-
if (entries.length > 1) {
|
|
29
|
-
const child = hostElement.firstChild;
|
|
30
|
-
if (child) {
|
|
31
|
-
childHeight = child.clientHeight;
|
|
32
|
-
childWidth = child.clientWidth;
|
|
33
|
-
observer.unobserve(hostElement);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
// keep the state at { vertical: 1, horizontal: 1 }
|
|
37
|
-
// until we get the proper child measurements
|
|
38
|
-
if (childHeight === null || childWidth === null)
|
|
39
|
-
return;
|
|
40
|
-
const vertical = Math.floor(wrapperElement.clientHeight / childHeight);
|
|
41
|
-
const horizontal = Math.floor(wrapperElement.clientWidth / childWidth);
|
|
42
|
-
setCalculatedLimit((pv) => {
|
|
43
|
-
if (pv.vertical !== vertical || pv.horizontal !== horizontal)
|
|
44
|
-
return { vertical, horizontal };
|
|
45
|
-
return pv;
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
resizeObserver.observe(wrapperElement);
|
|
49
|
-
resizeObserver.observe(hostElement);
|
|
50
|
-
return () => {
|
|
51
|
-
resizeObserver.disconnect();
|
|
52
|
-
};
|
|
53
|
-
}, [hostElement, limit, wrapperElement]);
|
|
54
|
-
return calculatedLimit;
|
|
55
|
-
};
|
|
56
|
-
//# sourceMappingURL=useCalculateHardLimit.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCalculateHardLimit.js","sourceRoot":"","sources":["../../../../src/core/hooks/useCalculateHardLimit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE5C,MAAM,CAAC,MAAM,qBAAqB,GAAG;AACnC;;GAEG;AACH,cAAqC;AACrC;;GAEG;AACH,WAAkC,EAClC,KAA0B,EAC1B,EAAE;IACF,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAGnD;QACD,QAAQ,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;QAClD,UAAU,EAAE,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;KACrD,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,IACE,CAAC,WAAW;YACZ,CAAC,cAAc;YACf,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,WAAW;YAE5B,OAAO;QAET,IAAI,UAAU,GAAkB,IAAI,CAAC;QACrC,IAAI,WAAW,GAAkB,IAAI,CAAC;QAEtC,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;YAC9D,2DAA2D;YAC3D,wCAAwC;YACxC,+CAA+C;YAC/C,oFAAoF;YACpF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,MAAM,KAAK,GAAG,WAAW,CAAC,UAAgC,CAAC;gBAE3D,IAAI,KAAK,EAAE;oBACT,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC;oBACjC,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC;oBAC/B,QAAQ,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;iBACjC;aACF;YAED,mDAAmD;YACnD,6CAA6C;YAC7C,IAAI,WAAW,KAAK,IAAI,IAAI,UAAU,KAAK,IAAI;gBAAE,OAAO;YAExD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,GAAG,WAAW,CAAC,CAAC;YACvE,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;YAEvE,kBAAkB,CAAC,CAAC,EAAE,EAAE,EAAE;gBACxB,IAAI,EAAE,CAAC,QAAQ,KAAK,QAAQ,IAAI,EAAE,CAAC,UAAU,KAAK,UAAU;oBAC1D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;gBAClC,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACvC,cAAc,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAEpC,OAAO,GAAG,EAAE;YACV,cAAc,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;IAEzC,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC"}
|