@100mslive/roomkit-react 0.1.6-alpha.0 → 0.1.6-alpha.2

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.
Files changed (136) hide show
  1. package/dist/{HLSView-PY2FKWX3.js → HLSView-QMU5JK7U.js} +208 -118
  2. package/dist/HLSView-QMU5JK7U.js.map +7 -0
  3. package/dist/Prebuilt/AppContext.d.ts +1 -1
  4. package/dist/Prebuilt/components/Chat/ChatFooter.d.ts +7 -0
  5. package/dist/Prebuilt/components/Connection/ConnectionIndicator.d.ts +6 -0
  6. package/dist/Prebuilt/components/Connection/TileConnection.d.ts +10 -0
  7. package/dist/Prebuilt/components/Footer/ChatToggle.d.ts +2 -0
  8. package/dist/Prebuilt/components/Footer/RoleAccordion.d.ts +14 -0
  9. package/dist/Prebuilt/components/Footer/RoleOptions.d.ts +6 -0
  10. package/dist/Prebuilt/components/Header/StreamActions.d.ts +11 -0
  11. package/dist/Prebuilt/components/Leave/DesktopLeaveRoom.d.ts +4 -3
  12. package/dist/Prebuilt/components/Leave/EndSessionContent.d.ts +4 -3
  13. package/dist/Prebuilt/components/Leave/LeaveCard.d.ts +1 -2
  14. package/dist/Prebuilt/components/Leave/LeaveSessionContent.d.ts +3 -1
  15. package/dist/Prebuilt/components/Leave/MwebLeaveRoom.d.ts +4 -3
  16. package/dist/Prebuilt/components/MoreSettings/SplitComponents/MwebOptions.d.ts +6 -0
  17. package/dist/Prebuilt/components/Preview/PreviewContainer.d.ts +3 -0
  18. package/dist/Prebuilt/components/Preview/PreviewJoin.d.ts +16 -0
  19. package/dist/Prebuilt/components/RoleChangeRequestModal.d.ts +2 -0
  20. package/dist/Prebuilt/components/SecondaryTiles.d.ts +1 -1
  21. package/dist/Prebuilt/components/SidePaneTabs.d.ts +7 -0
  22. package/dist/Prebuilt/components/VideoLayouts/EqualProminence.d.ts +1 -1
  23. package/dist/Prebuilt/components/VideoLayouts/Grid.d.ts +1 -0
  24. package/dist/Prebuilt/components/VideoLayouts/GridLayout.d.ts +5 -3
  25. package/dist/Prebuilt/components/VideoLayouts/ProminenceLayout.d.ts +6 -3
  26. package/dist/Prebuilt/components/VideoLayouts/RoleProminence.d.ts +1 -1
  27. package/dist/Prebuilt/components/VideoLayouts/ScreenshareLayout.d.ts +1 -1
  28. package/dist/Prebuilt/components/VideoLayouts/interface.d.ts +1 -0
  29. package/dist/Prebuilt/components/hooks/useAutoStartStreaming.d.ts +1 -0
  30. package/dist/Prebuilt/components/hooks/useRedirectToLeave.d.ts +3 -0
  31. package/dist/Prebuilt/components/hooks/useTileLayout.d.ts +2 -1
  32. package/dist/Prebuilt/components/hooks/useVideoTileLayout.d.ts +2 -0
  33. package/dist/Prebuilt/layouts/SidePane.d.ts +4 -1
  34. package/dist/Prebuilt/layouts/VideoStreamingSection.d.ts +2 -1
  35. package/dist/{VirtualBackground-AYDHYLIZ.js → VirtualBackground-37FXUPYO.js} +6 -6
  36. package/dist/VirtualBackground-37FXUPYO.js.map +7 -0
  37. package/dist/{chunk-GQD2AGWW.js → chunk-KBVIZGYW.js} +12 -2
  38. package/dist/{chunk-GQD2AGWW.js.map → chunk-KBVIZGYW.js.map} +2 -2
  39. package/dist/{chunk-RXTHJUMZ.js → chunk-WVGGQZK4.js} +986 -436
  40. package/dist/chunk-WVGGQZK4.js.map +7 -0
  41. package/dist/{chunk-E2M2ZSOL.js → chunk-ZKE2N5LH.js} +2 -2
  42. package/dist/{conference-V2XZGTKU.js → conference-FJJQ4TXX.js} +1136 -1301
  43. package/dist/conference-FJJQ4TXX.js.map +7 -0
  44. package/dist/index.cjs.js +3565 -3092
  45. package/dist/index.cjs.js.map +4 -4
  46. package/dist/index.js +2 -2
  47. package/dist/meta.cjs.json +773 -525
  48. package/dist/meta.esbuild.json +833 -579
  49. package/package.json +8 -7
  50. package/src/Prebuilt/App.tsx +10 -21
  51. package/src/Prebuilt/AppContext.tsx +1 -1
  52. package/src/Prebuilt/IconButton.jsx +10 -0
  53. package/src/Prebuilt/common/PeersSorter.ts +1 -1
  54. package/src/Prebuilt/common/constants.js +1 -2
  55. package/src/Prebuilt/common/utils.js +1 -1
  56. package/src/Prebuilt/components/AppData/AppData.jsx +8 -2
  57. package/src/Prebuilt/components/AppData/useUISettings.js +6 -6
  58. package/src/Prebuilt/components/AudioVideoToggle.jsx +8 -6
  59. package/src/Prebuilt/components/Chat/Chat.jsx +24 -11
  60. package/src/Prebuilt/components/Chat/ChatBody.jsx +20 -21
  61. package/src/Prebuilt/components/Chat/{ChatFooter.jsx → ChatFooter.tsx} +38 -13
  62. package/src/Prebuilt/components/Chat/useEmojiPickerStyles.js +5 -4
  63. package/src/Prebuilt/components/Connection/{ConnectionIndicator.jsx → ConnectionIndicator.tsx} +12 -4
  64. package/src/Prebuilt/components/Connection/{TileConnection.jsx → TileConnection.tsx} +20 -6
  65. package/src/Prebuilt/components/EmojiReaction.jsx +2 -6
  66. package/src/Prebuilt/components/Footer/{ChatToggle.jsx → ChatToggle.tsx} +4 -1
  67. package/src/Prebuilt/components/Footer/Footer.tsx +30 -5
  68. package/src/Prebuilt/components/Footer/ParticipantList.jsx +15 -49
  69. package/src/Prebuilt/components/Footer/{RoleAccordion.jsx → RoleAccordion.tsx} +33 -17
  70. package/src/Prebuilt/components/Footer/RoleOptions.tsx +155 -0
  71. package/src/Prebuilt/components/FullPageProgress.jsx +3 -3
  72. package/src/Prebuilt/components/HMSVideo/Controls.jsx +1 -0
  73. package/src/Prebuilt/components/HMSVideo/HLSQualitySelector.jsx +39 -17
  74. package/src/Prebuilt/components/HMSVideo/HMSVideo.jsx +2 -2
  75. package/src/Prebuilt/components/HMSVideo/VideoProgress.jsx +5 -6
  76. package/src/Prebuilt/components/HMSVideo/VolumeControl.jsx +1 -1
  77. package/src/Prebuilt/components/Header/HeaderComponents.jsx +8 -1
  78. package/src/Prebuilt/components/Header/{StreamActions.jsx → StreamActions.tsx} +23 -9
  79. package/src/Prebuilt/components/Header/common.jsx +5 -2
  80. package/src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.jsx +6 -1
  81. package/src/Prebuilt/components/InsetTile.tsx +15 -8
  82. package/src/Prebuilt/components/Leave/DesktopLeaveRoom.tsx +21 -11
  83. package/src/Prebuilt/components/Leave/EndSessionContent.tsx +2 -5
  84. package/src/Prebuilt/components/Leave/LeaveCard.tsx +1 -3
  85. package/src/Prebuilt/components/Leave/LeaveRoom.tsx +28 -25
  86. package/src/Prebuilt/components/Leave/LeaveSessionContent.tsx +8 -2
  87. package/src/Prebuilt/components/Leave/MwebLeaveRoom.tsx +8 -8
  88. package/src/Prebuilt/components/MoreSettings/ChangeNameContent.jsx +4 -0
  89. package/src/Prebuilt/components/MoreSettings/MoreSettings.tsx +1 -1
  90. package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.tsx +9 -23
  91. package/src/Prebuilt/components/MoreSettings/SplitComponents/{MwebOptions.jsx → MwebOptions.tsx} +89 -28
  92. package/src/Prebuilt/components/Notifications/Notifications.jsx +44 -28
  93. package/src/Prebuilt/components/Notifications/ReconnectNotifications.jsx +5 -11
  94. package/src/Prebuilt/components/Pagination.tsx +14 -12
  95. package/src/Prebuilt/components/Preview/{PreviewContainer.jsx → PreviewContainer.tsx} +11 -2
  96. package/src/Prebuilt/components/Preview/PreviewForm.tsx +6 -8
  97. package/src/Prebuilt/components/Preview/{PreviewJoin.jsx → PreviewJoin.tsx} +44 -21
  98. package/src/Prebuilt/components/{RoleChangeRequestModal.jsx → RoleChangeRequestModal.tsx} +36 -17
  99. package/src/Prebuilt/components/ScreenshareTile.jsx +6 -7
  100. package/src/Prebuilt/components/SecondaryTiles.tsx +12 -10
  101. package/src/Prebuilt/components/SidePaneTabs.tsx +120 -0
  102. package/src/Prebuilt/components/TileMenu/TileMenu.jsx +1 -1
  103. package/src/Prebuilt/components/TileMenu/TileMenuContent.jsx +14 -10
  104. package/src/Prebuilt/components/Toast/ToastConfig.jsx +5 -4
  105. package/src/Prebuilt/components/VideoLayouts/EqualProminence.tsx +13 -10
  106. package/src/Prebuilt/components/VideoLayouts/Grid.tsx +36 -34
  107. package/src/Prebuilt/components/VideoLayouts/GridLayout.tsx +33 -15
  108. package/src/Prebuilt/components/VideoLayouts/ProminenceLayout.tsx +45 -31
  109. package/src/Prebuilt/components/VideoLayouts/RoleProminence.tsx +12 -9
  110. package/src/Prebuilt/components/VideoLayouts/ScreenshareLayout.tsx +25 -9
  111. package/src/Prebuilt/components/VideoLayouts/interface.ts +1 -0
  112. package/src/Prebuilt/components/VideoTile.jsx +45 -53
  113. package/src/Prebuilt/components/conference.jsx +71 -74
  114. package/src/Prebuilt/components/hooks/useAutoStartStreaming.tsx +57 -0
  115. package/src/Prebuilt/components/hooks/useMetadata.jsx +19 -28
  116. package/src/Prebuilt/components/hooks/useRedirectToLeave.tsx +34 -0
  117. package/src/Prebuilt/components/hooks/useRoleProminencePeers.tsx +1 -1
  118. package/src/Prebuilt/components/hooks/useTileLayout.tsx +24 -18
  119. package/src/Prebuilt/components/hooks/useVideoTileLayout.ts +4 -0
  120. package/src/Prebuilt/layouts/EmbedView.jsx +1 -11
  121. package/src/Prebuilt/layouts/HLSView.jsx +152 -82
  122. package/src/Prebuilt/layouts/SidePane.tsx +25 -11
  123. package/src/Prebuilt/layouts/VideoStreamingSection.tsx +11 -47
  124. package/src/Prebuilt/plugins/FlyingEmoji.jsx +14 -2
  125. package/src/Prebuilt/plugins/VirtualBackground/VirtualBackground.jsx +3 -3
  126. package/src/Prebuilt/provider/roomLayoutProvider/hooks/useFetchRoomLayout.ts +2 -2
  127. package/src/Prebuilt/services/FeatureFlags.jsx +0 -1
  128. package/src/VideoTile/StyledVideoTile.tsx +1 -0
  129. package/dist/HLSView-PY2FKWX3.js.map +0 -7
  130. package/dist/VirtualBackground-AYDHYLIZ.js.map +0 -7
  131. package/dist/chunk-RXTHJUMZ.js.map +0 -7
  132. package/dist/conference-V2XZGTKU.js.map +0 -7
  133. package/src/Prebuilt/components/AudioLevel/BeamSpeakerLabelsLogging.jsx +0 -16
  134. package/src/Prebuilt/components/Chat/ChatParticipantHeader.jsx +0 -73
  135. package/src/Prebuilt/components/VideoList.jsx +0 -73
  136. /package/dist/{chunk-E2M2ZSOL.js.map → chunk-ZKE2N5LH.js.map} +0 -0
