@100mslive/roomkit-react 0.3.18 → 0.3.19-alpha.1

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.
@@ -1,118 +0,0 @@
1
- import React, { useState } from 'react';
2
- import { selectLocalPeerID, useHMSStore, useScreenShare } from '@100mslive/react-sdk';
3
- import { ChevronDownIcon, ChevronUpIcon, MusicIcon, ShareScreenIcon, VideoPlayerIcon } from '@100mslive/react-icons';
4
- import { Box, Dropdown, Flex, Text, Tooltip } from '../../../';
5
- import { useUISettings } from '../AppData/useUISettings';
6
- import { useScreenshareAudio } from '../hooks/useScreenshareAudio';
7
- import { UI_SETTINGS } from '../../common/constants';
8
-
9
- export const getRecordingText = ({ isBrowserRecordingOn, isServerRecordingOn, isHLSRecordingOn }, delimiter = ', ') => {
10
- if (!isBrowserRecordingOn && !isServerRecordingOn && !isHLSRecordingOn) {
11
- return '';
12
- }
13
- const title = [];
14
- if (isBrowserRecordingOn) {
15
- title.push('Browser');
16
- }
17
- if (isServerRecordingOn) {
18
- title.push('Server');
19
- }
20
- if (isHLSRecordingOn) {
21
- title.push('HLS');
22
- }
23
- return title.join(delimiter);
24
- };
25
-
26
- /**
27
- * Display state of recording, streaming, playlist, whiteboard
28
- */
29
- export const AdditionalRoomState = () => {
30
- const isAudioOnly = useUISettings(UI_SETTINGS.isAudioOnly);
31
- const screenshareAudio = useScreenshareAudio();
32
- const [open, setOpen] = useState(false);
33
- const isAudioshareInactive = [
34
- !screenshareAudio.peer || !screenshareAudio.track,
35
- !screenshareAudio.peer?.isLocal && !screenshareAudio.track?.enabled,
36
- ].some(Boolean);
37
-
38
- const localPeerID = useHMSStore(selectLocalPeerID);
39
- const { screenSharingPeerName, screenSharingPeerId, screenShareVideoTrackId } = useScreenShare();
40
-
41
- const isVideoScreenSharingOn = !!screenShareVideoTrackId;
42
- const shouldShowScreenShareState = isAudioOnly && isVideoScreenSharingOn;
43
- const shouldShowVideoState = isAudioOnly;
44
- if (isAudioshareInactive && !shouldShowScreenShareState && !shouldShowVideoState) {
45
- return null;
46
- }
47
-
48
- return (
49
- <Dropdown.Root open={open} onOpenChange={setOpen}>
50
- <Dropdown.Trigger asChild>
51
- <Flex
52
- align="center"
53
- css={{
54
- color: '$on_primary_high',
55
- borderRadius: '$1',
56
- border: '1px solid $on_surface_low',
57
- padding: '$4',
58
- '@sm': { display: 'none' },
59
- }}
60
- data-testid="record_status_dropdown"
61
- >
62
- {!isAudioshareInactive && (
63
- <Tooltip title="Screenshare Audio">
64
- <Flex align="center" css={{ color: '$on_primary_high', mx: '$2' }}>
65
- <MusicIcon width={24} height={24} />
66
- </Flex>
67
- </Tooltip>
68
- )}
69
- {shouldShowScreenShareState && (
70
- <Tooltip title="Screenshare">
71
- <Flex align="center" css={{ color: '$on_primary_high', mx: '$2' }}>
72
- <ShareScreenIcon width={24} height={24} />
73
- </Flex>
74
- </Tooltip>
75
- )}
76
- {shouldShowVideoState && (
77
- <Tooltip title="video playlist">
78
- <Flex align="center" css={{ color: '$on_primary_high', mx: '$2' }}>
79
- <VideoPlayerIcon width={24} height={24} />
80
- </Flex>
81
- </Tooltip>
82
- )}
83
- <Box css={{ '@lg': { display: 'none' }, color: '$on_surface_low' }}>
84
- {open ? <ChevronUpIcon /> : <ChevronDownIcon />}
85
- </Box>
86
- </Flex>
87
- </Dropdown.Trigger>
88
- <Dropdown.Content sideOffset={5} align="end" css={{ w: '$60' }}>
89
- {!isAudioshareInactive && (
90
- <Dropdown.Item css={{ color: '$on_primary_high' }}>
91
- <MusicIcon width={24} height={24} />
92
- <Text variant="sm" css={{ ml: '$2', flex: '1 1 0' }}>
93
- Music is playing
94
- </Text>
95
- <Text
96
- variant="sm"
97
- css={{ color: '$alert_error_default', ml: '$2', cursor: 'pointer' }}
98
- onClick={e => {
99
- e.preventDefault();
100
- screenshareAudio.onToggle();
101
- }}
102
- >
103
- {screenshareAudio.muted ? 'Unmute' : 'Mute'}
104
- </Text>
105
- </Dropdown.Item>
106
- )}
107
- {shouldShowScreenShareState && (
108
- <Dropdown.Item css={{ color: '$on_primary_high' }}>
109
- <ShareScreenIcon width={24} height={24} />
110
- <Text variant="sm" css={{ ml: '$2', flex: '1 1 0' }}>
111
- {`Shared by: ${screenSharingPeerId === localPeerID ? 'You' : screenSharingPeerName}`}
112
- </Text>
113
- </Dropdown.Item>
114
- )}
115
- </Dropdown.Content>
116
- </Dropdown.Root>
117
- );
118
- };