@stream-io/video-react-sdk 1.32.3 → 1.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/css/embedded.css +3630 -0
- package/dist/css/embedded.css.map +1 -0
- package/dist/css/styles.css +13 -2
- package/dist/css/styles.css.map +1 -1
- package/dist/embedded-BackgroundFilters-RdXfNf6_.es.js +353 -0
- package/dist/embedded-BackgroundFilters-RdXfNf6_.es.js.map +1 -0
- package/dist/embedded-BackgroundFilters-Zu84SkRR.cjs.js +355 -0
- package/dist/embedded-BackgroundFilters-Zu84SkRR.cjs.js.map +1 -0
- package/dist/embedded-CallStatsLatencyChart-Bj5OSYzg.es.js +57 -0
- package/dist/embedded-CallStatsLatencyChart-Bj5OSYzg.es.js.map +1 -0
- package/dist/embedded-CallStatsLatencyChart-CpL1M_s0.cjs.js +59 -0
- package/dist/embedded-CallStatsLatencyChart-CpL1M_s0.cjs.js.map +1 -0
- package/dist/embedded.cjs.js +3410 -0
- package/dist/embedded.cjs.js.map +1 -0
- package/dist/embedded.d.ts +1 -0
- package/dist/embedded.es.js +3407 -0
- package/dist/embedded.es.js.map +1 -0
- package/dist/index.cjs.js +67 -202
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.es.js +69 -204
- package/dist/index.es.js.map +1 -1
- package/dist/src/embedded/EmbeddedClientProvider.d.ts +21 -0
- package/dist/src/embedded/call/CallControls.d.ts +9 -0
- package/dist/src/embedded/call/CallHeader.d.ts +4 -0
- package/dist/src/embedded/call/CallLayout.d.ts +4 -0
- package/dist/src/embedded/call/CallStateRouter.d.ts +4 -0
- package/dist/src/embedded/call/EmbeddedCall.d.ts +6 -0
- package/dist/src/embedded/call/index.d.ts +1 -0
- package/dist/src/embedded/context/ConfigurationContext.d.ts +11 -0
- package/dist/src/embedded/context/index.d.ts +1 -0
- package/dist/src/embedded/hooks/index.d.ts +8 -0
- package/dist/src/embedded/hooks/useCallDuration.d.ts +7 -0
- package/dist/src/embedded/hooks/useEmbeddedClient.d.ts +22 -0
- package/dist/src/embedded/hooks/useInitializeCall.d.ts +11 -0
- package/dist/src/embedded/hooks/useInitializeVideoClient.d.ts +16 -0
- package/dist/src/embedded/hooks/useIsLivestreamPaused.d.ts +8 -0
- package/dist/src/embedded/hooks/useLayout.d.ts +9 -0
- package/dist/src/embedded/hooks/useNoiseCancellationLoader.d.ts +12 -0
- package/dist/src/embedded/hooks/useWakeLock.d.ts +5 -0
- package/dist/src/embedded/index.d.ts +3 -0
- package/dist/src/embedded/livestream/EmbeddedLivestream.d.ts +5 -0
- package/dist/src/embedded/livestream/LivestreamUI.d.ts +1 -0
- package/dist/src/embedded/livestream/host/HostLayout.d.ts +7 -0
- package/dist/src/embedded/livestream/host/HostStateRouter.d.ts +1 -0
- package/dist/src/embedded/livestream/index.d.ts +1 -0
- package/dist/src/embedded/livestream/viewer/ViewerLayout.d.ts +1 -0
- package/dist/src/embedded/livestream/viewer/ViewerLobby.d.ts +4 -0
- package/dist/src/embedded/livestream/viewer/ViewerStateRouter.d.ts +1 -0
- package/dist/src/embedded/shared/BlurToggleButton/BlurToggleButton.d.ts +2 -0
- package/dist/src/embedded/shared/CallFeedback/CallEndedScreen.d.ts +6 -0
- package/dist/src/embedded/shared/CallFeedback/CallFeedback.d.ts +4 -0
- package/dist/src/embedded/shared/CallFeedback/RatingScreen.d.ts +5 -0
- package/dist/src/embedded/shared/CallFeedback/StarRating.d.ts +6 -0
- package/dist/src/embedded/shared/CallFeedback/ThankYouScreen.d.ts +1 -0
- package/dist/src/embedded/shared/ConnectionNotification/ConnectionNotification.d.ts +1 -0
- package/dist/src/embedded/shared/EmbeddedParticipantViewUI/EmbeddedParticipantViewUI.d.ts +1 -0
- package/dist/src/embedded/shared/JoinError/JoinError.d.ts +5 -0
- package/dist/src/embedded/shared/Lobby/DeviceControls.d.ts +5 -0
- package/dist/src/embedded/shared/Lobby/DisabledDeviceButton.d.ts +6 -0
- package/dist/src/embedded/shared/Lobby/Lobby.d.ts +10 -0
- package/dist/src/embedded/shared/Lobby/ToggleCameraButton.d.ts +1 -0
- package/dist/src/embedded/shared/Lobby/ToggleMicButton.d.ts +1 -0
- package/dist/src/embedded/shared/Lobby/VideoPreviewFallbacks.d.ts +2 -0
- package/dist/src/embedded/shared/ViewersCount/ViewersCount.d.ts +5 -0
- package/dist/src/embedded/shared/index.d.ts +7 -0
- package/dist/src/embedded/types.d.ts +65 -0
- package/dist/src/hooks/usePersistedDevicePreferences.d.ts +3 -12
- package/dist/src/translations/index.d.ts +42 -1
- package/embedded.ts +1 -0
- package/package.json +18 -4
- package/src/core/components/CallLayout/LivestreamLayout.tsx +53 -41
- package/src/embedded/EmbeddedClientProvider.tsx +125 -0
- package/src/embedded/call/CallControls.tsx +124 -0
- package/src/embedded/call/CallHeader.tsx +30 -0
- package/src/embedded/call/CallLayout.tsx +66 -0
- package/src/embedded/call/CallStateRouter.tsx +56 -0
- package/src/embedded/call/EmbeddedCall.tsx +14 -0
- package/src/embedded/call/index.ts +1 -0
- package/src/embedded/context/ConfigurationContext.tsx +36 -0
- package/src/embedded/context/index.ts +1 -0
- package/src/embedded/hooks/index.ts +8 -0
- package/src/embedded/hooks/useCallDuration.ts +40 -0
- package/src/embedded/hooks/useEmbeddedClient.ts +64 -0
- package/src/embedded/hooks/useInitializeCall.ts +51 -0
- package/src/embedded/hooks/useInitializeVideoClient.ts +118 -0
- package/src/embedded/hooks/useIsLivestreamPaused.ts +44 -0
- package/src/embedded/hooks/useLayout.ts +100 -0
- package/src/embedded/hooks/useNoiseCancellationLoader.ts +62 -0
- package/src/embedded/hooks/useWakeLock.ts +33 -0
- package/src/embedded/index.ts +12 -0
- package/src/embedded/livestream/EmbeddedLivestream.tsx +16 -0
- package/src/embedded/livestream/LivestreamUI.tsx +17 -0
- package/src/embedded/livestream/host/HostLayout.tsx +210 -0
- package/src/embedded/livestream/host/HostStateRouter.tsx +100 -0
- package/src/embedded/livestream/index.ts +1 -0
- package/src/embedded/livestream/viewer/ViewerLayout.tsx +160 -0
- package/src/embedded/livestream/viewer/ViewerLobby.tsx +135 -0
- package/src/embedded/livestream/viewer/ViewerStateRouter.tsx +82 -0
- package/src/embedded/shared/BlurToggleButton/BlurToggleButton.tsx +75 -0
- package/src/embedded/shared/CallFeedback/CallEndedScreen.tsx +55 -0
- package/src/embedded/shared/CallFeedback/CallFeedback.tsx +51 -0
- package/src/embedded/shared/CallFeedback/RatingScreen.tsx +47 -0
- package/src/embedded/shared/CallFeedback/StarRating.tsx +46 -0
- package/src/embedded/shared/CallFeedback/ThankYouScreen.tsx +19 -0
- package/src/embedded/shared/ConnectionNotification/ConnectionNotification.tsx +59 -0
- package/src/embedded/shared/EmbeddedParticipantViewUI/EmbeddedParticipantViewUI.tsx +32 -0
- package/src/embedded/shared/JoinError/JoinError.tsx +27 -0
- package/src/embedded/shared/Lobby/DeviceControls.tsx +54 -0
- package/src/embedded/shared/Lobby/DisabledDeviceButton.tsx +21 -0
- package/src/embedded/shared/Lobby/Lobby.tsx +59 -0
- package/src/embedded/shared/Lobby/ToggleCameraButton.tsx +44 -0
- package/src/embedded/shared/Lobby/ToggleMicButton.tsx +48 -0
- package/src/embedded/shared/Lobby/VideoPreviewFallbacks.tsx +55 -0
- package/src/embedded/shared/ViewersCount/ViewersCount.tsx +18 -0
- package/src/embedded/shared/index.ts +7 -0
- package/src/embedded/types.ts +80 -0
- package/src/hooks/usePersistedDevicePreferences.ts +8 -307
- package/src/translations/en.json +44 -2
package/dist/index.es.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { hasAudio, hasScreenShareAudio,
|
|
1
|
+
import { hasAudio, hasScreenShareAudio, hasVideo, hasScreenShare, OwnCapability, Browsers, VisibilityState, hasPausedTrack, createSoundDetector, SfuModels, isPinned, name, NoiseCancellationSettingsModeEnum, CallingState, paginatedLayoutSortPreset, combineComparators, screenSharing, speakerLayoutSortPreset, CallTypes, defaultSortPreset, humanize, setSdkInfo } from '@stream-io/video-client';
|
|
2
2
|
export * from '@stream-io/video-client';
|
|
3
3
|
import { useCall, useCallStateHooks, useI18n, Restricted, useToggleCallRecording, useConnectedUser, StreamCallProvider, StreamVideoProvider, useStreamVideoClient, useEffectEvent } from '@stream-io/video-react-bindings';
|
|
4
4
|
export * from '@stream-io/video-react-bindings';
|
|
5
5
|
import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
|
|
6
|
-
import { useState, useEffect, Fragment as Fragment$1, createContext, useContext,
|
|
6
|
+
import { useState, useEffect, Fragment as Fragment$1, createContext, useContext, useCallback, useMemo, useRef, isValidElement, forwardRef, useLayoutEffect, lazy, Suspense } from 'react';
|
|
7
7
|
import { useFloating, offset, shift, flip, size, autoUpdate, FloatingOverlay, FloatingPortal, arrow, FloatingArrow, useListItem, useListNavigation, useTypeahead, useClick, useDismiss, useRole, useInteractions, FloatingFocusManager, FloatingList, useHover } from '@floating-ui/react';
|
|
8
8
|
import clsx from 'clsx';
|
|
9
9
|
|
|
@@ -71,202 +71,17 @@ const useFloatingUIPreset = ({ middleware = [], placement, strategy, offset: off
|
|
|
71
71
|
return { refs, x, y, domReference, floating, strategy, context };
|
|
72
72
|
};
|
|
73
73
|
|
|
74
|
-
const defaultDevice = 'default';
|
|
75
74
|
/**
|
|
76
|
-
* This hook
|
|
75
|
+
* This hook is a no-op. Device preference persistence is now handled
|
|
76
|
+
* by the low-level client SDK.
|
|
77
77
|
*
|
|
78
|
-
* @
|
|
78
|
+
* @deprecated use the devicePreferences API of the StreamVideoClient.
|
|
79
79
|
*/
|
|
80
|
-
const usePersistedDevicePreferences = (key = '
|
|
81
|
-
const { useCallSettings, useCallCallingState, useMicrophoneState, useCameraState, useSpeakerState, } = useCallStateHooks();
|
|
82
|
-
const settings = useCallSettings();
|
|
83
|
-
const callingState = useCallCallingState();
|
|
84
|
-
const microphoneState = useMicrophoneState();
|
|
85
|
-
const cameraState = useCameraState();
|
|
86
|
-
const speakerState = useSpeakerState();
|
|
87
|
-
const [applyingState, setApplyingState] = useState('idle');
|
|
88
|
-
const call = useCall();
|
|
89
|
-
// Set deferServerDefaults flag synchronously during render.
|
|
90
|
-
// Please ensure the flag is set BEFORE any call.get() or call.getOrCreate()
|
|
91
|
-
// is called, preventing server defaults from overriding user preferences.
|
|
92
|
-
const deferredCallRef = useRef(null);
|
|
93
|
-
if (call && deferredCallRef.current !== call) {
|
|
94
|
-
call.camera.deferServerDefaults = true;
|
|
95
|
-
call.microphone.deferServerDefaults = true;
|
|
96
|
-
deferredCallRef.current = call;
|
|
97
|
-
}
|
|
98
|
-
// Cleanup: reset the flag when the component unmounts or call changes.
|
|
99
|
-
// This allows server defaults to apply if the hook is no longer used.
|
|
80
|
+
const usePersistedDevicePreferences = (key = '') => {
|
|
100
81
|
useEffect(() => {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
if (currentCall) {
|
|
104
|
-
currentCall.camera.deferServerDefaults = false;
|
|
105
|
-
currentCall.microphone.deferServerDefaults = false;
|
|
106
|
-
deferredCallRef.current = null;
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
}, [call]);
|
|
110
|
-
// when the camera is disabled on call type level, we should discard
|
|
111
|
-
// any stored camera preferences.
|
|
112
|
-
const cameraDevices = settings?.video?.enabled ? cameraState.devices : false;
|
|
113
|
-
useEffect(function apply() {
|
|
114
|
-
if (callingState === CallingState.LEFT ||
|
|
115
|
-
microphoneState.devices.length === 0 ||
|
|
116
|
-
(Array.isArray(cameraDevices) && cameraDevices.length === 0) ||
|
|
117
|
-
speakerState.devices.length === 0 ||
|
|
118
|
-
!settings ||
|
|
119
|
-
applyingState !== 'idle') {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
setApplyingState('applying');
|
|
123
|
-
(async () => {
|
|
124
|
-
const { audio, video } = settings;
|
|
125
|
-
for (const [deviceKey, state, defaultMuted, enabledInCallType] of [
|
|
126
|
-
['microphone', microphoneState, !audio.mic_default_on, true],
|
|
127
|
-
['camera', cameraState, !video.camera_default_on, video.enabled],
|
|
128
|
-
['speaker', speakerState, false, true],
|
|
129
|
-
]) {
|
|
130
|
-
const preferences = parseLocalDevicePreferences(key);
|
|
131
|
-
const preference = preferences[deviceKey];
|
|
132
|
-
const manager = state[deviceKey];
|
|
133
|
-
const applyPromise = preference
|
|
134
|
-
? applyLocalDevicePreference(manager, [preference].flat(), deviceKey === 'camera' ? cameraDevices || [] : state.devices, enabledInCallType)
|
|
135
|
-
: applyMutedState(manager, defaultMuted, enabledInCallType);
|
|
136
|
-
await applyPromise.catch((err) => {
|
|
137
|
-
console.warn(`Failed to apply ${deviceKey} device preferences`, err);
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
})().finally(() => setApplyingState((state) => (state === 'applying' ? 'applied' : state)));
|
|
141
|
-
}, [
|
|
142
|
-
applyingState,
|
|
143
|
-
callingState,
|
|
144
|
-
cameraState,
|
|
145
|
-
cameraDevices,
|
|
146
|
-
key,
|
|
147
|
-
microphoneState,
|
|
148
|
-
microphoneState.devices,
|
|
149
|
-
settings,
|
|
150
|
-
speakerState,
|
|
151
|
-
speakerState.devices,
|
|
152
|
-
]);
|
|
153
|
-
useEffect(function persist() {
|
|
154
|
-
if (callingState === CallingState.LEFT || applyingState !== 'applied') {
|
|
155
|
-
return;
|
|
156
|
-
}
|
|
157
|
-
for (const [deviceKey, devices, selectedDevice, isMute] of [
|
|
158
|
-
[
|
|
159
|
-
'camera',
|
|
160
|
-
cameraDevices || [],
|
|
161
|
-
cameraState.selectedDevice,
|
|
162
|
-
cameraState.isMute,
|
|
163
|
-
],
|
|
164
|
-
[
|
|
165
|
-
'microphone',
|
|
166
|
-
microphoneState.devices,
|
|
167
|
-
microphoneState.selectedDevice,
|
|
168
|
-
microphoneState.isMute,
|
|
169
|
-
],
|
|
170
|
-
[
|
|
171
|
-
'speaker',
|
|
172
|
-
speakerState.devices,
|
|
173
|
-
speakerState.selectedDevice,
|
|
174
|
-
speakerState.isMute,
|
|
175
|
-
],
|
|
176
|
-
]) {
|
|
177
|
-
try {
|
|
178
|
-
patchLocalDevicePreference(key, deviceKey, {
|
|
179
|
-
devices,
|
|
180
|
-
selectedDevice,
|
|
181
|
-
isMute,
|
|
182
|
-
});
|
|
183
|
-
}
|
|
184
|
-
catch (err) {
|
|
185
|
-
console.warn(`Failed to save ${deviceKey} device preferences`, err);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
}, [
|
|
189
|
-
applyingState,
|
|
190
|
-
callingState,
|
|
191
|
-
cameraDevices,
|
|
192
|
-
cameraState.isMute,
|
|
193
|
-
cameraState.selectedDevice,
|
|
194
|
-
key,
|
|
195
|
-
microphoneState.devices,
|
|
196
|
-
microphoneState.isMute,
|
|
197
|
-
microphoneState.selectedDevice,
|
|
198
|
-
speakerState.devices,
|
|
199
|
-
speakerState.isMute,
|
|
200
|
-
speakerState.selectedDevice,
|
|
201
|
-
]);
|
|
202
|
-
};
|
|
203
|
-
const parseLocalDevicePreferences = (key) => {
|
|
204
|
-
const preferencesStr = window.localStorage.getItem(key);
|
|
205
|
-
let preferences = {};
|
|
206
|
-
if (preferencesStr) {
|
|
207
|
-
try {
|
|
208
|
-
preferences = JSON.parse(preferencesStr);
|
|
209
|
-
if (Object.hasOwn(preferences, 'mic')) {
|
|
210
|
-
// for backwards compatibility
|
|
211
|
-
preferences.microphone = preferences.mic;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
catch {
|
|
215
|
-
/* assume preferences are empty */
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
return preferences;
|
|
219
|
-
};
|
|
220
|
-
const patchLocalDevicePreference = (key, deviceKey, state) => {
|
|
221
|
-
const preferences = parseLocalDevicePreferences(key);
|
|
222
|
-
const nextPreference = getSelectedDevicePreference(state.devices, state.selectedDevice);
|
|
223
|
-
const preferenceHistory = [preferences[deviceKey] ?? []]
|
|
224
|
-
.flat()
|
|
225
|
-
.filter((p) => p.selectedDeviceId !== nextPreference.selectedDeviceId &&
|
|
226
|
-
(p.selectedDeviceLabel === '' ||
|
|
227
|
-
p.selectedDeviceLabel !== nextPreference.selectedDeviceLabel));
|
|
228
|
-
window.localStorage.setItem(key, JSON.stringify({
|
|
229
|
-
...preferences,
|
|
230
|
-
mic: undefined, // for backwards compatibility
|
|
231
|
-
[deviceKey]: [
|
|
232
|
-
{
|
|
233
|
-
...nextPreference,
|
|
234
|
-
muted: state.isMute,
|
|
235
|
-
},
|
|
236
|
-
...preferenceHistory,
|
|
237
|
-
].slice(0, 3),
|
|
238
|
-
}));
|
|
239
|
-
};
|
|
240
|
-
const applyLocalDevicePreference = async (manager, preference, devices, enabledInCallType) => {
|
|
241
|
-
let muted;
|
|
242
|
-
for (const p of preference) {
|
|
243
|
-
muted ?? (muted = p.muted);
|
|
244
|
-
if (p.selectedDeviceId === defaultDevice) {
|
|
245
|
-
break;
|
|
246
|
-
}
|
|
247
|
-
const device = devices.find((d) => d.deviceId === p.selectedDeviceId) ??
|
|
248
|
-
devices.find((d) => d.label === p.selectedDeviceLabel);
|
|
249
|
-
if (device) {
|
|
250
|
-
if (!manager.state.selectedDevice) {
|
|
251
|
-
await manager.select(device.deviceId);
|
|
252
|
-
}
|
|
253
|
-
muted = p.muted;
|
|
254
|
-
break;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
if (typeof muted === 'boolean') {
|
|
258
|
-
await applyMutedState(manager, muted, enabledInCallType);
|
|
259
|
-
}
|
|
260
|
-
};
|
|
261
|
-
const applyMutedState = async (manager, muted, enabledInCallType) => {
|
|
262
|
-
if (enabledInCallType && !manager.state.status) {
|
|
263
|
-
await manager[muted ? 'disable' : 'enable']?.();
|
|
264
|
-
}
|
|
82
|
+
console.warn(`usePersistedDevicePreferences is deprecated. Please use the devicePreferences API of the StreamVideoClient instead.`);
|
|
83
|
+
}, [key]);
|
|
265
84
|
};
|
|
266
|
-
const getSelectedDevicePreference = (devices, selectedDevice) => ({
|
|
267
|
-
selectedDeviceId: selectedDevice || defaultDevice,
|
|
268
|
-
selectedDeviceLabel: devices?.find((d) => d.deviceId === selectedDevice)?.label ?? '',
|
|
269
|
-
});
|
|
270
85
|
|
|
271
86
|
const SCROLL_THRESHOLD = 10;
|
|
272
87
|
/**
|
|
@@ -1532,7 +1347,7 @@ const SpeakerTest = (props) => {
|
|
|
1532
1347
|
const audioElementRef = useRef(null);
|
|
1533
1348
|
const [isPlaying, setIsPlaying] = useState(false);
|
|
1534
1349
|
const { t } = useI18n();
|
|
1535
|
-
const { audioUrl = `https://unpkg.com/${"@stream-io/video-react-sdk"}@${"1.
|
|
1350
|
+
const { audioUrl = `https://unpkg.com/${"@stream-io/video-react-sdk"}@${"1.33.0"}/assets/piano.mp3`, } = props;
|
|
1536
1351
|
// Update audio output device when selection changes
|
|
1537
1352
|
useEffect(() => {
|
|
1538
1353
|
const audio = audioElementRef.current;
|
|
@@ -2556,6 +2371,9 @@ var Enter = "Enter";
|
|
|
2556
2371
|
var Leave = "Leave";
|
|
2557
2372
|
var Participants = "Participants";
|
|
2558
2373
|
var Anonymous = ", and ({{ count }}) anonymous";
|
|
2374
|
+
var Speaker = "Speaker";
|
|
2375
|
+
var Microphone = "Microphone";
|
|
2376
|
+
var Backstage = "Backstage";
|
|
2559
2377
|
var en = {
|
|
2560
2378
|
Joining: Joining,
|
|
2561
2379
|
Mic: Mic,
|
|
@@ -2572,7 +2390,7 @@ var en = {
|
|
|
2572
2390
|
"Background filters performance is degraded. Consider disabling filters for better performance.": "Background filters performance is degraded. Consider disabling filters for better performance.",
|
|
2573
2391
|
Live: Live,
|
|
2574
2392
|
"Livestream starts soon": "Livestream starts soon",
|
|
2575
|
-
"Livestream starts at {{
|
|
2393
|
+
"Livestream starts at {{ time }}": "Livestream starts at {{ time }}",
|
|
2576
2394
|
"{{ count }} participants joined early_one": "{{ count }} participant joined early",
|
|
2577
2395
|
"{{ count }} participants joined early_other": "{{ count }} participants joined early",
|
|
2578
2396
|
"You can now speak.": "You can now speak.",
|
|
@@ -2651,7 +2469,48 @@ var en = {
|
|
|
2651
2469
|
"{{ userName }} is requesting to speak": "{{ userName }} is requesting to speak",
|
|
2652
2470
|
"{{ userName }} is requesting to share their camera": "{{ userName }} is requesting to share their camera",
|
|
2653
2471
|
"{{ userName }} is requesting to present their screen": "{{ userName }} is requesting to present their screen",
|
|
2654
|
-
"{{ userName }} is requesting permission: {{ permission }}": "{{ userName }} is requesting permission: {{ permission }}"
|
|
2472
|
+
"{{ userName }} is requesting permission: {{ permission }}": "{{ userName }} is requesting permission: {{ permission }}",
|
|
2473
|
+
"Applying...": "Applying...",
|
|
2474
|
+
"Disable blur": "Disable blur",
|
|
2475
|
+
"Blur background": "Blur background",
|
|
2476
|
+
"Migrating...": "Migrating...",
|
|
2477
|
+
"Reconnecting...": "Reconnecting...",
|
|
2478
|
+
"You are offline. Check your internet connection.": "You are offline. Check your internet connection.",
|
|
2479
|
+
"Failed to restore connection. Please try again.": "Failed to restore connection. Please try again.",
|
|
2480
|
+
"Failed to join. Please try again.": "Failed to join. Please try again.",
|
|
2481
|
+
"Set up your call before joining": "Set up your call before joining",
|
|
2482
|
+
"Please grant your browser permission to access your camera and microphone.": "Please grant your browser permission to access your camera and microphone.",
|
|
2483
|
+
"Start call": "Start call",
|
|
2484
|
+
Speaker: Speaker,
|
|
2485
|
+
Microphone: Microphone,
|
|
2486
|
+
Backstage: Backstage,
|
|
2487
|
+
"Go Live": "Go Live",
|
|
2488
|
+
"Stop Live": "End Live",
|
|
2489
|
+
"Enter Backstage": "Enter Backstage",
|
|
2490
|
+
"Prepare your livestream": "Prepare your livestream",
|
|
2491
|
+
"Ready to go live": "Ready to go live",
|
|
2492
|
+
"Stream is ready!": "Stream is ready!",
|
|
2493
|
+
"Waiting for the livestream to start": "Waiting for the livestream to start",
|
|
2494
|
+
"{{ count }} waiting": "{{ count }} waiting",
|
|
2495
|
+
"Join Stream": "Join Stream",
|
|
2496
|
+
"Join automatically when stream starts": "Join automatically when stream starts",
|
|
2497
|
+
"Display name": "Display name",
|
|
2498
|
+
"Permission needed": "Permission needed",
|
|
2499
|
+
"Call ended": "Call ended",
|
|
2500
|
+
"Rejoin call": "Rejoin call",
|
|
2501
|
+
"Left by mistake?": "Left by mistake?",
|
|
2502
|
+
"Help us improve": "Help us improve",
|
|
2503
|
+
"Leave feedback": "Leave feedback",
|
|
2504
|
+
"Failed to rejoin. Please try again.": "Failed to rejoin. Please try again.",
|
|
2505
|
+
"Share your feedback": "Share your feedback",
|
|
2506
|
+
"Tell us about your experience...": "Tell us about your experience...",
|
|
2507
|
+
"Submit feedback": "Submit feedback",
|
|
2508
|
+
"Feedback message": "Feedback message",
|
|
2509
|
+
"How was your call quality?": "How was your call quality?",
|
|
2510
|
+
"Rate {{ count }} star_one": "Rate {{ count }} star",
|
|
2511
|
+
"Rate {{ count }} star_other": "Rate {{ count }} stars",
|
|
2512
|
+
"Thank you!": "Thank you!",
|
|
2513
|
+
"Your feedback helps improve call quality.": "Your feedback helps improve call quality."
|
|
2655
2514
|
};
|
|
2656
2515
|
|
|
2657
2516
|
const translations = { en };
|
|
@@ -2864,7 +2723,12 @@ const BackstageLayout = (props) => {
|
|
|
2864
2723
|
const { t } = useI18n();
|
|
2865
2724
|
return (jsx("div", { className: "str-video__livestream-layout__wrapper", children: jsxs("div", { className: "str-video__livestream-layout__backstage", children: [startsAt && (jsx("span", { className: "str-video__livestream-layout__starts-at", children: startsAt.getTime() < Date.now()
|
|
2866
2725
|
? t('Livestream starts soon')
|
|
2867
|
-
: t('Livestream starts at {{
|
|
2726
|
+
: t('Livestream starts at {{ time }}', {
|
|
2727
|
+
time: startsAt.toLocaleTimeString([], {
|
|
2728
|
+
hour: '2-digit',
|
|
2729
|
+
minute: '2-digit',
|
|
2730
|
+
}),
|
|
2731
|
+
}) })), showEarlyParticipantCount && (jsx("span", { className: "str-video__livestream-layout__early-viewers-count", children: t('{{ count }} participants joined early', {
|
|
2868
2732
|
count: humanizeParticipantCount
|
|
2869
2733
|
? humanize(participantCount)
|
|
2870
2734
|
: participantCount,
|
|
@@ -2887,12 +2751,13 @@ const ParticipantOverlay = (props) => {
|
|
|
2887
2751
|
const { speaker, volume } = useSpeakerState();
|
|
2888
2752
|
const isSpeakerMuted = volume === 0;
|
|
2889
2753
|
const { t } = useI18n();
|
|
2890
|
-
return (jsx("div", { className: "str-video__livestream-layout__overlay", children: overlayBarVisible && (jsxs("div", { className: "str-video__livestream-layout__overlay__bar", children: [showLiveBadge && (jsx("span", { className: "str-video__livestream-layout__live-badge", children: t('Live') })), showParticipantCount && (jsx("span", { className: "str-video__livestream-layout__viewers-count", children: humanizeParticipantCount
|
|
2891
|
-
|
|
2892
|
-
|
|
2893
|
-
|
|
2894
|
-
|
|
2895
|
-
|
|
2754
|
+
return (jsx("div", { className: "str-video__livestream-layout__overlay", children: overlayBarVisible && (jsxs("div", { className: "str-video__livestream-layout__overlay__bar", children: [jsxs("div", { className: "str-video__livestream-layout__overlay__bar-left", children: [showLiveBadge && (jsx("span", { className: "str-video__livestream-layout__live-badge", children: t('Live') })), showParticipantCount && (jsx("span", { className: "str-video__livestream-layout__viewers-count", children: humanizeParticipantCount
|
|
2755
|
+
? humanize(participantCount)
|
|
2756
|
+
: participantCount })), showSpeakerName && (jsx("span", { className: "str-video__livestream-layout__speaker-name", title: participant.name || participant.userId || '', children: participant.name || participant.userId || '' }))] }), jsx("div", { className: "str-video__livestream-layout__overlay__bar-center", children: showDuration && (jsx("span", { className: "str-video__livestream-layout__duration", children: formatDuration(duration) })) }), jsxs("div", { className: "str-video__livestream-layout__overlay__bar-right", children: [showMuteButton && (jsx("span", { className: clsx('str-video__livestream-layout__mute-button', isSpeakerMuted &&
|
|
2757
|
+
'str-video__livestream-layout__mute-button--muted'), onClick: () => speaker.setVolume(isSpeakerMuted ? 1 : 0) })), enableFullScreen &&
|
|
2758
|
+
participantViewElement &&
|
|
2759
|
+
typeof participantViewElement.requestFullscreen !==
|
|
2760
|
+
'undefined' && (jsx("span", { className: "str-video__livestream-layout__go-fullscreen", onClick: toggleFullScreen }))] })] })) }));
|
|
2896
2761
|
};
|
|
2897
2762
|
const useUpdateCallDuration = () => {
|
|
2898
2763
|
const { useIsCallLive, useCallSession } = useCallStateHooks();
|
|
@@ -3272,7 +3137,7 @@ const checkCanJoinEarly = (startsAt, joinAheadTimeSeconds) => {
|
|
|
3272
3137
|
return Date.now() >= +startsAt - (joinAheadTimeSeconds ?? 0) * 1000;
|
|
3273
3138
|
};
|
|
3274
3139
|
|
|
3275
|
-
const [major, minor, patch] = ("1.
|
|
3140
|
+
const [major, minor, patch] = ("1.33.0").split('.');
|
|
3276
3141
|
setSdkInfo({
|
|
3277
3142
|
type: SfuModels.SdkType.REACT,
|
|
3278
3143
|
major,
|