@100mslive/roomkit-react 0.3.19-alpha.2 → 0.3.19-alpha.21
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-BRZ2FW7O.js → HLSView-LQU6IEZQ.js} +2 -2
- package/dist/{HLSView-UXA322ED.css → HLSView-SQ7GMQJS.css} +3 -3
- package/dist/{HLSView-UXA322ED.css.map → HLSView-SQ7GMQJS.css.map} +1 -1
- package/dist/Modal/Dialog.d.ts +3 -1
- package/dist/Prebuilt/components/EndCallFeedback/Feedback.d.ts +2 -0
- package/dist/Prebuilt/components/EndCallFeedback/FeedbackForm.d.ts +28 -0
- package/dist/Prebuilt/components/EndCallFeedback/ThankyouView.d.ts +2 -0
- package/dist/Prebuilt/components/VirtualBackground/VBCollection.d.ts +1 -1
- package/dist/Prebuilt/components/VirtualBackground/VBHandler.d.ts +6 -6
- package/dist/Prebuilt/provider/roomLayoutProvider/hooks/useRoomLayoutScreen.d.ts +1 -0
- package/dist/{chunk-KR2DZJO5.js → chunk-IRF6KLC6.js} +1363 -831
- package/dist/chunk-IRF6KLC6.js.map +7 -0
- package/dist/index.cjs.css +2 -2
- package/dist/index.cjs.css.map +1 -1
- package/dist/index.cjs.js +1849 -1291
- 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 +323 -90
- package/dist/meta.esbuild.json +334 -101
- package/package.json +8 -8
- package/src/Modal/Dialog.tsx +13 -2
- package/src/Prebuilt/App.tsx +3 -0
- package/src/Prebuilt/AppStateContext.tsx +1 -2
- package/src/Prebuilt/Prebuilt.stories.tsx +1 -0
- package/src/Prebuilt/common/PeersSorter.ts +2 -1
- package/src/Prebuilt/components/EndCallFeedback/Feedback.tsx +71 -0
- package/src/Prebuilt/components/EndCallFeedback/FeedbackForm.tsx +381 -0
- package/src/Prebuilt/components/EndCallFeedback/ThankyouView.tsx +44 -0
- package/src/Prebuilt/components/LeaveScreen.tsx +2 -0
- package/src/Prebuilt/components/PIP/PIPChat.tsx +11 -4
- package/src/Prebuilt/components/VideoLayouts/RoleProminence.tsx +2 -9
- package/src/Prebuilt/components/VirtualBackground/VBCollection.tsx +3 -1
- package/src/Prebuilt/components/VirtualBackground/VBHandler.tsx +26 -4
- package/src/Prebuilt/components/VirtualBackground/VBPicker.tsx +58 -38
- package/src/Prebuilt/components/VirtualBackground/VBToggle.tsx +2 -1
- package/src/Prebuilt/plugins/CaptionsViewer.tsx +4 -1
- package/src/Prebuilt/provider/roomLayoutProvider/hooks/useRoomLayoutScreen.ts +1 -0
- package/dist/Prebuilt/components/VirtualBackground/util.d.ts +0 -1
- package/dist/chunk-KR2DZJO5.js.map +0 -7
- package/src/Prebuilt/components/VirtualBackground/util.tsx +0 -13
- /package/dist/{HLSView-BRZ2FW7O.js.map → HLSView-LQU6IEZQ.js.map} +0 -0
|
@@ -5,7 +5,6 @@ import { config as cssConfig } from '../../../Theme';
|
|
|
5
5
|
import { InsetTile } from '../InsetTile';
|
|
6
6
|
import { Pagination } from '../Pagination';
|
|
7
7
|
import { SecondaryTiles } from '../SecondaryTiles';
|
|
8
|
-
import { LayoutMode } from '../Settings/LayoutSettings';
|
|
9
8
|
import { Grid } from './Grid';
|
|
10
9
|
import { LayoutProps } from './interface';
|
|
11
10
|
import { ProminenceLayout } from './ProminenceLayout';
|
|
@@ -25,7 +24,6 @@ export function RoleProminence({
|
|
|
25
24
|
}: LayoutProps) {
|
|
26
25
|
const { prominentPeers, secondaryPeers } = useRoleProminencePeers(prominentRoles, peers, isInsetEnabled);
|
|
27
26
|
const localPeer = useHMSStore(selectLocalPeer);
|
|
28
|
-
const layoutMode = useUISettings(UI_SETTINGS.layoutMode);
|
|
29
27
|
const isMobile = useMedia(cssConfig.media.md);
|
|
30
28
|
let maxTileCount = useUISettings(UI_SETTINGS.maxTileCount);
|
|
31
29
|
maxTileCount = isMobile ? 4 : maxTileCount;
|
|
@@ -47,7 +45,7 @@ export function RoleProminence({
|
|
|
47
45
|
}, [pageSize, onPageSize]);
|
|
48
46
|
|
|
49
47
|
return (
|
|
50
|
-
<ProminenceLayout.Root
|
|
48
|
+
<ProminenceLayout.Root>
|
|
51
49
|
<ProminenceLayout.ProminentSection>
|
|
52
50
|
<Grid ref={ref} tiles={pagesWithTiles[page]} />
|
|
53
51
|
</ProminenceLayout.ProminentSection>
|
|
@@ -61,12 +59,7 @@ export function RoleProminence({
|
|
|
61
59
|
numPages={pagesWithTiles.length}
|
|
62
60
|
/>
|
|
63
61
|
)}
|
|
64
|
-
<SecondaryTiles
|
|
65
|
-
peers={layoutMode === LayoutMode.SPOTLIGHT ? [] : secondaryPeers}
|
|
66
|
-
isInsetEnabled={isInsetEnabled}
|
|
67
|
-
edgeToEdge={edgeToEdge}
|
|
68
|
-
hasSidebar={layoutMode === LayoutMode.SIDEBAR}
|
|
69
|
-
/>
|
|
62
|
+
<SecondaryTiles peers={secondaryPeers} isInsetEnabled={isInsetEnabled} edgeToEdge={edgeToEdge} />
|
|
70
63
|
{isInsetEnabled && localPeer && prominentPeers.length > 0 && !prominentPeers.includes(localPeer) && <InsetTile />}
|
|
71
64
|
</ProminenceLayout.Root>
|
|
72
65
|
);
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
2
|
+
// Open issue with eslint-plugin-import https://github.com/import-js/eslint-plugin-import/issues/1810
|
|
3
|
+
// eslint-disable-next-line
|
|
4
|
+
import { HMSVirtualBackgroundTypes } from '@100mslive/hms-virtual-background/hmsvbplugin';
|
|
3
5
|
import { Box } from '../../../Layout';
|
|
4
6
|
import { Text } from '../../../Text';
|
|
5
7
|
import { VBOption } from './VBOption';
|
|
@@ -1,14 +1,25 @@
|
|
|
1
|
-
|
|
1
|
+
// Open issue with eslint-plugin-import https://github.com/import-js/eslint-plugin-import/issues/1810
|
|
2
|
+
// eslint-disable-next-line
|
|
3
|
+
import { HMSVBPlugin, HMSVirtualBackgroundTypes } from '@100mslive/hms-virtual-background/hmsvbplugin';
|
|
4
|
+
import { parsedUserAgent } from '@100mslive/react-sdk';
|
|
5
|
+
import { isSafari } from '../../common/constants';
|
|
2
6
|
export class VBPlugin {
|
|
3
7
|
private hmsPlugin?: HMSVBPlugin;
|
|
4
|
-
private effectsPlugin?:
|
|
8
|
+
private effectsPlugin?: any;
|
|
5
9
|
|
|
6
|
-
initialisePlugin = (effectsSDKKey?: string, onInit?: () => void) => {
|
|
10
|
+
initialisePlugin = async (effectsSDKKey?: string, onInit?: () => void) => {
|
|
7
11
|
if (this.getVBObject()) {
|
|
8
12
|
return;
|
|
9
13
|
}
|
|
10
14
|
if (effectsSDKKey) {
|
|
11
|
-
|
|
15
|
+
try {
|
|
16
|
+
// eslint-disable-next-line
|
|
17
|
+
const effects = await import('@100mslive/hms-virtual-background/hmseffectsplugin');
|
|
18
|
+
this.effectsPlugin = new effects.HMSEffectsPlugin(effectsSDKKey, onInit);
|
|
19
|
+
} catch (error) {
|
|
20
|
+
console.error('Failed to initialise HMSEffectsPlugin:', error, 'Using HMSVBPlugin');
|
|
21
|
+
this.hmsPlugin = new HMSVBPlugin(HMSVirtualBackgroundTypes.NONE, HMSVirtualBackgroundTypes.NONE);
|
|
22
|
+
}
|
|
12
23
|
} else {
|
|
13
24
|
this.hmsPlugin = new HMSVBPlugin(HMSVirtualBackgroundTypes.NONE, HMSVirtualBackgroundTypes.NONE);
|
|
14
25
|
}
|
|
@@ -91,6 +102,17 @@ export class VBPlugin {
|
|
|
91
102
|
this.effectsPlugin = undefined;
|
|
92
103
|
this.hmsPlugin = undefined;
|
|
93
104
|
};
|
|
105
|
+
|
|
106
|
+
isEffectsSupported = () => {
|
|
107
|
+
if (!isSafari) {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
const browserVersion = parsedUserAgent?.getBrowser()?.version || '16';
|
|
111
|
+
if (browserVersion && parseInt(browserVersion.split('.')[0]) < 17) {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
return true;
|
|
115
|
+
};
|
|
94
116
|
}
|
|
95
117
|
|
|
96
118
|
export const VBHandler = new VBPlugin();
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import React, { useEffect, useState } from 'react';
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
2
|
import { useMedia } from 'react-use';
|
|
3
3
|
import {
|
|
4
|
+
HMSMediaStreamPlugin,
|
|
4
5
|
selectAppData,
|
|
5
6
|
selectEffectsKey,
|
|
6
7
|
selectIsEffectsEnabled,
|
|
7
8
|
selectLocalPeerRole,
|
|
8
9
|
} from '@100mslive/hms-video-store';
|
|
9
|
-
|
|
10
|
+
// Open issue with eslint-plugin-import https://github.com/import-js/eslint-plugin-import/issues/1810
|
|
11
|
+
// eslint-disable-next-line
|
|
12
|
+
import { HMSVBPlugin, HMSVirtualBackgroundTypes } from '@100mslive/hms-virtual-background/hmsvbplugin';
|
|
10
13
|
import { VirtualBackgroundMedia } from '@100mslive/types-prebuilt/elements/virtual_background';
|
|
11
14
|
import {
|
|
12
15
|
HMSRoomState,
|
|
@@ -22,7 +25,6 @@ import {
|
|
|
22
25
|
import { BlurPersonHighIcon, CrossCircleIcon, CrossIcon } from '@100mslive/react-icons';
|
|
23
26
|
import { Box, config as cssConfig, Flex, Loading, Slider, Video } from '../../../index';
|
|
24
27
|
import { Text } from '../../../Text';
|
|
25
|
-
import { doesBrowserSupportEffectsSDK } from './util';
|
|
26
28
|
import { VBCollection } from './VBCollection';
|
|
27
29
|
import { VBHandler } from './VBHandler';
|
|
28
30
|
// @ts-ignore
|
|
@@ -46,7 +48,7 @@ export const VBPicker = ({ backgroundMedia = [] }: { backgroundMedia: VirtualBac
|
|
|
46
48
|
const [blurAmount, setBlurAmount] = useState(VBHandler.getBlurAmount() || 0.5);
|
|
47
49
|
const roomState = useHMSStore(selectRoomState);
|
|
48
50
|
const isLargeRoom = useHMSStore(selectIsLargeRoom);
|
|
49
|
-
const
|
|
51
|
+
const isEffectsSupported = VBHandler.isEffectsSupported();
|
|
50
52
|
const isEffectsEnabled = useHMSStore(selectIsEffectsEnabled);
|
|
51
53
|
const effectsKey = useHMSStore(selectEffectsKey);
|
|
52
54
|
const isMobile = useMedia(cssConfig.media.md);
|
|
@@ -54,54 +56,72 @@ export const VBPicker = ({ backgroundMedia = [] }: { backgroundMedia: VirtualBac
|
|
|
54
56
|
const isPluginAdded = useHMSStore(selectIsLocalVideoPluginPresent(VBHandler?.getName() || ''));
|
|
55
57
|
const background = useHMSStore(selectAppData(APP_DATA.background));
|
|
56
58
|
const mediaList = backgroundMedia.map((media: VirtualBackgroundMedia) => media.url || '');
|
|
59
|
+
const pluginLoadingRef = useRef(false);
|
|
57
60
|
|
|
58
61
|
const inPreview = roomState === HMSRoomState.Preview;
|
|
59
62
|
// Hidden in preview as the effect will be visible in the preview tile
|
|
60
63
|
const showVideoTile = isVideoOn && isLargeRoom && !inPreview;
|
|
61
64
|
|
|
62
65
|
useEffect(() => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
66
|
+
const addHMSVBPlugin = async () => {
|
|
67
|
+
setLoadingEffects(false);
|
|
68
|
+
if (!role) {
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
await VBHandler.initialisePlugin();
|
|
72
|
+
await hmsActions.addPluginToVideoTrack(
|
|
73
|
+
VBHandler.getVBObject() as HMSVBPlugin,
|
|
74
|
+
Math.floor(role.publishParams.video.frameRate / 2),
|
|
75
|
+
);
|
|
76
|
+
};
|
|
77
|
+
const initializeVirtualBackground = async () => {
|
|
78
|
+
if (!track?.id || pluginLoadingRef.current || isPluginAdded) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
try {
|
|
83
|
+
pluginLoadingRef.current = true;
|
|
75
84
|
if (isEffectsEnabled && isEffectsSupported && effectsKey) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
85
|
+
setLoadingEffects(true);
|
|
86
|
+
await VBHandler.initialisePlugin(effectsKey, () => {
|
|
87
|
+
setLoadingEffects(false);
|
|
88
|
+
});
|
|
89
|
+
const vbInstance = VBHandler.getVBObject();
|
|
90
|
+
if (vbInstance.getName() === 'HMSEffects') {
|
|
91
|
+
hmsActions.addPluginsToVideoStream([VBHandler.getVBObject() as HMSMediaStreamPlugin]);
|
|
92
|
+
} else {
|
|
93
|
+
await addHMSVBPlugin();
|
|
81
94
|
}
|
|
82
|
-
|
|
95
|
+
} else {
|
|
96
|
+
await addHMSVBPlugin();
|
|
83
97
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
98
|
+
|
|
99
|
+
const handleDefaultBackground = async () => {
|
|
100
|
+
switch (background) {
|
|
101
|
+
case HMSVirtualBackgroundTypes.NONE:
|
|
102
|
+
break;
|
|
103
|
+
case HMSVirtualBackgroundTypes.BLUR:
|
|
104
|
+
await VBHandler.setBlur(blurAmount);
|
|
105
|
+
break;
|
|
106
|
+
default:
|
|
107
|
+
await VBHandler.setBackground(background);
|
|
93
108
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
|
|
109
|
+
};
|
|
110
|
+
|
|
111
|
+
await handleDefaultBackground();
|
|
112
|
+
} catch (error) {
|
|
113
|
+
console.error('Error initializing virtual background:', error);
|
|
114
|
+
setLoadingEffects(false);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
|
|
118
|
+
initializeVirtualBackground();
|
|
100
119
|
}, [
|
|
101
120
|
hmsActions,
|
|
102
121
|
role,
|
|
103
122
|
isPluginAdded,
|
|
104
123
|
isEffectsEnabled,
|
|
124
|
+
isEffectsSupported,
|
|
105
125
|
effectsKey,
|
|
106
126
|
track?.id,
|
|
107
127
|
background,
|
|
@@ -170,7 +190,7 @@ export const VBPicker = ({ backgroundMedia = [] }: { backgroundMedia: VirtualBac
|
|
|
170
190
|
await VBHandler?.setBlur(blurAmount);
|
|
171
191
|
hmsActions.setAppData(APP_DATA.background, HMSVirtualBackgroundTypes.BLUR);
|
|
172
192
|
},
|
|
173
|
-
supported:
|
|
193
|
+
supported: isEffectsSupported && isEffectsEnabled,
|
|
174
194
|
},
|
|
175
195
|
]}
|
|
176
196
|
activeBackground={background}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import React, { useEffect } from 'react';
|
|
2
|
-
|
|
2
|
+
// eslint-disable-next-line
|
|
3
|
+
import { HMSVirtualBackgroundTypes } from '@100mslive/hms-virtual-background/hmsvbplugin';
|
|
3
4
|
import {
|
|
4
5
|
selectAppData,
|
|
5
6
|
selectIsEffectsEnabled,
|
|
@@ -144,7 +144,10 @@ class Queue {
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
class CaptionMaintainerQueue {
|
|
147
|
-
captionData: Queue
|
|
147
|
+
captionData: Queue;
|
|
148
|
+
constructor() {
|
|
149
|
+
this.captionData = new Queue();
|
|
150
|
+
}
|
|
148
151
|
push(data: HMSTranscript[] = []) {
|
|
149
152
|
data.forEach((value: HMSTranscript) => {
|
|
150
153
|
this.captionData.enqueue(value);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const doesBrowserSupportEffectsSDK: () => boolean;
|