@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,172 +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 { useEffect, useState } from 'react';
|
|
11
|
-
import { pairwise } from 'rxjs';
|
|
12
|
-
import { getAudioDevices, getAudioOutputDevices, getVideoDevices, } from '@stream-io/video-client';
|
|
13
|
-
export const useHasBrowserPermissions = (permissionName) => {
|
|
14
|
-
const [canSubscribe, enableSubscription] = useState(false);
|
|
15
|
-
useEffect(() => {
|
|
16
|
-
let permissionState;
|
|
17
|
-
const handlePermissionChange = (e) => {
|
|
18
|
-
const { state } = e.target;
|
|
19
|
-
enableSubscription(state === 'granted');
|
|
20
|
-
};
|
|
21
|
-
const checkPermissions = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
-
try {
|
|
23
|
-
permissionState = yield navigator.permissions.query({
|
|
24
|
-
name: permissionName,
|
|
25
|
-
});
|
|
26
|
-
permissionState.addEventListener('change', handlePermissionChange);
|
|
27
|
-
enableSubscription(permissionState.state === 'granted');
|
|
28
|
-
}
|
|
29
|
-
catch (e) {
|
|
30
|
-
// permission does not exist - cannot be queried
|
|
31
|
-
// an example would be Firefox - camera, neither microphone perms can be queried
|
|
32
|
-
enableSubscription(true);
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
checkPermissions();
|
|
36
|
-
return () => {
|
|
37
|
-
permissionState === null || permissionState === void 0 ? void 0 : permissionState.removeEventListener('change', handlePermissionChange);
|
|
38
|
-
};
|
|
39
|
-
}, [permissionName]);
|
|
40
|
-
return canSubscribe;
|
|
41
|
-
};
|
|
42
|
-
/**
|
|
43
|
-
* Observes changes in connected devices and maintains an up-to-date array of connected MediaDeviceInfo objects.
|
|
44
|
-
* @param observeDevices
|
|
45
|
-
* @category Device Management
|
|
46
|
-
*/
|
|
47
|
-
export const useDevices = (observeDevices) => {
|
|
48
|
-
const [devices, setDevices] = useState([]);
|
|
49
|
-
useEffect(() => {
|
|
50
|
-
const subscription = observeDevices().subscribe(setDevices);
|
|
51
|
-
return () => {
|
|
52
|
-
subscription.unsubscribe();
|
|
53
|
-
};
|
|
54
|
-
}, [observeDevices]);
|
|
55
|
-
return devices;
|
|
56
|
-
};
|
|
57
|
-
/**
|
|
58
|
-
* Observes changes and maintains an array of connected video input devices
|
|
59
|
-
* @category Device Management
|
|
60
|
-
*/
|
|
61
|
-
export const useVideoDevices = () => useDevices(getVideoDevices);
|
|
62
|
-
/**
|
|
63
|
-
* Observes changes and maintains an array of connected audio input devices
|
|
64
|
-
* @category Device Management
|
|
65
|
-
*/
|
|
66
|
-
export const useAudioInputDevices = () => useDevices(getAudioDevices);
|
|
67
|
-
/**
|
|
68
|
-
* Observes changes and maintains an array of connected audio output devices
|
|
69
|
-
* @category Device Management
|
|
70
|
-
*/
|
|
71
|
-
export const useAudioOutputDevices = () => useDevices(getAudioOutputDevices);
|
|
72
|
-
/**
|
|
73
|
-
* Verifies that newly selected device id exists among the registered devices.
|
|
74
|
-
* If the selected device id is not found among existing devices, switches to the default device.
|
|
75
|
-
* The media devices are observed only if a given permission ('camera' resp. 'microphone') is granted in browser.
|
|
76
|
-
* Regardless of current permissions settings, an intent to observe devices will take place in Firefox.
|
|
77
|
-
* This is due to the fact that Firefox does not allow to query for 'camera' and 'microphone' permissions.
|
|
78
|
-
* @param canObserve
|
|
79
|
-
* @param devices$
|
|
80
|
-
* @param switchToDefaultDevice
|
|
81
|
-
* @param selectedDeviceId
|
|
82
|
-
* @category Device Management
|
|
83
|
-
*/
|
|
84
|
-
export const useDeviceFallback = (canObserve, devices$, switchToDefaultDevice, selectedDeviceId) => {
|
|
85
|
-
useEffect(() => {
|
|
86
|
-
if (!canObserve)
|
|
87
|
-
return;
|
|
88
|
-
const validateDeviceId = devices$.pipe().subscribe((devices) => {
|
|
89
|
-
const deviceFound = devices.find((device) => device.deviceId === selectedDeviceId);
|
|
90
|
-
if (!deviceFound)
|
|
91
|
-
switchToDefaultDevice();
|
|
92
|
-
});
|
|
93
|
-
return () => {
|
|
94
|
-
validateDeviceId.unsubscribe();
|
|
95
|
-
};
|
|
96
|
-
}, [canObserve, devices$, selectedDeviceId, switchToDefaultDevice]);
|
|
97
|
-
};
|
|
98
|
-
/**
|
|
99
|
-
* Verifies that newly selected video device id exists among the registered devices.
|
|
100
|
-
* If the selected device id is not found among existing devices, switches to the default video device.
|
|
101
|
-
* The media devices are observed only if 'camera' permission is granted in browser.
|
|
102
|
-
* It is integrators responsibility to instruct users how to enable required permissions.
|
|
103
|
-
* Regardless of current permissions settings, an intent to observe devices will take place in Firefox.
|
|
104
|
-
* This is due to the fact that Firefox does not allow to query for 'camera' and 'microphone' permissions.
|
|
105
|
-
* @param switchToDefaultDevice
|
|
106
|
-
* @param canObserve
|
|
107
|
-
* @param selectedDeviceId
|
|
108
|
-
* @category Device Management
|
|
109
|
-
*/
|
|
110
|
-
export const useVideoDeviceFallback = (switchToDefaultDevice, canObserve, selectedDeviceId) => useDeviceFallback(canObserve, getVideoDevices(), switchToDefaultDevice, selectedDeviceId);
|
|
111
|
-
/**
|
|
112
|
-
* Verifies that newly selected audio input device id exists among the registered devices.
|
|
113
|
-
* If the selected device id is not found among existing devices, switches to the default audio input device.
|
|
114
|
-
* The media devices are observed only if 'microphone' permission is granted in browser.
|
|
115
|
-
* It is integrators responsibility to instruct users how to enable required permissions.
|
|
116
|
-
* Regardless of current permissions settings, an intent to observe devices will take place in Firefox.
|
|
117
|
-
* This is due to the fact that Firefox does not allow to query for 'camera' and 'microphone' permissions.
|
|
118
|
-
* @param switchToDefaultDevice
|
|
119
|
-
* @param canObserve
|
|
120
|
-
* @param selectedDeviceId
|
|
121
|
-
* @category Device Management
|
|
122
|
-
*/
|
|
123
|
-
export const useAudioInputDeviceFallback = (switchToDefaultDevice, canObserve, selectedDeviceId) => useDeviceFallback(canObserve, getAudioDevices(), switchToDefaultDevice, selectedDeviceId);
|
|
124
|
-
/**
|
|
125
|
-
* Verifies that newly selected audio output device id exists among the registered devices.
|
|
126
|
-
* If the selected device id is not found among existing devices, switches to the default audio output device.
|
|
127
|
-
* The media devices are observed only if 'microphone' permission is granted in browser.
|
|
128
|
-
* It is integrators responsibility to instruct users how to enable required permissions.
|
|
129
|
-
* Regardless of current permissions settings, an intent to observe devices will take place in Firefox.
|
|
130
|
-
* This is due to the fact that Firefox does not allow to query for 'camera' and 'microphone' permissions.
|
|
131
|
-
* @param switchToDefaultDevice
|
|
132
|
-
* @param canObserve
|
|
133
|
-
* @param selectedDeviceId
|
|
134
|
-
* @category Device Management
|
|
135
|
-
*/
|
|
136
|
-
export const useAudioOutputDeviceFallback = (switchToDefaultDevice, canObserve, selectedDeviceId) => useDeviceFallback(canObserve, getAudioOutputDevices(), switchToDefaultDevice, selectedDeviceId);
|
|
137
|
-
/**
|
|
138
|
-
* Observes devices of certain kind are made unavailable and executes onDisconnect callback.
|
|
139
|
-
* @param observeDevices
|
|
140
|
-
* @param onDisconnect
|
|
141
|
-
* @category Device Management
|
|
142
|
-
*/
|
|
143
|
-
export const useOnUnavailableDevices = (observeDevices, onDisconnect) => {
|
|
144
|
-
useEffect(() => {
|
|
145
|
-
const subscription = observeDevices
|
|
146
|
-
.pipe(pairwise())
|
|
147
|
-
.subscribe(([prev, current]) => {
|
|
148
|
-
if (prev.length > 0 && current.length === 0)
|
|
149
|
-
onDisconnect();
|
|
150
|
-
});
|
|
151
|
-
return () => subscription.unsubscribe();
|
|
152
|
-
}, [observeDevices, onDisconnect]);
|
|
153
|
-
};
|
|
154
|
-
/**
|
|
155
|
-
* Observes disconnect of all video devices and executes onDisconnect callback.
|
|
156
|
-
* @param onDisconnect
|
|
157
|
-
* @category Device Management
|
|
158
|
-
*/
|
|
159
|
-
export const useOnUnavailableVideoDevices = (onDisconnect) => useOnUnavailableDevices(getVideoDevices(), onDisconnect);
|
|
160
|
-
/**
|
|
161
|
-
* Observes disconnect of all audio input devices and executes onDisconnect callback.
|
|
162
|
-
* @param onDisconnect
|
|
163
|
-
* @category Device Management
|
|
164
|
-
*/
|
|
165
|
-
export const useOnUnavailableAudioInputDevices = (onDisconnect) => useOnUnavailableDevices(getAudioDevices(), onDisconnect);
|
|
166
|
-
/**
|
|
167
|
-
* Observes disconnect of all audio output devices and executes onDisconnect callback.
|
|
168
|
-
* @param onDisconnect
|
|
169
|
-
* @category Device Management
|
|
170
|
-
*/
|
|
171
|
-
export const useOnUnavailableAudioOutputDevices = (onDisconnect) => useOnUnavailableDevices(getAudioOutputDevices(), onDisconnect);
|
|
172
|
-
//# sourceMappingURL=useDevices.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDevices.js","sourceRoot":"","sources":["../../../../src/core/hooks/useDevices.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { useEffect } from 'react';
|
|
2
|
-
import { useCall } from '@stream-io/video-react-bindings';
|
|
3
|
-
export const useTrackElementVisibility = ({ trackedElement, dynascaleManager: propsDynascaleManager, sessionId, trackType, }) => {
|
|
4
|
-
const call = useCall();
|
|
5
|
-
const manager = propsDynascaleManager !== null && propsDynascaleManager !== void 0 ? propsDynascaleManager : call === null || call === void 0 ? void 0 : call.dynascaleManager;
|
|
6
|
-
useEffect(() => {
|
|
7
|
-
if (!trackedElement || !manager || !call || trackType === 'none')
|
|
8
|
-
return;
|
|
9
|
-
const unobserve = manager.trackElementVisibility(trackedElement, sessionId, trackType);
|
|
10
|
-
return () => {
|
|
11
|
-
unobserve();
|
|
12
|
-
};
|
|
13
|
-
}, [trackedElement, manager, call, sessionId, trackType]);
|
|
14
|
-
};
|
|
15
|
-
//# sourceMappingURL=useTrackElementVisibility.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTrackElementVisibility.js","sourceRoot":"","sources":["../../../../src/core/hooks/useTrackElementVisibility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAE1D,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAwB,EAC/D,cAAc,EACd,gBAAgB,EAAE,qBAAqB,EACvC,SAAS,EACT,SAAS,GAMV,EAAE,EAAE;IACH,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,OAAO,GAAG,qBAAqB,aAArB,qBAAqB,cAArB,qBAAqB,GAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,gBAAgB,CAAC;IAChE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,cAAc,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,IAAI,SAAS,KAAK,MAAM;YAAE,OAAO;QACzE,MAAM,SAAS,GAAG,OAAO,CAAC,sBAAsB,CAC9C,cAAc,EACd,SAAS,EACT,SAAS,CACV,CAAC;QACF,OAAO,GAAG,EAAE;YACV,SAAS,EAAE,CAAC;QACd,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC5D,CAAC,CAAC"}
|
|
@@ -1,139 +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/operators';
|
|
12
|
-
import { CallingState, getVideoStream, OwnCapability, SfuModels, VideoSettingsCameraFacingEnum, watchForAddedDefaultVideoDevice, watchForDisconnectedVideoDevice, } from '@stream-io/video-client';
|
|
13
|
-
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
14
|
-
import { useDebugPreferredVideoCodec } from '../../components/Debug/useIsDebugMode';
|
|
15
|
-
import { useHasBrowserPermissions } from './useDevices';
|
|
16
|
-
/**
|
|
17
|
-
* @internal
|
|
18
|
-
* @category Device Management
|
|
19
|
-
*/
|
|
20
|
-
export const useVideoPublisher = ({ initialVideoMuted, videoDeviceId, }) => {
|
|
21
|
-
const call = useCall();
|
|
22
|
-
const { useCallState, useCallCallingState, useLocalParticipant, useCallSettings, } = useCallStateHooks();
|
|
23
|
-
const callState = useCallState();
|
|
24
|
-
const callingState = useCallCallingState();
|
|
25
|
-
const participant = useLocalParticipant();
|
|
26
|
-
const hasBrowserPermissionVideoInput = useHasBrowserPermissions('camera');
|
|
27
|
-
const { localParticipant$ } = callState;
|
|
28
|
-
const preferredCodec = useDebugPreferredVideoCodec();
|
|
29
|
-
const isPublishingVideo = participant === null || participant === void 0 ? void 0 : participant.publishedTracks.includes(SfuModels.TrackType.VIDEO);
|
|
30
|
-
const settings = useCallSettings();
|
|
31
|
-
const videoSettings = settings === null || settings === void 0 ? void 0 : settings.video;
|
|
32
|
-
const targetResolution = videoSettings === null || videoSettings === void 0 ? void 0 : videoSettings.target_resolution;
|
|
33
|
-
const publishVideoStream = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
34
|
-
if (!call)
|
|
35
|
-
return;
|
|
36
|
-
if (!call.permissionsContext.hasPermission(OwnCapability.SEND_VIDEO)) {
|
|
37
|
-
throw new Error(`No permission to publish video`);
|
|
38
|
-
}
|
|
39
|
-
try {
|
|
40
|
-
const videoStream = yield getVideoStream({
|
|
41
|
-
deviceId: videoDeviceId,
|
|
42
|
-
width: targetResolution === null || targetResolution === void 0 ? void 0 : targetResolution.width,
|
|
43
|
-
height: targetResolution === null || targetResolution === void 0 ? void 0 : targetResolution.height,
|
|
44
|
-
facingMode: toFacingMode(videoSettings === null || videoSettings === void 0 ? void 0 : videoSettings.camera_facing),
|
|
45
|
-
});
|
|
46
|
-
yield call.publishVideoStream(videoStream, { preferredCodec });
|
|
47
|
-
}
|
|
48
|
-
catch (e) {
|
|
49
|
-
console.log('Failed to publish video stream', e);
|
|
50
|
-
}
|
|
51
|
-
}), [
|
|
52
|
-
call,
|
|
53
|
-
preferredCodec,
|
|
54
|
-
targetResolution === null || targetResolution === void 0 ? void 0 : targetResolution.height,
|
|
55
|
-
targetResolution === null || targetResolution === void 0 ? void 0 : targetResolution.width,
|
|
56
|
-
videoDeviceId,
|
|
57
|
-
videoSettings === null || videoSettings === void 0 ? void 0 : videoSettings.camera_facing,
|
|
58
|
-
]);
|
|
59
|
-
const lastVideoDeviceId = useRef(videoDeviceId);
|
|
60
|
-
useEffect(() => {
|
|
61
|
-
if (callingState === CallingState.JOINED &&
|
|
62
|
-
videoDeviceId !== lastVideoDeviceId.current) {
|
|
63
|
-
lastVideoDeviceId.current = videoDeviceId;
|
|
64
|
-
publishVideoStream().catch((e) => {
|
|
65
|
-
console.error('Failed to publish video stream', e);
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
}, [publishVideoStream, videoDeviceId, callingState]);
|
|
69
|
-
const initialPublishRun = useRef(false);
|
|
70
|
-
useEffect(() => {
|
|
71
|
-
if (callingState === CallingState.JOINED &&
|
|
72
|
-
!initialPublishRun.current &&
|
|
73
|
-
!initialVideoMuted) {
|
|
74
|
-
// automatic publishing should happen only when joining the call
|
|
75
|
-
// from the lobby, and the video is not muted
|
|
76
|
-
publishVideoStream().catch((e) => {
|
|
77
|
-
console.error('Failed to publish video stream', e);
|
|
78
|
-
});
|
|
79
|
-
initialPublishRun.current = true;
|
|
80
|
-
}
|
|
81
|
-
}, [callingState, initialVideoMuted, publishVideoStream]);
|
|
82
|
-
useEffect(() => {
|
|
83
|
-
if (!localParticipant$ || !hasBrowserPermissionVideoInput)
|
|
84
|
-
return;
|
|
85
|
-
const subscription = watchForDisconnectedVideoDevice(localParticipant$.pipe(map((p) => p === null || p === void 0 ? void 0 : p.videoDeviceId))).subscribe(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
86
|
-
if (!call)
|
|
87
|
-
return;
|
|
88
|
-
call.setVideoDevice(undefined);
|
|
89
|
-
yield call.stopPublish(SfuModels.TrackType.VIDEO);
|
|
90
|
-
}));
|
|
91
|
-
return () => {
|
|
92
|
-
subscription.unsubscribe();
|
|
93
|
-
};
|
|
94
|
-
}, [hasBrowserPermissionVideoInput, localParticipant$, call]);
|
|
95
|
-
useEffect(() => {
|
|
96
|
-
if (!(participant === null || participant === void 0 ? void 0 : participant.videoStream) || !call || !isPublishingVideo)
|
|
97
|
-
return;
|
|
98
|
-
const [track] = participant.videoStream.getVideoTracks();
|
|
99
|
-
const selectedVideoDeviceId = track.getSettings().deviceId;
|
|
100
|
-
const republishDefaultDevice = watchForAddedDefaultVideoDevice().subscribe(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
101
|
-
if (!(call &&
|
|
102
|
-
participant.videoStream &&
|
|
103
|
-
selectedVideoDeviceId === 'default'))
|
|
104
|
-
return;
|
|
105
|
-
// We need to stop the original track first in order
|
|
106
|
-
// we can retrieve the new default device stream
|
|
107
|
-
track.stop();
|
|
108
|
-
const videoStream = yield getVideoStream({
|
|
109
|
-
deviceId: 'default',
|
|
110
|
-
});
|
|
111
|
-
yield call.publishVideoStream(videoStream);
|
|
112
|
-
}));
|
|
113
|
-
const handleTrackEnded = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
114
|
-
if (selectedVideoDeviceId === videoDeviceId) {
|
|
115
|
-
const videoStream = yield getVideoStream({
|
|
116
|
-
deviceId: videoDeviceId,
|
|
117
|
-
});
|
|
118
|
-
yield call.publishVideoStream(videoStream);
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
track.addEventListener('ended', handleTrackEnded);
|
|
122
|
-
return () => {
|
|
123
|
-
track.removeEventListener('ended', handleTrackEnded);
|
|
124
|
-
republishDefaultDevice.unsubscribe();
|
|
125
|
-
};
|
|
126
|
-
}, [videoDeviceId, call, participant === null || participant === void 0 ? void 0 : participant.videoStream, isPublishingVideo]);
|
|
127
|
-
return publishVideoStream;
|
|
128
|
-
};
|
|
129
|
-
const toFacingMode = (value) => {
|
|
130
|
-
switch (value) {
|
|
131
|
-
case VideoSettingsCameraFacingEnum.FRONT:
|
|
132
|
-
return 'user';
|
|
133
|
-
case VideoSettingsCameraFacingEnum.BACK:
|
|
134
|
-
return 'environment';
|
|
135
|
-
default:
|
|
136
|
-
return undefined;
|
|
137
|
-
}
|
|
138
|
-
};
|
|
139
|
-
//# sourceMappingURL=useVideoPublisher.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useVideoPublisher.js","sourceRoot":"","sources":["../../../../src/core/hooks/useVideoPublisher.ts"],"names":[],"mappings":"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"}
|
package/dist/src/core/index.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC"}
|
package/dist/src/hooks/index.js
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
export * from './useFloatingUIPreset';
|
|
2
|
-
export * from './useScrollPosition';
|
|
3
|
-
export * from './useToggleAudioMuteState';
|
|
4
|
-
export * from './useToggleVideoMuteState';
|
|
5
|
-
export * from './useToggleScreenShare';
|
|
6
|
-
export * from './useToggleCallRecording';
|
|
7
|
-
export * from './useRequestPermission';
|
|
8
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { useEffect } from 'react';
|
|
2
|
-
import { offset, autoUpdate, size, useFloating, shift, flip, } from '@floating-ui/react';
|
|
3
|
-
export const useFloatingUIPreset = ({ placement, strategy, }) => {
|
|
4
|
-
const { refs, x, y, update, elements: { domReference, floating }, } = useFloating({
|
|
5
|
-
placement,
|
|
6
|
-
strategy,
|
|
7
|
-
middleware: [
|
|
8
|
-
offset(10),
|
|
9
|
-
shift(),
|
|
10
|
-
flip(),
|
|
11
|
-
size({
|
|
12
|
-
padding: 10,
|
|
13
|
-
apply: ({ availableHeight, elements }) => {
|
|
14
|
-
Object.assign(elements.floating.style, {
|
|
15
|
-
maxHeight: `${availableHeight}px`,
|
|
16
|
-
});
|
|
17
|
-
},
|
|
18
|
-
}),
|
|
19
|
-
],
|
|
20
|
-
});
|
|
21
|
-
// handle window resizing
|
|
22
|
-
useEffect(() => {
|
|
23
|
-
if (!domReference || !floating)
|
|
24
|
-
return;
|
|
25
|
-
const cleanup = autoUpdate(domReference, floating, update);
|
|
26
|
-
return () => cleanup();
|
|
27
|
-
}, [domReference, floating, update]);
|
|
28
|
-
return { refs, x, y, domReference, floating, strategy };
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=useFloatingUIPreset.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useFloatingUIPreset.js","sourceRoot":"","sources":["../../../src/hooks/useFloatingUIPreset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EACL,MAAM,EACN,UAAU,EACV,IAAI,EACJ,WAAW,EACX,KAAK,EACL,IAAI,GACL,MAAM,oBAAoB,CAAC;AAG5B,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAClC,SAAS,EACT,QAAQ,GACyC,EAAE,EAAE;IACrD,MAAM,EACJ,IAAI,EACJ,CAAC,EACD,CAAC,EACD,MAAM,EACN,QAAQ,EAAE,EAAE,YAAY,EAAE,QAAQ,EAAE,GACrC,GAAG,WAAW,CAAC;QACd,SAAS;QACT,QAAQ;QACR,UAAU,EAAE;YACV,MAAM,CAAC,EAAE,CAAC;YACV,KAAK,EAAE;YACP,IAAI,EAAE;YACN,IAAI,CAAC;gBACH,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,CAAC,EAAE,eAAe,EAAE,QAAQ,EAAE,EAAE,EAAE;oBACvC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE;wBACrC,SAAS,EAAE,GAAG,eAAe,IAAI;qBAClC,CAAC,CAAC;gBACL,CAAC;aACF,CAAC;SACH;KACF,CAAC,CAAC;IAEH,yBAAyB;IACzB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,YAAY,IAAI,CAAC,QAAQ;YAAE,OAAO;QAEvC,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QAE3D,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;IAErC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC;AAC1D,CAAC,CAAC"}
|
|
@@ -1,46 +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, useState } from 'react';
|
|
11
|
-
import { useCall, useHasPermissions } from '@stream-io/video-react-bindings';
|
|
12
|
-
export const useRequestPermission = (permission) => {
|
|
13
|
-
const call = useCall();
|
|
14
|
-
const hasPermission = useHasPermissions(permission);
|
|
15
|
-
const [isAwaitingPermission, setIsAwaitingPermission] = useState(false); // TODO: load with possibly pending state
|
|
16
|
-
useEffect(() => {
|
|
17
|
-
const reset = () => setIsAwaitingPermission(false);
|
|
18
|
-
if (hasPermission)
|
|
19
|
-
reset();
|
|
20
|
-
}, [hasPermission]);
|
|
21
|
-
const requestPermission = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
22
|
-
if (hasPermission)
|
|
23
|
-
return true;
|
|
24
|
-
const canRequestPermission = !!(call === null || call === void 0 ? void 0 : call.permissionsContext.canRequest(permission));
|
|
25
|
-
if (isAwaitingPermission || !canRequestPermission)
|
|
26
|
-
return false;
|
|
27
|
-
setIsAwaitingPermission(true);
|
|
28
|
-
try {
|
|
29
|
-
yield (call === null || call === void 0 ? void 0 : call.requestPermissions({
|
|
30
|
-
permissions: [permission],
|
|
31
|
-
}));
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
setIsAwaitingPermission(false);
|
|
35
|
-
throw new Error(`requestPermission failed: ${error}`);
|
|
36
|
-
}
|
|
37
|
-
return false;
|
|
38
|
-
}), [call, hasPermission, isAwaitingPermission, permission]);
|
|
39
|
-
return {
|
|
40
|
-
requestPermission,
|
|
41
|
-
hasPermission,
|
|
42
|
-
canRequestPermission: !!(call === null || call === void 0 ? void 0 : call.permissionsContext.canRequest(permission)),
|
|
43
|
-
isAwaitingPermission,
|
|
44
|
-
};
|
|
45
|
-
};
|
|
46
|
-
//# sourceMappingURL=useRequestPermission.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useRequestPermission.js","sourceRoot":"","sources":["../../../src/hooks/useRequestPermission.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,UAAyB,EAAE,EAAE;IAChE,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,aAAa,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,yCAAyC;IAElH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;QAEnD,IAAI,aAAa;YAAE,KAAK,EAAE,CAAC;IAC7B,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAS,EAAE;QAC/C,IAAI,aAAa;YAAE,OAAO,IAAI,CAAC;QAE/B,MAAM,oBAAoB,GACxB,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA,CAAC;QACpD,IAAI,oBAAoB,IAAI,CAAC,oBAAoB;YAAE,OAAO,KAAK,CAAC;QAEhE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAE9B,IAAI;YACF,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,kBAAkB,CAAC;gBAC7B,WAAW,EAAE,CAAC,UAAU,CAAC;aAC1B,CAAC,CAAA,CAAC;SACJ;QAAC,OAAO,KAAK,EAAE;YACd,uBAAuB,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;SACvD;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAA,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC,CAAC;IAE5D,OAAO;QACL,iBAAiB;QACjB,aAAa;QACb,oBAAoB,EAAE,CAAC,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,kBAAkB,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;QACvE,oBAAoB;KACrB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from 'react';
|
|
2
|
-
const SCROLL_THRESHOLD = 10;
|
|
3
|
-
/**
|
|
4
|
-
* Hook which observes element's scroll position and returns text value based on the
|
|
5
|
-
* position of the scrollbar (`top`, `bottom`, `between` and `null` if no scrollbar is available)
|
|
6
|
-
*/
|
|
7
|
-
export const useVerticalScrollPosition = (scrollElement, threshold = SCROLL_THRESHOLD) => {
|
|
8
|
-
const [scrollPosition, setScrollPosition] = useState(null);
|
|
9
|
-
useEffect(() => {
|
|
10
|
-
if (!scrollElement)
|
|
11
|
-
return;
|
|
12
|
-
const scrollHandler = () => {
|
|
13
|
-
const element = scrollElement;
|
|
14
|
-
const hasVerticalScrollbar = element.scrollHeight > element.clientHeight;
|
|
15
|
-
if (!hasVerticalScrollbar)
|
|
16
|
-
return setScrollPosition(null);
|
|
17
|
-
const isAtTheTop = element.scrollTop <= threshold;
|
|
18
|
-
if (isAtTheTop)
|
|
19
|
-
return setScrollPosition('top');
|
|
20
|
-
const isAtTheBottom = Math.abs(element.scrollHeight - element.scrollTop - element.clientHeight) <= threshold;
|
|
21
|
-
if (isAtTheBottom)
|
|
22
|
-
return setScrollPosition('bottom');
|
|
23
|
-
setScrollPosition('between');
|
|
24
|
-
};
|
|
25
|
-
const resizeObserver = new ResizeObserver(scrollHandler);
|
|
26
|
-
resizeObserver.observe(scrollElement);
|
|
27
|
-
scrollElement.addEventListener('scroll', scrollHandler);
|
|
28
|
-
return () => {
|
|
29
|
-
scrollElement.removeEventListener('scroll', scrollHandler);
|
|
30
|
-
resizeObserver.disconnect();
|
|
31
|
-
};
|
|
32
|
-
}, [scrollElement, threshold]);
|
|
33
|
-
return scrollPosition;
|
|
34
|
-
};
|
|
35
|
-
export const useHorizontalScrollPosition = (scrollElement, threshold = SCROLL_THRESHOLD) => {
|
|
36
|
-
const [scrollPosition, setScrollPosition] = useState(null);
|
|
37
|
-
useEffect(() => {
|
|
38
|
-
if (!scrollElement)
|
|
39
|
-
return;
|
|
40
|
-
const scrollHandler = () => {
|
|
41
|
-
const element = scrollElement;
|
|
42
|
-
const hasHorizontalScrollbar = element.scrollWidth > element.clientWidth;
|
|
43
|
-
if (!hasHorizontalScrollbar)
|
|
44
|
-
return setScrollPosition(null);
|
|
45
|
-
const isAtTheStart = element.scrollLeft <= threshold;
|
|
46
|
-
if (isAtTheStart)
|
|
47
|
-
return setScrollPosition('start');
|
|
48
|
-
const isAtTheEnd = Math.abs(element.scrollWidth - element.scrollLeft - element.clientWidth) <= threshold;
|
|
49
|
-
if (isAtTheEnd)
|
|
50
|
-
return setScrollPosition('end');
|
|
51
|
-
setScrollPosition('between');
|
|
52
|
-
};
|
|
53
|
-
const resizeObserver = new ResizeObserver(scrollHandler);
|
|
54
|
-
resizeObserver.observe(scrollElement);
|
|
55
|
-
scrollElement.addEventListener('scroll', scrollHandler);
|
|
56
|
-
return () => {
|
|
57
|
-
scrollElement.removeEventListener('scroll', scrollHandler);
|
|
58
|
-
resizeObserver.disconnect();
|
|
59
|
-
};
|
|
60
|
-
}, [scrollElement, threshold]);
|
|
61
|
-
return scrollPosition;
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=useScrollPosition.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useScrollPosition.js","sourceRoot":"","sources":["../../../src/hooks/useScrollPosition.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,34 +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, useRef } from 'react';
|
|
11
|
-
import { useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
12
|
-
import { OwnCapability, SfuModels } from '@stream-io/video-client';
|
|
13
|
-
import { useMediaDevices } from '../core';
|
|
14
|
-
import { useRequestPermission } from './useRequestPermission';
|
|
15
|
-
export const useToggleAudioMuteState = () => {
|
|
16
|
-
const { publishAudioStream, stopPublishingAudio } = useMediaDevices();
|
|
17
|
-
const { useLocalParticipant } = useCallStateHooks();
|
|
18
|
-
const localParticipant = useLocalParticipant();
|
|
19
|
-
const { isAwaitingPermission, requestPermission } = useRequestPermission(OwnCapability.SEND_AUDIO);
|
|
20
|
-
// to keep the toggle function as stable as possible
|
|
21
|
-
const isAudioMutedReference = useRef(false);
|
|
22
|
-
isAudioMutedReference.current = !(localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.publishedTracks.includes(SfuModels.TrackType.AUDIO));
|
|
23
|
-
const toggleAudioMuteState = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
24
|
-
if (isAudioMutedReference.current) {
|
|
25
|
-
const canPublish = yield requestPermission();
|
|
26
|
-
if (canPublish)
|
|
27
|
-
return publishAudioStream();
|
|
28
|
-
}
|
|
29
|
-
if (!isAudioMutedReference.current)
|
|
30
|
-
yield stopPublishingAudio();
|
|
31
|
-
}), [publishAudioStream, requestPermission, stopPublishingAudio]);
|
|
32
|
-
return { toggleAudioMuteState, isAwaitingPermission };
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=useToggleAudioMuteState.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useToggleAudioMuteState.js","sourceRoot":"","sources":["../../../src/hooks/useToggleAudioMuteState.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEnE,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,CAAC,MAAM,uBAAuB,GAAG,GAAG,EAAE;IAC1C,MAAM,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,GAAG,eAAe,EAAE,CAAC;IACtE,MAAM,EAAE,mBAAmB,EAAE,GAAG,iBAAiB,EAAE,CAAC;IACpD,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAE/C,MAAM,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,GAAG,oBAAoB,CACtE,aAAa,CAAC,UAAU,CACzB,CAAC;IAEF,oDAAoD;IACpD,MAAM,qBAAqB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5C,qBAAqB,CAAC,OAAO,GAAG,CAAC,CAAA,gBAAgB,aAAhB,gBAAgB,uBAAhB,gBAAgB,CAAE,eAAe,CAAC,QAAQ,CACzE,SAAS,CAAC,SAAS,CAAC,KAAK,CAC1B,CAAA,CAAC;IAEF,MAAM,oBAAoB,GAAG,WAAW,CAAC,GAAS,EAAE;QAClD,IAAI,qBAAqB,CAAC,OAAO,EAAE;YACjC,MAAM,UAAU,GAAG,MAAM,iBAAiB,EAAE,CAAC;YAC7C,IAAI,UAAU;gBAAE,OAAO,kBAAkB,EAAE,CAAC;SAC7C;QAED,IAAI,CAAC,qBAAqB,CAAC,OAAO;YAAE,MAAM,mBAAmB,EAAE,CAAC;IAClE,CAAC,CAAA,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAEjE,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;AACxD,CAAC,CAAC"}
|
|
@@ -1,44 +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, useState } from 'react';
|
|
11
|
-
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
12
|
-
export const useToggleCallRecording = () => {
|
|
13
|
-
const call = useCall();
|
|
14
|
-
const { useIsCallRecordingInProgress } = useCallStateHooks();
|
|
15
|
-
const isCallRecordingInProgress = useIsCallRecordingInProgress();
|
|
16
|
-
const [isAwaitingResponse, setIsAwaitingResponse] = useState(false);
|
|
17
|
-
// TODO: add permissions
|
|
18
|
-
useEffect(() => {
|
|
19
|
-
// we wait until call.recording_started/stopped event to flips the
|
|
20
|
-
// `isCallRecordingInProgress` state variable.
|
|
21
|
-
// Once the flip happens, we remove the loading indicator
|
|
22
|
-
setIsAwaitingResponse((isAwaiting) => {
|
|
23
|
-
if (isAwaiting)
|
|
24
|
-
return false;
|
|
25
|
-
return isAwaiting;
|
|
26
|
-
});
|
|
27
|
-
}, [isCallRecordingInProgress]);
|
|
28
|
-
const toggleCallRecording = useCallback(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
-
try {
|
|
30
|
-
setIsAwaitingResponse(true);
|
|
31
|
-
if (isCallRecordingInProgress) {
|
|
32
|
-
yield (call === null || call === void 0 ? void 0 : call.stopRecording());
|
|
33
|
-
}
|
|
34
|
-
else {
|
|
35
|
-
yield (call === null || call === void 0 ? void 0 : call.startRecording());
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
catch (e) {
|
|
39
|
-
console.error(`Failed start recording`, e);
|
|
40
|
-
}
|
|
41
|
-
}), [call, isCallRecordingInProgress]);
|
|
42
|
-
return { toggleCallRecording, isAwaitingResponse, isCallRecordingInProgress };
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=useToggleCallRecording.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useToggleCallRecording.js","sourceRoot":"","sources":["../../../src/hooks/useToggleCallRecording.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAE7E,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,EAAE;IACzC,MAAM,IAAI,GAAG,OAAO,EAAE,CAAC;IACvB,MAAM,EAAE,4BAA4B,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAC7D,MAAM,yBAAyB,GAAG,4BAA4B,EAAE,CAAC;IACjE,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpE,wBAAwB;IAExB,SAAS,CAAC,GAAG,EAAE;QACb,kEAAkE;QAClE,8CAA8C;QAC9C,yDAAyD;QACzD,qBAAqB,CAAC,CAAC,UAAU,EAAE,EAAE;YACnC,IAAI,UAAU;gBAAE,OAAO,KAAK,CAAC;YAC7B,OAAO,UAAU,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;IAEhC,MAAM,mBAAmB,GAAG,WAAW,CAAC,GAAS,EAAE;QACjD,IAAI;YACF,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,yBAAyB,EAAE;gBAC7B,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,EAAE,CAAA,CAAC;aAC7B;iBAAM;gBACL,MAAM,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,cAAc,EAAE,CAAA,CAAC;aAC9B;SACF;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,CAAC,KAAK,CAAC,wBAAwB,EAAE,CAAC,CAAC,CAAC;SAC5C;IACH,CAAC,CAAA,EAAE,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC,CAAC;IAEtC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,CAAC;AAChF,CAAC,CAAC"}
|