@selfcommunity/react-ui 0.8.0-live.66 → 0.8.0-live.68
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/lib/cjs/assets/liveStream/event.d.ts +2 -0
- package/lib/cjs/assets/liveStream/event.js +3 -0
- package/lib/cjs/assets/liveStream/live.d.ts +2 -0
- package/lib/cjs/assets/liveStream/live.js +3 -0
- package/lib/cjs/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.d.ts +1 -0
- package/lib/cjs/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.js +38 -81
- package/lib/cjs/components/LiveStreamForm/LiveStreamFormSettings.js +1 -1
- package/lib/cjs/components/LiveStreamForm/constants.d.ts +4 -0
- package/lib/cjs/components/LiveStreamForm/constants.js +4 -0
- package/lib/cjs/components/LiveStreamRoom/LiveStreamRoom.js +10 -3
- package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/FocusLayout.d.ts +20 -0
- package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/FocusLayout.js +28 -0
- package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/LiveStreamVideoConference.js +21 -2
- package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/ParticipantTile.js +1 -1
- package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/ParticipantTileAvatar.js +1 -2
- package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/VideoConference.js +7 -2
- package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/useLiveStreamCheck.d.ts +11 -0
- package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/useLiveStreamCheck.js +104 -0
- package/lib/cjs/components/LiveStreamRoom/constants.d.ts +10 -0
- package/lib/cjs/components/LiveStreamRoom/constants.js +11 -1
- package/lib/cjs/components/Notification/LiveStream/LiveStream.d.ts +15 -0
- package/lib/cjs/components/Notification/LiveStream/LiveStream.js +72 -0
- package/lib/cjs/components/Notification/LiveStream/index.d.ts +3 -0
- package/lib/cjs/components/Notification/LiveStream/index.js +5 -0
- package/lib/cjs/components/Notification/Notification.js +5 -1
- package/lib/cjs/components/SnippetNotifications/SnippetNotifications.js +4 -0
- package/lib/cjs/components/ToastNotifications/ToastNotifications.js +6 -2
- package/lib/cjs/components/UserLiveStreamWidget/Skeleton.d.ts +2 -0
- package/lib/cjs/components/UserLiveStreamWidget/Skeleton.js +28 -0
- package/lib/cjs/components/UserLiveStreamWidget/UserLiveStreamWidget.d.ts +47 -0
- package/lib/cjs/components/UserLiveStreamWidget/UserLiveStreamWidget.js +129 -0
- package/lib/cjs/components/UserLiveStreamWidget/constants.d.ts +1 -0
- package/lib/cjs/components/UserLiveStreamWidget/constants.js +4 -0
- package/lib/cjs/components/UserLiveStreamWidget/index.d.ts +4 -0
- package/lib/cjs/components/UserLiveStreamWidget/index.js +8 -0
- package/lib/cjs/index.d.ts +2 -1
- package/lib/cjs/index.js +4 -1
- package/lib/esm/assets/liveStream/event.d.ts +2 -0
- package/lib/esm/assets/liveStream/event.js +1 -0
- package/lib/esm/assets/liveStream/live.d.ts +2 -0
- package/lib/esm/assets/liveStream/live.js +1 -0
- package/lib/esm/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.d.ts +1 -0
- package/lib/esm/components/CreateLiveStreamDialog/LiveStreamSelector/LiveStreamSelector.js +34 -78
- package/lib/esm/components/LiveStreamForm/LiveStreamFormSettings.js +1 -1
- package/lib/esm/components/LiveStreamForm/constants.d.ts +4 -0
- package/lib/esm/components/LiveStreamForm/constants.js +4 -0
- package/lib/esm/components/LiveStreamRoom/LiveStreamRoom.js +10 -3
- package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/FocusLayout.d.ts +20 -0
- package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/FocusLayout.js +23 -0
- package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/LiveStreamVideoConference.js +22 -3
- package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/ParticipantTile.js +1 -1
- package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/ParticipantTileAvatar.js +1 -2
- package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/VideoConference.js +7 -2
- package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/useLiveStreamCheck.d.ts +11 -0
- package/lib/esm/components/LiveStreamRoom/LiveStreamVideoConference/useLiveStreamCheck.js +100 -0
- package/lib/esm/components/LiveStreamRoom/constants.d.ts +10 -0
- package/lib/esm/components/LiveStreamRoom/constants.js +10 -0
- package/lib/esm/components/Notification/LiveStream/LiveStream.d.ts +15 -0
- package/lib/esm/components/Notification/LiveStream/LiveStream.js +69 -0
- package/lib/esm/components/Notification/LiveStream/index.d.ts +3 -0
- package/lib/esm/components/Notification/LiveStream/index.js +2 -0
- package/lib/esm/components/Notification/Notification.js +5 -1
- package/lib/esm/components/SnippetNotifications/SnippetNotifications.js +4 -0
- package/lib/esm/components/ToastNotifications/ToastNotifications.js +6 -2
- package/lib/esm/components/UserLiveStreamWidget/Skeleton.d.ts +2 -0
- package/lib/esm/components/UserLiveStreamWidget/Skeleton.js +24 -0
- package/lib/esm/components/UserLiveStreamWidget/UserLiveStreamWidget.d.ts +47 -0
- package/lib/esm/components/UserLiveStreamWidget/UserLiveStreamWidget.js +126 -0
- package/lib/esm/components/UserLiveStreamWidget/constants.d.ts +1 -0
- package/lib/esm/components/UserLiveStreamWidget/constants.js +1 -0
- package/lib/esm/components/UserLiveStreamWidget/index.d.ts +4 -0
- package/lib/esm/components/UserLiveStreamWidget/index.js +4 -0
- package/lib/esm/index.d.ts +2 -1
- package/lib/esm/index.js +2 -1
- package/lib/umd/react-ui.js +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: "data:image/png;base64,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";
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = 'data:image/png;base64,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';
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
declare const _default: "data:image/png;base64,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";
|
|
2
|
+
export default _default;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.default = 'data:image/png;base64,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';
|
|
@@ -1,100 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PREFIX = void 0;
|
|
3
4
|
const tslib_1 = require("tslib");
|
|
4
5
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
6
|
const react_1 = require("react");
|
|
6
7
|
const styles_1 = require("@mui/material/styles");
|
|
7
8
|
const material_1 = require("@mui/material");
|
|
8
9
|
const Icon_1 = tslib_1.__importDefault(require("@mui/material/Icon"));
|
|
9
|
-
const constants_1 = require("../constants");
|
|
10
10
|
const system_1 = require("@mui/system");
|
|
11
11
|
const classnames_1 = tslib_1.__importDefault(require("classnames"));
|
|
12
12
|
const types_1 = require("../types");
|
|
13
13
|
const notistack_1 = require("notistack");
|
|
14
14
|
const react_intl_1 = require("react-intl");
|
|
15
|
+
const event_1 = tslib_1.__importDefault(require("../../../assets/liveStream/event"));
|
|
16
|
+
const live_1 = tslib_1.__importDefault(require("../../../assets/liveStream/live"));
|
|
17
|
+
const api_services_1 = require("@selfcommunity/api-services");
|
|
18
|
+
const constants_1 = require("../../LiveStreamRoom/constants");
|
|
19
|
+
exports.PREFIX = 'SCLiveStreamSelector';
|
|
15
20
|
const classes = {
|
|
16
|
-
root: `${
|
|
17
|
-
|
|
18
|
-
|
|
21
|
+
root: `${exports.PREFIX}-root`,
|
|
22
|
+
warning: `${exports.PREFIX}-warning`,
|
|
23
|
+
options: `${exports.PREFIX}-options`,
|
|
24
|
+
actions: `${exports.PREFIX}-actions`
|
|
19
25
|
};
|
|
20
26
|
const Root = (0, styles_1.styled)(material_1.Container, {
|
|
21
|
-
name:
|
|
27
|
+
name: exports.PREFIX,
|
|
22
28
|
slot: 'Root'
|
|
23
|
-
})(({ theme }) => ({
|
|
24
|
-
[`& .${classes.options}`]: {
|
|
25
|
-
display: 'flex',
|
|
26
|
-
justifyContent: 'center',
|
|
27
|
-
alignItems: 'center',
|
|
28
|
-
[theme.breakpoints.down('sm')]: {
|
|
29
|
-
display: 'block'
|
|
30
|
-
},
|
|
31
|
-
'& > div': {
|
|
32
|
-
width: '290px',
|
|
33
|
-
[theme.breakpoints.down('sm')]: {
|
|
34
|
-
margin: '0px auto',
|
|
35
|
-
marginBottom: theme.spacing(2)
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
[`& .${classes.actions}`]: {
|
|
40
|
-
display: 'flex',
|
|
41
|
-
justifyContent: 'flex-end',
|
|
42
|
-
alignItems: 'flex-end',
|
|
43
|
-
marginTop: theme.spacing(4)
|
|
44
|
-
}
|
|
45
|
-
}));
|
|
29
|
+
})(({ theme }) => ({}));
|
|
46
30
|
// Styled components
|
|
47
31
|
const OptionCard = (0, styles_1.styled)(material_1.Paper, {
|
|
32
|
+
name: exports.PREFIX,
|
|
33
|
+
slot: 'optionCardRoot',
|
|
48
34
|
shouldForwardProp: (prop) => prop !== 'selected'
|
|
49
|
-
})(({ theme, selected }) => ({
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
cursor: 'pointer',
|
|
55
|
-
transition: theme.transitions.create(['background-color', 'box-shadow'], {
|
|
56
|
-
duration: theme.transitions.duration.short
|
|
57
|
-
}),
|
|
58
|
-
backgroundColor: selected ? theme.palette.grey[100] : theme.palette.background.paper,
|
|
59
|
-
'&:hover': {
|
|
60
|
-
backgroundColor: theme.palette.grey[50],
|
|
61
|
-
boxShadow: theme.shadows[2]
|
|
62
|
-
},
|
|
63
|
-
border: `1px solid ${theme.palette.divider}`,
|
|
64
|
-
[`& > div`]: {
|
|
65
|
-
display: 'flex',
|
|
66
|
-
justifyContent: 'space-between',
|
|
67
|
-
alignItems: 'center',
|
|
68
|
-
marginBottom: 2,
|
|
69
|
-
maxWidth: '300px'
|
|
70
|
-
},
|
|
71
|
-
[`& ul`]: {
|
|
72
|
-
marginTop: theme.spacing(2),
|
|
73
|
-
padding: 0,
|
|
74
|
-
listStyle: 'none'
|
|
75
|
-
}
|
|
76
|
-
}));
|
|
77
|
-
const RadioIndicator = (0, styles_1.styled)(material_1.Radio, {
|
|
78
|
-
// shouldForwardProp: (prop) => prop !== 'selected'
|
|
79
|
-
})(({ theme, selected }) => ({
|
|
80
|
-
/* width: 16,
|
|
81
|
-
height: 16,
|
|
82
|
-
borderRadius: '50%',
|
|
83
|
-
border: `2px solid ${selected ? theme.palette.secondary.main : theme.palette.grey[300]}`,
|
|
84
|
-
backgroundColor: selected ? theme.palette.secondary.main : 'transparent',
|
|
85
|
-
transition: theme.transitions.create(['border-color', 'background-color'], {
|
|
86
|
-
duration: theme.transitions.duration.shortest
|
|
87
|
-
}) */
|
|
88
|
-
}));
|
|
89
|
-
const FeatureItem = (0, styles_1.styled)(material_1.Box)(({ theme }) => ({
|
|
90
|
-
display: 'flex',
|
|
91
|
-
alignItems: 'flex-start',
|
|
92
|
-
gap: theme.spacing(1.5),
|
|
93
|
-
marginBottom: theme.spacing(2),
|
|
94
|
-
'&:last-child': {
|
|
95
|
-
marginBottom: 0
|
|
96
|
-
}
|
|
97
|
-
}));
|
|
35
|
+
})(({ theme, selected }) => ({}));
|
|
36
|
+
const FeatureItem = (0, styles_1.styled)(material_1.Box, {
|
|
37
|
+
name: exports.PREFIX,
|
|
38
|
+
slot: 'featureItemRoot'
|
|
39
|
+
})(({ theme }) => ({}));
|
|
98
40
|
/**
|
|
99
41
|
*> API documentation for the Community-JS LiveStreamSelector component. Learn about the available props and the CSS API.
|
|
100
42
|
*
|
|
@@ -118,16 +60,18 @@ function LiveStreamSelector(inProps) {
|
|
|
118
60
|
//PROPS
|
|
119
61
|
const props = (0, system_1.useThemeProps)({
|
|
120
62
|
props: inProps,
|
|
121
|
-
name:
|
|
63
|
+
name: exports.PREFIX
|
|
122
64
|
});
|
|
123
65
|
const { className, liveSelected, onLiveSelected, onNext } = props, rest = tslib_1.__rest(props, ["className", "liveSelected", "onLiveSelected", "onNext"]);
|
|
124
66
|
// CONTEXT
|
|
125
67
|
const { enqueueSnackbar } = (0, notistack_1.useSnackbar)();
|
|
126
68
|
// STATE
|
|
127
69
|
const [selectedOption, setSelectedOption] = (0, react_1.useState)(liveSelected);
|
|
70
|
+
const [timeRemaining, setTimeRemaining] = (0, react_1.useState)(null);
|
|
128
71
|
const options = [
|
|
129
72
|
{
|
|
130
73
|
title: 'Schedule a live event',
|
|
74
|
+
image: event_1.default,
|
|
131
75
|
type: types_1.LiveStreamType.EVENT_LIVE,
|
|
132
76
|
features: [
|
|
133
77
|
'Schedule a live room or stream in your event space',
|
|
@@ -139,6 +83,7 @@ function LiveStreamSelector(inProps) {
|
|
|
139
83
|
},
|
|
140
84
|
{
|
|
141
85
|
title: 'Start a live stream',
|
|
86
|
+
image: live_1.default,
|
|
142
87
|
type: types_1.LiveStreamType.DIRECT_LIVE,
|
|
143
88
|
features: [
|
|
144
89
|
'Best for webinars, Q&As, AMAs, and for presentations',
|
|
@@ -164,14 +109,26 @@ function LiveStreamSelector(inProps) {
|
|
|
164
109
|
onNext && onNext(selectedOption);
|
|
165
110
|
}
|
|
166
111
|
};
|
|
167
|
-
|
|
112
|
+
const fetchLivestreamStatus = () => {
|
|
113
|
+
api_services_1.LiveStreamApiClient.getMonthlyDuration()
|
|
114
|
+
.then((r) => {
|
|
115
|
+
setTimeRemaining(r.remaining_minutes);
|
|
116
|
+
})
|
|
117
|
+
.catch((error) => {
|
|
118
|
+
console.error('Error fetching live status:', error);
|
|
119
|
+
});
|
|
120
|
+
};
|
|
121
|
+
(0, react_1.useEffect)(() => {
|
|
122
|
+
fetchLivestreamStatus();
|
|
123
|
+
}, []);
|
|
124
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className), maxWidth: "lg", sx: { py: 4 } }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h4", component: "h1", align: "center", gutterBottom: true, sx: { mb: 4, fontWeight: 500 } }, { children: "How do you want to go live?" })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.warning }, { children: (0, jsx_runtime_1.jsx)(material_1.Alert, Object.assign({ variant: "filled", severity: "warning" }, { children: timeRemaining <= 1 ? ((0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.selector.warningMinutesExausted", defaultMessage: "ui.liveStreamRoom.selector.warningMinutesExausted" })) : timeRemaining <= constants_1.WARNING_THRESHOLD_EXPIRING_SOON ? ((0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.selector.warningRemainingMinutes", defaultMessage: "ui.liveStreamRoom.selector.warningRemainingMinutes", values: { minutes: timeRemaining } })) : null })) })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.options }, { children: options.map((option, index) => ((0, jsx_runtime_1.jsxs)(OptionCard, Object.assign({ selected: selectedOption === option.type, onClick: () => handleOptionSelect(option.type), elevation: 0, role: "button", tabIndex: 0, onKeyDown: (e) => {
|
|
168
125
|
if (e.key === 'Enter' || e.key === ' ') {
|
|
169
126
|
handleOptionSelect(index);
|
|
170
127
|
e.preventDefault();
|
|
171
128
|
}
|
|
172
|
-
}, theme: undefined }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h6", component: "h2", sx: { fontWeight: 500 } }, { children: option.title })), (0, jsx_runtime_1.jsx)(material_1.Radio, { checked: selectedOption === option.type })] }), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ component: "ul" }, { children: option.features.map((feature, featureIndex) => {
|
|
129
|
+
}, theme: undefined }, { children: [(0, jsx_runtime_1.jsxs)(material_1.Box, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h6", component: "h2", sx: { fontWeight: 500 } }, { children: option.title })), (0, jsx_runtime_1.jsx)(material_1.Radio, { checked: selectedOption === option.type })] }), (0, jsx_runtime_1.jsx)("img", { src: option.image, alt: "logo" }), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ component: "ul" }, { children: option.features.map((feature, featureIndex) => {
|
|
173
130
|
const _Icon = option.icons[featureIndex];
|
|
174
131
|
return ((0, jsx_runtime_1.jsxs)(FeatureItem, Object.assign({ component: "li" }, { children: [_Icon, (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "body2", color: "text.secondary", sx: { flex: 1 } }, { children: feature }))] }), featureIndex));
|
|
175
|
-
}) }))] }), index))) })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ disabled: !selectedOption, variant: "contained", onClick: handleNext, color: "secondary" }, { children: "Next" })) }))] })));
|
|
132
|
+
}) }))] }), index))) })), (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.actions }, { children: (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ disabled: !selectedOption || !timeRemaining, variant: "contained", onClick: handleNext, color: "secondary" }, { children: "Next" })) }))] })));
|
|
176
133
|
}
|
|
177
134
|
exports.default = LiveStreamSelector;
|
|
@@ -55,7 +55,7 @@ function LiveStreamSettingsForm(inProps) {
|
|
|
55
55
|
/**
|
|
56
56
|
* Renders root object
|
|
57
57
|
*/
|
|
58
|
-
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { children: [(0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.muteParticipants), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['muteParticipants']: !(settings === null || settings === void 0 ? void 0 : settings.muteParticipants) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.muteParticipants", defaultMessage: "ui.liveStreamForm.muteParticipants" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableVideo), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableVideo']: !(settings === null || settings === void 0 ? void 0 : settings.disableVideo) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableVideo", defaultMessage: "ui.liveStreamForm.disableVideo" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableChat), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableChat']: !(settings === null || settings === void 0 ? void 0 : settings.disableChat) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableChat", defaultMessage: "ui.liveStreamForm.disableChat" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableShareScreen), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableShareScreen']: !(settings === null || settings === void 0 ? void 0 : settings.disableShareScreen) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableShareScreen", defaultMessage: "ui.liveStreamForm.disableShareScreen" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.hideParticipantsList), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['hideParticipantsList']: !(settings === null || settings === void 0 ? void 0 : settings.hideParticipantsList) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.hideParticipantsList", defaultMessage: "ui.liveStreamForm.hideParticipantsList" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.automaticallyNotifyFollowers), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['automaticallyNotifyFollowers']: !(settings === null || settings === void 0 ? void 0 : settings.automaticallyNotifyFollowers) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.automaticallyNotifyFollowers", defaultMessage: "ui.liveStreamForm.automaticallyNotifyFollowers" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.FormControl, Object.assign({ className: classes.accessView }, { children: [(0, jsx_runtime_1.jsx)(material_1.InputLabel, Object.assign({ id: "viewLabel" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.view.label", defaultMessage: "ui.liveStreamForm.view.label" }) })), (0, jsx_runtime_1.jsx)(material_1.Select, Object.assign({ name: "view", label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.view.label", defaultMessage: "ui.liveStreamForm.view.label" }), labelId: "viewLabel", fullWidth: true, value: (_a = settings === null || settings === void 0 ? void 0 : settings.view) !== null && _a !== void 0 ? _a : types_1.SCLiveStreamViewType.SPEAKER, onChange: (e) => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['view']: e.target.value })), displayEmpty: true, renderValue: (selected) => {
|
|
58
|
+
return ((0, jsx_runtime_1.jsxs)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { children: [(0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.muteParticipants), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['muteParticipants']: !(settings === null || settings === void 0 ? void 0 : settings.muteParticipants) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.muteParticipants", defaultMessage: "ui.liveStreamForm.muteParticipants" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableVideo), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableVideo']: !(settings === null || settings === void 0 ? void 0 : settings.disableVideo) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableVideo", defaultMessage: "ui.liveStreamForm.disableVideo" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableChat), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableChat']: !(settings === null || settings === void 0 ? void 0 : settings.disableChat) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableChat", defaultMessage: "ui.liveStreamForm.disableChat" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.disableShareScreen), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['disableShareScreen']: !(settings === null || settings === void 0 ? void 0 : settings.disableShareScreen) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.disableShareScreen", defaultMessage: "ui.liveStreamForm.disableShareScreen" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.hideParticipantsList), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['hideParticipantsList']: !(settings === null || settings === void 0 ? void 0 : settings.hideParticipantsList) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.hideParticipantsList", defaultMessage: "ui.liveStreamForm.hideParticipantsList" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.automaticallyNotifyFollowers), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['automaticallyNotifyFollowers']: !(settings === null || settings === void 0 ? void 0 : settings.automaticallyNotifyFollowers) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.automaticallyNotifyFollowers", defaultMessage: "ui.liveStreamForm.automaticallyNotifyFollowers" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ direction: "row", spacing: 1, alignItems: "center" }, { children: [(0, jsx_runtime_1.jsx)(material_1.Switch, { className: classes.switch, checked: Boolean(settings === null || settings === void 0 ? void 0 : settings.showInProfile), onChange: () => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['showInProfile']: !(settings === null || settings === void 0 ? void 0 : settings.showInProfile) })) }), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ className: classes.switchLabel }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.showInProfile", defaultMessage: "ui.liveStreamForm.showInProfile" }) }))] })), (0, jsx_runtime_1.jsxs)(material_1.FormControl, Object.assign({ className: classes.accessView }, { children: [(0, jsx_runtime_1.jsx)(material_1.InputLabel, Object.assign({ id: "viewLabel" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.view.label", defaultMessage: "ui.liveStreamForm.view.label" }) })), (0, jsx_runtime_1.jsx)(material_1.Select, Object.assign({ name: "view", label: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamForm.view.label", defaultMessage: "ui.liveStreamForm.view.label" }), labelId: "viewLabel", fullWidth: true, value: (_a = settings === null || settings === void 0 ? void 0 : settings.view) !== null && _a !== void 0 ? _a : types_1.SCLiveStreamViewType.SPEAKER, onChange: (e) => onChange(Object.assign(Object.assign(Object.assign({}, constants_1.LIVESTREAM_DEFAULT_SETTINGS), settings), { ['view']: e.target.value })), displayEmpty: true, renderValue: (selected) => {
|
|
59
59
|
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ className: classes.accessViewIcon }, { children: selected === types_1.SCLiveStreamViewType.SPEAKER ? 'upload' : 'category' })), "\u00A0", (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: `ui.liveStreamForm.view.${selected}`, defaultMessage: `ui.liveStreamForm.view.${selected}` })] }));
|
|
60
60
|
} }, { children: Object.values(types_1.SCLiveStreamViewType).map((f) => ((0, jsx_runtime_1.jsx)(material_1.MenuItem, Object.assign({ value: f }, { children: (0, jsx_runtime_1.jsxs)(material_1.Box, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "body1" }, { children: (0, jsx_runtime_1.jsxs)("b", { children: [(0, jsx_runtime_1.jsx)(material_1.Icon, Object.assign({ className: classes.accessViewIcon }, { children: f === types_1.SCLiveStreamViewType.SPEAKER ? 'upload' : 'category' })), "\u00A0", (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: `ui.liveStreamForm.view.${f}`, defaultMessage: `ui.liveStreamForm.view.${f}` })] }) })), (0, jsx_runtime_1.jsx)(material_1.Typography, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: `ui.liveStreamForm.view.${f}.description`, defaultMessage: `ui.liveStreamForm.view.${f}.description` }) })] }) }), f))) }))] }))] })));
|
|
61
61
|
}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { SCLiveStreamViewType } from '@selfcommunity/types';
|
|
2
2
|
export declare const PREFIX = "SCLiveStreamForm";
|
|
3
|
+
/**
|
|
4
|
+
* Default live stream settings
|
|
5
|
+
*/
|
|
3
6
|
export declare const LIVESTREAM_DEFAULT_SETTINGS: {
|
|
4
7
|
muteParticipants: boolean;
|
|
5
8
|
hideParticipantsList: boolean;
|
|
@@ -7,5 +10,6 @@ export declare const LIVESTREAM_DEFAULT_SETTINGS: {
|
|
|
7
10
|
disableVideo: boolean;
|
|
8
11
|
disableChat: boolean;
|
|
9
12
|
disableShareScreen: boolean;
|
|
13
|
+
showInProfile: boolean;
|
|
10
14
|
view: SCLiveStreamViewType;
|
|
11
15
|
};
|
|
@@ -3,6 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.LIVESTREAM_DEFAULT_SETTINGS = exports.PREFIX = void 0;
|
|
4
4
|
const types_1 = require("@selfcommunity/types");
|
|
5
5
|
exports.PREFIX = 'SCLiveStreamForm';
|
|
6
|
+
/**
|
|
7
|
+
* Default live stream settings
|
|
8
|
+
*/
|
|
6
9
|
exports.LIVESTREAM_DEFAULT_SETTINGS = {
|
|
7
10
|
muteParticipants: true,
|
|
8
11
|
hideParticipantsList: false,
|
|
@@ -10,5 +13,6 @@ exports.LIVESTREAM_DEFAULT_SETTINGS = {
|
|
|
10
13
|
disableVideo: true,
|
|
11
14
|
disableChat: false,
|
|
12
15
|
disableShareScreen: true,
|
|
16
|
+
showInProfile: true,
|
|
13
17
|
view: types_1.SCLiveStreamViewType.SPEAKER
|
|
14
18
|
};
|
|
@@ -19,6 +19,8 @@ const Errors_1 = require("../../constants/Errors");
|
|
|
19
19
|
const PreJoin_1 = require("./LiveStreamVideoConference/PreJoin");
|
|
20
20
|
const LiveStreamProvider_1 = require("./LiveStreamVideoConference/LiveStreamProvider");
|
|
21
21
|
const notistack_1 = require("notistack");
|
|
22
|
+
const DialogContent_1 = tslib_1.__importDefault(require("@mui/material/DialogContent"));
|
|
23
|
+
const BaseDialog_1 = tslib_1.__importDefault(require("../../shared/BaseDialog"));
|
|
22
24
|
const classes = {
|
|
23
25
|
root: `${constants_1.PREFIX}-root`,
|
|
24
26
|
content: `${constants_1.PREFIX}-content`,
|
|
@@ -38,6 +40,11 @@ const Root = (0, styles_1.styled)(material_1.Box, {
|
|
|
38
40
|
name: constants_1.PREFIX,
|
|
39
41
|
slot: 'Root'
|
|
40
42
|
})(({ theme }) => ({}));
|
|
43
|
+
const DialogRoot = (0, styles_1.styled)(BaseDialog_1.default, {
|
|
44
|
+
name: constants_1.PREFIX,
|
|
45
|
+
slot: 'Root',
|
|
46
|
+
overridesResolver: (props, styles) => styles.dialogRoot
|
|
47
|
+
})(({ theme }) => ({}));
|
|
41
48
|
/**
|
|
42
49
|
*> API documentation for the Community-JS LiveStreamRoom component. Learn about the available props and the CSS API.
|
|
43
50
|
*
|
|
@@ -129,7 +136,7 @@ function LiveStreamRoom(inProps) {
|
|
|
129
136
|
_msg = intl.formatMessage({ id: _error, defaultMessage: _error });
|
|
130
137
|
}
|
|
131
138
|
setError(_msg);
|
|
132
|
-
enqueueSnackbar(_msg, { variant: 'error'
|
|
139
|
+
enqueueSnackbar(_msg, { variant: 'error' });
|
|
133
140
|
}
|
|
134
141
|
setLoading(false);
|
|
135
142
|
});
|
|
@@ -162,9 +169,9 @@ function LiveStreamRoom(inProps) {
|
|
|
162
169
|
/**
|
|
163
170
|
* Renders root object
|
|
164
171
|
*/
|
|
165
|
-
return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ id: id, className: (0, classnames_1.default)(classes.root, className) }, rest, { children: scLiveStream.closed_at_by_host ? ((0, jsx_runtime_1.jsxs)(
|
|
172
|
+
return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ id: id, className: (0, classnames_1.default)(classes.root, className) }, rest, { children: scLiveStream.closed_at_by_host ? ((0, jsx_runtime_1.jsx)(DialogRoot, Object.assign({ open: true, maxWidth: 'md', fullWidth: true }, { children: (0, jsx_runtime_1.jsxs)(DialogContent_1.default, Object.assign({ className: classes.endConferenceWrap }, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.conference.closed", defaultMessage: "ui.liveStreamRoom.conference.closed" }) })), (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "contained", color: "secondary", component: react_core_1.Link, to: '/', className: classes.btnBackHome }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.button.backHome", defaultMessage: "ui.liveStreamRoom.button.backHome" }) }))] })) }))) : ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.content, "data-lk-theme": "default" }, { children: connectionDetails === undefined || preJoinChoices === undefined ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [startPrejoinContent && (0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.startPrejoinContent }, { children: startPrejoinContent })), (scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.title) && ((0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: 'div', variant: "h5", className: classes.title }, { children: scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.title }))), (scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.description) && ((0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: 'div', variant: "body1", className: classes.description }, { children: scLiveStream === null || scLiveStream === void 0 ? void 0 : scLiveStream.description }))), (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: (0, classnames_1.default)(classes.preJoin, { [classes.preJoinLoading]: loading || error }) }, { children: [(0, jsx_runtime_1.jsx)(LiveStreamProvider_1.LiveStreamContext.Provider, Object.assign({ value: { liveStream: scLiveStream } }, { children: (0, jsx_runtime_1.jsx)(PreJoin_1.PreJoin, { defaults: preJoinDefaults, onSubmit: handlePreJoinSubmit, onError: handlePreJoinError }) })), loading && ((0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.prejoinLoader }, { children: [(0, jsx_runtime_1.jsx)(material_1.CircularProgress, {}), (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ component: 'div', variant: "body2" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.connecting", defaultMessage: "ui.liveStreamRoom.connecting" }) }))] })))] })), (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endPrejoinContent }, { children: [Boolean(scUserContext.user &&
|
|
166
173
|
scUserContext.user.id !== scLiveStream.host.id &&
|
|
167
174
|
scLiveStream &&
|
|
168
|
-
(((_a = scLiveStream.settings) === null || _a === void 0 ? void 0 : _a.muteParticipants) || (scLiveStream && ((_b = scLiveStream.settings) === null || _b === void 0 ? void 0 : _b.disableVideo)))) && ((0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ sx: { width: '60%' }, spacing: 1 }, { children: [scLiveStream && ((_c = scLiveStream.settings) === null || _c === void 0 ? void 0 : _c.muteParticipants) && ((0, jsx_runtime_1.jsx)(material_1.Alert, Object.assign({ variant: "
|
|
175
|
+
(((_a = scLiveStream.settings) === null || _a === void 0 ? void 0 : _a.muteParticipants) || (scLiveStream && ((_b = scLiveStream.settings) === null || _b === void 0 ? void 0 : _b.disableVideo)))) && ((0, jsx_runtime_1.jsxs)(material_1.Stack, Object.assign({ sx: { width: '60%' }, spacing: 1 }, { children: [scLiveStream && ((_c = scLiveStream.settings) === null || _c === void 0 ? void 0 : _c.muteParticipants) && ((0, jsx_runtime_1.jsx)(material_1.Alert, Object.assign({ variant: "filled", severity: "info", component: 'div' }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.hostDisableMicrophone", defaultMessage: "ui.liveStreamRoom.hostDisableMicrophone" }) }))), scLiveStream && ((_d = scLiveStream.settings) === null || _d === void 0 ? void 0 : _d.disableVideo) && ((0, jsx_runtime_1.jsx)(material_1.Alert, Object.assign({ variant: "filled", severity: "info" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.hostDisableVideo", defaultMessage: "ui.liveStreamRoom.hostDisableVideo" }) })))] }))), endPrejoinContent] }))] })) : ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ className: classes.conference }, { children: (0, jsx_runtime_1.jsx)(LiveStreamProvider_1.LiveStreamContext.Provider, Object.assign({ value: { liveStream: scLiveStream } }, { children: (0, jsx_runtime_1.jsx)(LiveStreamVideoConference_1.default, Object.assign({ connectionDetails: connectionDetails, userChoices: preJoinChoices }, LiveStreamVideoConferenceComponentProps)) })) }))) }))) })));
|
|
169
176
|
}
|
|
170
177
|
exports.default = LiveStreamRoom;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import type { TrackReferenceOrPlaceholder } from '@livekit/components-core';
|
|
3
|
+
import type { ParticipantClickEvent } from '@livekit/components-core';
|
|
4
|
+
export type FocusLayoutContainerProps = React.HTMLAttributes<HTMLDivElement>;
|
|
5
|
+
/**
|
|
6
|
+
* The `FocusLayoutContainer` is a layout component that expects two children:
|
|
7
|
+
* A small side component: In a video conference, this is usually a carousel of participants
|
|
8
|
+
* who are not in focus. And a larger main component to display the focused participant.
|
|
9
|
+
* For example, with the `FocusLayout` component.
|
|
10
|
+
*/
|
|
11
|
+
export declare function FocusLayoutContainer(props: FocusLayoutContainerProps): JSX.Element;
|
|
12
|
+
export interface FocusLayoutProps extends React.HTMLAttributes<HTMLElement> {
|
|
13
|
+
/** The track to display in the focus layout. */
|
|
14
|
+
trackRef?: TrackReferenceOrPlaceholder;
|
|
15
|
+
onParticipantClick?: (evt: ParticipantClickEvent) => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The `FocusLayout` component is just a light wrapper around the `ParticipantTile` to display a single participant.
|
|
19
|
+
*/
|
|
20
|
+
export declare function FocusLayout({ trackRef, ...htmlProps }: FocusLayoutProps): JSX.Element;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FocusLayout = exports.FocusLayoutContainer = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
6
|
+
const ParticipantTile_1 = require("./ParticipantTile");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
/**
|
|
9
|
+
* The `FocusLayoutContainer` is a layout component that expects two children:
|
|
10
|
+
* A small side component: In a video conference, this is usually a carousel of participants
|
|
11
|
+
* who are not in focus. And a larger main component to display the focused participant.
|
|
12
|
+
* For example, with the `FocusLayout` component.
|
|
13
|
+
*/
|
|
14
|
+
function FocusLayoutContainer(props) {
|
|
15
|
+
const elementProps = (0, utils_1.mergeProps)(props, { className: 'lk-focus-layout' });
|
|
16
|
+
return (0, jsx_runtime_1.jsx)("div", Object.assign({}, elementProps, { children: props.children }));
|
|
17
|
+
}
|
|
18
|
+
exports.FocusLayoutContainer = FocusLayoutContainer;
|
|
19
|
+
/**
|
|
20
|
+
* The `FocusLayout` component is just a light wrapper around the `ParticipantTile` to display a single participant.
|
|
21
|
+
*/
|
|
22
|
+
function FocusLayout(_a) {
|
|
23
|
+
var { trackRef } = _a, htmlProps = tslib_1.__rest(_a, ["trackRef"]);
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
25
|
+
// @ts-ignore
|
|
26
|
+
return (0, jsx_runtime_1.jsx)(ParticipantTile_1.ParticipantTile, Object.assign({ trackRef: trackRef }, htmlProps));
|
|
27
|
+
}
|
|
28
|
+
exports.FocusLayout = FocusLayout;
|
package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/LiveStreamVideoConference.js
CHANGED
|
@@ -16,8 +16,11 @@ const constants_2 = require("../constants");
|
|
|
16
16
|
const react_intl_1 = require("react-intl");
|
|
17
17
|
const VideoConference_1 = require("./VideoConference");
|
|
18
18
|
const LiveStreamProvider_1 = require("./LiveStreamProvider");
|
|
19
|
+
const DialogContent_1 = tslib_1.__importDefault(require("@mui/material/DialogContent"));
|
|
20
|
+
const BaseDialog_1 = tslib_1.__importDefault(require("../../../shared/BaseDialog"));
|
|
19
21
|
const classes = {
|
|
20
22
|
root: `${constants_1.PREFIX}-root`,
|
|
23
|
+
logo: `${constants_1.PREFIX}-logo`,
|
|
21
24
|
title: `${constants_1.PREFIX}-title`,
|
|
22
25
|
content: `${constants_1.PREFIX}-content`,
|
|
23
26
|
endConferenceWrap: `${constants_1.PREFIX}-end-conference-wrap`,
|
|
@@ -29,6 +32,12 @@ const Root = (0, styles_1.styled)(material_1.Box, {
|
|
|
29
32
|
name: constants_1.PREFIX,
|
|
30
33
|
slot: 'Root'
|
|
31
34
|
})(({ theme }) => ({}));
|
|
35
|
+
const DialogRoot = (0, styles_1.styled)(BaseDialog_1.default, {
|
|
36
|
+
name: constants_1.PREFIX,
|
|
37
|
+
slot: 'Root',
|
|
38
|
+
overridesResolver: (props, styles) => styles.dialogRoot
|
|
39
|
+
})(({ theme }) => ({}));
|
|
40
|
+
const PREFERENCES = [react_core_1.SCPreferences.LOGO_NAVBAR_LOGO];
|
|
32
41
|
/**
|
|
33
42
|
*> API documentation for the Community-JS LiveStreamVideoConference component. Learn about the available props and the CSS API.
|
|
34
43
|
*
|
|
@@ -59,10 +68,18 @@ function LiveStreamVideoConference(inProps) {
|
|
|
59
68
|
}, VideoConferenceComponentProps = {}, startConferenceEndContent, endConferenceEndContent, options = constants_2.defaultVideoOptions } = props, rest = tslib_1.__rest(props, ["className", "handleOnLeaveRoom", "userChoices", "connectionDetails", "LiveKitRoomComponentProps", "VideoConferenceComponentProps", "startConferenceEndContent", "endConferenceEndContent", "options"]);
|
|
60
69
|
// CONTEXT
|
|
61
70
|
const scUserContext = (0, react_core_1.useSCUser)();
|
|
71
|
+
const scRoutingContext = (0, react_core_1.useSCRouting)();
|
|
72
|
+
const scPreferences = (0, react_core_1.useSCPreferences)();
|
|
62
73
|
const { liveStream } = (0, LiveStreamProvider_1.useLiveStream)();
|
|
63
74
|
// STATE
|
|
64
75
|
const [liveActive, setLiveActive] = (0, react_1.useState)(true);
|
|
65
76
|
const [error, setError] = (0, react_1.useState)(null);
|
|
77
|
+
// PREFERENCES
|
|
78
|
+
const preferences = (0, react_1.useMemo)(() => {
|
|
79
|
+
const _preferences = {};
|
|
80
|
+
PREFERENCES.map((p) => (_preferences[p] = p in scPreferences.preferences ? scPreferences.preferences[p].value : null));
|
|
81
|
+
return _preferences;
|
|
82
|
+
}, [scPreferences.preferences]);
|
|
66
83
|
// PERMISSIONS
|
|
67
84
|
const canUseAudio = (0, react_1.useMemo)(() => { var _a; return scUserContext.user && liveStream && (liveStream.host.id === scUserContext.user.id || (liveStream && !((_a = liveStream === null || liveStream === void 0 ? void 0 : liveStream.settings) === null || _a === void 0 ? void 0 : _a.muteParticipants))); }, [scUserContext, liveStream]);
|
|
68
85
|
const canUseVideo = (0, react_1.useMemo)(() => { var _a; return scUserContext.user && liveStream && (liveStream.host.id === scUserContext.user.id || (liveStream && !((_a = liveStream === null || liveStream === void 0 ? void 0 : liveStream.settings) === null || _a === void 0 ? void 0 : _a.disableVideo))); }, [scUserContext, liveStream]);
|
|
@@ -89,7 +106,9 @@ function LiveStreamVideoConference(inProps) {
|
|
|
89
106
|
*/
|
|
90
107
|
const handleError = (0, react_1.useCallback)((error) => {
|
|
91
108
|
console.error(error);
|
|
92
|
-
|
|
109
|
+
if (error.message !== 'Client initiated disconnect') {
|
|
110
|
+
setError(`Encountered an unexpected error, check the console logs for details: ${error.message}`);
|
|
111
|
+
}
|
|
93
112
|
setLiveActive(false);
|
|
94
113
|
}, []);
|
|
95
114
|
/**
|
|
@@ -109,6 +128,6 @@ function LiveStreamVideoConference(inProps) {
|
|
|
109
128
|
/**
|
|
110
129
|
* Renders root object
|
|
111
130
|
*/
|
|
112
|
-
return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { children: liveActive && !error ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.LiveKitRoom, Object.assign({ connect: Boolean(liveActive), token: connectionDetails['participantToken'], serverUrl: connectionDetails['serverUrl'], connectOptions: connectOptions, video: userChoices.videoEnabled, audio: userChoices.audioEnabled, onDisconnected: handleOnLeave, onEncryptionError: handleEncryptionError, onError: handleError }, LiveKitRoomComponentProps, { children: (0, jsx_runtime_1.jsxs)(components_react_1.LayoutContextProvider, { children: [(0, jsx_runtime_1.jsx)(VideoConference_1.VideoConference, Object.assign({ chatMessageFormatter: components_react_1.formatChatMessageLinks }, (speakerFocused && { speakerFocused: liveStream.host }), VideoConferenceComponentProps, { disableMicrophone: !canUseAudio, disableCamera: !canUseVideo, disableChat: !canUseChat, disableShareScreen: !canUseShareScreen, hideParticipantsList: hideParticipantsList })), (0, jsx_runtime_1.jsx)(components_react_1.ConnectionState, {})] }) })) })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: error ? ((0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endConferenceWrap }, { children: [startConferenceEndContent, error, endConferenceEndContent] }))) : liveActive === false ? ((0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endConferenceWrap }, { children: [startConferenceEndContent, (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.conference.end", defaultMessage: "ui.liveStreamRoom.conference.end" }) })), (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "contained", color: "secondary", component: react_core_1.Link, to: '/', className: classes.btnBackHome }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.button.backHome", defaultMessage: "ui.liveStreamRoom.button.backHome" }) })), endConferenceEndContent] }))) : ((0, jsx_runtime_1.jsx)(material_1.CircularProgress, {})) })) })));
|
|
131
|
+
return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(classes.root, className) }, rest, { children: liveActive && !error ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.LiveKitRoom, Object.assign({ connect: Boolean(liveActive), token: connectionDetails['participantToken'], serverUrl: connectionDetails['serverUrl'], connectOptions: connectOptions, video: userChoices.videoEnabled, audio: userChoices.audioEnabled, onDisconnected: handleOnLeave, onEncryptionError: handleEncryptionError, onError: handleError }, LiveKitRoomComponentProps, { children: (0, jsx_runtime_1.jsxs)(components_react_1.LayoutContextProvider, { children: [(0, jsx_runtime_1.jsx)(VideoConference_1.VideoConference, Object.assign({ chatMessageFormatter: components_react_1.formatChatMessageLinks }, (speakerFocused && { speakerFocused: liveStream.host }), VideoConferenceComponentProps, { disableMicrophone: !canUseAudio, disableCamera: !canUseVideo, disableChat: !canUseChat, disableShareScreen: !canUseShareScreen, hideParticipantsList: hideParticipantsList })), (0, jsx_runtime_1.jsx)(components_react_1.ConnectionState, {})] }) })) })) : ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: error ? ((0, jsx_runtime_1.jsx)(DialogRoot, Object.assign({ open: true, maxWidth: 'md', fullWidth: true }, { children: (0, jsx_runtime_1.jsx)(DialogContent_1.default, { children: (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endConferenceWrap }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.HOME_ROUTE_NAME, {}), className: classes.logo }, { children: (0, jsx_runtime_1.jsx)("img", { src: preferences[react_core_1.SCPreferences.LOGO_NAVBAR_LOGO], alt: "logo" }) })), startConferenceEndContent, error, (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "contained", color: "secondary", component: react_core_1.Link, to: '/', className: classes.btnBackHome }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.button.backHome", defaultMessage: "ui.liveStreamRoom.button.backHome" }) })), endConferenceEndContent] })) }) }))) : liveActive === false ? ((0, jsx_runtime_1.jsx)(DialogRoot, Object.assign({ open: true, maxWidth: 'md', fullWidth: true }, { children: (0, jsx_runtime_1.jsx)(DialogContent_1.default, { children: (0, jsx_runtime_1.jsxs)(material_1.Box, Object.assign({ className: classes.endConferenceWrap }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Link, Object.assign({ to: scRoutingContext.url(react_core_1.SCRoutes.HOME_ROUTE_NAME, {}), className: classes.logo }, { children: (0, jsx_runtime_1.jsx)("img", { src: preferences[react_core_1.SCPreferences.LOGO_NAVBAR_LOGO], alt: "logo" }) })), startConferenceEndContent, (0, jsx_runtime_1.jsx)(material_1.Typography, Object.assign({ variant: "h5" }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.conference.end", defaultMessage: "ui.liveStreamRoom.conference.end" }) })), (0, jsx_runtime_1.jsx)(material_1.Button, Object.assign({ variant: "contained", color: "secondary", component: react_core_1.Link, to: '/', className: classes.btnBackHome }, { children: (0, jsx_runtime_1.jsx)(react_intl_1.FormattedMessage, { id: "ui.liveStreamRoom.button.backHome", defaultMessage: "ui.liveStreamRoom.button.backHome" }) })), endConferenceEndContent] })) }) }))) : ((0, jsx_runtime_1.jsx)(material_1.CircularProgress, {})) })) })));
|
|
113
132
|
}
|
|
114
133
|
exports.default = LiveStreamVideoConference;
|
|
@@ -60,7 +60,7 @@ exports.ParticipantTile =
|
|
|
60
60
|
return ((0, jsx_runtime_1.jsx)("div", Object.assign({ ref: ref, style: { position: 'relative' } }, elementProps, { children: (0, jsx_runtime_1.jsx)(TrackRefContextIfNeeded, Object.assign({ trackRef: trackReference }, { children: (0, jsx_runtime_1.jsxs)(ParticipantContextIfNeeded, Object.assign({ participant: trackReference.participant }, { children: [children !== null && children !== void 0 ? children : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, components_core_1.isTrackReference)(trackReference) &&
|
|
61
61
|
(((_c = trackReference.publication) === null || _c === void 0 ? void 0 : _c.kind) === 'video' ||
|
|
62
62
|
trackReference.source === livekit_client_1.Track.Source.Camera ||
|
|
63
|
-
trackReference.source === livekit_client_1.Track.Source.ScreenShare) ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.VideoTrack, { trackRef: trackReference, onSubscriptionStatusChanged: handleSubscribe, manageSubscription: autoManageSubscription }) })) : ((0, components_core_1.isTrackReference)(trackReference) && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.AudioTrack, { trackRef: trackReference, onSubscriptionStatusChanged: handleSubscribe }) }))), (0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-participant-placeholder" }, { children: (0, jsx_runtime_1.jsx)(ParticipantTileAvatar_1.default, Object.assign({}, ((liveStream === null || liveStream === void 0 ? void 0 : liveStream.host.id) !== scUserContext.user.id ? { participant: trackReference.participant } : {}))) })), (0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-participant-metadata" }, { children: [(0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-participant-metadata-item" }, { children: trackReference.source === livekit_client_1.Track.Source.Camera ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [isEncrypted && (0, jsx_runtime_1.jsx)(components_react_1.LockLockedIcon, { style: { marginRight: '0.25rem' } }), (0, jsx_runtime_1.jsx)(components_react_1.TrackMutedIndicator, { trackRef: {
|
|
63
|
+
trackReference.source === livekit_client_1.Track.Source.ScreenShare) ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.VideoTrack, { trackRef: trackReference, onSubscriptionStatusChanged: handleSubscribe, manageSubscription: autoManageSubscription }) })) : ((0, components_core_1.isTrackReference)(trackReference) && ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(components_react_1.AudioTrack, { trackRef: trackReference, onSubscriptionStatusChanged: handleSubscribe }) }))), (0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-participant-placeholder" }, { children: (0, jsx_runtime_1.jsx)(ParticipantTileAvatar_1.default, Object.assign({}, ((liveStream === null || liveStream === void 0 ? void 0 : liveStream.host.id) !== scUserContext.user.id ? { participant: trackReference.participant } : { user: scUserContext.user }))) })), (0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-participant-metadata" }, { children: [(0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-participant-metadata-item" }, { children: trackReference.source === livekit_client_1.Track.Source.Camera ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [isEncrypted && (0, jsx_runtime_1.jsx)(components_react_1.LockLockedIcon, { style: { marginRight: '0.25rem' } }), (0, jsx_runtime_1.jsx)(components_react_1.TrackMutedIndicator, { trackRef: {
|
|
64
64
|
participant: trackReference.participant,
|
|
65
65
|
source: livekit_client_1.Track.Source.Microphone
|
|
66
66
|
}, show: 'muted' }), (0, jsx_runtime_1.jsx)(components_react_1.ParticipantName, { children: !disableTileActions && (0, jsx_runtime_1.jsx)(ParticipantTileActions_1.default, {}) })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(components_react_1.ScreenShareIcon, { style: { marginRight: '0.25rem' } }), (0, jsx_runtime_1.jsx)(components_react_1.ParticipantName, { children: "'s screen" })] })) })), (0, jsx_runtime_1.jsx)(components_react_1.ConnectionQualityIndicator, { className: "lk-participant-metadata-item" })] }))] })), (0, jsx_runtime_1.jsx)(components_react_1.FocusToggle, { trackRef: trackReference })] })) })) })));
|
package/lib/cjs/components/LiveStreamRoom/LiveStreamVideoConference/ParticipantTileAvatar.js
CHANGED
|
@@ -33,7 +33,6 @@ function ParticipantTileAvatar(inProps) {
|
|
|
33
33
|
const { className, user, participant } = props, rest = tslib_1.__rest(props, ["className", "user", "participant"]);
|
|
34
34
|
// CONTEXT
|
|
35
35
|
const scContext = (0, react_core_1.useSCContext)();
|
|
36
|
-
|
|
37
|
-
return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(className, classes.root) }, rest, { children: participant ? ((0, jsx_runtime_1.jsx)("img", { src: `${scContext.settings.portal}/api/v2/avatar/${participant.identity}` })) : user ? ((0, jsx_runtime_1.jsx)("img", { src: `${user.avatar}` })) : ((0, jsx_runtime_1.jsx)(ParticipantPlaceholder_1.default, {})) })));
|
|
36
|
+
return ((0, jsx_runtime_1.jsx)(Root, Object.assign({ className: (0, classnames_1.default)(className, classes.root) }, rest, { children: user ? ((0, jsx_runtime_1.jsx)("img", { src: `${user.avatar}` })) : participant ? ((0, jsx_runtime_1.jsx)("img", { src: `${scContext.settings.portal}/api/v2/avatar/${participant.identity}` })) : ((0, jsx_runtime_1.jsx)(ParticipantPlaceholder_1.default, {})) })));
|
|
38
37
|
}
|
|
39
38
|
exports.default = ParticipantTileAvatar;
|
|
@@ -9,6 +9,9 @@ const livekit_client_1 = require("livekit-client");
|
|
|
9
9
|
const components_react_1 = require("@livekit/components-react");
|
|
10
10
|
const ParticipantTile_1 = require("./ParticipantTile");
|
|
11
11
|
const ControlBar_1 = require("./ControlBar");
|
|
12
|
+
const react_1 = require("react");
|
|
13
|
+
const useLiveStreamCheck_1 = require("./useLiveStreamCheck");
|
|
14
|
+
const FocusLayout_1 = require("./FocusLayout");
|
|
12
15
|
/**
|
|
13
16
|
* The `VideoConference` ready-made component is your drop-in solution for a classic video conferencing application.
|
|
14
17
|
* It provides functionality such as focusing on one participant, grid view with pagination to handle large numbers
|
|
@@ -47,7 +50,9 @@ function VideoConference(_a) {
|
|
|
47
50
|
const screenShareTracks = tracks.filter(components_core_1.isTrackReference).filter((track) => track.publication.source === livekit_client_1.Track.Source.ScreenShare);
|
|
48
51
|
const focusTrack = (_b = (0, components_react_1.usePinnedTracks)(layoutContext)) === null || _b === void 0 ? void 0 : _b[0];
|
|
49
52
|
const carouselTracks = tracks.filter((track) => !(0, components_core_1.isEqualTrackRef)(track, focusTrack));
|
|
50
|
-
|
|
53
|
+
// HOOKS
|
|
54
|
+
(0, useLiveStreamCheck_1.useLivestreamCheck)();
|
|
55
|
+
(0, react_1.useEffect)(() => {
|
|
51
56
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
52
57
|
// If screen share tracks are published, and no pin is set explicitly, auto set the screen share.
|
|
53
58
|
if (screenShareTracks.some((track) => track.publication.isSubscribed) && lastAutoFocusedScreenShareTrack.current === null) {
|
|
@@ -88,7 +93,7 @@ function VideoConference(_a) {
|
|
|
88
93
|
participants,
|
|
89
94
|
speakerFocused
|
|
90
95
|
]);
|
|
91
|
-
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-video-conference" }, props, { children: [(0, components_core_1.isWeb)() && ((0, jsx_runtime_1.jsxs)(components_react_1.LayoutContextProvider, Object.assign({ value: layoutContext, onPinChange: handleFocusStateChange, onWidgetChange: widgetUpdate }, { children: [(0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-video-conference-inner" }, { children: [!focusTrack ? ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-grid-layout-wrapper" }, { children: (0, jsx_runtime_1.jsx)(components_react_1.GridLayout, Object.assign({ tracks: tracks }, { children: (0, jsx_runtime_1.jsx)(ParticipantTile_1.ParticipantTile, {}) })) }))) : ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-focus-layout-wrapper" }, { children: (0, jsx_runtime_1.jsxs)(
|
|
96
|
+
return ((0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-video-conference" }, props, { children: [(0, components_core_1.isWeb)() && ((0, jsx_runtime_1.jsxs)(components_react_1.LayoutContextProvider, Object.assign({ value: layoutContext, onPinChange: handleFocusStateChange, onWidgetChange: widgetUpdate }, { children: [(0, jsx_runtime_1.jsxs)("div", Object.assign({ className: "lk-video-conference-inner" }, { children: [!focusTrack ? ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-grid-layout-wrapper" }, { children: (0, jsx_runtime_1.jsx)(components_react_1.GridLayout, Object.assign({ tracks: tracks }, { children: (0, jsx_runtime_1.jsx)(ParticipantTile_1.ParticipantTile, {}) })) }))) : ((0, jsx_runtime_1.jsx)("div", Object.assign({ className: "lk-focus-layout-wrapper" }, { children: (0, jsx_runtime_1.jsxs)(FocusLayout_1.FocusLayoutContainer, { children: [!hideParticipantsList && ((0, jsx_runtime_1.jsx)(components_react_1.CarouselLayout, Object.assign({ tracks: carouselTracks }, { children: (0, jsx_runtime_1.jsx)(ParticipantTile_1.ParticipantTile, {}) }))), focusTrack && (0, jsx_runtime_1.jsx)(FocusLayout_1.FocusLayout, { trackRef: focusTrack })] }) }))), (0, jsx_runtime_1.jsx)(ControlBar_1.ControlBar, { controls: Object.assign({
|
|
92
97
|
chat: !disableChat,
|
|
93
98
|
microphone: !disableMicrophone,
|
|
94
99
|
camera: !disableCamera,
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom hook for monitoring livestream.
|
|
3
|
+
* @param {number} warningThreshold
|
|
4
|
+
* @param showWarnings
|
|
5
|
+
* @param performDisconnect
|
|
6
|
+
*/
|
|
7
|
+
export declare function useLivestreamCheck(warningThreshold?: number, showWarnings?: boolean, performDisconnect?: boolean): {
|
|
8
|
+
timeRemaining: number;
|
|
9
|
+
isExpiringSoon: boolean;
|
|
10
|
+
isExpired: boolean;
|
|
11
|
+
};
|