@100mslive/roomkit-react 0.1.0 → 0.1.2-alpha.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +18 -0
- package/dist/Accordion/Accordion.d.ts +62 -138
- package/dist/Accordion/index.d.ts +62 -138
- package/dist/{ActiveSpeakerView-H3VYXANB.js → ActiveSpeakerView-4XPIRZOK.js} +6 -6
- package/dist/{HLSView-6BVBCQM7.css → ActiveSpeakerView-ADEYHQMU.css} +2 -2
- package/dist/{PinnedTrackView-QQ5FDXJX.css.map → ActiveSpeakerView-ADEYHQMU.css.map} +2 -2
- package/dist/Avatar/Avatar.d.ts +31 -69
- package/dist/Button/Button.d.ts +31 -69
- package/dist/Checkbox/Checkbox.d.ts +62 -138
- package/dist/Collapsible/Collapsible.d.ts +93 -207
- package/dist/Divider/Divider.d.ts +62 -138
- package/dist/Dropdown/Dropdown.d.ts +372 -828
- package/dist/Fieldset/Fieldset.d.ts +31 -69
- package/dist/Footer/Footer.d.ts +248 -552
- package/dist/{conference-KN6OKGDU.css → HLSView-DWEEMZ6Z.css} +2 -2
- package/dist/{HLSView-6BVBCQM7.css.map → HLSView-DWEEMZ6Z.css.map} +2 -2
- package/dist/{HLSView-3RDXRV7Y.js → HLSView-I26CVF5U.js} +16 -16
- package/dist/HLSView-I26CVF5U.js.map +7 -0
- package/dist/IconButton/IconButton.d.ts +31 -69
- package/dist/Input/Input.d.ts +189 -417
- package/dist/Label/Label.d.ts +31 -69
- package/dist/Layout/Box.d.ts +31 -69
- package/dist/Layout/Flex.d.ts +31 -69
- package/dist/Link/Link.d.ts +31 -69
- package/dist/Modal/Dialog.d.ts +248 -552
- package/dist/Modal/DialogContent.d.ts +217 -483
- package/dist/Pagination/StyledPagination.d.ts +124 -276
- package/dist/{PinnedTrackView-QQ5FDXJX.css → PinnedTrackView-5DPVVOZW.css} +2 -2
- package/dist/{conference-KN6OKGDU.css.map → PinnedTrackView-5DPVVOZW.css.map} +2 -2
- package/dist/{PinnedTrackView-453PELNU.js → PinnedTrackView-GGTCNH5V.js} +6 -6
- package/dist/Popover/index.d.ts +93 -207
- package/dist/Prebuilt/provider/roomLayoutProvider/constants/index.d.ts +2 -0
- package/dist/Prebuilt/provider/roomLayoutProvider/hooks/useFetchRoomLayout.d.ts +9 -0
- package/dist/Prebuilt/provider/roomLayoutProvider/index.d.ts +9 -0
- package/dist/Progress/index.d.ts +62 -138
- package/dist/RadioGroup/RadioGroup.d.ts +93 -207
- package/dist/ReactSelect/ReactSelect.d.ts +310 -690
- package/dist/Select/Select.d.ts +93 -207
- package/dist/Slider/Slider.d.ts +31 -69
- package/dist/Stats/StyledStats.d.ts +186 -414
- package/dist/Switch/Switch.d.ts +31 -69
- package/dist/Tabs/Tabs.d.ts +124 -276
- package/dist/Text/Text.d.ts +31 -69
- package/dist/Theme/ThemeProvider.d.ts +63 -140
- package/dist/Theme/base.config.d.ts +31 -53
- package/dist/Theme/index.d.ts +0 -1
- package/dist/Theme/stitches.config.d.ts +404 -915
- package/dist/TileMenu/StyledMenuTile.d.ts +217 -483
- package/dist/Toast/Toast.d.ts +187 -415
- package/dist/Video/Video.d.ts +31 -69
- package/dist/VideoList/StyledVideoList.d.ts +93 -207
- package/dist/VideoTile/StyledVideoTile.d.ts +279 -621
- package/dist/{VirtualBackground-LHYBWUT5.js → VirtualBackground-ZRRE4DUA.js} +4 -3
- package/dist/{VirtualBackground-LHYBWUT5.js.map → VirtualBackground-ZRRE4DUA.js.map} +2 -2
- package/dist/{chunk-KYYP6ZVK.js → chunk-4ISMCWQA.js} +49 -146
- package/dist/chunk-4ISMCWQA.js.map +7 -0
- package/dist/{chunk-7YUYZ64D.js → chunk-KKLZ7K2L.js} +577 -898
- package/dist/chunk-KKLZ7K2L.js.map +7 -0
- package/dist/{chunk-HCAGFNXW.js → chunk-LUND6FLY.js} +1490 -1134
- package/dist/chunk-LUND6FLY.js.map +7 -0
- package/dist/chunk-MYK3T45M.js +58 -0
- package/dist/chunk-MYK3T45M.js.map +7 -0
- package/dist/{chunk-XRJXE6UO.js → chunk-THORW2WT.js} +4 -4
- package/dist/{chunk-XRJXE6UO.js.map → chunk-THORW2WT.js.map} +1 -1
- package/dist/{conference-IDNRO4WK.js → conference-5TDUAQ6K.js} +593 -532
- package/dist/conference-5TDUAQ6K.js.map +7 -0
- package/dist/{ActiveSpeakerView-REZLWPPI.css → conference-BDCDGBIS.css} +2 -2
- package/dist/{ActiveSpeakerView-REZLWPPI.css.map → conference-BDCDGBIS.css.map} +2 -2
- package/dist/index.cjs.css +1 -1
- package/dist/index.cjs.css.map +2 -2
- package/dist/index.cjs.js +3450 -3418
- package/dist/index.cjs.js.map +4 -4
- package/dist/index.css +1 -1
- package/dist/index.css.map +2 -2
- package/dist/index.js +4 -8
- package/dist/meta.cjs.json +761 -490
- package/dist/meta.esbuild.json +857 -589
- package/dist/{transcription-BTSB7FZH.js → transcription-PYTSSAOB.js} +3 -3
- package/package.json +14 -9
- package/src/Accordion/Accordion.tsx +3 -3
- package/src/AudioLevel/AudioLevel.tsx +1 -1
- package/src/Avatar/Avatar.tsx +8 -3
- package/src/Button/Button.tsx +76 -20
- package/src/Checkbox/Checkbox.tsx +4 -4
- package/src/Collapsible/Collapsible.tsx +1 -1
- package/src/Divider/Divider.tsx +2 -2
- package/src/Divider/HorizontalDivider.stories.tsx +2 -2
- package/src/Divider/VerticalDivider.stories.tsx +1 -1
- package/src/Dropdown/Dropdown.stories.tsx +3 -3
- package/src/Dropdown/Dropdown.tsx +16 -14
- package/src/IconButton/IconButton.tsx +8 -7
- package/src/Input/Input.tsx +9 -8
- package/src/Input/PasswordInput.stories.tsx +2 -2
- package/src/Label/Label.tsx +1 -1
- package/src/Link/Link.tsx +4 -4
- package/src/Loading/Loading.tsx +7 -10
- package/src/Modal/Dialog.stories.tsx +2 -2
- package/src/Modal/DialogContent.tsx +3 -3
- package/src/Pagination/StyledPagination.tsx +4 -4
- package/src/Popover/Popover.stories.tsx +5 -5
- package/src/Popover/index.tsx +1 -1
- package/src/Prebuilt/App.jsx +101 -68
- package/src/Prebuilt/IconButton.jsx +2 -2
- package/src/Prebuilt/Prebuilt.stories.tsx +8 -2
- package/src/Prebuilt/common/constants.js +0 -1
- package/src/Prebuilt/common/utils.js +0 -6
- package/src/Prebuilt/components/AppData/AppData.jsx +7 -4
- package/src/Prebuilt/components/AppData/useUISettings.js +0 -4
- package/src/Prebuilt/components/AudioVideoToggle.jsx +73 -20
- package/src/Prebuilt/components/BottomActionSheet/BottomActionSheet.jsx +1 -1
- package/src/Prebuilt/components/Chat/Chat.jsx +6 -2
- package/src/Prebuilt/components/Chat/ChatBody.jsx +13 -11
- package/src/Prebuilt/components/Chat/ChatFooter.jsx +2 -2
- package/src/Prebuilt/components/Chat/ChatHeader.jsx +3 -3
- package/src/Prebuilt/components/Chat/ChatSelector.jsx +2 -2
- package/src/Prebuilt/components/Chat/useEmojiPickerStyles.js +6 -6
- package/src/Prebuilt/components/Chip.jsx +24 -0
- package/src/Prebuilt/components/Connection/ConnectionIndicator.jsx +6 -6
- package/src/Prebuilt/components/Connection/TileConnection.jsx +2 -2
- package/src/Prebuilt/components/Connection/connectionQualityUtils.js +4 -4
- package/src/Prebuilt/components/EmojiReaction.jsx +13 -10
- package/src/Prebuilt/components/ErrorBoundary.jsx +2 -2
- package/src/Prebuilt/components/FullPageProgress.jsx +5 -3
- package/src/Prebuilt/components/GoLiveButton.jsx +1 -4
- package/src/Prebuilt/components/HMSVideo/HLSQualitySelector.jsx +2 -2
- package/src/Prebuilt/components/HMSVideo/PlayButton.jsx +1 -1
- package/src/Prebuilt/components/HMSVideo/VideoProgress.jsx +3 -3
- package/src/Prebuilt/components/HMSVideo/VideoTime.jsx +3 -1
- package/src/Prebuilt/components/HMSVideo/VolumeControl.jsx +1 -1
- package/src/Prebuilt/components/Header/AdditionalRoomState.jsx +17 -17
- package/src/Prebuilt/components/Header/AmbientMusic.jsx +1 -1
- package/src/Prebuilt/components/Header/ConferencingHeader.jsx +4 -6
- package/src/Prebuilt/components/Header/HeaderComponents.jsx +10 -5
- package/src/Prebuilt/components/Header/ParticipantFilter.jsx +2 -2
- package/src/Prebuilt/components/Header/ParticipantList.jsx +2 -2
- package/src/Prebuilt/components/Header/StreamActions.jsx +9 -19
- package/src/Prebuilt/components/Header/StreamingHeader.jsx +5 -6
- package/src/Prebuilt/components/HlsStatsOverlay.jsx +2 -2
- package/src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.jsx +102 -0
- package/src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.stories.tsx +40 -0
- package/src/Prebuilt/components/LeaveRoom.jsx +11 -11
- package/src/Prebuilt/components/MetaActions.jsx +2 -2
- package/src/Prebuilt/components/MoreSettings/BulkRoleChangeModal.jsx +2 -2
- package/src/Prebuilt/components/MoreSettings/ChangeSelfRole.jsx +1 -1
- package/src/Prebuilt/components/MoreSettings/MoreSettings.jsx +1 -0
- package/src/Prebuilt/components/Notifications/HLSFailureModal.jsx +69 -0
- package/src/Prebuilt/components/Notifications/Notifications.jsx +1 -3
- package/src/Prebuilt/components/Notifications/PermissionErrorModal.jsx +108 -26
- package/src/Prebuilt/components/Notifications/ReconnectNotifications.jsx +1 -1
- package/src/Prebuilt/components/PIP/pipUtils.js +2 -2
- package/src/Prebuilt/components/Playlist/Playlist.jsx +4 -4
- package/src/Prebuilt/components/Playlist/PlaylistControls.jsx +3 -3
- package/src/Prebuilt/components/Playlist/PlaylistItem.jsx +3 -3
- package/src/Prebuilt/components/Playlist/VideoPlayer.jsx +4 -4
- package/src/Prebuilt/components/PostLeave.jsx +4 -4
- package/src/Prebuilt/components/Preview/PreviewContainer.jsx +17 -6
- package/src/Prebuilt/components/Preview/PreviewForm.jsx +74 -0
- package/src/Prebuilt/components/Preview/PreviewJoin.jsx +100 -37
- package/src/Prebuilt/components/RoleChangeModal.jsx +3 -3
- package/src/Prebuilt/components/ScreenshareDisplay.jsx +2 -2
- package/src/Prebuilt/components/Settings/DeviceSettings.jsx +3 -9
- package/src/Prebuilt/components/Settings/SettingsModal.jsx +8 -32
- package/src/Prebuilt/components/Settings/StartRecording.jsx +4 -12
- package/src/Prebuilt/components/Settings/SwitchWithLabel.jsx +2 -3
- package/src/Prebuilt/components/Settings/common.js +26 -0
- package/src/Prebuilt/components/StatsForNerds.jsx +5 -5
- package/src/Prebuilt/components/Streaming/Common.jsx +11 -11
- package/src/Prebuilt/components/Streaming/HLSStreaming.jsx +6 -12
- package/src/Prebuilt/components/Streaming/RTMPStreaming.jsx +4 -6
- package/src/Prebuilt/components/Streaming/StreamingLanding.jsx +4 -4
- package/src/Prebuilt/components/TileMenu.jsx +7 -7
- package/src/Prebuilt/components/Toast/ToastConfig.jsx +12 -20
- package/src/Prebuilt/components/conference.jsx +9 -2
- package/src/Prebuilt/components/hooks/useDropdownSelection.jsx +1 -4
- package/src/Prebuilt/components/pdfAnnotator/pdfErrorView.jsx +2 -2
- package/src/Prebuilt/components/pdfAnnotator/pdfFileOptions.jsx +1 -1
- package/src/Prebuilt/components/pdfAnnotator/pdfHeader.jsx +1 -1
- package/src/Prebuilt/components/pdfAnnotator/pdfInfo.jsx +2 -2
- package/src/Prebuilt/components/pdfAnnotator/shareScreenOptions.jsx +12 -20
- package/src/Prebuilt/components/pdfAnnotator/uploadedFile.jsx +4 -4
- package/src/Prebuilt/images/Logo.svg +8 -0
- package/src/Prebuilt/images/first_person.png +0 -0
- package/src/Prebuilt/images/rtmp.png +0 -0
- package/src/Prebuilt/index.d.ts +6 -1
- package/src/Prebuilt/layouts/HLSView.jsx +1 -1
- package/src/Prebuilt/layouts/InsetView.jsx +0 -3
- package/src/Prebuilt/layouts/NonPublisherView.jsx +2 -2
- package/src/Prebuilt/layouts/SidePane.jsx +1 -1
- package/src/Prebuilt/layouts/WaitingView.jsx +2 -2
- package/src/Prebuilt/layouts/mainView.jsx +42 -5
- package/src/Prebuilt/plugins/FlyingEmoji.jsx +2 -2
- package/src/Prebuilt/plugins/VirtualBackground/VirtualBackground.jsx +1 -0
- package/src/Prebuilt/plugins/whiteboard/ToggleWhiteboard.jsx +1 -3
- package/src/Prebuilt/primitives/DialogContent.jsx +4 -4
- package/src/Prebuilt/primitives/DropdownTrigger.jsx +3 -3
- package/src/Prebuilt/provider/roomLayoutProvider/constants/index.ts +33 -0
- package/src/Prebuilt/provider/roomLayoutProvider/hooks/useFetchRoomLayout.ts +57 -0
- package/src/Prebuilt/provider/roomLayoutProvider/index.tsx +26 -0
- package/src/Progress/index.tsx +2 -2
- package/src/RadioGroup/RadioGroup.tsx +3 -3
- package/src/ReactSelect/ReactSelect.stories.tsx +7 -7
- package/src/ReactSelect/ReactSelect.tsx +8 -8
- package/src/Select/Select.tsx +6 -6
- package/src/Slider/Slider.tsx +5 -5
- package/src/Stats/Stats.tsx +12 -2
- package/src/Stats/StyledStats.tsx +3 -3
- package/src/Switch/Switch.tsx +5 -5
- package/src/Tabs/Tabs.stories.tsx +2 -2
- package/src/Tabs/Tabs.tsx +2 -2
- package/src/Text/Text.tsx +2 -2
- package/src/Theme/ThemeProvider.tsx +4 -7
- package/src/Theme/ThemeStory.jsx +17 -19
- package/src/Theme/base.config.ts +31 -59
- package/src/Theme/index.tsx +0 -1
- package/src/Theme/stitches.config.ts +2 -7
- package/src/TileMenu/StyledMenuTile.tsx +11 -8
- package/src/Toast/Toast.tsx +10 -9
- package/src/Tooltip/Tooltip.stories.tsx +1 -1
- package/src/Tooltip/Tooltip.tsx +4 -4
- package/src/Video/Video.tsx +1 -1
- package/src/VideoTile/StyledVideoTile.tsx +12 -12
- package/src/assets/android-perm-0.png +0 -0
- package/src/assets/android-perm-1.png +0 -0
- package/src/assets/ios-perm-0.png +0 -0
- package/src/fixtures/chats.ts +1 -1
- package/dist/HLSView-3RDXRV7Y.js.map +0 -7
- package/dist/Theme/themes.d.ts +0 -64
- package/dist/chunk-7YUYZ64D.js.map +0 -7
- package/dist/chunk-HCAGFNXW.js.map +0 -7
- package/dist/chunk-KYYP6ZVK.js.map +0 -7
- package/dist/chunk-ULXGBUSC.js +0 -65
- package/dist/chunk-ULXGBUSC.js.map +0 -7
- package/dist/conference-IDNRO4WK.js.map +0 -7
- package/src/Prebuilt/components/Preview/PreviewName.jsx +0 -37
- package/src/Prebuilt/components/Streaming/RTMPIcon.jsx +0 -24
- package/src/Prebuilt/hms.js +0 -7
- package/src/Prebuilt/plugins/confetti.jsx +0 -60
- package/src/Theme/themes.ts +0 -70
- /package/dist/{ActiveSpeakerView-H3VYXANB.js.map → ActiveSpeakerView-4XPIRZOK.js.map} +0 -0
- /package/dist/{PinnedTrackView-453PELNU.js.map → PinnedTrackView-GGTCNH5V.js.map} +0 -0
- /package/dist/{transcription-BTSB7FZH.js.map → transcription-PYTSSAOB.js.map} +0 -0
@@ -1,5 +1,4 @@
|
|
1
1
|
import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
2
|
-
import { useMedia } from 'react-use';
|
3
2
|
import type { Theme } from './stitches.config';
|
4
3
|
import { createTheme, theme } from './stitches.config';
|
5
4
|
import useSSR from './useSSR';
|
@@ -11,9 +10,7 @@ const defaultAspectRatio = {
|
|
11
10
|
|
12
11
|
export enum ThemeTypes {
|
13
12
|
// eslint-disable-next-line no-unused-vars
|
14
|
-
|
15
|
-
// eslint-disable-next-line no-unused-vars
|
16
|
-
dark = 'dark',
|
13
|
+
default = 'default',
|
17
14
|
}
|
18
15
|
|
19
16
|
export type ThemeContextValue = {
|
@@ -36,7 +33,7 @@ export type ThemeProviderProps = {
|
|
36
33
|
};
|
37
34
|
|
38
35
|
const defaultContext = {
|
39
|
-
themeType: ThemeTypes.
|
36
|
+
themeType: ThemeTypes.default,
|
40
37
|
theme,
|
41
38
|
aspectRatio: { width: 1, height: 1 },
|
42
39
|
toggleTheme: (_themeToUpdateTo?: ThemeTypes) => {
|
@@ -58,7 +55,7 @@ export const HMSThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderPro
|
|
58
55
|
aspectRatio = defaultAspectRatio,
|
59
56
|
children,
|
60
57
|
}) => {
|
61
|
-
const systemTheme =
|
58
|
+
const systemTheme = ThemeTypes.default;
|
62
59
|
const [currentTheme, setCurrentTheme] = useState(themeType || systemTheme);
|
63
60
|
const previousClassName = useRef('');
|
64
61
|
const { isBrowser } = useSSR();
|
@@ -81,7 +78,7 @@ export const HMSThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderPro
|
|
81
78
|
setCurrentTheme(themeToUpdateTo);
|
82
79
|
return;
|
83
80
|
}
|
84
|
-
setCurrentTheme(
|
81
|
+
setCurrentTheme(ThemeTypes.default);
|
85
82
|
},
|
86
83
|
[currentTheme],
|
87
84
|
);
|
package/src/Theme/ThemeStory.jsx
CHANGED
@@ -7,48 +7,46 @@ const ThemeStory = () => {
|
|
7
7
|
<ColorItem
|
8
8
|
title="theme.color.brand"
|
9
9
|
subtitle="Brand Variants"
|
10
|
-
colors={{ brandLight: '#74AAFF',
|
10
|
+
colors={{ brandLight: '#74AAFF', primary_default: '#2F80FF', brandDark: '#0B326F', brandDisabled: '#D8E7FF' }}
|
11
11
|
/>
|
12
12
|
<ColorItem
|
13
13
|
title="theme.color.text"
|
14
14
|
subtitle="Text Variants"
|
15
15
|
colors={{
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
textMedWhite: 'rgba(255, 255, 255, 0.72)',
|
20
|
-
textDarkWhite: 'rgba(255, 255, 255, 0.48)',
|
16
|
+
on_surface_high: 'rgba(250, 252, 255, 0.9)',
|
17
|
+
on_surface_medium: 'rgba(215, 227, 245, 0.8)',
|
18
|
+
on_surface_low: 'rgba(164, 176, 193, 0.5)',
|
21
19
|
}}
|
22
20
|
/>
|
23
21
|
<ColorItem
|
24
22
|
title="theme.color.surface"
|
25
23
|
subtitle="Surface Variants"
|
26
24
|
colors={{
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
25
|
+
surface_dimmer: '#06080A',
|
26
|
+
surface_dim: '#080B0F',
|
27
|
+
surface_default: '#0B0F15',
|
28
|
+
surface_bright: '#12161C',
|
29
|
+
surface_brighter: '#1F2228',
|
32
30
|
}}
|
33
31
|
/>
|
34
32
|
<ColorItem
|
35
33
|
title="theme.color.primary"
|
36
34
|
subtitle="Primary Variants"
|
37
35
|
colors={{
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
36
|
+
primary_bright: '#6DA6FF',
|
37
|
+
primary_default: '#2F80FF',
|
38
|
+
primary_dim: '#184080',
|
39
|
+
primary_disabled: '#D8E7FF',
|
42
40
|
}}
|
43
41
|
/>
|
44
42
|
<ColorItem
|
45
43
|
title="theme.color.secondary"
|
46
44
|
subtitle="Secondary Variants"
|
47
45
|
colors={{
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
secondary_bright: '#505863',
|
47
|
+
secondary_default: '#657080',
|
48
|
+
secondary_dim: '#1E2329',
|
49
|
+
secondary_disabled: '#DCE4EF',
|
52
50
|
}}
|
53
51
|
/>
|
54
52
|
</ColorPalette>
|
package/src/Theme/base.config.ts
CHANGED
@@ -4,65 +4,37 @@ import { defaultThemeMap as defaultStitchesThemeMap } from '@stitches/react';
|
|
4
4
|
export const baseConfig = {
|
5
5
|
theme: {
|
6
6
|
colors: {
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
// text variants when bg is accent (blue)
|
40
|
-
// same for both themes
|
41
|
-
textAccentHigh: '#FFFFFFFA',
|
42
|
-
textAccentMedium: '#FFFFFFB8',
|
43
|
-
textAccentDisabled: '#FFFFFF7A',
|
44
|
-
|
45
|
-
surfaceDefault: '#14171C',
|
46
|
-
surfaceLight: '#1D2229',
|
47
|
-
surfaceLighter: '#272E38',
|
48
|
-
surfaceDark: '#0F1115',
|
49
|
-
|
50
|
-
backgroundDefault: '#0B0D0F',
|
51
|
-
backgroundDark: '#090B0D',
|
52
|
-
backgroundDarker: '#040405',
|
53
|
-
|
54
|
-
primaryLight: '#66A1FF',
|
55
|
-
primaryDefault: '#2471ED',
|
56
|
-
primaryDark: '#143466',
|
57
|
-
primaryDisabled: '#3666B2',
|
58
|
-
secondaryLight: '#6B7D99',
|
59
|
-
secondaryDefault: '#475366',
|
60
|
-
secondaryDark: '#2D3440',
|
61
|
-
secondaryDisabled: '#242A33',
|
62
|
-
errorDefault: '#CC525F',
|
63
|
-
errorLight: '#D87983',
|
64
|
-
errorDark: '#9D2F3B',
|
65
|
-
errorDisabled: '#621D24',
|
7
|
+
primary_default: '#2572ED',
|
8
|
+
primary_bright: '#538DFF',
|
9
|
+
primary_dim: '#002D6D',
|
10
|
+
primary_disabled: '#004299',
|
11
|
+
on_primary_high: '#FFFFFF',
|
12
|
+
on_primary_medium: '#DADADA',
|
13
|
+
on_primary_low: '#ABABAB',
|
14
|
+
secondary_default: '#444954',
|
15
|
+
secondary_bright: '#70778B',
|
16
|
+
secondary_dim: '#293042',
|
17
|
+
secondary_disabled: '#404759',
|
18
|
+
on_secondary_high: '#FFFFFF',
|
19
|
+
on_secondary_medium: '#D3D9F0',
|
20
|
+
on_secondary_low: '#A4ABC0',
|
21
|
+
background_default: '#0B0E15',
|
22
|
+
background_dim: '#000000',
|
23
|
+
surface_default: '#191B23',
|
24
|
+
surface_bright: '#272A31',
|
25
|
+
surface_brighter: '#2E3038',
|
26
|
+
surface_dim: '#11131A',
|
27
|
+
on_surface_high: '#EFF0FA',
|
28
|
+
on_surface_medium: '#C5C6D0',
|
29
|
+
on_surface_low: '#8F9099',
|
30
|
+
border_default: '#1D1F27',
|
31
|
+
border_bright: '#272A31',
|
32
|
+
alert_success: '#36B37E',
|
33
|
+
alert_warning: '#FFAB00',
|
34
|
+
alert_error_default: '#C74E5B',
|
35
|
+
alert_error_bright: '#FFB2B6',
|
36
|
+
alert_error_brighter: '#FFEDEC',
|
37
|
+
alert_error_dim: '#270005',
|
66
38
|
},
|
67
39
|
shadows: {
|
68
40
|
sm: '0 0 4px 0 #0000004D',
|
package/src/Theme/index.tsx
CHANGED
@@ -2,7 +2,6 @@ import type * as Stitches from '@stitches/react';
|
|
2
2
|
import { createStitches } from '@stitches/react';
|
3
3
|
import merge from 'lodash.merge';
|
4
4
|
import { baseConfig, defaultMedia, defaultThemeMap, defaultUtils } from './base.config';
|
5
|
-
import { darkTheme, lightTheme } from './themes';
|
6
5
|
|
7
6
|
const HmsStitches = createStitches({
|
8
7
|
prefix: 'hms-ui',
|
@@ -10,7 +9,6 @@ const HmsStitches = createStitches({
|
|
10
9
|
...baseConfig.theme,
|
11
10
|
colors: {
|
12
11
|
...baseConfig.theme.colors,
|
13
|
-
...darkTheme.colors,
|
14
12
|
},
|
15
13
|
},
|
16
14
|
media: defaultMedia,
|
@@ -71,7 +69,7 @@ export const globalStyles = globalCss({
|
|
71
69
|
},
|
72
70
|
});
|
73
71
|
|
74
|
-
export type ThemeType = '
|
72
|
+
export type ThemeType = 'default';
|
75
73
|
export type Theme = typeof HmsStitches.theme;
|
76
74
|
|
77
75
|
/**
|
@@ -91,10 +89,7 @@ export const createTheme = ({
|
|
91
89
|
if (!themeType) {
|
92
90
|
throw new Error('Theme type is required');
|
93
91
|
}
|
94
|
-
return createThemeBase(
|
95
|
-
className || `${themeType}-theme`,
|
96
|
-
merge(baseConfig.theme, themeType === 'dark' ? darkTheme : lightTheme, theme || {}),
|
97
|
-
);
|
92
|
+
return createThemeBase(className || `${themeType}-theme`, merge(baseConfig.theme, theme || {}));
|
98
93
|
};
|
99
94
|
|
100
95
|
export type CSS = Stitches.CSS<typeof HmsStitches>;
|
@@ -12,20 +12,21 @@ const StyledTrigger = styled(Popover.Trigger, {
|
|
12
12
|
zIndex: 10,
|
13
13
|
width: '$13',
|
14
14
|
height: '$13',
|
15
|
-
color: '$
|
15
|
+
color: '$on_surface_high',
|
16
16
|
borderRadius: '$round',
|
17
|
-
backgroundColor: '$
|
17
|
+
backgroundColor: '$surface_bright',
|
18
|
+
cursor: 'pointer',
|
18
19
|
border: 'none',
|
19
20
|
...flexCenter,
|
20
21
|
'&:not([disabled]):focus': {
|
21
22
|
outline: 'none',
|
22
|
-
boxShadow: '0 0 0 3px $colors$
|
23
|
+
boxShadow: '0 0 0 3px $colors$primary_bright',
|
23
24
|
},
|
24
25
|
});
|
25
26
|
|
26
27
|
const StyledContent = styled(Popover.Content, {
|
27
28
|
fontFamily: '$sans',
|
28
|
-
backgroundColor: '$
|
29
|
+
backgroundColor: '$surface_bright',
|
29
30
|
padding: '$5 0',
|
30
31
|
display: 'flex',
|
31
32
|
flexDirection: 'column',
|
@@ -37,19 +38,21 @@ const StyledContent = styled(Popover.Content, {
|
|
37
38
|
|
38
39
|
const styledItem = {
|
39
40
|
fontSize: '$sm',
|
40
|
-
color: '$
|
41
|
+
color: '$on_surface_high',
|
41
42
|
display: 'flex',
|
42
43
|
alignItems: 'center',
|
43
44
|
padding: '$4 $6',
|
44
45
|
width: '100%',
|
46
|
+
backgroundColor: '$menuBg',
|
45
47
|
};
|
46
48
|
|
47
49
|
const StyledItemButton = styled('button', {
|
48
50
|
...styledItem,
|
49
51
|
height: '$14',
|
50
52
|
'&:hover': {
|
51
|
-
backgroundColor: '$
|
53
|
+
backgroundColor: '$surface_brighter',
|
52
54
|
},
|
55
|
+
cursor: 'pointer',
|
53
56
|
// TODO: default focus applied cause issues with this style
|
54
57
|
'&:focus': {
|
55
58
|
outline: 'none',
|
@@ -78,8 +81,8 @@ export const Flex = styled('div', {
|
|
78
81
|
});
|
79
82
|
|
80
83
|
const RemoveMenuItem = styled(StyledItemButton, {
|
81
|
-
color: '$
|
82
|
-
borderTop: '1px solid $
|
84
|
+
color: '$alert_error_default',
|
85
|
+
borderTop: '1px solid $border_bright',
|
83
86
|
});
|
84
87
|
|
85
88
|
interface MenuTileType {
|
package/src/Toast/Toast.tsx
CHANGED
@@ -38,13 +38,13 @@ const getToastVariant = (base: string) => {
|
|
38
38
|
|
39
39
|
const ToastRoot = styled(ToastPrimitives.Root, {
|
40
40
|
r: '$3',
|
41
|
-
bg: '$
|
41
|
+
bg: '$surface_default',
|
42
42
|
p: '$10',
|
43
43
|
display: 'flex',
|
44
44
|
flexDirection: 'column',
|
45
45
|
position: 'relative',
|
46
46
|
fontFamily: '$sans',
|
47
|
-
border: 'solid $space$px $
|
47
|
+
border: 'solid $space$px $border_bright',
|
48
48
|
overflow: 'hidden',
|
49
49
|
...toastAnimation,
|
50
50
|
'@sm': {
|
@@ -52,10 +52,10 @@ const ToastRoot = styled(ToastPrimitives.Root, {
|
|
52
52
|
},
|
53
53
|
variants: {
|
54
54
|
variant: {
|
55
|
-
standard: getToastVariant('$
|
56
|
-
warning: getToastVariant('$
|
57
|
-
error: getToastVariant('$
|
58
|
-
success: getToastVariant('$
|
55
|
+
standard: getToastVariant('$secondary_default'),
|
56
|
+
warning: getToastVariant('$alert_warning'),
|
57
|
+
error: getToastVariant('$alert_error_default'),
|
58
|
+
success: getToastVariant('$alert_success'),
|
59
59
|
},
|
60
60
|
},
|
61
61
|
defaultVariants: {
|
@@ -65,18 +65,19 @@ const ToastRoot = styled(ToastPrimitives.Root, {
|
|
65
65
|
|
66
66
|
const ToastTitle = styled(ToastPrimitives.Title, {
|
67
67
|
fontSize: '$md',
|
68
|
-
color: '$
|
68
|
+
color: '$on_surface_high',
|
69
69
|
fontWeight: '$semiBold',
|
70
70
|
display: 'flex',
|
71
71
|
alignItems: 'center',
|
72
72
|
justifyContent: 'space-between',
|
73
73
|
});
|
74
74
|
const ToastDescription = styled(ToastPrimitives.Description, {
|
75
|
-
color: '$
|
75
|
+
color: '$on_surface_medium',
|
76
76
|
});
|
77
77
|
const ToastClose = styled(ToastPrimitives.Close, {});
|
78
78
|
const ToastAction = styled(ToastPrimitives.Action, {
|
79
79
|
cursor: 'pointer',
|
80
|
+
background: 'none',
|
80
81
|
});
|
81
82
|
const ToastViewport = styled(ToastPrimitives.Viewport, {
|
82
83
|
position: 'fixed',
|
@@ -142,7 +143,7 @@ const HMSToast: React.FC<HMSToastProps> = ({
|
|
142
143
|
</ToastTitle>
|
143
144
|
{description ? (
|
144
145
|
<ToastDescription>
|
145
|
-
<Text variant="body1" css={{ fontWeight: '$regular', c: '$
|
146
|
+
<Text variant="body1" css={{ fontWeight: '$regular', c: '$on_surface_medium' }}>
|
146
147
|
{description}
|
147
148
|
</Text>
|
148
149
|
</ToastDescription>
|
@@ -39,7 +39,7 @@ const TooltipStoryWithString = (
|
|
39
39
|
export const ExampleWithString = TooltipStoryWithString.bind({});
|
40
40
|
|
41
41
|
const ExampleTitle = () => {
|
42
|
-
return <h3 style={{ color: '$
|
42
|
+
return <h3 style={{ color: '$on_primary_high' }}>This is title</h3>;
|
43
43
|
};
|
44
44
|
|
45
45
|
const TooltipStorywithReactNode = (
|
package/src/Tooltip/Tooltip.tsx
CHANGED
@@ -9,8 +9,8 @@ const TooltipBox = styled(BaseTooltip.Content, {
|
|
9
9
|
padding: '$2 $4',
|
10
10
|
fontSize: '$xs',
|
11
11
|
|
12
|
-
color: '$
|
13
|
-
backgroundColor: '$
|
12
|
+
color: '$on_surface_high',
|
13
|
+
backgroundColor: '$surface_bright',
|
14
14
|
'@media (prefers-reduced-motion: no-preference)': {
|
15
15
|
animationDuration: '400ms',
|
16
16
|
animationTimingFunction: 'cubic-bezier(0.16, 1, 0.3, 1)',
|
@@ -25,8 +25,8 @@ const TooltipBox = styled(BaseTooltip.Content, {
|
|
25
25
|
variants: {
|
26
26
|
outlined: {
|
27
27
|
true: {
|
28
|
-
backgroundColor: '$
|
29
|
-
border: 'solid $space$px $
|
28
|
+
backgroundColor: '$background_dim',
|
29
|
+
border: 'solid $space$px $border_bright',
|
30
30
|
},
|
31
31
|
},
|
32
32
|
},
|
package/src/Video/Video.tsx
CHANGED
@@ -18,7 +18,7 @@ const Container = styled('div', {
|
|
18
18
|
display: 'flex',
|
19
19
|
justifyContent: 'center',
|
20
20
|
alignItems: 'center',
|
21
|
-
background: '$
|
21
|
+
background: '$surface_default',
|
22
22
|
variants: {
|
23
23
|
transparentBg: {
|
24
24
|
true: {
|
@@ -40,7 +40,7 @@ const Overlay = styled('div', {
|
|
40
40
|
});
|
41
41
|
|
42
42
|
const Info = styled('div', {
|
43
|
-
color: '$
|
43
|
+
color: '$on_primary_high',
|
44
44
|
position: 'absolute',
|
45
45
|
bottom: '5px',
|
46
46
|
left: '50%',
|
@@ -56,18 +56,18 @@ const Info = styled('div', {
|
|
56
56
|
|
57
57
|
const AttributeBox = styled('div', {
|
58
58
|
position: 'absolute',
|
59
|
-
color: '$
|
59
|
+
color: '$on_primary_high',
|
60
60
|
});
|
61
61
|
|
62
62
|
const AudioIndicator = styled('div', {
|
63
63
|
position: 'absolute',
|
64
|
-
top: '$
|
65
|
-
right: '$
|
66
|
-
color: '$
|
67
|
-
bg: '$
|
64
|
+
top: '$4',
|
65
|
+
right: '$4',
|
66
|
+
color: '$on_primary_high',
|
67
|
+
bg: '$secondary_dim',
|
68
68
|
borderRadius: '$round',
|
69
|
-
width: '$
|
70
|
-
height: '$
|
69
|
+
width: '$14',
|
70
|
+
height: '$14',
|
71
71
|
mb: '5px',
|
72
72
|
...flexCenter,
|
73
73
|
variants: {
|
@@ -94,9 +94,9 @@ const AudioIndicator = styled('div', {
|
|
94
94
|
const FullScreenButton = styled('button', {
|
95
95
|
width: '2.25rem',
|
96
96
|
height: '2.25rem',
|
97
|
-
color: '$
|
97
|
+
color: '$on_surface_high',
|
98
98
|
borderRadius: '$round',
|
99
|
-
backgroundColor: '$
|
99
|
+
backgroundColor: '$surface_default',
|
100
100
|
display: 'flex',
|
101
101
|
justifyContent: 'center',
|
102
102
|
alignItems: 'center',
|
@@ -106,7 +106,7 @@ const FullScreenButton = styled('button', {
|
|
106
106
|
zIndex: 5,
|
107
107
|
'&:not([disabled]):focus': {
|
108
108
|
outline: 'none',
|
109
|
-
boxShadow: '0 0 0 3px $colors$
|
109
|
+
boxShadow: '0 0 0 3px $colors$primary_bright',
|
110
110
|
},
|
111
111
|
});
|
112
112
|
|
Binary file
|
Binary file
|
Binary file
|
package/src/fixtures/chats.ts
CHANGED
@@ -15,7 +15,7 @@ export const makeFakeMessage = (msg: string, sender: string): HMSMessage => {
|
|
15
15
|
};
|
16
16
|
|
17
17
|
export const fakeMessages = [
|
18
|
-
makeFakeMessage('Hello from
|
18
|
+
makeFakeMessage('Hello from 100ms', 'Yash'),
|
19
19
|
makeFakeMessage('This is a chat example', 'admin'),
|
20
20
|
makeFakeMessage('via the sendBroadcast action', 'Yash'),
|
21
21
|
makeFakeMessage('Our twitter handle @100mslive', '100ms'),
|
@@ -1,7 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"version": 3,
|
3
|
-
"sources": ["../src/Prebuilt/layouts/HLSView.jsx", "../src/Prebuilt/components/HlsStatsOverlay.jsx", "../src/Prebuilt/components/HMSVideo/index.js", "../src/Prebuilt/components/HMSVideo/Controls.jsx", "../src/Prebuilt/components/HMSVideo/HMSVideo.jsx", "../src/Prebuilt/components/HMSVideo/PlayButton.jsx", "../src/Prebuilt/components/HMSVideo/VideoProgress.jsx", "../src/Prebuilt/components/HMSVideo/HMSVIdeoUtils.js", "../src/Prebuilt/components/HMSVideo/VideoTime.jsx", "../src/Prebuilt/components/HMSVideo/VolumeControl.jsx", "../src/Prebuilt/components/HMSVideo/FullscreenButton.jsx", "../src/Prebuilt/components/HMSVideo/HLSAutoplayBlockedPrompt.jsx", "../src/Prebuilt/components/HMSVideo/HLSQualitySelector.jsx"],
|
4
|
-
"sourcesContent": ["import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useFullscreen, useToggle } from 'react-use';\nimport { HLSPlaybackState, HMSHLSPlayer, HMSHLSPlayerEvents } from '@100mslive/hls-player';\nimport screenfull from 'screenfull';\nimport { selectAppData, selectHLSState, useHMSActions, useHMSStore } from '@100mslive/react-sdk';\nimport { ExpandIcon, ShrinkIcon } from '@100mslive/react-icons';\nimport { HlsStatsOverlay } from '../components/HlsStatsOverlay';\nimport { HMSVideoPlayer } from '../components/HMSVideo';\nimport { FullScreenButton } from '../components/HMSVideo/FullscreenButton';\nimport { HLSAutoplayBlockedPrompt } from '../components/HMSVideo/HLSAutoplayBlockedPrompt';\nimport { HLSQualitySelector } from '../components/HMSVideo/HLSQualitySelector';\nimport { ToastManager } from '../components/Toast/ToastManager';\nimport { IconButton } from '../../IconButton';\nimport { Box, Flex } from '../../Layout';\nimport { Loading } from '../../Loading';\nimport { Text } from '../../Text';\nimport { useTheme } from '../../Theme';\nimport { Tooltip } from '../../Tooltip';\nimport { APP_DATA, EMOJI_REACTION_TYPE } from '../common/constants';\n\nlet hlsPlayer;\n\nconst HLSView = () => {\n const videoRef = useRef(null);\n const hlsViewRef = useRef(null);\n const hlsState = useHMSStore(selectHLSState);\n const enablHlsStats = useHMSStore(selectAppData(APP_DATA.hlsStats));\n const hmsActions = useHMSActions();\n const { themeType } = useTheme();\n let [hlsStatsState, setHlsStatsState] = useState(null);\n const hlsUrl = hlsState.variants[0]?.url;\n const [availableLayers, setAvailableLayers] = useState([]);\n const [isVideoLive, setIsVideoLive] = useState(true);\n const [isUserSelectedAuto, setIsUserSelectedAuto] = useState(true);\n const [currentSelectedQuality, setCurrentSelectedQuality] = useState(null);\n const [isHlsAutoplayBlocked, setIsHlsAutoplayBlocked] = useState(false);\n const [isPaused, setIsPaused] = useState(false);\n const isFullScreenSupported = screenfull.isEnabled;\n const [show, toggle] = useToggle(false);\n const isFullScreen = useFullscreen(hlsViewRef, show, {\n onClose: () => toggle(false),\n });\n const [showLoader, setShowLoader] = useState(false);\n\n // FIXME: move this logic to player controller in next release\n useEffect(() => {\n /**\n * @type {HTMLVideoElement} videoEl\n */\n const videoEl = videoRef.current;\n const showLoader = () => setShowLoader(true);\n const hideLoader = () => setShowLoader(false);\n videoEl?.addEventListener('playing', hideLoader);\n videoEl?.addEventListener('waiting', showLoader);\n return () => {\n videoEl?.removeEventListener('playing', hideLoader);\n videoEl?.removeEventListener('waiting', showLoader);\n };\n }, []);\n\n /**\n * initialize HMSHLSPlayer and add event listeners.\n */\n useEffect(() => {\n let videoEl = videoRef.current;\n const manifestLoadedHandler = ({ layers }) => {\n setAvailableLayers(layers);\n };\n const layerUpdatedHandler = ({ layer }) => {\n setCurrentSelectedQuality(layer);\n };\n const metadataLoadedHandler = ({ payload, ...rest }) => {\n const parsePayload = str => {\n try {\n return JSON.parse(str);\n } catch (e) {\n return str;\n }\n };\n // parse payload and extract start_time and payload\n const duration = rest.duration;\n const parsedPayload = parsePayload(payload);\n switch (parsedPayload.type) {\n case EMOJI_REACTION_TYPE:\n window.showFlyingEmoji(parsedPayload?.emojiId, parsedPayload?.senderId);\n break;\n default: {\n const toast = {\n title: `Payload from timed Metadata ${parsedPayload}`,\n duration: duration || 3000,\n };\n console.debug('Added toast ', JSON.stringify(toast));\n ToastManager.addToast(toast);\n break;\n }\n }\n };\n const handleError = data => {\n console.error('[HLSView] error in hls', `${data}`);\n };\n const handleNoLongerLive = ({ isLive }) => {\n setIsVideoLive(isLive);\n };\n\n const playbackEventHandler = data => setIsPaused(data.state === HLSPlaybackState.paused);\n\n const handleAutoplayBlock = data => setIsHlsAutoplayBlocked(!!data);\n if (videoEl && hlsUrl) {\n hlsPlayer = new HMSHLSPlayer(hlsUrl, videoEl);\n hlsPlayer.on(HMSHLSPlayerEvents.SEEK_POS_BEHIND_LIVE_EDGE, handleNoLongerLive);\n hlsPlayer.on(HMSHLSPlayerEvents.TIMED_METADATA_LOADED, metadataLoadedHandler);\n hlsPlayer.on(HMSHLSPlayerEvents.ERROR, handleError);\n hlsPlayer.on(HMSHLSPlayerEvents.PLAYBACK_STATE, playbackEventHandler);\n hlsPlayer.on(HMSHLSPlayerEvents.AUTOPLAY_BLOCKED, handleAutoplayBlock);\n\n hlsPlayer.on(HMSHLSPlayerEvents.MANIFEST_LOADED, manifestLoadedHandler);\n hlsPlayer.on(HMSHLSPlayerEvents.LAYER_UPDATED, layerUpdatedHandler);\n return () => {\n hlsPlayer.off(HMSHLSPlayerEvents.SEEK_POS_BEHIND_LIVE_EDGE, handleNoLongerLive);\n hlsPlayer.off(HMSHLSPlayerEvents.ERROR, handleError);\n hlsPlayer.off(HMSHLSPlayerEvents.TIMED_METADATA_LOADED, metadataLoadedHandler);\n hlsPlayer.off(HMSHLSPlayerEvents.PLAYBACK_STATE, playbackEventHandler);\n hlsPlayer.off(HMSHLSPlayerEvents.AUTOPLAY_BLOCKED, handleAutoplayBlock);\n hlsPlayer.off(HMSHLSPlayerEvents.MANIFEST_LOADED, manifestLoadedHandler);\n hlsPlayer.off(HMSHLSPlayerEvents.LAYER_UPDATED, layerUpdatedHandler);\n hlsPlayer.reset();\n hlsPlayer = null;\n };\n }\n }, [hlsUrl]);\n\n /**\n * initialize and subscribe to hlsState\n */\n useEffect(() => {\n const onHLSStats = state => setHlsStatsState(state);\n if (enablHlsStats) {\n hlsPlayer?.on(HMSHLSPlayerEvents.STATS, onHLSStats);\n } else {\n hlsPlayer?.off(HMSHLSPlayerEvents.STATS, onHLSStats);\n }\n return () => {\n hlsPlayer?.off(HMSHLSPlayerEvents.STATS, onHLSStats);\n };\n }, [enablHlsStats]);\n\n const unblockAutoPlay = async () => {\n try {\n await hlsPlayer.play();\n setIsHlsAutoplayBlocked(false);\n } catch (error) {\n console.error('Tried to unblock Autoplay failed with', error.message);\n }\n };\n\n const handleQuality = useCallback(\n quality => {\n if (hlsPlayer) {\n setIsUserSelectedAuto(quality.height.toString().toLowerCase() === 'auto');\n hlsPlayer.setLayer(quality);\n }\n },\n [availableLayers], //eslint-disable-line\n );\n\n const sfnOverlayClose = () => {\n hmsActions.setAppData(APP_DATA.hlsStats, !enablHlsStats);\n };\n\n return (\n <Flex\n key=\"hls-viewer\"\n id={`hls-viewer-${themeType}`}\n ref={hlsViewRef}\n css={{\n size: '100%',\n }}\n >\n {hlsStatsState?.url && enablHlsStats ? (\n <HlsStatsOverlay hlsStatsState={hlsStatsState} onClose={sfnOverlayClose} />\n ) : null}\n {hlsUrl && hlsState.running ? (\n <Flex\n id=\"hls-player-container\"\n align=\"center\"\n justify=\"center\"\n css={{\n width: '100%',\n margin: '0 auto',\n height: '100%',\n }}\n >\n <HLSAutoplayBlockedPrompt open={isHlsAutoplayBlocked} unblockAutoPlay={unblockAutoPlay} />\n {showLoader && (\n <Flex\n align=\"center\"\n justify=\"center\"\n css={{\n position: 'absolute',\n }}\n >\n <Loading width={72} height={72} />\n </Flex>\n )}\n <HMSVideoPlayer.Root ref={videoRef}>\n {hlsPlayer && (\n <HMSVideoPlayer.Progress\n onValueChange={currentTime => {\n hlsPlayer.seekTo(currentTime);\n }}\n hlsPlayer={hlsPlayer}\n />\n )}\n\n <HMSVideoPlayer.Controls.Root css={{ p: '$4 $8' }}>\n <HMSVideoPlayer.Controls.Left>\n <HMSVideoPlayer.PlayButton\n onClick={async () => {\n isPaused ? await hlsPlayer?.play() : hlsPlayer?.pause();\n }}\n isPaused={isPaused}\n />\n <HMSVideoPlayer.Duration hlsPlayer={hlsPlayer} />\n <HMSVideoPlayer.Volume hlsPlayer={hlsPlayer} />\n </HMSVideoPlayer.Controls.Left>\n\n <HMSVideoPlayer.Controls.Right>\n {availableLayers.length > 0 ? (\n <>\n <IconButton\n variant=\"standard\"\n css={{ px: '$2' }}\n onClick={async () => {\n await hlsPlayer.seekToLivePosition();\n setIsVideoLive(true);\n }}\n key=\"jump-to-live_btn\"\n data-testid=\"jump-to-live_btn\"\n >\n <Tooltip title=\"Go to Live\" side=\"top\">\n <Flex justify=\"center\" gap={2} align=\"center\">\n <Box\n css={{\n height: '$4',\n width: '$4',\n background: isVideoLive ? '$error' : '$white',\n r: '$1',\n }}\n />\n <Text\n variant={{\n '@sm': 'xs',\n }}\n >\n {isVideoLive ? 'LIVE' : 'GO LIVE'}\n </Text>\n </Flex>\n </Tooltip>\n </IconButton>\n <HLSQualitySelector\n layers={availableLayers}\n selection={currentSelectedQuality}\n onQualityChange={handleQuality}\n isAuto={isUserSelectedAuto}\n />\n </>\n ) : null}\n {isFullScreenSupported ? (\n <FullScreenButton\n isFullScreen={isFullScreen}\n onToggle={toggle}\n icon={isFullScreen ? <ShrinkIcon /> : <ExpandIcon />}\n />\n ) : null}\n </HMSVideoPlayer.Controls.Right>\n </HMSVideoPlayer.Controls.Root>\n </HMSVideoPlayer.Root>\n </Flex>\n ) : (\n <Flex align=\"center\" justify=\"center\" css={{ size: '100%', px: '$10' }}>\n <Text variant=\"md\" css={{ textAlign: 'center' }}>\n Waiting for the stream to start...\n </Text>\n </Flex>\n )}\n </Flex>\n );\n};\n\nexport default HLSView;\n", "import React, { memo } from 'react';\nimport { CloseIcon } from '@100mslive/react-icons';\nimport { Flex } from '../../Layout';\nimport { Text } from '../../Text';\nimport IconButton from '../IconButton';\n\nexport function HlsStatsOverlay({ hlsStatsState, onClose }) {\n return (\n <Flex\n css={{\n position: 'absolute',\n width: '$80',\n marginLeft: '$8',\n padding: '$8 $8 $10',\n zIndex: 10,\n backgroundColor: 'rgba(55,59,66, 0.84)',\n borderRadius: '$1',\n }}\n direction=\"column\"\n >\n <IconButton css={{ position: 'absolute', top: '$2', right: '$2' }} onClick={onClose}>\n <CloseIcon />\n </IconButton>\n <HlsStatsRow label=\"URL\">\n <Flex align=\"center\">\n <a\n style={{ cursor: 'pointer', textDecoration: 'underline' }}\n href={hlsStatsState?.url}\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Stream url\n </a>\n </Flex>\n </HlsStatsRow>\n <HlsStatsRow label=\"Video size\">\n {` ${hlsStatsState?.videoSize?.width}x${hlsStatsState?.videoSize?.height}`}\n </HlsStatsRow>\n <HlsStatsRow label=\"Buffer duration\">{hlsStatsState?.bufferedDuration?.toFixed(2)} </HlsStatsRow>\n <HlsStatsRow label=\"Connection speed\">\n {`${(hlsStatsState?.bandwidthEstimate / (1000 * 1000)).toFixed(2)} Mbps`}\n </HlsStatsRow>\n <HlsStatsRow label=\"Bitrate\">{`${(hlsStatsState?.bitrate / (1000 * 1000)).toFixed(2)} Mbps`}</HlsStatsRow>\n <HlsStatsRow label=\"distance from live\">\n {getDurationFromSeconds(hlsStatsState.distanceFromLive / 1000)}\n </HlsStatsRow>\n <HlsStatsRow label=\"Dropped frames\">{`${hlsStatsState?.droppedFrames}`}</HlsStatsRow>\n </Flex>\n );\n}\n\n/**\n * Extracted from HLS new Player PR.\n * TODO: remove this and use HMSVideoUtils.js\n * when that code is merged\n */\nexport function getDurationFromSeconds(timeInSeconds) {\n let time = Math.floor(timeInSeconds);\n const hours = Math.floor(time / 3600);\n time = time - hours * 3600;\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time - minutes * 60);\n\n const prefixedMinutes = `${minutes < 10 ? '0' + minutes : minutes}`;\n const prefixedSeconds = `${seconds < 10 ? '0' + seconds : seconds}`;\n\n let videoTimeStr = `${prefixedMinutes}:${prefixedSeconds}`;\n if (hours) {\n const prefixedHours = `${hours < 10 ? '0' + hours : hours}`;\n videoTimeStr = `${prefixedHours}:${prefixedMinutes}:${prefixedSeconds}`;\n }\n return videoTimeStr;\n}\n\nconst HlsStatsRow = memo(({ label, children }) => {\n return (\n <Flex gap={4} justify=\"center\" css={{ width: '100%' }}>\n <Text\n css={{\n width: '50%',\n '@md': { fontSize: '$md' },\n '@sm': { fontSize: '$sm' },\n // textAlign: \"right\",\n }}\n >\n {label}\n </Text>\n <Text\n css={{\n '@md': { fontSize: '$md' },\n '@sm': { fontSize: '$sm' },\n width: '50%',\n overflowWrap: 'break-word',\n // textAlign: \"left\",\n }}\n >\n {children}\n </Text>\n </Flex>\n );\n});\n", "import { LeftControls, RightControls, VideoControls } from './Controls';\nimport { HMSVideo } from './HMSVideo';\nimport { PlayButton } from './PlayButton';\nimport { VideoProgress } from './VideoProgress';\nimport { VideoTime } from './VideoTime';\nimport { VolumeControl } from './VolumeControl';\n\nexport const HMSVideoPlayer = {\n Root: HMSVideo,\n PlayButton: PlayButton,\n Progress: VideoProgress,\n Duration: VideoTime,\n Volume: VolumeControl,\n Controls: {\n Root: VideoControls,\n Left: LeftControls,\n Right: RightControls,\n },\n};\n", "import { Flex, styled } from '../../../';\n\nexport const VideoControls = styled(Flex, {\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n gap: '$2',\n});\n\nexport const LeftControls = styled(Flex, {\n justifyContent: 'flex-start',\n alignItems: 'center',\n width: '100%',\n gap: '$2',\n});\nexport const RightControls = styled(Flex, {\n justifyContent: 'flex-end',\n alignItems: 'center',\n width: '100%',\n gap: '$2',\n});\n", "import React, { forwardRef } from 'react';\nimport { Flex } from '../../../';\n\nexport const HMSVideo = forwardRef(({ children }, videoRef) => {\n return (\n <Flex data-testid=\"hms-video\" css={{ size: '100%' }} direction=\"column\">\n <video style={{ flex: '1 1 0', margin: '0 auto', minHeight: '0' }} ref={videoRef} playsInline />\n {children}\n </Flex>\n );\n});\n", "import React from 'react';\nimport { PauseIcon, PlayIcon } from '@100mslive/react-icons';\nimport { IconButton, Tooltip } from '../../../';\n\nexport const PlayButton = ({ onClick, isPaused }) => {\n return (\n <Tooltip title={`${isPaused ? 'Play' : 'Pause'}`} side=\"top\">\n <IconButton onClick={onClick} data-testid=\"play_pause_btn\">\n {isPaused ? <PlayIcon width={32} height={32} /> : <PauseIcon width={32} height={32} />}\n </IconButton>\n </Tooltip>\n );\n};\n", "import React, { useEffect, useRef, useState } from 'react';\nimport { Box, Flex } from '../../../';\nimport { getPercentage } from './HMSVIdeoUtils';\n\nexport const VideoProgress = ({ onValueChange, hlsPlayer }) => {\n const [videoProgress, setVideoProgress] = useState(0);\n const [bufferProgress, setBufferProgress] = useState(0);\n const progressRootRef = useRef();\n\n useEffect(() => {\n const videoEl = hlsPlayer.getVideoElement();\n const timeupdateHandler = () => {\n const videoProgress = Math.floor(getPercentage(videoEl.currentTime, videoEl.duration));\n let bufferProgress = 0;\n if (videoEl.buffered.length > 0) {\n bufferProgress = Math.floor(getPercentage(videoEl.buffered?.end(0), videoEl.duration));\n }\n\n setVideoProgress(isNaN(videoProgress) ? 0 : videoProgress);\n setBufferProgress(isNaN(bufferProgress) ? 0 : bufferProgress);\n };\n if (videoEl) {\n videoEl.addEventListener('timeupdate', timeupdateHandler);\n }\n return function cleanup() {\n if (videoEl) {\n videoEl.removeEventListener('timeupdate', timeupdateHandler);\n }\n };\n }, [hlsPlayer]);\n\n const onProgressChangeHandler = e => {\n const userClickedX = e.clientX - progressRootRef.current.offsetLeft;\n const progressBarWidth = progressRootRef.current.offsetWidth;\n const progress = Math.floor(getPercentage(userClickedX, progressBarWidth));\n const videoEl = hlsPlayer.getVideoElement();\n const currentTime = (progress * videoEl.duration) / 100;\n\n if (onValueChange) {\n onValueChange(currentTime);\n }\n };\n\n return hlsPlayer.getVideoElement() ? (\n <Flex\n ref={progressRootRef}\n css={{ paddingLeft: '$8', paddingRight: '$8', cursor: 'pointer' }}\n onClick={onProgressChangeHandler}\n >\n <Box\n id=\"video-actual\"\n css={{\n display: 'inline',\n width: `${videoProgress}%`,\n background: '$primaryDefault',\n height: '0.3rem',\n }}\n />\n <Box\n id=\"video-buffer\"\n css={{\n width: `${bufferProgress - videoProgress}%`,\n background: '$primaryDark',\n height: '0.3rem',\n }}\n />\n <Box\n id=\"video-rest\"\n css={{\n width: `${100 - bufferProgress}%`,\n background: '$grayLight',\n height: '0.3rem',\n }}\n />\n </Flex>\n ) : null;\n};\n", "export function getPercentage(a, b) {\n return (a / b) * 100;\n}\n\n/**\n *\n * @param {number} timeInSeconds - if given as floating point value, it is floored.\n * @returns a string representing timeInSeconds in HH:MM:SS format.\n * (e.g) getDurationFromSeconds(3910) returns \"1:05:10\"\n */\nexport function getDurationFromSeconds(timeInSeconds) {\n let time = Math.floor(timeInSeconds);\n const hours = Math.floor(time / 3600);\n time = time - hours * 3600;\n const minutes = Math.floor(time / 60);\n const seconds = Math.floor(time - minutes * 60);\n\n const prefixedMinutes = `${minutes < 10 ? `0${minutes}` : minutes}`;\n const prefixedSeconds = `${seconds < 10 ? `0${seconds}` : seconds}`;\n\n let videoTimeStr = `${prefixedMinutes}:${prefixedSeconds}`;\n if (hours) {\n const prefixedHours = `${hours < 10 ? `0${hours}` : hours}`;\n videoTimeStr = `${prefixedHours}:${prefixedMinutes}:${prefixedSeconds}`;\n }\n return videoTimeStr;\n}\n", "import React, { useEffect, useState } from 'react';\nimport { HMSHLSPlayerEvents } from '@100mslive/hls-player';\nimport { Text } from '../../../';\nimport { getDurationFromSeconds } from './HMSVIdeoUtils';\n\nexport const VideoTime = ({ hlsPlayer }) => {\n const [videoTime, setVideoTime] = useState('');\n\n useEffect(() => {\n const timeupdateHandler = currentTime => setVideoTime(getDurationFromSeconds(currentTime));\n if (hlsPlayer) {\n hlsPlayer.on(HMSHLSPlayerEvents.CURRENT_TIME, timeupdateHandler);\n }\n return function cleanup() {\n if (hlsPlayer) {\n hlsPlayer.off(HMSHLSPlayerEvents.CURRENT_TIME, timeupdateHandler);\n }\n };\n }, [hlsPlayer]);\n\n return hlsPlayer ? (\n <Text\n css={{\n minWidth: '$16',\n }}\n variant={{\n '@sm': 'xs',\n }}\n >{`${videoTime}`}</Text>\n ) : null;\n};\n", "import React, { useState } from 'react';\nimport { SpeakerIcon } from '@100mslive/react-icons';\nimport { Flex, Slider } from '../../../';\n\nexport const VolumeControl = ({ hlsPlayer }) => {\n const [volume, setVolume] = useState(hlsPlayer?.volume ?? 100);\n\n return (\n <Flex align=\"center\" css={{ color: '$white' }}>\n <SpeakerIcon\n style={{ cursor: 'pointer' }}\n onClick={() => {\n setVolume(0);\n if (hlsPlayer) {\n hlsPlayer.setVolume(0);\n }\n }}\n />\n <Slider\n css={{\n mx: '$4',\n w: '$20',\n cursor: 'pointer',\n '@sm': { w: '$14' },\n '@xs': { w: '$14' },\n }}\n min={0}\n max={100}\n step={1}\n value={[volume]}\n onValueChange={volume => {\n hlsPlayer.setVolume(volume);\n setVolume(volume);\n }}\n thumbStyles={{ w: '$6', h: '$6' }}\n />\n </Flex>\n );\n};\n", "import React from 'react';\nimport { Flex, IconButton, Tooltip } from '../../../';\n\nexport const FullScreenButton = ({ isFullScreen, icon, onToggle }) => {\n return (\n <Tooltip title={`${isFullScreen ? 'Exit' : 'Go'} fullscreen`} side=\"top\">\n <IconButton\n variant=\"standard\"\n css={{ margin: '0px' }}\n onClick={onToggle}\n key=\"fullscreen_btn\"\n data-testid=\"fullscreen_btn\"\n >\n <Flex>{icon}</Flex>\n </IconButton>\n </Tooltip>\n );\n};\n", "import React from 'react';\nimport { Button, Dialog, Text } from '../../../';\nimport { DialogContent, DialogRow } from '../../primitives/DialogContent';\n\nexport function HLSAutoplayBlockedPrompt({ open, unblockAutoPlay }) {\n return (\n <Dialog.Root\n open={open}\n onOpenChange={value => {\n if (!value) {\n unblockAutoPlay();\n }\n }}\n >\n <DialogContent title=\"Attention\" closeable={false}>\n <DialogRow>\n <Text variant=\"md\">\n The browser wants us to get a confirmation for playing the HLS Stream. Please click \"play stream\" to\n proceed.\n </Text>\n </DialogRow>\n <DialogRow justify=\"end\">\n <Button\n variant=\"primary\"\n onClick={() => {\n unblockAutoPlay();\n }}\n >\n Play stream\n </Button>\n </DialogRow>\n </DialogContent>\n </Dialog.Root>\n );\n}\n", "import React, { useState } from 'react';\nimport { CheckCircleIcon, SettingsIcon } from '@100mslive/react-icons';\nimport { Box, Dropdown, Flex, Text, Tooltip } from '../../../';\n\nexport function HLSQualitySelector({ layers, onQualityChange, selection, isAuto }) {\n const [qualityDropDownOpen, setQualityDropDownOpen] = useState(false);\n\n return (\n <Dropdown.Root open={qualityDropDownOpen} onOpenChange={value => setQualityDropDownOpen(value)}>\n <Dropdown.Trigger asChild data-testid=\"quality_selector\">\n <Flex\n css={{\n color: '$textPrimary',\n r: '$1',\n cursor: 'pointer',\n p: '$2',\n }}\n >\n <Tooltip title=\"Select Quality\" side=\"top\">\n <Flex align=\"center\">\n <Box\n css={{\n w: '$9',\n h: '$9',\n display: 'inline-flex',\n alignItems: 'center',\n }}\n >\n <SettingsIcon />\n </Box>\n <Text\n variant={{\n '@md': 'sm',\n '@sm': 'xs',\n '@xs': 'tiny',\n }}\n css={{ display: 'flex', alignItems: 'center', ml: '$2' }}\n >\n {isAuto && (\n <>\n Auto\n <Box\n css={{\n mx: '$2',\n w: '$2',\n h: '$2',\n background: '$textPrimary',\n r: '$1',\n }}\n />\n </>\n )}\n {selection && Math.min(selection.width, selection.height)}p\n </Text>\n </Flex>\n </Tooltip>\n </Flex>\n </Dropdown.Trigger>\n {layers.length > 0 && (\n <Dropdown.Content sideOffset={5} align=\"end\" css={{ height: 'auto', maxHeight: '$96', w: '$64' }}>\n <Dropdown.Item onClick={() => onQualityChange({ height: 'auto' })} key=\"auto\">\n <Text css={{ flex: '1 1 0' }}>Automatic</Text>\n {isAuto && <CheckCircleIcon />}\n </Dropdown.Item>\n {layers.map(layer => {\n return (\n <Dropdown.Item onClick={() => onQualityChange(layer)} key={layer.width}>\n <Text css={{ flex: '1 1 0' }}>{getQualityText(layer)}</Text>\n {!isAuto && layer.width === selection?.width && layer.height === selection?.height && (\n <CheckCircleIcon />\n )}\n </Dropdown.Item>\n );\n })}\n </Dropdown.Content>\n )}\n </Dropdown.Root>\n );\n}\n\nconst getQualityText = layer =>\n `${Math.min(layer.height, layer.width)}p (${(Number(layer.bitrate / 1000) / 1000).toFixed(2)} Mbps)`;\n"],
|
5
|
-
"mappings": "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",
|
6
|
-
"names": ["React", "useEffect", "useRef", "useState", "HMSHLSPlayerEvents", "React", "React", "React", "React", "React", "getDurationFromSeconds", "hlsPlayer", "videoProgress", "bufferProgress", "React", "React", "useEffect", "useState", "hlsPlayer", "useState", "useEffect", "getDurationFromSeconds", "React", "React", "useState", "hlsPlayer", "useState", "React", "volume", "React", "React", "React", "React", "React", "useState", "useState", "React", "useRef", "useState", "useEffect", "showLoader", "_a", "HMSHLSPlayerEvents", "React"]
|
7
|
-
}
|