@100mslive/roomkit-react 0.3.17-alpha.1 → 0.3.17-alpha.11
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/dist/{HLSView-O4KQ2SQJ.js → HLSView-42EL65Z3.js} +2 -2
- package/dist/{HLSView-DIQJQC42.css → HLSView-7NVZOZKG.css} +3 -3
- package/dist/{HLSView-DIQJQC42.css.map → HLSView-7NVZOZKG.css.map} +1 -1
- package/dist/Prebuilt/components/MoreSettings/constants.d.ts +4 -0
- package/dist/Prebuilt/components/Notifications/ReconnectNotifications.d.ts +1 -2
- package/dist/{chunk-SCKPBPAN.js → chunk-Y4ZC5NAS.js} +774 -773
- package/dist/chunk-Y4ZC5NAS.js.map +7 -0
- package/dist/index.cjs.css +2 -2
- package/dist/index.cjs.css.map +1 -1
- package/dist/index.cjs.js +589 -593
- package/dist/index.cjs.js.map +4 -4
- package/dist/index.css +2 -2
- package/dist/index.css.map +1 -1
- package/dist/index.js +1 -1
- package/dist/meta.cjs.json +83 -68
- package/dist/meta.esbuild.json +95 -80
- package/package.json +7 -7
- package/src/Prebuilt/components/AppData/AppData.tsx +8 -2
- package/src/Prebuilt/components/AudioVideoToggle.tsx +31 -18
- package/src/Prebuilt/components/MoreSettings/constants.ts +2 -0
- package/src/Prebuilt/components/Notifications/ReconnectNotifications.tsx +10 -37
- package/src/Prebuilt/components/Preview/PreviewJoin.tsx +13 -14
- package/src/Prebuilt/components/Toast/ToastConfig.jsx +2 -2
- package/src/Prebuilt/components/VirtualBackground/VBHandler.tsx +1 -2
- package/src/Prebuilt/components/VirtualBackground/VBPicker.tsx +2 -1
- package/src/Prebuilt/components/VirtualBackground/VBToggle.tsx +9 -2
- package/dist/chunk-SCKPBPAN.js.map +0 -7
- /package/dist/{HLSView-O4KQ2SQJ.js.map → HLSView-42EL65Z3.js.map} +0 -0
@@ -1,4 +1,4 @@
|
|
1
|
-
import React, { Fragment, useEffect, useState } from 'react';
|
1
|
+
import React, { Fragment, useCallback, useEffect, useState } from 'react';
|
2
2
|
import { HMSKrispPlugin } from '@100mslive/hms-noise-cancellation';
|
3
3
|
import {
|
4
4
|
DeviceType,
|
@@ -14,6 +14,7 @@ import {
|
|
14
14
|
useDevices,
|
15
15
|
useHMSActions,
|
16
16
|
useHMSStore,
|
17
|
+
useHMSVanillaStore,
|
17
18
|
} from '@100mslive/react-sdk';
|
18
19
|
import {
|
19
20
|
AudioLevelIcon,
|
@@ -105,22 +106,26 @@ const useNoiseCancellationWithPlugin = () => {
|
|
105
106
|
const actions = useHMSActions();
|
106
107
|
const [inProgress, setInProgress] = useState(false);
|
107
108
|
const [, setNoiseCancellationEnabled] = useSetNoiseCancellation();
|
108
|
-
const
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
109
|
+
const isEnabledForRoom = useHMSStore(selectRoom)?.isNoiseCancellationEnabled;
|
110
|
+
const setNoiseCancellationWithPlugin = useCallback(
|
111
|
+
async (enabled: boolean) => {
|
112
|
+
if (!isEnabledForRoom || inProgress) {
|
113
|
+
return;
|
114
|
+
}
|
115
|
+
if (!krispPlugin.checkSupport().isSupported) {
|
116
|
+
throw Error('Krisp plugin is not supported');
|
117
|
+
}
|
118
|
+
setInProgress(true);
|
119
|
+
if (enabled) {
|
120
|
+
await actions.addPluginToAudioTrack(krispPlugin);
|
121
|
+
} else {
|
122
|
+
await actions.removePluginFromAudioTrack(krispPlugin);
|
123
|
+
}
|
124
|
+
setNoiseCancellationEnabled(enabled);
|
125
|
+
setInProgress(false);
|
126
|
+
},
|
127
|
+
[actions, inProgress, isEnabledForRoom, setNoiseCancellationEnabled],
|
128
|
+
);
|
124
129
|
return {
|
125
130
|
setNoiseCancellationWithPlugin,
|
126
131
|
inProgress,
|
@@ -274,6 +279,7 @@ export const AudioVideoToggle = ({ hideOptions = false }: { hideOptions?: boolea
|
|
274
279
|
const localPeer = useHMSStore(selectLocalPeer);
|
275
280
|
const { isLocalVideoEnabled, isLocalAudioEnabled, toggleAudio, toggleVideo } = useAVToggle();
|
276
281
|
const actions = useHMSActions();
|
282
|
+
const vanillaStore = useHMSVanillaStore();
|
277
283
|
const videoTrackId = useHMSStore(selectLocalVideoTrackID);
|
278
284
|
const localVideoTrack = useHMSStore(selectVideoTrackByID(videoTrackId));
|
279
285
|
const roomState = useHMSStore(selectRoomState);
|
@@ -289,7 +295,14 @@ export const AudioVideoToggle = ({ hideOptions = false }: { hideOptions?: boolea
|
|
289
295
|
|
290
296
|
useEffect(() => {
|
291
297
|
(async () => {
|
292
|
-
|
298
|
+
const isEnabledForRoom = vanillaStore.getState(selectRoom)?.isNoiseCancellationEnabled;
|
299
|
+
if (
|
300
|
+
isEnabledForRoom &&
|
301
|
+
isNoiseCancellationEnabled &&
|
302
|
+
!isKrispPluginAdded &&
|
303
|
+
!inProgress &&
|
304
|
+
localPeer?.audioTrack
|
305
|
+
) {
|
293
306
|
try {
|
294
307
|
await setNoiseCancellationWithPlugin(true);
|
295
308
|
ToastManager.addToast({
|
@@ -1,6 +1,5 @@
|
|
1
|
-
import
|
1
|
+
import { useEffect, useRef } from 'react';
|
2
2
|
import { HMSNotificationTypes, useHMSNotifications } from '@100mslive/react-sdk';
|
3
|
-
import { Dialog, Flex, Loading, Text } from '../../..';
|
4
3
|
// @ts-ignore: No implicit Any
|
5
4
|
import { ToastConfig } from '../Toast/ToastConfig';
|
6
5
|
// @ts-ignore: No implicit Any
|
@@ -15,50 +14,24 @@ let notificationId: string | null = null;
|
|
15
14
|
|
16
15
|
export const ReconnectNotifications = () => {
|
17
16
|
const notification = useHMSNotifications(notificationTypes);
|
18
|
-
const
|
17
|
+
const prevErrorCode = useRef(0);
|
19
18
|
useEffect(() => {
|
20
19
|
if (!notification) {
|
21
20
|
return;
|
22
21
|
}
|
23
|
-
if (notification.type === HMSNotificationTypes.
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
22
|
+
if (notification.type === HMSNotificationTypes.RECONNECTED) {
|
23
|
+
notificationId = ToastManager.replaceToast(
|
24
|
+
notificationId,
|
25
|
+
ToastConfig.RECONNECTED.single([4005, 4006].includes(prevErrorCode.current)),
|
26
|
+
);
|
28
27
|
} else if (notification.type === HMSNotificationTypes.RECONNECTING) {
|
28
|
+
prevErrorCode.current = notification.data?.code || 0;
|
29
29
|
notificationId = ToastManager.replaceToast(
|
30
30
|
notificationId,
|
31
31
|
ToastConfig.RECONNECTING.single(notification.data?.message),
|
32
32
|
);
|
33
33
|
}
|
34
34
|
}, [notification]);
|
35
|
-
|
36
|
-
return
|
37
|
-
<Dialog.Root open={open} modal={true}>
|
38
|
-
<Dialog.Portal container={document.getElementById('conferencing')}>
|
39
|
-
<Dialog.Overlay />
|
40
|
-
<Dialog.Content
|
41
|
-
css={{
|
42
|
-
width: 'fit-content',
|
43
|
-
maxWidth: '80%',
|
44
|
-
p: '$4 $8',
|
45
|
-
position: 'relative',
|
46
|
-
top: 'unset',
|
47
|
-
bottom: '$9',
|
48
|
-
transform: 'translate(-50%, -100%)',
|
49
|
-
animation: 'none !important',
|
50
|
-
}}
|
51
|
-
>
|
52
|
-
<Flex align="center">
|
53
|
-
<div style={{ display: 'inline', margin: '0.25rem' }}>
|
54
|
-
<Loading size={16} />
|
55
|
-
</div>
|
56
|
-
<Text css={{ fontSize: '$space$8', color: '$on_surface_high' }}>
|
57
|
-
You lost your network connection. Trying to reconnect.
|
58
|
-
</Text>
|
59
|
-
</Flex>
|
60
|
-
</Dialog.Content>
|
61
|
-
</Dialog.Portal>
|
62
|
-
</Dialog.Root>
|
63
|
-
);
|
35
|
+
|
36
|
+
return null;
|
64
37
|
};
|
@@ -4,6 +4,7 @@ import {
|
|
4
4
|
HMSRoomState,
|
5
5
|
selectAppData,
|
6
6
|
selectIsLocalVideoEnabled,
|
7
|
+
selectIsVBEnabled,
|
7
8
|
selectLocalPeer,
|
8
9
|
selectRoomState,
|
9
10
|
selectVideoTrackByID,
|
@@ -131,23 +132,20 @@ const PreviewJoin = ({
|
|
131
132
|
|
132
133
|
return roomState === HMSRoomState.Preview ? (
|
133
134
|
<Flex justify="center" css={{ size: '100%', position: 'relative' }}>
|
134
|
-
<Container css={{ h: '100%', pt: '$
|
135
|
+
<Container css={{ h: '100%', pt: '$6', '@md': { justifyContent: 'space-between', pt: '$10' } }}>
|
135
136
|
{toggleVideo ? null : <Box />}
|
136
|
-
<Flex direction="column" justify="center" css={{ w: '100%', maxWidth: '
|
137
|
+
<Flex direction="column" justify="center" css={{ w: '100%', maxWidth: '600px', gap: '$8' }}>
|
137
138
|
<Logo />
|
138
|
-
<Text
|
139
|
-
variant="h4"
|
140
|
-
css={{ wordBreak: 'break-word', textAlign: 'center', mt: '$14', mb: '$4', '@md': { mt: '$8', mb: '$2' } }}
|
141
|
-
>
|
139
|
+
<Text variant="h4" css={{ wordBreak: 'break-word', textAlign: 'center' }}>
|
142
140
|
{previewHeader.title}
|
143
141
|
</Text>
|
144
142
|
<Text
|
145
|
-
css={{ c: '$on_surface_medium',
|
143
|
+
css={{ c: '$on_surface_medium', textAlign: 'center', maxWidth: '100%', wordWrap: 'break-word' }}
|
146
144
|
variant="sm"
|
147
145
|
>
|
148
146
|
{previewHeader.sub_title}
|
149
147
|
</Text>
|
150
|
-
<Flex justify="center" css={{
|
148
|
+
<Flex justify="center" css={{ gap: '$4' }}>
|
151
149
|
{isStreamingOn ? (
|
152
150
|
<Chip
|
153
151
|
content="LIVE"
|
@@ -160,7 +158,7 @@ const PreviewJoin = ({
|
|
160
158
|
</Flex>
|
161
159
|
</Flex>
|
162
160
|
{toggleVideo ? <PreviewTile name={name} error={previewError} /> : null}
|
163
|
-
<Box css={{ w: '100%', maxWidth: `${Math.max(aspectRatio, 1) *
|
161
|
+
<Box css={{ w: '100%', maxWidth: `${Math.max(aspectRatio, 1) * 340}px` }}>
|
164
162
|
<PreviewControls hideSettings={!toggleVideo && !toggleAudio} vbEnabled={!!virtual_background} />
|
165
163
|
<PreviewForm
|
166
164
|
name={name}
|
@@ -210,11 +208,11 @@ export const PreviewTile = ({ name, error }: { name: string; error?: boolean })
|
|
210
208
|
css={{
|
211
209
|
bg: '$surface_default',
|
212
210
|
aspectRatio,
|
213
|
-
height: 'min(
|
211
|
+
height: 'min(340px, 70vh)',
|
214
212
|
width: 'auto',
|
215
|
-
maxWidth: '
|
213
|
+
maxWidth: '600px',
|
216
214
|
overflow: 'clip',
|
217
|
-
mt: '$
|
215
|
+
mt: '$10',
|
218
216
|
'@md': {
|
219
217
|
mt: 0,
|
220
218
|
width: 'min(220px, 70vw)',
|
@@ -256,17 +254,18 @@ export const PreviewTile = ({ name, error }: { name: string; error?: boolean })
|
|
256
254
|
|
257
255
|
export const PreviewControls = ({ hideSettings, vbEnabled }: { hideSettings: boolean; vbEnabled: boolean }) => {
|
258
256
|
const isMobile = useMedia(cssConfig.media.md);
|
257
|
+
const isVBEnabledForUser = useHMSStore(selectIsVBEnabled);
|
259
258
|
return (
|
260
259
|
<Flex
|
261
260
|
justify={hideSettings && isMobile ? 'center' : 'between'}
|
262
261
|
css={{
|
263
262
|
width: '100%',
|
264
|
-
mt: '$
|
263
|
+
mt: '$6',
|
265
264
|
}}
|
266
265
|
>
|
267
266
|
<Flex css={{ gap: '$4' }}>
|
268
267
|
<AudioVideoToggle />
|
269
|
-
{vbEnabled ? <VBToggle /> : null}
|
268
|
+
{vbEnabled && isVBEnabledForUser ? <VBToggle /> : null}
|
270
269
|
</Flex>
|
271
270
|
<Flex align="center" gap="1">
|
272
271
|
{isMobile && <NoiseCancellation iconOnly />}
|
@@ -153,9 +153,9 @@ export const ToastConfig = {
|
|
153
153
|
},
|
154
154
|
},
|
155
155
|
RECONNECTED: {
|
156
|
-
single:
|
156
|
+
single: online => {
|
157
157
|
return {
|
158
|
-
title: `You are now connected`,
|
158
|
+
title: `You are now ${online ? 'online' : 'connected'}`,
|
159
159
|
icon: <ConnectivityIcon />,
|
160
160
|
variant: 'success',
|
161
161
|
duration: 3000,
|
@@ -1,8 +1,7 @@
|
|
1
1
|
import { HMSEffectsPlugin, HMSVBPlugin, HMSVirtualBackgroundTypes } from '@100mslive/hms-virtual-background';
|
2
|
-
|
3
2
|
export class VBPlugin {
|
4
3
|
private hmsPlugin?: HMSVBPlugin;
|
5
|
-
private effectsPlugin?: HMSEffectsPlugin
|
4
|
+
private effectsPlugin?: HMSEffectsPlugin;
|
6
5
|
|
7
6
|
initialisePlugin = (effectsSDKKey?: string, onInit?: () => void) => {
|
8
7
|
if (this.getVBObject()) {
|
@@ -61,7 +61,8 @@ export const VBPicker = ({ backgroundMedia = [] }: { backgroundMedia: VirtualBac
|
|
61
61
|
if (!track?.id) {
|
62
62
|
return;
|
63
63
|
}
|
64
|
-
|
64
|
+
const vbObject = VBHandler.getVBObject();
|
65
|
+
if (!isPluginAdded && !vbObject) {
|
65
66
|
setLoadingEffects(true);
|
66
67
|
let vbObject = VBHandler.getVBObject();
|
67
68
|
if (!vbObject) {
|
@@ -1,5 +1,11 @@
|
|
1
1
|
import React from 'react';
|
2
|
-
import {
|
2
|
+
import {
|
3
|
+
selectAppData,
|
4
|
+
selectIsEffectsEnabled,
|
5
|
+
selectIsLocalVideoEnabled,
|
6
|
+
selectIsVBEnabled,
|
7
|
+
useHMSStore,
|
8
|
+
} from '@100mslive/react-sdk';
|
3
9
|
import { VirtualBackgroundIcon } from '@100mslive/react-icons';
|
4
10
|
import { Loading } from '../../../Loading';
|
5
11
|
import { Tooltip } from '../../../Tooltip';
|
@@ -12,10 +18,11 @@ export const VBToggle = () => {
|
|
12
18
|
const toggleVB = useSidepaneToggle(SIDE_PANE_OPTIONS.VB);
|
13
19
|
const isVBOpen = useIsSidepaneTypeOpen(SIDE_PANE_OPTIONS.VB);
|
14
20
|
const isVideoOn = useHMSStore(selectIsLocalVideoEnabled);
|
21
|
+
const isVBEnabled = useHMSStore(selectIsVBEnabled);
|
15
22
|
const isEffectsEnabled = useHMSStore(selectIsEffectsEnabled);
|
16
23
|
const loadingEffects = useHMSStore(selectAppData(APP_DATA.loadingEffects));
|
17
24
|
|
18
|
-
if (!isVideoOn || (!isEffectsEnabled && isSafari)) {
|
25
|
+
if (!isVideoOn || (!isEffectsEnabled && isSafari) || !isVBEnabled) {
|
19
26
|
return null;
|
20
27
|
}
|
21
28
|
|