@100mslive/roomkit-react 0.1.4-alpha.0 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. package/dist/{HLSView-T267ZHOS.js → HLSView-CTAJQUU4.js} +7 -11
  2. package/dist/{HLSView-T267ZHOS.js.map → HLSView-CTAJQUU4.js.map} +1 -1
  3. package/dist/PinnedTrackView-CQKONH4O.js +102 -0
  4. package/dist/PinnedTrackView-CQKONH4O.js.map +7 -0
  5. package/dist/Popover/index.d.ts +1 -0
  6. package/dist/Prebuilt/App.d.ts +25 -0
  7. package/dist/Prebuilt/index.d.ts +1 -0
  8. package/dist/Prebuilt/provider/roomLayoutProvider/index.d.ts +1 -1
  9. package/dist/Sheet/Sheet.d.ts +3093 -0
  10. package/dist/Sheet/index.d.ts +1 -0
  11. package/dist/Theme/ThemeProvider.d.ts +4 -286
  12. package/dist/Theme/stitches.config.d.ts +1 -1
  13. package/dist/{VirtualBackground-BCKXNDTD.js → VirtualBackground-GGGBJYVY.js} +31 -7
  14. package/dist/VirtualBackground-GGGBJYVY.js.map +7 -0
  15. package/dist/chunk-I2FJWE74.js +827 -0
  16. package/dist/chunk-I2FJWE74.js.map +7 -0
  17. package/dist/{chunk-NLZVUXR3.js → chunk-L2SX7GBO.js} +3020 -2189
  18. package/dist/chunk-L2SX7GBO.js.map +7 -0
  19. package/dist/chunk-NOKIGB6Y.js +1100 -0
  20. package/dist/chunk-NOKIGB6Y.js.map +7 -0
  21. package/dist/chunk-TJNDX446.js +67 -0
  22. package/dist/chunk-TJNDX446.js.map +7 -0
  23. package/dist/{chunk-3HMUOAD6.js → conference-OEO7VOJD.js} +3136 -653
  24. package/dist/conference-OEO7VOJD.js.map +7 -0
  25. package/dist/index.cjs.js +15733 -15498
  26. package/dist/index.cjs.js.map +4 -4
  27. package/dist/index.js +4 -8
  28. package/dist/meta.cjs.json +3248 -3039
  29. package/dist/meta.esbuild.json +3398 -3386
  30. package/dist/utils/animations.d.ts +16 -0
  31. package/package.json +8 -11
  32. package/src/Button/Button.tsx +4 -4
  33. package/src/Dropdown/Dropdown.tsx +2 -2
  34. package/src/IconButton/IconButton.tsx +4 -2
  35. package/src/Pagination/StyledPagination.tsx +1 -0
  36. package/src/Popover/index.tsx +2 -1
  37. package/src/Prebuilt/{App.jsx → App.tsx} +95 -48
  38. package/src/Prebuilt/Prebuilt.stories.tsx +22 -8
  39. package/src/Prebuilt/common/constants.js +1 -2
  40. package/src/Prebuilt/common/hooks.js +8 -0
  41. package/src/Prebuilt/common/utils.js +15 -0
  42. package/src/Prebuilt/components/AppData/AppData.jsx +1 -2
  43. package/src/Prebuilt/components/AppData/useUISettings.js +0 -5
  44. package/src/Prebuilt/components/AudioVideoToggle.jsx +69 -26
  45. package/src/Prebuilt/components/AuthToken.jsx +3 -2
  46. package/src/Prebuilt/components/Chat/ChatSelector.jsx +1 -1
  47. package/src/Prebuilt/components/Connection/TileConnection.jsx +0 -1
  48. package/src/Prebuilt/components/EmojiReaction.jsx +23 -73
  49. package/src/Prebuilt/components/EndSessionContent.jsx +57 -0
  50. package/src/Prebuilt/components/EqualProminence.jsx +180 -0
  51. package/src/Prebuilt/components/ErrorBoundary.jsx +4 -10
  52. package/src/Prebuilt/components/Footer/EmojiCard.jsx +34 -0
  53. package/src/Prebuilt/components/Footer/Footer.jsx +73 -0
  54. package/src/Prebuilt/components/{Header → Footer}/ParticipantList.jsx +5 -5
  55. package/src/Prebuilt/components/Header/ConferencingHeader.jsx +27 -7
  56. package/src/Prebuilt/components/Header/HeaderComponents.jsx +16 -14
  57. package/src/Prebuilt/components/Header/StreamActions.jsx +101 -36
  58. package/src/Prebuilt/components/Header/StreamingHeader.jsx +1 -1
  59. package/src/Prebuilt/components/Header/common.jsx +164 -0
  60. package/src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.jsx +1 -2
  61. package/src/Prebuilt/components/LeaveCard.jsx +19 -0
  62. package/src/Prebuilt/components/LeaveRoom.jsx +35 -143
  63. package/src/Prebuilt/components/LeaveSessionContent.jsx +45 -0
  64. package/src/Prebuilt/components/MoreSettings/ActionTile.jsx +55 -0
  65. package/src/Prebuilt/components/MoreSettings/ChangeNameContent.jsx +96 -0
  66. package/src/Prebuilt/components/MoreSettings/ChangeNameModal.jsx +31 -54
  67. package/src/Prebuilt/components/MoreSettings/EmbedUrl.jsx +48 -73
  68. package/src/Prebuilt/components/MoreSettings/MoreSettings.jsx +5 -221
  69. package/src/Prebuilt/components/MoreSettings/MuteAllContent.jsx +61 -0
  70. package/src/Prebuilt/components/MoreSettings/MuteAllModal.jsx +32 -49
  71. package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopLeaveRoom.jsx +129 -0
  72. package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.jsx +219 -0
  73. package/src/Prebuilt/components/MoreSettings/SplitComponents/MwebLeaveRoom.jsx +100 -0
  74. package/src/Prebuilt/components/MoreSettings/SplitComponents/MwebOptions.jsx +259 -0
  75. package/src/Prebuilt/components/Notifications/Notifications.jsx +0 -2
  76. package/src/Prebuilt/components/Notifications/ReconnectNotifications.jsx +0 -4
  77. package/src/Prebuilt/components/PIP/PIPComponent.jsx +30 -26
  78. package/src/Prebuilt/components/PIP/PIPManager.js +13 -0
  79. package/src/Prebuilt/components/PIP/index.jsx +2 -7
  80. package/src/Prebuilt/components/Pagination.jsx +4 -4
  81. package/src/Prebuilt/components/Preview/PreviewContainer.jsx +5 -13
  82. package/src/Prebuilt/components/Preview/PreviewForm.jsx +9 -5
  83. package/src/Prebuilt/components/Preview/PreviewJoin.jsx +20 -27
  84. package/src/Prebuilt/components/RaiseHand.jsx +27 -0
  85. package/src/Prebuilt/components/ScreenShare.jsx +1 -1
  86. package/src/Prebuilt/components/ScreenshareDisplay.jsx +2 -2
  87. package/src/Prebuilt/components/ScreenshareTile.jsx +2 -2
  88. package/src/Prebuilt/components/Settings/DeviceSettings.jsx +2 -1
  89. package/src/Prebuilt/components/Settings/LayoutSettings.jsx +1 -24
  90. package/src/Prebuilt/components/Settings/SettingsModal.jsx +152 -17
  91. package/src/Prebuilt/components/ShareMenuIcon.jsx +1 -0
  92. package/src/Prebuilt/components/TileMenu/TileMenu.jsx +133 -0
  93. package/src/Prebuilt/components/TileMenu/TileMenuContent.jsx +313 -0
  94. package/src/Prebuilt/components/VideoList.jsx +5 -33
  95. package/src/Prebuilt/components/VideoTile.jsx +30 -8
  96. package/src/Prebuilt/components/conference.jsx +14 -1
  97. package/src/Prebuilt/components/init/Init.jsx +0 -27
  98. package/src/Prebuilt/components/init/initUtils.js +0 -23
  99. package/src/Prebuilt/components/pdfAnnotator/pdfFileOptions.jsx +2 -1
  100. package/src/Prebuilt/components/pdfAnnotator/pdfInfo.jsx +1 -1
  101. package/src/Prebuilt/components/pdfAnnotator/shareScreenOptions.jsx +19 -8
  102. package/src/Prebuilt/components/pdfAnnotator/uploadedFile.jsx +1 -0
  103. package/src/Prebuilt/images/pdf-share.png +0 -0
  104. package/src/Prebuilt/images/screen-share.png +0 -0
  105. package/src/Prebuilt/index.ts +1 -0
  106. package/src/Prebuilt/layouts/EmbedView.jsx +0 -1
  107. package/src/Prebuilt/layouts/InsetView.jsx +65 -24
  108. package/src/Prebuilt/layouts/PDFView.jsx +0 -1
  109. package/src/Prebuilt/layouts/SidePane.jsx +8 -7
  110. package/src/Prebuilt/layouts/WhiteboardView.jsx +2 -4
  111. package/src/Prebuilt/layouts/mainView.jsx +22 -31
  112. package/src/Prebuilt/layouts/screenShareView.jsx +0 -2
  113. package/src/Prebuilt/plugins/VirtualBackground/VirtualBackground.jsx +25 -1
  114. package/src/Prebuilt/plugins/whiteboard/index.js +1 -1
  115. package/src/Prebuilt/primitives/DialogContent.jsx +1 -1
  116. package/src/Prebuilt/provider/roomLayoutProvider/index.tsx +1 -1
  117. package/src/Sheet/Sheet.mdx +19 -0
  118. package/src/Sheet/Sheet.stories.tsx +103 -0
  119. package/src/Sheet/Sheet.tsx +118 -0
  120. package/src/Sheet/index.ts +1 -0
  121. package/src/Theme/ThemeProvider.tsx +10 -13
  122. package/src/Theme/base.config.ts +1 -1
  123. package/src/Theme/stitches.config.ts +1 -1
  124. package/src/TileMenu/StyledMenuTile.tsx +2 -2
  125. package/src/TileMenu/TileMenu.tsx +2 -0
  126. package/src/VideoTile/StyledVideoTile.tsx +5 -0
  127. package/src/utils/animations.ts +18 -0
  128. package/dist/ActiveSpeakerView-AGL73O6U.css +0 -11
  129. package/dist/ActiveSpeakerView-AGL73O6U.css.map +0 -7
  130. package/dist/ActiveSpeakerView-UPFD5RXA.js +0 -39
  131. package/dist/ActiveSpeakerView-UPFD5RXA.js.map +0 -7
  132. package/dist/HLSView-64OG755F.css +0 -11
  133. package/dist/HLSView-64OG755F.css.map +0 -7
  134. package/dist/PinnedTrackView-O4FHHHOV.js +0 -70
  135. package/dist/PinnedTrackView-O4FHHHOV.js.map +0 -7
  136. package/dist/PinnedTrackView-YWAZ2342.css +0 -11
  137. package/dist/PinnedTrackView-YWAZ2342.css.map +0 -7
  138. package/dist/VirtualBackground-BCKXNDTD.js.map +0 -7
  139. package/dist/chunk-3HMUOAD6.js.map +0 -7
  140. package/dist/chunk-6GXDYWD5.js +0 -243
  141. package/dist/chunk-6GXDYWD5.js.map +0 -7
  142. package/dist/chunk-NLZVUXR3.js.map +0 -7
  143. package/dist/chunk-ORPC2GYB.js +0 -58
  144. package/dist/chunk-ORPC2GYB.js.map +0 -7
  145. package/dist/chunk-YE4RPJYG.js +0 -811
  146. package/dist/chunk-YE4RPJYG.js.map +0 -7
  147. package/dist/conference-7KHWJZLG.css +0 -11
  148. package/dist/conference-7KHWJZLG.css.map +0 -7
  149. package/dist/conference-ETISNCLN.js +0 -3697
  150. package/dist/conference-ETISNCLN.js.map +0 -7
  151. package/dist/index.cjs.css +0 -11
  152. package/dist/index.cjs.css.map +0 -7
  153. package/dist/index.css +0 -11
  154. package/dist/index.css.map +0 -7
  155. package/dist/transcription-JJQ4UAIK.js +0 -356
  156. package/dist/transcription-JJQ4UAIK.js.map +0 -7
  157. package/src/Prebuilt/common/useSortedPeers.js +0 -28
  158. package/src/Prebuilt/components/BottomActionSheet/BottomActionSheet.jsx +0 -96
  159. package/src/Prebuilt/components/BottomActionSheet/BottomActionSheet.stories.tsx +0 -46
  160. package/src/Prebuilt/components/Footer/ConferencingFooter.jsx +0 -101
  161. package/src/Prebuilt/components/Footer/StreamingFooter.jsx +0 -71
  162. package/src/Prebuilt/components/Footer.jsx +0 -8
  163. package/src/Prebuilt/components/MoreSettings/ChangeSelfRole.jsx +0 -67
  164. package/src/Prebuilt/components/TileMenu.jsx +0 -268
  165. package/src/Prebuilt/index.d.ts +0 -20
  166. package/src/Prebuilt/index.js +0 -2
@@ -1,36 +1,93 @@
1
1
  import {
2
- Avatar,
2
+ ActionTile
3
+ } from "./chunk-TJNDX446.js";
4
+ import {
5
+ ChangeNameModal,
6
+ Pagination,
7
+ ScreenshareTile_default,
8
+ VideoList_default,
9
+ VideoTile_default
10
+ } from "./chunk-I2FJWE74.js";
11
+ import {
12
+ AudioVideoToggle,
13
+ Button,
14
+ Checkbox,
15
+ Dialog,
16
+ DialogCol,
17
+ DialogContent,
18
+ DialogDropdownTrigger,
19
+ DialogInputFile,
20
+ DialogRow,
21
+ DialogSelect,
22
+ Dropdown,
23
+ EmojiCard,
24
+ EmojiReaction,
25
+ FeatureFlags,
26
+ Footer,
27
+ FullPageProgress_default,
28
+ Header,
29
+ HorizontalDivider,
30
+ Input,
31
+ Label,
32
+ LeaveRoom,
33
+ ParticipantCount,
34
+ PictureInPicture,
35
+ RadioGroup,
36
+ RequestDialog,
37
+ ResolutionInput,
38
+ RoleChangeModal,
39
+ SettingsModal_default,
40
+ Sheet,
41
+ SidePane_default,
3
42
  Slider,
4
- StyledMenuTile,
5
- StyledPagination,
6
- StyledVideoList,
7
- StyledVideoTile,
8
- TileConnection_default,
43
+ StopRecordingInSheet,
44
+ Switch,
45
+ ThemeTypes,
9
46
  ToastManager,
10
47
  Video,
11
48
  VideoTileStats,
12
- useActiveSpeakerSorting,
13
- useBorderAudioLevel,
49
+ getFormattedCount,
50
+ getResolution,
51
+ isScreenshareSupported,
52
+ useAuthToken,
14
53
  useDropdownList,
15
54
  useDropdownSelection,
55
+ useFilteredRoles,
56
+ useHLSViewerRole,
57
+ useHMSPrebuiltContext,
16
58
  useIsHeadless,
59
+ useIsSidepaneTypeOpen,
60
+ useMyMetadata,
61
+ useNavigation,
62
+ usePDFAnnotator,
63
+ usePinnedTrack,
64
+ useRoomLayout,
17
65
  useSetAppDataByKey,
66
+ useSetUiSettings,
67
+ useShowStreamingUI,
68
+ useSidepaneToggle,
69
+ useSkipPreview,
18
70
  useTheme,
19
- useUISettings
20
- } from "./chunk-NLZVUXR3.js";
21
- import {
22
- useIsFeatureEnabled
23
- } from "./chunk-ORPC2GYB.js";
24
- import {
25
- Box,
26
- Flex,
27
- Text
28
- } from "./chunk-6GXDYWD5.js";
71
+ useUISettings,
72
+ useUrlToEmbed,
73
+ useWaitingViewerRole,
74
+ useWhiteboardMetadata
75
+ } from "./chunk-L2SX7GBO.js";
29
76
  import {
30
77
  APP_DATA,
78
+ Box,
79
+ DEFAULT_HLS_VIEWER_ROLE,
80
+ EMOJI_REACTION_TYPE,
31
81
  FEATURE_LIST,
32
- REMOTE_STOP_SCREENSHARE_TYPE,
82
+ Flex,
83
+ IconButton,
84
+ IconButton_default,
85
+ Loading,
86
+ RTMP_RECORD_DEFAULT_RESOLUTION,
33
87
  SESSION_STORE_KEY,
88
+ SIDE_PANE_OPTIONS,
89
+ Text,
90
+ Tooltip,
34
91
  UI_SETTINGS,
35
92
  __async,
36
93
  __commonJS,
@@ -41,8 +98,14 @@ import {
41
98
  config,
42
99
  define_process_env_default,
43
100
  init_define_process_env,
44
- styled
45
- } from "./chunk-YE4RPJYG.js";
101
+ isAndroid,
102
+ isChrome,
103
+ isIOS,
104
+ isIPadOS,
105
+ isMacOS,
106
+ styled,
107
+ useIsFeatureEnabled
108
+ } from "./chunk-NOKIGB6Y.js";
46
109
 
47
110
  // ../../node_modules/ua-parser-js/src/ua-parser.js
48
111
  var require_ua_parser = __commonJS({
@@ -2612,519 +2675,1965 @@ var require_lib = __commonJS({
2612
2675
  }
2613
2676
  });
2614
2677
 
2615
- // src/Prebuilt/components/VideoTile.jsx
2678
+ // src/Prebuilt/components/conference.jsx
2679
+ init_define_process_env();
2680
+ import React35, { useEffect as useEffect9, useRef as useRef8, useState as useState15 } from "react";
2681
+ import { useParams } from "react-router-dom";
2682
+ import { usePrevious } from "react-use";
2683
+ import {
2684
+ HMSRoomState,
2685
+ selectAppData as selectAppData2,
2686
+ selectIsConnectedToRoom as selectIsConnectedToRoom3,
2687
+ selectRoomState,
2688
+ useHMSActions as useHMSActions14,
2689
+ useHMSStore as useHMSStore20
2690
+ } from "@100mslive/react-sdk";
2691
+
2692
+ // src/Prebuilt/components/Footer/Footer.jsx
2616
2693
  init_define_process_env();
2617
- import React2, { Fragment as Fragment2, useCallback, useMemo, useState as useState2 } from "react";
2694
+ import React22 from "react";
2695
+ import { useMedia as useMedia2 } from "react-use";
2696
+ import { selectLocalPeerRoleName as selectLocalPeerRoleName3, useHMSStore as useHMSStore9 } from "@100mslive/react-sdk";
2697
+
2698
+ // src/Prebuilt/components/MoreSettings/MoreSettings.jsx
2699
+ init_define_process_env();
2700
+ import React11 from "react";
2701
+ import { useMedia } from "react-use";
2702
+
2703
+ // src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.jsx
2704
+ init_define_process_env();
2705
+ import React9, { Fragment, useState as useState7 } from "react";
2706
+ import { HMSHLSPlayer } from "@100mslive/hls-player";
2618
2707
  import {
2619
- selectAudioTrackByPeerID,
2620
- selectIsPeerAudioEnabled,
2708
+ selectAppData,
2621
2709
  selectLocalPeerID as selectLocalPeerID2,
2622
- selectPeerMetadata,
2623
- selectPeerNameByID,
2624
- selectVideoTrackByID,
2625
- selectVideoTrackByPeerID as selectVideoTrackByPeerID2,
2626
- useHMSStore as useHMSStore3
2710
+ selectLocalPeerRoleName as selectLocalPeerRoleName2,
2711
+ useHMSActions as useHMSActions5,
2712
+ useHMSStore as useHMSStore4
2627
2713
  } from "@100mslive/react-sdk";
2628
- import { BrbIcon, HandRaiseFilledIcon, MicOffIcon as MicOffIcon2 } from "@100mslive/react-icons";
2714
+ import { BrbIcon, CheckIcon as CheckIcon2, DragHandleIcon, HandIcon, InfoIcon, PipIcon as PipIcon2, SettingsIcon } from "@100mslive/react-icons";
2629
2715
 
2630
- // src/Prebuilt/components/peerTileUtils.jsx
2716
+ // src/Prebuilt/components/PIP/index.jsx
2631
2717
  init_define_process_env();
2632
- var PEER_NAME_PLACEHOLDER = "peerName";
2633
- var labelMap = /* @__PURE__ */ new Map([
2634
- [[true, "screen"].toString(), "Your Screen"],
2635
- [[true, "regular"].toString(), `You (${PEER_NAME_PLACEHOLDER})`],
2636
- [[false, "screen"].toString(), `${PEER_NAME_PLACEHOLDER}'s Screen`],
2637
- [[false, "regular"].toString(), PEER_NAME_PLACEHOLDER],
2638
- [[true, void 0].toString(), `You (${PEER_NAME_PLACEHOLDER})`],
2639
- [[false, void 0].toString(), `${PEER_NAME_PLACEHOLDER}`]
2640
- ]);
2641
- var getVideoTileLabel = ({ peerName, isLocal, track }) => {
2642
- const isPeerPresent = peerName !== void 0;
2643
- if (!isPeerPresent || !track) {
2644
- return isPeerPresent ? labelMap.get([isLocal, void 0].toString()).replace(PEER_NAME_PLACEHOLDER, peerName) : "";
2645
- }
2646
- const isLocallyMuted = track.volume === 0;
2647
- let label = labelMap.get([isLocal, track.source].toString());
2648
- if (label) {
2649
- label = label.replace(PEER_NAME_PLACEHOLDER, peerName);
2650
- } else {
2651
- label = `${peerName} ${track.source}`;
2652
- }
2653
- label = `${label}${track.degraded ? "(Degraded)" : ""}`;
2654
- return `${label}${isLocallyMuted ? " (Muted for you)" : ""}`;
2655
- };
2718
+ import React2 from "react";
2656
2719
 
2657
- // src/Prebuilt/components/TileMenu.jsx
2720
+ // src/Prebuilt/components/PIP/PIPComponent.jsx
2658
2721
  init_define_process_env();
2659
- import React, { Fragment, useState } from "react";
2722
+ import React, { useCallback, useEffect, useState } from "react";
2660
2723
  import {
2661
- selectLocalPeerID,
2662
- selectPermissions,
2663
- selectSessionStore,
2664
- selectTemplateAppData,
2665
- selectTrackByID,
2666
- selectVideoTrackByPeerID,
2667
- useCustomEvent,
2724
+ selectLocalPeerRoleName,
2725
+ selectPeers,
2726
+ selectTracksMap,
2668
2727
  useHMSActions,
2669
2728
  useHMSStore,
2670
- useRemoteAVToggle
2729
+ useHMSVanillaStore
2671
2730
  } from "@100mslive/react-sdk";
2672
- import {
2673
- HorizontalMenuIcon,
2674
- MicOffIcon,
2675
- MicOnIcon,
2676
- PinIcon,
2677
- RemoveUserIcon,
2678
- ShareScreenIcon,
2679
- SpeakerIcon,
2680
- StarIcon,
2681
- VideoOffIcon,
2682
- VideoOnIcon
2683
- } from "@100mslive/react-icons";
2684
- var isSameTile = ({ trackId, videoTrackID, audioTrackID }) => trackId && (videoTrackID && videoTrackID === trackId || audioTrackID && audioTrackID === trackId);
2685
- var SpotlightActions = ({ peerId }) => {
2686
- const hmsActions = useHMSActions();
2687
- const spotlightPeerId = useHMSStore(selectSessionStore(SESSION_STORE_KEY.SPOTLIGHT));
2688
- const isTileSpotlighted = spotlightPeerId === peerId;
2689
- const setSpotlightPeerId = (peer) => hmsActions.sessionStore.set(SESSION_STORE_KEY.SPOTLIGHT, peer).catch((err) => ToastManager.addToast({ title: err.description }));
2690
- return /* @__PURE__ */ React.createElement(StyledMenuTile.ItemButton, { onClick: () => isTileSpotlighted ? setSpotlightPeerId() : setSpotlightPeerId(peerId) }, /* @__PURE__ */ React.createElement(StarIcon, null), /* @__PURE__ */ React.createElement("span", null, isTileSpotlighted ? "Remove from Spotlight" : "Spotlight Tile for everyone"));
2691
- };
2692
- var PinActions = ({ audioTrackID, videoTrackID }) => {
2693
- const [pinnedTrackId, setPinnedTrackId] = useSetAppDataByKey(APP_DATA.pinnedTrackId);
2694
- const isTilePinned = isSameTile({
2695
- trackId: pinnedTrackId,
2696
- videoTrackID,
2697
- audioTrackID
2698
- });
2699
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(
2700
- StyledMenuTile.ItemButton,
2701
- {
2702
- onClick: () => isTilePinned ? setPinnedTrackId() : setPinnedTrackId(videoTrackID || audioTrackID)
2703
- },
2704
- /* @__PURE__ */ React.createElement(PinIcon, null),
2705
- /* @__PURE__ */ React.createElement("span", null, isTilePinned ? "Unpin" : "Pin", " Tile for myself")
2706
- ));
2707
- };
2708
- var TileMenu = ({ audioTrackID, videoTrackID, peerID, isScreenshare = false }) => {
2709
- var _a, _b;
2710
- const [open, setOpen] = useState(false);
2711
- const actions = useHMSActions();
2712
- const localPeerID = useHMSStore(selectLocalPeerID);
2713
- const isLocal = localPeerID === peerID;
2714
- const { removeOthers, changeRole } = useHMSStore(selectPermissions);
2715
- const { isAudioEnabled, isVideoEnabled, setVolume, toggleAudio, toggleVideo, volume } = useRemoteAVToggle(
2716
- audioTrackID,
2717
- videoTrackID
2718
- );
2719
- const showSpotlight = changeRole;
2720
- const { sendEvent } = useCustomEvent({
2721
- type: REMOTE_STOP_SCREENSHARE_TYPE
2722
- });
2723
- const isPrimaryVideoTrack = ((_a = useHMSStore(selectVideoTrackByPeerID(peerID))) == null ? void 0 : _a.id) === videoTrackID;
2724
- const uiMode = useHMSStore(selectTemplateAppData).uiMode;
2725
- const isInset = uiMode === "inset";
2726
- const isPinEnabled = useIsFeatureEnabled(FEATURE_LIST.PIN_TILE);
2727
- const showPinAction = isPinEnabled && (audioTrackID || videoTrackID && isPrimaryVideoTrack) && !isInset;
2728
- const track = useHMSStore(selectTrackByID(videoTrackID));
2729
- const hideSimulcastLayers = !((_b = track == null ? void 0 : track.layerDefinitions) == null ? void 0 : _b.length) || track.degraded || !track.enabled;
2730
- useDropdownList({ open, name: "TileMenu" });
2731
- if (!(removeOthers || toggleAudio || toggleVideo || setVolume || showPinAction) && hideSimulcastLayers) {
2732
- return null;
2731
+ import { PipIcon } from "@100mslive/react-icons";
2732
+
2733
+ // src/Prebuilt/components/PIP/SetupMediaSession.js
2734
+ init_define_process_env();
2735
+ import { selectIsLocalAudioEnabled, selectIsLocalVideoEnabled } from "@100mslive/react-sdk";
2736
+ var SetupMediaSession = class {
2737
+ constructor() {
2738
+ __publicField(this, "setup", (actions, store) => {
2739
+ this.actions = actions;
2740
+ this.store = store;
2741
+ this.initState();
2742
+ this.setUpHandlers();
2743
+ });
2744
+ __publicField(this, "initState", () => {
2745
+ var _a, _b, _c, _d;
2746
+ const isMicActive = this.store.getState(selectIsLocalAudioEnabled);
2747
+ const isCamActive = this.store.getState(selectIsLocalVideoEnabled);
2748
+ (_b = (_a = navigator.mediaSession) == null ? void 0 : _a.setMicrophoneActive) == null ? void 0 : _b.call(_a, isMicActive);
2749
+ (_d = (_c = navigator.mediaSession) == null ? void 0 : _c.setCameraActive) == null ? void 0 : _d.call(_c, isCamActive);
2750
+ this.store.subscribe((isMicActive2) => {
2751
+ var _a2, _b2;
2752
+ (_b2 = (_a2 = navigator.mediaSession) == null ? void 0 : _a2.setMicrophoneActive) == null ? void 0 : _b2.call(_a2, isMicActive2);
2753
+ }, selectIsLocalAudioEnabled);
2754
+ this.store.subscribe((isCamActive2) => {
2755
+ var _a2, _b2;
2756
+ (_b2 = (_a2 = navigator.mediaSession) == null ? void 0 : _a2.setCameraActive) == null ? void 0 : _b2.call(_a2, isCamActive2);
2757
+ }, selectIsLocalVideoEnabled);
2758
+ });
2759
+ __publicField(this, "toggleMic", () => __async(this, null, function* () {
2760
+ console.log("toggle mic clicked in pip");
2761
+ const current = this.store.getState(selectIsLocalAudioEnabled);
2762
+ yield this.actions.setLocalAudioEnabled(!current);
2763
+ }));
2764
+ __publicField(this, "toggleCam", () => __async(this, null, function* () {
2765
+ console.log("toggle cam clicked in pip");
2766
+ const current = this.store.getState(selectIsLocalVideoEnabled);
2767
+ yield this.actions.setLocalVideoEnabled(!current);
2768
+ }));
2769
+ __publicField(this, "leave", () => {
2770
+ console.log("leave called from pip");
2771
+ this.actions.leave();
2772
+ });
2773
+ __publicField(this, "setUpHandlers", () => {
2774
+ if (navigator.mediaSession) {
2775
+ try {
2776
+ navigator.mediaSession.setActionHandler("togglemicrophone", this.toggleMic);
2777
+ navigator.mediaSession.setActionHandler("togglecamera", this.toggleCam);
2778
+ navigator.mediaSession.setActionHandler("hangup", this.leave);
2779
+ } catch (err) {
2780
+ console.error("error in setting media session handlers", err);
2781
+ }
2782
+ }
2783
+ });
2733
2784
  }
2734
- if (isInset && isLocal) {
2785
+ };
2786
+ var MediaSession = new SetupMediaSession();
2787
+
2788
+ // src/Prebuilt/components/PIP/PIPComponent.jsx
2789
+ var PIPComponent = ({ content = null }) => {
2790
+ const localPeerRole = useHMSStore(selectLocalPeerRoleName);
2791
+ const [isPipOn, setIsPipOn] = useState(PictureInPicture.isOn());
2792
+ const hmsActions = useHMSActions();
2793
+ const store = useHMSVanillaStore();
2794
+ const isFeatureEnabled = useIsFeatureEnabled(FEATURE_LIST.PICTURE_IN_PICTURE);
2795
+ const onPipToggle = useCallback(() => {
2796
+ if (!isPipOn) {
2797
+ PictureInPicture.start(hmsActions, setIsPipOn).catch((err) => console.error("error in starting pip", err));
2798
+ MediaSession.setup(hmsActions, store);
2799
+ } else {
2800
+ PictureInPicture.stop().catch((err) => console.error("error in stopping pip", err));
2801
+ }
2802
+ }, [hmsActions, isPipOn, store]);
2803
+ if (!PictureInPicture.isSupported() || localPeerRole === DEFAULT_HLS_VIEWER_ROLE || !isFeatureEnabled) {
2735
2804
  return null;
2736
2805
  }
2737
- return /* @__PURE__ */ React.createElement(StyledMenuTile.Root, { open, onOpenChange: setOpen }, /* @__PURE__ */ React.createElement(StyledMenuTile.Trigger, { "data-testid": "participant_menu_btn", onClick: (e) => e.stopPropagation() }, /* @__PURE__ */ React.createElement(HorizontalMenuIcon, null)), /* @__PURE__ */ React.createElement(StyledMenuTile.Content, { side: "top", align: "end" }, isLocal ? showPinAction && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(PinActions, { audioTrackID, videoTrackID }), showSpotlight && /* @__PURE__ */ React.createElement(SpotlightActions, { peerId: peerID })) : /* @__PURE__ */ React.createElement(React.Fragment, null, toggleVideo ? /* @__PURE__ */ React.createElement(
2738
- StyledMenuTile.ItemButton,
2739
- {
2740
- onClick: toggleVideo,
2741
- "data-testid": isVideoEnabled ? "mute_video_participant_btn" : "unmute_video_participant_btn"
2742
- },
2743
- isVideoEnabled ? /* @__PURE__ */ React.createElement(VideoOnIcon, null) : /* @__PURE__ */ React.createElement(VideoOffIcon, null),
2744
- /* @__PURE__ */ React.createElement("span", null, isVideoEnabled ? "Mute" : "Request Unmute")
2745
- ) : null, toggleAudio ? /* @__PURE__ */ React.createElement(
2746
- StyledMenuTile.ItemButton,
2747
- {
2748
- onClick: toggleAudio,
2749
- "data-testid": isVideoEnabled ? "mute_audio_participant_btn" : "unmute_audio_participant_btn"
2750
- },
2751
- isAudioEnabled ? /* @__PURE__ */ React.createElement(MicOnIcon, null) : /* @__PURE__ */ React.createElement(MicOffIcon, null),
2752
- /* @__PURE__ */ React.createElement("span", null, isAudioEnabled ? "Mute" : "Request Unmute")
2753
- ) : null, audioTrackID ? /* @__PURE__ */ React.createElement(StyledMenuTile.VolumeItem, { "data-testid": "participant_volume_slider" }, /* @__PURE__ */ React.createElement(Flex, { align: "center", gap: 1 }, /* @__PURE__ */ React.createElement(SpeakerIcon, null), /* @__PURE__ */ React.createElement(Box, { as: "span", css: { ml: "$4" } }, "Volume (", volume, ")")), /* @__PURE__ */ React.createElement(Slider, { css: { my: "0.5rem" }, step: 5, value: [volume], onValueChange: (e) => setVolume(e[0]) })) : null, showPinAction && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(PinActions, { audioTrackID, videoTrackID }), showSpotlight && /* @__PURE__ */ React.createElement(SpotlightActions, { peerId: peerID })), /* @__PURE__ */ React.createElement(SimulcastLayers, { trackId: videoTrackID }), removeOthers ? /* @__PURE__ */ React.createElement(
2754
- StyledMenuTile.RemoveItem,
2755
- {
2756
- onClick: () => __async(void 0, null, function* () {
2757
- try {
2758
- yield actions.removePeer(peerID, "");
2759
- } catch (error) {
2760
- }
2761
- }),
2762
- "data-testid": "remove_participant_btn"
2763
- },
2764
- /* @__PURE__ */ React.createElement(RemoveUserIcon, null),
2765
- /* @__PURE__ */ React.createElement("span", null, "Remove Participant")
2766
- ) : null, removeOthers && isScreenshare ? /* @__PURE__ */ React.createElement(StyledMenuTile.RemoveItem, { onClick: () => sendEvent({}) }, /* @__PURE__ */ React.createElement(ShareScreenIcon, null), /* @__PURE__ */ React.createElement("span", null, "Stop Screenshare")) : null)));
2806
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, content ? /* @__PURE__ */ React.createElement(Flex, { css: { w: "100%" }, onClick: () => onPipToggle(), "data-testid": "pip_btn" }, content) : /* @__PURE__ */ React.createElement(Tooltip, { title: `${isPipOn ? "Deactivate" : "Activate"} picture in picture view` }, /* @__PURE__ */ React.createElement(IconButton_default, { active: !isPipOn, key: "pip", onClick: () => onPipToggle(), "data-testid": "pip_btn" }, /* @__PURE__ */ React.createElement(PipIcon, null))));
2767
2807
  };