@@ -9,7 +9,7 @@ import {
9
9
  Slider,
10
10
  ToastManager,
11
11
  useTheme
12
- } from "./chunk-RXTHJUMZ.js";
12
+ } from "./chunk-WVGGQZK4.js";
13
13
  import {
14
14
  Box,
15
15
  Flex,
@@ -20,16 +20,18 @@ import {
20
20
  Tooltip,
21
21
  __async,
22
22
  __objRest,
23
+ __spreadValues,
24
+ config,
23
25
  styled
24
- } from "./chunk-GQD2AGWW.js";
26
+ } from "./chunk-KBVIZGYW.js";
25
27
 
26
28
  // src/Prebuilt/layouts/HLSView.jsx
27
- import React10, { useCallback, useEffect as useEffect3, useRef as useRef2, useState as useState5 } from "react";
28
- import { useFullscreen, useToggle } from "react-use";
29
+ import React10, { useCallback, useEffect as useEffect3, useRef as useRef2, useState as useState4 } from "react";
30
+ import { useFullscreen, useMedia, useToggle } from "react-use";
29
31
  import { HLSPlaybackState, HMSHLSPlayer, HMSHLSPlayerEvents as HMSHLSPlayerEvents2 } from "@100mslive/hls-player";
30
32
  import screenfull from "screenfull";
