@100mslive/roomkit-react 0.3.9 → 0.3.10-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{HLSView-A6GH22QT.js → HLSView-5GXP76IN.js} +109 -120
- package/dist/{HLSView-A6GH22QT.js.map → HLSView-5GXP76IN.js.map} +2 -2
- package/dist/HLSView-FBGVUTA5.css +2767 -0
- package/dist/HLSView-FBGVUTA5.css.map +7 -0
- package/dist/Prebuilt/components/PIP/PIPComponent.d.ts +14 -0
- package/dist/Prebuilt/components/PIP/PIPManager.d.ts +100 -0
- package/dist/Prebuilt/components/VideoLayouts/WhiteboardLayout.d.ts +1 -0
- package/dist/{chunk-5KG27WWA.js → chunk-WSDBUVSZ.js} +1679 -1962
- package/dist/chunk-WSDBUVSZ.js.map +7 -0
- package/dist/index.cjs.css +2767 -0
- package/dist/index.cjs.css.map +7 -0
- package/dist/index.cjs.js +1537 -1809
- package/dist/index.cjs.js.map +4 -4
- package/dist/index.css +2767 -0
- package/dist/index.css.map +7 -0
- package/dist/index.js +1 -1
- package/dist/meta.cjs.json +365 -777
- package/dist/meta.esbuild.json +442 -788
- package/package.json +9 -16
- package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.tsx +2 -2
- package/src/Prebuilt/components/PIP/{PIPComponent.jsx → PIPComponent.tsx} +31 -18
- package/src/Prebuilt/components/PIP/{PIPManager.js → PIPManager.ts} +60 -35
- package/src/Prebuilt/components/SecondaryTiles.tsx +7 -0
- package/src/Prebuilt/components/VideoLayouts/ScreenshareLayout.tsx +0 -2
- package/src/Prebuilt/components/VideoLayouts/WhiteboardLayout.tsx +7 -13
- package/src/Prebuilt/layouts/PDFView.jsx +6 -1
- package/src/Prebuilt/plugins/FlyingEmoji.jsx +2 -4
- package/dist/chunk-5KG27WWA.js.map +0 -7
@@ -23,10 +23,6 @@ import {
|
|
23
23
|
Text,
|
24
24
|
ToastManager,
|
25
25
|
Tooltip,
|
26
|
-
__async,
|
27
|
-
__objRest,
|
28
|
-
__spreadProps,
|
29
|
-
__spreadValues,
|
30
26
|
config,
|
31
27
|
init_define_process_env,
|
32
28
|
styled,
|
@@ -38,7 +34,7 @@ import {
|
|
38
34
|
useRoomLayoutHeader,
|
39
35
|
useSidepaneToggle,
|
40
36
|
useTheme
|
41
|
-
} from "./chunk-
|
37
|
+
} from "./chunk-WSDBUVSZ.js";
|
42
38
|
|
43
39
|
// src/Prebuilt/layouts/HLSView.jsx
|
44
40
|
init_define_process_env();
|
@@ -66,7 +62,6 @@ init_define_process_env();
|
|
66
62
|
import React, { memo } from "react";
|
67
63
|
import { CrossIcon } from "@100mslive/react-icons";
|
68
64
|
function HlsStatsOverlay({ hlsStatsState, onClose }) {
|
69
|
-
var _a, _b, _c;
|
70
65
|
return /* @__PURE__ */ React.createElement(
|
71
66
|
Flex,
|
72
67
|
{
|
@@ -86,18 +81,18 @@ function HlsStatsOverlay({ hlsStatsState, onClose }) {
|
|
86
81
|
"a",
|
87
82
|
{
|
88
83
|
style: { cursor: "pointer", textDecoration: "underline" },
|
89
|
-
href: hlsStatsState
|
84
|
+
href: hlsStatsState?.url,
|
90
85
|
target: "_blank",
|
91
86
|
rel: "noreferrer"
|
92
87
|
},
|
93
88
|
"Stream url"
|
94
89
|
))),
|
95
|
-
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "Video size" }, ` ${
|
96
|
-
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "Buffer duration" },
|
97
|
-
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "Connection speed" }, `${(
|
98
|
-
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "Bitrate" }, `${(
|
90
|
+
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "Video size" }, ` ${hlsStatsState?.videoSize?.width}x${hlsStatsState?.videoSize?.height}`),
|
91
|
+
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "Buffer duration" }, hlsStatsState?.bufferedDuration?.toFixed(2), " "),
|
92
|
+
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "Connection speed" }, `${(hlsStatsState?.bandwidthEstimate / (1e3 * 1e3)).toFixed(2)} Mbps`),
|
93
|
+
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "Bitrate" }, `${(hlsStatsState?.bitrate / (1e3 * 1e3)).toFixed(2)} Mbps`),
|
99
94
|
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "distance from live" }, getDurationFromSeconds(hlsStatsState.distanceFromLive / 1e3)),
|
100
|
-
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "Dropped frames" }, hlsStatsState
|
95
|
+
/* @__PURE__ */ React.createElement(HlsStatsRow, { label: "Dropped frames" }, hlsStatsState?.droppedFrames)
|
101
96
|
);
|
102
97
|
}
|
103
98
|
function getDurationFromSeconds(timeInSeconds) {
|
@@ -170,11 +165,10 @@ var RightControls = styled(Flex, {
|
|
170
165
|
// src/Prebuilt/components/HMSVideo/HMSVideo.jsx
|
171
166
|
init_define_process_env();
|
172
167
|
import React2, { forwardRef } from "react";
|
173
|
-
var HMSVideo = forwardRef((
|
174
|
-
var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
|
168
|
+
var HMSVideo = forwardRef(({ children, ...props }, videoRef) => {
|
175
169
|
return /* @__PURE__ */ React2.createElement(
|
176
170
|
Flex,
|
177
|
-
|
171
|
+
{
|
178
172
|
"data-testid": "hms-video",
|
179
173
|
css: {
|
180
174
|
size: "100%",
|
@@ -205,8 +199,9 @@ var HMSVideo = forwardRef((_a, videoRef) => {
|
|
205
199
|
fontSize: "$space$10 !important"
|
206
200
|
}
|
207
201
|
},
|
208
|
-
direction: "column"
|
209
|
-
|
202
|
+
direction: "column",
|
203
|
+
...props
|
204
|
+
},
|
210
205
|
/* @__PURE__ */ React2.createElement(
|
211
206
|
"video",
|
212
207
|
{
|
@@ -255,10 +250,10 @@ var PlayPauseButton = ({
|
|
255
250
|
height = 20
|
256
251
|
}) => {
|
257
252
|
const { hlsPlayer: hlsPlayer2 } = useHMSPlayerContext();
|
258
|
-
const onClick = (event) =>
|
259
|
-
event
|
260
|
-
isPaused ?
|
261
|
-
}
|
253
|
+
const onClick = async (event) => {
|
254
|
+
event?.stopPropagation();
|
255
|
+
isPaused ? await hlsPlayer2?.play() : hlsPlayer2?.pause();
|
256
|
+
};
|
262
257
|
return /* @__PURE__ */ React4.createElement(Tooltip, { title: isPaused ? "Play" : "Pause", side: "top" }, /* @__PURE__ */ React4.createElement(IconButton, { onClick, "data-testid": "play_pause_btn" }, isPaused ? /* @__PURE__ */ React4.createElement(PlayIcon, { width, height }) : /* @__PURE__ */ React4.createElement(PauseIcon, { width, height })));
|
263
258
|
};
|
264
259
|
|
@@ -445,9 +440,8 @@ var VideoProgress = ({
|
|
445
440
|
const { hlsPlayer: hlsPlayer2 } = useHMSPlayerContext();
|
446
441
|
const [videoProgress, setVideoProgress] = useState(0);
|
447
442
|
const [bufferProgress, setBufferProgress] = useState(0);
|
448
|
-
const videoEl = hlsPlayer2
|
443
|
+
const videoEl = hlsPlayer2?.getVideoElement();
|
449
444
|
const setProgress = useCallback(() => {
|
450
|
-
var _a;
|
451
445
|
if (!videoEl) {
|
452
446
|
return;
|
453
447
|
}
|
@@ -455,7 +449,7 @@ var VideoProgress = ({
|
|
455
449
|
const videoProgress2 = Math.floor(getPercentage(videoEl.currentTime, duration));
|
456
450
|
let bufferProgress2 = 0;
|
457
451
|
if (videoEl.buffered.length > 0) {
|
458
|
-
bufferProgress2 = Math.floor(getPercentage(
|
452
|
+
bufferProgress2 = Math.floor(getPercentage(videoEl.buffered?.end(0), duration));
|
459
453
|
}
|
460
454
|
if (!isNaN(videoProgress2)) {
|
461
455
|
setVideoProgress(videoProgress2);
|
@@ -477,19 +471,18 @@ var VideoProgress = ({
|
|
477
471
|
setProgress();
|
478
472
|
videoEl.addEventListener("timeupdate", timeupdateHandler);
|
479
473
|
return function cleanup() {
|
480
|
-
videoEl
|
474
|
+
videoEl?.removeEventListener("timeupdate", timeupdateHandler);
|
481
475
|
};
|
482
476
|
}, [setProgress, timeupdateHandler, videoEl]);
|
483
477
|
const onProgress = (progress) => {
|
484
|
-
var _a;
|
485
478
|
const progress1 = Math.floor(getPercentage(progress[0], 100));
|
486
|
-
const videoEl2 = hlsPlayer2
|
479
|
+
const videoEl2 = hlsPlayer2?.getVideoElement();
|
487
480
|
if (!videoEl2) {
|
488
481
|
return;
|
489
482
|
}
|
490
|
-
const duration = isFinite(videoEl2.duration) ? videoEl2.duration :
|
483
|
+
const duration = isFinite(videoEl2.duration) ? videoEl2.duration : videoEl2.seekable?.end(0) || 0;
|
491
484
|
const currentTime = progress1 * duration / 100;
|
492
|
-
hlsPlayer2
|
485
|
+
hlsPlayer2?.seekTo(currentTime);
|
493
486
|
setProgress();
|
494
487
|
};
|
495
488
|
if (!videoEl) {
|
@@ -540,7 +533,7 @@ var VideoTime = () => {
|
|
540
533
|
const [videoTime, setVideoTime] = useState2(getDurationFromSeconds2(0));
|
541
534
|
const updateTime = useCallback2(
|
542
535
|
(currentTime) => {
|
543
|
-
const videoEl = hlsPlayer2
|
536
|
+
const videoEl = hlsPlayer2?.getVideoElement();
|
544
537
|
if (videoEl) {
|
545
538
|
const duration = getDuration(videoEl);
|
546
539
|
setVideoTime(getDurationFromSeconds2(duration - currentTime));
|
@@ -556,11 +549,11 @@ var VideoTime = () => {
|
|
556
549
|
};
|
557
550
|
if (hlsPlayer2) {
|
558
551
|
hlsPlayer2.on(HMSHLSPlayerEvents.CURRENT_TIME, timeupdateHandler);
|
559
|
-
const videoEl = hlsPlayer2
|
552
|
+
const videoEl = hlsPlayer2?.getVideoElement();
|
560
553
|
updateTime(videoEl.currentTime);
|
561
554
|
}
|
562
555
|
return function cleanup() {
|
563
|
-
hlsPlayer2
|
556
|
+
hlsPlayer2?.off(HMSHLSPlayerEvents.CURRENT_TIME, timeupdateHandler);
|
564
557
|
};
|
565
558
|
}, [hlsPlayer2, updateTime]);
|
566
559
|
return hlsPlayer2 ? /* @__PURE__ */ React8.createElement(
|
@@ -585,9 +578,8 @@ init_define_process_env();
|
|
585
578
|
import React9, { useState as useState3 } from "react";
|
586
579
|
import { VolumeOneIcon, VolumeTwoIcon, VolumeZeroIcon } from "@100mslive/react-icons";
|
587
580
|
var VolumeControl = () => {
|
588
|
-
var _a;
|
589
581
|
const { hlsPlayer: hlsPlayer2 } = useHMSPlayerContext();
|
590
|
-
const [volume, setVolume] = useState3(
|
582
|
+
const [volume, setVolume] = useState3(hlsPlayer2?.volume ?? 100);
|
591
583
|
const [showSlider, setShowSlider] = useState3(false);
|
592
584
|
return /* @__PURE__ */ React9.createElement(
|
593
585
|
Flex,
|
@@ -610,10 +602,10 @@ var VolumeControl = () => {
|
|
610
602
|
onClick: () => {
|
611
603
|
if (volume > 0) {
|
612
604
|
setVolume(0);
|
613
|
-
hlsPlayer2
|
605
|
+
hlsPlayer2?.setVolume(0);
|
614
606
|
} else {
|
615
607
|
setVolume(100);
|
616
|
-
hlsPlayer2
|
608
|
+
hlsPlayer2?.setVolume(100);
|
617
609
|
}
|
618
610
|
}
|
619
611
|
}
|
@@ -636,7 +628,7 @@ var VolumeControl = () => {
|
|
636
628
|
step: 1,
|
637
629
|
value: [volume],
|
638
630
|
onValueChange: (volume2) => {
|
639
|
-
hlsPlayer2
|
631
|
+
hlsPlayer2?.setVolume(volume2[0]);
|
640
632
|
setVolume(volume2[0]);
|
641
633
|
},
|
642
634
|
thumbStyles: { w: "$6", h: "$6" }
|
@@ -697,9 +689,7 @@ function HLSAutoplayBlockedPrompt({
|
|
697
689
|
color: "#000",
|
698
690
|
r: "$2"
|
699
691
|
},
|
700
|
-
onClick: () =>
|
701
|
-
return yield unblockAutoPlay();
|
702
|
-
})
|
692
|
+
onClick: async () => await unblockAutoPlay()
|
703
693
|
},
|
704
694
|
/* @__PURE__ */ React11.createElement(VolumeTwoIcon2, { width: "32", height: "32" }),
|
705
695
|
/* @__PURE__ */ React11.createElement(
|
@@ -720,19 +710,19 @@ function HLSAutoplayBlockedPrompt({
|
|
720
710
|
Dialog.Root,
|
721
711
|
{
|
722
712
|
open,
|
723
|
-
onOpenChange: (value) =>
|
713
|
+
onOpenChange: async (value) => {
|
724
714
|
if (!value) {
|
725
|
-
|
715
|
+
await unblockAutoPlay();
|
726
716
|
}
|
727
|
-
}
|
717
|
+
}
|
728
718
|
},
|
729
719
|
/* @__PURE__ */ React11.createElement(DialogContent, { title: "Attention", closeable: false }, /* @__PURE__ */ React11.createElement(DialogRow, null, /* @__PURE__ */ React11.createElement(Text, { variant: "md" }, 'The browser wants us to get a confirmation for playing the HLS Stream. Please click "play stream" to proceed.')), /* @__PURE__ */ React11.createElement(DialogRow, { justify: "end" }, /* @__PURE__ */ React11.createElement(
|
730
720
|
Button,
|
731
721
|
{
|
732
722
|
variant: "primary",
|
733
|
-
onClick: () =>
|
734
|
-
|
735
|
-
}
|
723
|
+
onClick: async () => {
|
724
|
+
await unblockAutoPlay();
|
725
|
+
}
|
736
726
|
},
|
737
727
|
"Play stream"
|
738
728
|
)))
|
@@ -745,7 +735,7 @@ import React12 from "react";
|
|
745
735
|
import { ClosedCaptionIcon, OpenCaptionIcon } from "@100mslive/react-icons";
|
746
736
|
function HLSCaptionSelector({ isEnabled }) {
|
747
737
|
const { hlsPlayer: hlsPlayer2 } = useHMSPlayerContext();
|
748
|
-
return /* @__PURE__ */ React12.createElement(Tooltip, { title: "Subtitles/closed captions", side: "top" }, /* @__PURE__ */ React12.createElement(IconButton, { css: { p: "$2" }, onClick: () => hlsPlayer2
|
738
|
+
return /* @__PURE__ */ React12.createElement(Tooltip, { title: "Subtitles/closed captions", side: "top" }, /* @__PURE__ */ React12.createElement(IconButton, { css: { p: "$2" }, onClick: () => hlsPlayer2?.toggleCaption() }, isEnabled ? /* @__PURE__ */ React12.createElement(ClosedCaptionIcon, { width: "20", height: "20px" }) : /* @__PURE__ */ React12.createElement(OpenCaptionIcon, { width: "20", height: "20px" })));
|
749
739
|
}
|
750
740
|
|
751
741
|
// src/Prebuilt/components/HMSVideo/HLSQualitySelector.tsx
|
@@ -826,7 +816,7 @@ function HLSQualitySelector({
|
|
826
816
|
},
|
827
817
|
/* @__PURE__ */ React13.createElement(Text, { variant: "caption", css: { fontWeight: "$semiBold" } }, getQualityText(layer)),
|
828
818
|
/* @__PURE__ */ React13.createElement(Text, { variant: "caption", css: { flex: "1 1 0", c: "$on_surface_low", pl: "$2" } }, getBitrateText(layer)),
|
829
|
-
!isAuto && layer.width ===
|
819
|
+
!isAuto && layer.width === selection?.width && layer.height === selection?.height && /* @__PURE__ */ React13.createElement(CheckIcon, { width: "16px", height: "16px" })
|
830
820
|
);
|
831
821
|
}),
|
832
822
|
/* @__PURE__ */ React13.createElement(
|
@@ -921,7 +911,7 @@ function HLSQualitySelector({
|
|
921
911
|
onClick: () => onQualityChange(layer),
|
922
912
|
key: layer.width,
|
923
913
|
css: {
|
924
|
-
bg: !isAuto && layer.width ===
|
914
|
+
bg: !isAuto && layer.width === selection?.width && layer.height === selection?.height ? "$surface_default" : "$surface_bright",
|
925
915
|
"&:hover": {
|
926
916
|
bg: "$surface_brighter"
|
927
917
|
},
|
@@ -932,7 +922,7 @@ function HLSQualitySelector({
|
|
932
922
|
},
|
933
923
|
/* @__PURE__ */ React13.createElement(Text, { variant: "caption", css: { fontWeight: "$semiBold" } }, getQualityText(layer)),
|
934
924
|
/* @__PURE__ */ React13.createElement(Text, { variant: "caption", css: { flex: "1 1 0", c: "$on_surface_low", pl: "$2" } }, getBitrateText(layer)),
|
935
|
-
!isAuto && layer.width ===
|
925
|
+
!isAuto && layer.width === selection?.width && layer.height === selection?.height && /* @__PURE__ */ React13.createElement(CheckIcon, { width: "16px", height: "16px" })
|
936
926
|
);
|
937
927
|
}),
|
938
928
|
/* @__PURE__ */ React13.createElement(
|
@@ -1023,7 +1013,7 @@ var ToggleChat = ({ isFullScreen = false }) => {
|
|
1023
1013
|
const { elements } = useRoomLayoutConferencingScreen();
|
1024
1014
|
const sidepane = useHMSStore(selectAppData(APP_DATA.sidePane));
|
1025
1015
|
const toggleChat = useSidepaneToggle(SIDE_PANE_OPTIONS.CHAT);
|
1026
|
-
const showChat = !!
|
1016
|
+
const showChat = !!elements?.chat;
|
1027
1017
|
const isMobile = useMedia4(config.media.md);
|
1028
1018
|
const hmsActions = useHMSActions();
|
1029
1019
|
useEffect3(() => {
|
@@ -1039,7 +1029,6 @@ var ToggleChat = ({ isFullScreen = false }) => {
|
|
1039
1029
|
return null;
|
1040
1030
|
};
|
1041
1031
|
var HLSView = () => {
|
1042
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
1043
1032
|
const videoRef = useRef(null);
|
1044
1033
|
const hlsViewRef = useRef();
|
1045
1034
|
const { elements } = useRoomLayoutConferencingScreen();
|
@@ -1050,7 +1039,7 @@ var HLSView = () => {
|
|
1050
1039
|
const { themeType } = useTheme();
|
1051
1040
|
const [streamEnded, setStreamEnded] = useState4(false);
|
1052
1041
|
let [hlsStatsState, setHlsStatsState] = useState4(null);
|
1053
|
-
const hlsUrl =
|
1042
|
+
const hlsUrl = hlsState.variants[0]?.url;
|
1054
1043
|
const [availableLayers, setAvailableLayers] = useState4([]);
|
1055
1044
|
const [isVideoLive, setIsVideoLive] = useState4(true);
|
1056
1045
|
const [isCaptionEnabled, setIsCaptionEnabled] = useState4(true);
|
@@ -1074,7 +1063,7 @@ var HLSView = () => {
|
|
1074
1063
|
const [seekProgress, setSeekProgress] = useState4(false);
|
1075
1064
|
const isFullScreenSupported = screenfull.isEnabled;
|
1076
1065
|
const toggleChat = useSidepaneToggle(SIDE_PANE_OPTIONS.CHAT);
|
1077
|
-
const showChat = !!
|
1066
|
+
const showChat = !!elements?.chat;
|
1078
1067
|
const isMobile = useMedia4(config.media.md);
|
1079
1068
|
const isLandscape = useIsLandscape();
|
1080
1069
|
const isFullScreen = useFullscreen(hlsViewRef, show, {
|
@@ -1085,11 +1074,11 @@ var HLSView = () => {
|
|
1085
1074
|
const videoEl = videoRef.current;
|
1086
1075
|
const showLoader2 = () => setShowLoader(true);
|
1087
1076
|
const hideLoader = () => setShowLoader(false);
|
1088
|
-
videoEl
|
1089
|
-
videoEl
|
1077
|
+
videoEl?.addEventListener("playing", hideLoader);
|
1078
|
+
videoEl?.addEventListener("waiting", showLoader2);
|
1090
1079
|
return () => {
|
1091
|
-
videoEl
|
1092
|
-
videoEl
|
1080
|
+
videoEl?.removeEventListener("playing", hideLoader);
|
1081
|
+
videoEl?.removeEventListener("waiting", showLoader2);
|
1093
1082
|
};
|
1094
1083
|
}, []);
|
1095
1084
|
useEffect3(() => {
|
@@ -1100,7 +1089,7 @@ var HLSView = () => {
|
|
1100
1089
|
useEffect3(() => {
|
1101
1090
|
if (!notification)
|
1102
1091
|
return;
|
1103
|
-
const toastID = toastMap
|
1092
|
+
const toastID = toastMap?.[notification.data.id];
|
1104
1093
|
if (toastID) {
|
1105
1094
|
ToastManager.removeToast(toastMap[notification.data.id]);
|
1106
1095
|
delete toastMap[notification.data.id];
|
@@ -1110,19 +1099,18 @@ var HLSView = () => {
|
|
1110
1099
|
const videoElem = videoRef.current;
|
1111
1100
|
const setStreamEndedCallback = () => {
|
1112
1101
|
setStreamEnded(true);
|
1113
|
-
videoElem
|
1102
|
+
videoElem?.removeEventListener("ended", setStreamEndedCallback);
|
1114
1103
|
};
|
1115
|
-
videoElem
|
1104
|
+
videoElem?.addEventListener("ended", setStreamEndedCallback);
|
1116
1105
|
return () => {
|
1117
|
-
videoElem
|
1106
|
+
videoElem?.removeEventListener("ended", setStreamEndedCallback);
|
1118
1107
|
};
|
1119
1108
|
}, [hlsUrl]);
|
1120
1109
|
const handleQuality = useCallback3(
|
1121
1110
|
(quality) => {
|
1122
|
-
var _a2;
|
1123
1111
|
if (hlsPlayer) {
|
1124
|
-
setIsUserSelectedAuto(
|
1125
|
-
hlsPlayer
|
1112
|
+
setIsUserSelectedAuto(quality.height?.toString().toLowerCase() === "auto");
|
1113
|
+
hlsPlayer?.setLayer(quality);
|
1126
1114
|
}
|
1127
1115
|
},
|
1128
1116
|
[availableLayers]
|
@@ -1132,14 +1120,12 @@ var HLSView = () => {
|
|
1132
1120
|
let videoEl = videoRef.current;
|
1133
1121
|
const manifestLoadedHandler = ({ layers }) => {
|
1134
1122
|
setAvailableLayers(layers);
|
1135
|
-
setHasCaptions(hlsPlayer
|
1123
|
+
setHasCaptions(hlsPlayer?.hasCaptions());
|
1136
1124
|
};
|
1137
1125
|
const layerUpdatedHandler = ({ layer }) => {
|
1138
1126
|
setCurrentSelectedQuality(layer);
|
1139
1127
|
};
|
1140
|
-
const metadataLoadedHandler = (
|
1141
|
-
var _b2 = _a2, { payload } = _b2, rest = __objRest(_b2, ["payload"]);
|
1142
|
-
var _a3;
|
1128
|
+
const metadataLoadedHandler = ({ payload, ...rest }) => {
|
1143
1129
|
const parsePayload = (str) => {
|
1144
1130
|
try {
|
1145
1131
|
return JSON.parse(str);
|
@@ -1184,7 +1170,7 @@ var HLSView = () => {
|
|
1184
1170
|
}
|
1185
1171
|
switch (parsedPayload.type) {
|
1186
1172
|
case EMOJI_REACTION_TYPE:
|
1187
|
-
|
1173
|
+
window.showFlyingEmoji?.({ emojiId: parsedPayload?.emojiId, senderId: parsedPayload?.senderId });
|
1188
1174
|
break;
|
1189
1175
|
default: {
|
1190
1176
|
const toast = {
|
@@ -1205,13 +1191,15 @@ var HLSView = () => {
|
|
1205
1191
|
};
|
1206
1192
|
const playbackEventHandler = (data) => {
|
1207
1193
|
setIsPaused(data.state === HLSPlaybackState.paused);
|
1208
|
-
setHoverControlsVisible(
|
1194
|
+
setHoverControlsVisible({
|
1195
|
+
...hoverControlsVisible,
|
1209
1196
|
pausePlay: true
|
1210
|
-
})
|
1197
|
+
});
|
1211
1198
|
setTimeout(() => {
|
1212
|
-
setHoverControlsVisible(
|
1199
|
+
setHoverControlsVisible({
|
1200
|
+
...hoverControlsVisible,
|
1213
1201
|
pausePlay: false
|
1214
|
-
})
|
1202
|
+
});
|
1215
1203
|
}, 2e3);
|
1216
1204
|
};
|
1217
1205
|
const captionEnabledEventHandler = (isCaptionEnabled2) => {
|
@@ -1244,22 +1232,22 @@ var HLSView = () => {
|
|
1244
1232
|
useEffect3(() => {
|
1245
1233
|
const onHLSStats = (state) => setHlsStatsState(state);
|
1246
1234
|
if (enablHlsStats) {
|
1247
|
-
hlsPlayer
|
1235
|
+
hlsPlayer?.on(HMSHLSPlayerEvents2.STATS, onHLSStats);
|
1248
1236
|
} else {
|
1249
|
-
hlsPlayer
|
1237
|
+
hlsPlayer?.off(HMSHLSPlayerEvents2.STATS, onHLSStats);
|
1250
1238
|
}
|
1251
1239
|
return () => {
|
1252
|
-
hlsPlayer
|
1240
|
+
hlsPlayer?.off(HMSHLSPlayerEvents2.STATS, onHLSStats);
|
1253
1241
|
};
|
1254
1242
|
}, [enablHlsStats]);
|
1255
|
-
const unblockAutoPlay = () =>
|
1243
|
+
const unblockAutoPlay = async () => {
|
1256
1244
|
try {
|
1257
|
-
|
1245
|
+
await hlsPlayer.play();
|
1258
1246
|
setIsHlsAutoplayBlocked(false);
|
1259
1247
|
} catch (error) {
|
1260
1248
|
console.error("Tried to unblock Autoplay failed with", error.message);
|
1261
1249
|
}
|
1262
|
-
}
|
1250
|
+
};
|
1263
1251
|
const sfnOverlayClose = () => {
|
1264
1252
|
hmsActions.setAppData(APP_DATA.hlsStats, !enablHlsStats);
|
1265
1253
|
};
|
@@ -1285,62 +1273,64 @@ var HLSView = () => {
|
|
1285
1273
|
}, [controlsVisible, isFullScreen, seekProgress, qualityDropDownOpen]);
|
1286
1274
|
const onSeekTo = useCallback3(
|
1287
1275
|
(seek) => {
|
1288
|
-
var _a2;
|
1289
1276
|
match({ isLandscape, isMobile, seek }).with({ seek: -10, isMobile: false, isLandscape: false }, () => {
|
1290
|
-
setHoverControlsVisible(
|
1277
|
+
setHoverControlsVisible({ ...hoverControlsVisible, seekBackward: true });
|
1291
1278
|
setTimeout(() => {
|
1292
|
-
setHoverControlsVisible(
|
1279
|
+
setHoverControlsVisible({
|
1280
|
+
...hoverControlsVisible,
|
1293
1281
|
seekBackward: false
|
1294
|
-
})
|
1282
|
+
});
|
1295
1283
|
}, 1e3);
|
1296
1284
|
}).with({ seek: 10, isMobile: false, isLandscape: false }, () => {
|
1297
|
-
setHoverControlsVisible(
|
1285
|
+
setHoverControlsVisible({ ...hoverControlsVisible, seekForward: true });
|
1298
1286
|
setTimeout(() => {
|
1299
|
-
setHoverControlsVisible(
|
1287
|
+
setHoverControlsVisible({
|
1288
|
+
...hoverControlsVisible,
|
1300
1289
|
seekForward: false
|
1301
|
-
})
|
1290
|
+
});
|
1302
1291
|
}, 1e3);
|
1303
1292
|
}).otherwise(() => null);
|
1304
|
-
hlsPlayer
|
1293
|
+
hlsPlayer?.seekTo(videoRef.current?.currentTime + seek);
|
1305
1294
|
},
|
1306
1295
|
[hoverControlsVisible, isLandscape, isMobile]
|
1307
1296
|
);
|
1308
1297
|
const onDoubleClickHandler = useCallback3(
|
1309
1298
|
(event) => {
|
1310
|
-
|
1311
|
-
if (!(isMobile || isLandscape) || ((_a2 = hlsState == null ? void 0 : hlsState.variants[0]) == null ? void 0 : _a2.playlist_type) !== HLSPlaylistType.DVR) {
|
1299
|
+
if (!(isMobile || isLandscape) || hlsState?.variants[0]?.playlist_type !== HLSPlaylistType.DVR) {
|
1312
1300
|
return;
|
1313
1301
|
}
|
1314
1302
|
const sidePercentage = event.screenX * 100 / event.target.clientWidth;
|
1315
1303
|
if (sidePercentage < 45) {
|
1316
|
-
setHoverControlsVisible(
|
1304
|
+
setHoverControlsVisible({
|
1305
|
+
...hoverControlsVisible,
|
1317
1306
|
seekBackward: true
|
1318
|
-
})
|
1307
|
+
});
|
1319
1308
|
onSeekTo(-10);
|
1320
1309
|
} else {
|
1321
|
-
setHoverControlsVisible(
|
1310
|
+
setHoverControlsVisible({
|
1311
|
+
...hoverControlsVisible,
|
1322
1312
|
seekForward: true
|
1323
|
-
})
|
1313
|
+
});
|
1324
1314
|
onSeekTo(10);
|
1325
1315
|
}
|
1326
1316
|
setTimeout(() => {
|
1327
|
-
setHoverControlsVisible(
|
1317
|
+
setHoverControlsVisible({
|
1318
|
+
...hoverControlsVisible,
|
1328
1319
|
seekForward: false,
|
1329
1320
|
seekBackward: false
|
1330
|
-
})
|
1321
|
+
});
|
1331
1322
|
}, 1e3);
|
1332
1323
|
},
|
1333
|
-
[hlsState
|
1324
|
+
[hlsState?.variants, hoverControlsVisible, isLandscape, isMobile, onSeekTo]
|
1334
1325
|
);
|
1335
|
-
const onClickHandler = useCallback3(() =>
|
1336
|
-
|
1337
|
-
match({ isMobile, isLandscape, playlist_type: (_a2 = hlsState == null ? void 0 : hlsState.variants[0]) == null ? void 0 : _a2.playlist_type }).with({ playlist_type: HLSPlaylistType.DVR, isMobile: false, isLandscape: false }, () => __async(void 0, null, function* () {
|
1326
|
+
const onClickHandler = useCallback3(async () => {
|
1327
|
+
match({ isMobile, isLandscape, playlist_type: hlsState?.variants[0]?.playlist_type }).with({ playlist_type: HLSPlaylistType.DVR, isMobile: false, isLandscape: false }, async () => {
|
1338
1328
|
if (isPaused) {
|
1339
|
-
|
1329
|
+
await hlsPlayer?.play();
|
1340
1330
|
} else {
|
1341
|
-
hlsPlayer
|
1331
|
+
hlsPlayer?.pause();
|
1342
1332
|
}
|
1343
|
-
})
|
1333
|
+
}).when(
|
1344
1334
|
({ isMobile: isMobile2, isLandscape: isLandscape2 }) => isMobile2 || isLandscape2,
|
1345
1335
|
() => {
|
1346
1336
|
setControlsVisible((value) => !value);
|
@@ -1349,7 +1339,7 @@ var HLSView = () => {
|
|
1349
1339
|
}
|
1350
1340
|
}
|
1351
1341
|
).otherwise(() => null);
|
1352
|
-
}
|
1342
|
+
}, [hlsState?.variants, isLandscape, isMobile, isPaused]);
|
1353
1343
|
const onHoverHandler = useCallback3(
|
1354
1344
|
(event) => {
|
1355
1345
|
event.preventDefault();
|
@@ -1407,7 +1397,7 @@ var HLSView = () => {
|
|
1407
1397
|
}
|
1408
1398
|
},
|
1409
1399
|
hlsViewRef.current && (isMobile || isLandscape) && /* @__PURE__ */ React15.createElement(Box, { css: { position: "fixed", left: "$4", top: "$4", zIndex: 11 } }, /* @__PURE__ */ React15.createElement(LeaveRoom, { screenType: "hls_live_streaming", container: hlsViewRef.current })),
|
1410
|
-
/* @__PURE__ */ React15.createElement(HMSPlayerContext.Provider, { value: { hlsPlayer } },
|
1400
|
+
/* @__PURE__ */ React15.createElement(HMSPlayerContext.Provider, { value: { hlsPlayer } }, hlsStatsState?.url && enablHlsStats && !(isMobile || isLandscape) ? /* @__PURE__ */ React15.createElement(HlsStatsOverlay, { hlsStatsState, onClose: sfnOverlayClose }) : null, /* @__PURE__ */ React15.createElement(
|
1411
1401
|
Flex,
|
1412
1402
|
{
|
1413
1403
|
id: "hls-player-container",
|
@@ -1421,12 +1411,11 @@ var HLSView = () => {
|
|
1421
1411
|
},
|
1422
1412
|
outline: "none"
|
1423
1413
|
},
|
1424
|
-
onKeyDown: (event) =>
|
1425
|
-
|
1426
|
-
|
1427
|
-
yield keyHandler(event);
|
1414
|
+
onKeyDown: async (event) => {
|
1415
|
+
if (hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR) {
|
1416
|
+
await keyHandler(event);
|
1428
1417
|
}
|
1429
|
-
}
|
1418
|
+
},
|
1430
1419
|
tabIndex: "0"
|
1431
1420
|
},
|
1432
1421
|
!(isMobile || isLandscape) && /* @__PURE__ */ React15.createElement(HLSAutoplayBlockedPrompt, { open: isHlsAutoplayBlocked, unblockAutoPlay }),
|
@@ -1467,7 +1456,7 @@ var HLSView = () => {
|
|
1467
1456
|
size: "100%"
|
1468
1457
|
}
|
1469
1458
|
},
|
1470
|
-
!showLoader &&
|
1459
|
+
!showLoader && hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR && /* @__PURE__ */ React15.createElement(
|
1471
1460
|
HMSVideoPlayer.PlayPauseSeekControls.Overlay,
|
1472
1461
|
{
|
1473
1462
|
isPaused,
|
@@ -1475,7 +1464,7 @@ var HLSView = () => {
|
|
1475
1464
|
hoverControlsVisible
|
1476
1465
|
}
|
1477
1466
|
)
|
1478
|
-
), isMobile || isLandscape ? /* @__PURE__ */ React15.createElement(React15.Fragment, null, !showLoader &&
|
1467
|
+
), isMobile || isLandscape ? /* @__PURE__ */ React15.createElement(React15.Fragment, null, !showLoader && hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR && /* @__PURE__ */ React15.createElement(
|
1479
1468
|
HMSVideoPlayer.PlayPauseSeekControls.Overlay,
|
1480
1469
|
{
|
1481
1470
|
isPaused,
|
@@ -1542,7 +1531,7 @@ var HLSView = () => {
|
|
1542
1531
|
align: "start",
|
1543
1532
|
css: {
|
1544
1533
|
position: "absolute",
|
1545
|
-
bottom: isFullScreen &&
|
1534
|
+
bottom: isFullScreen && hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR ? "$8" : "0",
|
1546
1535
|
left: "0",
|
1547
1536
|
zIndex: 1,
|
1548
1537
|
background: isMobile || isLandscape ? "" : `linear-gradient(180deg, ${theme.colors.background_dim.value}00 29.46%, ${theme.colors.background_dim.value}A3 100%);`,
|
@@ -1552,7 +1541,7 @@ var HLSView = () => {
|
|
1552
1541
|
transition: "visibility 0s 0.5s, opacity 0.5s linear"
|
1553
1542
|
}
|
1554
1543
|
},
|
1555
|
-
|
1544
|
+
hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR ? /* @__PURE__ */ React15.createElement(HMSVideoPlayer.Progress, { seekProgress, setSeekProgress }) : null,
|
1556
1545
|
/* @__PURE__ */ React15.createElement(
|
1557
1546
|
HMSVideoPlayer.Controls.Root,
|
1558
1547
|
{
|
@@ -1561,15 +1550,15 @@ var HLSView = () => {
|
|
1561
1550
|
},
|
1562
1551
|
onClick: (e) => e.stopPropagation()
|
1563
1552
|
},
|
1564
|
-
/* @__PURE__ */ React15.createElement(HMSVideoPlayer.Controls.Left, null, !(isMobile || isLandscape) && /* @__PURE__ */ React15.createElement(React15.Fragment, null,
|
1553
|
+
/* @__PURE__ */ React15.createElement(HMSVideoPlayer.Controls.Left, null, !(isMobile || isLandscape) && /* @__PURE__ */ React15.createElement(React15.Fragment, null, hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR ? /* @__PURE__ */ React15.createElement(React15.Fragment, null, /* @__PURE__ */ React15.createElement(HMSVideoPlayer.PlayPauseSeekControls.Button, { isPaused, onSeekTo }), !isVideoLive ? /* @__PURE__ */ React15.createElement(HMSVideoPlayer.Duration, null) : null) : null, /* @__PURE__ */ React15.createElement(HMSVideoPlayer.Volume, null)), /* @__PURE__ */ React15.createElement(
|
1565
1554
|
IconButton,
|
1566
1555
|
{
|
1567
1556
|
css: { px: "$2" },
|
1568
|
-
onClick: (e) =>
|
1557
|
+
onClick: async (e) => {
|
1569
1558
|
e.stopPropagation();
|
1570
|
-
|
1559
|
+
await hlsPlayer?.seekToLivePosition();
|
1571
1560
|
setIsVideoLive(true);
|
1572
|
-
}
|
1561
|
+
},
|
1573
1562
|
key: "jump-to-live_btn",
|
1574
1563
|
"data-testid": "jump-to-live_btn"
|
1575
1564
|
},
|
@@ -1594,7 +1583,7 @@ var HLSView = () => {
|
|
1594
1583
|
},
|
1595
1584
|
isVideoLive ? "LIVE" : "GO LIVE"
|
1596
1585
|
)))
|
1597
|
-
), (isMobile || isLandscape) && !isVideoLive &&
|
1586
|
+
), (isMobile || isLandscape) && !isVideoLive && hlsState?.variants[0]?.playlist_type === HLSPlaylistType.DVR ? /* @__PURE__ */ React15.createElement(HMSVideoPlayer.Duration, null) : null),
|
1598
1587
|
/* @__PURE__ */ React15.createElement(HMSVideoPlayer.Controls.Right, null, hasCaptions && !(isMobile || isLandscape) && /* @__PURE__ */ React15.createElement(HLSCaptionSelector, { isEnabled: isCaptionEnabled }), availableLayers.length > 0 && !(isMobile || isLandscape) ? /* @__PURE__ */ React15.createElement(
|
1599
1588
|
HLSQualitySelector,
|
1600
1589
|
{
|
@@ -1618,4 +1607,4 @@ var HLSView_default = HLSView;
|
|
1618
1607
|
export {
|
1619
1608
|
HLSView_default as default
|
1620
1609
|
};
|
1621
|
-
//# sourceMappingURL=HLSView-
|
1610
|
+
//# sourceMappingURL=HLSView-5GXP76IN.js.map
|