2768
- var SimulcastLayers = ({ trackId }) => {
2769
- var _a;
2770
- const track = useHMSStore(selectTrackByID(trackId));
2771
- const actions = useHMSActions();
2772
- const bg = useDropdownSelection();
2773
- if (!((_a = track == null ? void 0 : track.layerDefinitions) == null ? void 0 : _a.length) || track.degraded || !track.enabled) {
2808
+ var ActivatedPIP = () => {
2809
+ const tracksMap = useHMSStore(selectTracksMap);
2810
+ const storePeers = useHMSStore(selectPeers);
2811
+ const pinnedTrack = usePinnedTrack();
2812
+ useEffect(() => {
2813
+ PictureInPicture.listenToStateChange((isPipOn) => {
2814
+ if (!isPipOn) {
2815
+ return;
2816
+ }
2817
+ let pipPeers = storePeers;
2818
+ if (pinnedTrack) {
2819
+ pipPeers = storePeers.filter((peer) => pinnedTrack.peerId === peer.id);
2820
+ }
2821
+ PictureInPicture.updatePeersAndTracks(pipPeers, tracksMap).catch((err) => {
2822
+ console.error("error in updating pip", err);
2823
+ });
2824
+ });
2825
+ }, [storePeers, tracksMap, pinnedTrack]);
2826
+ return /* @__PURE__ */ React.createElement(React.Fragment, null);
2827
+ };
2828
+ var PIPComponent_default = PIPComponent;
2829
+
2830
+ // src/Prebuilt/components/PIP/index.jsx
2831
+ var PIP = ({ content = null }) => {
2832
+ return /* @__PURE__ */ React2.createElement(PIPComponent_default, { content });
2833
+ };
2834
+
2835
+ // src/Prebuilt/components/Settings/StartRecording.jsx
2836
+ init_define_process_env();
2837
+ import React3, { useState as useState2 } from "react";
2838
+ import { selectPermissions, useHMSActions as useHMSActions2, useHMSStore as useHMSStore2, useRecordingStreaming } from "@100mslive/react-sdk";
2839
+ import { AlertTriangleIcon } from "@100mslive/react-icons";
2840
+ var StartRecording = ({ open, onOpenChange }) => {
2841
+ const permissions = useHMSStore2(selectPermissions);
2842
+ const [resolution, setResolution] = useState2(RTMP_RECORD_DEFAULT_RESOLUTION);
2843
+ const [recordingStarted, setRecordingState] = useSetAppDataByKey(APP_DATA.recordingStarted);
2844
+ const { isBrowserRecordingOn, isStreamingOn, isHLSRunning } = useRecordingStreaming();
2845
+ const hmsActions = useHMSActions2();
2846
+ if (!(permissions == null ? void 0 : permissions.browserRecording) || isHLSRunning) {
2774
2847
  return null;
2775
2848
  }
2776
- const currentLayer = track.layerDefinitions.find((layer) => layer.layer === track.layer);
2777
- return /* @__PURE__ */ React.createElement(Fragment, null, /* @__PURE__ */ React.createElement(StyledMenuTile.ItemButton, { css: { color: "$on_surface_medium", cursor: "default" } }, "Select maximum resolution"), track.layerDefinitions.map((layer) => {
2778
- return /* @__PURE__ */ React.createElement(
2779
- StyledMenuTile.ItemButton,
2849
+ if (isBrowserRecordingOn) {
2850
+ return /* @__PURE__ */ React3.createElement(Dialog.Root, { open, onOpenChange }, /* @__PURE__ */ React3.createElement(Dialog.Portal, null, /* @__PURE__ */ React3.createElement(
2851
+ Dialog.Content,
2780
2852
  {
2781
- key: layer.layer,
2782
- onClick: () => __async(void 0, null, function* () {
2783
- yield actions.setPreferredLayer(trackId, layer.layer);
2784
- }),
2785
2853
  css: {
2786
- justifyContent: "space-between",
2787
- bg: track.preferredLayer === layer.layer ? bg : void 0,
2788
- "&:hover": {
2789
- bg: track.preferredLayer === layer.layer ? bg : void 0
2790
- }
2854
+ width: "min(400px,80%)",
2855
+ p: "$10",
2856
+ bg: "#201617"
2791
2857
  }
2792
2858
  },
2793
- /* @__PURE__ */ React.createElement(
2794
- Text,
2859
+ /* @__PURE__ */ React3.createElement(Dialog.Title, null, /* @__PURE__ */ React3.createElement(Flex, { gap: 2, css: { c: "$alert_error_default" } }, /* @__PURE__ */ React3.createElement(AlertTriangleIcon, null), /* @__PURE__ */ React3.createElement(Text, { css: { c: "inherit" }, variant: "h6" }, "End Recording"))),
2860
+ /* @__PURE__ */ React3.createElement(Text, { variant: "sm", css: { c: "$on_surface_medium", my: "$8" } }, "Are you sure you want to end recording? You can\u2019t undo this action."),
2861
+ /* @__PURE__ */ React3.createElement(Flex, { justify: "end", css: { mt: "$12" } }, /* @__PURE__ */ React3.createElement(Dialog.Close, { asChild: true }, /* @__PURE__ */ React3.createElement(Button, { outlined: true, css: { borderColor: "$secondary_bright", mr: "$4" } }, "Don't end")), /* @__PURE__ */ React3.createElement(
2862
+ Button,
2795
2863
  {
2796
- as: "span",
2797
- css: {
2798
- textTransform: "capitalize",
2799
- mr: "$2",
2800
- fontWeight: track.preferredLayer === layer.layer ? "$semiBold" : "$regular"
2801
- }
2864
+ "data-testid": "stop_recording_confirm_mobile",
2865
+ variant: "danger",
2866
+ icon: true,
2867
+ onClick: () => __async(void 0, null, function* () {
2868
+ try {
2869
+ yield hmsActions.stopRTMPAndRecording();
2870
+ } catch (error) {
2871
+ ToastManager.addToast({
2872
+ title: error.message,
2873
+ variant: "error"
2874
+ });
2875
+ }
2876
+ onOpenChange(false);
2877
+ })
2802
2878
  },
2803
- layer.layer
2804
- ),
2805
- /* @__PURE__ */ React.createElement(Text, { as: "span", variant: "xs", css: { color: "$on_surface_medium" } }, layer.resolution.width, "x", layer.resolution.height)
2806
- );
2807
- }), /* @__PURE__ */ React.createElement(StyledMenuTile.ItemButton, null, /* @__PURE__ */ React.createElement(Text, { as: "span", variant: "xs", css: { color: "$on_surface_medium" } }, "Currently streaming:", /* @__PURE__ */ React.createElement(
2808
- Text,
2879
+ "End recording"
2880
+ ))
2881
+ )));
2882
+ }
2883
+ return /* @__PURE__ */ React3.createElement(Dialog.Root, { open, onOpenChange }, /* @__PURE__ */ React3.createElement(Dialog.Content, { css: { width: "min(400px,80%)", p: "$10" } }, /* @__PURE__ */ React3.createElement(Dialog.Title, null, /* @__PURE__ */ React3.createElement(Text, { variant: "h6" }, "Start Recording")), /* @__PURE__ */ React3.createElement(
2884
+ ResolutionInput,
2809
2885
  {
2810
- as: "span",
2811
- variant: "xs",
2812
- css: {
2813
- fontWeight: "$semiBold",
2814
- textTransform: "capitalize",
2815
- color: "$on_surface_medium",
2816
- ml: "$2"
2817
- }
2886
+ testId: "recording_resolution_mobile",
2887
+ css: { flexDirection: "column", alignItems: "start" },
2888
+ onResolutionChange: setResolution
2889
+ }
2890
+ ), /* @__PURE__ */ React3.createElement(
2891
+ Button,
2892
+ {
2893
+ "data-testid": "start_recording_confirm_mobile",
2894
+ variant: "primary",
2895
+ icon: true,
2896
+ css: { ml: "auto" },
2897
+ type: "submit",
2898
+ disabled: recordingStarted || isStreamingOn,
2899
+ onClick: () => __async(void 0, null, function* () {
2900
+ try {
2901
+ setRecordingState(true);
2902
+ yield hmsActions.startRTMPOrRecording({
2903
+ resolution: getResolution(resolution),
2904
+ record: true
2905
+ });
2906
+ } catch (error) {
2907
+ if (error.message.includes("stream already running")) {
2908
+ ToastManager.addToast({
2909
+ title: "Recording already running",
2910
+ variant: "error"
2911
+ });
2912
+ } else {
2913
+ ToastManager.addToast({
2914
+ title: error.message,
2915
+ variant: "error"
2916
+ });
2917
+ }
2918
+ setRecordingState(false);
2919
+ }
2920
+ onOpenChange(false);
2921
+ })
2818
2922
  },
2819
- currentLayer ? /* @__PURE__ */ React.createElement(React.Fragment, null, track.layer, " (", currentLayer.resolution.width, "x", currentLayer.resolution.height, ")") : "-"
2820
- ))));
2923
+ "Start"
2924
+ )));
2821
2925
  };
2822
- var TileMenu_default = TileMenu;
2926
+ var StartRecording_default = StartRecording;
2823
2927
 
2824
- // src/Prebuilt/components/AppData/useAppConfig.js
2928
+ // src/Prebuilt/components/StatsForNerds.jsx
2825
2929
  init_define_process_env();
2826
- import { selectAppDataByPath, useHMSStore as useHMSStore2 } from "@100mslive/react-sdk";
2827
- var useAppConfig = (...path) => {
2828
- const appConfig = useHMSStore2(selectAppDataByPath(APP_DATA.appConfig, ...path));
2829
- return appConfig;
2830
- };
2831
-
2832
- // src/Prebuilt/components/VideoTile.jsx
2833
- var Tile = ({ peerId, trackId, width, height, objectFit = "cover", rootCSS = {}, containerCSS = {} }) => {
2834
- const trackSelector = trackId ? selectVideoTrackByID(trackId) : selectVideoTrackByPeerID2(peerId);
2835
- const track = useHMSStore3(trackSelector);
2836
- const peerName = useHMSStore3(selectPeerNameByID(peerId));
2837
- const audioTrack = useHMSStore3(selectAudioTrackByPeerID(peerId));
2838
- const localPeerID = useHMSStore3(selectLocalPeerID2);
2839
- const isAudioOnly = useUISettings(UI_SETTINGS.isAudioOnly);
2840
- const mirrorLocalVideo = useUISettings(UI_SETTINGS.mirrorLocalVideo);
2841
- const showStatsOnTiles = useUISettings(UI_SETTINGS.showStatsOnTiles);
2842
- const isHeadless = useIsHeadless();
2843
- const isAudioMuted = !useHMSStore3(selectIsPeerAudioEnabled(peerId));
2844
- const isVideoMuted = !(track == null ? void 0 : track.enabled);
2845
- const [isMouseHovered, setIsMouseHovered] = useState2(false);
2846
- const borderAudioRef = useBorderAudioLevel(audioTrack == null ? void 0 : audioTrack.id);
2847
- const isVideoDegraded = track == null ? void 0 : track.degraded;
2848
- const isLocal = localPeerID === peerId;
2849
- const label = getVideoTileLabel({
2850
- peerName,
2851
- track,
2852
- isLocal
2853
- });
2854
- const onHoverHandler = useCallback((event) => {
2855
- setIsMouseHovered(event.type === "mouseenter");
2856
- }, []);
2857
- const headlessConfig = useAppConfig("headlessConfig");
2858
- const hideLabel = isHeadless && (headlessConfig == null ? void 0 : headlessConfig.hideTileName);
2859
- const isTileBigEnoughToShowStats = height >= 180 && width >= 180;
2860
- const avatarSize = useMemo(() => {
2861
- if (!width || !height) {
2862
- return void 0;
2863
- }
2864
- if (width <= 150 || height <= 150) {
2865
- return "small";
2866
- } else if (width <= 300 || height <= 300) {
2867
- return "medium";
2868
- }
2869
- return "large";
2870
- }, [width, height]);
2871
- return /* @__PURE__ */ React2.createElement(
2872
- StyledVideoTile.Root,
2930
+ import React4, { useEffect as useEffect2, useMemo, useRef, useState as useState3 } from "react";
2931
+ import {
2932
+ selectHMSStats,
2933
+ selectLocalPeerID,
2934
+ selectPeersMap,
2935
+ selectTracksMap as selectTracksMap2,
2936
+ useHMSStatsStore,
2937
+ useHMSStore as useHMSStore3
2938
+ } from "@100mslive/react-sdk";
2939
+ var StatsForNerds = ({ onOpenChange }) => {
2940
+ var _a;
2941
+ const tracksWithLabels = useTracksWithLabel();
2942
+ const statsOptions = useMemo(
2943
+ () => [{ id: "local-peer", label: "Local Peer Stats" }, ...tracksWithLabels],
2944
+ [tracksWithLabels]
2945
+ );
2946
+ const [selectedStat, setSelectedStat] = useState3(statsOptions[0]);
2947
+ const [showStatsOnTiles, setShowStatsOnTiles] = useSetUiSettings(UI_SETTINGS.showStatsOnTiles);
2948
+ const [open, setOpen] = useState3(false);
2949
+ const ref = useRef();
2950
+ const selectionBg = useDropdownSelection();
2951
+ useEffect2(() => {
2952
+ if (selectedStat.id !== "local-peer" && !tracksWithLabels.find((track) => track.id === selectedStat.id)) {
2953
+ setSelectedStat("local-peer");
2954
+ }
2955
+ }, [tracksWithLabels, selectedStat]);
2956
+ return /* @__PURE__ */ React4.createElement(Dialog.Root, { defaultOpen: true, onOpenChange }, /* @__PURE__ */ React4.createElement(Dialog.Portal, null, /* @__PURE__ */ React4.createElement(Dialog.Overlay, null), /* @__PURE__ */ React4.createElement(
2957
+ Dialog.Content,
2873
2958
  {
2874
- css: __spreadValues({
2875
- width,
2876
- height,
2877
- padding: getPadding({
2878
- isHeadless,
2879
- tileOffset: headlessConfig == null ? void 0 : headlessConfig.tileOffset,
2880
- hideAudioLevel: headlessConfig == null ? void 0 : headlessConfig.hideAudioLevel
2881
- })
2882
- }, rootCSS),
2883
- "data-testid": `participant_tile_${peerName}`
2959
+ css: {
2960
+ width: "min(500px, 95%)",
2961
+ maxHeight: "100%",
2962
+ overflowY: "auto"
2963
+ }
2884
2964
  },
2885
- peerName !== void 0 ? /* @__PURE__ */ React2.createElement(
2886
- StyledVideoTile.Container,
2965
+ /* @__PURE__ */ React4.createElement(Dialog.Title, { css: { p: "$4 0" } }, /* @__PURE__ */ React4.createElement(Flex, { justify: "between" }, /* @__PURE__ */ React4.createElement(Flex, { align: "center", css: { mb: "$1" } }, /* @__PURE__ */ React4.createElement(Text, { variant: "h6", inline: true }, "Stats For Nerds")), /* @__PURE__ */ React4.createElement(Dialog.DefaultClose, { "data-testid": "stats_dialog_close_icon" }))),
2966
+ /* @__PURE__ */ React4.createElement(HorizontalDivider, { css: { mt: "0.8rem" } }),
2967
+ /* @__PURE__ */ React4.createElement(Flex, { justify: "start", gap: 4, css: { m: "$10 0" } }, /* @__PURE__ */ React4.createElement(Switch, { checked: showStatsOnTiles, onCheckedChange: setShowStatsOnTiles }), /* @__PURE__ */ React4.createElement(Text, { variant: "body2", css: { fontWeight: "$semiBold" } }, "Show Stats on Tiles")),
2968
+ /* @__PURE__ */ React4.createElement(
2969
+ Flex,
2887
2970
  {
2888
- onMouseEnter: onHoverHandler,
2889
- onMouseLeave: onHoverHandler,
2890
- ref: isHeadless && (headlessConfig == null ? void 0 : headlessConfig.hideAudioLevel) ? void 0 : borderAudioRef,
2891
- noRadius: isHeadless && Number(headlessConfig == null ? void 0 : headlessConfig.tileOffset) === 0,
2892
- css: containerCSS
2971
+ direction: "column",
2972
+ css: {
2973
+ mb: "$12",
2974
+ position: "relative",
2975
+ minWidth: 0
2976
+ }
2893
2977
  },
2894
- showStatsOnTiles && isTileBigEnoughToShowStats ? /* @__PURE__ */ React2.createElement(VideoTileStats, { audioTrackID: audioTrack == null ? void 0 : audioTrack.id, videoTrackID: track == null ? void 0 : track.id, peerID: peerId, isLocal }) : null,
2895
- track ? /* @__PURE__ */ React2.createElement(
2896
- Video,
2978
+ /* @__PURE__ */ React4.createElement(Label, { variant: "body2" }, "Stats For"),
2979
+ /* @__PURE__ */ React4.createElement(Dropdown.Root, { "data-testid": "dialog_select_Stats For", open, onOpenChange: setOpen }, /* @__PURE__ */ React4.createElement(
2980
+ DialogDropdownTrigger,
2897
2981
  {
2898
- trackId: track == null ? void 0 : track.id,
2899
- attach: isLocal ? void 0 : !isAudioOnly,
2900
- mirror: mirrorLocalVideo && peerId === localPeerID && (track == null ? void 0 : track.source) === "regular" && (track == null ? void 0 : track.facingMode) !== "environment",
2901
- degraded: isVideoDegraded,
2902
- noRadius: isHeadless && Number(headlessConfig == null ? void 0 : headlessConfig.tileOffset) === 0,
2903
- "data-testid": "participant_video_tile",
2904
- css: {
2905
- objectFit
2906
- }
2982
+ title: selectedStat.label || "Select Stats",
2983
+ css: { mt: "$4" },
2984
+ titleCSS: { mx: 0 },
2985
+ open,
2986
+ ref
2907
2987
  }
2908
- ) : null,
2909
- isVideoMuted || isVideoDegraded || !isLocal && isAudioOnly ? /* @__PURE__ */ React2.createElement(StyledVideoTile.AvatarContainer, null, /* @__PURE__ */ React2.createElement(Avatar, { name: peerName || "", "data-testid": "participant_avatar_icon", size: avatarSize })) : null,
2910
- showAudioMuted({
2911
- hideTileAudioMute: headlessConfig == null ? void 0 : headlessConfig.hideTileAudioMute,
2912
- isHeadless,
2913
- isAudioMuted
2914
- }) ? /* @__PURE__ */ React2.createElement(
2915
- StyledVideoTile.AudioIndicator,
2916
- {
2917
- "data-testid": "participant_audio_mute_icon",
2918
- size: width && height && (width < 180 || height < 180) ? "small" : "medium"
2919
- },
2920
- /* @__PURE__ */ React2.createElement(MicOffIcon2, null)
2921
- ) : null,
2922
- isMouseHovered && !isHeadless ? /* @__PURE__ */ React2.createElement(TileMenu_default, { peerID: peerId, audioTrackID: audioTrack == null ? void 0 : audioTrack.id, videoTrackID: track == null ? void 0 : track.id }) : null,
2923
- /* @__PURE__ */ React2.createElement(PeerMetadata, { peerId }),
2924
- /* @__PURE__ */ React2.createElement(TileConnection_default, { hideLabel, name: label, isTile: true, peerId, width })
2925
- ) : null
2926
- );
2988
+ ), /* @__PURE__ */ React4.createElement(Dropdown.Portal, null, /* @__PURE__ */ React4.createElement(Dropdown.Content, { align: "start", sideOffset: 8, css: { w: (_a = ref.current) == null ? void 0 : _a.clientWidth, zIndex: 1e3 } }, statsOptions.map((option) => {
2989
+ const isSelected = option.id === selectedStat.id && option.layer === selectedStat.layer;
2990
+ return /* @__PURE__ */ React4.createElement(
2991
+ Dropdown.Item,
2992
+ {
2993
+ key: `${option.id}-${option.layer || ""}`,
2994
+ onClick: () => {
2995
+ setSelectedStat(option);
2996
+ },
2997
+ css: {
2998
+ px: "$9",
2999
+ bg: isSelected ? selectionBg : void 0,
3000
+ c: isSelected ? "$on_primary_high" : "$on_primary_high"
3001
+ }
3002
+ },
3003
+ option.label
3004
+ );
3005
+ }))))
3006
+ ),
3007
+ selectedStat.id === "local-peer" ? /* @__PURE__ */ React4.createElement(LocalPeerStats, null) : /* @__PURE__ */ React4.createElement(TrackStats, { trackID: selectedStat.id, layer: selectedStat.layer, local: selectedStat.local })
3008
+ )));
2927
3009
  };
2928
- var metaStyles = { top: "$4", left: "$4" };
2929
- var PeerMetadata = ({ peerId }) => {
2930
- const metaData = useHMSStore3(selectPeerMetadata(peerId));
2931
- const isHandRaised = (metaData == null ? void 0 : metaData.isHandRaised) || false;
2932
- const isBRB = (metaData == null ? void 0 : metaData.isBRBOn) || false;
2933
- return /* @__PURE__ */ React2.createElement(Fragment2, null, isHandRaised ? /* @__PURE__ */ React2.createElement(StyledVideoTile.AttributeBox, { css: metaStyles, "data-testid": "raiseHand_icon_onTile" }, /* @__PURE__ */ React2.createElement(HandRaiseFilledIcon, { width: 40, height: 40 })) : null, isBRB ? /* @__PURE__ */ React2.createElement(StyledVideoTile.AttributeBox, { css: metaStyles, "data-testid": "brb_icon_onTile" }, /* @__PURE__ */ React2.createElement(BrbIcon, { width: 40, height: 40 })) : null);
3010
+ var useTracksWithLabel = () => {
3011
+ const tracksMap = useHMSStore3(selectTracksMap2);
3012
+ const peersMap = useHMSStore3(selectPeersMap);
3013
+ const localPeerID = useHMSStore3(selectLocalPeerID);
3014
+ const tracksWithLabels = useMemo(
3015
+ () => Object.values(tracksMap).reduce((res, track) => {
3016
+ var _a, _b;
3017
+ const peerName = (_a = peersMap[track.peerId]) == null ? void 0 : _a.name;
3018
+ const isLocalTrack = track.peerId === localPeerID;
3019
+ if (isLocalTrack && ((_b = track.layerDefinitions) == null ? void 0 : _b.length)) {
3020
+ res = res.concat(
3021
+ track.layerDefinitions.map(({ layer }) => {
3022
+ return {
3023
+ id: track.id,
3024
+ layer,
3025
+ local: true,
3026
+ label: `${peerName} ${track.source} ${track.type} - ${layer}`
3027
+ };
3028
+ })
3029
+ );
3030
+ return res;
3031
+ }
3032
+ res.push({
3033
+ id: track.id,
3034
+ local: isLocalTrack,
3035
+ label: `${peerName} ${track.source} ${track.type}`
3036
+ });
3037
+ return res;
3038
+ }, []),
3039
+ [tracksMap, peersMap, localPeerID]
3040
+ );
3041
+ return tracksWithLabels;
2934
3042
  };
2935
- var VideoTile = React2.memo(Tile);
2936
- var showAudioMuted = ({ hideTileAudioMute, isHeadless, isAudioMuted }) => {
2937
- if (!isHeadless) {
2938
- return isAudioMuted;
3043
+ var LocalPeerStats = () => {
3044
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i3;
3045
+ const stats = useHMSStatsStore(selectHMSStats.localPeerStats);
3046
+ if (!stats) {
3047
+ return null;
2939
3048
  }
2940
- return isAudioMuted && !hideTileAudioMute;
3049
+ return /* @__PURE__ */ React4.createElement(Flex, { css: { flexWrap: "wrap", gap: "$10" } }, /* @__PURE__ */ React4.createElement(StatsRow, { label: "Packets Lost", value: (_a = stats.subscribe) == null ? void 0 : _a.packetsLost }), /* @__PURE__ */ React4.createElement(StatsRow, { label: "Jitter", value: (_b = stats.subscribe) == null ? void 0 : _b.jitter }), /* @__PURE__ */ React4.createElement(StatsRow, { label: "Publish Bitrate", value: formatBytes((_c = stats.publish) == null ? void 0 : _c.bitrate, "b/s") }), /* @__PURE__ */ React4.createElement(StatsRow, { label: "Subscribe Bitrate", value: formatBytes((_d = stats.subscribe) == null ? void 0 : _d.bitrate, "b/s") }), /* @__PURE__ */ React4.createElement(
3050
+ StatsRow,
3051
+ {
3052
+ label: "Available Outgoing Bitrate",
3053
+ value: formatBytes((_e = stats.publish) == null ? void 0 : _e.availableOutgoingBitrate, "b/s")
3054
+ }
3055
+ ), /* @__PURE__ */ React4.createElement(StatsRow, { label: "Total Bytes Sent", value: formatBytes((_f = stats.publish) == null ? void 0 : _f.bytesSent) }), /* @__PURE__ */ React4.createElement(StatsRow, { label: "Total Bytes Received", value: formatBytes((_g = stats.subscribe) == null ? void 0 : _g.bytesReceived) }), /* @__PURE__ */ React4.createElement(
3056
+ StatsRow,
3057
+ {
3058
+ label: "Round Trip Time",
3059
+ value: `${(((((_h = stats.publish) == null ? void 0 : _h.currentRoundTripTime) || 0) + (((_i3 = stats.subscribe) == null ? void 0 : _i3.currentRoundTripTime) || 0)) / 2).toFixed(3) * 1e3} ms`
3060
+ }
3061
+ ));
2941
3062
  };
2942
- var getPadding = ({ isHeadless, tileOffset, hideAudioLevel }) => {
2943
- if (!isHeadless || isNaN(Number(tileOffset))) {
2944
- return void 0;
3063
+ var TrackStats = ({ trackID, layer, local }) => {
3064
+ var _a;
3065
+ const selector = layer ? selectHMSStats.localVideoTrackStatsByLayer(layer)(trackID) : local ? selectHMSStats.localAudioTrackStatsByID(trackID) : selectHMSStats.trackStatsByID(trackID);
3066
+ const stats = useHMSStatsStore(selector);
3067
+ if (!stats) {
3068
+ return null;
2945
3069
  }
2946
- return Number(tileOffset) === 0 ? hideAudioLevel ? 0 : 3 : void 0;
3070
+ const inbound = stats.type.includes("inbound");
3071
+ return /* @__PURE__ */ React4.createElement(Flex, { css: { flexWrap: "wrap", gap: "$10" } }, /* @__PURE__ */ React4.createElement(StatsRow, { label: "Type", value: stats.type + " " + stats.kind }), /* @__PURE__ */ React4.createElement(StatsRow, { label: "Bitrate", value: formatBytes(stats.bitrate, "b/s") }), /* @__PURE__ */ React4.createElement(StatsRow, { label: "Packets Lost", value: stats.packetsLost }), /* @__PURE__ */ React4.createElement(StatsRow, { label: "Jitter", value: (_a = stats.jitter) == null ? void 0 : _a.toFixed(3) }), /* @__PURE__ */ React4.createElement(
3072
+ StatsRow,
3073
+ {
3074
+ label: inbound ? "Bytes Received" : "Bytes Sent",
3075
+ value: formatBytes(inbound ? stats.bytesReceived : stats.bytesSent)
3076
+ }
3077
+ ), stats.kind === "video" && /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement(StatsRow, { label: "Framerate", value: stats.framesPerSecond }), !inbound && /* @__PURE__ */ React4.createElement(StatsRow, { label: "Quality Limitation Reason", value: stats.qualityLimitationReason })), /* @__PURE__ */ React4.createElement(StatsRow, { label: "Round Trip Time", value: stats.roundTripTime ? `${stats.roundTripTime * 1e3} ms` : "-" }));
3078
+ };
3079
+ var StatsRow = React4.memo(({ label, value }) => /* @__PURE__ */ React4.createElement(Box, { css: { bg: "$surface_bright", w: "calc(50% - $6)", p: "$8", r: "$3" } }, /* @__PURE__ */ React4.createElement(
3080
+ Text,
3081
+ {
3082
+ variant: "overline",
3083
+ css: {
3084
+ fontWeight: "$semiBold",
3085
+ color: "$on_surface_medium",
3086
+ textTransform: "uppercase"
3087
+ }
3088
+ },
3089
+ label
3090
+ ), /* @__PURE__ */ React4.createElement(Text, { variant: "sub1", css: { fontWeight: "$semiBold", color: "$on_surface_high" } }, value || "-")));
3091
+ var formatBytes = (bytes, unit = "B", decimals = 2) => {
3092
+ if (bytes === void 0)
3093
+ return "-";
3094
+ if (bytes === 0)
3095
+ return "0 " + unit;
3096
+ const k2 = 1024;
3097
+ const dm = decimals < 0 ? 0 : decimals;
3098
+ const sizes = ["", "K", "M", "G", "T", "P", "E", "Z", "Y"].map((size) => size + unit);
3099
+ const i = Math.floor(Math.log(bytes) / Math.log(k2));
3100
+ return parseFloat((bytes / Math.pow(k2, i)).toFixed(dm)) + " " + sizes[i];
2947
3101
  };
2948
- var VideoTile_default = VideoTile;
2949
-
2950
- // src/Prebuilt/components/gridView.jsx
2951
- init_define_process_env();
2952
- import React7, { Fragment as Fragment4 } from "react";
2953
- import { useMedia } from "react-use";
2954
3102
 
2955
- // src/Prebuilt/components/FirstPersonDisplay.jsx
3103
+ // src/Prebuilt/components/MoreSettings/BulkRoleChangeModal.jsx
2956
3104
  init_define_process_env();
2957
- import React3 from "react";
2958
-
2959
- // src/Prebuilt/images/first_person.png
2960
- var first_person_default = "data:image/png;base64,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";
2961
-
2962
- // src/Prebuilt/components/FirstPersonDisplay.jsx
2963
- var FirstPersonDisplay = React3.memo(() => {
2964
- return /* @__PURE__ */ React3.createElement(
2965
- Box,
3105
+ import React5, { useCallback as useCallback2, useRef as useRef2, useState as useState4 } from "react";
3106
+ import { useHMSActions as useHMSActions3 } from "@100mslive/react-sdk";
3107
+ import { AlertTriangleIcon as AlertTriangleIcon2, ChangeRoleIcon, CheckIcon } from "@100mslive/react-icons";
3108
+ var BulkRoleChangeModal = ({ onOpenChange }) => {
3109
+ var _a, _b;
3110
+ const roles = useFilteredRoles();
3111
+ const hmsActions = useHMSActions3();
3112
+ const ref = useRef2(null);
3113
+ const roleRef = useRef2(null);
3114
+ const [selectedBulkRole, setBulkRole] = useState4([]);
3115
+ const [selectedRole, setRole] = useState4("");
3116
+ const [bulkRoleDialog, setBulkRoleDialog] = useState4(false);
3117
+ const [roleDialog, setRoleDialog] = useState4(false);
3118
+ const [errorMessage, setErrorMessage] = useState4("");
3119
+ const [isSubmiting, setIsSubmiting] = useState4(false);
3120
+ const changeBulkRole = useCallback2(() => __async(void 0, null, function* () {
3121
+ if (selectedBulkRole.length > 0 && selectedRole) {
3122
+ try {
3123
+ setIsSubmiting(true);
3124
+ yield hmsActions.changeRoleOfPeersWithRoles(selectedBulkRole, selectedRole);
3125
+ setIsSubmiting(false);
3126
+ setErrorMessage("");
3127
+ onOpenChange(false);
3128
+ } catch (err) {
3129
+ setErrorMessage((err == null ? void 0 : err.message) ? err == null ? void 0 : err.message : "Unknown error");
3130
+ setIsSubmiting(false);
3131
+ }
3132
+ }
3133
+ }), [selectedBulkRole, selectedRole, hmsActions, onOpenChange]);
3134
+ return /* @__PURE__ */ React5.createElement(Dialog.Root, { defaultOpen: true, onOpenChange }, /* @__PURE__ */ React5.createElement(DialogContent, { title: "Bulk Role Change", Icon: ChangeRoleIcon }, /* @__PURE__ */ React5.createElement(DialogRow, null, /* @__PURE__ */ React5.createElement(Text, null, "For Roles: "), /* @__PURE__ */ React5.createElement(
3135
+ Dropdown.Root,
2966
3136
  {
2967
- css: {
2968
- position: "relative",
2969
- overflow: "hidden",
2970
- w: "37.5rem",
2971
- maxWidth: "80%",
2972
- h: "100%",
2973
- r: "$3",
2974
- m: "0 auto",
2975
- backgroundImage: `url(${first_person_default})`,
2976
- backgroundSize: "cover",
2977
- backgroundRepeat: "no-repeat",
2978
- "@md": {
2979
- w: "100%",
2980
- maxWidth: "unset"
3137
+ open: bulkRoleDialog,
3138
+ onOpenChange: (value) => {
3139
+ if (value) {
3140
+ setBulkRoleDialog(value);
2981
3141
  }
2982
3142
  },
2983
- "data-testid": "first_person_img"
3143
+ modal: false
2984
3144
  },
2985
- /* @__PURE__ */ React3.createElement(
2986
- Flex,
3145
+ /* @__PURE__ */ React5.createElement(
3146
+ DialogDropdownTrigger,
2987
3147
  {
2988
- align: "center",
2989
- direction: "column",
3148
+ ref,
3149
+ title: selectedBulkRole.length === 0 ? "Select Multiple Roles" : selectedBulkRole.toString(),
2990
3150
  css: {
2991
- position: "absolute",
2992
- w: "100%",
2993
- top: "33.33%",
2994
- left: 0,
2995
- textAlign: "center"
3151
+ w: "70%",
3152
+ p: "$8"
3153
+ },
3154
+ open: bulkRoleDialog
3155
+ }
3156
+ ),
3157
+ /* @__PURE__ */ React5.createElement(
3158
+ Dropdown.Content,
3159
+ {
3160
+ css: { w: (_a = ref.current) == null ? void 0 : _a.clientWidth, zIndex: 1e3 },
3161
+ onInteractOutside: () => {
3162
+ if (bulkRoleDialog) {
3163
+ setBulkRoleDialog(false);
3164
+ }
2996
3165
  }
2997
3166
  },
2998
- /* @__PURE__ */ React3.createElement(Text, { color: "white", variant: "h4", css: { "@md": { fontSize: "$md" } } }, "Welcome!"),
2999
- /* @__PURE__ */ React3.createElement(Text, { color: "white", variant: "h6", css: { mt: "$4", "@md": { fontSize: "$sm" } } }, "You\u2019re the first one here."),
3000
- /* @__PURE__ */ React3.createElement(Text, { color: "white", variant: "h6", css: { mt: "$2", "@md": { fontSize: "$sm" } } }, "Sit back and relax till the others join.")
3167
+ roles && roles.map((role) => {
3168
+ return /* @__PURE__ */ React5.createElement(
3169
+ Dropdown.CheckboxItem,
3170
+ {
3171
+ key: role,
3172
+ checked: selectedBulkRole.includes(role),
3173
+ onCheckedChange: (value) => {
3174
+ setBulkRole((selection) => {
3175
+ return value ? [...selection, role] : selection.filter((selectedRole2) => selectedRole2 !== role);
3176
+ });
3177
+ setErrorMessage("");
3178
+ }
3179
+ },
3180
+ /* @__PURE__ */ React5.createElement(Checkbox.Root, { css: { margin: "$2" }, checked: selectedBulkRole.includes(role) }, /* @__PURE__ */ React5.createElement(Checkbox.Indicator, null, /* @__PURE__ */ React5.createElement(CheckIcon, { width: 16, height: 16 }))),
3181
+ role
3182
+ );
3183
+ })
3001
3184
  )
3002
- );
3003
- });
3004
-
3005
- // src/Prebuilt/components/Image.jsx
3006
- init_define_process_env();
3007
- var Image = styled("img", {
3008
- width: "100%",
3009
- height: "auto",
3010
- r: "$3"
3011
- });
3185
+ )), /* @__PURE__ */ React5.createElement(DialogRow, null, /* @__PURE__ */ React5.createElement(Text, null, "To Role: "), /* @__PURE__ */ React5.createElement(Dropdown.Root, { open: roleDialog, onOpenChange: (value) => setRoleDialog(value) }, /* @__PURE__ */ React5.createElement(
3186
+ DialogDropdownTrigger,
3187
+ {
3188
+ ref: roleRef,
3189
+ title: selectedRole || "Select Role",
3190
+ css: {
3191
+ w: "70%",
3192
+ p: "$8"
3193
+ },
3194
+ open: roleDialog
3195
+ }
3196
+ ), /* @__PURE__ */ React5.createElement(Dropdown.Content, { css: { w: (_b = roleRef.current) == null ? void 0 : _b.clientWidth, zIndex: 1e3 } }, roles && roles.map((role) => {
3197
+ return /* @__PURE__ */ React5.createElement(
3198
+ Dropdown.Item,
3199
+ {
3200
+ key: role,
3201
+ onSelect: () => {
3202
+ setRole(role);
3203
+ setErrorMessage("");
3204
+ }
3205
+ },
3206
+ role
3207
+ );
3208
+ })))), /* @__PURE__ */ React5.createElement(DialogRow, null, errorMessage && /* @__PURE__ */ React5.createElement(Flex, { gap: 2, css: { c: "$alert_error_default", w: "70%", ml: "auto" } }, /* @__PURE__ */ React5.createElement(AlertTriangleIcon2, null), /* @__PURE__ */ React5.createElement(Text, { css: { c: "inherit" } }, errorMessage))), /* @__PURE__ */ React5.createElement(DialogRow, { justify: "end" }, /* @__PURE__ */ React5.createElement(Button, { variant: "primary", onClick: changeBulkRole, disabled: !(selectedRole && selectedBulkRole.length > 0) }, isSubmiting && /* @__PURE__ */ React5.createElement(Loading, { css: { color: "$on_primary_medium" } }), "Apply"))));
3209
+ };
3012
3210
 
3013
- // src/Prebuilt/components/VideoList.jsx
3211
+ // src/Prebuilt/components/MoreSettings/FullScreenItem.jsx
3014
3212
  init_define_process_env();
3015
- import React6, { Fragment as Fragment3, useEffect as useEffect2, useState as useState5 } from "react";
3016
- import { selectLocalPeerID as selectLocalPeerID4, useHMSStore as useHMSStore5, useVideoList } from "@100mslive/react-sdk";
3213
+ import React6 from "react";
3214
+ import { ExpandIcon } from "@100mslive/react-icons";
3017
3215
 
3018
- // src/Prebuilt/components/Pagination.jsx
3216
+ // src/Prebuilt/components/hooks/useFullscreen.js
3019
3217
  init_define_process_env();
3020
- import React4 from "react";
3021
- import { ChevronLeftIcon, ChevronRightIcon } from "@100mslive/react-icons";
3022
- var Pagination = ({ page, setPage, numPages }) => {
3023
- const disableLeft = page === 0;
3024
- const disableRight = page === numPages - 1;
3025
- const nextPage = () => {
3026
- setPage(Math.min(page + 1, numPages - 1));
3027
- };
3028
- const prevPage = () => {
3029
- setPage(Math.max(page - 1, 0));
3218
+ import { useCallback as useCallback3, useEffect as useEffect3, useState as useState5 } from "react";
3219
+ import screenfull from "screenfull";
3220
+ var useFullscreen = () => {
3221
+ const [isFullScreenEnabled, setIsFullScreenEnabled] = useState5(screenfull.isFullscreen);
3222
+ const toggle = useCallback3(() => __async(void 0, null, function* () {
3223
+ if (!screenfull.isEnabled) {
3224
+ ToastManager.addToast({ title: "Fullscreen feature not supported" });
3225
+ return;
3226
+ }
3227
+ try {
3228
+ if (isFullScreenEnabled) {
3229
+ yield screenfull.exit();
3230
+ } else {
3231
+ yield screenfull.request();
3232
+ }
3233
+ } catch (err) {
3234
+ ToastManager.addToast({ title: err.message });
3235
+ }
3236
+ }), [isFullScreenEnabled]);
3237
+ useEffect3(() => {
3238
+ const onChange = () => {
3239
+ setIsFullScreenEnabled(screenfull.isFullscreen);
3240
+ };
3241
+ if (screenfull.isEnabled) {
3242
+ screenfull.on("change", onChange);
3243
+ }
3244
+ return () => {
3245
+ if (screenfull.isEnabled) {
3246
+ screenfull.off("change", onChange);
3247
+ }
3248
+ };
3249
+ }, []);
3250
+ return {
3251
+ allowed: screenfull.isEnabled,
3252
+ isFullscreen: isFullScreenEnabled,
3253
+ toggleFullscreen: toggle
3030
3254
  };
3031
- return /* @__PURE__ */ React4.createElement(StyledPagination.Root, null, /* @__PURE__ */ React4.createElement(StyledPagination.Chevron, { disabled: disableLeft, onClick: prevPage }, /* @__PURE__ */ React4.createElement(ChevronLeftIcon, { width: 16, height: 16, style: { cursor: disableLeft ? "not-allowed" : "pointer" } })), /* @__PURE__ */ React4.createElement(StyledPagination.Dots, null, [...Array(numPages)].map((_3, i) => /* @__PURE__ */ React4.createElement(StyledPagination.Dot, { key: i, active: page === i, onClick: () => setPage(i) }))), /* @__PURE__ */ React4.createElement(StyledPagination.Chevron, { disabled: disableRight, onClick: nextPage }, /* @__PURE__ */ React4.createElement(ChevronRightIcon, { width: 16, height: 16, style: { cursor: disableRight ? "not-allowed" : "pointer" } })));
3032
3255
  };
3033
3256
 
3034
- // src/Prebuilt/components/ScreenshareTile.jsx
3035
- init_define_process_env();
3036
- import React5, { useRef, useState as useState3 } from "react";
3037
- import { useFullscreen } from "react-use";
3038
- import screenfull from "screenfull";
3039
- import {
3040
- selectLocalPeerID as selectLocalPeerID3,
3041
- selectPeerByID,
3042
- selectScreenShareAudioByPeerID,
3043
- selectScreenShareByPeerID,
3044
- useHMSStore as useHMSStore4
3045
- } from "@100mslive/react-sdk";
3046
- import { ExpandIcon, ShrinkIcon } from "@100mslive/react-icons";
3047
- var labelStyles = {
3048
- position: "unset",
3049
- width: "100%",
3050
- textAlign: "center",
3051
- transform: "none",
3052
- mt: "$2",
3053
- flexShrink: 0
3054
- };
3055
- var Tile2 = ({ peerId, width = "100%", height = "100%" }) => {
3056
- const isLocal = useHMSStore4(selectLocalPeerID3) === peerId;
3057
- const track = useHMSStore4(selectScreenShareByPeerID(peerId));
3058
- const peer = useHMSStore4(selectPeerByID(peerId));
3059
- const isAudioOnly = useUISettings(UI_SETTINGS.isAudioOnly);
3060
- const isHeadless = useIsHeadless();
3061
- const [isMouseHovered, setIsMouseHovered] = useState3(false);
3062
- const showStatsOnTiles = useUISettings(UI_SETTINGS.showStatsOnTiles);
3063
- const label = getVideoTileLabel({
3064
- peerName: peer.name,
3065
- isLocal: false,
3066
- track
3067
- });
3068
- const fullscreenRef = useRef(null);
3069
- const [fullscreen, setFullscreen] = useState3(false);
3070
- const isFullscreen = useFullscreen(fullscreenRef, fullscreen, {
3071
- onClose: () => setFullscreen(false)
3072
- });
3073
- const isFullScreenSupported = screenfull.isEnabled;
3074
- const audioTrack = useHMSStore4(selectScreenShareAudioByPeerID(peer == null ? void 0 : peer.id));
3075
- return /* @__PURE__ */ React5.createElement(StyledVideoTile.Root, { css: { width, height }, "data-testid": "screenshare_tile" }, peer ? /* @__PURE__ */ React5.createElement(
3076
- StyledVideoTile.Container,
3257
+ // src/Prebuilt/components/MoreSettings/FullScreenItem.jsx
3258
+ var FullScreenItem = () => {
3259
+ const { allowed, isFullscreen, toggleFullscreen } = useFullscreen();
3260
+ const isFullscreenEnabled = useIsFeatureEnabled(FEATURE_LIST.FULLSCREEN);
3261
+ if (!isFullscreenEnabled || !allowed) {
3262
+ return null;
3263
+ }
3264
+ return /* @__PURE__ */ React6.createElement(
3265
+ Dropdown.Item,
3077
3266
  {
3078
- transparentBg: true,
3079
- ref: fullscreenRef,
3080
- css: { flexDirection: "column" },
3081
- onMouseEnter: () => setIsMouseHovered(true),
3082
- onMouseLeave: () => {
3083
- setIsMouseHovered(false);
3084
- }
3267
+ onClick: () => {
3268
+ toggleFullscreen();
3269
+ },
3270
+ "data-testid": "full_screen_btn"
3085
3271
  },
3086
- showStatsOnTiles ? /* @__PURE__ */ React5.createElement(VideoTileStats, { audioTrackID: audioTrack == null ? void 0 : audioTrack.id, videoTrackID: track == null ? void 0 : track.id, peerID: peerId, isLocal }) : null,
3087
- isFullScreenSupported && !isHeadless ? /* @__PURE__ */ React5.createElement(StyledVideoTile.FullScreenButton, { onClick: () => setFullscreen(!fullscreen) }, isFullscreen ? /* @__PURE__ */ React5.createElement(ShrinkIcon, null) : /* @__PURE__ */ React5.createElement(ExpandIcon, null)) : null,
3088
- track ? /* @__PURE__ */ React5.createElement(
3089
- Video,
3090
- {
3091
- screenShare: true,
3092
- mirror: peer.isLocal && (track == null ? void 0 : track.source) === "regular",
3093
- attach: !isAudioOnly,
3094
- trackId: track.id
3095
- }
3096
- ) : null,
3097
- /* @__PURE__ */ React5.createElement(StyledVideoTile.Info, { css: labelStyles }, label),
3098
- isMouseHovered && !isHeadless && !(peer == null ? void 0 : peer.isLocal) ? /* @__PURE__ */ React5.createElement(TileMenu_default, { isScreenshare: true, peerID: peer == null ? void 0 : peer.id, audioTrackID: audioTrack == null ? void 0 : audioTrack.id, videoTrackID: track == null ? void 0 : track.id }) : null
3099
- ) : null);
3272
+ /* @__PURE__ */ React6.createElement(ExpandIcon, null),
3273
+ /* @__PURE__ */ React6.createElement(Text, { variant: "sm", css: { ml: "$4" } }, isFullscreen ? "Exit " : "Go ", "Fullscreen")
3274
+ );
3100
3275
  };
3101
- var ScreenshareTile = React5.memo(Tile2);
3102
- var ScreenshareTile_default = ScreenshareTile;
3103
-
3104
- // src/Prebuilt/common/useSortedPeers.js
3105
- init_define_process_env();
3106
- import { useEffect, useRef as useRef2, useState as useState4 } from "react";
3107
- import { useHMSVanillaStore } from "@100mslive/react-sdk";
3108
-
3109
- // src/Prebuilt/common/PeersSorter.js
3110
- init_define_process_env();
3111
3276
 
3112
- // ../hms-video-store/dist/index.js
3277
+ // src/Prebuilt/components/MoreSettings/MuteAllModal.jsx
3113
3278
  init_define_process_env();
3279
+ import React8, { useCallback as useCallback4, useState as useState6 } from "react";
3280
+ import { useHMSActions as useHMSActions4 } from "@100mslive/react-sdk";
3281
+ import { MicOffIcon } from "@100mslive/react-icons";
3114
3282
 
3115
- // ../../node_modules/reselect/es/index.js
3283
+ // src/Prebuilt/components/MoreSettings/MuteAllContent.jsx
3116
3284
  init_define_process_env();
3117
- function defaultEqualityCheck(a, b2) {
3118
- return a === b2;
3119
- }
3120
- function areArgumentsShallowlyEqual(equalityCheck, prev, next) {
3121
- if (prev === null || next === null || prev.length !== next.length) {
3122
- return false;
3123
- }
3124
- var length = prev.length;
3125
- for (var i = 0; i < length; i++) {
3126
- if (!equalityCheck(prev[i], next[i])) {
3127
- return false;
3285
+ import React7 from "react";
3286
+ var MuteAllContent = (props) => {
3287
+ const roles = props.roles || [];
3288
+ return /* @__PURE__ */ React7.createElement(React7.Fragment, null, /* @__PURE__ */ React7.createElement(
3289
+ DialogSelect,
3290
+ {
3291
+ title: "Role",
3292
+ options: [{ label: "All Roles", value: "" }, ...roles.map((role) => ({ label: role, value: role }))],
3293
+ selected: props.selectedRole,
3294
+ keyField: "value",
3295
+ labelField: "label",
3296
+ onChange: props.setRole
3297
+ }
3298
+ ), /* @__PURE__ */ React7.createElement(
3299
+ DialogSelect,
3300
+ {
3301
+ title: "Track type",
3302
+ options: props.trackTypeOptions,
3303
+ selected: props.trackType,
3304
+ onChange: props.setTrackType,
3305
+ keyField: "value",
3306
+ labelField: "label"
3307
+ }
3308
+ ), /* @__PURE__ */ React7.createElement(
3309
+ DialogSelect,
3310
+ {
3311
+ title: "Track source",
3312
+ options: props.trackSourceOptions,
3313
+ selected: props.selectedSource,
3314
+ onChange: props.setSource,
3315
+ keyField: "value",
3316
+ labelField: "label"
3317
+ }
3318
+ ), /* @__PURE__ */ React7.createElement(DialogRow, null, /* @__PURE__ */ React7.createElement(Text, { variant: "md" }, "Track status"), /* @__PURE__ */ React7.createElement(RadioGroup.Root, { value: props.enabled, onValueChange: props.setEnabled }, /* @__PURE__ */ React7.createElement(Flex, { align: "center", css: { mr: "$8" } }, /* @__PURE__ */ React7.createElement(RadioGroup.Item, { value: false, id: "trackDisableRadio", css: { mr: "$4" } }, /* @__PURE__ */ React7.createElement(RadioGroup.Indicator, null)), /* @__PURE__ */ React7.createElement(Label, { htmlFor: "trackDisableRadio" }, "Mute")), /* @__PURE__ */ React7.createElement(Flex, { align: "center", css: { cursor: "pointer" } }, /* @__PURE__ */ React7.createElement(RadioGroup.Item, { value: true, id: "trackEnableRadio", css: { mr: "$4" } }, /* @__PURE__ */ React7.createElement(RadioGroup.Indicator, null)), /* @__PURE__ */ React7.createElement(Label, { htmlFor: "trackEnableRadio" }, "Request Unmute")))), /* @__PURE__ */ React7.createElement(DialogRow, { justify: "end" }, /* @__PURE__ */ React7.createElement(Button, { variant: "primary", onClick: props.muteAll, css: { w: (props == null ? void 0 : props.isMobile) ? "100%" : "" } }, "Apply")));
3319
+ };
3320
+
3321
+ // src/Prebuilt/components/MoreSettings/MuteAllModal.jsx
3322
+ var trackSourceOptions = [
3323
+ { label: "All Track Sources", value: "" },
3324
+ { label: "regular", value: "regular" },
3325
+ { label: "screen", value: "screen" },
3326
+ { label: "audioplaylist", value: "audioplaylist" },
3327
+ { label: "videoplaylist", value: "videoplaylist" }
3328
+ ];
3329
+ var trackTypeOptions = [
3330
+ { label: "All Track Types", value: "" },
3331
+ { label: "audio", value: "audio" },
3332
+ { label: "video", value: "video" }
3333
+ ];
3334
+ var MuteAllModal = ({ onOpenChange, isMobile = false }) => {
3335
+ const roles = useFilteredRoles();
3336
+ const hmsActions = useHMSActions4();
3337
+ const [enabled, setEnabled] = useState6(false);
3338
+ const [trackType, setTrackType] = useState6();
3339
+ const [selectedRole, setRole] = useState6();
3340
+ const [selectedSource, setSource] = useState6();
3341
+ const muteAll = useCallback4(() => __async(void 0, null, function* () {
3342
+ yield hmsActions.setRemoteTracksEnabled({
3343
+ enabled,
3344
+ type: trackType,
3345
+ source: selectedSource,
3346
+ roles: selectedRole ? [selectedRole] : void 0
3347
+ });
3348
+ onOpenChange(false);
3349
+ }), [selectedRole, enabled, trackType, selectedSource, hmsActions, onOpenChange]);
3350
+ const props = {
3351
+ muteAll,
3352
+ roles,
3353
+ enabled,
3354
+ setEnabled,
3355
+ trackType,
3356
+ setTrackType,
3357
+ selectedRole,
3358
+ setRole,
3359
+ selectedSource,
3360
+ setSource,
3361
+ trackSourceOptions,
3362
+ trackTypeOptions,
3363
+ isMobile
3364
+ };
3365
+ if (isMobile) {
3366
+ return /* @__PURE__ */ React8.createElement(Sheet.Root, { defaultOpen: true, onOpenChange }, /* @__PURE__ */ React8.createElement(Sheet.Content, { css: { px: "$10" } }, /* @__PURE__ */ React8.createElement(MuteAllContent, __spreadValues({}, props))));
3367
+ }
3368
+ return /* @__PURE__ */ React8.createElement(Dialog.Root, { defaultOpen: true, onOpenChange }, /* @__PURE__ */ React8.createElement(DialogContent, { title: "Mute/Unmute Remote Tracks", Icon: MicOffIcon }, /* @__PURE__ */ React8.createElement(MuteAllContent, __spreadValues({}, props))));
3369
+ };
3370
+
3371
+ // src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.jsx
3372
+ var MODALS = {
3373
+ CHANGE_NAME: "changeName",
3374
+ SELF_ROLE_CHANGE: "selfRoleChange",
3375
+ MORE_SETTINGS: "moreSettings",
3376
+ START_RECORDING: "startRecording",
3377
+ DEVICE_SETTINGS: "deviceSettings",
3378
+ STATS_FOR_NERDS: "statsForNerds",
3379
+ BULK_ROLE_CHANGE: "bulkRoleChange",
3380
+ MUTE_ALL: "muteAll",
3381
+ EMBED_URL: "embedUrl"
3382
+ };
3383
+ var DesktopOptions = () => {
3384
+ const localPeerId = useHMSStore4(selectLocalPeerID2);
3385
+ const localPeerRole = useHMSStore4(selectLocalPeerRoleName2);
3386
+ const hmsActions = useHMSActions5();
3387
+ const enablHlsStats = useHMSStore4(selectAppData(APP_DATA.hlsStats));
3388
+ const isSFNEnabled = useIsFeatureEnabled(FEATURE_LIST.STARTS_FOR_NERDS);
3389
+ const [openModals, setOpenModals] = useState7(/* @__PURE__ */ new Set());
3390
+ const { isHandRaised, isBRBOn, toggleHandRaise, toggleBRB } = useMyMetadata();
3391
+ const isHandRaiseEnabled = useIsFeatureEnabled(FEATURE_LIST.HAND_RAISE);
3392
+ const isBRBEnabled = useIsFeatureEnabled(FEATURE_LIST.BRB);
3393
+ const showStreamingUI = useShowStreamingUI();
3394
+ const hlsViewerRole = useHLSViewerRole();
3395
+ const isHlsViewer = hlsViewerRole === localPeerRole;
3396
+ const isPIPEnabled = useIsFeatureEnabled(FEATURE_LIST.PICTURE_IN_PICTURE);
3397
+ useDropdownList({ open: openModals.size > 0, name: "MoreSettings" });
3398
+ const updateState = (modalName, value) => {
3399
+ setOpenModals((modals) => {
3400
+ const copy = new Set(modals);
3401
+ if (value) {
3402
+ copy.clear();
3403
+ copy.add(modalName);
3404
+ } else {
3405
+ copy.delete(modalName);
3406
+ }
3407
+ return copy;
3408
+ });
3409
+ };
3410
+ return /* @__PURE__ */ React9.createElement(Fragment, null, /* @__PURE__ */ React9.createElement(
3411
+ Dropdown.Root,
3412
+ {
3413
+ open: openModals.has(MODALS.MORE_SETTINGS),
3414
+ onOpenChange: (value) => updateState(MODALS.MORE_SETTINGS, value),
3415
+ modal: false
3416
+ },
3417
+ /* @__PURE__ */ React9.createElement(Dropdown.Trigger, { asChild: true, "data-testid": "more_settings_btn" }, /* @__PURE__ */ React9.createElement(IconButton_default, null, /* @__PURE__ */ React9.createElement(Tooltip, { title: "More options" }, /* @__PURE__ */ React9.createElement(DragHandleIcon, null)))),
3418
+ /* @__PURE__ */ React9.createElement(
3419
+ Dropdown.Content,
3420
+ {
3421
+ sideOffset: 5,
3422
+ align: "end",
3423
+ css: {
3424
+ py: "$0",
3425
+ maxHeight: "unset",
3426
+ "@md": { w: "$64" },
3427
+ "div[role='separator']:first-child": {
3428
+ display: "none"
3429
+ }
3430
+ }
3431
+ },
3432
+ isHandRaiseEnabled && !showStreamingUI ? /* @__PURE__ */ React9.createElement(Dropdown.Item, { onClick: toggleHandRaise, "data-testid": "raise_hand_btn" }, /* @__PURE__ */ React9.createElement(HandIcon, null), /* @__PURE__ */ React9.createElement(Text, { variant: "sm", css: { ml: "$4", color: "$on_surface_high" } }, "Raise Hand"), /* @__PURE__ */ React9.createElement(Flex, { justify: "end", css: { color: "$on_surface_high", flexGrow: "1" } }, isHandRaised ? /* @__PURE__ */ React9.createElement(CheckIcon2, null) : null)) : null,
3433
+ isBRBEnabled && !showStreamingUI ? /* @__PURE__ */ React9.createElement(Dropdown.Item, { onClick: toggleBRB, "data-testid": "brb_btn" }, /* @__PURE__ */ React9.createElement(BrbIcon, null), /* @__PURE__ */ React9.createElement(Text, { variant: "sm", css: { ml: "$4", color: "$on_surface_high" } }, "Be Right Back"), /* @__PURE__ */ React9.createElement(Flex, { justify: "end", css: { color: "$on_surface_high", flexGrow: "1" } }, isBRBOn ? /* @__PURE__ */ React9.createElement(CheckIcon2, null) : null)) : null,
3434
+ (isBRBEnabled || isHandRaiseEnabled) && !showStreamingUI ? /* @__PURE__ */ React9.createElement(Dropdown.ItemSeparator, { css: { mx: "0" } }) : null,
3435
+ isPIPEnabled && !isHlsViewer ? /* @__PURE__ */ React9.createElement(Dropdown.Item, null, /* @__PURE__ */ React9.createElement(
3436
+ PIP,
3437
+ {
3438
+ content: /* @__PURE__ */ React9.createElement(Flex, { css: { w: "100%" } }, /* @__PURE__ */ React9.createElement(PipIcon2, null), /* @__PURE__ */ React9.createElement(Text, { variant: "sm", css: { ml: "$4" } }, "Picture in picture mode"))
3439
+ }
3440
+ )) : null,
3441
+ /* @__PURE__ */ React9.createElement(FullScreenItem, null),
3442
+ /* @__PURE__ */ React9.createElement(Dropdown.ItemSeparator, { css: { mx: 0 } }),
3443
+ /* @__PURE__ */ React9.createElement(Dropdown.Item, { onClick: () => updateState(MODALS.DEVICE_SETTINGS, true), "data-testid": "device_settings_btn" }, /* @__PURE__ */ React9.createElement(SettingsIcon, null), /* @__PURE__ */ React9.createElement(Text, { variant: "sm", css: { ml: "$4" } }, "Settings")),
3444
+ FeatureFlags.enableStatsForNerds && isSFNEnabled && (localPeerRole === "hls-viewer" ? HMSHLSPlayer.isSupported() ? /* @__PURE__ */ React9.createElement(
3445
+ Dropdown.Item,
3446
+ {
3447
+ onClick: () => hmsActions.setAppData(APP_DATA.hlsStats, !enablHlsStats),
3448
+ "data-testid": "hls_stats"
3449
+ },
3450
+ /* @__PURE__ */ React9.createElement(
3451
+ Checkbox.Root,
3452
+ {
3453
+ css: { margin: "$2" },
3454
+ checked: enablHlsStats,
3455
+ onCheckedChange: () => hmsActions.setAppData(APP_DATA.hlsStats, !enablHlsStats)
3456
+ },
3457
+ /* @__PURE__ */ React9.createElement(Checkbox.Indicator, null, /* @__PURE__ */ React9.createElement(CheckIcon2, { width: 16, height: 16 }))
3458
+ ),
3459
+ /* @__PURE__ */ React9.createElement(Flex, { justify: "between", css: { width: "100%" } }, /* @__PURE__ */ React9.createElement(Text, { variant: "sm", css: { ml: "$4" } }, "Show HLS Stats"), /* @__PURE__ */ React9.createElement(Text, { variant: "sm", css: { ml: "$4" } }, `${isMacOS ? "\u2318" : "ctrl"} + ]`))
3460
+ ) : null : /* @__PURE__ */ React9.createElement(
3461
+ Dropdown.Item,
3462
+ {
3463
+ onClick: () => updateState(MODALS.STATS_FOR_NERDS, true),
3464
+ "data-testid": "stats_for_nreds_btn"
3465
+ },
3466
+ /* @__PURE__ */ React9.createElement(InfoIcon, null),
3467
+ /* @__PURE__ */ React9.createElement(Text, { variant: "sm", css: { ml: "$4" } }, "Stats for Nerds")
3468
+ ))
3469
+ )
3470
+ ), openModals.has(MODALS.BULK_ROLE_CHANGE) && /* @__PURE__ */ React9.createElement(BulkRoleChangeModal, { onOpenChange: (value) => updateState(MODALS.BULK_ROLE_CHANGE, value) }), openModals.has(MODALS.MUTE_ALL) && /* @__PURE__ */ React9.createElement(MuteAllModal, { onOpenChange: (value) => updateState(MODALS.MUTE_ALL, value) }), openModals.has(MODALS.START_RECORDING) && /* @__PURE__ */ React9.createElement(StartRecording_default, { open: true, onOpenChange: (value) => updateState(MODALS.START_RECORDING, value) }), openModals.has(MODALS.DEVICE_SETTINGS) && /* @__PURE__ */ React9.createElement(SettingsModal_default, { open: true, onOpenChange: (value) => updateState(MODALS.DEVICE_SETTINGS, value) }), FeatureFlags.enableStatsForNerds && openModals.has(MODALS.STATS_FOR_NERDS) && /* @__PURE__ */ React9.createElement(StatsForNerds, { open: true, onOpenChange: (value) => updateState(MODALS.STATS_FOR_NERDS, value) }), openModals.has(MODALS.SELF_ROLE_CHANGE) && /* @__PURE__ */ React9.createElement(RoleChangeModal, { peerId: localPeerId, onOpenChange: (value) => updateState(MODALS.SELF_ROLE_CHANGE, value) }));
3471
+ };
3472
+
3473
+ // src/Prebuilt/components/MoreSettings/SplitComponents/MwebOptions.jsx
3474
+ init_define_process_env();
3475
+ import React10, { Suspense, useRef as useRef3, useState as useState8 } from "react";
3476
+ import { useClickAway } from "react-use";
3477
+ import {
3478
+ selectIsConnectedToRoom,
3479
+ selectIsLocalVideoEnabled as selectIsLocalVideoEnabled2,
3480
+ selectPeerCount,
3481
+ selectPermissions as selectPermissions2,
3482
+ useHMSActions as useHMSActions6,
3483
+ useHMSStore as useHMSStore5,
3484
+ useRecordingStreaming as useRecordingStreaming2
3485
+ } from "@100mslive/react-sdk";
3486
+ import { CrossIcon, DragHandleIcon as DragHandleIcon2, EmojiIcon, PeopleIcon, RecordIcon, SettingsIcon as SettingsIcon2 } from "@100mslive/react-icons";
3487
+ var VirtualBackground = React10.lazy(() => import("./VirtualBackground-GGGBJYVY.js"));
3488
+ var MODALS2 = {
3489
+ CHANGE_NAME: "changeName",
3490
+ SELF_ROLE_CHANGE: "selfRoleChange",
3491
+ MORE_SETTINGS: "moreSettings",
3492
+ START_RECORDING: "startRecording",
3493
+ DEVICE_SETTINGS: "deviceSettings",
3494
+ STATS_FOR_NERDS: "statsForNerds",
3495
+ BULK_ROLE_CHANGE: "bulkRoleChange",
3496
+ MUTE_ALL: "muteAll",
3497
+ EMBED_URL: "embedUrl"
3498
+ };
3499
+ var MwebOptions = () => {
3500
+ const hmsActions = useHMSActions6();
3501
+ const permissions = useHMSStore5(selectPermissions2);
3502
+ const isConnected = useHMSStore5(selectIsConnectedToRoom);
3503
+ const { isBrowserRecordingOn, isStreamingOn, isHLSRunning } = useRecordingStreaming2();
3504
+ const [openModals, setOpenModals] = useState8(/* @__PURE__ */ new Set());
3505
+ const [openOptionsSheet, setOpenOptionsSheet] = useState8(false);
3506
+ const [openSettingsSheet, setOpenSettingsSheet] = useState8(false);
3507
+ const [showEmojiCard, setShowEmojiCard] = useState8(false);
3508
+ const [showRecordingOn, setShowRecordingOn] = useState8(false);
3509
+ const [isRecordingLoading, setIsRecordingLoading] = useState8(false);
3510
+ const toggleParticipants = useSidepaneToggle(SIDE_PANE_OPTIONS.PARTICIPANTS);
3511
+ const peerCount = useHMSStore5(selectPeerCount);
3512
+ const emojiCardRef = useRef3(null);
3513
+ const isVideoOn = useHMSStore5(selectIsLocalVideoEnabled2);
3514
+ useDropdownList({ open: openModals.size > 0, name: "MoreSettings" });
3515
+ const updateState = (modalName, value) => {
3516
+ setOpenModals((modals) => {
3517
+ const copy = new Set(modals);
3518
+ if (value) {
3519
+ copy.add(modalName);
3520
+ } else {
3521
+ copy.delete(modalName);
3522
+ }
3523
+ return copy;
3524
+ });
3525
+ };
3526
+ useClickAway(emojiCardRef, () => setShowEmojiCard(false));
3527
+ return /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(Sheet.Root, { open: openOptionsSheet, onOpenChange: setOpenOptionsSheet }, /* @__PURE__ */ React10.createElement(Sheet.Trigger, { asChild: true, "data-testid": "more_settings_btn" }, /* @__PURE__ */ React10.createElement(IconButton_default, null, /* @__PURE__ */ React10.createElement(Tooltip, { title: "More options" }, /* @__PURE__ */ React10.createElement(DragHandleIcon2, null)))), /* @__PURE__ */ React10.createElement(Sheet.Content, { css: { bg: "$surface_dim", pb: "$14" } }, /* @__PURE__ */ React10.createElement(
3528
+ Sheet.Title,
3529
+ {
3530
+ css: {
3531
+ display: "flex",
3532
+ color: "$on_surface_high",
3533
+ w: "100%",
3534
+ justifyContent: "space-between",
3535
+ fontSize: "$md",
3536
+ mt: "$8",
3537
+ px: "$10",
3538
+ pb: "$8",
3539
+ borderBottom: "1px solid $border_default",
3540
+ mb: "$8",
3541
+ alignItems: "center"
3542
+ }
3543
+ },
3544
+ "Options",
3545
+ /* @__PURE__ */ React10.createElement(Sheet.Close, null, /* @__PURE__ */ React10.createElement(Box, { css: { color: "$on_surface_high" } }, /* @__PURE__ */ React10.createElement(CrossIcon, null)))
3546
+ ), /* @__PURE__ */ React10.createElement(
3547
+ Box,
3548
+ {
3549
+ css: {
3550
+ display: "grid",
3551
+ gridTemplateColumns: "1fr 1fr 1fr",
3552
+ gridTemplateRows: "auto",
3553
+ gridColumnGap: "$6",
3554
+ gridRowGap: "$8",
3555
+ px: "$9"
3556
+ }
3557
+ },
3558
+ /* @__PURE__ */ React10.createElement(
3559
+ ActionTile.Root,
3560
+ {
3561
+ onClick: () => {
3562
+ toggleParticipants();
3563
+ setOpenOptionsSheet(false);
3564
+ }
3565
+ },
3566
+ /* @__PURE__ */ React10.createElement(ActionTile.Count, null, getFormattedCount(peerCount)),
3567
+ /* @__PURE__ */ React10.createElement(PeopleIcon, null),
3568
+ /* @__PURE__ */ React10.createElement(ActionTile.Title, null, "Participants")
3569
+ ),
3570
+ isVideoOn ? /* @__PURE__ */ React10.createElement(Suspense, { fallback: "" }, /* @__PURE__ */ React10.createElement(VirtualBackground, { asActionTile: true, onVBClick: () => setOpenOptionsSheet(false) })) : null,
3571
+ /* @__PURE__ */ React10.createElement(
3572
+ ActionTile.Root,
3573
+ {
3574
+ onClick: () => {
3575
+ setShowEmojiCard(true);
3576
+ setOpenOptionsSheet(false);
3577
+ }
3578
+ },
3579
+ /* @__PURE__ */ React10.createElement(EmojiIcon, null),
3580
+ /* @__PURE__ */ React10.createElement(ActionTile.Title, null, "Emoji Reactions")
3581
+ ),
3582
+ /* @__PURE__ */ React10.createElement(
3583
+ ActionTile.Root,
3584
+ {
3585
+ onClick: () => {
3586
+ setOpenSettingsSheet(true);
3587
+ setOpenOptionsSheet(false);
3588
+ }
3589
+ },
3590
+ /* @__PURE__ */ React10.createElement(SettingsIcon2, null),
3591
+ /* @__PURE__ */ React10.createElement(ActionTile.Title, null, "Settings")
3592
+ ),
3593
+ isConnected && (permissions == null ? void 0 : permissions.browserRecording) ? /* @__PURE__ */ React10.createElement(
3594
+ ActionTile.Root,
3595
+ {
3596
+ disabled: isHLSRunning,
3597
+ onClick: () => __async(void 0, null, function* () {
3598
+ if (isRecordingLoading) {
3599
+ return;
3600
+ }
3601
+ if (isBrowserRecordingOn || isStreamingOn) {
3602
+ setOpenOptionsSheet(false);
3603
+ setShowRecordingOn(true);
3604
+ } else {
3605
+ setIsRecordingLoading(true);
3606
+ try {
3607
+ yield hmsActions.startRTMPOrRecording({
3608
+ record: true
3609
+ });
3610
+ setOpenOptionsSheet(false);
3611
+ setIsRecordingLoading(false);
3612
+ } catch (error) {
3613
+ if (error.message.includes("stream already running")) {
3614
+ ToastManager.addToast({
3615
+ title: "Recording already running",
3616
+ variant: "error"
3617
+ });
3618
+ } else {
3619
+ ToastManager.addToast({
3620
+ title: error.message,
3621
+ variant: "error"
3622
+ });
3623
+ }
3624
+ setIsRecordingLoading(false);
3625
+ }
3626
+ }
3627
+ if (isHLSRunning) {
3628
+ setOpenOptionsSheet(false);
3629
+ }
3630
+ })
3631
+ },
3632
+ isRecordingLoading ? /* @__PURE__ */ React10.createElement(Loading, null) : /* @__PURE__ */ React10.createElement(RecordIcon, null),
3633
+ /* @__PURE__ */ React10.createElement(ActionTile.Title, null, isBrowserRecordingOn ? "Recording On" : isRecordingLoading ? "Starting Recording" : "Start Recording")
3634
+ ) : null
3635
+ ))), /* @__PURE__ */ React10.createElement(SettingsModal_default, { open: openSettingsSheet, onOpenChange: setOpenSettingsSheet }), openModals.has(MODALS2.MUTE_ALL) && /* @__PURE__ */ React10.createElement(MuteAllModal, { onOpenChange: (value) => updateState(MODALS2.MUTE_ALL, value), isMobile: true }), openModals.has(MODALS2.CHANGE_NAME) && /* @__PURE__ */ React10.createElement(
3636
+ ChangeNameModal,
3637
+ {
3638
+ onOpenChange: (value) => updateState(MODALS2.CHANGE_NAME, value),
3639
+ openParentSheet: () => setOpenOptionsSheet(true)
3640
+ }
3641
+ ), showEmojiCard && /* @__PURE__ */ React10.createElement(
3642
+ Box,
3643
+ {
3644
+ onClick: () => setShowEmojiCard(false),
3645
+ ref: emojiCardRef,
3646
+ css: {
3647
+ maxWidth: "100%",
3648
+ w: "100%",
3649
+ position: "absolute",
3650
+ left: 0,
3651
+ right: 0,
3652
+ bottom: "$18",
3653
+ bg: "$surface_default",
3654
+ zIndex: "10",
3655
+ p: "$8",
3656
+ pb: 0,
3657
+ r: "$1",
3658
+ mx: "$4"
3659
+ }
3660
+ },
3661
+ /* @__PURE__ */ React10.createElement(EmojiCard, null)
3662
+ ), showRecordingOn && /* @__PURE__ */ React10.createElement(
3663
+ StopRecordingInSheet,
3664
+ {
3665
+ onClose: () => setShowRecordingOn(false),
3666
+ onStopRecording: () => __async(void 0, null, function* () {
3667
+ try {
3668
+ yield hmsActions.stopRTMPAndRecording();
3669
+ setShowRecordingOn(false);
3670
+ } catch (error) {
3671
+ ToastManager.addToast({
3672
+ title: error.message,
3673
+ variant: "error"
3674
+ });
3675
+ }
3676
+ })
3677
+ }
3678
+ ));
3679
+ };
3680
+
3681
+ // src/Prebuilt/components/MoreSettings/MoreSettings.jsx
3682
+ var MoreSettings = () => {
3683
+ const isMobile = useMedia(config.media.md);
3684
+ return isMobile ? /* @__PURE__ */ React11.createElement(MwebOptions, null) : /* @__PURE__ */ React11.createElement(DesktopOptions, null);
3685
+ };
3686
+
3687
+ // src/Prebuilt/components/RaiseHand.jsx
3688
+ init_define_process_env();
3689
+ import React12 from "react";
3690
+ import { selectLocalPeer, selectPeerMetadata, useHMSStore as useHMSStore6 } from "@100mslive/react-sdk";
3691
+ import { HandIcon as HandIcon2 } from "@100mslive/react-icons";
3692
+ var RaiseHand = () => {
3693
+ var _a;
3694
+ const isHandRaiseEnabled = useIsFeatureEnabled(FEATURE_LIST.HAND_RAISE);
3695
+ const { toggleHandRaise } = useMyMetadata();
3696
+ const localPeer = useHMSStore6(selectLocalPeer);
3697
+ const isHandRaised = ((_a = useHMSStore6(selectPeerMetadata(localPeer.id))) == null ? void 0 : _a.isHandRaised) || false;
3698
+ if (!isHandRaiseEnabled) {
3699
+ return null;
3700
+ }
3701
+ return /* @__PURE__ */ React12.createElement(Tooltip, { title: isHandRaised ? "Lower hand" : "Raise hand" }, /* @__PURE__ */ React12.createElement(IconButton_default, { active: !isHandRaised, onClick: toggleHandRaise }, /* @__PURE__ */ React12.createElement(HandIcon2, null)));
3702
+ };
3703
+
3704
+ // src/Prebuilt/components/ScreenShare.jsx
3705
+ init_define_process_env();
3706
+ import React20, { Fragment as Fragment3 } from "react";
3707
+ import { selectIsAllowedToPublish, useHMSStore as useHMSStore7, useScreenShare as useScreenShare2 } from "@100mslive/react-sdk";
3708
+ import { ShareScreenIcon } from "@100mslive/react-icons";
3709
+
3710
+ // src/Prebuilt/components/pdfAnnotator/shareScreenOptions.jsx
3711
+ init_define_process_env();
3712
+ import React19, { Fragment as Fragment2, useState as useState10 } from "react";
3713
+ import { useScreenShare } from "@100mslive/react-sdk";
3714
+ import { StarIcon, VerticalMenuIcon } from "@100mslive/react-icons";
3715
+
3716
+ // src/Prebuilt/images/pdf-share.png
3717
+ var pdf_share_default = "data:image/png;base64,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";
3718
+
3719
+ // src/Prebuilt/images/screen-share.png
3720
+ var screen_share_default = "data:image/png;base64,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";
3721
+
3722
+ // src/Prebuilt/components/ShareMenuIcon.jsx
3723
+ init_define_process_env();
3724
+ var ScreenShareButton = styled(IconButton_default, {
3725
+ h: "$14",
3726
+ px: "$8",
3727
+ r: "$1",
3728
+ borderTopRightRadius: 0,
3729
+ borderBottomRightRadius: 0,
3730
+ "@md": {
3731
+ px: "$4",
3732
+ mx: 0
3733
+ }
3734
+ });
3735
+ var ShareMenuIcon = styled(ScreenShareButton, {
3736
+ borderTopLeftRadius: 0,
3737
+ borderBottomLeftRadius: 0,
3738
+ borderTopRightRadius: "$1",
3739
+ borderBottomRightRadius: "$1",
3740
+ borderLeftWidth: 0,
3741
+ w: "$4",
3742
+ "@md": {
3743
+ w: "unset",
3744
+ px: "$2"
3745
+ }
3746
+ });
3747
+
3748
+ // src/Prebuilt/components/pdfAnnotator/pdfFileOptions.jsx
3749
+ init_define_process_env();
3750
+ import React18, { useState as useState9 } from "react";
3751
+
3752
+ // src/Prebuilt/components/pdfAnnotator/pdfErrorView.jsx
3753
+ init_define_process_env();
3754
+ import React13 from "react";
3755
+ import { InfoIcon as InfoIcon2 } from "@100mslive/react-icons";
3756
+ var PdfErrorView = ({ isPDFUrlValid }) => {
3757
+ return !isPDFUrlValid && /* @__PURE__ */ React13.createElement(
3758
+ DialogRow,
3759
+ {
3760
+ css: {
3761
+ mt: "-$8",
3762
+ color: "$alert_error_default",
3763
+ justifyContent: "start"
3764
+ }
3765
+ },
3766
+ /* @__PURE__ */ React13.createElement(InfoIcon2, { width: "12px", height: "12px" }),
3767
+ /* @__PURE__ */ React13.createElement(
3768
+ Text,
3769
+ {
3770
+ variant: "caption",
3771
+ css: {
3772
+ pl: "$1",
3773
+ color: "$alert_error_default"
3774
+ }
3775
+ },
3776
+ "Please enter a valid PDF URL"
3777
+ )
3778
+ );
3779
+ };
3780
+
3781
+ // src/Prebuilt/components/pdfAnnotator/pdfHeader.jsx
3782
+ init_define_process_env();
3783
+ import React14 from "react";
3784
+ var PDFHeader = () => {
3785
+ return /* @__PURE__ */ React14.createElement(
3786
+ DialogCol,
3787
+ {
3788
+ align: "start",
3789
+ css: {
3790
+ mt: 0,
3791
+ mb: "$6"
3792
+ }
3793
+ },
3794
+ /* @__PURE__ */ React14.createElement(Dialog.Title, { asChild: true }, /* @__PURE__ */ React14.createElement(Text, { as: "h6", variant: "h6" }, "Share PDF")),
3795
+ /* @__PURE__ */ React14.createElement(Dialog.Description, { asChild: true }, /* @__PURE__ */ React14.createElement(
3796
+ Text,
3797
+ {
3798
+ variant: "sm",
3799
+ css: {
3800
+ c: "$on_surface_medium"
3801
+ }
3802
+ },
3803
+ "Choose PDF you want to annotate and share"
3804
+ ))
3805
+ );
3806
+ };
3807
+
3808
+ // src/Prebuilt/components/pdfAnnotator/pdfInfo.jsx
3809
+ init_define_process_env();
3810
+ import React15 from "react";
3811
+ import { InfoIcon as InfoIcon3 } from "@100mslive/react-icons";
3812
+ var PDFInfo = () => {
3813
+ return /* @__PURE__ */ React15.createElement(
3814
+ DialogRow,
3815
+ {
3816
+ css: {
3817
+ px: "$8",
3818
+ py: "$3",
3819
+ bg: "$surface_default",
3820
+ r: "$1",
3821
+ outline: "none",
3822
+ border: "1px solid $border_bright",
3823
+ minHeight: "$11"
3824
+ }
3825
+ },
3826
+ /* @__PURE__ */ React15.createElement(
3827
+ InfoIcon3,
3828
+ {
3829
+ width: "64px",
3830
+ height: "64px",
3831
+ style: {
3832
+ paddingRight: "16px"
3833
+ }
3834
+ }
3835
+ ),
3836
+ /* @__PURE__ */ React15.createElement(Text, { variant: "caption" }, "On the next screen, ensure you select \u201CThis Tab\u201D and click on share. Only the PDF viewer will be seen by other participants")
3837
+ );
3838
+ };
3839
+
3840
+ // src/Prebuilt/components/pdfAnnotator/submitPdf.jsx
3841
+ init_define_process_env();
3842
+ import React16, { useCallback as useCallback5 } from "react";
3843
+ var SubmitPDF = ({
3844
+ pdfFile,
3845
+ pdfURL,
3846
+ isValidateProgress,
3847
+ setIsPDFUrlValid,
3848
+ setIsValidateProgress,
3849
+ onOpenChange
3850
+ }) => {
3851
+ const [, setPDFConfig] = useSetAppDataByKey(APP_DATA.pdfConfig);
3852
+ const isValidPDF = useCallback5(
3853
+ (pdfURL2) => {
3854
+ const extension = pdfURL2.split(".").pop().toLowerCase();
3855
+ setIsValidateProgress(true);
3856
+ if (extension === "pdf") {
3857
+ setIsPDFUrlValid(true);
3858
+ setIsValidateProgress(false);
3859
+ setPDFConfig({ state: true, file: pdfFile, url: pdfURL2 });
3860
+ onOpenChange(false);
3861
+ }
3862
+ fetch(pdfURL2, { method: "HEAD" }).then((response) => response.headers.get("content-type")).then((contentType) => {
3863
+ if (contentType === "application/pdf") {
3864
+ setIsPDFUrlValid(true);
3865
+ setIsValidateProgress(false);
3866
+ setPDFConfig({ state: true, file: pdfFile, url: pdfURL2 });
3867
+ onOpenChange(false);
3868
+ } else {
3869
+ setIsPDFUrlValid(false);
3870
+ setIsValidateProgress(false);
3871
+ }
3872
+ }).catch(() => {
3873
+ setIsPDFUrlValid(false);
3874
+ setIsValidateProgress(false);
3875
+ });
3876
+ },
3877
+ [onOpenChange, pdfFile, setIsPDFUrlValid, setIsValidateProgress, setPDFConfig]
3878
+ );
3879
+ return /* @__PURE__ */ React16.createElement(
3880
+ Flex,
3881
+ {
3882
+ direction: "row",
3883
+ css: {
3884
+ mb: "0",
3885
+ mt: "auto",
3886
+ gap: "$8"
3887
+ }
3888
+ },
3889
+ /* @__PURE__ */ React16.createElement(
3890
+ Button,
3891
+ {
3892
+ variant: "standard",
3893
+ outlined: true,
3894
+ type: "submit",
3895
+ onClick: () => {
3896
+ onOpenChange(false);
3897
+ },
3898
+ css: { w: "50%" }
3899
+ },
3900
+ "Cancel"
3901
+ ),
3902
+ /* @__PURE__ */ React16.createElement(
3903
+ Button,
3904
+ {
3905
+ variant: "primary",
3906
+ type: "submit",
3907
+ onClick: () => {
3908
+ if (pdfFile) {
3909
+ setPDFConfig({ state: true, file: pdfFile, url: pdfURL });
3910
+ onOpenChange(false);
3911
+ } else if (pdfURL) {
3912
+ isValidPDF(pdfURL);
3913
+ }
3914
+ },
3915
+ disabled: !pdfFile && !pdfURL,
3916
+ loading: isValidateProgress,
3917
+ "data-testid": "share_pdf_btn",
3918
+ css: {
3919
+ w: "50%"
3920
+ }
3921
+ },
3922
+ "Start Sharing"
3923
+ )
3924
+ );
3925
+ };
3926
+
3927
+ // src/Prebuilt/components/pdfAnnotator/uploadedFile.jsx
3928
+ init_define_process_env();
3929
+ import React17 from "react";
3930
+ import { TrashIcon } from "@100mslive/react-icons";
3931
+ var UploadedFile = ({
3932
+ pdfFile,
3933
+ pdfURL,
3934
+ isValidateProgress,
3935
+ setPDFFile,
3936
+ setIsPDFUrlValid,
3937
+ setIsValidateProgress,
3938
+ onOpenChange
3939
+ }) => {
3940
+ const [fileName, ext] = pdfFile.name.split(".");
3941
+ return /* @__PURE__ */ React17.createElement(Dialog.Root, { defaultOpen: true, onOpenChange }, /* @__PURE__ */ React17.createElement(Dialog.Portal, null, /* @__PURE__ */ React17.createElement(Dialog.Overlay, null), /* @__PURE__ */ React17.createElement(
3942
+ Dialog.Content,
3943
+ {
3944
+ css: {
3945
+ w: "min(420px,80%)",
3946
+ overflow: "auto",
3947
+ p: "$10",
3948
+ bg: "$surface_dim"
3949
+ }
3950
+ },
3951
+ /* @__PURE__ */ React17.createElement(Flex, { direction: "column" }, /* @__PURE__ */ React17.createElement(PDFHeader, null), /* @__PURE__ */ React17.createElement(
3952
+ DialogRow,
3953
+ {
3954
+ css: {
3955
+ fontFamily: "$sans",
3956
+ bg: "$surface_bright",
3957
+ r: "$1",
3958
+ outline: "none",
3959
+ border: "1px solid $border_bright",
3960
+ p: "$4 $6",
3961
+ minHeight: "$11",
3962
+ c: "$on_primary_high",
3963
+ fs: "$md",
3964
+ w: "100%",
3965
+ "&:focus": {
3966
+ boxShadow: "0 0 0 1px $colors$primary_default",
3967
+ border: "1px solid $transparent"
3968
+ },
3969
+ mb: 0,
3970
+ mt: "$6"
3971
+ }
3972
+ },
3973
+ /* @__PURE__ */ React17.createElement(Flex, { direction: "row", css: { flexGrow: "1", maxWidth: "88%" } }, /* @__PURE__ */ React17.createElement(
3974
+ Text,
3975
+ {
3976
+ css: {
3977
+ textOverflow: "ellipsis",
3978
+ overflow: "hidden",
3979
+ whiteSpace: "nowrap"
3980
+ }
3981
+ },
3982
+ fileName
3983
+ ), /* @__PURE__ */ React17.createElement(Text, { css: { whiteSpace: "nowrap" } }, ".", ext)),
3984
+ /* @__PURE__ */ React17.createElement(
3985
+ TrashIcon,
3986
+ {
3987
+ onClick: () => setPDFFile(null),
3988
+ style: {
3989
+ cursor: "pointer"
3990
+ }
3991
+ }
3992
+ )
3993
+ ), /* @__PURE__ */ React17.createElement(PDFInfo, null), /* @__PURE__ */ React17.createElement(
3994
+ SubmitPDF,
3995
+ {
3996
+ pdfFile,
3997
+ pdfURL,
3998
+ isValidateProgress,
3999
+ setIsPDFUrlValid,
4000
+ setIsValidateProgress,
4001
+ onOpenChange
4002
+ }
4003
+ ))
4004
+ )));
4005
+ };
4006
+
4007
+ // src/Prebuilt/components/pdfAnnotator/pdfFileOptions.jsx
4008
+ function PDFFileOptions({ onOpenChange }) {
4009
+ const [isPDFUrlValid, setIsPDFUrlValid] = useState9(true);
4010
+ const [isValidateProgress, setIsValidateProgress] = useState9(false);
4011
+ const [pdfFile, setPDFFile] = useState9(null);
4012
+ const [pdfURL, setPDFURL] = useState9("");
4013
+ return !pdfFile ? /* @__PURE__ */ React18.createElement(Dialog.Root, { defaultOpen: true, onOpenChange }, /* @__PURE__ */ React18.createElement(Dialog.Portal, null, /* @__PURE__ */ React18.createElement(Dialog.Overlay, null), /* @__PURE__ */ React18.createElement(
4014
+ Dialog.Content,
4015
+ {
4016
+ css: {
4017
+ w: "min(420px,80%)",
4018
+ overflow: "auto",
4019
+ p: "$10",
4020
+ bg: "$surface_dim"
4021
+ }
4022
+ },
4023
+ /* @__PURE__ */ React18.createElement(Flex, { direction: "column" }, /* @__PURE__ */ React18.createElement(PDFHeader, null), /* @__PURE__ */ React18.createElement(
4024
+ DialogInputFile,
4025
+ {
4026
+ onChange: (target) => {
4027
+ setPDFFile(target.files[0]);
4028
+ },
4029
+ placeholder: "Click to upload",
4030
+ type: "file",
4031
+ accept: ".pdf"
4032
+ }
4033
+ ), /* @__PURE__ */ React18.createElement(
4034
+ DialogRow,
4035
+ {
4036
+ css: {
4037
+ m: "$10 0"
4038
+ }
4039
+ },
4040
+ /* @__PURE__ */ React18.createElement(
4041
+ HorizontalDivider,
4042
+ {
4043
+ css: {
4044
+ mr: "$4"
4045
+ }
4046
+ }
4047
+ ),
4048
+ /* @__PURE__ */ React18.createElement(
4049
+ Text,
4050
+ {
4051
+ variant: "tiny",
4052
+ css: {
4053
+ color: "$on_surface_low"
4054
+ }
4055
+ },
4056
+ "OR"
4057
+ ),
4058
+ /* @__PURE__ */ React18.createElement(
4059
+ HorizontalDivider,
4060
+ {
4061
+ css: {
4062
+ ml: "$4"
4063
+ }
4064
+ }
4065
+ )
4066
+ ), /* @__PURE__ */ React18.createElement(
4067
+ Text,
4068
+ {
4069
+ variant: "sm",
4070
+ css: {
4071
+ py: "$2"
4072
+ }
4073
+ },
4074
+ "Import from URL"
4075
+ ), /* @__PURE__ */ React18.createElement(
4076
+ Input,
4077
+ {
4078
+ css: { w: "100%", mb: "$10" },
4079
+ value: pdfURL,
4080
+ onFocus: () => {
4081
+ setIsPDFUrlValid(true);
4082
+ setIsValidateProgress(false);
4083
+ },
4084
+ onChange: (e) => {
4085
+ setPDFURL(e.target.value);
4086
+ },
4087
+ placeholder: "Paste PDF URL",
4088
+ type: "text",
4089
+ error: !isPDFUrlValid
4090
+ }
4091
+ ), !isPDFUrlValid && /* @__PURE__ */ React18.createElement(PdfErrorView, { isPDFUrlValid }), /* @__PURE__ */ React18.createElement(PDFInfo, null), /* @__PURE__ */ React18.createElement(
4092
+ SubmitPDF,
4093
+ {
4094
+ pdfFile,
4095
+ pdfURL,
4096
+ isValidateProgress,
4097
+ setIsPDFUrlValid,
4098
+ setIsValidateProgress,
4099
+ onOpenChange
4100
+ }
4101
+ ))
4102
+ ))) : /* @__PURE__ */ React18.createElement(
4103
+ UploadedFile,
4104
+ {
4105
+ pdfFile,
4106
+ pdfURL,
4107
+ isValidateProgress,
4108
+ setPDFFile,
4109
+ setIsPDFUrlValid,
4110
+ setIsValidateProgress,
4111
+ onOpenChange
4112
+ }
4113
+ );
4114
+ }
4115
+
4116
+ // src/Prebuilt/components/pdfAnnotator/shareScreenOptions.jsx
4117
+ var MODALS3 = {
4118
+ SHARE: "share",
4119
+ SCREEN_SHARE: "screenShare",
4120
+ PDF_SHARE: "pdfShare"
4121
+ };
4122
+ function ShareScreenOptions() {
4123
+ const [openModals, setOpenModals] = useState10(/* @__PURE__ */ new Set());
4124
+ const { amIScreenSharing } = useScreenShare();
4125
+ const updateState = (modalName, value) => {
4126
+ setOpenModals((modals) => {
4127
+ const copy = new Set(modals);
4128
+ if (value) {
4129
+ copy.add(modalName);
4130
+ } else {
4131
+ copy.delete(modalName);
4132
+ }
4133
+ return copy;
4134
+ });
4135
+ };
4136
+ const { toggleScreenShare } = useScreenShare();
4137
+ return /* @__PURE__ */ React19.createElement(Fragment2, null, /* @__PURE__ */ React19.createElement(
4138
+ Dropdown.Root,
4139
+ {
4140
+ open: openModals.has(MODALS3.SHARE),
4141
+ onOpenChange: (value) => updateState(MODALS3.SHARE, value),
4142
+ modal: false
4143
+ },
4144
+ /* @__PURE__ */ React19.createElement(Dropdown.Trigger, { asChild: true, "data-testid": "sharing_btn", disabled: amIScreenSharing }, /* @__PURE__ */ React19.createElement(ShareMenuIcon, { disabled: amIScreenSharing }, /* @__PURE__ */ React19.createElement(Tooltip, { title: "Share" }, /* @__PURE__ */ React19.createElement(Box, null, /* @__PURE__ */ React19.createElement(VerticalMenuIcon, null))))),
4145
+ /* @__PURE__ */ React19.createElement(
4146
+ Dropdown.Content,
4147
+ {
4148
+ sideOffset: 5,
4149
+ css: {
4150
+ w: "$96",
4151
+ maxHeight: "$96",
4152
+ p: 0,
4153
+ bg: "$surface_dim"
4154
+ }
4155
+ },
4156
+ /* @__PURE__ */ React19.createElement(
4157
+ Dropdown.Item,
4158
+ {
4159
+ css: {
4160
+ flexDirection: "column",
4161
+ alignItems: "flex-start",
4162
+ px: "$10",
4163
+ pt: "$10",
4164
+ pb: "$6",
4165
+ "&:hover": {
4166
+ bg: "$transparent",
4167
+ cursor: "default"
4168
+ }
4169
+ }
4170
+ },
4171
+ /* @__PURE__ */ React19.createElement(Text, { variant: "h6" }, "Start Sharing"),
4172
+ /* @__PURE__ */ React19.createElement(Text, { variant: "sm" }, "Choose what you want to share")
4173
+ ),
4174
+ /* @__PURE__ */ React19.createElement(
4175
+ Dropdown.Item,
4176
+ {
4177
+ css: {
4178
+ flexDirection: "row",
4179
+ alignItems: "flex-start",
4180
+ gap: "$8",
4181
+ px: "$10",
4182
+ py: "$6",
4183
+ "&:hover": {
4184
+ bg: "$transparent",
4185
+ cursor: "default"
4186
+ }
4187
+ }
4188
+ },
4189
+ /* @__PURE__ */ React19.createElement(
4190
+ Flex,
4191
+ {
4192
+ direction: "column",
4193
+ align: "center",
4194
+ css: {
4195
+ gap: "$6"
4196
+ }
4197
+ },
4198
+ /* @__PURE__ */ React19.createElement(
4199
+ IconButton,
4200
+ {
4201
+ as: "div",
4202
+ onClick: () => toggleScreenShare(),
4203
+ css: {
4204
+ p: "$6",
4205
+ display: "flex",
4206
+ justifyContent: "center",
4207
+ border: "1px solid $border_bright",
4208
+ r: "$2",
4209
+ bg: "$surface_brighter",
4210
+ pb: "0"
4211
+ }
4212
+ },
4213
+ /* @__PURE__ */ React19.createElement(
4214
+ "img",
4215
+ {
4216
+ src: screen_share_default,
4217
+ alt: "screen-share",
4218
+ width: "100%",
4219
+ height: "100%",
4220
+ style: {
4221
+ borderTopLeftRadius: "0.5rem",
4222
+ // TODO: create image component to solve for style hardcoding
4223
+ borderTopRightRadius: "0.5rem"
4224
+ }
4225
+ }
4226
+ )
4227
+ ),
4228
+ /* @__PURE__ */ React19.createElement(Flex, { direction: "column", align: "center" }, /* @__PURE__ */ React19.createElement(Text, { variant: "body2" }, "Share Screen"), /* @__PURE__ */ React19.createElement(
4229
+ Text,
4230
+ {
4231
+ variant: "caption",
4232
+ css: {
4233
+ c: "$on_surface_low",
4234
+ textAlign: "center"
4235
+ }
4236
+ },
4237
+ "Share your tab, window or your entire screen"
4238
+ ))
4239
+ ),
4240
+ /* @__PURE__ */ React19.createElement(
4241
+ Flex,
4242
+ {
4243
+ direction: "column",
4244
+ align: "center",
4245
+ css: {
4246
+ gap: "$6"
4247
+ }
4248
+ },
4249
+ /* @__PURE__ */ React19.createElement(
4250
+ IconButton,
4251
+ {
4252
+ onClick: () => {
4253
+ updateState(MODALS3.PDF_SHARE, true);
4254
+ },
4255
+ disabled: amIScreenSharing,
4256
+ css: {
4257
+ p: "$6",
4258
+ display: "flex",
4259
+ justifyContent: "center",
4260
+ border: "$border_bright 1px solid",
4261
+ r: "$2",
4262
+ bg: "$surface_bright",
4263
+ pb: "0"
4264
+ }
4265
+ },
4266
+ /* @__PURE__ */ React19.createElement(
4267
+ "img",
4268
+ {
4269
+ src: pdf_share_default,
4270
+ alt: "pdf-share",
4271
+ width: "100%",
4272
+ height: "100%",
4273
+ style: {
4274
+ borderTopLeftRadius: "0.5rem",
4275
+ // TODO: create image component to solve for style hardcoding
4276
+ borderTopRightRadius: "0.5rem"
4277
+ }
4278
+ }
4279
+ ),
4280
+ /* @__PURE__ */ React19.createElement(
4281
+ Flex,
4282
+ {
4283
+ direction: "row",
4284
+ align: "center",
4285
+ css: {
4286
+ position: "absolute",
4287
+ top: "29%",
4288
+ left: "54%",
4289
+ padding: "$2 $4",
4290
+ r: "$2",
4291
+ bg: "$primary_bright",
4292
+ zIndex: "2",
4293
+ gap: "$2"
4294
+ }
4295
+ },
4296
+ /* @__PURE__ */ React19.createElement(StarIcon, { height: 14, width: 14 }),
4297
+ /* @__PURE__ */ React19.createElement(
4298
+ Text,
4299
+ {
4300
+ variant: "xs",
4301
+ css: {
4302
+ fontWeight: "$semiBold",
4303
+ c: "$on_primary_high",
4304
+ pr: "$4"
4305
+ }
4306
+ },
4307
+ "New"
4308
+ )
4309
+ )
4310
+ ),
4311
+ /* @__PURE__ */ React19.createElement(Flex, { direction: "column", align: "center" }, /* @__PURE__ */ React19.createElement(Text, { variant: "body2" }, "Share PDF"), /* @__PURE__ */ React19.createElement(
4312
+ Text,
4313
+ {
4314
+ variant: "caption",
4315
+ css: {
4316
+ c: "$on_surface_low",
4317
+ textAlign: "center"
4318
+ }
4319
+ },
4320
+ "Annotate, draw shapes, and more over PDFs"
4321
+ ))
4322
+ )
4323
+ ),
4324
+ /* @__PURE__ */ React19.createElement(
4325
+ Dropdown.Item,
4326
+ {
4327
+ css: {
4328
+ px: "$10",
4329
+ pb: "$10",
4330
+ pt: "$6",
4331
+ "&:hover": {
4332
+ bg: "$transparent",
4333
+ cursor: "default"
4334
+ }
4335
+ }
4336
+ },
4337
+ /* @__PURE__ */ React19.createElement(
4338
+ Button,
4339
+ {
4340
+ variant: "standard",
4341
+ outlined: true,
4342
+ type: "submit",
4343
+ onClick: () => {
4344
+ updateState(MODALS3.SHARE, false);
4345
+ },
4346
+ "data-testid": "share_btn",
4347
+ css: {
4348
+ w: "100%"
4349
+ }
4350
+ },
4351
+ "Cancel"
4352
+ )
4353
+ )
4354
+ )
4355
+ ), openModals.has(MODALS3.PDF_SHARE) && /* @__PURE__ */ React19.createElement(PDFFileOptions, { onOpenChange: (value) => updateState(MODALS3.PDF_SHARE, value) }));
4356
+ }
4357
+
4358
+ // src/Prebuilt/components/ScreenShare.jsx
4359
+ var ScreenshareToggle = ({ css = {} }) => {
4360
+ const isAllowedToPublish = useHMSStore7(selectIsAllowedToPublish);
4361
+ const isAudioOnly = useUISettings(UI_SETTINGS.isAudioOnly);
4362
+ const { amIScreenSharing, screenShareVideoTrackId: video, toggleScreenShare } = useScreenShare2();
4363
+ const isVideoScreenshare = amIScreenSharing && !!video;
4364
+ if (!isAllowedToPublish.screen || !isScreenshareSupported()) {
4365
+ return null;
4366
+ }
4367
+ return /* @__PURE__ */ React20.createElement(Fragment3, null, /* @__PURE__ */ React20.createElement(Flex, { direction: "row", css: { "@md": { display: "none" } } }, /* @__PURE__ */ React20.createElement(
4368
+ ScreenShareButton,
4369
+ {
4370
+ variant: "standard",
4371
+ key: "ShareScreen",
4372
+ active: !isVideoScreenshare,
4373
+ css,
4374
+ disabled: isAudioOnly,
4375
+ onClick: () => {
4376
+ toggleScreenShare();
4377
+ }
4378
+ },
4379
+ /* @__PURE__ */ React20.createElement(Tooltip, { title: `${!isVideoScreenshare ? "Start" : "Stop"} screen sharing` }, /* @__PURE__ */ React20.createElement(Box, null, /* @__PURE__ */ React20.createElement(ShareScreenIcon, null)))
4380
+ ), /* @__PURE__ */ React20.createElement(ShareScreenOptions, null)));
4381
+ };
4382
+
4383
+ // src/Prebuilt/components/Footer/ChatToggle.jsx
4384
+ init_define_process_env();
4385
+ import React21 from "react";
4386
+ import { selectUnreadHMSMessagesCount, useHMSStore as useHMSStore8 } from "@100mslive/react-sdk";
4387
+ import { ChatIcon, ChatUnreadIcon } from "@100mslive/react-icons";
4388
+ var ChatToggle = () => {
4389
+ const countUnreadMessages = useHMSStore8(selectUnreadHMSMessagesCount);
4390
+ const isChatOpen = useIsSidepaneTypeOpen(SIDE_PANE_OPTIONS.CHAT);
4391
+ const toggleChat = useSidepaneToggle(SIDE_PANE_OPTIONS.CHAT);
4392
+ const isFeatureEnabled = useIsFeatureEnabled(FEATURE_LIST.CHAT);
4393
+ if (!isFeatureEnabled) {
4394
+ return;
4395
+ }
4396
+ return /* @__PURE__ */ React21.createElement(Tooltip, { key: "chat", title: `${isChatOpen ? "Close" : "Open"} chat` }, /* @__PURE__ */ React21.createElement(IconButton_default, { onClick: toggleChat, active: !isChatOpen, "data-testid": "chat_btn" }, countUnreadMessages === 0 ? /* @__PURE__ */ React21.createElement(ChatIcon, null) : /* @__PURE__ */ React21.createElement(ChatUnreadIcon, { "data-testid": "chat_unread_btn" })));
4397
+ };
4398
+
4399
+ // src/Prebuilt/components/Footer/Footer.jsx
4400
+ var Footer2 = () => {
4401
+ const isMobile = useMedia2(config.media.md);
4402
+ const localPeerRole = useHMSStore9(selectLocalPeerRoleName3);
4403
+ const hlsViewerRole = useHLSViewerRole();
4404
+ const isHlsViewer = hlsViewerRole === localPeerRole;
4405
+ return /* @__PURE__ */ React22.createElement(
4406
+ Footer.Root,
4407
+ {
4408
+ css: {
4409
+ flexWrap: "nowrap",
4410
+ "@md": {
4411
+ justifyContent: "center",
4412
+ gap: "$10"
4413
+ }
4414
+ }
4415
+ },
4416
+ /* @__PURE__ */ React22.createElement(
4417
+ Footer.Left,
4418
+ {
4419
+ css: {
4420
+ "@md": {
4421
+ w: "unset",
4422
+ p: "0",
4423
+ gap: "$10"
4424
+ }
4425
+ }
4426
+ },
4427
+ isMobile ? /* @__PURE__ */ React22.createElement(LeaveRoom, null) : null,
4428
+ /* @__PURE__ */ React22.createElement(AudioVideoToggle, null)
4429
+ ),
4430
+ /* @__PURE__ */ React22.createElement(
4431
+ Footer.Center,
4432
+ {
4433
+ css: {
4434
+ "@md": {
4435
+ w: "unset",
4436
+ gap: "$10"
4437
+ }
4438
+ }
4439
+ },
4440
+ isMobile ? /* @__PURE__ */ React22.createElement(React22.Fragment, null, isHlsViewer ? /* @__PURE__ */ React22.createElement(RaiseHand, null) : null, /* @__PURE__ */ React22.createElement(ChatToggle, null), /* @__PURE__ */ React22.createElement(MoreSettings, null)) : /* @__PURE__ */ React22.createElement(React22.Fragment, null, /* @__PURE__ */ React22.createElement(ScreenshareToggle, null), isHlsViewer ? /* @__PURE__ */ React22.createElement(RaiseHand, null) : null, /* @__PURE__ */ React22.createElement(EmojiReaction, null), /* @__PURE__ */ React22.createElement(LeaveRoom, null))
4441
+ ),
4442
+ /* @__PURE__ */ React22.createElement(Footer.Right, null, /* @__PURE__ */ React22.createElement(ChatToggle, null), /* @__PURE__ */ React22.createElement(ParticipantCount, null), /* @__PURE__ */ React22.createElement(MoreSettings, null))
4443
+ );
4444
+ };
4445
+
4446
+ // src/Prebuilt/components/Notifications/HLSFailureModal.jsx
4447
+ init_define_process_env();
4448
+ import React23, { useCallback as useCallback6, useState as useState11 } from "react";
4449
+ import { selectHLSState, useHMSActions as useHMSActions7, useHMSStore as useHMSStore10 } from "@100mslive/react-sdk";
4450
+ function HLSFailureModal() {
4451
+ const { hlsError } = useHMSStore10(selectHLSState).error || false;
4452
+ const [openModal, setOpenModal] = useState11(!!hlsError);
4453
+ const hmsActions = useHMSActions7();
4454
+ const [isHLSStarted, setHLSStarted] = useSetAppDataByKey(APP_DATA.hlsStarted);
4455
+ const startHLS = useCallback6(() => __async(this, null, function* () {
4456
+ try {
4457
+ if (isHLSStarted) {
4458
+ return;
4459
+ }
4460
+ setHLSStarted(true);
4461
+ yield hmsActions.startHLSStreaming({});
4462
+ } catch (error) {
4463
+ if (error.message.includes("invalid input")) {
4464
+ yield startHLS();
4465
+ return;
4466
+ }
4467
+ setHLSStarted(false);
4468
+ }
4469
+ }), [hmsActions, isHLSStarted, setHLSStarted]);
4470
+ return hlsError ? /* @__PURE__ */ React23.createElement(
4471
+ Dialog.Root,
4472
+ {
4473
+ open: openModal,
4474
+ onOpenChange: (value) => {
4475
+ if (!value) {
4476
+ setOpenModal(false);
4477
+ }
4478
+ }
4479
+ },
4480
+ /* @__PURE__ */ React23.createElement(Dialog.Portal, null, /* @__PURE__ */ React23.createElement(Dialog.Overlay, null), /* @__PURE__ */ React23.createElement(Dialog.Content, { css: { w: "min(360px, 90%)" } }, /* @__PURE__ */ React23.createElement(
4481
+ Dialog.Title,
4482
+ {
4483
+ css: {
4484
+ display: "flex",
4485
+ alignItems: "center",
4486
+ justifyContent: "space-between",
4487
+ borderBottom: "1px solid $border_default",
4488
+ mt: "$4"
4489
+ }
4490
+ },
4491
+ /* @__PURE__ */ React23.createElement(Text, { variant: "h6", css: { fontWeight: "$semiBold" } }, "Failed to Go Live")
4492
+ ), /* @__PURE__ */ React23.createElement(Text, { variant: "sm", css: { mb: "$10", color: "$on_surface_medium" } }, "Something went wrong and your live broadcast failed. Please try again."), /* @__PURE__ */ React23.createElement(Flex, { align: "center", justify: "between", css: { w: "100%", gap: "$8" } }, /* @__PURE__ */ React23.createElement(Button, { outlined: true, variant: "standard", css: { w: "100%" }, onClick: () => setOpenModal(false) }, "Dismiss"), /* @__PURE__ */ React23.createElement(Button, { css: { w: "100%" } }, "Go Live"))))
4493
+ ) : null;
4494
+ }
4495
+
4496
+ // src/Prebuilt/layouts/mainView.jsx
4497
+ init_define_process_env();
4498
+ import React33, { Suspense as Suspense2, useCallback as useCallback10, useEffect as useEffect8 } from "react";
4499
+ import {
4500
+ selectIsConnectedToRoom as selectIsConnectedToRoom2,
4501
+ selectLocalPeerRoleName as selectLocalPeerRoleName6,
4502
+ selectPeerScreenSharing as selectPeerScreenSharing3,
4503
+ selectPeerSharingAudio,
4504
+ selectPeerSharingVideoPlaylist as selectPeerSharingVideoPlaylist3,
4505
+ selectPermissions as selectPermissions3,
4506
+ useHMSActions as useHMSActions12,
4507
+ useHMSStore as useHMSStore18,
4508
+ useRecordingStreaming as useRecordingStreaming3
4509
+ } from "@100mslive/react-sdk";
4510
+
4511
+ // src/Prebuilt/components/EqualProminence.jsx
4512
+ init_define_process_env();
4513
+ import React25, { useEffect as useEffect5, useMemo as useMemo2, useState as useState12 } from "react";
4514
+ import { useMeasure, useMedia as useMedia4 } from "react-use";
4515
+ import {
4516
+ getPeersWithTiles,
4517
+ selectLocalPeer as selectLocalPeer3,
4518
+ selectPeers as selectPeers2,
4519
+ selectRemotePeers as selectRemotePeers2,
4520
+ selectTracksMap as selectTracksMap3,
4521
+ useHMSStore as useHMSStore12,
4522
+ useHMSVanillaStore as useHMSVanillaStore2
4523
+ } from "@100mslive/react-sdk";
4524
+
4525
+ // src/Prebuilt/layouts/InsetView.jsx
4526
+ init_define_process_env();
4527
+ import React24, { Fragment as Fragment4, useEffect as useEffect4, useRef as useRef4 } from "react";
4528
+ import Draggable from "react-draggable";
4529
+ import { useMedia as useMedia3 } from "react-use";
4530
+ import {
4531
+ selectIsAllowedToPublish as selectIsAllowedToPublish2,
4532
+ selectLocalPeer as selectLocalPeer2,
4533
+ selectRemotePeers,
4534
+ selectRolesMap,
4535
+ useHMSStore as useHMSStore11
4536
+ } from "@100mslive/react-sdk";
4537
+ import { ExpandIcon as ExpandIcon2 } from "@100mslive/react-icons";
4538
+ var MinimisedTile = ({ setMinimised }) => {
4539
+ return /* @__PURE__ */ React24.createElement(Flex, { align: "center", css: { gap: "$6", r: "$1", bg: "$surface_default", p: "$4", color: "$on_surface_high" } }, /* @__PURE__ */ React24.createElement(AudioVideoToggle, { hideOptions: true }), /* @__PURE__ */ React24.createElement(Text, null, "You"), /* @__PURE__ */ React24.createElement(
4540
+ IconButton_default,
4541
+ {
4542
+ onClick: () => setMinimised(false),
4543
+ css: { bg: "transparent", border: "transparent" },
4544
+ className: "__cancel-drag-event"
4545
+ },
4546
+ /* @__PURE__ */ React24.createElement(ExpandIcon2, null)
4547
+ ));
4548
+ };
4549
+ var InsetTile = () => {
4550
+ const isMobile = useMedia3(config.media.md);
4551
+ const isLandscape = useMedia3(config.media.ls);
4552
+ const localPeer = useHMSStore11(selectLocalPeer2);
4553
+ const isAllowedToPublish = useHMSStore11(selectIsAllowedToPublish2);
4554
+ const [minimised, setMinimised] = useSetAppDataByKey(APP_DATA.minimiseInset);
4555
+ const aspectRatio = isMobile ? 9 / 16 : 16 / 9;
4556
+ let height = 180;
4557
+ let width = height * aspectRatio;
4558
+ if (isLandscape && width > 240) {
4559
+ width = 240;
4560
+ height = width / aspectRatio;
4561
+ }
4562
+ const nodeRef = useRef4(null);
4563
+ useEffect4(() => {
4564
+ if (!nodeRef.current || !window.ResizeObserver) {
4565
+ return;
4566
+ }
4567
+ const node = nodeRef.current;
4568
+ const resizeObserver = new ResizeObserver((entries) => {
4569
+ entries.forEach((entry) => {
4570
+ if (entry.target === node.parentElement) {
4571
+ node.style.transform = `translate(0,0)`;
4572
+ }
4573
+ });
4574
+ });
4575
+ resizeObserver.observe(node.parentElement);
4576
+ return () => {
4577
+ (node == null ? void 0 : node.parentElement) && (resizeObserver == null ? void 0 : resizeObserver.unobserve(node.parentElement));
4578
+ resizeObserver == null ? void 0 : resizeObserver.disconnect();
4579
+ };
4580
+ }, []);
4581
+ if (!isAllowedToPublish.audio && !isAllowedToPublish.video) {
4582
+ return null;
4583
+ }
4584
+ return /* @__PURE__ */ React24.createElement(Draggable, { bounds: "parent", nodeRef, cancel: ".__cancel-drag-event" }, /* @__PURE__ */ React24.createElement(
4585
+ Box,
4586
+ {
4587
+ ref: nodeRef,
4588
+ css: __spreadValues({
4589
+ position: "absolute",
4590
+ bottom: 0,
4591
+ right: 0,
4592
+ zIndex: 10,
4593
+ boxShadow: "0 0 8px 0 rgba(0,0,0,0.3)",
4594
+ r: "$2"
4595
+ }, !minimised ? {
4596
+ aspectRatio,
4597
+ h: height
4598
+ } : {})
4599
+ },
4600
+ minimised ? /* @__PURE__ */ React24.createElement(MinimisedTile, { setMinimised }) : /* @__PURE__ */ React24.createElement(
4601
+ VideoTile_default,
4602
+ {
4603
+ peerId: localPeer.id,
4604
+ trackid: localPeer.videoTrack,
4605
+ rootCSS: {
4606
+ size: "100%",
4607
+ padding: 0
4608
+ },
4609
+ width,
4610
+ height,
4611
+ isDragabble: isMobile,
4612
+ canMinimise: true
4613
+ }
4614
+ )
4615
+ ));
4616
+ };
4617
+
4618
+ // src/Prebuilt/common/PeersSorter.js
4619
+ init_define_process_env();
4620
+
4621
+ // ../hms-video-store/dist/index.js
4622
+ init_define_process_env();
4623
+
4624
+ // ../../node_modules/reselect/es/index.js
4625
+ init_define_process_env();
4626
+ function defaultEqualityCheck(a, b2) {
4627
+ return a === b2;
4628
+ }
4629
+ function areArgumentsShallowlyEqual(equalityCheck, prev, next) {
4630
+ if (prev === null || next === null || prev.length !== next.length) {
4631
+ return false;
4632
+ }
4633
+ var length = prev.length;
4634
+ for (var i = 0; i < length; i++) {
4635
+ if (!equalityCheck(prev[i], next[i])) {
4636
+ return false;
3128
4637
  }
3129
4638
  }
3130
4639
  return true;
@@ -5327,7 +6836,7 @@ var $t = (n2, e) => {
5327
6836
  };
5328
6837
  var mr = (n2, e) => () => (e || n2((e = { exports: {} }).exports, e), e.exports);
5329
6838
  var Jt = mr((aa, Ar) => {
5330
- Ar.exports = { name: "@100mslive/hms-video", version: "0.9.13-alpha.0", license: "MIT", main: "dist/index.cjs.js", typings: "dist/index.d.ts", module: "dist/index.js", files: ["dist", "src"], engines: { node: ">=10" }, exports: { ".": { require: "./dist/index.cjs.js", import: "./dist/index.js", default: "./dist/index.js" } }, scripts: { prestart: "rm -rf dist && yarn types:build", start: 'concurrently "yarn dev" "yarn types"', dev: "node ../../scripts/dev", "build:only": "node ../../scripts/build", build: "yarn build:only && yarn types:build", types: "tsc -w", "types:build": "tsc -p tsconfig.json", test: "jest --maxWorkers=1", lint: "eslint -c ../../.eslintrc .", "lint:fix": "yarn lint --fix", prepare: "yarn build", size: "size-limit", analyze: "size-limit --why", format: "prettier --write src/**/*.ts" }, author: "100ms <tech-common@100ms.live>", devDependencies: { "@types/dom-screen-wake-lock": "^1.0.1", "@types/sdp-transform": "^2.4.4", "@types/ua-parser-js": "^0.7.36", "@types/uuid": "^8.3.0", "jest-canvas-mock": "^2.3.1", tslib: "^2.2.0" }, dependencies: { eventemitter2: "^6.4.7", "sdp-transform": "^2.14.1", "ua-parser-js": "^1.0.1", uuid: "^8.3.2", "webrtc-adapter": "^8.0.0" } };
6839
+ Ar.exports = { name: "@100mslive/hms-video", version: "0.9.13", license: "MIT", main: "dist/index.cjs.js", typings: "dist/index.d.ts", module: "dist/index.js", files: ["dist", "src"], engines: { node: ">=10" }, exports: { ".": { require: "./dist/index.cjs.js", import: "./dist/index.js", default: "./dist/index.js" } }, scripts: { prestart: "rm -rf dist && yarn types:build", start: 'concurrently "yarn dev" "yarn types"', dev: "node ../../scripts/dev", "build:only": "node ../../scripts/build", build: "yarn build:only && yarn types:build", types: "tsc -w", "types:build": "tsc -p tsconfig.json", test: "jest --maxWorkers=1", lint: "eslint -c ../../.eslintrc .", "lint:fix": "yarn lint --fix", prepare: "yarn build", size: "size-limit", analyze: "size-limit --why", format: "prettier --write src/**/*.ts" }, author: "100ms <tech-common@100ms.live>", devDependencies: { "@types/dom-screen-wake-lock": "^1.0.1", "@types/sdp-transform": "^2.4.4", "@types/ua-parser-js": "^0.7.36", "@types/uuid": "^8.3.0", "jest-canvas-mock": "^2.3.1", tslib: "^2.2.0" }, dependencies: { eventemitter2: "^6.4.7", "sdp-transform": "^2.14.1", "ua-parser-js": "^1.0.1", uuid: "^8.3.2", "webrtc-adapter": "^8.0.0" } };
5331
6840
  });
5332
6841
  var Se = class {
5333
6842
  };
@@ -5784,7 +7293,7 @@ var me = ((t) => (t[t.Publish = 0] = "Publish", t[t.Subscribe = 1] = "Subscribe"
5784
7293
  import { EventEmitter2 as gs } from "eventemitter2";
5785
7294
  var Ut = (s, e) => () => (e || s((e = { exports: {} }).exports, e), e.exports);
5786
7295
  var At = Ut((Kn, Is) => {
5787
- Is.exports = { version: "0.10.13-alpha.0", license: "MIT", main: "dist/index.cjs.js", module: "dist/index.js", typings: "dist/index.d.ts", files: ["dist", "src"], engines: { node: ">=12" }, exports: { ".": { require: "./dist/index.cjs.js", import: "./dist/index.js", default: "./dist/index.js" } }, scripts: { prestart: "rm -rf dist && yarn types:build", start: 'concurrently "yarn dev" "yarn types"', dev: "node ../../scripts/dev", "build:only": "node ../../scripts/build", build: "yarn build:only && yarn types:build", types: "tsc -w", "types:build": "tsc -p tsconfig.json", format: "prettier --write src/**/*.ts", test: "jest --maxWorkers=1", "test:watch": "jest --watch", "test:coverage": "jest --coverage", lint: "eslint -c ../../.eslintrc .", "lint:fix": "yarn lint --fix", prepare: "yarn build", size: "size-limit", analyze: "size-limit --why", docs: "rm -rf ./docs && typedoc && rm -f ./docs/README.md && mkdir ./docs/home &&mv ./docs/modules.md ./docs/home/content.md && node ../../scripts/docs-store && npx prettier --write './docs/**/*'" }, name: "@100mslive/hms-video-store", author: "100ms", sideEffects: false, dependencies: { "@100mslive/hms-video": "0.9.13-alpha.0", eventemitter2: "^6.4.7", immer: "^9.0.6", reselect: "4.0.0", zustand: "3.5.7" }, devDependencies: { "ts-node": "^10.4.0", tslib: "^2.2.0" }, description: "This is an addon to the core sdk provided by 100ms. It abstracts away the intricacies of data management and provides a flux based reactive data store where data flows in only one direction.", repository: { type: "git", url: "git+https://github.com/100mslive/hms-video-store.git" }, keywords: ["video", "webrtc", "conferencing", "100ms"], bugs: { url: "https://github.com/100mslive/hms-video-store/issues" }, homepage: "https://github.com/100mslive/hms-video-store#readme" };
7296
+ Is.exports = { version: "0.10.13", license: "MIT", main: "dist/index.cjs.js", module: "dist/index.js", typings: "dist/index.d.ts", files: ["dist", "src"], engines: { node: ">=12" }, exports: { ".": { require: "./dist/index.cjs.js", import: "./dist/index.js", default: "./dist/index.js" } }, scripts: { prestart: "rm -rf dist && yarn types:build", start: 'concurrently "yarn dev" "yarn types"', dev: "node ../../scripts/dev", "build:only": "node ../../scripts/build", build: "yarn build:only && yarn types:build", types: "tsc -w", "types:build": "tsc -p tsconfig.json", format: "prettier --write src/**/*.ts", test: "jest --maxWorkers=1", "test:watch": "jest --watch", "test:coverage": "jest --coverage", lint: "eslint -c ../../.eslintrc .", "lint:fix": "yarn lint --fix", prepare: "yarn build", size: "size-limit", analyze: "size-limit --why", docs: "rm -rf ./docs && typedoc && rm -f ./docs/README.md && mkdir ./docs/home &&mv ./docs/modules.md ./docs/home/content.md && node ../../scripts/docs-store && npx prettier --write './docs/**/*'" }, name: "@100mslive/hms-video-store", author: "100ms", sideEffects: false, dependencies: { "@100mslive/hms-video": "0.9.13", eventemitter2: "^6.4.7", immer: "^9.0.6", reselect: "4.0.0", zustand: "3.5.7" }, devDependencies: { "ts-node": "^10.4.0", tslib: "^2.2.0" }, description: "This is an addon to the core sdk provided by 100ms. It abstracts away the intricacies of data management and provides a flux based reactive data store where data flows in only one direction.", repository: { type: "git", url: "git+https://github.com/100mslive/hms-video-store.git" }, keywords: ["video", "webrtc", "conferencing", "100ms"], bugs: { url: "https://github.com/100mslive/hms-video-store/issues" }, homepage: "https://github.com/100mslive/hms-video-store#readme" };
5788
7297
  });
5789
7298
  var Re = ((n2) => (n2.Disconnected = "Disconnected", n2.Preview = "Preview", n2.Connecting = "Connecting", n2.Connected = "Connected", n2.Reconnecting = "Reconnecting", n2.Disconnecting = "Disconnecting", n2.Failed = "Failed", n2))(Re || {});
5790
7299
  var Vt = ((e) => (e.CHAT = "chat", e))(Vt || {});
@@ -6291,222 +7800,1196 @@ var PeersSorter = class {
6291
7800
  if (this.lruPeers.size < tilesPerPage) {
6292
7801
  this.lruPeers.add(peer.id);
6293
7802
  }
6294
- });
6295
- if (!this.storeUnsubscribe) {
6296
- this.storeUnsubscribe = this.store.subscribe(this.onDominantSpeakerChange, yi);
6297
- }
6298
- this.moveSpeakerToFront(this.speaker);
6299
- });
6300
- __publicField(this, "onUpdate", (cb) => {
6301
- this.listeners.add(cb);
6302
- });
6303
- __publicField(this, "stop", () => {
6304
- var _a;
6305
- this.updateListeners();
6306
- this.listeners.clear();
6307
- (_a = this.storeUnsubscribe) == null ? void 0 : _a.call(this);
6308
- });
6309
- __publicField(this, "moveSpeakerToFront", (speaker) => {
6310
- if (!speaker) {
6311
- this.updateListeners();
6312
- return;
7803
+ });
7804
+ if (!this.storeUnsubscribe) {
7805
+ this.storeUnsubscribe = this.store.subscribe(this.onDominantSpeakerChange, yi);
7806
+ }
7807
+ this.moveSpeakerToFront(this.speaker);
7808
+ });
7809
+ __publicField(this, "onUpdate", (cb) => {
7810
+ this.listeners.add(cb);
7811
+ });
7812
+ __publicField(this, "stop", () => {
7813
+ var _a;
7814
+ this.updateListeners();
7815
+ this.listeners.clear();
7816
+ (_a = this.storeUnsubscribe) == null ? void 0 : _a.call(this);
7817
+ });
7818
+ __publicField(this, "moveSpeakerToFront", (speaker) => {
7819
+ if (!speaker) {
7820
+ this.updateListeners();
7821
+ return;
7822
+ }
7823
+ if (this.lruPeers.has(speaker.id) && this.lruPeers.size <= this.tilesPerPage) {
7824
+ this.updateListeners();
7825
+ return;
7826
+ }
7827
+ this.lruPeers.delete(speaker.id);
7828
+ let lruPeerArray = Array.from(this.lruPeers);
7829
+ while (lruPeerArray.length >= this.tilesPerPage) {
7830
+ lruPeerArray.pop();
7831
+ }
7832
+ this.lruPeers = /* @__PURE__ */ new Set([speaker.id, ...lruPeerArray]);
7833
+ this.updateListeners();
7834
+ });
7835
+ __publicField(this, "onDominantSpeakerChange", (speaker) => {
7836
+ var _a;
7837
+ if (speaker && speaker.id !== ((_a = this == null ? void 0 : this.speaker) == null ? void 0 : _a.id)) {
7838
+ this.speaker = speaker;
7839
+ this.moveSpeakerToFront(speaker);
7840
+ }
7841
+ });
7842
+ __publicField(this, "updateListeners", () => {
7843
+ const orderedPeers = [];
7844
+ this.lruPeers.forEach((key) => {
7845
+ const peer = this.peers.get(key);
7846
+ if (peer) {
7847
+ orderedPeers.push(peer);
7848
+ }
7849
+ });
7850
+ this.peers.forEach((peer) => {
7851
+ if (!this.lruPeers.has(peer.id) && peer) {
7852
+ orderedPeers.push(peer);
7853
+ }
7854
+ });
7855
+ this.listeners.forEach((listener) => listener == null ? void 0 : listener(orderedPeers));
7856
+ });
7857
+ this.store = store;
7858
+ this.peers = /* @__PURE__ */ new Map();
7859
+ this.lruPeers = /* @__PURE__ */ new Set();
7860
+ this.speaker = void 0;
7861
+ }
7862
+ };
7863
+ var PeersSorter_default = PeersSorter;
7864
+
7865
+ // src/Prebuilt/components/EqualProminence.jsx
7866
+ var aspectRatioConfig = { default: [1 / 1, 4 / 3, 16 / 9], mobile: [1 / 1, 3 / 4, 9 / 16] };
7867
+ function EqualProminence() {
7868
+ var _a, _b, _c, _d, _e, _f, _g;
7869
+ const layout = useRoomLayout();
7870
+ const { enable_local_tile_inset: isInsetEnabled = true } = (
7871
+ //@ts-ignore
7872
+ ((_e = (_d = (_c = (_b = (_a = layout == null ? void 0 : layout.screens) == null ? void 0 : _a.conferencing) == null ? void 0 : _b.default) == null ? void 0 : _c.elements) == null ? void 0 : _d.video_tile_layout) == null ? void 0 : _e.grid) || {}
7873
+ );
7874
+ const peers = useHMSStore12(isInsetEnabled ? selectRemotePeers2 : selectPeers2);
7875
+ const [sortedPeers, setSortedPeers] = useState12(peers);
7876
+ const localPeer = useHMSStore12(selectLocalPeer3);
7877
+ const vanillaStore = useHMSVanillaStore2();
7878
+ const isMobile = useMedia4(config.media.md);
7879
+ let maxTileCount = useUISettings(UI_SETTINGS.maxTileCount);
7880
+ maxTileCount = isMobile ? Math.min(maxTileCount, 6) : maxTileCount;
7881
+ const [pagesWithTiles, setPagesWithTiles] = useState12([]);
7882
+ const [page, setPage] = useState12(0);
7883
+ const [ref, { width, height }] = useMeasure();
7884
+ const peersSorter = useMemo2(() => new PeersSorter_default(vanillaStore), [vanillaStore]);
7885
+ const pageSize = (_f = pagesWithTiles[0]) == null ? void 0 : _f.length;
7886
+ useEffect5(() => {
7887
+ if (page >= pagesWithTiles.length) {
7888
+ setPage(0);
7889
+ }
7890
+ }, [pagesWithTiles.length, page]);
7891
+ useEffect5(() => {
7892
+ if (width === 0 || height === 0) {
7893
+ return;
7894
+ }
7895
+ const tracksMap = vanillaStore.getState(selectTracksMap3);
7896
+ const peersWithTiles = getPeersWithTiles(
7897
+ sortedPeers.length === 0 ? [localPeer] : sortedPeers,
7898
+ tracksMap,
7899
+ () => false
7900
+ );
7901
+ const noOfPages = Math.ceil(peersWithTiles.length / maxTileCount);
7902
+ let remaining = peersWithTiles.length;
7903
+ let sliceStart = 0;
7904
+ let pagesList = [];
7905
+ for (let i = 0; i < noOfPages; i++) {
7906
+ const count = Math.min(remaining, maxTileCount);
7907
+ pagesList.push(peersWithTiles.slice(sliceStart, sliceStart + count));
7908
+ remaining = remaining - count;
7909
+ sliceStart += count;
7910
+ }
7911
+ for (const page2 of pagesList) {
7912
+ const noOfTilesInPage = page2.length;
7913
+ let maxCols = noOfTilesInPage > 2 && noOfTilesInPage < 9 ? Math.ceil(noOfTilesInPage / 2) : Math.ceil(Math.sqrt(noOfTilesInPage));
7914
+ if (isMobile) {
7915
+ maxCols = noOfTilesInPage < 4 ? 1 : Math.min(maxCols, 2);
7916
+ }
7917
+ let maxRows = Math.ceil(noOfTilesInPage / maxCols);
7918
+ let index = 0;
7919
+ const matrix = new Array(maxRows).fill(null).map((_3, i) => {
7920
+ const numCols = Math.min(maxCols, noOfTilesInPage - i * maxCols);
7921
+ let rowElements = [];
7922
+ for (let j2 = 0; j2 < numCols; j2++) {
7923
+ if (index < page2.length) {
7924
+ rowElements.push(page2[index++]);
7925
+ }
7926
+ }
7927
+ return rowElements;
7928
+ });
7929
+ const maxHeight = height - (maxRows - 1) * 8;
7930
+ const maxRowHeight = maxHeight / matrix.length;
7931
+ const aspectRatios = isMobile && (noOfTilesInPage === 1 || noOfTilesInPage > 3) ? aspectRatioConfig.mobile : aspectRatioConfig.default;
7932
+ for (const row of matrix) {
7933
+ let tileWidth = (width - (row.length - 1) * 8) / row.length;
7934
+ let tileHeight = 0;
7935
+ const calcHeights = aspectRatios.map((aR) => tileWidth / aR);
7936
+ for (const h of calcHeights) {
7937
+ if (h < maxRowHeight) {
7938
+ if (tileHeight < h) {
7939
+ tileHeight = h;
7940
+ }
7941
+ }
7942
+ }
7943
+ if (tileHeight === 0) {
7944
+ tileHeight = maxRowHeight;
7945
+ const calcWidths = aspectRatios.map((aR) => tileHeight * aR);
7946
+ tileWidth = 0;
7947
+ for (const w3 of calcWidths) {
7948
+ if (w3 < width) {
7949
+ if (tileWidth < w3) {
7950
+ tileWidth = w3;
7951
+ }
7952
+ }
7953
+ }
7954
+ }
7955
+ for (let i = 0; i < row.length; i++) {
7956
+ row[i].width = tileWidth;
7957
+ row[i].height = tileHeight;
7958
+ }
7959
+ }
7960
+ }
7961
+ setPagesWithTiles(pagesList);
7962
+ }, [width, height, maxTileCount, vanillaStore, sortedPeers, page, isMobile, localPeer]);
7963
+ useEffect5(() => {
7964
+ if (page !== 0) {
7965
+ return;
7966
+ }
7967
+ peersSorter.setPeersAndTilesPerPage({
7968
+ peers,
7969
+ tilesPerPage: pageSize || maxTileCount
7970
+ });
7971
+ peersSorter.onUpdate(setSortedPeers);
7972
+ }, [page, peersSorter, peers, pageSize, maxTileCount]);
7973
+ return /* @__PURE__ */ React25.createElement(Flex, { direction: "column", css: { flex: "1 1 0", h: "100%", position: "relative", minWidth: 0 } }, /* @__PURE__ */ React25.createElement(
7974
+ Box,
7975
+ {
7976
+ ref,
7977
+ css: {
7978
+ flex: "1 1 0",
7979
+ gap: "$4",
7980
+ display: "flex",
7981
+ placeContent: "center",
7982
+ alignItems: "center",
7983
+ justifyContent: "center",
7984
+ flexFlow: "row wrap",
7985
+ minHeight: 0
7986
+ }
7987
+ },
7988
+ (_g = pagesWithTiles[page]) == null ? void 0 : _g.map((tile) => {
7989
+ var _a2, _b2, _c2, _d2;
7990
+ return /* @__PURE__ */ React25.createElement(
7991
+ VideoTile_default,
7992
+ {
7993
+ key: ((_a2 = tile.track) == null ? void 0 : _a2.id) || ((_b2 = tile.peer) == null ? void 0 : _b2.id),
7994
+ width: tile.width,
7995
+ height: tile.height,
7996
+ peerId: (_c2 = tile.peer) == null ? void 0 : _c2.id,
7997
+ trackId: (_d2 = tile.track) == null ? void 0 : _d2.id,
7998
+ rootCSS: { padding: 0 },
7999
+ objectFit: "contain"
8000
+ }
8001
+ );
8002
+ })
8003
+ ), pagesWithTiles.length > 1 && /* @__PURE__ */ React25.createElement(Pagination, { page, onPageChange: setPage, numPages: pagesWithTiles.length }), isInsetEnabled && sortedPeers.length > 0 && /* @__PURE__ */ React25.createElement(InsetTile, null));
8004
+ }
8005
+
8006
+ // src/Prebuilt/layouts/EmbedView.jsx
8007
+ init_define_process_env();
8008
+ import React30, { useCallback as useCallback8, useEffect as useEffect6, useMemo as useMemo4, useRef as useRef6, useState as useState13 } from "react";
8009
+ import { useMedia as useMedia6 } from "react-use";
8010
+ import {
8011
+ selectLocalPeerID as selectLocalPeerID4,
8012
+ selectLocalPeerRoleName as selectLocalPeerRoleName5,
8013
+ selectPeers as selectPeers4,
8014
+ selectPeerScreenSharing as selectPeerScreenSharing2,
8015
+ throwErrorHandler,
8016
+ useHMSStore as useHMSStore17,
8017
+ useScreenShare as useScreenShare3
8018
+ } from "@100mslive/react-sdk";
8019
+
8020
+ // src/Prebuilt/layouts/screenShareView.jsx
8021
+ init_define_process_env();
8022
+ import React29, { Fragment as Fragment5, useCallback as useCallback7, useMemo as useMemo3 } from "react";
8023
+ import { useMedia as useMedia5 } from "react-use";
8024
+ import {
8025
+ selectLocalPeerID as selectLocalPeerID3,
8026
+ selectLocalPeerRoleName as selectLocalPeerRoleName4,
8027
+ selectPeers as selectPeers3,
8028
+ selectPeerScreenSharing,
8029
+ selectPeerSharingVideoPlaylist as selectPeerSharingVideoPlaylist2,
8030
+ selectScreenShareByPeerID,
8031
+ useHMSStore as useHMSStore16
8032
+ } from "@100mslive/react-sdk";
8033
+
8034
+ // src/Prebuilt/components/Playlist/VideoPlayer.jsx
8035
+ init_define_process_env();
8036
+ import React27, { useRef as useRef5 } from "react";
8037
+ import { useFullscreen as useFullscreen2, useToggle } from "react-use";
8038
+ import screenfull2 from "screenfull";
8039
+ import {
8040
+ selectVideoPlaylist as selectVideoPlaylist3,
8041
+ selectVideoPlaylistAudioTrackByPeerID as selectVideoPlaylistAudioTrackByPeerID2,
8042
+ selectVideoPlaylistVideoTrackByPeerID,
8043
+ useHMSActions as useHMSActions10,
8044
+ useHMSStore as useHMSStore15
8045
+ } from "@100mslive/react-sdk";
8046
+ import { CrossIcon as CrossIcon2, ExpandIcon as ExpandIcon3, ShrinkIcon } from "@100mslive/react-icons";
8047
+
8048
+ // src/Prebuilt/components/Playlist/PlaylistControls.jsx
8049
+ init_define_process_env();
8050
+ import React26 from "react";
8051
+ import {
8052
+ HMSPlaylistType as HMSPlaylistType2,
8053
+ selectAudioPlaylist as selectAudioPlaylist2,
8054
+ selectAudioTrackVolume,
8055
+ selectPeerSharingVideoPlaylist,
8056
+ selectVideoPlaylist as selectVideoPlaylist2,
8057
+ selectVideoPlaylistAudioTrackByPeerID,
8058
+ useHMSActions as useHMSActions9,
8059
+ useHMSStore as useHMSStore14
8060
+ } from "@100mslive/react-sdk";
8061
+ import { NextIcon, PauseIcon, PlayIcon, PlaylistIcon, PrevIcon, SpeakerIcon } from "@100mslive/react-icons";
8062
+
8063
+ // src/Prebuilt/components/hooks/usePlaylist.js
8064
+ init_define_process_env();
8065
+ import {
8066
+ HMSPlaylistType,
8067
+ selectAudioPlaylist,
8068
+ selectVideoPlaylist,
8069
+ useHMSActions as useHMSActions8,
8070
+ useHMSStore as useHMSStore13
8071
+ } from "@100mslive/react-sdk";
8072
+ var usePlaylist = (type) => {
8073
+ const isAudioPlaylist = type === HMSPlaylistType.audio;
8074
+ const selector = isAudioPlaylist ? selectAudioPlaylist : selectVideoPlaylist;
8075
+ const active = useHMSStore13(selector.selectedItem);
8076
+ const selection = useHMSStore13(selector.selection);
8077
+ const playlist = useHMSStore13(selector.list);
8078
+ const hmsActions = useHMSActions8();
8079
+ const playlistAction = isAudioPlaylist ? hmsActions.audioPlaylist : hmsActions.videoPlaylist;
8080
+ return {
8081
+ active,
8082
+ hasNext: selection.hasNext,
8083
+ hasPrevious: selection.hasPrevious,
8084
+ actions: playlistAction,
8085
+ list: playlist
8086
+ };
8087
+ };
8088
+
8089
+ // src/Prebuilt/components/Playlist/PlaylistControls.jsx
8090
+ var Progress = ({ type, duration }) => {
8091
+ const selectPlaylist = type === HMSPlaylistType2.audio ? selectAudioPlaylist2 : selectVideoPlaylist2;
8092
+ const progress = useHMSStore14(selectPlaylist.progress);
8093
+ const hmsActions = useHMSActions9();
8094
+ const playlistAction = type === HMSPlaylistType2.audio ? hmsActions.audioPlaylist : hmsActions.videoPlaylist;
8095
+ if (!duration) {
8096
+ return null;
8097
+ }
8098
+ return /* @__PURE__ */ React26.createElement(
8099
+ Slider,
8100
+ {
8101
+ step: 1,
8102
+ value: [progress],
8103
+ onValueChange: (e) => {
8104
+ playlistAction.seekTo(e[0] * 0.01 * duration);
8105
+ }
8106
+ }
8107
+ );
8108
+ };
8109
+ var Controls = ({ type, css = {} }) => {
8110
+ const { active, hasNext, hasPrevious, actions } = usePlaylist(type);
8111
+ if (!active) {
8112
+ return null;
8113
+ }
8114
+ return /* @__PURE__ */ React26.createElement(Flex, { justify: "center", css }, /* @__PURE__ */ React26.createElement(
8115
+ IconButton,
8116
+ {
8117
+ disabled: !hasPrevious,
8118
+ onClick: () => {
8119
+ actions.playPrevious();
8120
+ },
8121
+ "data-testid": "playlist_prev_btn"
8122
+ },
8123
+ /* @__PURE__ */ React26.createElement(PrevIcon, null)
8124
+ ), /* @__PURE__ */ React26.createElement(
8125
+ IconButton,
8126
+ {
8127
+ onClick: () => {
8128
+ active.playing ? actions.pause() : actions.play(active.id);
8129
+ },
8130
+ "data-testid": "playlist_play_pause_btn"
8131
+ },
8132
+ active.playing ? /* @__PURE__ */ React26.createElement(PauseIcon, { width: 32, height: 32 }) : /* @__PURE__ */ React26.createElement(PlayIcon, { width: 32, height: 32 })
8133
+ ), /* @__PURE__ */ React26.createElement(
8134
+ IconButton,
8135
+ {
8136
+ disabled: !hasNext,
8137
+ onClick: () => {
8138
+ actions.playNext();
8139
+ },
8140
+ "data-testid": "playlist_next_btn"
8141
+ },
8142
+ /* @__PURE__ */ React26.createElement(NextIcon, null)
8143
+ ));
8144
+ };
8145
+ var VolumeControl = () => {
8146
+ const hmsActions = useHMSActions9();
8147
+ const volume = useHMSStore14(selectVideoPlaylist2.volume);
8148
+ const active = useHMSStore14(selectVideoPlaylist2.selectedItem);
8149
+ const peerSharingPlaylist = useHMSStore14(selectPeerSharingVideoPlaylist);
8150
+ const audioTrack = useHMSStore14(selectVideoPlaylistAudioTrackByPeerID(peerSharingPlaylist == null ? void 0 : peerSharingPlaylist.id));
8151
+ const audioTrackVolume = useHMSStore14(selectAudioTrackVolume(audioTrack == null ? void 0 : audioTrack.id));
8152
+ const sliderVolume = active ? volume : audioTrackVolume;
8153
+ return /* @__PURE__ */ React26.createElement(Flex, { align: "center", css: { color: "$on_primary_high" } }, /* @__PURE__ */ React26.createElement(SpeakerIcon, null), /* @__PURE__ */ React26.createElement(
8154
+ Slider,
8155
+ {
8156
+ css: { mx: "$4", w: "$20" },
8157
+ min: 0,
8158
+ max: 100,
8159
+ step: 1,
8160
+ value: [Math.floor(sliderVolume != null ? sliderVolume : 100)],
8161
+ onValueChange: (e) => {
8162
+ const value = e[0];
8163
+ if (active) {
8164
+ hmsActions.videoPlaylist.setVolume(value);
8165
+ } else if (audioTrack) {
8166
+ hmsActions.setVolume(value, audioTrack.id);
8167
+ }
8168
+ },
8169
+ thumbStyles: { w: "$6", h: "$6" }
8170
+ }
8171
+ ));
8172
+ };
8173
+ var VideoPlaylistControls = ({ children }) => {
8174
+ const { active } = usePlaylist(HMSPlaylistType2.video);
8175
+ return /* @__PURE__ */ React26.createElement(
8176
+ Box,
8177
+ {
8178
+ css: {
8179
+ p: "$8",
8180
+ mt: "-$24",
8181
+ w: "100%",
8182
+ zIndex: 1,
8183
+ "@lg": {
8184
+ mt: 0,
8185
+ p: "$6"
8186
+ }
8187
+ }
8188
+ },
8189
+ active && /* @__PURE__ */ React26.createElement(Progress, { type: HMSPlaylistType2.video, duration: active.duration }),
8190
+ /* @__PURE__ */ React26.createElement(Flex, { align: "center", justify: "between" }, /* @__PURE__ */ React26.createElement(VolumeControl, null), active && /* @__PURE__ */ React26.createElement(Controls, { css: { flex: "1 1 0" } }), children)
8191
+ );
8192
+ };
8193
+
8194
+ // src/Prebuilt/components/Playlist/VideoPlayer.jsx
8195
+ var VideoPlayer = React27.memo(({ peerId }) => {
8196
+ const videoTrack = useHMSStore15(selectVideoPlaylistVideoTrackByPeerID(peerId));
8197
+ const audioTrack = useHMSStore15(selectVideoPlaylistAudioTrackByPeerID2(peerId));
8198
+ const active = useHMSStore15(selectVideoPlaylist3.selectedItem);
8199
+ const isAudioOnly = useUISettings(UI_SETTINGS.isAudioOnly);
8200
+ const hmsActions = useHMSActions10();
8201
+ const ref = useRef5(null);
8202
+ const [show, toggle] = useToggle(false);
8203
+ const isFullscreen = useFullscreen2(ref, show, {
8204
+ onClose: () => toggle(false)
8205
+ });
8206
+ const showStatsOnTiles = useUISettings(UI_SETTINGS.showStatsOnTiles);
8207
+ return /* @__PURE__ */ React27.createElement(Flex, { direction: "column", justify: "center", css: { w: "100%", h: "100%" }, ref }, active && /* @__PURE__ */ React27.createElement(
8208
+ Flex,
8209
+ {
8210
+ justify: "between",
8211
+ align: "center",
8212
+ css: {
8213
+ bg: "$surface_default",
8214
+ p: "$2 $2 $2 $6",
8215
+ borderTopLeftRadius: "$1",
8216
+ borderTopRightRadius: "$1"
8217
+ }
8218
+ },
8219
+ /* @__PURE__ */ React27.createElement(Text, { css: { color: "$on_primary_high" } }, active.name),
8220
+ /* @__PURE__ */ React27.createElement(
8221
+ IconButton,
8222
+ {
8223
+ css: {
8224
+ color: "$on_primary_high"
8225
+ },
8226
+ onClick: () => {
8227
+ hmsActions.videoPlaylist.stop();
8228
+ },
8229
+ "data-testid": "videoplaylist_cross_btn"
8230
+ },
8231
+ /* @__PURE__ */ React27.createElement(CrossIcon2, null)
8232
+ )
8233
+ ), showStatsOnTiles ? /* @__PURE__ */ React27.createElement(Box, { css: { "& > div": { top: "$14", left: "$8" } } }, /* @__PURE__ */ React27.createElement(
8234
+ VideoTileStats,
8235
+ {
8236
+ audioTrackID: audioTrack == null ? void 0 : audioTrack.id,
8237
+ videoTrackID: videoTrack == null ? void 0 : videoTrack.id,
8238
+ peerID: peerId,
8239
+ isLocal: active
8240
+ }
8241
+ )) : null, /* @__PURE__ */ React27.createElement(
8242
+ Video,
8243
+ {
8244
+ trackId: videoTrack == null ? void 0 : videoTrack.id,
8245
+ attach: !isAudioOnly,
8246
+ css: {
8247
+ objectFit: "contain",
8248
+ h: "auto",
8249
+ r: "$1",
8250
+ borderTopLeftRadius: 0,
8251
+ borderTopRightRadius: 0
8252
+ }
8253
+ }
8254
+ ), /* @__PURE__ */ React27.createElement(VideoPlaylistControls, null, screenfull2.enabled && /* @__PURE__ */ React27.createElement(
8255
+ IconButton,
8256
+ {
8257
+ onClick: () => toggle(),
8258
+ css: {
8259
+ color: "$on_primary_high",
8260
+ height: "max-content",
8261
+ alignSelf: "center",
8262
+ cursor: "pointer"
8263
+ }
8264
+ },
8265
+ isFullscreen ? /* @__PURE__ */ React27.createElement(ShrinkIcon, null) : /* @__PURE__ */ React27.createElement(ExpandIcon3, null)
8266
+ )));
8267
+ });
8268
+
8269
+ // src/Prebuilt/components/ScreenshareDisplay.jsx
8270
+ init_define_process_env();
8271
+ import React28 from "react";
8272
+ import { useHMSActions as useHMSActions11 } from "@100mslive/react-sdk";
8273
+ import { CrossIcon as CrossIcon3, ShareScreenIcon as ShareScreenIcon2 } from "@100mslive/react-icons";
8274
+ var ScreenshareDisplay = () => {
8275
+ const hmsActions = useHMSActions11();
8276
+ return /* @__PURE__ */ React28.createElement(
8277
+ Flex,
8278
+ {
8279
+ direction: "column",
8280
+ align: "center",
8281
+ justify: "center",
8282
+ css: {
8283
+ position: "relative",
8284
+ overflow: "hidden",
8285
+ w: "37.5rem",
8286
+ maxWidth: "80%",
8287
+ h: "100%",
8288
+ r: "$3",
8289
+ m: "0 auto",
8290
+ color: "$on_surface_high",
8291
+ bg: "$background_default",
8292
+ textAlign: "center"
8293
+ }
8294
+ },
8295
+ /* @__PURE__ */ React28.createElement(ShareScreenIcon2, { width: 48, height: 48 }),
8296
+ /* @__PURE__ */ React28.createElement(Text, { variant: "h5", css: { m: "$8 0", color: "$on_surface_high" } }, "You are sharing your screen"),
8297
+ /* @__PURE__ */ React28.createElement(
8298
+ Button,
8299
+ {
8300
+ variant: "danger",
8301
+ onClick: () => __async(void 0, null, function* () {
8302
+ yield hmsActions.setScreenShareEnabled(false);
8303
+ }),
8304
+ "data-testid": "stop_screen_share_btn"
8305
+ },
8306
+ /* @__PURE__ */ React28.createElement(CrossIcon3, { width: 18, height: 18 }),
8307
+ "\xA0 Stop screen share"
8308
+ )
8309
+ );
8310
+ };
8311
+
8312
+ // src/Prebuilt/layouts/screenShareView.jsx
8313
+ var ScreenShareView = () => {
8314
+ var _a;
8315
+ const mediaQueryLg = config.media.xl;
8316
+ const showSidebarInBottom = useMedia5(mediaQueryLg);
8317
+ const peers = useHMSStore16(selectPeers3);
8318
+ const localPeerID = useHMSStore16(selectLocalPeerID3);
8319
+ const localPeerRole = useHMSStore16(selectLocalPeerRoleName4);
8320
+ const peerPresenting = useHMSStore16(selectPeerScreenSharing);
8321
+ const peerSharingPlaylist = useHMSStore16(selectPeerSharingVideoPlaylist2);
8322
+ const isPresenterFromMyRole = ((_a = peerPresenting == null ? void 0 : peerPresenting.roleName) == null ? void 0 : _a.toLowerCase()) === (localPeerRole == null ? void 0 : localPeerRole.toLowerCase());
8323
+ const amIPresenting = localPeerID === (peerPresenting == null ? void 0 : peerPresenting.id);
8324
+ const showPresenterInSmallTile = showSidebarInBottom || amIPresenting || isPresenterFromMyRole;
8325
+ const smallTilePeers = useMemo3(() => {
8326
+ const smallTilePeers2 = peers.filter((peer) => peer.id !== (peerPresenting == null ? void 0 : peerPresenting.id));
8327
+ if (showPresenterInSmallTile && peerPresenting) {
8328
+ smallTilePeers2.unshift(peerPresenting);
8329
+ }
8330
+ return smallTilePeers2;
8331
+ }, [peers, peerPresenting, showPresenterInSmallTile]);
8332
+ return /* @__PURE__ */ React29.createElement(
8333
+ Flex,
8334
+ {
8335
+ css: {
8336
+ size: "100%"
8337
+ },
8338
+ direction: showSidebarInBottom ? "column" : "row"
8339
+ },
8340
+ /* @__PURE__ */ React29.createElement(
8341
+ ScreenShareComponent,
8342
+ {
8343
+ amIPresenting,
8344
+ peerPresenting,
8345
+ peerSharingPlaylist
8346
+ }
8347
+ ),
8348
+ /* @__PURE__ */ React29.createElement(
8349
+ Flex,
8350
+ {
8351
+ direction: { "@initial": "column", "@lg": "row" },
8352
+ css: {
8353
+ overflow: "hidden",
8354
+ p: "$4 $8",
8355
+ flex: "0 0 20%",
8356
+ "@xl": {
8357
+ flex: "1 1 0"
8358
+ }
8359
+ }
8360
+ },
8361
+ /* @__PURE__ */ React29.createElement(
8362
+ SidePane,
8363
+ {
8364
+ showSidebarInBottom,
8365
+ peerScreenSharing: peerPresenting,
8366
+ isPresenterInSmallTiles: showPresenterInSmallTile,
8367
+ smallTilePeers,
8368
+ totalPeers: peers.length
8369
+ }
8370
+ )
8371
+ )
8372
+ );
8373
+ };
8374
+ var SidePane = ({
8375
+ isPresenterInSmallTiles,
8376
+ peerScreenSharing,
8377
+ // the peer who is screensharing
8378
+ smallTilePeers,
8379
+ showSidebarInBottom
8380
+ }) => {
8381
+ const shouldShowScreenFn = useCallback7(
8382
+ (peer) => peerScreenSharing && peer.id !== peerScreenSharing.id,
8383
+ [peerScreenSharing]
8384
+ );
8385
+ return /* @__PURE__ */ React29.createElement(Fragment5, null, !isPresenterInSmallTiles && /* @__PURE__ */ React29.createElement(LargeTilePeerView, { peerScreenSharing }), /* @__PURE__ */ React29.createElement(
8386
+ SmallTilePeersView,
8387
+ {
8388
+ showSidebarInBottom,
8389
+ smallTilePeers,
8390
+ shouldShowScreenFn
8391
+ }
8392
+ ));
8393
+ };
8394
+ var ScreenShareComponent = ({ amIPresenting, peerPresenting, peerSharingPlaylist }) => {
8395
+ const screenshareTrack = useHMSStore16(selectScreenShareByPeerID(peerPresenting == null ? void 0 : peerPresenting.id));
8396
+ if (peerSharingPlaylist) {
8397
+ return /* @__PURE__ */ React29.createElement(
8398
+ Box,
8399
+ {
8400
+ css: {
8401
+ flex: "3 1 0",
8402
+ "@xl": {
8403
+ flex: "2 1 0",
8404
+ display: "flex",
8405
+ alignItems: "center"
8406
+ }
8407
+ }
8408
+ },
8409
+ /* @__PURE__ */ React29.createElement(VideoPlayer, { peerId: peerSharingPlaylist.id })
8410
+ );
8411
+ }
8412
+ return /* @__PURE__ */ React29.createElement(
8413
+ Box,
8414
+ {
8415
+ css: {
8416
+ flex: "3 1 0",
8417
+ "@xl": { ml: "$4", maxHeight: "80%", minHeight: 0 }
6313
8418
  }
6314
- if (this.lruPeers.has(speaker.id) && this.lruPeers.size <= this.tilesPerPage) {
6315
- this.updateListeners();
6316
- return;
8419
+ },
8420
+ peerPresenting && (amIPresenting && !["browser", "window", "application"].includes(screenshareTrack == null ? void 0 : screenshareTrack.displaySurface) ? /* @__PURE__ */ React29.createElement(Box, { css: { objectFit: "contain", h: "100%" } }, /* @__PURE__ */ React29.createElement(ScreenshareDisplay, null)) : /* @__PURE__ */ React29.createElement(ScreenshareTile_default, { peerId: peerPresenting == null ? void 0 : peerPresenting.id }))
8421
+ );
8422
+ };
8423
+ var SmallTilePeersView = ({ smallTilePeers, shouldShowScreenFn, showSidebarInBottom }) => {
8424
+ return /* @__PURE__ */ React29.createElement(
8425
+ Flex,
8426
+ {
8427
+ css: {
8428
+ flex: "2 1 0"
6317
8429
  }
6318
- this.lruPeers.delete(speaker.id);
6319
- let lruPeerArray = Array.from(this.lruPeers);
6320
- while (lruPeerArray.length >= this.tilesPerPage) {
6321
- lruPeerArray.pop();
8430
+ },
8431
+ smallTilePeers && smallTilePeers.length > 0 && /* @__PURE__ */ React29.createElement(
8432
+ VideoList_default,
8433
+ {
8434
+ peers: smallTilePeers,
8435
+ maxColCount: showSidebarInBottom ? void 0 : 1,
8436
+ maxRowCount: showSidebarInBottom ? 1 : void 0,
8437
+ includeScreenShareForPeer: shouldShowScreenFn
6322
8438
  }
6323
- this.lruPeers = /* @__PURE__ */ new Set([speaker.id, ...lruPeerArray]);
6324
- this.updateListeners();
6325
- });
6326
- __publicField(this, "onDominantSpeakerChange", (speaker) => {
6327
- var _a;
6328
- if (speaker && speaker.id !== ((_a = this == null ? void 0 : this.speaker) == null ? void 0 : _a.id)) {
6329
- this.speaker = speaker;
6330
- this.moveSpeakerToFront(speaker);
8439
+ )
8440
+ );
8441
+ };
8442
+ var LargeTilePeerView = ({ peerScreenSharing, showStatsOnTiles }) => {
8443
+ return peerScreenSharing ? /* @__PURE__ */ React29.createElement(
8444
+ Box,
8445
+ {
8446
+ css: {
8447
+ flex: "1 1 0",
8448
+ minHeight: "25%",
8449
+ py: "$4",
8450
+ "@lg": {
8451
+ mr: "$4",
8452
+ minHeight: "unset",
8453
+ py: 0
8454
+ },
8455
+ "@sm": {
8456
+ height: "100%",
8457
+ maxHeight: "75%",
8458
+ alignSelf: "center"
8459
+ }
6331
8460
  }
6332
- });
6333
- __publicField(this, "updateListeners", () => {
6334
- const orderedPeers = [];
6335
- this.lruPeers.forEach((key) => {
6336
- const peer = this.peers.get(key);
6337
- if (peer) {
6338
- orderedPeers.push(peer);
8461
+ },
8462
+ /* @__PURE__ */ React29.createElement(VideoTile_default, { showStatsOnTiles, width: "100%", height: "100%", peerId: peerScreenSharing.id })
8463
+ ) : null;
8464
+ };
8465
+ var screenShareView_default = ScreenShareView;
8466
+
8467
+ // src/Prebuilt/layouts/EmbedView.jsx
8468
+ var EmbedView = () => {
8469
+ return /* @__PURE__ */ React30.createElement(EmbebScreenShareView, null, /* @__PURE__ */ React30.createElement(EmbedComponent, null));
8470
+ };
8471
+ var EmbebScreenShareView = ({ children }) => {
8472
+ var _a;
8473
+ const peers = useHMSStore17(selectPeers4);
8474
+ const mediaQueryLg = config.media.xl;
8475
+ const showSidebarInBottom = useMedia6(mediaQueryLg);
8476
+ const localPeerID = useHMSStore17(selectLocalPeerID4);
8477
+ const localPeerRole = useHMSStore17(selectLocalPeerRoleName5);
8478
+ const peerPresenting = useHMSStore17(selectPeerScreenSharing2);
8479
+ const isPresenterFromMyRole = ((_a = peerPresenting == null ? void 0 : peerPresenting.roleName) == null ? void 0 : _a.toLowerCase()) === (localPeerRole == null ? void 0 : localPeerRole.toLowerCase());
8480
+ const amIPresenting = localPeerID === (peerPresenting == null ? void 0 : peerPresenting.id);
8481
+ const showPresenterInSmallTile = showSidebarInBottom || amIPresenting || isPresenterFromMyRole;
8482
+ const smallTilePeers = useMemo4(() => {
8483
+ const smallTilePeers2 = peers.filter((peer) => peer.id !== (peerPresenting == null ? void 0 : peerPresenting.id));
8484
+ if (showPresenterInSmallTile && peerPresenting) {
8485
+ smallTilePeers2.unshift(peerPresenting);
8486
+ }
8487
+ return smallTilePeers2;
8488
+ }, [peers, peerPresenting, showPresenterInSmallTile]);
8489
+ return /* @__PURE__ */ React30.createElement(Flex, { css: { size: "100%" }, direction: showSidebarInBottom ? "column" : "row" }, children, /* @__PURE__ */ React30.createElement(
8490
+ Flex,
8491
+ {
8492
+ direction: { "@initial": "column", "@lg": "row" },
8493
+ css: {
8494
+ overflow: "hidden",
8495
+ p: "$4 $8",
8496
+ flex: "0 0 20%",
8497
+ "@xl": {
8498
+ flex: "1 1 0"
6339
8499
  }
8500
+ }
8501
+ },
8502
+ /* @__PURE__ */ React30.createElement(
8503
+ SidePane,
8504
+ {
8505
+ showSidebarInBottom,
8506
+ peerScreenSharing: peerPresenting,
8507
+ isPresenterInSmallTiles: showPresenterInSmallTile,
8508
+ smallTilePeers,
8509
+ totalPeers: peers.length
8510
+ }
8511
+ )
8512
+ ));
8513
+ };
8514
+ var EmbedComponent = () => {
8515
+ const { amIScreenSharing, toggleScreenShare } = useScreenShare3(throwErrorHandler);
8516
+ const [embedConfig, setEmbedConfig] = useSetAppDataByKey(APP_DATA.embedConfig);
8517
+ const [wasScreenShared, setWasScreenShared] = useState13(false);
8518
+ const screenShareAttemptInProgress = useRef6(false);
8519
+ const src = embedConfig.url;
8520
+ const iframeRef = useRef6();
8521
+ const resetEmbedConfig = useCallback8(() => {
8522
+ if (src) {
8523
+ setEmbedConfig({ url: "" });
8524
+ }
8525
+ }, [src, setEmbedConfig]);
8526
+ useEffect6(() => {
8527
+ if (embedConfig.shareScreen && !amIScreenSharing && !wasScreenShared && !screenShareAttemptInProgress.current) {
8528
+ screenShareAttemptInProgress.current = true;
8529
+ toggleScreenShare({
8530
+ forceCurrentTab: true,
8531
+ cropElement: iframeRef.current
8532
+ }).then(() => {
8533
+ setWasScreenShared(true);
8534
+ }).catch(resetEmbedConfig).finally(() => {
8535
+ screenShareAttemptInProgress.current = false;
6340
8536
  });
6341
- this.peers.forEach((peer) => {
6342
- if (!this.lruPeers.has(peer.id) && peer) {
6343
- orderedPeers.push(peer);
8537
+ }
8538
+ }, []);
8539
+ useEffect6(() => {
8540
+ if (wasScreenShared && !amIScreenSharing) {
8541
+ resetEmbedConfig();
8542
+ }
8543
+ return () => {
8544
+ if (wasScreenShared && amIScreenSharing) {
8545
+ resetEmbedConfig();
8546
+ toggleScreenShare();
8547
+ }
8548
+ };
8549
+ }, [wasScreenShared, amIScreenSharing, resetEmbedConfig, toggleScreenShare]);
8550
+ return /* @__PURE__ */ React30.createElement(
8551
+ Box,
8552
+ {
8553
+ ref: iframeRef,
8554
+ css: {
8555
+ flex: "3 1 0",
8556
+ "@lg": {
8557
+ flex: "2 1 0",
8558
+ display: "flex",
8559
+ alignItems: "center"
6344
8560
  }
6345
- });
6346
- this.listeners.forEach((listener) => listener == null ? void 0 : listener(orderedPeers));
6347
- });
6348
- this.store = store;
6349
- this.peers = /* @__PURE__ */ new Map();
6350
- this.lruPeers = /* @__PURE__ */ new Set();
6351
- this.speaker = void 0;
6352
- }
8561
+ }
8562
+ },
8563
+ /* @__PURE__ */ React30.createElement(
8564
+ "iframe",
8565
+ {
8566
+ src,
8567
+ title: src,
8568
+ style: { width: "100%", height: "100%", border: 0 },
8569
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture fullscreen",
8570
+ referrerPolicy: "no-referrer"
8571
+ }
8572
+ )
8573
+ );
6353
8574
  };
6354
- var PeersSorter_default = PeersSorter;
6355
8575
 
6356
- // src/Prebuilt/common/useSortedPeers.js
6357
- function useSortedPeers({ peers, maxTileCount = 9 }) {
6358
- const [sortedPeers, setSortedPeers] = useState4([]);
6359
- const store = useHMSVanillaStore();
6360
- const activeSpeakerSorting = useActiveSpeakerSorting();
6361
- const peerSortedRef = useRef2(new PeersSorter_default(store));
6362
- peerSortedRef.current.onUpdate(setSortedPeers);
6363
- useEffect(() => {
6364
- const peersSorter = peerSortedRef.current;
6365
- if ((peers == null ? void 0 : peers.length) > 0 && maxTileCount && activeSpeakerSorting) {
6366
- peersSorter.setPeersAndTilesPerPage({
6367
- peers,
6368
- tilesPerPage: maxTileCount
6369
- });
6370
- } else if (!activeSpeakerSorting) {
6371
- peersSorter.stop();
8576
+ // src/Prebuilt/layouts/PDFView.jsx
8577
+ init_define_process_env();
8578
+ import React31, { useCallback as useCallback9, useEffect as useEffect7, useRef as useRef7, useState as useState14 } from "react";
8579
+ import { throwErrorHandler as throwErrorHandler2, useScreenShare as useScreenShare4 } from "@100mslive/react-sdk";
8580
+ var PDFView = () => {
8581
+ return /* @__PURE__ */ React31.createElement(EmbebScreenShareView, null, /* @__PURE__ */ React31.createElement(PDFEmbedComponent, null));
8582
+ };
8583
+ var PDFEmbedComponent = () => {
8584
+ const ref = useRef7();
8585
+ const themeType = useTheme().themeType;
8586
+ const [isPDFLoaded, setIsPDFLoaded] = useState14(false);
8587
+ let pdfJSURL = define_process_env_default.REACT_APP_PDFJS_IFRAME_URL;
8588
+ const { amIScreenSharing, toggleScreenShare } = useScreenShare4(throwErrorHandler2);
8589
+ const [pdfConfig, setPDFConfig] = useSetAppDataByKey(APP_DATA.pdfConfig);
8590
+ if (pdfConfig.url && !pdfConfig.file) {
8591
+ pdfJSURL = pdfJSURL + "?file=" + encodeURIComponent(pdfConfig.url);
8592
+ }
8593
+ const [wasScreenShared, setWasScreenShared] = useState14(false);
8594
+ const screenShareAttemptInProgress = useRef7(false);
8595
+ const iframeRef = useRef7();
8596
+ const resetEmbedConfig = useCallback9(() => {
8597
+ setPDFConfig({ state: false });
8598
+ }, [setPDFConfig]);
8599
+ useEffect7(() => {
8600
+ if (isPDFLoaded && ref.current) {
8601
+ ref.current.contentWindow.postMessage(
8602
+ {
8603
+ theme: themeType === ThemeTypes.dark ? 2 : 1
8604
+ },
8605
+ "*"
8606
+ );
6372
8607
  }
6373
- }, [maxTileCount, peers, activeSpeakerSorting]);
6374
- return activeSpeakerSorting ? sortedPeers : peers;
6375
- }
6376
- var useSortedPeers_default = useSortedPeers;
6377
-
6378
- // src/Prebuilt/components/VideoList.jsx
6379
- var List = ({ maxTileCount, peers, maxColCount, maxRowCount, includeScreenShareForPeer }) => {
6380
- var _a;
6381
- const { aspectRatio } = useTheme();
6382
- const tileOffset = useAppConfig("headlessConfig", "tileOffset");
6383
- const isHeadless = useIsHeadless();
6384
- const hideLocalVideo = useUISettings(UI_SETTINGS.hideLocalVideo);
6385
- const localPeerId = useHMSStore5(selectLocalPeerID4);
6386
- let sortedPeers = useSortedPeers_default({ peers, maxTileCount });
6387
- if (hideLocalVideo && sortedPeers.length > 1) {
6388
- sortedPeers = filterPeerId(sortedPeers, localPeerId);
6389
- }
6390
- const { ref, pagesWithTiles } = useVideoList({
6391
- peers: sortedPeers,
6392
- maxTileCount,
6393
- maxColCount,
6394
- maxRowCount,
6395
- includeScreenShareForPeer,
6396
- aspectRatio,
6397
- offsetY: getOffset({ isHeadless, tileOffset })
6398
- });
6399
- const [page, setPage] = useState5(0);
6400
- useEffect2(() => {
6401
- if (page >= pagesWithTiles.length) {
6402
- setPage(0);
8608
+ }, [isPDFLoaded, themeType]);
8609
+ useEffect7(() => {
8610
+ if (!amIScreenSharing && !wasScreenShared && !screenShareAttemptInProgress.current) {
8611
+ screenShareAttemptInProgress.current = true;
8612
+ toggleScreenShare({
8613
+ forceCurrentTab: isChrome,
8614
+ cropElement: iframeRef.current,
8615
+ preferCurrentTab: isChrome
8616
+ }).then(() => {
8617
+ setWasScreenShared(true);
8618
+ }).catch(resetEmbedConfig).finally(() => {
8619
+ screenShareAttemptInProgress.current = false;
8620
+ });
6403
8621
  }
6404
- }, [pagesWithTiles.length, page]);
6405
- return /* @__PURE__ */ React6.createElement(StyledVideoList.Root, { ref }, /* @__PURE__ */ React6.createElement(StyledVideoList.Container, { css: { flexWrap: "wrap", placeContent: "center" } }, pagesWithTiles && pagesWithTiles.length > 0 ? (_a = pagesWithTiles[page]) == null ? void 0 : _a.map((tile) => {
6406
- var _a2, _b, _c, _d;
6407
- if (tile.width === 0 || tile.height === 0) {
6408
- return null;
8622
+ }, []);
8623
+ useEffect7(() => {
8624
+ if (wasScreenShared && !amIScreenSharing) {
8625
+ resetEmbedConfig();
6409
8626
  }
6410
- return /* @__PURE__ */ React6.createElement(Fragment3, { key: ((_a2 = tile.track) == null ? void 0 : _a2.id) || tile.peer.id }, ((_b = tile.track) == null ? void 0 : _b.source) === "screen" ? /* @__PURE__ */ React6.createElement(ScreenshareTile_default, { width: tile.width, height: tile.height, peerId: tile.peer.id }) : /* @__PURE__ */ React6.createElement(
6411
- VideoTile_default,
8627
+ return () => {
8628
+ if (wasScreenShared && amIScreenSharing) {
8629
+ resetEmbedConfig();
8630
+ toggleScreenShare();
8631
+ }
8632
+ };
8633
+ }, [wasScreenShared, amIScreenSharing, resetEmbedConfig, toggleScreenShare]);
8634
+ return /* @__PURE__ */ React31.createElement(
8635
+ Box,
8636
+ {
8637
+ ref: iframeRef,
8638
+ css: {
8639
+ flex: "3 1 0",
8640
+ "@lg": {
8641
+ flex: "2 1 0",
8642
+ display: "flex",
8643
+ alignItems: "center"
8644
+ }
8645
+ }
8646
+ },
8647
+ /* @__PURE__ */ React31.createElement(
8648
+ "iframe",
6412
8649
  {
6413
- width: tile.width,
6414
- height: tile.height,
6415
- peerId: (_c = tile.peer) == null ? void 0 : _c.id,
6416
- trackId: (_d = tile.track) == null ? void 0 : _d.id
8650
+ src: pdfJSURL,
8651
+ title: "PDF Annotator",
8652
+ ref,
8653
+ style: {
8654
+ width: "100%",
8655
+ height: "100%",
8656
+ border: 0,
8657
+ borderRadius: "0.75rem"
8658
+ },
8659
+ allow: "accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture fullscreen",
8660
+ referrerPolicy: "no-referrer",
8661
+ onLoad: () => {
8662
+ if (ref.current && pdfConfig.file) {
8663
+ requestAnimationFrame(() => {
8664
+ ref.current.contentWindow.postMessage(
8665
+ {
8666
+ file: pdfConfig.file,
8667
+ theme: themeType === ThemeTypes.dark ? 2 : 1
8668
+ },
8669
+ "*"
8670
+ );
8671
+ setIsPDFLoaded(true);
8672
+ }, 1e3);
8673
+ }
8674
+ }
6417
8675
  }
6418
- ));
6419
- }) : null), !isHeadless && pagesWithTiles.length > 1 ? /* @__PURE__ */ React6.createElement(Pagination, { page, setPage, numPages: pagesWithTiles.length }) : null);
6420
- };
6421
- var VideoList = React6.memo(List);
6422
- function filterPeerId(peers, peerId) {
6423
- const oldPeers = peers;
6424
- let foundPeerToFilterOut = false;
6425
- peers = [];
6426
- for (let i = 0; i < oldPeers.length; i++) {
6427
- if (oldPeers[i].id === peerId) {
6428
- foundPeerToFilterOut = true;
6429
- } else {
6430
- peers.push(oldPeers[i]);
6431
- }
6432
- }
6433
- if (!foundPeerToFilterOut) {
6434
- peers = oldPeers;
6435
- }
6436
- return peers;
6437
- }
6438
- var getOffset = ({ tileOffset, isHeadless }) => {
6439
- if (!isHeadless || isNaN(Number(tileOffset))) {
6440
- return 32;
6441
- }
6442
- return Number(tileOffset);
8676
+ )
8677
+ );
6443
8678
  };
6444
- var VideoList_default = VideoList;
6445
8679
 
6446
- // src/Prebuilt/components/gridView.jsx
6447
- var MAX_TILES_FOR_MOBILE = 4;
6448
- var webinarProps = JSON.parse(define_process_env_default.REACT_APP_WEBINAR_PROPS || "{}");
6449
- var eventRoomIDs = (webinarProps == null ? void 0 : webinarProps.ROOM_IDS) || [];
6450
- var eventsImg = (webinarProps == null ? void 0 : webinarProps.IMAGE_FILE) || "";
6451
- var webinarInfoLink = (webinarProps == null ? void 0 : webinarProps.LINK_HREF) || "https://100ms.live/";
6452
- var GridCenterView = ({ peers, maxTileCount }) => {
6453
- const mediaQueryLg = config.media.md;
6454
- const limitMaxTiles = useMedia(mediaQueryLg);
6455
- const headlessConfig = useAppConfig("headlessConfig");
6456
- const isHeadless = useIsHeadless();
6457
- return /* @__PURE__ */ React7.createElement(Fragment4, null, /* @__PURE__ */ React7.createElement(
8680
+ // src/Prebuilt/layouts/WaitingView.jsx
8681
+ init_define_process_env();
8682
+ import React32 from "react";
8683
+ import { ColoredTimeIcon } from "@100mslive/react-icons";
8684
+ var WaitingView = React32.memo(() => {
8685
+ return /* @__PURE__ */ React32.createElement(
6458
8686
  Box,
6459
8687
  {
6460
8688
  css: {
6461
- flex: "1 1 0",
6462
- height: "100%",
6463
- mx: isHeadless && Number(headlessConfig == null ? void 0 : headlessConfig.tileOffset) === 0 ? "0" : "$8",
6464
- "@md": { flex: "2 1 0" }
6465
- }
8689
+ overflow: "hidden",
8690
+ w: "96%",
8691
+ maxWidth: "96%",
8692
+ h: "100%",
8693
+ m: "auto",
8694
+ background: "$surface_default",
8695
+ borderRadius: "$3"
8696
+ },
8697
+ "data-testid": "waiting_view"
6466
8698
  },
6467
- peers && peers.length > 0 ? /* @__PURE__ */ React7.createElement(VideoList_default, { peers, maxTileCount: limitMaxTiles ? MAX_TILES_FOR_MOBILE : maxTileCount }) : eventRoomIDs.some((id) => window.location.href.includes(id)) ? /* @__PURE__ */ React7.createElement(
6468
- Box,
8699
+ /* @__PURE__ */ React32.createElement(
8700
+ Flex,
6469
8701
  {
8702
+ align: "center",
8703
+ direction: "column",
6470
8704
  css: {
6471
- display: "grid",
6472
- placeItems: "center",
6473
- size: "100%",
6474
- p: "$12"
8705
+ w: "$96",
8706
+ textAlign: "center",
8707
+ margin: "auto",
8708
+ h: "100%",
8709
+ justifyContent: "center",
8710
+ gap: "$8"
6475
8711
  }
6476
8712
  },
6477
- /* @__PURE__ */ React7.createElement("a", { href: webinarInfoLink, target: "_blank", rel: "noreferrer" }, /* @__PURE__ */ React7.createElement(Image, { css: { p: "$4", boxShadow: "$sm" }, alt: "Event template", src: eventsImg }))
6478
- ) : /* @__PURE__ */ React7.createElement(FirstPersonDisplay, null)
8713
+ /* @__PURE__ */ React32.createElement(ColoredTimeIcon, { width: "80px", height: "80px" }),
8714
+ /* @__PURE__ */ React32.createElement(
8715
+ Flex,
8716
+ {
8717
+ direction: "column",
8718
+ css: {
8719
+ w: "$80",
8720
+ p: "$1",
8721
+ gap: "$4"
8722
+ }
8723
+ },
8724
+ /* @__PURE__ */ React32.createElement(Text, { color: "white", variant: "h6", css: { "@md": { fontSize: "$md" } } }, "Please wait"),
8725
+ /* @__PURE__ */ React32.createElement(Text, { color: "$on_surface_medium", css: { mt: "$4", "@md": { fontSize: "$sm" } } }, "Sit back and relax till others let you join.")
8726
+ )
8727
+ )
8728
+ );
8729
+ });
8730
+
8731
+ // src/Prebuilt/plugins/whiteboard/index.js
8732
+ init_define_process_env();
8733
+
8734
+ // src/Prebuilt/layouts/mainView.jsx
8735
+ var HLSView = React33.lazy(() => import("./HLSView-CTAJQUU4.js"));
8736
+ var PinnedTrackView = React33.lazy(() => import("./PinnedTrackView-CQKONH4O.js"));
8737
+ var ConferenceMainView = () => {
8738
+ const localPeerRole = useHMSStore18(selectLocalPeerRoleName6);
8739
+ const pinnedTrack = usePinnedTrack();
8740
+ const peerSharing = useHMSStore18(selectPeerScreenSharing3);
8741
+ const peerSharingAudio = useHMSStore18(selectPeerSharingAudio);
8742
+ const peerSharingPlaylist = useHMSStore18(selectPeerSharingVideoPlaylist3);
8743
+ const { whiteboardOwner: whiteboardShared } = useWhiteboardMetadata();
8744
+ const isConnected = useHMSStore18(selectIsConnectedToRoom2);
8745
+ const hmsActions = useHMSActions12();
8746
+ const { isAudioOnly } = useUISettings();
8747
+ const hlsViewerRole = useHLSViewerRole();
8748
+ const waitingViewerRole = useWaitingViewerRole();
8749
+ const urlToIframe = useUrlToEmbed();
8750
+ const pdfAnnotatorActive = usePDFAnnotator();
8751
+ const { isHLSRunning } = useRecordingStreaming3();
8752
+ const [isHLSStarted, setHLSStarted] = useSetAppDataByKey(APP_DATA.hlsStarted);
8753
+ const permissions = useHMSStore18(selectPermissions3);
8754
+ const showStreamingUI = useShowStreamingUI();
8755
+ const startHLS = useCallback10(() => __async(void 0, null, function* () {
8756
+ try {
8757
+ if (isHLSStarted) {
8758
+ return;
8759
+ }
8760
+ setHLSStarted(true);
8761
+ yield hmsActions.startHLSStreaming({});
8762
+ } catch (error) {
8763
+ if (error.message === "beam already started") {
8764
+ return;
8765
+ }
8766
+ if (error.message.includes("invalid input")) {
8767
+ yield startHLS();
8768
+ return;
8769
+ }
8770
+ setHLSStarted(false);
8771
+ }
8772
+ }), [hmsActions, isHLSStarted, setHLSStarted]);
8773
+ useEffect8(() => {
8774
+ if (!isConnected) {
8775
+ return;
8776
+ }
8777
+ if ((permissions == null ? void 0 : permissions.hlsStreaming) && !isHLSRunning && showStreamingUI) {
8778
+ startHLS();
8779
+ }
8780
+ }, [isConnected]);
8781
+ useEffect8(() => {
8782
+ if (!isConnected) {
8783
+ return;
8784
+ }
8785
+ const audioPlaylist = JSON.parse(define_process_env_default.REACT_APP_AUDIO_PLAYLIST || "[]");
8786
+ const videoPlaylist = JSON.parse(define_process_env_default.REACT_APP_VIDEO_PLAYLIST || "[]");
8787
+ if (videoPlaylist.length > 0) {
8788
+ hmsActions.videoPlaylist.setList(videoPlaylist);
8789
+ }
8790
+ if (audioPlaylist.length > 0) {
8791
+ hmsActions.audioPlaylist.setList(audioPlaylist);
8792
+ }
8793
+ hmsActions.sessionStore.observe([SESSION_STORE_KEY.PINNED_MESSAGE, SESSION_STORE_KEY.SPOTLIGHT]);
8794
+ }, [isConnected, hmsActions]);
8795
+ if (!localPeerRole) {
8796
+ return null;
8797
+ }
8798
+ let ViewComponent;
8799
+ if (localPeerRole === hlsViewerRole) {
8800
+ ViewComponent = HLSView;
8801
+ } else if (localPeerRole === waitingViewerRole) {
8802
+ ViewComponent = WaitingView;
8803
+ } else if (pdfAnnotatorActive) {
8804
+ ViewComponent = PDFView;
8805
+ } else if (urlToIframe) {
8806
+ ViewComponent = EmbedView;
8807
+ } else if (whiteboardShared) {
8808
+ } else if ((peerSharing && peerSharing.id !== (peerSharingAudio == null ? void 0 : peerSharingAudio.id) || peerSharingPlaylist) && !isAudioOnly) {
8809
+ ViewComponent = screenShareView_default;
8810
+ } else if (pinnedTrack) {
8811
+ ViewComponent = PinnedTrackView;
8812
+ } else {
8813
+ ViewComponent = EqualProminence;
8814
+ }
8815
+ return /* @__PURE__ */ React33.createElement(Suspense2, { fallback: /* @__PURE__ */ React33.createElement(FullPageProgress_default, null) }, /* @__PURE__ */ React33.createElement(
8816
+ Flex,
8817
+ {
8818
+ css: {
8819
+ size: "100%",
8820
+ position: "relative"
8821
+ }
8822
+ },
8823
+ /* @__PURE__ */ React33.createElement(ViewComponent, null),
8824
+ /* @__PURE__ */ React33.createElement(SidePane_default, null)
6479
8825
  ));
6480
8826
  };
6481
- var GridSidePaneView = ({ peers }) => {
6482
- const headlessConfig = useAppConfig("headlessConfig");
8827
+
8828
+ // src/Prebuilt/components/RoleChangeRequestModal.jsx
8829
+ init_define_process_env();
8830
+ import React34 from "react";
8831
+ import { selectRoleChangeRequest, useHMSActions as useHMSActions13, useHMSStore as useHMSStore19 } from "@100mslive/react-sdk";
8832
+ var RoleChangeRequestModal = () => {
8833
+ var _a, _b;
8834
+ const hmsActions = useHMSActions13();
6483
8835
  const isHeadless = useIsHeadless();
6484
- return /* @__PURE__ */ React7.createElement(
6485
- Flex,
8836
+ const roleChangeRequest = useHMSStore19(selectRoleChangeRequest);
8837
+ if (!(roleChangeRequest == null ? void 0 : roleChangeRequest.role) || isHeadless) {
8838
+ return null;
8839
+ }
8840
+ return /* @__PURE__ */ React34.createElement(
8841
+ RequestDialog,
6486
8842
  {
6487
- direction: "column",
8843
+ title: "Role Change Request",
8844
+ onOpenChange: (value) => !value && hmsActions.rejectChangeRole(roleChangeRequest),
8845
+ body: `${(_a = roleChangeRequest == null ? void 0 : roleChangeRequest.requestedBy) == null ? void 0 : _a.name} has requested you to change your role to ${(_b = roleChangeRequest == null ? void 0 : roleChangeRequest.role) == null ? void 0 : _b.name}.`,
8846
+ onAction: () => {
8847
+ hmsActions.acceptChangeRole(roleChangeRequest);
8848
+ },
8849
+ actionText: "Accept"
8850
+ }
8851
+ );
8852
+ };
8853
+
8854
+ // src/Prebuilt/components/conference.jsx
8855
+ var Conference = () => {
8856
+ var _a, _b;
8857
+ const navigate = useNavigation();
8858
+ const { roomId, role } = useParams();
8859
+ const isHeadless = useIsHeadless();
8860
+ const roomState = useHMSStore20(selectRoomState);
8861
+ const prevState = usePrevious(roomState);
8862
+ const isConnectedToRoom = useHMSStore20(selectIsConnectedToRoom3);
8863
+ const hmsActions = useHMSActions14();
8864
+ const [hideControls, setHideControls] = useState15(false);
8865
+ const dropdownList = useHMSStore20(selectAppData2(APP_DATA.dropdownList));
8866
+ const skipPreview = useSkipPreview();
8867
+ const { showPreview } = useHMSPrebuiltContext();
8868
+ const authTokenInAppData = useAuthToken();
8869
+ const headerRef = useRef8();
8870
+ const footerRef = useRef8();
8871
+ const dropdownListRef = useRef8();
8872
+ const performAutoHide = hideControls && (isAndroid || isIOS || isIPadOS);
8873
+ const [isHLSStarted] = useSetAppDataByKey(APP_DATA.hlsStarted);
8874
+ const toggleControls = () => {
8875
+ var _a2;
8876
+ if (((_a2 = dropdownListRef.current) == null ? void 0 : _a2.length) === 0) {
8877
+ setHideControls((value) => !value);
8878
+ }
8879
+ };
8880
+ useEffect9(() => {
8881
+ let timeout = null;
8882
+ dropdownListRef.current = dropdownList || [];
8883
+ if (dropdownListRef.current.length === 0) {
8884
+ clearTimeout(timeout);
8885
+ timeout = setTimeout(() => {
8886
+ if (dropdownListRef.current.length === 0) {
8887
+ setHideControls(true);
8888
+ }
8889
+ }, 5e3);
8890
+ }
8891
+ return () => {
8892
+ clearTimeout(timeout);
8893
+ };
8894
+ }, [dropdownList, hideControls]);
8895
+ useEffect9(() => {
8896
+ if (!roomId) {
8897
+ navigate(`/`);
8898
+ return;
8899
+ }
8900
+ if (!showPreview) {
8901
+ return;
8902
+ }
8903
+ if (!prevState && !(roomState === HMSRoomState.Connecting || roomState === HMSRoomState.Reconnecting || isConnectedToRoom)) {
8904
+ if (role)
8905
+ navigate(`/preview/${roomId || ""}/${role}`);
8906
+ else
8907
+ navigate(`/preview/${roomId || ""}`);
8908
+ }
8909
+ }, [isConnectedToRoom, prevState, roomState, navigate, role, roomId, showPreview]);
8910
+ useEffect9(() => {
8911
+ if (authTokenInAppData && !isConnectedToRoom && !showPreview && roomState !== HMSRoomState.Connecting) {
8912
+ hmsActions.join({
8913
+ userName: "Test",
8914
+ authToken: authTokenInAppData,
8915
+ initEndpoint: define_process_env_default.REACT_APP_ENV ? `https://${define_process_env_default.REACT_APP_ENV}-init.100ms.live/init` : void 0,
8916
+ initialSettings: {
8917
+ isAudioMuted: skipPreview,
8918
+ isVideoMuted: skipPreview,
8919
+ speakerAutoSelectionBlacklist: ["Yeti Stereo Microphone"]
8920
+ }
8921
+ }).catch(console.error);
8922
+ }
8923
+ }, [authTokenInAppData, skipPreview, hmsActions, isConnectedToRoom, showPreview, roomState]);
8924
+ useEffect9(() => {
8925
+ if (isHeadless) {
8926
+ hmsActions.ignoreMessageTypes(["chat", EMOJI_REACTION_TYPE]);
8927
+ }
8928
+ }, [isHeadless, hmsActions]);
8929
+ useEffect9(() => {
8930
+ return () => {
8931
+ PictureInPicture.stop().catch((error) => console.error("stopping pip", error));
8932
+ };
8933
+ }, []);
8934
+ if (!isConnectedToRoom) {
8935
+ return /* @__PURE__ */ React35.createElement(FullPageProgress_default, { loadingText: "Joining..." });
8936
+ }
8937
+ if (isHLSStarted) {
8938
+ return /* @__PURE__ */ React35.createElement(FullPageProgress_default, { loadingText: "Starting live stream..." });
8939
+ }
8940
+ return /* @__PURE__ */ React35.createElement(Flex, { css: { size: "100%", overflow: "hidden" }, direction: "column" }, !isHeadless && /* @__PURE__ */ React35.createElement(
8941
+ Box,
8942
+ {
8943
+ ref: headerRef,
6488
8944
  css: {
6489
- flex: "0 0 20%",
6490
- mx: isHeadless && Number(headlessConfig == null ? void 0 : headlessConfig.tileOffset) === 0 ? "0" : "$8",
8945
+ h: "$18",
8946
+ transition: "margin 0.3s ease-in-out",
8947
+ marginTop: performAutoHide ? `-${(_a = headerRef.current) == null ? void 0 : _a.clientHeight}px` : "none",
8948
+ "@md": {
8949
+ h: "$17"
8950
+ }
8951
+ },
8952
+ "data-testid": "header"
8953
+ },
8954
+ /* @__PURE__ */ React35.createElement(Header, null)
8955
+ ), /* @__PURE__ */ React35.createElement(
8956
+ Box,
8957
+ {
8958
+ css: {
8959
+ w: "100%",
8960
+ flex: "1 1 0",
8961
+ minHeight: 0,
8962
+ px: "$10",
8963
+ paddingBottom: "env(safe-area-inset-bottom)",
6491
8964
  "@lg": {
6492
- flex: "0 0 25%"
6493
- },
8965
+ px: "$4"
8966
+ }
8967
+ },
8968
+ id: "conferencing",
8969
+ "data-testid": "conferencing",
8970
+ onClick: toggleControls
8971
+ },
8972
+ /* @__PURE__ */ React35.createElement(ConferenceMainView, null)
8973
+ ), !isHeadless && /* @__PURE__ */ React35.createElement(
8974
+ Box,
8975
+ {
8976
+ ref: footerRef,
8977
+ css: {
8978
+ flexShrink: 0,
8979
+ maxHeight: "$24",
8980
+ transition: "margin 0.3s ease-in-out",
8981
+ marginBottom: performAutoHide ? `-${(_b = footerRef.current) == null ? void 0 : _b.clientHeight}px` : void 0,
6494
8982
  "@md": {
6495
- flex: "1 1 0"
8983
+ maxHeight: "unset"
6496
8984
  }
6497
- }
8985
+ },
8986
+ "data-testid": "footer"
6498
8987
  },
6499
- /* @__PURE__ */ React7.createElement(Flex, { css: { flex: "1 1 0" }, align: "end" }, peers && peers.length > 0 && /* @__PURE__ */ React7.createElement(VideoList_default, { peers, maxColCount: 1 }))
6500
- );
8988
+ /* @__PURE__ */ React35.createElement(Footer2, null)
8989
+ ), /* @__PURE__ */ React35.createElement(RoleChangeRequestModal, null), /* @__PURE__ */ React35.createElement(HLSFailureModal, null), /* @__PURE__ */ React35.createElement(ActivatedPIP, null));
6501
8990
  };
6502
-
8991
+ var conference_default = Conference;
6503
8992
  export {
6504
- ScreenshareTile_default,
6505
- useAppConfig,
6506
- VideoTile_default,
6507
- VideoList_default,
6508
- FirstPersonDisplay,
6509
- GridCenterView,
6510
- GridSidePaneView
8993
+ conference_default as default
6511
8994
  };
6512
- //# sourceMappingURL=chunk-3HMUOAD6.js.map
8995
+ //# sourceMappingURL=conference-OEO7VOJD.js.map