31
33
  import { selectAppData, selectHLSState, useHMSActions, useHMSStore } from "@100mslive/react-sdk";
32
- import { ExpandIcon, RadioIcon, ShrinkIcon } from "@100mslive/react-icons";
34
+ import { ColoredHandIcon, ExpandIcon, RadioIcon, ShrinkIcon } from "@100mslive/react-icons";
33
35
 
34
36
  // src/Prebuilt/components/HlsStatsOverlay.jsx
35
37
  import React, { memo } from "react";
@@ -115,6 +117,7 @@ var HlsStatsRow = memo(({ label, children }) => {
115
117
  var VideoControls = styled(Flex, {
116
118
  justifyContent: "center",
117
119
  alignItems: "center",
120
+ alignSelf: "stretch",
118
121
  width: "100%",
119
122
  gap: "$2"
120
123
  });
@@ -133,8 +136,9 @@ var RightControls = styled(Flex, {
133
136
 
134
137
  // src/Prebuilt/components/HMSVideo/HMSVideo.jsx
135
138
  import React2, { forwardRef } from "react";
136
- var HMSVideo = forwardRef(({ children }, videoRef) => {
137
- return /* @__PURE__ */ React2.createElement(Flex, { "data-testid": "hms-video", css: { size: "100%" }, direction: "column" }, /* @__PURE__ */ React2.createElement("video", { style: { flex: "1 1 0", margin: "0 auto", minHeight: "0" }, ref: videoRef, playsInline: true }), children);
139
+ var HMSVideo = forwardRef((_a, videoRef) => {
140
+ var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
141
+ return /* @__PURE__ */ React2.createElement(Flex, __spreadValues({ "data-testid": "hms-video", css: { size: "100%", position: "relative" }, direction: "column" }, props), /* @__PURE__ */ React2.createElement("video", { style: { flex: "1 1 0", margin: "0 auto", minHeight: "0" }, ref: videoRef, playsInline: true }), children);
138
142
  });
139
143
 
140
144
  // src/Prebuilt/components/HMSVideo/PlayButton.jsx
@@ -207,7 +211,7 @@ var VideoProgress = ({ onValueChange, hlsPlayer: hlsPlayer2 }) => {
207
211
  Flex,
208
212
  {
209
213
  ref: progressRootRef,
210
- css: { paddingLeft: "$8", paddingRight: "$8", cursor: "pointer" },
214
+ css: { cursor: "pointer", h: "$4", alignSelf: "stretch" },
211
215
  onClick: onProgressChangeHandler
212
216
  },
213
217
  /* @__PURE__ */ React4.createElement(
@@ -217,8 +221,7 @@ var VideoProgress = ({ onValueChange, hlsPlayer: hlsPlayer2 }) => {
217
221
  css: {
218
222
  display: "inline",
219
223
  width: `${videoProgress}%`,
220
- background: "$primary_default",
221
- height: "0.3rem"
224
+ background: "$primary_default"
222
225
  }
223
226
  }
224
227
  ),
@@ -228,8 +231,8 @@ var VideoProgress = ({ onValueChange, hlsPlayer: hlsPlayer2 }) => {
228
231
  id: "video-buffer",
229
232
  css: {
230
233
  width: `${bufferProgress - videoProgress}%`,
231
- background: "$primary_dim",
232
- height: "0.3rem"
234
+ background: "$on_surface_high",
235
+ opacity: "25%"
233
236
  }
234
237
  }
235
238
  ),
@@ -239,8 +242,8 @@ var VideoProgress = ({ onValueChange, hlsPlayer: hlsPlayer2 }) => {
239
242
  id: "video-rest",
240
243
  css: {
241
244
  width: `${100 - bufferProgress}%`,
242
- background: "$surface_brighter",
243
- height: "0.3rem"
245
+ background: "$on_surface_high",
246
+ opacity: "10%"
244
247
  }
245
248
  }
246
249
  )
@@ -288,7 +291,7 @@ var VolumeControl = ({ hlsPlayer: hlsPlayer2 }) => {
288
291
  Flex,
289
292
  {
290
293
  align: "center",
291
- css: { color: "$on_primary_high" },
294
+ css: { color: "$on_surface_high" },
292
295
  onMouseOver: (event) => {
293
296
  event.stopPropagation();
294
297
  setShowSlider(true);
@@ -403,11 +406,10 @@ function HLSAutoplayBlockedPrompt({ open, unblockAutoPlay }) {
403
406
  }
404
407
 
405
408
  // src/Prebuilt/components/HMSVideo/HLSQualitySelector.jsx
406
- import React9, { useState as useState4 } from "react";
407
- import { CheckCircleIcon, SettingsIcon } from "@100mslive/react-icons";
408
- function HLSQualitySelector({ layers, onQualityChange, selection, isAuto }) {
409
- const [qualityDropDownOpen, setQualityDropDownOpen] = useState4(false);
410
- return /* @__PURE__ */ React9.createElement(Dropdown.Root, { open: qualityDropDownOpen, onOpenChange: (value) => setQualityDropDownOpen(value) }, /* @__PURE__ */ React9.createElement(Dropdown.Trigger, { asChild: true, "data-testid": "quality_selector" }, /* @__PURE__ */ React9.createElement(
409
+ import React9 from "react";
410
+ import { CheckIcon, SettingsIcon } from "@100mslive/react-icons";
411
+ function HLSQualitySelector({ open, onOpen, layers, onQualityChange, selection, isAuto }) {
412
+ return /* @__PURE__ */ React9.createElement(Dropdown.Root, { open, onOpenChange: (value) => onOpen(value) }, /* @__PURE__ */ React9.createElement(Dropdown.Trigger, { asChild: true, "data-testid": "quality_selector" }, /* @__PURE__ */ React9.createElement(
411
413
  Flex,
412
414
  {
413
415
  css: {
@@ -424,7 +426,8 @@ function HLSQualitySelector({ layers, onQualityChange, selection, isAuto }) {
424
426
  w: "$9",
425
427
  h: "$9",
426
428
  display: "inline-flex",
427
- alignItems: "center"
429
+ alignItems: "center",
430
+ c: "$on_surface_high"
428
431
  }
429
432
  },
430
433
  /* @__PURE__ */ React9.createElement(SettingsIcon, null)
@@ -445,7 +448,7 @@ function HLSQualitySelector({ layers, onQualityChange, selection, isAuto }) {
445
448
  mx: "$2",
446
449
  w: "$2",
447
450
  h: "$2",
448
- background: "$on_primary_high",
451
+ background: "$on_surface_medium",
449
452
  r: "$1"
450
453
  }
451
454
  }
@@ -458,7 +461,15 @@ function HLSQualitySelector({ layers, onQualityChange, selection, isAuto }) {
458
461
  {
459
462
  sideOffset: 5,
460
463
  align: "end",
461
- css: { height: "auto", maxHeight: "$96", w: "$64", bg: "$surface_bright" }
464
+ css: {
465
+ height: "auto",
466
+ maxHeight: "$52",
467
+ w: "$40",
468
+ bg: "$surface_bright",
469
+ py: "$4",
470
+ gap: "$4",
471
+ display: "grid"
472
+ }
462
473
  },
463
474
  layers.map((layer) => {
464
475
  return /* @__PURE__ */ React9.createElement(
@@ -467,15 +478,18 @@ function HLSQualitySelector({ layers, onQualityChange, selection, isAuto }) {
467
478
  onClick: () => onQualityChange(layer),
468
479
  key: layer.width,
469
480
  css: {
470
- bg: "$surface_bright",
481
+ bg: !isAuto && layer.width === (selection == null ? void 0 : selection.width) && layer.height === (selection == null ? void 0 : selection.height) ? "$surface_default" : "$surface_bright",
471
482
  "&:hover": {
472
- bg: "$surface_default"
473
- }
483
+ bg: "$surface_brighter"
484
+ },
485
+ p: "$2 $4 $2 $8",
486
+ h: "$12",
487
+ gap: "$2"
474
488
  }
475
489
  },
476
- /* @__PURE__ */ React9.createElement(Text, null, getQualityText(layer)),
477
- /* @__PURE__ */ React9.createElement(Text, { css: { flex: "1 1 0", c: "$on_surface_low", pl: "$2" } }, getBitrateText(layer)),
478
- !isAuto && layer.width === (selection == null ? void 0 : selection.width) && layer.height === (selection == null ? void 0 : selection.height) && /* @__PURE__ */ React9.createElement(CheckCircleIcon, null)
490
+ /* @__PURE__ */ React9.createElement(Text, { variant: "caption", css: { fontWeight: "$semiBold" } }, getQualityText(layer)),
491
+ /* @__PURE__ */ React9.createElement(Text, { variant: "caption", css: { flex: "1 1 0", c: "$on_surface_low", pl: "$2" } }, getBitrateText(layer)),
492
+ !isAuto && layer.width === (selection == null ? void 0 : selection.width) && layer.height === (selection == null ? void 0 : selection.height) && /* @__PURE__ */ React9.createElement(CheckIcon, { width: "16px", height: "16px" })
479
493
  );
480
494
  }),
481
495
  /* @__PURE__ */ React9.createElement(
@@ -484,14 +498,17 @@ function HLSQualitySelector({ layers, onQualityChange, selection, isAuto }) {
484
498
  onClick: () => onQualityChange({ height: "auto" }),
485
499
  key: "auto",
486
500
  css: {
487
- bg: "$surface_bright",
501
+ bg: !isAuto ? "$surface_bright" : "$surface_default",
488
502
  "&:hover": {
489
- bg: "$surface_default"
490
- }
503
+ bg: "$surface_brighter"
504
+ },
505
+ p: "$2 $4 $2 $8",
506
+ h: "$12",
507
+ gap: "$2"
491
508
  }
492
509
  },
493
- /* @__PURE__ */ React9.createElement(Text, { css: { flex: "1 1 0" } }, "Auto"),
494
- isAuto && /* @__PURE__ */ React9.createElement(CheckCircleIcon, null)
510
+ /* @__PURE__ */ React9.createElement(Text, { variant: "caption", css: { fontWeight: "$semiBold", flex: "1 1 0" } }, "Auto"),
511
+ isAuto && /* @__PURE__ */ React9.createElement(CheckIcon, { width: "16px", height: "16px" })
495
512
  )
496
513
  ));
497
514
  }
@@ -507,21 +524,27 @@ var HLSView = () => {
507
524
  const hlsState = useHMSStore(selectHLSState);
508
525
  const enablHlsStats = useHMSStore(selectAppData(APP_DATA.hlsStats));
509
526
  const hmsActions = useHMSActions();
510
- const { themeType } = useTheme();
511
- let [hlsStatsState, setHlsStatsState] = useState5(null);
527
+ const { themeType, theme } = useTheme();
528
+ const [streamEnded, setStreamEnded] = useState4(false);
529
+ let [hlsStatsState, setHlsStatsState] = useState4(null);
512
530
  const hlsUrl = (_a = hlsState.variants[0]) == null ? void 0 : _a.url;
513
- const [availableLayers, setAvailableLayers] = useState5([]);
514
- const [isVideoLive, setIsVideoLive] = useState5(true);
515
- const [isUserSelectedAuto, setIsUserSelectedAuto] = useState5(true);
516
- const [currentSelectedQuality, setCurrentSelectedQuality] = useState5(null);
517
- const [isHlsAutoplayBlocked, setIsHlsAutoplayBlocked] = useState5(false);
518
- const [isPaused, setIsPaused] = useState5(false);
531
+ const [availableLayers, setAvailableLayers] = useState4([]);
532
+ const [isVideoLive, setIsVideoLive] = useState4(true);
533
+ const [isUserSelectedAuto, setIsUserSelectedAuto] = useState4(true);
534
+ const [currentSelectedQuality, setCurrentSelectedQuality] = useState4(null);
535
+ const [isHlsAutoplayBlocked, setIsHlsAutoplayBlocked] = useState4(false);
536
+ const [isPaused, setIsPaused] = useState4(false);
519
537
  const isFullScreenSupported = screenfull.isEnabled;
520
538
  const [show, toggle] = useToggle(false);
539
+ const [controlsVisible, setControlsVisible] = useState4(true);
540
+ const controlsRef = useRef2();
541
+ const controlsTimerRef = useRef2();
542
+ const [qualityDropDownOpen, setQualityDropDownOpen] = useState4(false);
543
+ const isMobile = useMedia(config.media.md);
521
544
  const isFullScreen = useFullscreen(hlsViewRef, show, {
522
545
  onClose: () => toggle(false)
523
546
  });
524
- const [showLoader, setShowLoader] = useState5(false);
547
+ const [showLoader, setShowLoader] = useState4(false);
525
548
  useEffect3(() => {
526
549
  const videoEl = videoRef.current;
527
550
  const showLoader2 = () => setShowLoader(true);
@@ -533,6 +556,17 @@ var HLSView = () => {
533
556
  videoEl == null ? void 0 : videoEl.removeEventListener("waiting", showLoader2);
534
557
  };
535
558
  }, []);
559
+ useEffect3(() => {
560
+ const videoElem = videoRef.current;
561
+ const setStreamEndedCallback = () => {
562
+ setStreamEnded(true);
563
+ videoElem == null ? void 0 : videoElem.removeEventListener("ended", setStreamEndedCallback);
564
+ };
565
+ videoElem == null ? void 0 : videoElem.addEventListener("ended", setStreamEndedCallback);
566
+ return () => {
567
+ videoElem == null ? void 0 : videoElem.removeEventListener("ended", setStreamEndedCallback);
568
+ };
569
+ }, [hlsUrl]);
536
570
  useEffect3(() => {
537
571
  let videoEl = videoRef.current;
538
572
  const manifestLoadedHandler = ({ layers }) => {
@@ -543,6 +577,7 @@ var HLSView = () => {
543
577
  };
544
578
  const metadataLoadedHandler = (_a2) => {
545
579
  var _b = _a2, { payload } = _b, rest = __objRest(_b, ["payload"]);
580
+ var _a3;
546
581
  const parsePayload = (str) => {
547
582
  try {
548
583
  return JSON.parse(str);
@@ -554,7 +589,7 @@ var HLSView = () => {
554
589
  const parsedPayload = parsePayload(payload);
555
590
  switch (parsedPayload.type) {
556
591
  case EMOJI_REACTION_TYPE:
557
- window.showFlyingEmoji(parsedPayload == null ? void 0 : parsedPayload.emojiId, parsedPayload == null ? void 0 : parsedPayload.senderId);
592
+ (_a3 = window.showFlyingEmoji) == null ? void 0 : _a3.call(window, { emojiId: parsedPayload == null ? void 0 : parsedPayload.emojiId, senderId: parsedPayload == null ? void 0 : parsedPayload.senderId });
558
593
  break;
559
594
  default: {
560
595
  const toast = {
@@ -629,6 +664,41 @@ var HLSView = () => {
629
664
  const sfnOverlayClose = () => {
630
665
  hmsActions.setAppData(APP_DATA.hlsStats, !enablHlsStats);
631
666
  };
667
+ useEffect3(() => {
668
+ if (controlsVisible && isFullScreen && !qualityDropDownOpen) {
669
+ if (controlsTimerRef.current) {
670
+ clearTimeout(controlsTimerRef.current);
671
+ }
672
+ controlsTimerRef.current = setTimeout(() => {
673
+ setControlsVisible(false);
674
+ }, 5e3);
675
+ }
676
+ if (!isFullScreen && controlsTimerRef.current) {
677
+ clearTimeout(controlsTimerRef.current);
678
+ }
679
+ return () => {
680
+ if (controlsTimerRef.current) {
681
+ clearTimeout(controlsTimerRef.current);
682
+ }
683
+ };
684
+ }, [controlsVisible, isFullScreen, qualityDropDownOpen]);
685
+ const onHoverHandler = useCallback(
686
+ (event) => {
687
+ if (event.type === "mouseenter" || qualityDropDownOpen) {
688
+ setControlsVisible(true);
689
+ return;
690
+ }
691
+ if (event.type === "mouseleave") {
692
+ setControlsVisible(false);
693
+ } else if (isFullScreen && !controlsVisible && event.type === "mousemove") {
694
+ setControlsVisible(true);
695
+ if (controlsTimerRef.current) {
696
+ clearTimeout(controlsTimerRef.current);
697
+ }
698
+ }
699
+ },
700
+ [controlsVisible, isFullScreen, qualityDropDownOpen]
701
+ );
632
702
  return /* @__PURE__ */ React10.createElement(
633
703
  Flex,
634
704
  {
@@ -640,7 +710,7 @@ var HLSView = () => {
640
710
  }
641
711
  },
642
712
  (hlsStatsState == null ? void 0 : hlsStatsState.url) && enablHlsStats ? /* @__PURE__ */ React10.createElement(HlsStatsOverlay, { hlsStatsState, onClose: sfnOverlayClose }) : null,
643
- hlsUrl && hlsState.running ? /* @__PURE__ */ React10.createElement(
713
+ hlsUrl && !streamEnded ? /* @__PURE__ */ React10.createElement(
644
714
  Flex,
645
715
  {
646
716
  id: "hls-player-container",
@@ -649,8 +719,7 @@ var HLSView = () => {
649
719
  css: {
650
720
  width: "100%",
651
721
  margin: "0 auto",
652
- height: "100%",
653
- background: "linear-gradient(180deg, rgba(0, 0, 0, 0.00) 0%, #000 100%)"
722
+ height: "100%"
654
723
  }
655
724
  },
656
725
  /* @__PURE__ */ React10.createElement(HLSAutoplayBlockedPrompt, { open: isHlsAutoplayBlocked, unblockAutoPlay }),
@@ -665,89 +734,110 @@ var HLSView = () => {
665
734
  },
666
735
  /* @__PURE__ */ React10.createElement(Loading, { width: 72, height: 72 })
667
736
  ),
668
- /* @__PURE__ */ React10.createElement(HMSVideoPlayer.Root, { ref: videoRef }, /* @__PURE__ */ React10.createElement(
669
- Flex,
737
+ /* @__PURE__ */ React10.createElement(
738
+ HMSVideoPlayer.Root,
670
739
  {
671
- direction: "column",
672
- justify: "flex-end",
673
- align: "flex-start",
674
- css: {
675
- background: "linear-gradient(180deg, rgba(0, 0, 0, 0.00) 0%, #000 100%)"
676
- }
740
+ ref: videoRef,
741
+ onMouseEnter: onHoverHandler,
742
+ onMouseMove: onHoverHandler,
743
+ onMouseLeave: onHoverHandler
677
744
  },
678
- hlsPlayer && /* @__PURE__ */ React10.createElement(
679
- HMSVideoPlayer.Progress,
745
+ /* @__PURE__ */ React10.createElement(
746
+ Flex,
680
747
  {
681
- onValueChange: (currentTime) => {
682
- hlsPlayer.seekTo(currentTime);
683
- },
684
- hlsPlayer
685
- }
686
- ),
687
- /* @__PURE__ */ React10.createElement(HMSVideoPlayer.Controls.Root, { css: { p: "$4 $8" } }, /* @__PURE__ */ React10.createElement(HMSVideoPlayer.Controls.Left, null, /* @__PURE__ */ React10.createElement(
688
- HMSVideoPlayer.PlayButton,
689
- {
690
- onClick: () => __async(void 0, null, function* () {
691
- isPaused ? yield hlsPlayer == null ? void 0 : hlsPlayer.play() : hlsPlayer == null ? void 0 : hlsPlayer.pause();
692
- }),
693
- isPaused
694
- }
695
- ), /* @__PURE__ */ React10.createElement(HMSVideoPlayer.Duration, { hlsPlayer }), /* @__PURE__ */ React10.createElement(HMSVideoPlayer.Volume, { hlsPlayer }), /* @__PURE__ */ React10.createElement(
696
- IconButton,
697
- {
698
- variant: "standard",
699
- css: { px: "$2" },
700
- onClick: () => __async(void 0, null, function* () {
701
- yield hlsPlayer.seekToLivePosition();
702
- setIsVideoLive(true);
703
- }),
704
- key: "jump-to-live_btn",
705
- "data-testid": "jump-to-live_btn"
748
+ ref: controlsRef,
749
+ direction: "column",
750
+ justify: "flex-end",
751
+ align: "flex-start",
752
+ css: {
753
+ position: "absolute",
754
+ bottom: "0",
755
+ left: "0",
756
+ background: `linear-gradient(180deg, ${theme.colors.background_dim.value}00 29.46%, ${theme.colors.background_dim.value}A3 100%);`,
757
+ width: "100%",
758
+ pt: "$8",
759
+ flexShrink: 0,
760
+ transition: "visibility 0s 0.5s, opacity 0.5s linear",
761
+ visibility: controlsVisible ? `` : `hidden`,
762
+ opacity: controlsVisible ? `1` : "0"
763
+ }
706
764
  },
707
- /* @__PURE__ */ React10.createElement(Tooltip, { title: "Go to Live", side: "top" }, /* @__PURE__ */ React10.createElement(Flex, { justify: "center", gap: 2, align: "center" }, /* @__PURE__ */ React10.createElement(
708
- Box,
765
+ !isMobile && /* @__PURE__ */ React10.createElement(
766
+ HMSVideoPlayer.Controls.Root,
709
767
  {
710
768
  css: {
711
- height: "$4",
712
- width: "$4",
713
- background: isVideoLive ? "$alert_error_default" : "$on_primary_medium",
714
- r: "$1"
769
+ p: "$4 $8"
715
770
  }
716
- }
717
- ), /* @__PURE__ */ React10.createElement(
718
- Text,
719
- {
720
- variant: {
721
- "@sm": "xs"
771
+ },
772
+ /* @__PURE__ */ React10.createElement(HMSVideoPlayer.Controls.Left, null, /* @__PURE__ */ React10.createElement(
773
+ HMSVideoPlayer.PlayButton,
774
+ {
775
+ onClick: () => __async(void 0, null, function* () {
776
+ isPaused ? yield hlsPlayer == null ? void 0 : hlsPlayer.play() : hlsPlayer == null ? void 0 : hlsPlayer.pause();
777
+ }),
778
+ isPaused
779
+ }
780
+ ), /* @__PURE__ */ React10.createElement(HMSVideoPlayer.Duration, { hlsPlayer }), /* @__PURE__ */ React10.createElement(HMSVideoPlayer.Volume, { hlsPlayer }), /* @__PURE__ */ React10.createElement(
781
+ IconButton,
782
+ {
783
+ variant: "standard",
784
+ css: { px: "$2" },
785
+ onClick: () => __async(void 0, null, function* () {
786
+ yield hlsPlayer.seekToLivePosition();
787
+ setIsVideoLive(true);
788
+ }),
789
+ key: "jump-to-live_btn",
790
+ "data-testid": "jump-to-live_btn"
722
791
  },
723
- css: {
724
- c: isVideoLive ? "$on_primary_high" : "$on_primary_medium"
792
+ /* @__PURE__ */ React10.createElement(Tooltip, { title: "Go to Live", side: "top" }, /* @__PURE__ */ React10.createElement(Flex, { justify: "center", gap: 2, align: "center" }, /* @__PURE__ */ React10.createElement(
793
+ Box,
794
+ {
795
+ css: {
796
+ height: "$4",
797
+ width: "$4",
798
+ background: isVideoLive ? "$alert_error_default" : "$on_primary_medium",
799
+ r: "$1"
800
+ }
801
+ }
802
+ ), /* @__PURE__ */ React10.createElement(
803
+ Text,
804
+ {
805
+ variant: {
806
+ "@sm": "xs"
807
+ },
808
+ css: {
809
+ c: isVideoLive ? "$on_surface_high" : "$on_surface_medium"
810
+ }
811
+ },
812
+ isVideoLive ? "LIVE" : "GO LIVE"
813
+ )))
814
+ )),
815
+ /* @__PURE__ */ React10.createElement(HMSVideoPlayer.Controls.Right, null, availableLayers.length > 0 ? /* @__PURE__ */ React10.createElement(
816
+ HLSQualitySelector,
817
+ {
818
+ layers: availableLayers,
819
+ onOpen: setQualityDropDownOpen,
820
+ open: qualityDropDownOpen,
821
+ selection: currentSelectedQuality,
822
+ onQualityChange: handleQuality,
823
+ isAuto: isUserSelectedAuto
725
824
  }
726
- },
727
- isVideoLive ? "LIVE" : "GO LIVE"
728
- )))
729
- )), /* @__PURE__ */ React10.createElement(HMSVideoPlayer.Controls.Right, null, availableLayers.length > 0 ? /* @__PURE__ */ React10.createElement(
730
- HLSQualitySelector,
731
- {
732
- layers: availableLayers,
733
- selection: currentSelectedQuality,
734
- onQualityChange: handleQuality,
735
- isAuto: isUserSelectedAuto
736
- }
737
- ) : null, isFullScreenSupported ? /* @__PURE__ */ React10.createElement(
738
- FullScreenButton,
739
- {
740
- isFullScreen,
741
- onToggle: toggle,
742
- icon: isFullScreen ? /* @__PURE__ */ React10.createElement(ShrinkIcon, null) : /* @__PURE__ */ React10.createElement(ExpandIcon, null)
743
- }
744
- ) : null))
745
- ))
746
- ) : /* @__PURE__ */ React10.createElement(Flex, { align: "center", justify: "center", direction: "column", css: { size: "100%", px: "$10" } }, /* @__PURE__ */ React10.createElement(Flex, { css: { c: "$on_surface_high", r: "$round", bg: "$surface_default", p: "$2" } }, /* @__PURE__ */ React10.createElement(RadioIcon, { height: 56, width: 56 })), /* @__PURE__ */ React10.createElement(Text, { variant: "h5", css: { c: "$on_surface_high", mt: "$10", mb: 0, textAlign: "center" } }, "Stream yet to start"), /* @__PURE__ */ React10.createElement(Text, { variant: "md", css: { textAlign: "center", mt: "$4", c: "$on_surface_medium" } }, "Sit back and relax"))
825
+ ) : null, isFullScreenSupported ? /* @__PURE__ */ React10.createElement(
826
+ FullScreenButton,
827
+ {
828
+ isFullScreen,
829
+ onToggle: toggle,
830
+ icon: isFullScreen ? /* @__PURE__ */ React10.createElement(ShrinkIcon, null) : /* @__PURE__ */ React10.createElement(ExpandIcon, null)
831
+ }
832
+ ) : null)
833
+ )
834
+ )
835
+ )
836
+ ) : /* @__PURE__ */ React10.createElement(Flex, { align: "center", justify: "center", direction: "column", css: { size: "100%", px: "$10" } }, /* @__PURE__ */ React10.createElement(Flex, { css: { c: "$on_surface_high", r: "$round", bg: "$surface_default", p: "$2" } }, streamEnded ? /* @__PURE__ */ React10.createElement(ColoredHandIcon, { height: 56, width: 56 }) : /* @__PURE__ */ React10.createElement(RadioIcon, { height: 56, width: 56 })), /* @__PURE__ */ React10.createElement(Text, { variant: "h5", css: { c: "$on_surface_high", mt: "$10", mb: 0, textAlign: "center" } }, streamEnded ? "Stream has ended" : "Stream yet to start"), /* @__PURE__ */ React10.createElement(Text, { variant: "md", css: { textAlign: "center", mt: "$4", c: "$on_surface_medium" } }, streamEnded ? "Have a nice day!" : "Sit back and relax"))
747
837
  );
748
838
  };
749
839
  var HLSView_default = HLSView;
750
840
  export {
751
841
  HLSView_default as default
752
842
  };
753
- //# sourceMappingURL=HLSView-PY2FKWX3.js.map
843
+ //# sourceMappingURL=HLSView-QMU5JK7U.js.map