@100mslive/roomkit-react 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/{HLSView-4NSE37G7.js → HLSView-3S74KF3A.js} +23 -4
  2. package/dist/HLSView-3S74KF3A.js.map +7 -0
  3. package/dist/Prebuilt/components/RoleChangeRequest/RequestPrompt.d.ts +9 -0
  4. package/dist/VideoTile/StyledVideoTile.d.ts +445 -3
  5. package/dist/{VirtualBackground-A5UM363O.js → VirtualBackground-3TI5NA4V.js} +3 -3
  6. package/dist/{chunk-BUWIMYLW.js → chunk-36X4ZCLC.js} +2 -2
  7. package/dist/{chunk-NMOZ33TX.js → chunk-5DQ3WTED.js} +3 -2
  8. package/dist/{chunk-NMOZ33TX.js.map → chunk-5DQ3WTED.js.map} +2 -2
  9. package/dist/{chunk-Q6U22HIE.js → chunk-Z7P5WITU.js} +223 -200
  10. package/dist/chunk-Z7P5WITU.js.map +7 -0
  11. package/dist/{conference-S7R3O4OC.js → conference-JNABIZBG.js} +534 -504
  12. package/dist/conference-JNABIZBG.js.map +7 -0
  13. package/dist/index.cjs.js +1011 -924
  14. package/dist/index.cjs.js.map +4 -4
  15. package/dist/index.js +2 -2
  16. package/dist/meta.cjs.json +241 -167
  17. package/dist/meta.esbuild.json +276 -203
  18. package/package.json +6 -6
  19. package/src/Input/Input.tsx +1 -1
  20. package/src/Prebuilt/common/hooks.js +1 -2
  21. package/src/Prebuilt/common/utils.js +7 -2
  22. package/src/Prebuilt/components/Chat/ChatBody.jsx +125 -106
  23. package/src/Prebuilt/components/Chat/ChatFooter.tsx +1 -0
  24. package/src/Prebuilt/components/Footer/Footer.tsx +4 -1
  25. package/src/Prebuilt/components/Footer/ParticipantList.jsx +8 -9
  26. package/src/Prebuilt/components/Header/ParticipantFilter.jsx +9 -12
  27. package/src/Prebuilt/components/Leave/DesktopLeaveRoom.tsx +36 -44
  28. package/src/Prebuilt/components/Leave/MwebLeaveRoom.tsx +23 -35
  29. package/src/Prebuilt/components/MoreSettings/SplitComponents/MwebOptions.tsx +4 -2
  30. package/src/Prebuilt/components/Notifications/Notifications.jsx +14 -1
  31. package/src/Prebuilt/components/Notifications/PeerNotifications.jsx +4 -15
  32. package/src/Prebuilt/components/Preview/PreviewJoin.tsx +12 -5
  33. package/src/Prebuilt/components/RaiseHand.jsx +3 -6
  34. package/src/Prebuilt/components/RoleChangeRequest/RequestPrompt.tsx +66 -0
  35. package/src/Prebuilt/components/RoleChangeRequest/RoleChangeRequestModal.tsx +89 -0
  36. package/src/Prebuilt/components/SidePaneTabs.tsx +21 -2
  37. package/src/Prebuilt/components/VideoTile.jsx +24 -15
  38. package/src/Prebuilt/components/conference.jsx +1 -1
  39. package/src/Prebuilt/components/hooks/useMetadata.jsx +15 -4
  40. package/src/Prebuilt/layouts/HLSView.jsx +20 -1
  41. package/src/Prebuilt/layouts/SidePane.tsx +0 -1
  42. package/src/Tooltip/Tooltip.tsx +1 -1
  43. package/src/VideoTile/StyledVideoTile.tsx +10 -14
  44. package/src/fixtures/peers.ts +5 -3
  45. package/dist/HLSView-4NSE37G7.js.map +0 -7
  46. package/dist/chunk-Q6U22HIE.js.map +0 -7
  47. package/dist/conference-S7R3O4OC.js.map +0 -7
  48. package/src/Prebuilt/components/RoleChangeRequestModal.tsx +0 -120
  49. /package/dist/Prebuilt/components/{RoleChangeRequestModal.d.ts → RoleChangeRequest/RoleChangeRequestModal.d.ts} +0 -0
  50. /package/dist/{VirtualBackground-A5UM363O.js.map → VirtualBackground-3TI5NA4V.js.map} +0 -0
  51. /package/dist/{chunk-BUWIMYLW.js.map → chunk-36X4ZCLC.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/Button/Button.tsx", "../src/Theme/ThemeProvider.tsx", "../src/Theme/useSSR.tsx", "../src/Avatar/Avatar.tsx", "../src/Avatar/getAvatarBg.ts", "../src/Divider/Divider.tsx", "../src/Switch/Switch.tsx", "../src/Select/Select.tsx", "../src/Slider/Slider.tsx", "../src/Modal/Dialog.tsx", "../src/Modal/DialogContent.tsx", "../src/Input/Input.tsx", "../src/VideoTile/StyledVideoTile.tsx", "../src/VideoList/videoListUtils.tsx", "../src/VideoList/StyledVideoList.tsx", "../src/Pagination/StyledPagination.tsx", "../src/Dropdown/Dropdown.tsx", "../src/Video/Video.tsx", "../src/TileMenu/StyledMenuTile.tsx", "../src/AudioLevel/AudioLevel.tsx", "../src/Popover/index.tsx", "../src/Stats/Stats.tsx", "../src/Stats/formatBytes.ts", "../src/Stats/StyledStats.tsx", "../src/Checkbox/Checkbox.tsx", "../src/Label/Label.tsx", "../src/RadioGroup/RadioGroup.tsx", "../src/Toast/Toast.tsx", "../src/Accordion/Accordion.tsx", "../src/Accordion/index.ts", "../src/Fieldset/Fieldset.tsx", "../src/Footer/Footer.tsx", "../src/ReactSelect/index.ts", "../src/ReactSelect/ReactSelect.tsx", "../src/Tabs/Tabs.tsx", "../src/QRCode/QRCode.tsx", "../src/Link/Link.tsx", "../src/Collapsible/Collapsible.tsx", "../src/Prebuilt/App.tsx", "../src/Prebuilt/components/AppData/AppData.jsx", "../src/Prebuilt/components/init/initUtils.js", "../src/Prebuilt/components/hooks/useUserPreferences.jsx", "../src/Prebuilt/components/AppData/useSidepane.js", "../src/Prebuilt/common/constants.js", "../src/Prebuilt/components/AppData/useUISettings.js", "../src/Prebuilt/components/AuthToken.jsx", "../src/Prebuilt/AppContext.tsx", "../src/Prebuilt/primitives/DialogContent.jsx", "../src/Prebuilt/components/ErrorBoundary.jsx", "../src/Prebuilt/components/FullPageProgress.jsx", "../src/Prebuilt/components/init/Init.jsx", "../src/Prebuilt/services/FeatureFlags.jsx", "../src/Prebuilt/components/Input/KeyboardInputManager.js", "../src/Prebuilt/components/Notifications/Notifications.jsx", "../src/Prebuilt/provider/roomLayoutProvider/index.tsx", "../src/Prebuilt/provider/roomLayoutProvider/hooks/useFetchRoomLayout.ts", "../src/Prebuilt/provider/roomLayoutProvider/constants/index.ts", "../src/Prebuilt/components/Toast/ToastConfig.jsx", "../src/Prebuilt/components/Toast/ToastManager.js", "../src/Prebuilt/components/Toast/ToastBatcher.js", "../src/Prebuilt/components/Notifications/AutoplayBlockedModal.jsx", "../src/Prebuilt/components/Notifications/InitErrorModal.jsx", "../src/Prebuilt/components/Notifications/PeerNotifications.jsx", "../src/Prebuilt/components/Notifications/PermissionErrorModal.jsx", "../src/Prebuilt/components/Notifications/ReconnectNotifications.jsx", "../src/Prebuilt/components/Notifications/TrackBulkUnmuteModal.jsx", "../src/Prebuilt/components/Notifications/TrackNotifications.jsx", "../src/Prebuilt/components/Notifications/TrackUnmuteModal.jsx", "../src/Prebuilt/components/hooks/useRedirectToLeave.tsx", "../src/Prebuilt/components/PIP/PIPManager.js", "../src/Prebuilt/components/PIP/pipUtils.js", "../src/Prebuilt/provider/roomLayoutProvider/hooks/useRoomLayoutScreen.ts", "../src/Prebuilt/common/utils.js", "../src/Prebuilt/components/PostLeave.jsx", "../src/Prebuilt/components/Header/Header.tsx", "../src/Prebuilt/components/Header/HeaderComponents.jsx", "../src/Prebuilt/components/Header/StreamActions.tsx", "../src/Sheet/Sheet.tsx", "../src/Prebuilt/components/Header/AdditionalRoomState.jsx", "../src/Prebuilt/plugins/whiteboard/useWhiteboardMetadata.js", "../src/Prebuilt/components/hooks/useMetadata.jsx", "../src/Prebuilt/components/hooks/usePlaylistMusic.js", "../src/Prebuilt/components/hooks/useScreenshareAudio.js", "../src/Prebuilt/components/Header/common.jsx", "../src/Prebuilt/components/Preview/PreviewContainer.tsx", "../src/Prebuilt/components/Preview/PreviewJoin.tsx", "../src/Prebuilt/components/AudioVideoToggle.jsx", "../src/Prebuilt/components/IconButtonWithOptions/IconButtonWithOptions.jsx", "../src/Prebuilt/components/Chip.jsx", "../src/Prebuilt/components/Connection/TileConnection.tsx", "../src/Prebuilt/components/Connection/ConnectionIndicator.tsx", "../src/Prebuilt/components/Connection/connectionQualityUtils.js", "../src/Prebuilt/components/Settings/SettingsModal.jsx", "../src/Prebuilt/components/Settings/common.js", "../src/Prebuilt/components/Settings/DeviceSettings.jsx", "../src/Prebuilt/primitives/DropdownTrigger.jsx", "../src/Prebuilt/components/hooks/useDropdownSelection.jsx", "../src/Prebuilt/components/Settings/LayoutSettings.jsx", "../src/Prebuilt/components/Settings/SwitchWithLabel.jsx", "../src/Prebuilt/components/Settings/NotificationSettings.jsx", "../src/Prebuilt/components/VideoTile.jsx", "../src/Prebuilt/components/TileMenu/TileMenu.jsx", "../src/Prebuilt/components/MoreSettings/ChangeNameModal.jsx", "../src/Prebuilt/components/MoreSettings/ChangeNameContent.jsx", "../src/Prebuilt/components/TileMenu/TileMenuContent.jsx", "../src/Prebuilt/components/hooks/useDropdownList.jsx", "../src/Prebuilt/components/peerTileUtils.jsx", "../src/Prebuilt/components/Preview/PreviewForm.tsx", "../src/Prebuilt/components/Toast/ToastContainer.jsx", "../src/Prebuilt/components/Toast/Toast.jsx", "../src/Prebuilt/plugins/FlyingEmoji.jsx", "../src/Prebuilt/plugins/RemoteStopScreenshare.jsx", "../src/Prebuilt/components/hooks/useAutoStartStreaming.tsx", "../src/Prebuilt/common/hooks.js", "../src/Progress/index.tsx"],
4
+ "sourcesContent": ["import React, { ComponentPropsWithRef, PropsWithChildren } from 'react';\nimport { Flex } from '../Layout';\nimport { Loading } from '../Loading';\nimport { styled } from '../Theme';\nimport { flexCenter } from '../utils/styles';\n\n/**\n * @param base bg color\n * @param hover hover state bg color\n * @param active active state bg color\n * @returns CSS object based on the state\n */\n\nconst getOutlinedVariants = (\n base: string,\n hover: string,\n active: string,\n disabled: string,\n text: string,\n textDisabled: string,\n) => {\n return {\n bg: '$transparent',\n border: `solid $space$px $colors${base}`,\n c: text,\n '&[disabled]': {\n c: textDisabled,\n bg: '$transparent',\n border: `solid $space$px $colors${disabled}`,\n cursor: 'not-allowed',\n },\n '&:not([disabled]):hover': {\n border: `solid $space$px $colors${hover}`,\n bg: '$transparent',\n },\n '&:not([disabled]):active': {\n border: `solid $space$px $colors${active}`,\n bg: '$transparent',\n },\n '&:not([disabled]):focus-visible': {\n boxShadow: `0 0 0 3px $colors${base}`,\n },\n };\n};\n\nconst getButtonVariants = (\n base: string,\n hover: string,\n active: string,\n disabled: string,\n text: string,\n textDisabled: string,\n) => {\n return {\n bg: base,\n border: `1px solid ${base}`,\n c: text,\n '&[disabled]': {\n c: textDisabled,\n cursor: 'not-allowed',\n bg: disabled,\n border: `1px solid ${disabled}`,\n },\n '&:not([disabled]):hover': {\n bg: hover,\n border: `1px solid ${hover}`,\n },\n '&:not([disabled]):active': {\n bg: active,\n border: `1px solid ${active}`,\n },\n '&:not([disabled]):focus-visible': {\n boxShadow: `0 0 0 3px ${base}`,\n },\n };\n};\n\nconst StyledButton = styled('button', {\n ...flexCenter,\n cursor: 'pointer',\n fontFamily: '$sans',\n lineHeight: 'inherit',\n textTransform: 'none',\n position: 'relative',\n outline: 'none',\n border: 'none',\n fs: '$md',\n r: '$1',\n backgroundColor: '$primary_default',\n fontWeight: '500',\n whiteSpace: 'nowrap',\n p: '$4 $8',\n '-webkit-appearance': 'button',\n '&:focus': {\n outline: 'none',\n },\n '&:not([disabled]):focus-visible': {\n boxShadow: '0 0 0 3px $colors$primary_default',\n },\n transition: 'all 0.2s ease',\n compoundVariants: [\n {\n variant: 'standard',\n outlined: true,\n css: getOutlinedVariants(\n '$secondary_default',\n '$secondary_bright',\n '$secondary_dim',\n '$secondary_disabled',\n '$on_surface_high',\n '$on_surface_low',\n ),\n },\n {\n variant: 'danger',\n outlined: true,\n css: getOutlinedVariants(\n '$alert_error_default',\n '$alert_error_bright',\n '$alert_error_dim',\n '$alert_error_brighter',\n '$on_surface_high',\n '$on_surface_low',\n ),\n },\n {\n variant: 'primary',\n outlined: true,\n css: getOutlinedVariants(\n '$primary_default',\n '$primary_bright',\n '$primary_dim',\n '$primary_disabled',\n '$on_surface_high',\n '$on_surface_low',\n ),\n },\n ],\n variants: {\n variant: {\n standard: getButtonVariants(\n '$surface_brighter',\n '$surface_bright',\n '$surface_default',\n '$surface_dim',\n '$on_surface_high',\n '$on_surface_low',\n ),\n danger: getButtonVariants(\n '$alert_error_default',\n '$alert_error_bright',\n '$alert_error_dim',\n '$alert_error_dim',\n '$alert_error_brighter',\n '$on_primary_low',\n ),\n primary: getButtonVariants(\n '$primary_default',\n '$primary_bright',\n '$primary_dim',\n '$primary_disabled',\n '$on_primary_high',\n '$on_primary_low',\n ),\n },\n outlined: {\n true: {},\n },\n icon: {\n true: {},\n },\n },\n defaultVariants: {\n variant: 'primary',\n },\n});\n\nexport const Button = React.forwardRef<\n HTMLButtonElement,\n PropsWithChildren<{ loading?: boolean } & ComponentPropsWithRef<typeof StyledButton>>\n>(({ children, loading = false, icon, ...buttonProps }, ref) => {\n return (\n <StyledButton {...buttonProps} ref={ref}>\n <>\n {loading && (\n <Flex\n align=\"center\"\n justify=\"center\"\n css={{ w: '100%', position: 'absolute', left: '0', color: '$on_primary_low' }}\n >\n <Loading color=\"currentColor\" />\n </Flex>\n )}\n <Flex\n align=\"center\"\n justify=\"center\"\n css={{ visibility: loading ? 'hidden' : 'visible', gap: icon ? '$4' : '0' }}\n >\n {children}\n </Flex>\n </>\n </StyledButton>\n );\n});\n", "import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { Theme } from './stitches.config';\nimport { createTheme, theme } from './stitches.config';\nimport useSSR from './useSSR';\n\nconst defaultAspectRatio = {\n width: 1,\n height: 1,\n};\n\nexport enum ThemeTypes {\n // eslint-disable-next-line no-unused-vars\n default = 'default',\n}\n\nexport type ThemeContextValue = {\n themeType: string;\n theme: Theme;\n aspectRatio: { width: number; height: number };\n /**\n * @param {ThemeTypes} themeToUpdateTo - optional\n * Use this to toggle or update the currentTheme.\n * if a param is passed, it will set the theme to passed value, otherwise will toggle between light and dark\n * depending on current applied theme\n */\n toggleTheme: (themeToUpdateTo?: ThemeTypes) => void;\n};\n\nexport type ThemeProviderProps = {\n themeType?: string;\n theme?: Theme;\n aspectRatio?: { width: number; height: number };\n};\n\nconst defaultContext = {\n themeType: ThemeTypes.default,\n theme,\n aspectRatio: { width: 1, height: 1 },\n toggleTheme: (_themeToUpdateTo?: ThemeTypes) => {\n return;\n },\n};\nexport const ThemeContext = React.createContext<ThemeContextValue>(defaultContext);\n\n/**\n * Wrap this around your root component to get access to theme\n * eg:\n * <ThemeProvider type=\"dark\" appBuilder={{ aspectRatio: { width:1, height: 1} }}>\n * <App />\n * </ThemeProvider>\n */\nexport const HMSThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>> = ({\n themeType,\n theme: userTheme,\n aspectRatio = defaultAspectRatio,\n children,\n}) => {\n const systemTheme = ThemeTypes.default;\n const [currentTheme, setCurrentTheme] = useState(themeType || systemTheme);\n const previousClassName = useRef('');\n const { isBrowser } = useSSR();\n const updatedTheme = useMemo(() => {\n const updatedTheme = createTheme({ themeType: currentTheme, theme: userTheme || {} });\n if (!isBrowser) {\n return updatedTheme;\n }\n if (previousClassName.current) {\n document.documentElement.classList.remove(previousClassName.current);\n }\n previousClassName.current = updatedTheme.className;\n document.documentElement.classList.add(updatedTheme);\n return updatedTheme;\n }, [userTheme, currentTheme, isBrowser]);\n\n const toggleTheme = useCallback((themeToUpdateTo?: ThemeTypes) => {\n if (themeToUpdateTo) {\n setCurrentTheme(themeToUpdateTo);\n return;\n }\n setCurrentTheme(ThemeTypes.default);\n }, []);\n\n useEffect(() => {\n if (themeType) {\n setCurrentTheme(themeType);\n }\n }, [themeType]);\n\n return (\n <ThemeContext.Provider\n value={{ themeType: currentTheme, theme: updatedTheme as unknown as Theme, aspectRatio, toggleTheme }}\n >\n {children}\n </ThemeContext.Provider>\n );\n};\n\nexport const useTheme = () => React.useContext(ThemeContext);\n", "import { useEffect, useState } from 'react';\n\nconst isBrowser = (): boolean => {\n return Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);\n};\n\nexport type SSRState = {\n isBrowser: boolean;\n isServer: boolean;\n};\n\nconst useSSR = (): SSRState => {\n const [browser, setBrowser] = useState<boolean>(false);\n useEffect(() => {\n setBrowser(isBrowser());\n }, []);\n\n return {\n isBrowser: browser,\n isServer: !browser,\n };\n};\n\nexport default useSSR;\n", "import React from 'react';\nimport { VariantProps } from '@stitches/react';\nimport { PersonIcon } from '@100mslive/react-icons';\nimport { styled } from '../Theme';\nimport { getAvatarBg } from './getAvatarBg';\nimport { flexCenter } from '../utils/styles';\n\nconst getAvatarShape = (radii: string) => ({\n borderRadius: radii,\n});\n\nexport const StyledAvatar = styled('div', {\n ...flexCenter,\n color: '$colors$on_primary_high',\n fontFamily: '$sans',\n aspectRatio: 1,\n fontWeight: 600,\n fontSize: '$space$9',\n variants: {\n shape: {\n circle: getAvatarShape('$round'),\n square: getAvatarShape('$1'),\n },\n size: {\n small: {\n height: '$16 !important',\n fontSize: '$space$6',\n },\n medium: {\n height: '$18 !important',\n fontSize: '$space$10',\n },\n large: {\n height: '$20 !important',\n fontSize: '$space$12',\n },\n },\n },\n defaultVariants: {\n shape: 'circle',\n },\n});\n\ntype Props = VariantProps<typeof StyledAvatar> &\n React.ComponentProps<typeof StyledAvatar> & {\n name: string;\n };\n\nexport const Avatar: React.FC<Props> = ({ name, css, ...props }) => {\n const { initials } = getAvatarBg(name);\n let { color } = getAvatarBg(name);\n if (!name) {\n color = '#7E47EB';\n }\n return (\n <StyledAvatar css={{ bg: color, ...css }} {...props}>\n {initials || <PersonIcon height={40} width={40} />}\n </StyledAvatar>\n );\n};\n", "const getInitials = (name: string | undefined) => {\n if (!name) {\n return undefined;\n } else {\n return name\n .trim()\n .match(/(^\\S\\S?|\\b\\S)?/g)\n ?.join('')\n ?.match(/(^\\S|\\S$)?/g)\n ?.join('')\n .toUpperCase();\n }\n};\n\n/**\n calculates the initials of the name and choose a background color based on the first later of the initials\n */\nexport const getAvatarBg = (name: string): { initials: string; color: string } => {\n const initials = getInitials(name);\n const indexFactor = 20;\n const colorIndex = ((initials?.codePointAt(0) || 0) % indexFactor) + 1;\n return { initials: initials || '', color: colorsList[colorIndex - 1] };\n};\n\nconst colorsList = [\n '#616161',\n '#F44336',\n '#3F51B5',\n '#4CAF50',\n '#FFA000',\n '#795548',\n '#E91E63',\n '#2F80FF',\n '#8BC34A',\n '#F57C00',\n '#4E342E',\n '#9C27B0',\n '#00BCD4',\n '#C0CA33',\n '#F4511E',\n '#673AB7',\n '#009688',\n '#FBC02D',\n '#BF360C',\n '#455A64',\n];\n", "import { styled } from '../Theme';\n\nconst getVerticalSpace = (space: string) => ({\n marginLeft: space,\n marginRight: space,\n});\nconst getHorizontalSpace = (space: string) => ({\n marginTop: space,\n marginBottom: space,\n});\n\nexport const VerticalDivider = styled('span', {\n height: '25px',\n width: '1px',\n backgroundColor: '$border_bright',\n variants: {\n space: {\n 1: getVerticalSpace('$1'),\n 2: getVerticalSpace('$2'),\n 3: getVerticalSpace('$3'),\n 4: getVerticalSpace('$4'),\n },\n },\n defaultVariants: {\n space: 1,\n },\n});\n\nexport const HorizontalDivider = styled('span', {\n height: '1px',\n width: '100%',\n display: 'block',\n backgroundColor: '$border_bright',\n variants: {\n space: {\n 1: getHorizontalSpace('$1'),\n 2: getHorizontalSpace('$2'),\n 3: getHorizontalSpace('$3'),\n 4: getHorizontalSpace('$4'),\n },\n },\n defaultVariants: {\n space: 1,\n },\n});\n", "import React from 'react';\nimport * as BaseSwitch from '@radix-ui/react-switch';\nimport { styled } from '../Theme';\n\nconst SwitchRoot = styled(BaseSwitch.Root, {\n all: 'unset',\n width: '30px',\n height: '14px',\n border: 'solid $space$px $secondary_default',\n borderRadius: '$3',\n p: '$2',\n position: 'relative',\n cursor: 'pointer',\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary_default',\n border: 'solid $space$px $primary_default',\n },\n '&:focus': {\n outline: 'none',\n },\n '&[disabled]': {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n});\n\nconst SwitchThumb = styled(BaseSwitch.Thumb, {\n display: 'block',\n top: '3px',\n position: 'absolute',\n width: '$md',\n height: '$md',\n backgroundColor: '$secondary_default',\n borderRadius: '$round',\n transition: 'right 500ms ease-in',\n left: '$2',\n '&[data-state=\"checked\"]': {\n left: 'unset',\n right: '$2',\n backgroundColor: '$on_primary_high',\n },\n});\n\ntype SwitchProps = React.ComponentProps<typeof SwitchRoot>;\n\nexport const Switch: React.FC<SwitchProps> = props => (\n <SwitchRoot {...props}>\n <SwitchThumb />\n </SwitchRoot>\n);\n\nSwitch.displayName = 'Switch';\n", "import React from 'react';\nimport { ChevronDownIcon } from '@100mslive/react-icons';\nimport { styled } from '../Theme';\n\nconst Root = styled('div', {\n color: '$on_primary_high',\n display: 'inline-flex',\n position: 'relative',\n outline: 'none',\n overflow: 'hidden',\n borderRadius: '$1',\n backgroundColor: '$surface_default',\n maxWidth: '100%',\n});\n\n// TODO: replace these with tokens\nconst SelectRoot = styled('select', {\n h: '$16',\n fontSize: '$md',\n fontWeight: '500',\n lineHeight: 'inherit',\n textTransform: 'none',\n appearance: 'none',\n color: '$on_secondary_high',\n padding: '5px',\n paddingLeft: '12px',\n paddingRight: '30px',\n border: 'none',\n borderRadius: '8px',\n backgroundColor: '$secondary_default',\n '&:not([disabled]):focus-visible': {\n boxShadow: '0 0 0 3px $colors$primary_default',\n },\n '&[disabled]': {\n opacity: 0.5,\n cursor: 'not-allowed',\n },\n});\n\nconst Arrow = styled('span', {\n color: '$on_secondary_high',\n width: '30px',\n height: '100%',\n position: 'absolute',\n right: 0,\n pointerEvents: 'none',\n display: 'flex',\n alignItems: 'center',\n transition: 'border .2s ease 0s',\n});\n\nconst DefaultDownIcon = ({ ...props }) => (\n <Arrow {...props}>\n <ChevronDownIcon />\n </Arrow>\n);\n\nexport const Select = {\n Root,\n DownIcon: Arrow,\n DefaultDownIcon,\n Select: SelectRoot,\n};\n", "import React from 'react';\nimport * as BaseSlider from '@radix-ui/react-slider';\nimport { CSS } from '@stitches/react';\nimport { styled } from '../Theme';\nimport { Tooltip } from '../Tooltip';\n\nconst Root = styled(BaseSlider.Root, {\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n userSelect: 'none',\n touchAction: 'none',\n width: '100%',\n '&[data-orientation=\"horizontal\"]': {\n height: 20,\n },\n});\n\nconst Track = styled(BaseSlider.Track, {\n backgroundColor: '$surface_bright',\n position: 'relative',\n flexGrow: 1,\n borderRadius: '$round',\n cursor: 'pointer',\n '&[data-orientation=\"horizontal\"]': { height: 3 },\n});\n\nconst Range = styled(BaseSlider.Range, {\n position: 'absolute',\n backgroundColor: '$primary_default',\n borderRadius: '$round',\n height: '100%',\n});\n\nconst Thumb = styled(BaseSlider.Thumb, {\n all: 'unset',\n display: 'block',\n width: '$8',\n height: '$8',\n backgroundColor: '$primary_default',\n cursor: 'pointer',\n boxShadow: `0 2px 10px $colors$surface_default`,\n borderRadius: 10,\n '&:hover': { backgroundColor: '$primary_default' },\n '&:focus': { boxShadow: 'none' },\n});\n\ntype SliderProps = React.ComponentProps<typeof Root> & {\n thumbStyles?: CSS;\n showTooltip?: boolean;\n};\n\nexport const Slider: React.FC<SliderProps & { showTooltip?: boolean }> = ({\n showTooltip = true,\n thumbStyles,\n ...props\n}) => (\n <Root {...props}>\n <Track>\n <Range />\n </Track>\n {showTooltip ? (\n <Tooltip title={String(props.value?.[0])}>\n <Thumb css={thumbStyles} />\n </Tooltip>\n ) : (\n <Thumb css={thumbStyles} />\n )}\n </Root>\n);\n", "import { Root } from '@radix-ui/react-dialog';\nimport { styled } from '@stitches/react';\nimport {\n DialogClose,\n DialogDefaultCloseIcon,\n DialogDescription,\n DialogTitle,\n StyledDialogContent,\n StyledDialogOverlay,\n StyledDialogPortal,\n StyledDialogTrigger,\n} from './DialogContent';\n\nconst StyledDialog = styled(Root, {});\n\nexport const Dialog = {\n Root: StyledDialog,\n Trigger: StyledDialogTrigger,\n Overlay: StyledDialogOverlay,\n Content: StyledDialogContent,\n Title: DialogTitle,\n Description: DialogDescription,\n Close: DialogClose,\n DefaultClose: DialogDefaultCloseIcon,\n Portal: StyledDialogPortal,\n};\n", "import React, { ComponentProps } from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { CrossIcon } from '@100mslive/react-icons';\nimport { IconButton } from '../IconButton';\nimport { styled } from '../Theme';\nimport { dialogClose, dialogOpen } from '../utils/animations';\n\nexport const DialogClose = styled(DialogPrimitive.Close, {\n backgroundColor: 'transparent',\n padding: '0',\n margin: '0',\n border: 'none',\n backgroundImage: 'none',\n});\n\nexport const StyledDialogTrigger = styled(DialogPrimitive.Trigger, {\n appearance: 'none !important', // Needed for safari it shows white overlay\n});\n\nexport const StyledDialogOverlay = styled(DialogPrimitive.Overlay, {\n backgroundColor: 'rgba(0, 0, 0, 0.5);',\n position: 'fixed',\n inset: 0,\n});\n\nexport const StyledDialogPortal = styled(DialogPrimitive.Portal, {});\n\nexport const StyledDialogContent = styled(DialogPrimitive.Content, {\n color: '$on_surface_medium',\n backgroundColor: '$surface_default',\n borderRadius: '8px',\n position: 'fixed',\n top: '50%',\n left: '50%',\n border: '$space$px solid $border_bright',\n boxShadow: '0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)',\n transform: 'translate(-50%, -50%)',\n zIndex: 999,\n padding: '$12',\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${dialogOpen} 150ms cubic-bezier(0.16, 1, 0.3, 1)`,\n },\n '&[data-state=\"closed\"]': {\n animation: `${dialogClose} 150ms cubic-bezier(0.16, 1, 0.3, 1)`,\n },\n },\n '&:focus': { outline: 'none' },\n});\n\nexport const DialogTitle = styled(DialogPrimitive.Title, {\n margin: 0,\n});\n\nexport const DialogDescription = styled(DialogPrimitive.Description, {});\n\nexport const DialogDefaultCloseIcon = (props: ComponentProps<typeof IconButton>) => (\n <DialogClose asChild>\n <IconButton {...props}>\n <CrossIcon />\n </IconButton>\n </DialogClose>\n);\n", "import React, { ComponentProps, PropsWithChildren, PropsWithRef } from 'react';\nimport { CSS } from '@stitches/react';\nimport { CopyIcon, EyeCloseIcon, EyeOpenIcon } from '@100mslive/react-icons';\nimport { Flex } from '../Layout';\nimport { styled } from '../Theme';\n\nexport const Input = styled('input', {\n fontFamily: '$sans',\n lineHeight: 'inherit',\n backgroundColor: '$surface_default',\n borderRadius: '8px',\n outline: 'none',\n border: '1px solid $border_default',\n padding: '0.5rem 0.75rem',\n minHeight: '30px',\n color: '$on_surface_high',\n fontSize: '$md',\n '&:focus': {\n boxShadow: '0 0 0 1px $colors$primary_default',\n border: '1px solid transparent',\n },\n '&::placeholder': {\n color: '$on_surface_medium',\n },\n variants: {\n alert_error_default: {\n true: {\n '&:focus': {\n boxShadow: '0 0 0 3px $colors$alert_error_default',\n },\n },\n },\n },\n});\n\nconst PasswordRoot = styled('div', {\n w: '100%',\n position: 'relative',\n display: 'flex',\n});\n\nconst PasswordShowIcon: React.FC<ComponentProps<typeof Flex> & { showPassword?: boolean; css?: CSS }> = ({\n showPassword,\n css,\n ...props\n}) => {\n return (\n <Flex css={{ ...css }} {...props}>\n {showPassword ? <EyeOpenIcon /> : <EyeCloseIcon />}\n </Flex>\n );\n};\n\nconst PasswordCopyIcon: React.FC<ComponentProps<typeof Flex & { css?: CSS }>> = ({ css, ...props }) => {\n return (\n <Flex css={{ ...css }} {...props}>\n <CopyIcon />\n </Flex>\n );\n};\n\nconst PasswordIcons = React.forwardRef<HTMLDivElement, PropsWithChildren<ComponentProps<typeof Flex & { css?: CSS }>>>(\n ({ css, ...props }, ref) => {\n return (\n <Flex\n css={{\n position: 'absolute',\n top: 0,\n height: '100%',\n zIndex: 10,\n right: '$4',\n bg: '$surface_bright',\n alignItems: 'center',\n ...css,\n }}\n ref={ref}\n {...props}\n >\n {props.children}\n </Flex>\n );\n },\n);\n\nconst ReactInput: React.FC<PropsWithRef<ComponentProps<typeof Input> & { showPassword?: boolean; css?: CSS }>> =\n React.forwardRef<\n HTMLInputElement,\n PropsWithRef<ComponentProps<typeof Input> & { showPassword?: boolean; css?: CSS }>\n >(({ showPassword = false, css, ...props }, ref) => {\n return (\n <Input\n css={{ flexGrow: 1, width: '100%', ...css }}\n type={showPassword ? 'text' : 'password'}\n {...props}\n ref={ref}\n />\n );\n });\n\nexport const PasswordInput = {\n Root: PasswordRoot,\n Icons: PasswordIcons,\n Input: ReactInput,\n ShowIcon: PasswordShowIcon,\n CopyIcon: PasswordCopyIcon,\n};\n", "import { Box } from '../Layout';\nimport { styled } from '../Theme';\nimport { flexCenter } from '../utils';\n\nexport const Root = styled('div', {\n padding: '0.75rem',\n // show videotile context menu on hover\n // [`&:hover .tile-menu`]: {\n // display: 'inline-block',\n // },\n});\n\nconst Container = styled('div', {\n width: '100%',\n height: '100%',\n position: 'relative',\n overflow: 'hidden',\n borderRadius: '$2',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n background: '$background_default',\n variants: {\n transparentBg: {\n true: {\n background: 'transparent',\n },\n },\n noRadius: {\n true: {\n borderRadius: 0,\n },\n },\n },\n});\n\nconst Overlay = styled('div', {\n position: 'absolute',\n width: '100%',\n height: '100%',\n});\n\nconst Info = styled('div', {\n color: '$on_primary_high',\n position: 'absolute',\n bottom: '5px',\n left: '50%',\n fontSize: '$sm',\n transform: 'translateX(-50%)',\n textAlign: 'center',\n width: '80%',\n overflow: 'hidden',\n whiteSpace: 'nowrap',\n textOverflow: 'ellipsis',\n fontFamily: '$sans',\n});\n\nconst AttributeBox = styled('div', {\n position: 'absolute',\n top: '$4',\n color: '$on_secondary_high',\n bg: '$secondary_dim',\n borderRadius: '$round',\n width: '$14',\n height: '$14',\n mb: '5px',\n ...flexCenter,\n variants: {\n size: {\n small: {\n width: '$10',\n height: '$10',\n '& > svg': {\n width: '$8',\n height: '$8',\n },\n },\n medium: {\n width: '$13',\n height: '$13',\n },\n },\n position: {\n left: { left: '$4' },\n right: { right: '$4' },\n },\n },\n defaultVariants: {\n size: 'medium',\n position: 'left',\n },\n});\n\nconst AudioIndicator = styled(AttributeBox, { defaultVariants: { position: 'right' } });\n\nconst FullScreenButton = styled('button', {\n width: '2.25rem',\n height: '2.25rem',\n color: '$on_surface_high',\n borderRadius: '$round',\n backgroundColor: '$surface_default',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n position: 'absolute',\n top: '$2',\n right: '$2',\n zIndex: 5,\n '&:not([disabled]):focus': {\n outline: 'none',\n boxShadow: '0 0 0 3px $colors$primary_bright',\n },\n});\n\nconst AvatarContainer = styled(Box, {\n ...flexCenter,\n flexDirection: 'column',\n position: 'absolute',\n left: '50%',\n top: '50%',\n transform: 'translateX(-50%) translateY(-50%)',\n width: '40%',\n height: '40%',\n '& > div': {\n maxHeight: '$20',\n height: '100%',\n },\n});\n\ninterface VideoTileType {\n Root: typeof Root;\n Container: typeof Container;\n Overlay: typeof Overlay;\n Info: typeof Info;\n AvatarContainer: typeof AvatarContainer;\n AttributeBox: typeof AttributeBox;\n AudioIndicator: typeof AudioIndicator;\n FullScreenButton: typeof FullScreenButton;\n}\n\nexport const StyledVideoTile: VideoTileType = {\n Root,\n Container,\n Overlay,\n Info,\n AvatarContainer,\n AttributeBox,\n AudioIndicator,\n FullScreenButton,\n};\n", "export const getLeft = (index: number, currentPageIndex: number) => {\n //active slide\n if (index === currentPageIndex) {\n return 0;\n }\n //prev slide\n if (index + 1 === currentPageIndex) {\n return '-100%';\n }\n //next slide\n if (index - 1 === currentPageIndex) {\n return '100%';\n }\n //all slides before prev\n if (index < currentPageIndex) {\n return '-200%';\n }\n //all slides after next\n return '200%';\n};\n", "import { styled } from '../Theme';\n\nconst Root = styled('div', {\n height: '100%',\n width: '100%',\n display: 'flex',\n flexDirection: 'column',\n});\n\nconst Container = styled('div', {\n height: '100%',\n width: '100%',\n position: 'relative',\n display: 'flex',\n alignItems: 'center',\n overflow: 'hidden',\n});\n\nconst View = styled('div', {\n height: '100%',\n width: '100%',\n position: 'absolute',\n display: 'flex',\n placeContent: 'center',\n flexWrap: 'wrap',\n alignItems: 'center',\n});\n\ninterface VideoListType {\n Root: typeof Root;\n Container: typeof Container;\n View: typeof View;\n}\n\nexport const StyledVideoList: VideoListType = {\n Root,\n Container,\n View,\n};\n", "import { styled } from '../Theme';\n\nconst Root = styled('div', {\n height: '2rem',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n '& > * + *': {\n marginRight: '0',\n marginLeft: '0.5rem',\n },\n});\n\nconst Chevron = styled('button', {\n color: '$on_surface_high',\n '&:focus': {\n outline: 'none',\n },\n '&[disabled]': {\n color: '$on_surface_low',\n cursor: 'not-allowed',\n },\n backgroundColor: 'transparent',\n display: 'flex',\n});\n\nconst Dots = styled('div', {\n display: 'flex',\n alignItems: 'center',\n '& > * + *': {\n marginRight: '0',\n marginLeft: '0.5rem',\n },\n});\n\nconst Dot = styled('button', {\n '&:focus': {\n outline: 'none',\n },\n borderRadius: '9999px',\n width: '0.5rem',\n height: '0.5rem',\n backgroundColor: '$on_surface_low',\n padding: '0px',\n border: 'none',\n cursor: 'pointer',\n variants: {\n active: {\n true: {\n backgroundColor: '$on_surface_high',\n },\n },\n },\n});\n\ninterface PaginationType {\n Root: typeof Root;\n Chevron: typeof Chevron;\n Dots: typeof Dots;\n Dot: typeof Dot;\n}\n\nexport const StyledPagination: PaginationType = {\n Root,\n Chevron,\n Dots,\n Dot,\n};\n", "import {\n CheckboxItem,\n Content,\n Group,\n Item,\n ItemIndicator,\n Label,\n Portal,\n Root,\n Separator,\n Sub,\n SubContent,\n SubTrigger,\n Trigger,\n} from '@radix-ui/react-dropdown-menu';\nimport { styled } from '../Theme';\n\nconst DropdownRoot = styled(Root, {});\n\nconst DropdownTrigger = styled(Trigger, {\n cursor: 'pointer',\n appearance: 'none !important',\n '&[data-state=\"open\"]': {\n backgroundColor: '$surface_bright',\n },\n '&:focus': {\n outline: 'none',\n },\n '&:focus-visible': {\n boxShadow: '0 0 0 3px $colors$primary_default',\n },\n});\n\nconst DropdownTriggerItem = styled(SubTrigger, {\n w: '100%',\n color: '$on_surface_high',\n p: '$8',\n display: 'flex',\n alignItems: 'center',\n '&:hover': {\n cursor: 'pointer',\n bg: '$surface_brighter',\n },\n '&:focus-visible': {\n bg: '$surface_brighter',\n outline: 'none',\n },\n});\n\nconst DropdownItem = styled(Item, {\n color: '$on_surface_high',\n p: '$8',\n display: 'flex',\n alignItems: 'center',\n outline: 'none',\n backgroundColor: '$surface_dim',\n '&:hover': {\n cursor: 'pointer',\n bg: '$surface_bright',\n },\n '&:focus-visible': {\n bg: '$surface_bright',\n },\n});\n\nconst DropdownItemSeparator = styled(Separator, {\n h: 1,\n backgroundColor: '$border_bright',\n m: '$4 $8',\n});\n\nconst DropdownContent = styled(Content, {\n w: '$80',\n maxHeight: '$64',\n r: '$1',\n py: '$4',\n backgroundColor: '$surface_dim',\n overflowY: 'auto',\n boxShadow: '0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)',\n zIndex: 20,\n fontFamily: '$sans',\n});\n\nconst DropdownLabel = styled(Label, {\n display: 'flex',\n alignItems: 'center',\n h: '$12',\n w: '100%',\n p: '$8 $4',\n});\n\nconst DropdownGroup = styled(Group, {});\n\nconst DropdownSubMenu = styled(Sub, {});\n\nconst DropdownSubMenuContent = styled(SubContent, {\n w: '$80',\n maxHeight: '$64',\n r: '$1',\n py: '$4',\n backgroundColor: '$surface_bright',\n overflowY: 'auto',\n boxShadow: '0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)',\n zIndex: 20,\n});\n\nconst DropdownCheckboxItem = styled(CheckboxItem, {\n color: '$on_surface_high',\n p: '$8',\n display: 'flex',\n alignItems: 'center',\n outline: 'none',\n '&:hover': {\n cursor: 'pointer',\n bg: '$surface_brighter',\n },\n '&:focus-visible': {\n bg: '$surface_brighter',\n },\n gap: '$2',\n});\n\nconst DropdownItemIndicator = styled(ItemIndicator, {\n w: '$10',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nexport const Dropdown = {\n Root: DropdownRoot,\n Trigger: DropdownTrigger,\n TriggerItem: DropdownTriggerItem,\n Content: DropdownContent,\n Portal: Portal,\n SubMenu: DropdownSubMenu,\n SubMenuContent: DropdownSubMenuContent,\n Item: DropdownItem,\n Label: DropdownLabel,\n Group: DropdownGroup,\n ItemSeparator: DropdownItemSeparator,\n CheckboxItem: DropdownCheckboxItem,\n ItemIndicator: DropdownItemIndicator,\n};\n", "import React from 'react';\nimport type { VariantProps } from '@stitches/react';\nimport { HMSPeer, useVideo } from '@100mslive/react-sdk';\nimport { styled } from '../Theme';\n\nexport const StyledVideo = styled('video', {\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n borderRadius: '$2',\n objectFit: 'cover',\n background: '$background_default',\n variants: {\n mirror: {\n true: {\n transform: 'scaleX(-1)',\n },\n },\n screenShare: {\n true: {\n objectFit: 'contain',\n },\n },\n degraded: {\n // send the video behind when it's degraded so avatar can show on top of it. Video will be stuck frame in this case.\n // not hiding by using display none, because it will lead it to be detached as it will no longer be in view.\n true: {\n zIndex: -100,\n },\n },\n noRadius: {\n true: {\n borderRadius: 0,\n },\n },\n },\n defaultVariants: {\n mirror: false,\n },\n});\n\ntype StyledProps = VariantProps<typeof StyledVideo> & React.ComponentProps<typeof StyledVideo>;\n\ninterface Props {\n /**\n * trackID for peer (videoTrack)\n */\n trackId: HMSPeer['videoTrack'];\n /**\n * Boolean stating whether to override the internal behaviour.\n * when attach is false, even if tile is inView or enabled, it won't be rendered\n */\n attach?: boolean;\n}\n\nexport const Video: React.FC<Props & StyledProps> = ({ trackId, attach, ...props }) => {\n const { videoRef } = useVideo({ trackId, attach });\n return <StyledVideo autoPlay muted playsInline controls={false} ref={videoRef} {...props} />;\n};\n", "import * as Popover from '@radix-ui/react-popover';\nimport { styled } from '../Theme';\nimport { popoverAnimation } from '../utils/animations';\nimport { flexCenter } from '../utils/styles';\n\nconst Root = Popover.Root;\n\nconst StyledTrigger = styled(Popover.Trigger, {\n position: 'absolute',\n bottom: '$2',\n right: '$2',\n zIndex: 10,\n width: '$13',\n height: '$13',\n color: '$on_surface_high',\n borderRadius: '$2',\n backgroundColor: '$surface_bright',\n cursor: 'pointer',\n border: 'none',\n ...flexCenter,\n '&:not([disabled]):focus': {\n outline: 'none',\n boxShadow: '0 0 0 3px $colors$primary_bright',\n },\n});\n\nconst StyledContent = styled(Popover.Content, {\n fontFamily: '$sans',\n backgroundColor: '$surface_dim',\n padding: '$5 0',\n display: 'flex',\n flexDirection: 'column',\n borderRadius: '$space$6',\n zIndex: 11,\n width: '$60',\n ...popoverAnimation,\n});\n\nconst styledItem = {\n fontSize: '$sm',\n color: '$on_surface_high',\n display: 'flex',\n alignItems: 'center',\n padding: '$4 $6',\n width: '100%',\n backgroundColor: '$menuBg',\n};\n\nconst StyledItemButton = styled('button', {\n ...styledItem,\n height: '$14',\n '&:hover': {\n backgroundColor: '$surface_brighter',\n },\n cursor: 'pointer',\n // TODO: default focus applied cause issues with this style\n '&:focus': {\n outline: 'none',\n // backgroundColor: '$grey3',\n },\n '& > * + *': {\n marginRight: '0',\n marginLeft: '$4',\n },\n});\n\nconst StyledVolumeItem = styled('div', {\n // TODO: maybe keep this as base comp and extend button variant\n ...styledItem,\n alignItems: 'start',\n flexDirection: 'column',\n marginBottom: '0',\n});\n\nexport const Flex = styled('div', {\n display: 'flex',\n '& > * + *': {\n marginRight: '0',\n marginLeft: '$4',\n },\n});\n\nconst RemoveMenuItem = styled(StyledItemButton, {\n color: '$alert_error_default',\n borderTop: '1px solid $border_bright',\n});\n\ninterface MenuTileType {\n Root: typeof Root;\n Trigger: typeof StyledTrigger;\n Content: typeof StyledContent;\n ItemButton: typeof StyledItemButton;\n VolumeItem: typeof StyledVolumeItem;\n RemoveItem: typeof RemoveMenuItem;\n}\n\nexport const StyledMenuTile: MenuTileType = {\n Root,\n Trigger: StyledTrigger,\n Content: StyledContent,\n ItemButton: StyledItemButton,\n VolumeItem: StyledVolumeItem,\n RemoveItem: RemoveMenuItem,\n};\n", "import { useCallback, useRef } from 'react';\nimport { HMSTrackID } from '@100mslive/hms-video-store';\nimport { useAudioLevelStyles } from '@100mslive/react-sdk';\nimport { useTheme } from '../Theme';\n\n/**\n * pass in a track id and get a ref. That ref can be attached to an element which will have border\n * as per audio level post that.\n */\nexport function useBorderAudioLevel(audioTrackId?: HMSTrackID) {\n const { theme } = useTheme();\n const color = theme.colors.primary_default.value;\n const getStyle = useCallback(\n (level: number) => {\n const style: Record<string, string> = {\n transition: 'outline 0.4s ease-in-out',\n };\n style['outline'] = level ? `${sigmoid(level) * 4}px solid ${color}` : '0px solid transparent';\n return style;\n },\n [color],\n );\n const ref = useRef(null);\n useAudioLevelStyles({\n trackId: audioTrackId,\n getStyle,\n ref,\n });\n return ref;\n}\n\nexport const sigmoid = (z: number) => {\n return 1 / (1 + Math.exp(-z));\n};\n", "import { Arrow, Close, Content, Popover as Root, Portal, Trigger } from '@radix-ui/react-popover';\nimport { styled } from '../Theme';\nimport { popoverAnimation } from '../utils/animations';\n\nconst StyledContent = styled(Content, {\n padding: '$6',\n borderRadius: '$2',\n backgroundColor: '$background_default',\n boxShadow: '$sm',\n zIndex: 12,\n ...popoverAnimation,\n});\n\nconst StyledArrow = styled(Arrow, {\n ...popoverAnimation,\n});\n\nconst StyledTrigger = styled(Trigger, {});\n\nexport const Popover = {\n Root,\n Content: StyledContent,\n Trigger: StyledTrigger,\n Portal: Portal,\n Arrow: StyledArrow,\n Close: Close,\n};\n", "import React, { Fragment } from 'react';\nimport {\n HMSPeerID,\n HMSTrackID,\n HMSTrackStats,\n RID,\n selectConnectionQualityByPeerID,\n selectHMSStats,\n simulcastMapping,\n useHMSStatsStore,\n useHMSStore,\n} from '@100mslive/react-sdk';\nimport { Tooltip } from '../Tooltip';\nimport { formatBytes } from './formatBytes';\nimport { Stats } from './StyledStats';\n\nexport interface VideoTileStatsProps {\n videoTrackID?: HMSTrackID;\n audioTrackID?: HMSTrackID;\n peerID?: HMSPeerID;\n isLocal: boolean;\n}\n\n/**\n * This component can be used to overlay webrtc stats over the Video Tile. For the local tracks it also includes\n * remote inbound stats as sent by the SFU in receiver report.\n */\nexport function VideoTileStats({ videoTrackID, audioTrackID, peerID, isLocal = false }: VideoTileStatsProps) {\n const audioSelector = isLocal ? selectHMSStats.localAudioTrackStatsByID : selectHMSStats.trackStatsByID;\n const audioTrackStats = useHMSStatsStore(audioSelector(audioTrackID));\n const localVideoTrackStats = useHMSStatsStore(selectHMSStats.localVideoTrackStatsByID(videoTrackID));\n const remoteVideoTrackStats = useHMSStatsStore(selectHMSStats.trackStatsByID(videoTrackID));\n const videoTrackStats = isLocal ? localVideoTrackStats?.[0] : remoteVideoTrackStats;\n const downlinkScore = useHMSStore(selectConnectionQualityByPeerID(peerID))?.downlinkQuality;\n const availableOutgoingBitrate = useHMSStatsStore(selectHMSStats.availablePublishBitrate);\n\n // Viewer role - no stats to show\n if (!(audioTrackStats || videoTrackStats)) {\n return null;\n }\n return (\n <Stats.Root>\n <table>\n <tbody>\n {isLocal ? (\n <Fragment>\n <StatsRow\n show={isNotNullishAndNot0(availableOutgoingBitrate)}\n label=\"AOBR\"\n tooltip=\"Available Outgoing Bitrate\"\n value={formatBytes(availableOutgoingBitrate, 'b/s')}\n />\n {localVideoTrackStats?.map(stat => {\n if (!stat) {\n return null;\n }\n const layer = stat.rid ? simulcastMapping[stat.rid as RID] : '';\n return (\n <Fragment>\n {layer && <StatsRow label={layer.toUpperCase()} value=\"\" />}\n <StatsRow\n show={isNotNullishAndNot0(stat.frameWidth)}\n label=\"Width\"\n value={stat.frameWidth?.toString()}\n />\n <StatsRow\n show={isNotNullishAndNot0(stat.frameHeight)}\n label=\"Height\"\n value={stat.frameHeight?.toString()}\n />\n <StatsRow\n show={isNotNullishAndNot0(stat.framesPerSecond)}\n label=\"FPS\"\n value={`${stat.framesPerSecond} ${\n isNotNullishAndNot0(stat.framesDropped) ? `(${stat.framesDropped} dropped)` : ''\n }`}\n />\n <StatsRow\n show={isNotNullish(stat.bitrate)}\n label=\"Bitrate(V)\"\n value={formatBytes(stat.bitrate, 'b/s')}\n />\n <Stats.Gap />\n </Fragment>\n );\n })}\n </Fragment>\n ) : (\n <Fragment>\n <StatsRow\n show={isNotNullishAndNot0(videoTrackStats?.frameWidth)}\n label=\"Width\"\n value={videoTrackStats?.frameWidth?.toString()}\n />\n <StatsRow\n show={isNotNullishAndNot0(videoTrackStats?.frameHeight)}\n label=\"Height\"\n value={videoTrackStats?.frameHeight?.toString()}\n />\n <StatsRow\n show={isNotNullishAndNot0(videoTrackStats?.framesPerSecond)}\n label=\"FPS\"\n value={`${videoTrackStats?.framesPerSecond} ${\n isNotNullishAndNot0(videoTrackStats?.framesDropped)\n ? `(${videoTrackStats?.framesDropped} dropped)`\n : ''\n }`}\n />\n <StatsRow\n show={isNotNullish(videoTrackStats?.bitrate)}\n label=\"Bitrate(V)\"\n value={formatBytes(videoTrackStats?.bitrate, 'b/s')}\n />\n </Fragment>\n )}\n\n <StatsRow\n show={isNotNullish(audioTrackStats?.bitrate)}\n label=\"Bitrate(A)\"\n value={formatBytes(audioTrackStats?.bitrate, 'b/s')}\n />\n\n <StatsRow show={isNotNullish(downlinkScore)} label=\"Downlink\" value={downlinkScore} />\n\n <StatsRow show={isNotNullish(videoTrackStats?.codec)} label=\"Codec(V)\" value={videoTrackStats?.codec} />\n\n <StatsRow show={isNotNullish(audioTrackStats?.codec)} label=\"Codec(A)\" value={audioTrackStats?.codec} />\n\n <PacketLostAndJitter audioTrackStats={audioTrackStats} videoTrackStats={videoTrackStats} />\n </tbody>\n </table>\n </Stats.Root>\n );\n}\n\nconst PacketLostAndJitter = ({\n audioTrackStats,\n videoTrackStats,\n}: {\n audioTrackStats?: HMSTrackStats;\n videoTrackStats?: HMSTrackStats;\n}) => {\n // for local peer, we'll use the remote inbound stats to get packet loss and jitter, to know whether the track is\n // local we check if the stats type has outbound in it as it's being published from local. Both audio and video\n // tracks are checked in case the user has permission to publish only one of them.\n const isLocalPeer = audioTrackStats?.type.includes('outbound') || videoTrackStats?.type.includes('outbound');\n const audioStats = isLocalPeer ? audioTrackStats?.remote : audioTrackStats;\n const videoStats = isLocalPeer ? videoTrackStats?.remote : videoTrackStats;\n return (\n <>\n <TrackPacketsLostRow label=\"Packet Loss(V)\" stats={videoStats} />\n <TrackPacketsLostRow label=\"Packet Loss(A)\" stats={audioStats} />\n <StatsRow show={isNotNullish(videoStats?.jitter)} label=\"Jitter(V)\" value={videoStats?.jitter?.toFixed(4)} />\n <StatsRow show={isNotNullish(audioStats?.jitter)} label=\"Jitter(A)\" value={audioStats?.jitter?.toFixed(4)} />\n </>\n );\n};\n\nconst TrackPacketsLostRow = ({\n stats,\n label,\n}: {\n stats?: Pick<HMSTrackStats, 'packetsLost' | 'packetsLostRate'>;\n label: string;\n}) => {\n const packetsLostRate = `${stats?.packetsLostRate ? stats.packetsLostRate.toFixed(2) : 0}/s`;\n\n return (\n <StatsRow\n show={isNotNullishAndNot0(stats?.packetsLost)}\n label={label}\n value={`${stats?.packetsLost}(${packetsLostRate})`}\n />\n );\n};\n\nconst RawStatsRow = ({\n label = '',\n value = '',\n tooltip = '',\n show = true,\n}: {\n label: string;\n value?: string | number;\n show?: boolean;\n tooltip?: string;\n}) => {\n const statsLabel = <Stats.Label css={{ fontWeight: !value ? '$semiBold' : '$regular' }}>{label}</Stats.Label>;\n\n return (\n <>\n {show ? (\n <Stats.Row>\n {tooltip ? (\n <Tooltip side=\"top\" title={tooltip}>\n {statsLabel}\n </Tooltip>\n ) : (\n statsLabel\n )}\n {value === '' ? <Stats.Value /> : <Stats.Value>{value}</Stats.Value>}\n </Stats.Row>\n ) : null}\n </>\n );\n};\n\n// memoize so only the rows which change rerender\nconst StatsRow = React.memo(RawStatsRow);\n\nexport function isNotNullishAndNot0(value: number | undefined | null) {\n return isNotNullish(value) && value !== 0;\n}\n\n/**\n * Check only for presence(not truthy) of a value.\n * Use in places where 0, false need to be considered valid.\n */\nexport function isNotNullish(value: number | string | undefined | null) {\n return value !== undefined && value !== null;\n}\n", "export const formatBytes = (bytes?: number, unit = 'B', decimals = 2) => {\n if (bytes === 0) {\n return `0 ${unit}`;\n }\n if (!bytes) {\n return '-';\n }\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['', 'K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y'].map(size => size + unit);\n\n let i = Math.floor(Math.log(bytes) / Math.log(k));\n\n // B to KB\n i === 0 && i++;\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n};\n", "import { styled } from '../Theme';\n\nexport const Root = styled('div', {\n backgroundColor: 'rgba(0,0,0,0.75)',\n position: 'absolute',\n top: '$3',\n left: '$3',\n zIndex: 7,\n borderRadius: '$2',\n padding: '$2',\n fontSize: '$xs',\n overflowY: 'auto',\n maxHeight: '75%',\n maxWidth: '85%',\n});\n\nexport const Table = styled('table', {});\n\nexport const Row = styled('tr', {\n width: '100%',\n '& > * + *': {\n px: '$4',\n },\n whiteSpace: 'nowrap',\n textAlign: 'left',\n});\n\nexport const Label = styled('td', {\n color: '$on_primary_high',\n fontWeight: '$regular',\n});\n\nexport const Value = styled('td', {\n color: '$on_primary_high',\n});\n\nexport const Gap = styled('tr', {\n height: '$4',\n});\n\ninterface StatsType {\n Root: typeof Root;\n Row: typeof Row;\n Label: typeof Label;\n Value: typeof Value;\n Table: typeof Table;\n Gap: typeof Gap;\n}\n\nexport const Stats: StatsType = {\n Root,\n Row,\n Label,\n Value,\n Table,\n Gap,\n};\n", "import * as CheckboxPrimitive from '@radix-ui/react-checkbox';\nimport { styled } from '../Theme';\n\nconst CheckboxRoot = styled(CheckboxPrimitive.Root, {\n all: 'unset',\n border: '1px solid $primary_default',\n backgroundColor: '$on_primary_high',\n width: '$8',\n height: '$8',\n borderRadius: '$0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n boxShadow: 'none',\n outline: 'none',\n cursor: 'pointer',\n '&:focus': {\n boxShadow: 'none',\n outline: 'none',\n },\n '&[data-state=\"checked\"]': {\n backgroundColor: '$primary_default',\n },\n});\n\nconst CheckboxIndicator = styled(CheckboxPrimitive.Indicator, {\n color: '$on_primary_high',\n});\n\nexport const Checkbox = {\n Root: CheckboxRoot,\n Indicator: CheckboxIndicator,\n};\n", "import * as LabelPrimitive from '@radix-ui/react-label';\nimport { styled } from '../Theme';\n\nexport const Label = styled(LabelPrimitive.Root, {\n fontFamily: '$sans',\n fontSize: '$md',\n color: '$on_primary_high',\n});\n", "import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport { styled } from '../Theme';\n\nconst RadioGroupRoot = styled(RadioGroupPrimitive.Root, {\n display: 'flex',\n alignItems: 'center',\n});\n\nconst RadioGroupItem = styled(RadioGroupPrimitive.Item, {\n bg: '$on_primary_high',\n width: '$8',\n height: '$8',\n border: '1px solid $primary_default',\n cursor: 'pointer',\n borderRadius: '$round',\n '&:focus': {\n boxShadow: 'none',\n outline: 'none',\n },\n '&[data-state=\"checked\"]': {\n borderWidth: '$space$2',\n p: '$1',\n },\n});\nconst RadioGroupIndicator = styled(RadioGroupPrimitive.Indicator, {\n bg: '$primary_default',\n});\n\nexport const RadioGroup = {\n Root: RadioGroupRoot,\n Item: RadioGroupItem,\n Indicator: RadioGroupIndicator,\n};\n", "import React, { ComponentProps } from 'react';\nimport type { ToastProps } from '@radix-ui/react-toast';\nimport * as ToastPrimitives from '@radix-ui/react-toast';\nimport { CrossIcon } from '@100mslive/react-icons';\nimport { IconButton } from '../IconButton';\nimport { Box, Flex } from '../Layout';\nimport { Text } from '../Text';\nimport { styled } from '../Theme';\nimport { toastAnimation } from '../utils';\n\nconst getToastVariant = (base: string) => {\n return {\n borderLeftColor: base,\n borderLeft: 0,\n '&:before': {\n position: 'absolute',\n top: '-1px',\n left: '-$4',\n width: '$8',\n borderLeft: `solid $space$px ${base}`,\n borderTop: `solid $space$px ${base}`,\n borderBottom: `solid $space$px ${base}`,\n borderTopLeftRadius: '$3',\n borderBottomLeftRadius: '$3',\n bg: base,\n content: ' ',\n height: '100%',\n zIndex: 10,\n },\n '@sm': {\n '&:before': {\n content: 'none',\n },\n border: `solid $space$px ${base}`,\n },\n };\n};\n\nconst ToastRoot = styled(ToastPrimitives.Root, {\n r: '$3',\n bg: '$surface_default',\n p: '$10',\n display: 'flex',\n flexDirection: 'column',\n position: 'relative',\n fontFamily: '$sans',\n border: 'solid $space$px $border_bright',\n overflow: 'hidden',\n ...toastAnimation,\n '@sm': {\n p: '$8 $11',\n },\n variants: {\n variant: {\n standard: getToastVariant('$secondary_default'),\n warning: getToastVariant('$alert_warning'),\n error: getToastVariant('$alert_error_default'),\n success: getToastVariant('$alert_success'),\n },\n },\n defaultVariants: {\n variant: 'standard',\n },\n});\n\nconst ToastTitle = styled(ToastPrimitives.Title, {\n fontSize: '$md',\n color: '$on_surface_high',\n fontWeight: '$semiBold',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n});\nconst ToastDescription = styled(ToastPrimitives.Description, {\n color: '$on_surface_medium',\n});\nconst ToastClose = styled(ToastPrimitives.Close, {});\nconst ToastAction = styled(ToastPrimitives.Action, {\n cursor: 'pointer',\n background: 'none',\n});\nconst ToastViewport = styled(ToastPrimitives.Viewport, {\n position: 'fixed',\n bottom: 0,\n left: 0,\n display: 'flex',\n flexDirection: 'column',\n padding: '$8',\n gap: 10,\n width: 390,\n '@sm': {\n width: '100%',\n padding: '$6',\n },\n maxWidth: '100vw',\n margin: 0,\n listStyle: 'none',\n zIndex: 1000,\n});\n\nconst DefaultClose = ({ css }: Pick<ComponentProps<typeof ToastClose>, 'css'>) => {\n return (\n <ToastClose css={css} asChild>\n <IconButton>\n <CrossIcon />\n </IconButton>\n </ToastClose>\n );\n};\n\ninterface HMSToastProps extends ToastProps {\n title: string;\n description?: string;\n isClosable?: boolean;\n icon?: React.ReactNode;\n action?: React.ReactNode;\n inlineAction?: boolean;\n}\n\nconst HMSToast: React.FC<HMSToastProps> = ({\n title,\n description,\n isClosable = true,\n icon,\n action,\n inlineAction = false,\n ...props\n}) => {\n return (\n <>\n <ToastRoot {...props}>\n <ToastTitle>\n <Flex align=\"center\" css={{ gap: '$4', flex: '1 1 0', minWidth: 0 }}>\n {icon ? <Box css={{ w: '$10', h: '$10', alignSelf: 'start', mt: '$2' }}>{icon}</Box> : null}\n <Text variant=\"sub1\" css={{ c: 'inherit', wordBreak: 'break-word' }}>\n {title}\n </Text>\n </Flex>\n {isClosable ? <DefaultClose /> : null}\n {!isClosable && inlineAction && action ? (\n <ToastAction altText={`${title}Action`}>{action}</ToastAction>\n ) : null}\n </ToastTitle>\n {description ? (\n <ToastDescription>\n <Text variant=\"body1\" css={{ fontWeight: '$regular', c: '$on_surface_medium' }}>\n {description}\n </Text>\n </ToastDescription>\n ) : null}\n {!inlineAction && action ? (\n <ToastAction altText={`${title}Action`} css={{ mt: '$10' }}>\n {action}\n </ToastAction>\n ) : null}\n </ToastRoot>\n </>\n );\n};\nexport const Toast = {\n Provider: ToastPrimitives.Provider,\n Root: ToastRoot,\n Title: ToastTitle,\n Description: ToastDescription,\n Close: DefaultClose,\n Action: ToastAction,\n Viewport: ToastViewport,\n HMSToast: HMSToast,\n};\n", "import React, { PropsWithChildren } from 'react';\nimport * as BaseAccordion from '@radix-ui/react-accordion';\nimport { CSS } from '@stitches/react';\nimport { ChevronUpIcon } from '@100mslive/react-icons';\nimport { Box } from '../Layout';\nimport { styled } from '../Theme';\nimport { slideDown, slideUp } from '../utils';\n\nconst StyledAccordion = styled(BaseAccordion.Root, {});\n\nconst StyledItem = styled(BaseAccordion.Item, {\n marginTop: '$px',\n display: 'block',\n '&:first-child': {\n marginTop: 0,\n borderTopLeftRadius: '$0',\n borderTopRightRadius: '$0',\n },\n '&:last-child': {\n borderBottomLeftRadius: '$4',\n borderBottomRightRadius: '$4',\n },\n});\n\nconst StyledHeader = styled(BaseAccordion.Header, {\n all: 'unset',\n display: 'flex',\n fontFamily: '$sans',\n});\n\nconst StyledTrigger = styled(BaseAccordion.Trigger, {\n all: 'unset',\n fontFamily: '$sans',\n flex: 1,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n fontSize: '$md',\n lineHeight: '$md',\n color: '$on_surface_high',\n});\n\nconst StyledContent = styled(BaseAccordion.Content, {\n display: 'contents',\n fontSize: '$md',\n fontFamily: '$sans',\n color: '$on_surface_medium',\n '&[data-state=\"open\"]': {\n animation: `${slideDown('--radix-accordion-content-height')} 300ms cubic-bezier(0.87, 0, 0.13, 1) forwards`,\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideUp('--radix-accordion-content-height')} 300ms cubic-bezier(0.87, 0, 0.13, 1) forwards`,\n },\n});\n\nconst StyledChevron = styled(ChevronUpIcon, {\n color: '$on_primary_high',\n transition: 'transform 300ms cubic-bezier(0.87, 0, 0.13, 1)',\n '[data-state=closed] &': { transform: 'rotate(180deg)' },\n});\n\n// Exports\nexport const AccordionRoot = StyledAccordion;\nexport const AccordionItem = StyledItem;\n\nexport const AccordionHeader: React.FC<\n PropsWithChildren<BaseAccordion.AccordionTriggerProps & { iconStyles?: CSS; css?: CSS }>\n> = React.forwardRef<\n HTMLButtonElement,\n PropsWithChildren<BaseAccordion.AccordionTriggerProps & { iconStyles?: CSS; css?: CSS }>\n>(({ children, iconStyles, css, ...props }, forwardedRef) => (\n <StyledHeader css={css}>\n <StyledTrigger {...props} ref={forwardedRef}>\n {children}\n <StyledChevron aria-hidden css={iconStyles} />\n </StyledTrigger>\n </StyledHeader>\n));\n\nexport const AccordionContent: React.FC<\n PropsWithChildren<BaseAccordion.AccordionContentProps & { contentStyles?: CSS }>\n> = React.forwardRef<HTMLDivElement, PropsWithChildren<BaseAccordion.AccordionContentProps & { contentStyles?: CSS }>>(\n ({ children, contentStyles, ...props }, forwardedRef) => (\n <StyledContent {...props} ref={forwardedRef}>\n <Box css={contentStyles}>{children}</Box>\n </StyledContent>\n ),\n);\n", "import { AccordionContent, AccordionHeader, AccordionItem, AccordionRoot } from './Accordion';\n\nexport const Accordion = {\n Root: AccordionRoot,\n Item: AccordionItem,\n Content: AccordionContent,\n Header: AccordionHeader,\n};\n", "import { styled } from '../Theme';\n\nconst StyledFieldset = styled('fieldset', {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n border: 'none',\n backgroundColor: '$transparent',\n});\n\nexport const Fieldset = StyledFieldset;\n", "import { Flex } from '../Layout';\nimport { styled } from '../Theme';\n\nconst Root = styled(Flex, {\n justifyContent: 'space-between',\n alignItems: 'center',\n py: '$4',\n position: 'relative',\n height: '100%',\n '@md': { flexWrap: 'wrap', gap: '$4' },\n});\n\nconst Left = styled(Flex, {\n alignItems: 'center',\n position: 'absolute',\n left: '$10',\n gap: '$8',\n '@md': {\n position: 'unset',\n justifyContent: 'center',\n w: '100%',\n },\n});\n\nconst Center = styled(Flex, {\n w: '100%',\n justifyContent: 'center',\n alignItems: 'center',\n gap: '$8',\n});\n\nconst Right = styled(Flex, {\n alignItems: 'center',\n position: 'absolute',\n right: '$10',\n gap: '$8',\n '@md': {\n display: 'none',\n },\n});\n\nexport const Footer = {\n Root,\n Left,\n Center,\n Right,\n};\n", "export { Select } from './ReactSelect';\n", "import * as SelectPrimitive from '@radix-ui/react-select';\nimport { styled } from '../Theme';\n\nconst StyledRoot = styled(SelectPrimitive.Root, {});\n\nconst StyledTrigger = styled(SelectPrimitive.SelectTrigger, {\n all: 'unset',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '$2',\n padding: '$8',\n lineHeight: '$px',\n gap: '$8',\n backgroundColor: '$secondary_default',\n color: '$on_primary_high',\n fontSize: '$8',\n cursor: 'pointer',\n r: '$1',\n});\n\nconst StyledContent = styled(SelectPrimitive.Content, {\n overflow: 'hidden',\n backgroundColor: '$surface_bright',\n r: '$1',\n h: '$80',\n});\n\nconst StyledViewport = styled(SelectPrimitive.Viewport, {\n padding: '$3',\n});\n\nconst StyledItem = styled(SelectPrimitive.Item, {\n all: 'unset',\n fontSize: '$7',\n r: '$1',\n display: 'flex',\n p: '$4 $8',\n w: '$52',\n position: 'relative',\n userSelect: 'none',\n cursor: 'pointer',\n});\n\nconst StyledLabel = styled(SelectPrimitive.Label, {\n p: '$4 $8',\n lineHeight: '$10',\n color: '$on_primary_high',\n});\n\nconst StyledSeparator = styled(SelectPrimitive.Separator, {\n height: '$px',\n backgroundColor: '$on_primary_high',\n margin: '$4',\n opacity: 0.4,\n});\n\nconst StyledItemIndicator = styled(SelectPrimitive.ItemIndicator, {\n position: 'absolute',\n right: '$8',\n width: '$8',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '$on_primary_high',\n});\n\nconst scrollButtonStyles = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n p: '$4',\n backgroundColor: '$surface_bright',\n color: '$on_primary_high',\n cursor: 'default',\n};\n\nconst StyledScrollUpButton = styled(SelectPrimitive.ScrollUpButton, scrollButtonStyles);\n\nconst StyledScrollDownButton = styled(SelectPrimitive.ScrollDownButton, scrollButtonStyles);\n\nexport const Select = {\n Root: StyledRoot,\n Trigger: StyledTrigger,\n Content: StyledContent,\n Viewport: StyledViewport,\n Item: StyledItem,\n Label: StyledLabel,\n Separator: StyledSeparator,\n ItemIndicator: StyledItemIndicator,\n ScrollUpButton: StyledScrollUpButton,\n ScrollDownButton: StyledScrollDownButton,\n Value: SelectPrimitive.Value,\n Icon: SelectPrimitive.Icon,\n ItemText: SelectPrimitive.ItemText,\n Group: SelectPrimitive.Group,\n};\n", "import * as TabsPrimitive from '@radix-ui/react-tabs';\nimport { styled } from '../Theme';\n\nconst StyledTabsRoot = styled(TabsPrimitive.Root, {\n display: 'flex',\n});\n\nconst StyledList = styled(TabsPrimitive.List, {\n flexShrink: 0,\n display: 'flex',\n});\n\nconst StyledTrigger = styled(TabsPrimitive.Trigger, {\n all: 'unset',\n fontFamily: '$sans',\n p: '$8',\n display: 'flex',\n alignItems: 'center',\n fontSize: '$sm',\n lineHeight: '$sm',\n color: '$on_surface_high',\n userSelect: 'none',\n cursor: 'pointer',\n '&[data-state=\"active\"]': {\n bg: '$surface_brighter',\n r: '$1',\n },\n});\n\nconst StyledContent = styled(TabsPrimitive.Content, {\n flex: '1 1 0',\n padding: '$10',\n outline: 'none',\n});\n\nexport const Tabs = {\n Root: StyledTabsRoot,\n List: StyledList,\n Content: StyledContent,\n Trigger: StyledTrigger,\n};\n", "import React, { ComponentProps } from 'react';\nimport { QRCodeSVG } from 'qrcode.react';\n\nexport const QRCode = (props: ComponentProps<typeof QRCodeSVG>) => {\n return <QRCodeSVG style={{ width: '100%', height: '100%' }} {...props} />;\n};\n", "import React from 'react';\nimport * as icons from '@100mslive/react-icons';\nimport { Flex } from '../Layout';\nimport { Text } from '../Text';\nimport { styled } from '../Theme';\n\nconst LinkComponent = styled('a', {\n textDecoration: 'none',\n display: 'flex',\n alignItems: 'center',\n gap: '$5',\n variants: {\n color: {\n highEmp: {\n color: '$on_surface_high',\n '&:hover': {\n color: '$on_surface_medium',\n },\n },\n primary: {\n color: '$primary_default',\n '&:hover': {\n color: '$primary_bright',\n },\n },\n },\n },\n});\n\nexport interface LinkProps extends React.ComponentProps<typeof LinkComponent> {\n as?: React.ElementType;\n iconSide?: 'left' | 'right' | 'none';\n icon?: keyof typeof icons;\n color?: 'highEmp' | 'primary';\n}\n\nexport const Link = ({ iconSide = 'left', icon, color = 'primary', children, ...rest }: LinkProps) => {\n const Icon = icon ? icons[icon] : React.Fragment;\n const renderedIcon = icon ? (\n <Flex as=\"span\">\n <Icon height={13.33} width={13.33} />{' '}\n </Flex>\n ) : null;\n\n return (\n <LinkComponent {...rest} color={color}>\n {iconSide === 'left' && renderedIcon}\n <Text as=\"span\" variant=\"body2\" css={{ color: 'inherit' }}>\n {children}\n </Text>\n {iconSide === 'right' && renderedIcon}\n </LinkComponent>\n );\n};\n", "import { Content, Root, Trigger } from '@radix-ui/react-collapsible';\nimport { styled } from '../Theme';\nimport { slideDown, slideUp } from '../utils';\n\nconst CollapsibleRoot = styled(Root, {});\n\nconst CollapsibleTrigger = styled(Trigger, {\n cursor: 'pointer',\n appearance: 'none !important',\n '&:focus': {\n outline: 'none',\n },\n '&:focus-visible': {\n boxShadow: '0 0 0 3px $colors$primary_default',\n },\n});\n\nconst CollapsibleContent = styled(Content, {\n w: '$80',\n r: '$1',\n overflowY: 'auto',\n '&[data-state=\"open\"]': {\n animation: `${slideDown('--radix-collapsible-content-height')} 300ms cubic-bezier(0.87, 0, 0.13, 1) forwards`,\n },\n '&[data-state=\"closed\"]': {\n animation: `${slideUp('--radix-collapsible-content-height')} 300ms cubic-bezier(0.87, 0, 0.13, 1) forwards`,\n },\n});\n\nexport const Collapsible = {\n Root: CollapsibleRoot,\n Trigger: CollapsibleTrigger,\n Content: CollapsibleContent,\n};\n", "import React, { MutableRefObject, ReactElement, Suspense, useEffect, useRef } from 'react';\nimport { BrowserRouter, MemoryRouter, Navigate, Route, Routes, useParams } from 'react-router-dom';\nimport { HMSStatsStoreWrapper, HMSStoreWrapper, IHMSNotifications } from '@100mslive/hms-video-store';\nimport { Layout, Logo, Screens, Theme, Typography } from '@100mslive/types-prebuilt';\nimport {\n HMSActions,\n HMSReactiveStore,\n HMSRoomProvider,\n selectIsConnectedToRoom,\n useHMSActions,\n useHMSStore,\n} from '@100mslive/react-sdk';\n// @ts-ignore: No implicit Any\nimport { AppData } from './components/AppData/AppData';\n// @ts-ignore: No implicit Any\nimport AuthToken from './components/AuthToken';\n// @ts-ignore: No implicit Any\nimport { ErrorBoundary } from './components/ErrorBoundary';\n// @ts-ignore: No implicit Any\nimport FullPageProgress from './components/FullPageProgress';\n// @ts-ignore: No implicit Any\nimport { Init } from './components/init/Init';\n// @ts-ignore: No implicit Any\nimport { KeyboardHandler } from './components/Input/KeyboardInputManager';\n// @ts-ignore: No implicit Any\nimport { Notifications } from './components/Notifications';\n// @ts-ignore: No implicit Any\nimport PostLeave from './components/PostLeave';\n// @ts-ignore: No implicit Any\nimport PreviewContainer from './components/Preview/PreviewContainer';\n// @ts-ignore: No implicit Any\nimport { ToastContainer } from './components/Toast/ToastContainer';\nimport { RoomLayoutContext, RoomLayoutProvider, useRoomLayout } from './provider/roomLayoutProvider';\nimport { Box } from '../Layout';\nimport { globalStyles, HMSThemeProvider } from '../Theme';\nimport { HMSPrebuiltContext, useHMSPrebuiltContext } from './AppContext';\n// @ts-ignore: No implicit Any\nimport { FlyingEmoji } from './plugins/FlyingEmoji';\n// @ts-ignore: No implicit Any\nimport { RemoteStopScreenshare } from './plugins/RemoteStopScreenshare';\n// @ts-ignore: No implicit Any\nimport { useIsNotificationDisabled } from './components/AppData/useUISettings';\nimport { useAutoStartStreaming } from './components/hooks/useAutoStartStreaming';\nimport {\n useRoomLayoutLeaveScreen,\n useRoomLayoutPreviewScreen,\n} from './provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\n// @ts-ignore: No implicit Any\nimport { FeatureFlags } from './services/FeatureFlags';\n\n// @ts-ignore: No implicit Any\nconst Conference = React.lazy(() => import('./components/conference'));\n\nexport type HMSPrebuiltOptions = {\n userName?: string;\n userId?: string;\n endpoints?: object;\n};\n\nexport type HMSPrebuiltProps = {\n roomCode?: string;\n logo?: Logo;\n typography?: Typography;\n themes?: Theme[];\n options?: HMSPrebuiltOptions;\n screens?: Screens;\n authToken?: string;\n roomId?: string;\n role?: string;\n onLeave?: () => void;\n};\n\nexport type HMSPrebuiltRefType = {\n hmsActions: HMSActions;\n hmsStore: HMSStoreWrapper;\n hmsStats: HMSStatsStoreWrapper;\n hmsNotifications: IHMSNotifications;\n};\n\nexport const HMSPrebuilt = React.forwardRef<HMSPrebuiltRefType, HMSPrebuiltProps>(\n (\n {\n roomCode = '',\n authToken = '',\n roomId = '',\n role = '',\n logo,\n typography,\n themes,\n options: { userName = '', userId = '', endpoints } = {},\n screens,\n onLeave,\n },\n ref,\n ) => {\n const metadata = '';\n const reactiveStore = useRef<HMSPrebuiltRefType>();\n\n const [hydrated, setHydrated] = React.useState(false);\n useEffect(() => {\n setHydrated(true);\n const hms = new HMSReactiveStore();\n const hmsStore = hms.getStore();\n const hmsActions = hms.getActions();\n const hmsNotifications = hms.getNotifications();\n const hmsStats = hms.getStats();\n hms.triggerOnSubscribe();\n\n reactiveStore.current = {\n hmsActions,\n hmsStats,\n hmsStore,\n hmsNotifications,\n };\n }, []);\n\n useEffect(() => {\n if (!ref || !reactiveStore.current) {\n return;\n }\n (ref as MutableRefObject<HMSPrebuiltRefType>).current = { ...reactiveStore.current };\n }, [ref]);\n\n // leave room when component unmounts\n useEffect(\n () => () => {\n reactiveStore?.current?.hmsActions.leave();\n },\n [],\n );\n\n const endpointsObj = endpoints as\n | {\n init: string;\n tokenByRoomCode: string;\n tokenByRoomIdRole: string;\n roomLayout: string;\n }\n | undefined;\n const tokenByRoomCodeEndpoint: string = endpointsObj?.tokenByRoomCode || '';\n const initEndpoint: string = endpointsObj?.init || '';\n const roomLayoutEndpoint: string = endpointsObj?.roomLayout || '';\n const tokenByRoomIdRoleEndpoint: string = endpointsObj?.tokenByRoomIdRole || '';\n\n const overrideLayout: Partial<Layout> = {\n logo,\n themes,\n typography,\n screens,\n };\n\n if (!roomCode && !(authToken && roomId && role)) {\n console.error(`\n HMSPrebuilt can be initialised by providing: \n either just \"roomCode\" or \"authToken\" and \"roomId\" and \"role\".\n Please check if you are providing the above values for initialising prebuilt.\n `);\n throw Error('Incorrect initializing params for HMSPrebuilt component');\n }\n\n if (!hydrated) {\n return null;\n }\n\n globalStyles();\n\n return (\n <ErrorBoundary>\n <HMSPrebuiltContext.Provider\n value={{\n roomCode,\n roomId,\n role,\n onLeave,\n userName,\n userId,\n endpoints: {\n tokenByRoomCode: tokenByRoomCodeEndpoint,\n init: initEndpoint,\n tokenByRoomIdRole: tokenByRoomIdRoleEndpoint,\n roomLayout: roomLayoutEndpoint,\n },\n }}\n >\n <HMSRoomProvider\n isHMSStatsOn={FeatureFlags.enableStatsForNerds}\n actions={reactiveStore.current?.hmsActions}\n store={reactiveStore.current?.hmsStore}\n notifications={reactiveStore.current?.hmsNotifications}\n stats={reactiveStore.current?.hmsStats}\n >\n <RoomLayoutProvider roomLayoutEndpoint={roomLayoutEndpoint} overrideLayout={overrideLayout}>\n <RoomLayoutContext.Consumer>\n {data => {\n const layout = data?.layout;\n const theme: Theme = layout?.themes?.[0] || ({} as Theme);\n const { typography } = layout || {};\n let fontFamily = ['sans-serif'];\n if (typography?.font_family) {\n fontFamily = [`${typography?.font_family}`, ...fontFamily];\n }\n\n return (\n <HMSThemeProvider\n // issue is with stichtes caching the theme using the theme name / class\n // no updates to the themes are fired if the name is same.\n // TODO: cache the theme and do deep check to trigger name change in the theme\n themeType={`${theme.name}-${Date.now()}`}\n theme={{\n //@ts-ignore: Prebuilt theme to match stiches theme\n colors: theme.palette,\n fonts: {\n //@ts-ignore: font list to match token types of stiches\n sans: fontFamily,\n },\n }}\n >\n <AppData appDetails={metadata} tokenEndpoint={tokenByRoomIdRoleEndpoint} />\n <Init />\n <Box\n css={{\n bg: '$background_dim',\n size: '100%',\n lineHeight: '1.5',\n '-webkit-text-size-adjust': '100%',\n }}\n >\n <AppRoutes authTokenByRoomCodeEndpoint={tokenByRoomCodeEndpoint} defaultAuthToken={authToken} />\n </Box>\n </HMSThemeProvider>\n );\n }}\n </RoomLayoutContext.Consumer>\n </RoomLayoutProvider>\n </HMSRoomProvider>\n </HMSPrebuiltContext.Provider>\n </ErrorBoundary>\n );\n },\n);\n\nHMSPrebuilt.displayName = 'HMSPrebuilt';\n\nconst Redirector = ({ showPreview }: { showPreview: boolean }) => {\n const { roomId, role } = useParams();\n return <Navigate to={`/${showPreview ? 'preview' : 'meeting'}/${roomId}/${role || ''}`} />;\n};\n\nconst RouteList = () => {\n const { isPreviewScreenEnabled } = useRoomLayoutPreviewScreen();\n const { isLeaveScreenEnabled } = useRoomLayoutLeaveScreen();\n useAutoStartStreaming();\n return (\n <Routes>\n {isPreviewScreenEnabled ? (\n <Route path=\"preview\">\n <Route\n path=\":roomId/:role\"\n element={\n <Suspense fallback={<FullPageProgress text=\"Loading preview...\" />}>\n <PreviewContainer />\n </Suspense>\n }\n />\n <Route\n path=\":roomId\"\n element={\n <Suspense fallback={<FullPageProgress text=\"Loading preview...\" />}>\n <PreviewContainer />\n </Suspense>\n }\n />\n </Route>\n ) : null}\n <Route path=\"meeting\">\n <Route\n path=\":roomId/:role\"\n element={\n <Suspense fallback={<FullPageProgress text=\"Joining...\" />}>\n <Conference />\n </Suspense>\n }\n />\n <Route\n path=\":roomId\"\n element={\n <Suspense fallback={<FullPageProgress text=\"Joining...\" />}>\n <Conference />\n </Suspense>\n }\n />\n </Route>\n {isLeaveScreenEnabled ? (\n <Route path=\"leave\">\n <Route path=\":roomId/:role\" element={<PostLeave />} />\n <Route path=\":roomId\" element={<PostLeave />} />\n </Route>\n ) : null}\n\n <Route path=\"/:roomId/:role\" element={<Redirector showPreview={isPreviewScreenEnabled} />} />\n <Route path=\"/:roomId/\" element={<Redirector showPreview={isPreviewScreenEnabled} />} />\n </Routes>\n );\n};\n\nconst BackSwipe = () => {\n const isConnectedToRoom = useHMSStore(selectIsConnectedToRoom);\n const hmsActions = useHMSActions();\n useEffect(() => {\n const onRouteLeave = async () => {\n if (isConnectedToRoom) {\n await hmsActions.leave();\n }\n };\n window.addEventListener('popstate', onRouteLeave);\n return () => {\n window.removeEventListener('popstate', onRouteLeave);\n };\n }, [hmsActions, isConnectedToRoom]);\n return null;\n};\n\nconst Router = ({ children }: { children: ReactElement }) => {\n const { roomId, role, roomCode } = useHMSPrebuiltContext();\n return [roomId, role, roomCode].every(value => !value) ? (\n <BrowserRouter>{children}</BrowserRouter>\n ) : (\n <MemoryRouter initialEntries={[`/${roomCode ? roomCode : `${roomId}/${role || ''}`}`]} initialIndex={0}>\n {children}\n </MemoryRouter>\n );\n};\n\nfunction AppRoutes({\n authTokenByRoomCodeEndpoint,\n defaultAuthToken,\n}: {\n authTokenByRoomCodeEndpoint: string;\n defaultAuthToken?: string;\n}) {\n const roomLayout = useRoomLayout();\n const isNotificationsDisabled = useIsNotificationDisabled();\n return (\n <Router>\n <>\n <ToastContainer />\n <Notifications />\n <BackSwipe />\n {!isNotificationsDisabled && <FlyingEmoji />}\n <RemoteStopScreenshare />\n <KeyboardHandler />\n <AuthToken authTokenByRoomCodeEndpoint={authTokenByRoomCodeEndpoint} defaultAuthToken={defaultAuthToken} />\n {roomLayout && (\n <Routes>\n <Route path=\"/*\" element={<RouteList />} />\n </Routes>\n )}\n </>\n </Router>\n );\n}\n", "import React, { useEffect } from 'react';\nimport {\n HMSRoomState,\n selectAvailableRoleNames,\n selectFullAppData,\n selectHLSState,\n selectIsConnectedToRoom,\n selectLocalPeerRoleName,\n selectRolesMap,\n selectRoomState,\n selectRTMPState,\n useHMSActions,\n useHMSStore,\n useRecordingStreaming,\n} from '@100mslive/react-sdk';\nimport { normalizeAppPolicyConfig } from '../init/initUtils';\nimport { UserPreferencesKeys, useUserPreferences } from '../hooks/useUserPreferences';\nimport { useIsSidepaneTypeOpen, useSidepaneReset, useSidepaneState, useSidepaneToggle } from './useSidepane';\nimport { useSetAppDataByKey } from './useUISettings';\nimport {\n APP_DATA,\n CHAT_SELECTOR,\n DEFAULT_WAITING_VIEWER_ROLE,\n SIDE_PANE_OPTIONS,\n UI_MODE_GRID,\n UI_SETTINGS,\n} from '../../common/constants';\n\nexport const getAppDetails = appDetails => {\n try {\n return !appDetails ? {} : JSON.parse(appDetails);\n } catch (error) {\n return {};\n }\n};\n\nconst initialAppData = {\n [APP_DATA.uiSettings]: {\n [UI_SETTINGS.isAudioOnly]: false,\n [UI_SETTINGS.maxTileCount]: 9,\n [UI_SETTINGS.showStatsOnTiles]: false,\n [UI_SETTINGS.enableAmbientMusic]: false,\n [UI_SETTINGS.uiViewMode]: UI_MODE_GRID,\n [UI_SETTINGS.mirrorLocalVideo]: true,\n },\n [APP_DATA.subscribedNotifications]: {\n PEER_JOINED: false,\n PEER_LEFT: false,\n NEW_MESSAGE: true,\n ERROR: true,\n METADATA_UPDATED: true,\n },\n [APP_DATA.chatOpen]: false,\n [APP_DATA.chatSelector]: {\n [CHAT_SELECTOR.ROLE]: '',\n [CHAT_SELECTOR.PEER_ID]: '',\n },\n [APP_DATA.chatDraft]: '',\n [APP_DATA.sidePane]: '',\n [APP_DATA.hlsStarted]: false,\n [APP_DATA.rtmpStarted]: false,\n [APP_DATA.recordingStarted]: false,\n [APP_DATA.waitingViewerRole]: DEFAULT_WAITING_VIEWER_ROLE,\n [APP_DATA.dropdownList]: [],\n [APP_DATA.authToken]: '',\n [APP_DATA.minimiseInset]: false,\n [APP_DATA.activeScreensharePeerId]: '',\n [APP_DATA.disableNotificiations]: false,\n};\n\nexport const AppData = React.memo(({ appDetails, tokenEndpoint }) => {\n const hmsActions = useHMSActions();\n const isConnected = useHMSStore(selectIsConnectedToRoom);\n const sidePane = useSidepaneState();\n const resetSidePane = useSidepaneReset();\n const [preferences = {}] = useUserPreferences(UserPreferencesKeys.UI_SETTINGS);\n const roleNames = useHMSStore(selectAvailableRoleNames);\n const rolesMap = useHMSStore(selectRolesMap);\n const localPeerRole = useHMSStore(selectLocalPeerRoleName);\n const appData = useHMSStore(selectFullAppData);\n\n useEffect(() => {\n if (!isConnected && sidePane && sidePane !== SIDE_PANE_OPTIONS.PARTICIPANTS) {\n resetSidePane();\n }\n }, [isConnected, sidePane, resetSidePane]);\n\n useEffect(() => {\n hmsActions.initAppData({\n ...initialAppData,\n ...appData,\n });\n hmsActions.setFrameworkInfo({\n type: 'react-web',\n isPrebuilt: true,\n version: React.version,\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [hmsActions]);\n\n useEffect(() => {\n const uiSettings = preferences || {};\n const updatedSettings = {\n ...uiSettings,\n [UI_SETTINGS.uiViewMode]: uiSettings.uiViewMode || UI_MODE_GRID,\n };\n hmsActions.setAppData(APP_DATA.uiSettings, updatedSettings, true);\n }, [preferences, hmsActions]);\n\n useEffect(() => {\n const appData = {\n [APP_DATA.tokenEndpoint]: tokenEndpoint,\n [APP_DATA.appConfig]: getAppDetails(appDetails),\n };\n for (const key in appData) {\n hmsActions.setAppData([key], appData[key]);\n }\n }, [appDetails, tokenEndpoint, hmsActions]);\n\n useEffect(() => {\n if (!preferences.subscribedNotifications) {\n return;\n }\n hmsActions.setAppData(APP_DATA.subscribedNotifications, preferences.subscribedNotifications, true);\n }, [preferences.subscribedNotifications, hmsActions]);\n\n useEffect(() => {\n if (localPeerRole) {\n const config = normalizeAppPolicyConfig(roleNames, rolesMap);\n hmsActions.setAppData(APP_DATA.appLayout, config[localPeerRole]);\n }\n }, [roleNames, rolesMap, localPeerRole, hmsActions]);\n\n return <ResetStreamingStart />;\n});\n\n/**\n * reset hlsStarted, rtmpStarted values when streaming starts\n */\nconst ResetStreamingStart = () => {\n const { isHLSRunning, isRTMPRunning, isBrowserRecordingOn } = useRecordingStreaming();\n const hlsError = useHMSStore(selectHLSState).error;\n const rtmpError = useHMSStore(selectRTMPState).error;\n const roomState = useHMSStore(selectRoomState);\n const [hlsStarted, setHLSStarted] = useSetAppDataByKey(APP_DATA.hlsStarted);\n const [recordingStarted, setRecordingStarted] = useSetAppDataByKey(APP_DATA.recordingStarted);\n const [rtmpStarted, setRTMPStarted] = useSetAppDataByKey(APP_DATA.rtmpStarted);\n const toggleStreaming = useSidepaneToggle(SIDE_PANE_OPTIONS.STREAMING);\n const isStreamingOpen = useIsSidepaneTypeOpen(SIDE_PANE_OPTIONS.STREAMING);\n\n useEffect(() => {\n if (isBrowserRecordingOn && recordingStarted) {\n setRecordingStarted(false);\n }\n }, [isBrowserRecordingOn, recordingStarted, setRecordingStarted]);\n /**\n * Reset on leave\n */\n useEffect(() => {\n if (roomState === HMSRoomState.Disconnected) {\n setHLSStarted(false);\n setRecordingStarted(false);\n setRTMPStarted(false);\n }\n }, [roomState, setHLSStarted, setRTMPStarted, setRecordingStarted]);\n useEffect(() => {\n if (isHLSRunning || hlsError) {\n if (hlsStarted) {\n setHLSStarted(false);\n if (isStreamingOpen) {\n toggleStreaming();\n }\n }\n }\n }, [isHLSRunning, hlsStarted, setHLSStarted, hlsError, isStreamingOpen, toggleStreaming]);\n useEffect(() => {\n if (isRTMPRunning || rtmpError || isBrowserRecordingOn) {\n if (rtmpStarted) {\n setRTMPStarted(false);\n if (isStreamingOpen) {\n toggleStreaming();\n }\n }\n }\n }, [isRTMPRunning, setRTMPStarted, rtmpStarted, rtmpError, isBrowserRecordingOn, isStreamingOpen, toggleStreaming]);\n return null;\n};\n", "// interface RoleConfig {\n// center?: HMSRoleName[];\n// sidepane?: HMSRoleName[];\n// selfRoleChangeTo?: HMSRoleName[];\n// remoteRoleChangeFor?: HMSRoleName[];\n// }\n\n// interface PolicyConfig {\n// [role: string]: RoleConfig;\n// }\n\n/**\n * check if a role is allowed to publish either of audio or video\n */\nfunction canPublishAV(role) {\n const params = role?.publishParams;\n if (params?.allowed) {\n return params.allowed.includes('video') || params.allowed.includes('audio');\n }\n return false;\n}\n\n/**\n * Figure out the layout for each role. There is some extra work being done\n * here currently to figure out the layout for roles other than local peer too\n * which can be avoided.\n */\nexport const normalizeAppPolicyConfig = (roleNames, rolesMap, appPolicyConfig = {}) => {\n const newConfig = Object.assign({}, appPolicyConfig);\n // eslint-disable-next-line complexity\n roleNames.forEach(roleName => {\n if (!newConfig[roleName]) {\n newConfig[roleName] = {};\n }\n const subscribedRoles = rolesMap[roleName].subscribeParams?.subscribeToRoles || [];\n\n const isNotSubscribingOrSubscribingToSelf =\n subscribedRoles.length === 0 || (subscribedRoles.length === 1 && subscribedRoles[0] === roleName);\n if (!newConfig[roleName].center) {\n const publishingRoleNames = roleNames.filter(\n roleName => canPublishAV(rolesMap[roleName]) && subscribedRoles.includes(roleName),\n );\n if (isNotSubscribingOrSubscribingToSelf) {\n newConfig[roleName].center = [roleName];\n } else {\n // all other publishing roles apart from local role in center by default\n newConfig[roleName].center = publishingRoleNames.filter(rName => rName !== roleName);\n }\n }\n // everyone from my role is in sidepane by default if they can publish\n if (!newConfig[roleName].sidepane) {\n if (isNotSubscribingOrSubscribingToSelf) {\n newConfig[roleName].sidepane = [];\n } else {\n newConfig[roleName].sidepane = canPublishAV(rolesMap[roleName]) ? [roleName] : [];\n }\n }\n if (!newConfig[roleName].selfRoleChangeTo) {\n newConfig[roleName].selfRoleChangeTo = roleNames;\n }\n if (!newConfig[roleName].remoteRoleChangeFor) {\n newConfig[roleName].remoteRoleChangeFor = roleNames;\n }\n });\n\n return newConfig;\n};\n", "import { useState } from 'react';\nimport { useLocalStorage } from 'react-use';\n\nexport const UserPreferencesKeys = {\n PREVIEW: 'preview',\n NOTIFICATIONS: 'notifications',\n UI_SETTINGS: 'uiSettings',\n RTMP_URLS: 'rtmpUrls',\n};\n\nexport const defaultPreviewPreference = {\n name: '',\n isAudioMuted: false,\n isVideoMuted: false,\n};\n\nexport const useUserPreferences = (key, defaultPreference) => {\n const [localStorageValue, setStorageValue] = useLocalStorage(key, defaultPreference);\n const [preference, setPreference] = useState(localStorageValue || defaultPreference);\n const changePreference = value => {\n setPreference(value);\n setStorageValue(value);\n };\n return [preference, changePreference];\n};\n", "import { useCallback } from 'react';\nimport { selectAppData, useHMSActions, useHMSStore, useHMSVanillaStore } from '@100mslive/react-sdk';\nimport { APP_DATA } from '../../common/constants';\n\n/**\n * Gives a boolean value if the sidepaneType matches current sidepane value in store\n * @param {string} sidepaneType\n * @returns {boolean} - if the sidepaneType is passed returns boolean else the current value\n */\nexport const useIsSidepaneTypeOpen = sidepaneType => {\n if (!sidepaneType) {\n throw Error('Pass one of the side pane options');\n }\n return useHMSStore(selectAppData(APP_DATA.sidePane)) === sidepaneType;\n};\n\n/**\n * Gives the current value of sidepane in store\n * @returns {string} - if the sidepaneType is passed returns boolean else the current value\n */\nexport const useSidepaneState = () => {\n const sidePane = useHMSStore(selectAppData(APP_DATA.sidePane));\n return sidePane;\n};\n\n/**\n * Toggle the sidepane value between passed sidePaneType and '';\n * @param {string} sidepaneType\n */\nexport const useSidepaneToggle = sidepaneType => {\n const hmsActions = useHMSActions();\n const vanillaStore = useHMSVanillaStore();\n const toggleSidepane = useCallback(() => {\n const isOpen = vanillaStore.getState(selectAppData(APP_DATA.sidePane)) === sidepaneType;\n hmsActions.setAppData(APP_DATA.sidePane, !isOpen ? sidepaneType : '');\n }, [vanillaStore, hmsActions, sidepaneType]);\n return toggleSidepane;\n};\n\n/**\n * reset's the sidepane value\n */\nexport const useSidepaneReset = () => {\n const hmsActions = useHMSActions();\n const resetSidepane = useCallback(() => {\n hmsActions.setAppData(APP_DATA.sidePane, '');\n }, [hmsActions]);\n return resetSidepane;\n};\n", "import { parsedUserAgent } from '@100mslive/react-sdk';\n\nexport const DEFAULT_WAITING_VIEWER_ROLE = 'waiting-room';\nexport const QUERY_PARAM_SKIP_PREVIEW = 'skip_preview';\nexport const QUERY_PARAM_SKIP_PREVIEW_HEADFUL = 'skip_preview_headful';\nexport const QUERY_PARAM_NAME = 'name';\nexport const QUERY_PARAM_VIEW_MODE = 'ui_mode';\nexport const QUERY_PARAM_PREVIEW_AS_ROLE = 'preview_as_role';\nexport const UI_MODE_GRID = 'grid';\nexport const MAX_TOASTS = 5;\nexport const RTMP_RECORD_RESOLUTION_MIN = 480;\nexport const RTMP_RECORD_RESOLUTION_MAX = 1280;\nexport const RTMP_RECORD_DEFAULT_RESOLUTION = {\n width: 1280,\n height: 720,\n};\nexport const EMOJI_REACTION_TYPE = 'EMOJI_REACTION';\n\nexport const CHAT_SELECTOR = {\n PEER_ID: 'peer_id',\n ROLE: 'role',\n};\n\nexport const APP_DATA = {\n uiSettings: 'uiSettings',\n chatOpen: 'chatOpen',\n chatSelector: 'chatSelector',\n chatDraft: 'chatDraft',\n appConfig: 'appConfig',\n sidePane: 'sidePane',\n hlsStats: 'hlsStats',\n waitingViewerRole: 'waitingViewerRole',\n subscribedNotifications: 'subscribedNotifications',\n logo: 'logo',\n tokenEndpoint: 'tokenEndpoint',\n appLayout: 'appLayout',\n hlsStarted: 'hlsStarted',\n rtmpStarted: 'rtmpStarted',\n recordingStarted: 'recordingStarted',\n embedConfig: 'embedConfig',\n pinnedTrackId: 'pinnedTrackId',\n dropdownList: 'dropdownList',\n authToken: 'authToken',\n pdfConfig: 'pdfConfig',\n minimiseInset: 'minimiseInset',\n activeScreensharePeerId: 'activeScreensharePeerId',\n disableNotificiations: 'disableNotificiations',\n};\nexport const UI_SETTINGS = {\n isAudioOnly: 'isAudioOnly',\n maxTileCount: 'maxTileCount',\n uiViewMode: 'uiViewMode',\n showStatsOnTiles: 'showStatsOnTiles',\n enableAmbientMusic: 'enableAmbientMusic',\n mirrorLocalVideo: 'mirrorLocalVideo',\n};\n\nexport const SIDE_PANE_OPTIONS = {\n PARTICIPANTS: 'Participants',\n CHAT: 'Chat',\n STREAMING: 'STREAMING',\n};\n\nexport const SUBSCRIBED_NOTIFICATIONS = {\n PEER_JOINED: 'PEER_JOINED',\n PEER_LEFT: 'PEER_LEFT',\n METADATA_UPDATED: 'METADATA_UPDATED',\n NEW_MESSAGE: 'NEW_MESSAGE',\n ERROR: 'ERROR',\n};\n\nexport const CREATE_ROOM_DOC_URL = 'https://github.com/100mslive/100ms-web/wiki/Creating-and-joining-a-room';\nexport const HLS_TIMED_METADATA_DOC_URL =\n 'https://www.100ms.live/docs/javascript/v2/how--to-guides/record-and-live-stream/hls/hls-timed-metadata';\n\nexport const REMOTE_STOP_SCREENSHARE_TYPE = 'REMOTE_STOP_SCREENSHARE';\n\nexport const isChrome = parsedUserAgent.getBrowser()?.name?.toLowerCase() === 'chrome';\nexport const isFirefox = parsedUserAgent.getBrowser()?.name?.toLowerCase() === 'firefox';\nexport const isSafari = parsedUserAgent.getBrowser()?.name?.toLowerCase() === 'safari';\nexport const isIOS = parsedUserAgent.getOS()?.name?.toLowerCase() === 'ios';\nexport const isMacOS = parsedUserAgent.getOS()?.name?.toLowerCase() === 'mac os';\nexport const isAndroid = parsedUserAgent.getOS()?.name?.toLowerCase() === 'android';\nexport const isIPadOS = false;\n// typeof navigator !== \"undefined\" &&\n// navigator?.maxTouchPoints &&\n// navigator?.maxTouchPoints > 2 &&\n// navigator?.userAgent?.match(/Mac/);\n\nexport const SESSION_STORE_KEY = {\n TRANSCRIPTION_STATE: 'transcriptionState',\n PINNED_MESSAGE: 'pinnedMessage',\n SPOTLIGHT: 'spotlight',\n};\n\nexport const ROLE_CHANGE_DECLINED = 'role_change_declined';\n", "import { useCallback } from 'react';\nimport {\n selectAppData,\n selectAppDataByPath,\n selectAudioTrackByPeerID,\n selectSessionStore,\n selectTrackByID,\n selectVideoTrackByPeerID,\n useHMSActions,\n useHMSStore,\n useHMSVanillaStore,\n} from '@100mslive/react-sdk';\nimport { UserPreferencesKeys, useUserPreferences } from '../hooks/useUserPreferences';\nimport { APP_DATA, SESSION_STORE_KEY } from '../../common/constants';\n\n/**\n * fields saved related to UI settings in store's app data can be\n * accessed using this hook. key is optional if not passed\n * the whole UI settings object is returned. Usage -\n * 1. val = useUiSettings(\"isAudioOnly\");\n * console.log(val); // false\n * 2. val = useUISettings();\n * console.log(val); // {isAudioOnly: false}\n * @param {string | undefined} uiSettingKey\n */\nexport const useUISettings = uiSettingKey => {\n const uiSettings = useHMSStore(selectAppDataByPath(APP_DATA.uiSettings, uiSettingKey));\n return uiSettings;\n};\n\n/**\n * fields saved related to UI settings in store's app data can be\n * accessed using this hook. key is optional if not passed\n * the whole UI settings object is returned. Usage -\n * [val, setVal] = useUiSettings(\"isAudioOnly\");\n * console.log(val); // false\n * setVal(true);\n * @param {string} uiSettingKey\n */\nexport const useSetUiSettings = uiSettingKey => {\n const value = useUISettings(uiSettingKey);\n const setValue = useSetAppData({\n key1: APP_DATA.uiSettings,\n key2: uiSettingKey,\n });\n return [value, setValue];\n};\n\nexport const useWaitingViewerRole = () => {\n return useHMSStore(selectAppData(APP_DATA.waitingViewerRole));\n};\nexport const useIsHLSStartedFromUI = () => {\n return useHMSStore(selectAppData(APP_DATA.hlsStarted));\n};\n\nexport const useIsRTMPStartedFromUI = () => {\n return useHMSStore(selectAppData(APP_DATA.rtmpStarted));\n};\n\nexport const useTokenEndpoint = () => {\n return useHMSStore(selectAppData(APP_DATA.tokenEndpoint));\n};\n\nexport const useAuthToken = () => {\n return useHMSStore(selectAppData(APP_DATA.authToken));\n};\n\nexport const useUrlToEmbed = () => {\n return useHMSStore(selectAppData(APP_DATA.embedConfig))?.url;\n};\n\nexport const usePDFAnnotator = () => {\n return useHMSStore(selectAppData(APP_DATA.pdfConfig))?.state;\n};\nexport const usePinnedTrack = () => {\n const pinnedTrackId = useHMSStore(selectAppData(APP_DATA.pinnedTrackId));\n const spotlightPeerId = useHMSStore(selectSessionStore(SESSION_STORE_KEY.SPOTLIGHT));\n const spotlightVideoTrackId = useHMSStore(selectVideoTrackByPeerID(spotlightPeerId))?.id;\n const spotlightAudioTrackId = useHMSStore(selectAudioTrackByPeerID(spotlightPeerId))?.id;\n return useHMSStore(selectTrackByID(pinnedTrackId || spotlightVideoTrackId || spotlightAudioTrackId));\n};\n\nexport const useSubscribedNotifications = notificationKey => {\n const notificationPreference = useHMSStore(selectAppDataByPath(APP_DATA.subscribedNotifications, notificationKey));\n return notificationPreference;\n};\n\nexport const useIsNotificationDisabled = () => {\n const notificationPreference = useHMSStore(selectAppDataByPath(APP_DATA.disableNotificiations));\n return notificationPreference;\n};\n\nexport const useSetSubscribedNotifications = notificationKey => {\n const value = useSubscribedNotifications(notificationKey);\n const setValue = useSetAppData({\n key1: APP_DATA.subscribedNotifications,\n key2: notificationKey,\n });\n return [value, setValue];\n};\n\nexport const useSubscribeChatSelector = chatSelectorKey => {\n const chatSelectorPreference = useHMSStore(selectAppDataByPath(APP_DATA.chatSelector, chatSelectorKey));\n return chatSelectorPreference;\n};\n\nexport const useSetSubscribedChatSelector = chatSelectorKey => {\n const value = useSubscribeChatSelector(chatSelectorKey);\n const setValue = useSetAppData({\n key1: APP_DATA.chatSelector,\n key2: chatSelectorKey,\n });\n return [value, setValue];\n};\n\nexport const useSetAppDataByKey = appDataKey => {\n const value = useHMSStore(selectAppData(appDataKey));\n const actions = useHMSActions();\n const setValue = useCallback(\n value => {\n actions.setAppData(appDataKey, value);\n },\n [actions, appDataKey],\n );\n return [value, setValue];\n};\n\nconst useSetAppData = ({ key1, key2 }) => {\n const actions = useHMSActions();\n const store = useHMSVanillaStore();\n const [, setPreferences] = useUserPreferences(UserPreferencesKeys.UI_SETTINGS);\n const setValue = useCallback(\n value => {\n if (!key1) {\n return;\n }\n actions.setAppData(\n key1,\n key2\n ? {\n [key2]: value,\n }\n : value,\n true,\n );\n const appData = store.getState(selectAppData());\n setPreferences({\n ...appData.uiSettings,\n subscribedNotifications: appData.subscribedNotifications,\n });\n },\n [actions, key1, key2, store, setPreferences],\n );\n return setValue;\n};\n", "import React, { useEffect, useState } from 'react';\nimport { useHMSActions } from '@100mslive/react-sdk';\nimport { styled } from '../../Theme';\nimport { useHMSPrebuiltContext } from '../AppContext';\nimport { ErrorDialog } from '../primitives/DialogContent';\nimport { useSetAppDataByKey, useTokenEndpoint } from './AppData/useUISettings';\nimport { APP_DATA } from '../common/constants';\n\n/**\n * query params exposed -\n * skip_preview=true => used by recording and streaming service, skips preview and directly joins\n * header and footer don't show up in this case\n * skip_preview_headful=true => used by automation testing to skip preview without impacting the UI\n * name=abc => gives the initial name for the peer joining\n * auth_token=123 => uses the passed in token to join instead of fetching from token endpoint\n * ui_mode=activespeaker => lands in active speaker mode after joining the room\n */\nconst AuthToken = React.memo(({ authTokenByRoomCodeEndpoint, defaultAuthToken }) => {\n const hmsActions = useHMSActions();\n const tokenEndpoint = useTokenEndpoint();\n const { roomCode, userId } = useHMSPrebuiltContext();\n const [error, setError] = useState({ title: '', body: '' });\n let authToken = defaultAuthToken;\n const [, setAuthTokenInAppData] = useSetAppDataByKey(APP_DATA.authToken);\n\n useEffect(() => {\n if (authToken) {\n setAuthTokenInAppData(authToken);\n return;\n }\n if (!tokenEndpoint && !roomCode) {\n return;\n }\n\n hmsActions\n .getAuthTokenByRoomCode({ roomCode, userId }, { endpoint: authTokenByRoomCodeEndpoint })\n .then(token => setAuthTokenInAppData(token))\n .catch(error => setError(convertError(error)));\n }, [hmsActions, tokenEndpoint, authToken, authTokenByRoomCodeEndpoint, setAuthTokenInAppData, roomCode, userId]);\n\n if (error.title) {\n return <ErrorDialog title={error.title}>{error.body}</ErrorDialog>;\n }\n return null;\n});\n\nconst convertError = error => {\n console.error('[error]', { error });\n if (error.action === 'GET_TOKEN' && error.code === 403) {\n return {\n title: 'Room code is disabled',\n body: ErrorWithSupportLink('Room code corresponding to this link is no more active.'),\n };\n } else if (error.action === 'GET_TOKEN' && error.code === 404) {\n return {\n title: 'Room code does not exist',\n body: ErrorWithSupportLink('We could not find a room code corresponding to this link.'),\n };\n } else if (error.action === 'GET_TOKEN' && error.code === 2003) {\n return {\n title: 'Endpoint is not reachable',\n body: ErrorWithSupportLink(`Endpoint is not reachable. ${error.description}.`),\n };\n } else if (error.response && error.response.status === 404) {\n return {\n title: 'Room does not exist',\n body: ErrorWithSupportLink('We could not find a room corresponding to this link.'),\n };\n } else if (error.response && error.response.status === 403) {\n return {\n title: 'Accessing room using this link format is disabled',\n body: ErrorWithSupportLink('You can re-enable this from the developer section in Dashboard.'),\n };\n } else {\n console.error('Token API Error', error);\n return {\n title: 'Error fetching token',\n body: ErrorWithSupportLink(\n 'An error occurred while fetching the app token. Please look into logs for more details.',\n ),\n };\n }\n};\n\nconst Link = styled('a', {\n color: '#2f80e1',\n});\n\nexport const ErrorWithSupportLink = errorMessage => (\n <div>\n {errorMessage} If you think this is a mistake on our side, please create{' '}\n <Link target=\"_blank\" href=\"https://github.com/100mslive/100ms-web/issues\" rel=\"noreferrer\">\n an issue\n </Link>{' '}\n or reach out over{' '}\n <Link target=\"_blank\" href=\"https://discord.com/invite/kGdmszyzq2\" rel=\"noreferrer\">\n Discord\n </Link>\n .\n </div>\n);\n\nexport default AuthToken;\n", "import React, { useContext } from 'react';\n\ntype HMSPrebuiltContextType = {\n roomCode: string;\n roomId?: string;\n role?: string;\n userName?: string;\n userId?: string;\n endpoints?: Record<string, string>;\n onLeave?: () => void;\n};\n\nexport const HMSPrebuiltContext = React.createContext<HMSPrebuiltContextType>({\n roomCode: '',\n userName: '',\n userId: '',\n endpoints: {},\n onLeave: undefined,\n});\n\nHMSPrebuiltContext.displayName = 'HMSPrebuiltContext';\n\nexport const useHMSPrebuiltContext = () => {\n const context = useContext(HMSPrebuiltContext);\n if (!context) {\n throw Error('Make sure HMSPrebuiltContext.Provider is present at the top level of your application');\n }\n return context;\n};\n", "import React, { useRef } from 'react';\nimport { CheckIcon, CloudUploadIcon, CrossIcon } from '@100mslive/react-icons';\nimport { Button } from '../../Button';\nimport { Checkbox } from '../../Checkbox';\nimport { HorizontalDivider } from '../../Divider';\nimport { IconButton } from '../../IconButton';\nimport { Input } from '../../Input';\nimport { Label } from '../../Label';\nimport { Box, Flex } from '../../Layout';\nimport { Dialog } from '../../Modal';\nimport { Select } from '../../Select';\nimport { Switch } from '../../Switch';\nimport { Text } from '../../Text';\n\nexport const DialogContent = ({ Icon, title, closeable = true, children, css, iconCSS = {}, ...props }) => {\n return (\n <Dialog.Portal>\n <Dialog.Overlay />\n <Dialog.Content css={{ width: 'min(600px, 100%)', ...css }} {...props}>\n <Dialog.Title>\n <Flex justify=\"between\">\n <Flex align=\"center\" css={{ mb: '$1' }}>\n {Icon ? (\n <Box css={{ mr: '$2', color: '$on_primary_high', ...iconCSS }}>\n <Icon />\n </Box>\n ) : null}\n <Text variant=\"h6\" inline>\n {title}\n </Text>\n </Flex>\n {closeable && <Dialog.DefaultClose data-testid=\"dialoge_cross_icon\" />}\n </Flex>\n </Dialog.Title>\n <HorizontalDivider css={{ mt: '0.8rem' }} />\n <Box>{children}</Box>\n </Dialog.Content>\n </Dialog.Portal>\n );\n};\n\nexport const ErrorDialog = ({ open = true, onOpenChange, title, children, ...props }) => {\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <DialogContent\n Icon={CrossIcon}\n title={title}\n onInteractOutside={e => e.preventDefault()}\n onEscapeKeyDown={e => e.preventDefault()}\n onPointerDownOutside={e => e.preventDefault()}\n closeable={false}\n iconCSS={{ color: '$alert_error_default' }}\n {...props}\n >\n <Box css={{ mt: '$lg' }}>{children}</Box>\n </DialogContent>\n </Dialog.Root>\n );\n};\n\nexport const RequestDialog = ({ open = true, onOpenChange, title, body, actionText = 'Accept', onAction, Icon }) => (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay />\n <Dialog.Content css={{ width: 'min(400px,80%)', p: '$10' }}>\n <Dialog.Title css={{ p: 0, display: 'flex', flexDirection: 'row', gap: '$md' }}>\n {Icon ? Icon : null}\n <Text variant=\"h6\">{title}</Text>\n </Dialog.Title>\n {typeof body === 'string' ? (\n <Text\n variant=\"md\"\n css={{\n fontWeight: 400,\n mt: '$4',\n mb: '$10',\n c: '$on_surface_medium',\n }}\n >\n {body}\n </Text>\n ) : (\n <Box css={{ mt: '$4', mb: '$10' }}>{body}</Box>\n )}\n <Flex justify=\"center\" align=\"center\" css={{ width: '100%', gap: '$md' }}>\n <Box css={{ width: '50%' }}>\n <Dialog.Close css={{ width: '100%' }}>\n <Button variant=\"standard\" outlined css={{ width: '100%' }}>\n Cancel\n </Button>\n </Dialog.Close>\n </Box>\n <Box css={{ width: '50%' }}>\n <Button variant=\"primary\" css={{ width: '100%' }} onClick={onAction}>\n {actionText}\n </Button>\n </Box>\n </Flex>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n);\n\n/**\n * a row of items which breaks into column on small screen. For e.g. title on left and options to select\n * from on right for select component.\n */\nexport const DialogRow = ({ children, breakSm = false, css, justify = 'between' }) => {\n let finalCSS = {\n margin: '$10 0',\n w: '100%',\n };\n if (breakSm) {\n finalCSS['@sm'] = {\n flexDirection: 'column',\n alignItems: 'flex-start',\n };\n }\n if (css) {\n finalCSS = Object.assign(finalCSS, css);\n }\n return (\n <Flex align=\"center\" justify={justify} css={finalCSS}>\n {children}\n </Flex>\n );\n};\n\nexport const DialogCol = ({ children, breakSm = false, css, align = 'center', justify = 'between', ...props }) => {\n let finalCSS = {\n margin: '$10 0',\n w: '100%',\n };\n if (breakSm) {\n finalCSS['@sm'] = {\n alignItems: 'flex-start',\n };\n }\n if (css) {\n finalCSS = Object.assign(finalCSS, css);\n }\n return (\n <Flex direction=\"column\" align={align} justify={justify} css={finalCSS} {...props}>\n {children}\n </Flex>\n );\n};\n\n/**\n * key field and label field are optional, option is directly used if not passed\n */\nexport const DialogSelect = ({ title, options, keyField, labelField, selected, onChange, ...props }) => {\n return (\n <DialogRow breakSm>\n <Label>{title}</Label>\n <Select.Root data-testid={`dialog_select_${title}`} css={{ width: '70%', '@sm': { width: '100%' } }} {...props}>\n <Select.DefaultDownIcon />\n <Select.Select onChange={e => onChange(e.target.value)} value={selected} css={{ width: '100%' }}>\n {options.map(option => {\n const id = keyField ? option[keyField] : option;\n const label = labelField ? option[labelField] : option;\n return (\n <option value={id} key={id}>\n {label}\n </option>\n );\n })}\n </Select.Select>\n </Select.Root>\n </DialogRow>\n );\n};\n\nexport const DialogInput = ({ title, value, onChange, placeholder, disabled, type, ...props }) => {\n return (\n <DialogRow breakSm>\n <Label>{title}</Label>\n <Input\n css={{ width: '70%', '@sm': { width: '100%' }, bg: '$surface_bright' }}\n value={value}\n onChange={e => onChange(e.target.value)}\n placeholder={placeholder}\n disabled={disabled}\n type={type}\n {...props}\n />\n </DialogRow>\n );\n};\n\nexport const DialogInputFile = ({ value, onChange, placeholder, disabled, type, ...props }) => {\n const inputRef = useRef();\n return (\n <DialogCol\n breakSm\n onClick={() => inputRef.current?.click()}\n css={{\n justifyContent: 'center',\n position: 'relative',\n cursor: 'pointer',\n py: '$12',\n border: '1px dashed $border_bright',\n r: '$1',\n height: 'max(140px, 30%)',\n alignItems: 'center',\n m: '$6 0',\n }}\n gap=\"8\"\n >\n <IconButton\n variant=\"standard\"\n css={{\n border: 'none',\n background: 'none',\n '&:hover': {\n border: 'none',\n background: 'none',\n bg: '$transparent !important',\n },\n }}\n >\n <CloudUploadIcon\n style={{\n width: '3rem',\n height: '3rem',\n }}\n />\n </IconButton>\n <Flex direction=\"row\">\n <Input\n ref={inputRef}\n css={{ width: '70%', '@sm': { width: '100%' } }}\n value={value}\n onChange={e => onChange(e.target)}\n placeholder={placeholder}\n disabled={disabled}\n type={type}\n hidden={true}\n {...props}\n />\n <IconButton\n variant=\"standard\"\n css={{\n background: 'none',\n border: 'none',\n textDecoration: 'underline',\n '&:hover': {\n background: 'none !important',\n border: 'none !important',\n },\n }}\n >\n <Text variant=\"md\">{placeholder}</Text>\n </IconButton>\n </Flex>\n </DialogCol>\n );\n};\n\nexport const DialogSwitch = ({ title, value, onChange, disabled }) => {\n return (\n <DialogRow>\n <Text>{title}</Text>\n <Flex justify=\"end\" css={{ width: '70%' }}>\n <Switch checked={value} disabled={disabled} onCheckedChange={onChange} />\n </Flex>\n </DialogRow>\n );\n};\n\nexport const DialogCheckbox = ({ title, value, onChange, disabled, css, id }) => {\n return (\n <DialogRow css={css}>\n <Label htmlFor={id} css={{ cursor: 'pointer' }}>\n {title}\n </Label>\n <Checkbox.Root checked={value} onCheckedChange={value => onChange(value)} disabled={disabled} id={id}>\n <Checkbox.Indicator>\n <CheckIcon width={16} height={16} />\n </Checkbox.Indicator>\n </Checkbox.Root>\n </DialogRow>\n );\n};\n", "import React, { Component } from 'react';\nimport { CopyIcon } from '@100mslive/react-icons';\nimport { Button } from '../../Button';\nimport { Box, Flex } from '../../Layout';\nimport { Text } from '../../Text';\nimport { Tooltip } from '../../Tooltip';\nimport { ErrorWithSupportLink } from './AuthToken';\n\nexport class ErrorBoundary extends Component {\n constructor(props) {\n super(props);\n this.state = { error: null, errorInfo: null, isErrorCopied: false };\n }\n\n componentDidCatch(error, errorInfo) {\n console.error(`react error boundary - ${error.message}`, error, errorInfo);\n // Catch errors in any components below and re-render with error message\n this.setState({\n error: error?.message,\n errorInfo: errorInfo,\n });\n }\n\n render() {\n if (this.state.errorInfo) {\n return (\n <Flex\n align=\"center\"\n justify=\"center\"\n css={{\n size: '100%',\n height: '100vh',\n width: '100%',\n color: '$on_primary_high',\n backgroundColor: '$background_default',\n }}\n >\n <Box css={{ position: 'relative', overflow: 'hidden', r: '$3', height: '100%', width: '100%' }}>\n <Flex\n direction=\"column\"\n css={{\n position: 'absolute',\n size: '100%',\n top: '33.33%',\n left: 0,\n }}\n >\n <div style={{ margin: '1.5rem', width: '100%' }}>\n <Text>Something went wrong</Text>\n <Text>Message: ${this.state.error}</Text>\n <br />\n {ErrorWithSupportLink(`Please reload to see if it works.`)}\n </div>\n <Flex>\n <Tooltip title=\"Reload page\">\n <Button\n onClick={() => {\n window.location.reload();\n }}\n css={{ mx: '$8' }}\n data-testid=\"join_again_btn\"\n >\n Reload\n </Button>\n </Tooltip>\n <Tooltip title=\"Copy error details to clipboard\">\n <Button\n onClick={() => {\n const { error, errorInfo } = this.state;\n navigator.clipboard.writeText(\n JSON.stringify({\n error,\n errorInfo,\n }),\n );\n this.setState({ isErrorCopied: true });\n }}\n css={{ mx: '$8' }}\n data-testid=\"join_again_btn\"\n >\n <CopyIcon /> {this.state.isErrorCopied ? 'Copied' : 'Copy Details'}\n </Button>\n </Tooltip>\n </Flex>\n\n <details style={{ whiteSpace: 'pre-wrap', margin: '1.5rem' }}>\n <Text>{this.state.error && this.state.error.toString()}</Text>\n <br />\n <Text>{JSON.stringify(this.state.errorInfo)}</Text>\n </details>\n </Flex>\n </Box>\n </Flex>\n );\n }\n\n return this.props.children;\n }\n}\n", "import React from 'react';\nimport { Flex } from '../../Layout';\nimport { Loading } from '../../Loading';\nimport { Text } from '../../Text';\n\nconst FullPageProgress = ({ loaderColor = '$primary_default', text = '', css = {} }) => (\n <Flex direction=\"column\" justify=\"center\" align=\"center\" css={{ size: '100%', color: loaderColor, ...css }}>\n <Loading color=\"currentColor\" size={100} />\n {text ? <Text css={{ mt: '$10', color: '$on_surface_high' }}>{text}</Text> : null}\n </Flex>\n);\n\nexport default FullPageProgress;\n", "import React, { useEffect } from 'react';\nimport { useTheme } from '../../../';\nimport { FeatureFlagsInit } from '../../services/FeatureFlags';\n\nconst Init = () => {\n const { toggleTheme } = useTheme();\n\n useEffect(() => {\n window.toggleUiTheme = toggleTheme;\n }, [toggleTheme]);\n\n useEffect(() => {\n function resetHeight() {\n // reset the body height to that of the inner browser\n // The window.innerHeight property returns integer values. When the actual height is in decimal, window.innerHeight returns a larger value than the actual value. This can cause a scrollbar to appear on some screens.\n // Hence using window.visualViewport.height which returns a decimal value.\n document.body.style.height = `${window.visualViewport?.height || window.innerHeight}px`;\n }\n // reset the height whenever the window's resized\n window.addEventListener('resize', resetHeight);\n // called to initially set the height.\n resetHeight();\n return () => {\n window.removeEventListener('resize', resetHeight);\n };\n }, []);\n\n return <FeatureFlagsInit />;\n};\n\nexport { Init };\n", "import { useEffect } from 'react';\nimport { selectRoomID, useHMSStore } from '@100mslive/react-sdk';\n\nexport class FeatureFlags {\n static enableTranscription = process.env.REACT_APP_ENABLE_TRANSCRIPTION === 'true';\n static enableStatsForNerds = process.env.REACT_APP_ENABLE_STATS_FOR_NERDS === 'true';\n static enableWhiteboard =\n process.env.REACT_APP_ENABLE_WHITEBOARD &&\n process.env.REACT_APP_PUSHER_APP_KEY &&\n process.env.REACT_APP_PUSHER_AUTHENDPOINT;\n\n static init(roomId) {\n if (!window.HMS) {\n window.HMS = {};\n }\n // some extra config to hls js to bring down latency\n window.HMS.OPTIMISE_HLS_LATENCY = false;\n // ask permissions in preview even if role doesn't have it\n window.HMS.ALWAYS_REQUEST_PERMISSIONS = false;\n window.HMS.SHOW_NS = process.env.REACT_APP_ENV !== 'prod';\n\n this.enableTranscription = process.env.REACT_APP_TRANSCRIPTION_ROOM_ID === roomId;\n }\n\n static showNS() {\n return window.HMS.SHOW_NS;\n }\n\n static optimiseHLSLatency() {\n return window.HMS.OPTIMISE_HLS_LATENCY;\n }\n\n static alwaysRequestPermissions() {\n return window.HMS.ALWAYS_REQUEST_PERMISSIONS;\n }\n}\n\nexport function FeatureFlagsInit() {\n const roomId = useHMSStore(selectRoomID);\n useEffect(() => {\n if (roomId) {\n FeatureFlags.init(roomId);\n }\n }, [roomId]);\n return null;\n}\n", "import { useEffect } from 'react';\nimport {\n selectAppData,\n selectIsLocalAudioEnabled,\n selectIsLocalVideoEnabled,\n useHMSActions,\n useHMSVanillaStore,\n} from '@100mslive/react-sdk';\nimport { APP_DATA, isMacOS } from '../../common/constants';\n\nlet isEvenListenersAttached = false;\nexport class KeyboardInputManager {\n #actions;\n #store;\n constructor(store, actions) {\n this.#actions = actions;\n this.#store = store;\n }\n #toggleAudio = async () => {\n const enabled = this.#store.getState(selectIsLocalAudioEnabled);\n await this.#actions.setLocalAudioEnabled(!enabled);\n };\n\n #toggleVideo = async () => {\n const enabled = this.#store.getState(selectIsLocalVideoEnabled);\n await this.#actions.setLocalVideoEnabled(!enabled);\n };\n\n #hideSidepane = () => {\n if (this.#store.getState(selectAppData(APP_DATA.sidePane))) {\n this.#actions.setAppData(APP_DATA.sidePane, '');\n }\n };\n\n #toggleStatsForNerds = () => {\n const uiSettings = this.#store.getState(selectAppData(APP_DATA.uiSettings));\n const statsEnabled = uiSettings.showStatsOnTiles;\n this.#actions.setAppData(APP_DATA.uiSettings, {\n ...uiSettings,\n showStatsOnTiles: !statsEnabled,\n });\n };\n\n #toggleHlsStats = () => {\n this.#actions.setAppData(APP_DATA.hlsStats, !this.#store.getState(selectAppData(APP_DATA.hlsStats)));\n };\n\n // eslint-disable-next-line complexity\n #keyDownHandler = async e => {\n const CONTROL_KEY = isMacOS ? e.metaKey : e.ctrlKey;\n const D_KEY = e.key === 'd' || e.key === 'D';\n const E_KEY = e.key === 'e' || e.key === 'E';\n const SNF_KEY = e.key === ']' || e.key === '}';\n\n const SHORTCUT_TOGGLE_AUDIO = CONTROL_KEY && D_KEY;\n const SHORTCUT_TOGGLE_VIDEO = CONTROL_KEY && E_KEY;\n const SHORTCUT_SIDEPANE_CLOSE = e.key === 'Escape';\n const SHORTCUT_STATS_FOR_NERDS = CONTROL_KEY && SNF_KEY;\n\n if (SHORTCUT_TOGGLE_AUDIO) {\n e.preventDefault();\n await this.#toggleAudio();\n } else if (SHORTCUT_TOGGLE_VIDEO) {\n e.preventDefault();\n await this.#toggleVideo();\n } else if (SHORTCUT_SIDEPANE_CLOSE) {\n this.#hideSidepane();\n } else if (SHORTCUT_STATS_FOR_NERDS) {\n this.#toggleHlsStats();\n this.#toggleStatsForNerds();\n }\n };\n\n #bind = () => {\n document.addEventListener('keydown', this.#keyDownHandler, false);\n };\n\n #unbind = () => {\n document.removeEventListener('keydown', this.#keyDownHandler, false);\n };\n\n bindAllShortcuts = () => {\n if (!isEvenListenersAttached) {\n this.#bind();\n isEvenListenersAttached = true;\n }\n };\n\n unbindAllShortcuts = () => {\n if (isEvenListenersAttached) {\n this.#unbind();\n isEvenListenersAttached = false;\n }\n };\n}\n\nexport const KeyboardHandler = () => {\n const store = useHMSVanillaStore();\n const actions = useHMSActions();\n\n useEffect(() => {\n const keyboardManager = new KeyboardInputManager(store, actions);\n keyboardManager.bindAllShortcuts();\n return keyboardManager.unbindAllShortcuts;\n }, [actions, store]);\n return null;\n};\n", "/* eslint-disable no-case-declarations */\nimport React, { useCallback, useEffect } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport {\n HMSNotificationTypes,\n HMSRoomState,\n selectHasPeerHandRaised,\n selectRoomState,\n useCustomEvent,\n useHMSNotifications,\n useHMSStore,\n useHMSVanillaStore,\n} from '@100mslive/react-sdk';\nimport { Button } from '../../../';\nimport { useUpdateRoomLayout } from '../../provider/roomLayoutProvider';\nimport { ToastBatcher } from '../Toast/ToastBatcher';\nimport { ToastManager } from '../Toast/ToastManager';\nimport { AutoplayBlockedModal } from './AutoplayBlockedModal';\nimport { InitErrorModal } from './InitErrorModal';\nimport { PeerNotifications } from './PeerNotifications';\nimport { PermissionErrorModal } from './PermissionErrorModal';\nimport { ReconnectNotifications } from './ReconnectNotifications';\nimport { TrackBulkUnmuteModal } from './TrackBulkUnmuteModal';\nimport { TrackNotifications } from './TrackNotifications';\nimport { TrackUnmuteModal } from './TrackUnmuteModal';\nimport { useIsNotificationDisabled, useSubscribedNotifications } from '../AppData/useUISettings';\nimport { useRedirectToLeave } from '../hooks/useRedirectToLeave';\nimport { getMetadata } from '../../common/utils';\nimport { ROLE_CHANGE_DECLINED } from '../../common/constants';\nexport function Notifications() {\n const notification = useHMSNotifications();\n const navigate = useNavigate();\n const params = useParams();\n const subscribedNotifications = useSubscribedNotifications() || {};\n const roomState = useHMSStore(selectRoomState);\n const updateRoomLayoutForRole = useUpdateRoomLayout();\n const isNotificationDisabled = useIsNotificationDisabled();\n const { redirectToLeave } = useRedirectToLeave();\n const vanillaStore = useHMSVanillaStore();\n\n const handleRoleChangeDenied = useCallback(request => {\n ToastManager.addToast({\n title: `${request.peerName} denied your request to join the ${request.role.name} role`,\n variant: 'error',\n });\n }, []);\n\n useCustomEvent({ type: ROLE_CHANGE_DECLINED, onEvent: handleRoleChangeDenied });\n\n useEffect(() => {\n if (!notification || isNotificationDisabled) {\n return;\n }\n switch (notification.type) {\n case HMSNotificationTypes.HAND_RAISE_CHANGED: {\n if (roomState !== HMSRoomState.Connected || notification.data.isLocal) {\n return;\n }\n const hasPeerHandRaised = vanillaStore.getState(selectHasPeerHandRaised(notification.data.id));\n if (hasPeerHandRaised) {\n ToastBatcher.showToast({ notification, type: 'RAISE_HAND' });\n }\n break;\n }\n case HMSNotificationTypes.METADATA_UPDATED:\n if (roomState !== HMSRoomState.Connected) {\n return;\n }\n // Don't show toast message when metadata is updated and raiseHand is false.\n // Don't show toast message in case of local peer.\n const metadata = getMetadata(notification.data?.metadata);\n if (!metadata?.isHandRaised || notification.data.isLocal) return;\n\n console.debug('Metadata updated', notification.data);\n if (!subscribedNotifications.METADATA_UPDATED) return;\n ToastBatcher.showToast({ notification, type: 'RAISE_HAND' });\n break;\n case HMSNotificationTypes.NAME_UPDATED:\n console.log(notification.data.id + ' changed their name to ' + notification.data.name);\n break;\n case HMSNotificationTypes.ERROR:\n if (notification.data?.isTerminal && notification.data?.action !== 'INIT') {\n if ([500, 6008].includes(notification.data?.code)) {\n ToastManager.addToast({\n title: `Error: ${notification.data?.message}`,\n });\n } else {\n // show button action when the error is terminal\n const toastId = ToastManager.addToast({\n title:\n notification.data?.message ||\n 'We couldn\u2019t reconnect you. When you\u2019re back online, try joining the room.',\n inlineAction: true,\n action: (\n <Button\n onClick={() => {\n ToastManager.removeToast(toastId);\n navigate(`/${params.roomId}${params.role ? `/${params.role}` : ''}`);\n }}\n >\n Rejoin\n </Button>\n ),\n close: false,\n });\n }\n // goto leave for terminal if any action is not performed within 2secs\n // if network is still unavailable going to preview will throw an error\n redirectToLeave(1000);\n return;\n }\n // Autoplay error or user denied screen share (cancelled browser pop-up)\n if (notification.data?.code === 3008 || notification.data?.code === 3001 || notification.data?.code === 3011) {\n return;\n }\n if (notification.data?.action === 'INIT') {\n return;\n }\n if (!subscribedNotifications.ERROR) return;\n ToastManager.addToast({\n title: `Error: ${notification.data?.message} - ${notification.data?.description}`,\n });\n break;\n case HMSNotificationTypes.ROLE_UPDATED: {\n if (notification.data?.isLocal) {\n ToastManager.addToast({\n title: `You are now a ${notification.data.roleName}`,\n });\n updateRoomLayoutForRole(notification.data.roleName);\n }\n break;\n }\n case HMSNotificationTypes.CHANGE_TRACK_STATE_REQUEST:\n const track = notification.data?.track;\n if (!notification.data.enabled) {\n ToastManager.addToast({\n title: `Your ${track.source} ${track.type} was muted by\n ${notification.data.requestedBy?.name}.`,\n });\n }\n break;\n case HMSNotificationTypes.REMOVED_FROM_ROOM:\n case HMSNotificationTypes.ROOM_ENDED:\n ToastManager.addToast({\n title: `${notification.message}. \n ${notification.data.reason && `Reason: ${notification.data.reason}`}`,\n });\n redirectToLeave(1000);\n break;\n case HMSNotificationTypes.DEVICE_CHANGE_UPDATE:\n ToastManager.addToast({\n title: notification.message,\n });\n break;\n default:\n break;\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [notification, subscribedNotifications.ERROR, subscribedNotifications.METADATA_UPDATED]);\n\n if (isNotificationDisabled) {\n return null;\n }\n\n return (\n <>\n <TrackUnmuteModal />\n <TrackBulkUnmuteModal />\n <TrackNotifications />\n {roomState === HMSRoomState.Connected ? <PeerNotifications /> : null}\n <ReconnectNotifications />\n <AutoplayBlockedModal />\n <PermissionErrorModal />\n <InitErrorModal notification={notification} />\n </>\n );\n}\n", "import React from 'react';\nimport type { Layout } from '@100mslive/types-prebuilt';\nimport merge from 'lodash.merge';\n// @ts-ignore: fix types\nimport { useAuthToken } from '../../components/AppData/useUISettings';\nimport { useFetchRoomLayout, useFetchRoomLayoutResponse } from './hooks/useFetchRoomLayout';\n\nexport type RoomLayoutProviderProps = {\n roomLayoutEndpoint?: string;\n overrideLayout?: Partial<Layout>;\n};\n\nexport const RoomLayoutContext = React.createContext<\n | {\n layout: Layout | undefined;\n updateRoomLayoutForRole: useFetchRoomLayoutResponse['updateRoomLayoutForRole'] | undefined;\n }\n | undefined\n>(undefined);\n\nexport const RoomLayoutProvider: React.FC<React.PropsWithChildren<RoomLayoutProviderProps>> = ({\n children,\n roomLayoutEndpoint,\n overrideLayout,\n}) => {\n const authToken: string = useAuthToken();\n const { layout, updateRoomLayoutForRole } = useFetchRoomLayout({ authToken, endpoint: roomLayoutEndpoint });\n const mergedLayout = authToken && layout ? merge(layout, overrideLayout) : layout;\n return (\n <RoomLayoutContext.Provider value={{ layout: mergedLayout, updateRoomLayoutForRole }}>\n {children}\n </RoomLayoutContext.Provider>\n );\n};\n\nexport const useRoomLayout = () => React.useContext(RoomLayoutContext)?.layout;\nexport const useUpdateRoomLayout = () => React.useContext(RoomLayoutContext)?.updateRoomLayoutForRole;\n", "import { useCallback, useEffect, useRef, useState } from 'react';\nimport type { GetResponse, Layout } from '@100mslive/types-prebuilt';\nimport { defaultLayout } from '../constants';\n\n// TODO: remove this usage\nconst fetchWithRetry = async (url = '', options = {}) => {\n const MAX_RETRIES = 4;\n let error = Error('something went wrong');\n for (let i = 0; i < MAX_RETRIES; i++) {\n try {\n return await fetch(url, options);\n } catch (err) {\n error = err as Error;\n }\n }\n console.error('Fetch failed after max retries', { url, options });\n throw error;\n};\n\n// this should take endpoint and return\nexport type useFetchRoomLayoutProps = {\n endpoint?: string;\n authToken: string;\n};\n\nexport type useFetchRoomLayoutResponse = {\n layout: Layout | undefined;\n updateRoomLayoutForRole: (role: string) => void;\n};\n\nexport const useFetchRoomLayout = ({\n endpoint = '',\n authToken = '',\n}: useFetchRoomLayoutProps): useFetchRoomLayoutResponse => {\n const [layout, setLayout] = useState<Layout | undefined>(undefined);\n const layoutResp = useRef<GetResponse>();\n const isFetchInProgress = useRef(false);\n const updateRoomLayoutForRole = useCallback((role: string) => {\n if (!layoutResp.current) {\n return;\n }\n const [layout] = (layoutResp.current?.data || []).filter(layout => layout.role === role);\n if (layout) {\n setLayout(layout);\n }\n }, []);\n useEffect(() => {\n (async () => {\n if (isFetchInProgress.current || !authToken) {\n return;\n }\n isFetchInProgress.current = true;\n try {\n const resp = await fetchWithRetry(endpoint || 'https://api.100ms.live/v2/layouts/ui', {\n headers: {\n Authorization: `Bearer ${authToken}`,\n },\n });\n layoutResp.current = await resp.json();\n } catch (e) {\n console.error('[Room Layout API]: Failed to fetch / process room layout. Resorting to default layout.', e);\n layoutResp.current = {\n data: [defaultLayout],\n };\n }\n let layoutForRole = layoutResp.current?.data?.[0];\n if (!layoutForRole) {\n console.error(\n '[Room Layout API]: Unable to figure out room layout from API response. Resorting to default layout.',\n );\n layoutForRole = defaultLayout;\n }\n const layout = layoutForRole;\n setLayout(layout);\n isFetchInProgress.current = false;\n })();\n }, [authToken, endpoint]);\n\n return { layout, updateRoomLayoutForRole };\n};\n", "import type { Layout } from '@100mslive/types-prebuilt';\nimport { JoinForm_JoinBtnType } from '@100mslive/types-prebuilt/elements/join_form';\n\nexport const defaultLayout: Layout = {\n id: '',\n role_id: '',\n template_id: '',\n app_id: '',\n typography: {\n font_family: 'Inter',\n },\n themes: [],\n options: {},\n screens: {\n preview: {\n default: {\n elements: {\n preview_header: {\n title: 'Get Started',\n sub_title: 'Setup your audio and video before joining',\n },\n join_form: {\n join_btn_type: JoinForm_JoinBtnType.JOIN_BTN_TYPE_JOIN_ONLY,\n join_btn_label: 'Join Now',\n go_live_btn_label: 'Go Live',\n },\n },\n },\n },\n conferencing: {\n default: {\n elements: {\n chat: {},\n participant_list: {},\n video_tile_layout: {\n grid: {\n enable_local_tile_inset: true,\n prominent_roles: [],\n enable_spotlighting_peer: true,\n },\n },\n emoji_reactions: {},\n },\n },\n },\n leave: {},\n },\n};\n", "import React, { useCallback } from 'react';\nimport { selectPeerByID, useHMSActions, useHMSStore } from '@100mslive/react-sdk';\nimport {\n ChatUnreadIcon,\n ConnectivityIcon,\n HandIcon,\n PeopleAddIcon,\n PeopleRemoveIcon,\n PoorConnectivityIcon,\n} from '@100mslive/react-icons';\nimport { Button } from '../../../Button';\nimport { useRoomLayout } from '../../provider/roomLayoutProvider';\nimport { useIsSidepaneTypeOpen, useSidepaneToggle } from '../AppData/useSidepane';\nimport { SIDE_PANE_OPTIONS } from '../../common/constants';\n\nconst ChatAction = React.forwardRef((_, ref) => {\n const toggleChat = useSidepaneToggle(SIDE_PANE_OPTIONS.CHAT);\n const isChatOpen = useIsSidepaneTypeOpen(SIDE_PANE_OPTIONS.CHAT);\n\n if (isChatOpen) {\n return null;\n }\n\n return (\n <Button outlined as=\"div\" variant=\"standard\" css={{ w: 'max-content' }} onClick={toggleChat} ref={ref}>\n Open Chat\n </Button>\n );\n});\n\nconst HandRaiseAction = React.forwardRef(({ id = '', isSingleHandRaise = true }, ref) => {\n const hmsActions = useHMSActions();\n const toggleSidepane = useSidepaneToggle(SIDE_PANE_OPTIONS.PARTICIPANTS);\n const isParticipantsOpen = useIsSidepaneTypeOpen(SIDE_PANE_OPTIONS.PARTICIPANTS);\n const peer = useHMSStore(selectPeerByID(id));\n const layout = useRoomLayout();\n const {\n bring_to_stage_label,\n on_stage_role,\n off_stage_roles = [],\n } = layout?.screens?.conferencing?.default?.elements.on_stage_exp || {};\n\n const onClickHandler = useCallback(() => {\n if (isSingleHandRaise) {\n hmsActions.changeRoleOfPeer(id, on_stage_role);\n } else {\n !isParticipantsOpen && toggleSidepane();\n }\n }, [hmsActions, id, isParticipantsOpen, isSingleHandRaise, on_stage_role, toggleSidepane]);\n\n // show nothing if handRaise is single and peer role is not hls\n if (isSingleHandRaise && (!peer || !off_stage_roles.includes(peer.roleName))) {\n return null;\n }\n return (\n <Button outlined as=\"div\" variant=\"standard\" css={{ w: 'max-content' }} onClick={onClickHandler} ref={ref}>\n {isSingleHandRaise ? bring_to_stage_label : 'View'}\n </Button>\n );\n});\nexport const ToastConfig = {\n PEER_LIST: {\n single: function (notification) {\n if (notification.data.length === 1) {\n return {\n title: `${notification.data[0]?.name} joined`,\n icon: <PeopleAddIcon />,\n };\n }\n return {\n title: `${notification.data[notification.data.length - 1]?.name} and ${\n notification.data.length - 1\n } others joined`,\n icon: <PeopleAddIcon />,\n };\n },\n multiple: notifications => {\n return {\n title: `${notifications[0].data.name} and ${notifications.length - 1} others joined`,\n icon: <PeopleAddIcon />,\n };\n },\n },\n PEER_JOINED: {\n single: function (notification) {\n return {\n title: `${notification.data?.name} joined`,\n icon: <PeopleAddIcon />,\n };\n },\n multiple: function (notifications) {\n return {\n title: `${notifications[notifications.length - 1].data.name} and ${notifications.length - 1} others joined`,\n icon: <PeopleAddIcon />,\n };\n },\n },\n PEER_LEFT: {\n single: function (notification) {\n return {\n title: `${notification.data?.name} left`,\n icon: <PeopleRemoveIcon />,\n };\n },\n multiple: function (notifications) {\n return {\n title: `${notifications[notifications.length - 1].data.name} and ${notifications.length - 1} others left`,\n icon: <PeopleRemoveIcon />,\n };\n },\n },\n RAISE_HAND: {\n single: notification => {\n return {\n title: `${notification.data?.name} raised hand`,\n icon: <HandIcon />,\n action: <HandRaiseAction id={notification.data?.id} />,\n };\n },\n multiple: notifications => {\n const count = new Set(notifications.map(notification => notification.data?.id)).size;\n return {\n title: `${notifications[notifications.length - 1].data?.name} ${\n count > 1 ? `${count} and others` : ''\n } raised hand`,\n icon: <HandIcon />,\n action: <HandRaiseAction isSingleHandRaise={false} />,\n };\n },\n },\n NEW_MESSAGE: {\n single: notification => {\n return {\n title: `New message from ${notification.data?.senderName}`,\n icon: <ChatUnreadIcon />,\n action: <ChatAction />,\n };\n },\n multiple: notifications => {\n return {\n title: `${notifications.length} new messages`,\n icon: <ChatUnreadIcon />,\n action: <ChatAction />,\n };\n },\n },\n RECONNECTED: {\n single: () => {\n return {\n title: `You are now connected`,\n icon: <ConnectivityIcon />,\n variant: 'success',\n duration: 3000,\n };\n },\n },\n RECONNECTING: {\n single: message => {\n return {\n title: `You are offline for now. while we try to reconnect, please check\n your internet connection. ${message}.\n `,\n icon: <PoorConnectivityIcon />,\n variant: 'warning',\n duration: 30000,\n };\n },\n },\n};\n", "import { v4 } from 'uuid';\n\nexport const ToastManager = {\n toasts: new Map(),\n listeners: new Map(),\n addToast(toast) {\n const id = toast.id ? toast.id : v4();\n this.toasts.set(id, { ...toast, id });\n this.onChange();\n return id;\n },\n\n clearAllToast() {\n this.toasts.clear();\n this.onChange();\n },\n\n removeToast(id) {\n this.toasts.delete(id);\n this.onChange();\n },\n replaceToast(id, toast) {\n if (this.isActive(id)) {\n this.toasts.set(id, { ...this.toasts.get(id), ...toast });\n this.onChange();\n return id;\n } else {\n return this.addToast(toast);\n }\n },\n addListener(cb) {\n this.listeners.set(cb, cb);\n },\n removeListener(cb) {\n this.listeners.delete(cb);\n },\n isActive(id) {\n return this.toasts.has(id);\n },\n onChange() {\n const toasts = Array.from(this.toasts.values());\n this.listeners.forEach(listener => listener(toasts));\n },\n};\n", "import { ToastConfig } from './ToastConfig';\nimport { ToastManager } from './ToastManager';\n\nexport const ToastBatcher = {\n toastsType: new Map(),\n showToastInternal({ notification, duration, type }) {\n let notificationType = type;\n if (!type) {\n notificationType = notification.type;\n }\n const toastType = this.toastsType.has(notificationType);\n if (toastType) {\n let { notifications } = this.toastsType.get(notificationType);\n const { id } = this.toastsType.get(notificationType);\n notifications.push(notification);\n const toastObject = ToastConfig[notificationType].multiple(notifications);\n const toastId = ToastManager.replaceToast(id, {\n ...toastObject,\n duration: duration,\n });\n this.toastsType.set(notificationType, {\n id: toastId,\n notifications: notifications,\n duration: duration,\n });\n } else {\n const toastObject = ToastConfig[notificationType].single(notification);\n const toastId = ToastManager.addToast({\n ...toastObject,\n duration: duration,\n });\n let notifications = [];\n notifications.push(notification);\n this.toastsType.set(notificationType, {\n id: toastId,\n notifications: [...notifications],\n duration: duration,\n });\n }\n },\n showToast({ notification, duration = 3000, type }) {\n try {\n this.showToastInternal({ notification, duration, type });\n } catch (err) {\n console.debug('Notifications', err);\n }\n },\n syncUItoast(toastsDisplaying) {\n for (const [toastType, toastInfo] of this.toastsType.entries()) {\n if (!toastsDisplaying.find(toast => toast.id === toastInfo.id)) {\n this.toastsType.delete(toastType);\n }\n }\n },\n};\n\nToastManager.addListener(ToastBatcher.syncUItoast.bind(ToastBatcher));\n", "import React from 'react';\nimport { useAutoplayError } from '@100mslive/react-sdk';\nimport { Button, Dialog, Text } from '../../../';\nimport { DialogContent, DialogRow } from '../../primitives/DialogContent';\n\nexport function AutoplayBlockedModal() {\n const { error, resetError, unblockAudio } = useAutoplayError();\n return (\n <Dialog.Root\n open={!!error}\n onOpenChange={value => {\n if (!value) {\n unblockAudio();\n }\n resetError();\n }}\n >\n <DialogContent title=\"Permission Error\" closeable={false}>\n <DialogRow>\n <Text variant=\"md\">\n The browser wants us to get a confirmation for playing the Audio. Please allow audio to proceed.\n </Text>\n </DialogRow>\n <DialogRow justify=\"end\">\n <Button\n variant=\"primary\"\n onClick={() => {\n unblockAudio();\n resetError();\n }}\n >\n Allow Audio\n </Button>\n </DialogRow>\n </DialogContent>\n </Dialog.Root>\n );\n}\n", "import React, { useEffect, useState } from 'react';\nimport { Text } from '../../../';\nimport { ErrorDialog } from '../../primitives/DialogContent';\n\nexport const InitErrorModal = ({ notification }) => {\n const [showModal, setShowModal] = useState(false);\n const [info, setInfo] = useState({ title: 'Init Error', description: '' });\n\n useEffect(() => {\n const data = notification?.data;\n if (!data || data.action !== 'INIT') {\n return;\n }\n let description;\n let title;\n if (data.description.includes('role is invalid')) {\n description = 'This role does not exist for the given room. Try again with a valid role.';\n title = 'Invalid Role';\n } else if (data.description.includes('room is not active')) {\n title = 'Room is disabled';\n description =\n 'This room is disabled and cannot be joined. To enable the room, use the 100ms dashboard or the API.';\n } else {\n description = data.description;\n title = 'Init Error';\n }\n setInfo({ title, description });\n setShowModal(true);\n }, [notification]);\n\n return (\n <ErrorDialog open={showModal} onOpenChange={setShowModal} title={info.title}>\n <Text variant=\"sm\" css={{ wordBreak: 'break-word' }}>\n {info.description} <br />\n Current URL - {window.location.href}\n </Text>\n </ErrorDialog>\n );\n};\n", "import { useEffect } from 'react';\nimport { HMSNotificationTypes, useHMSNotifications } from '@100mslive/react-sdk';\nimport { ToastBatcher } from '../Toast/ToastBatcher';\nimport { useSubscribedNotifications } from '../AppData/useUISettings';\nimport { SUBSCRIBED_NOTIFICATIONS } from '../../common/constants';\n\nconst notificationTypes = [\n HMSNotificationTypes.PEER_LIST,\n HMSNotificationTypes.PEER_JOINED,\n HMSNotificationTypes.PEER_LEFT,\n];\n\nexport const PeerNotifications = () => {\n const notification = useHMSNotifications(notificationTypes);\n const isPeerJoinSubscribed = useSubscribedNotifications(SUBSCRIBED_NOTIFICATIONS.PEER_JOINED);\n const isPeerLeftSubscribed = useSubscribedNotifications(SUBSCRIBED_NOTIFICATIONS.PEER_LEFT);\n useEffect(() => {\n if (!notification?.data) {\n return;\n }\n\n console.debug(`[${notification.type}]`, notification);\n switch (notification.type) {\n case HMSNotificationTypes.PEER_LIST:\n if (!isPeerJoinSubscribed || notification.data.length === 0) {\n return;\n }\n break;\n case HMSNotificationTypes.PEER_JOINED:\n if (!isPeerJoinSubscribed) {\n return;\n }\n break;\n case HMSNotificationTypes.PEER_LEFT:\n if (!isPeerLeftSubscribed) {\n return;\n }\n break;\n default:\n return;\n }\n\n ToastBatcher.showToast({ notification });\n }, [notification, isPeerJoinSubscribed, isPeerLeftSubscribed]);\n\n return null;\n};\n", "import React, { useEffect, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport { HMSNotificationTypes, useHMSNotifications } from '@100mslive/react-sdk';\nimport { Button, config as cssConfig, Dialog, Flex, Text } from '../../../';\nimport androidPermissionAlert from '../../images/android-perm-1.png';\nimport iosPermissions from '../../images/ios-perm-0.png';\nimport { isAndroid, isIOS } from '../../common/constants';\n\nexport function PermissionErrorModal() {\n const notification = useHMSNotifications(HMSNotificationTypes.ERROR);\n const [deviceType, setDeviceType] = useState('');\n const [isSystemError, setIsSystemError] = useState(false);\n const isMobile = useMedia(cssConfig.media.md);\n\n useEffect(() => {\n if (\n !notification ||\n (notification.data?.code !== 3001 && notification.data?.code !== 3011) ||\n (notification.data?.code === 3001 && notification.data?.message.includes('screen'))\n ) {\n return;\n }\n console.error(`[${notification.type}]`, notification);\n const errorMessage = notification.data?.message;\n const hasAudio = errorMessage.includes('audio');\n const hasVideo = errorMessage.includes('video');\n const hasScreen = errorMessage.includes('screen');\n if (hasAudio && hasVideo) {\n setDeviceType('camera and microphone');\n } else if (hasAudio) {\n setDeviceType('microphone');\n } else if (hasVideo) {\n setDeviceType('camera');\n } else if (hasScreen) {\n setDeviceType('screen');\n }\n setIsSystemError(notification.data.code === 3011);\n }, [notification]);\n\n return deviceType ? (\n <Dialog.Root open={!!deviceType}>\n <Dialog.Portal>\n <Dialog.Overlay />\n <Dialog.Content css={{ w: 'min(380px, 90%)', p: '$8' }}>\n <Dialog.Title\n css={{\n borderBottom: '1px solid $border_default',\n }}\n >\n {isMobile && isIOS ? (\n <img style={{ maxWidth: '100%', maxHeight: '100%' }} src={iosPermissions} alt=\"iOS Permission flow\" />\n ) : null}\n\n {/* Images for android */}\n {isMobile && isAndroid ? (\n <img\n src={androidPermissionAlert}\n style={{ maxWidth: '100%', maxHeight: '100%' }}\n alt=\"Android Permission flow \"\n />\n ) : null}\n\n <Text variant=\"h6\">We can't access your {deviceType}</Text>\n </Dialog.Title>\n\n <Text variant=\"sm\" css={{ pt: '$4', pb: '$10', color: '$on_surface_medium' }}>\n {/* IOS prompt text */}\n {isMobile && isIOS\n ? 'Enable permissions by reloading this page and clicking \"Allow\" on the pop-up, or change settings from the address bar.'\n : null}\n\n {/* Prompt for android devices */}\n {isMobile && isAndroid\n ? `To allow other users to see and hear you, click the blocked camera icon in your browser's address bar.`\n : null}\n\n {/* Prompt for desktops */}\n {!isMobile ? `Access to ${deviceType} is required. ` : null}\n\n {isSystemError && !isMobile\n ? `Enable permissions for ${deviceType}${deviceType === 'screen' ? 'share' : ''} from sytem settings`\n : null}\n {!isSystemError && !isMobile\n ? `Enable permissions for ${deviceType}${\n deviceType === 'screen' ? 'share' : ''\n } from address bar or browser settings.`\n : null}\n </Text>\n\n {/* CTA section */}\n {isMobile && isIOS ? (\n <>\n <Button onClick={() => window.location.reload()} css={{ w: '100%', mb: '$6' }}>\n Reload\n </Button>\n <Button outlined variant=\"standard\" onClick={() => setDeviceType('')} css={{ w: '100%' }}>\n Continue anyway\n </Button>\n </>\n ) : null}\n\n {isMobile && isAndroid ? (\n <>\n <Button onClick={() => setDeviceType('')} css={{ w: '100%', mb: '$6' }}>\n I've allowed access\n </Button>\n <Button outlined variant=\"standard\" onClick={() => setDeviceType('')} css={{ w: '100%' }}>\n Continue anyway\n </Button>\n </>\n ) : null}\n\n {!isMobile ? (\n <Flex justify=\"end\" css={{ w: '100%' }}>\n <Button outlined variant=\"standard\" onClick={() => setDeviceType('')}>\n Dismiss\n </Button>\n </Flex>\n ) : null}\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n ) : null;\n}\n", "import React, { useEffect, useState } from 'react';\nimport { HMSNotificationTypes, useHMSNotifications } from '@100mslive/react-sdk';\nimport { Dialog, Flex, Loading, Text } from '../../../';\nimport { ToastConfig } from '../Toast/ToastConfig';\nimport { ToastManager } from '../Toast/ToastManager';\n\nconst notificationTypes = [\n HMSNotificationTypes.RECONNECTED,\n HMSNotificationTypes.RECONNECTING,\n HMSNotificationTypes.ERROR,\n];\nlet notificationId = null;\n\nexport const ReconnectNotifications = () => {\n const notification = useHMSNotifications(notificationTypes);\n const [open, setOpen] = useState(false);\n useEffect(() => {\n if (notification?.type === HMSNotificationTypes.ERROR && notification?.data?.isTerminal) {\n setOpen(false);\n } else if (notification?.type === HMSNotificationTypes.RECONNECTED) {\n notificationId = ToastManager.replaceToast(notificationId, ToastConfig.RECONNECTED.single());\n setOpen(false);\n } else if (notification?.type === HMSNotificationTypes.RECONNECTING) {\n notificationId = ToastManager.replaceToast(\n notificationId,\n ToastConfig.RECONNECTING.single(notification.data.message),\n );\n }\n }, [notification]);\n if (!open) return null;\n return (\n <Dialog.Root open={open} modal={true}>\n <Dialog.Portal container={document.getElementById('conferencing')}>\n <Dialog.Overlay />\n <Dialog.Content\n css={{\n width: 'fit-content',\n maxWidth: '80%',\n p: '$4 $8',\n position: 'relative',\n top: 'unset',\n bottom: '$9',\n transform: 'translate(-50%, -100%)',\n animation: 'none !important',\n }}\n >\n <Flex align=\"center\">\n <div style={{ display: 'inline', margin: '0.25rem' }}>\n <Loading size={16} />\n </div>\n <Text css={{ fontSize: '$space$8', color: '$on_surface_high' }}>\n You lost your network connection. Trying to reconnect.\n </Text>\n </Flex>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n", "import React, { useEffect, useState } from 'react';\nimport { HMSNotificationTypes, useHMSActions, useHMSNotifications } from '@100mslive/react-sdk';\nimport { MicOnIcon } from '@100mslive/react-icons';\nimport { RequestDialog } from '../../primitives/DialogContent';\n\nexport const TrackBulkUnmuteModal = () => {\n const hmsActions = useHMSActions();\n const [muteNotification, setMuteNotification] = useState(null);\n const notification = useHMSNotifications([\n HMSNotificationTypes.CHANGE_MULTI_TRACK_STATE_REQUEST,\n HMSNotificationTypes.ROOM_ENDED,\n HMSNotificationTypes.REMOVED_FROM_ROOM,\n ]);\n\n useEffect(() => {\n switch (notification?.type) {\n case HMSNotificationTypes.REMOVED_FROM_ROOM:\n case HMSNotificationTypes.ROOM_ENDED:\n setMuteNotification(null);\n break;\n case HMSNotificationTypes.CHANGE_MULTI_TRACK_STATE_REQUEST:\n if (notification?.data.enabled) {\n setMuteNotification(notification.data);\n }\n break;\n default:\n return;\n }\n }, [notification]);\n\n if (!muteNotification) {\n return null;\n }\n\n const { requestedBy: peer, tracks, enabled } = muteNotification;\n\n return (\n <RequestDialog\n title=\"Track Unmute Request\"\n body={`${peer?.name} has requested you to unmute your tracks.`}\n onOpenChange={value => !value && setMuteNotification(null)}\n onAction={() => {\n tracks.forEach(track => {\n hmsActions.setEnabledTrack(track.id, enabled);\n });\n setMuteNotification(null);\n }}\n Icon={MicOnIcon}\n />\n );\n};\n", "import { useEffect } from 'react';\nimport { HMSNotificationTypes, useHMSNotifications } from '@100mslive/react-sdk';\n\nconst notificationTypes = [\n HMSNotificationTypes.TRACK_ADDED,\n HMSNotificationTypes.TRACK_REMOVED,\n HMSNotificationTypes.TRACK_MUTED,\n HMSNotificationTypes.TRACK_UNMUTED,\n];\nexport const TrackNotifications = () => {\n const notification = useHMSNotifications(notificationTypes);\n useEffect(() => {\n if (notification) {\n console.debug(`[${notification.type}]`, notification);\n }\n }, [notification]);\n\n return null;\n};\n", "import React, { useEffect, useState } from 'react';\nimport { HMSNotificationTypes, useHMSActions, useHMSNotifications } from '@100mslive/react-sdk';\nimport { MicOnIcon } from '@100mslive/react-icons';\nimport { RequestDialog } from '../../primitives/DialogContent';\n\nexport const TrackUnmuteModal = () => {\n const hmsActions = useHMSActions();\n const notification = useHMSNotifications([\n HMSNotificationTypes.CHANGE_TRACK_STATE_REQUEST,\n HMSNotificationTypes.ROOM_ENDED,\n HMSNotificationTypes.REMOVED_FROM_ROOM,\n ]);\n const [muteNotification, setMuteNotification] = useState(null);\n\n useEffect(() => {\n switch (notification?.type) {\n case HMSNotificationTypes.REMOVED_FROM_ROOM:\n case HMSNotificationTypes.ROOM_ENDED:\n setMuteNotification(null);\n break;\n case HMSNotificationTypes.CHANGE_TRACK_STATE_REQUEST:\n if (notification?.data.enabled) {\n setMuteNotification(notification.data);\n }\n break;\n default:\n return;\n }\n }, [notification]);\n\n if (!muteNotification) {\n return null;\n }\n\n const { requestedBy: peer, track, enabled } = muteNotification;\n\n return (\n <RequestDialog\n title=\"Track Unmute Request\"\n onOpenChange={value => !value && setMuteNotification(null)}\n body={`${peer?.name} has requested you to unmute your ${track?.source} ${track?.type}.`}\n onAction={() => {\n hmsActions.setEnabledTrack(track.id, enabled);\n setMuteNotification(null);\n }}\n Icon={MicOnIcon}\n />\n );\n};\n", "import { useCallback } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useHMSPrebuiltContext } from '../../AppContext';\n// @ts-ignore: No implicit Any\nimport { PictureInPicture } from '../PIP/PIPManager';\n// @ts-ignore: No implicit Any\nimport { ToastManager } from '../Toast/ToastManager';\nimport { useRoomLayoutLeaveScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\n\nexport const useRedirectToLeave = () => {\n const { isLeaveScreenEnabled } = useRoomLayoutLeaveScreen();\n const { onLeave } = useHMSPrebuiltContext();\n const params = useParams();\n const navigate = useNavigate();\n\n const redirect = useCallback(\n (timeout = 0) => {\n setTimeout(() => {\n const prefix = isLeaveScreenEnabled ? '/leave/' : '/';\n if (params.role) {\n navigate(prefix + params.roomId + '/' + params.role);\n } else {\n navigate(prefix + params.roomId);\n }\n PictureInPicture.stop().catch(() => console.error('stopping pip'));\n ToastManager.clearAllToast();\n onLeave?.();\n }, timeout);\n },\n [isLeaveScreenEnabled, navigate, onLeave, params.role, params.roomId],\n );\n\n return { redirectToLeave: redirect };\n};\n", "import * as workerTimers from 'worker-timers';\nimport { drawVideoElementsOnCanvas, dummyChangeInCanvas, resetPIPCanvasColors } from './pipUtils';\nimport { isIOS, isMacOS, isSafari } from '../../common/constants';\nconst MAX_NUMBER_OF_TILES_IN_PIP = 4;\nconst DEFAULT_FPS = 30;\nconst DEFAULT_CANVAS_WIDTH = 480;\nconst DEFAULT_CANVAS_HEIGHT = 320;\nconst LEAVE_EVENT_NAME = 'leavepictureinpicture';\n\nconst PIPStates = {\n starting: 'starting',\n started: 'started',\n stopping: 'stopping',\n stopped: 'stopped',\n};\n\n/**\n * video elements are stitched together as a canvas which is converted to\n * another video element converted to PIP.\n * The task is split into two parts -\n * 1. a function which gets hit when the input changes and updates the tracks\n * to show\n * 2. an independent loop which updates the canvas periodically based on the current\n * tracks which should be shown.\n */\nclass PipManager {\n listeners = new Set();\n constructor() {\n this.reset();\n }\n\n listenToStateChange(cb) {\n this.listeners.add(cb);\n }\n\n /**\n * @private\n */\n reset() {\n console.debug('resetting PIP state');\n resetPIPCanvasColors();\n this.canvas = null; // where stitching will take place\n this.pipVideo = null; // the element which will be sent in PIP\n this.timeoutRef = null; // setTimeout reference so it can be cancelled\n this.hmsActions = null; // for attaching detaching\n this.videoElements = []; // for attaching tracks\n this.tracksToShow = [];\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n this.onStateChange = () => {}; // for user of this class to listen to changes\n this.state = PIPStates.stopped;\n }\n\n /**\n * check if PIP is supported in this browser env\n */\n isSupported() {\n return !!document.pictureInPictureEnabled && !isIOS && !(isMacOS && isSafari);\n }\n\n /**\n * check if pip is currently turned on\n */\n isOn() {\n return !!document.pictureInPictureElement;\n }\n\n /**\n * request browser to start pip and start the render loop updating the pip\n * video element with peer tracks.\n * @param hmsActions\n * @param onStateChangeFn {function(bool):void} callback called to notify change in pip state\n */\n async start(hmsActions, onStateChangeFn) {\n if (!this.isSupported()) {\n throw new Error('pip is not supported on this browser');\n }\n console.debug('starting PIP, current state', this.state);\n if (this.state === PIPStates.started) {\n await this.stop(); // if anything is already running\n } else if (this.state === PIPStates.starting) {\n return; // ignore double clicks\n }\n this.state = PIPStates.starting;\n try {\n await this.init(hmsActions, onStateChangeFn);\n // when user closes pip, call internal stop\n this.pipVideo.addEventListener(LEAVE_EVENT_NAME, this.stop);\n this.renderLoop();\n if (!this.isOn()) {\n await this.requestPIP();\n }\n console.debug('pip started');\n this.state = PIPStates.started;\n this.onStateChange(true);\n this.callListeners(true);\n } catch (err) {\n console.error('error in request pip', err);\n this.state = PIPStates.stopped;\n }\n }\n\n stop = async () => {\n if (this.state === PIPStates.stopped) {\n return;\n }\n this.state = PIPStates.stopping;\n this.pipVideo?.removeEventListener(LEAVE_EVENT_NAME, this.stop);\n if (this.timeoutRef) {\n workerTimers.clearTimeout(this.timeoutRef);\n this.timeoutRef = null;\n }\n if (this.isOn()) {\n this.exitPIP();\n }\n // detach all to avoid bandwidth consumption\n await this.detachOldAttachNewTracks(this.tracksToShow, []);\n this.onStateChange(false); // notify parent about this\n this.callListeners(false);\n this.reset(); // cleanup\n this.state = PIPStates.stopped;\n };\n\n /**\n * @param peers {Array} All Remote Peers present in call.\n * @param tracksMap {Object} map of track id to track\n * */\n async updatePeersAndTracks(peers, tracksMap) {\n if (!this.canvas) {\n return;\n }\n const newTracksToShowUnordered = this.pickTracksToShow(peers, tracksMap);\n const currentTracksShowing = this.tracksToShow;\n this.tracksToShow = this.orderNewTracksToShow(newTracksToShowUnordered, currentTracksShowing);\n try {\n await this.detachOldAttachNewTracks(currentTracksShowing, this.tracksToShow, tracksMap);\n } catch (error) {\n console.error('error in detaching/attaching tracks', error);\n }\n }\n\n // ------- Private function --------------\n /**\n * @private {boolean} on - whether pip is on/off\n */\n callListeners = on => {\n this.listeners.forEach(listener => listener?.(on));\n };\n\n /**\n * @private\n */\n async init(hmsActions, onStateChangeFn) {\n await this.initMediaElements();\n this.hmsActions = hmsActions;\n this.onStateChange = onStateChangeFn;\n }\n\n async initMediaElements() {\n if (!this.canvas) {\n const { canvas, pipVideo } = this.initializeCanvasAndVideoElement();\n this.canvas = canvas; // where stitching will take place\n this.pipVideo = pipVideo; // the element which will be sent in PIP\n this.videoElements = this.initializeVideoElements(); // for attaching tracks\n const videoPlayPromise = this.pipVideo.play();\n dummyChangeInCanvas(this.canvas);\n await videoPlayPromise;\n }\n }\n\n initializeCanvasAndVideoElement() {\n const canvas = document.createElement('canvas');\n canvas.width = DEFAULT_CANVAS_WIDTH;\n canvas.height = DEFAULT_CANVAS_HEIGHT;\n const pipVideo = document.createElement('video');\n pipVideo.width = DEFAULT_CANVAS_WIDTH;\n pipVideo.height = DEFAULT_CANVAS_HEIGHT;\n pipVideo.muted = true;\n pipVideo.srcObject = canvas.captureStream();\n return { canvas, pipVideo };\n }\n\n initializeVideoElements() {\n let videoElements = [];\n for (let i = 0; i < MAX_NUMBER_OF_TILES_IN_PIP; i++) {\n const videoElement = document.createElement('video');\n videoElement.autoplay = true;\n videoElement.playsinline = true;\n videoElements.push(videoElement);\n }\n return videoElements;\n }\n\n /**\n * render loop is responsible for rendering the video elements on canvas/pip.\n * in each loop current video elements are stitched and painted on canvas\n */\n renderLoop() {\n const delay = 1000 / DEFAULT_FPS;\n this.timeoutRef = workerTimers.setTimeout(() => {\n if (this.state === PIPStates.stopping || this.state === PIPStates.stopped) {\n return;\n }\n if (this.state === PIPStates.started) {\n drawVideoElementsOnCanvas(this.videoElements, this.canvas);\n }\n this.renderLoop();\n }, delay);\n }\n\n async requestPIP() {\n try {\n if (this.isOn()) {\n this.exitPIP(); // is this really needed?\n }\n await this.pipVideo.requestPictureInPicture();\n } catch (error) {\n console.error('error in requestpip', error, 'state', this.state);\n throw error;\n }\n }\n\n exitPIP() {\n document.exitPictureInPicture();\n }\n\n /**\n * Logic - pick only enabled video tracks\n * @param peers {Array<any>}\n * @param tracksMap {Record<string, any>}\n */\n pickTracksToShow(peers, tracksMap) {\n const tracksToShow = [];\n for (const peer of peers) {\n if (tracksToShow.length === MAX_NUMBER_OF_TILES_IN_PIP) {\n break;\n } else if (peer.videoTrack && tracksMap[peer.videoTrack]?.enabled) {\n tracksToShow.push(peer.videoTrack);\n }\n }\n return tracksToShow;\n }\n\n /**\n * there has to be a smart reordering of new tracks based on currently showing\n * ones to reduce unnecessary displacement. If someone was showing up both\n * earlier and now, it's a better UX to keep their position same instead\n * of letting it change.\n * The returned array is a shuffled version of newTracks with position of\n * tracks present in the old tracks intact.\n * eg. old = [1,5,9,3], new = [3,8,2,9], result = [8,2,9,3]\n * @param oldTracks {Array}\n * @param newTracks {Array}\n * @return {Array}\n */\n orderNewTracksToShow(newTracks, oldTracks) {\n const betterNewTracks = [];\n const leftOvers = [];\n // put the common ones in right position\n newTracks.forEach(track => {\n const oldPosition = oldTracks.indexOf(track);\n if (oldPosition !== -1 && oldPosition < newTracks.length) {\n // if track is there currently and we can put it on the same position\n betterNewTracks[oldPosition] = track;\n } else {\n leftOvers.push(track);\n }\n });\n // put the left overs in remaining empty positions\n for (let i = 0; i < newTracks.length; i++) {\n if (!betterNewTracks[i]) {\n betterNewTracks[i] = leftOvers.shift();\n }\n }\n return betterNewTracks;\n }\n\n /**\n * call detach for tracks which no longer need to be shown and attach for\n * new ones which are to be shown now.\n * Note: oldTracks and newTracks are not necessarily of same length\n * @param oldTracks {Array<String>}\n * @param newTracks {Array<String>}\n * @param tracksMap {Record<String, any>}\n */\n // eslint-disable-next-line complexity\n async detachOldAttachNewTracks(oldTracks, newTracks, tracksMap = null) {\n const numTracks = Math.max(oldTracks.length, newTracks.length);\n for (let i = 0; i < numTracks; i++) {\n if (oldTracks[i] === newTracks[i]) {\n continue; // it would already have been attached previously\n } else if (oldTracks[i]) {\n // old track is there but not equal to new track, detach\n // no need to call detach if we know for sure track is no longer in store\n if (!tracksMap || tracksMap[oldTracks[i]]) {\n await this.hmsActions.detachVideo(oldTracks[i], this.videoElements[i]);\n }\n if (this.videoElements[i]) {\n // even if old track got removed from the room, element needs to be cleaned up\n this.videoElements[i].srcObject = null;\n }\n }\n if (newTracks[i]) {\n await this.hmsActions.attachVideo(newTracks[i], this.videoElements[i]);\n }\n }\n }\n}\n\nexport const PictureInPicture = new PipManager();\n// PictureInPicture.initMediaElements().catch(console.error); // for safari, init early\n", "let CANVAS_FILL_COLOR;\nlet CANVAS_STROKE_COLOR;\n\nfunction setPIPCanvasColors() {\n if (!CANVAS_FILL_COLOR) {\n CANVAS_FILL_COLOR = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--hms-ui-colors-surface_bright');\n }\n if (!CANVAS_STROKE_COLOR) {\n CANVAS_STROKE_COLOR = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--hms-ui-colors-border_bright');\n }\n}\n\nexport function resetPIPCanvasColors() {\n CANVAS_FILL_COLOR = '';\n CANVAS_STROKE_COLOR = '';\n}\n/**\n * no tile - blank canvas, black image\n * 1 tile - takes full space on canvas\n * 2 tile - stack two video adjacent to each other\n * 3 tile - two rows first row has two tile second row has one tile centered.\n * 4 tiles - two rows two columns - all equal size\n * All videos will respect their aspect ratios.\n */\nexport function drawVideoElementsOnCanvas(videoElements, canvas) {\n let videoTiles = videoElements.filter(videoElement => videoElement.srcObject !== null);\n\n const ctx = canvas.getContext('2d');\n setPIPCanvasColors();\n ctx.fillStyle = CANVAS_FILL_COLOR;\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n\n if (videoTiles.length === 0) {\n // no tile to render, render black image\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n return;\n }\n\n fillGridTiles(videoTiles.slice(0, 4), ctx, canvas);\n}\n\n// this is to send some data for stream and resolve video element's play for a\n// video element rendering this canvas' capture stream\nexport function dummyChangeInCanvas(canvas) {\n const ctx = canvas.getContext('2d');\n setPIPCanvasColors();\n ctx.fillStyle = CANVAS_FILL_COLOR;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n}\n\n/**\n * Imagine the canvas as a grid with passed in number of rows and columns. Go\n * over the tiles in the grid in order while drawing the videoElements upon them.\n */\nfunction fillGridTiles(videoElements, ctx, canvas) {\n const offset = 8;\n canvas.width = 480;\n canvas.height = 320;\n\n ctx.fillStyle = CANVAS_FILL_COLOR;\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n // Show borders only when there is atleast one video\n if (videoElements.length > 0) {\n ctx.strokeStyle = CANVAS_STROKE_COLOR;\n ctx.lineWidth = offset / 2;\n ctx.strokeRect(0, 0, canvas.width, canvas.height);\n }\n\n if (videoElements.length === 1) {\n const video = videoElements[0];\n const { width, height } = getRenderDimensions(video, canvas.width - offset, canvas.height - offset);\n /**\n * The x and y offset are to center the video tile horizontally and vertically\n * width and height are the aspect ratio constrained video tile dimensions\n */\n const xOffset = (canvas.width - width) / 2;\n const yOffset = (canvas.height - height) / 2;\n ctx.drawImage(video, xOffset, yOffset, width, height);\n }\n\n if (videoElements.length === 2) {\n videoElements.forEach((video, index) => {\n const { width, height } = getRenderDimensions(\n video,\n canvas.width / 2 - offset, // This will be the max available width for each tile\n canvas.height - offset,\n );\n /**\n * (canvas.width / 2 - width) / 2 This is to center width wise within in the box\n * (canvas.width / 2) * index This is the start offset\n * for 1st element it is 0, for second it will be canvas.width/2 which starts from the center\n */\n const xOffset = (canvas.width / 2 - width) / 2 + (canvas.width / 2) * index;\n /**\n * (canvas.height - height) / 2 This is to center height wise\n */\n const yOffset = (canvas.height - height) / 2;\n\n ctx.drawImage(video, xOffset, yOffset, width, height);\n });\n /**\n * Draw a border between tiles\n */\n const path = new Path2D();\n path.moveTo(canvas.width / 2, 0);\n path.lineTo(canvas.width / 2, canvas.height);\n ctx.stroke(path);\n }\n\n if (videoElements.length === 3) {\n videoElements.forEach((video, index) => {\n const { width, height } = getRenderDimensions(video, canvas.width / 2 - offset, canvas.height / 2 - offset);\n /**\n * for first two tiles, xOffset is similar to the 2 tiles calculation with only difference being the height. it is half now.\n */\n const xOffset =\n index < 2 ? (canvas.width / 2 - width) / 2 + (canvas.width / 2) * index : canvas.width / 2 - width / 2;\n const yOffset = (index < 2 ? 0 : canvas.height / 2) + (canvas.height / 2 - height) / 2;\n\n ctx.drawImage(video, xOffset, yOffset, width, height);\n });\n /**\n * Draw borders between tiles\n */\n const path = new Path2D();\n path.moveTo(canvas.width / 2, 0);\n path.lineTo(canvas.width / 2, canvas.height / 2);\n ctx.stroke(path);\n path.moveTo(0, canvas.height / 2);\n path.lineTo(canvas.width, canvas.height / 2);\n ctx.stroke(path);\n }\n if (videoElements.length === 4) {\n videoElements.forEach((video, index) => {\n const { width, height } = getRenderDimensions(video, canvas.width / 2 - offset, canvas.height / 2 - offset);\n /**\n * Similar to two tiles repeat after 2 tiles\n * (canvas.width / 2 - width) / 2 is to center horizontally\n */\n const xOffset = (canvas.width / 2 - width) / 2 + (canvas.width / 2) * (index % 2);\n /**\n * Similar to two tiles with the yOffset being height/2 for the 3rd and 4th tiles\n * (canvas.height / 2 - height) / 2 is to center vertically\n */\n const yOffset = (index < 2 ? 0 : canvas.height / 2) + (canvas.height / 2 - height) / 2;\n\n ctx.drawImage(video, xOffset, yOffset, width, height);\n });\n /**\n * Draw borders between tiles\n */\n const path = new Path2D();\n path.moveTo(canvas.width / 2, 0);\n path.lineTo(canvas.width / 2, canvas.height);\n ctx.stroke(path);\n path.moveTo(0, canvas.height / 2);\n path.lineTo(canvas.width, canvas.height / 2);\n ctx.stroke(path);\n }\n}\n\n/**\n * Restrict the dimensions within the available dimension with aspect ratio\n * constraint applied\n * @param {HTMLVideoElement} video\n * @param {number} width\n * @param {number} height\n * @returns { width: number, height: number }\n */\nfunction getRenderDimensions(video, width, height) {\n let finalWidth = (video.videoWidth / video.videoHeight) * height;\n let finalHeight = height;\n\n if (finalWidth > width) {\n finalWidth = width;\n finalHeight = (video.videoHeight / video.videoWidth) * width;\n }\n return { width: finalWidth, height: finalHeight };\n}\n", "import {\n ConferencingScreen,\n DefaultPreviewScreen_Elements,\n LeaveScreen,\n PreviewScreen,\n Screens,\n} from '@100mslive/types-prebuilt';\nimport { useRoomLayout } from '..';\n\nexport type useRoomLayoutScreenProps = {\n screen: keyof Screens;\n};\n\ntype useRoomLayoutScreenReturnType<T extends useRoomLayoutScreenProps> = T['screen'] extends 'conferencing'\n ? ConferencingScreen\n : T['screen'] extends 'leave'\n ? LeaveScreen\n : T['screen'] extends 'preview'\n ? PreviewScreen\n : undefined;\n\nfunction useRoomLayoutScreen<T extends useRoomLayoutScreenProps>({\n screen,\n}: T): useRoomLayoutScreenReturnType<T> | undefined {\n const roomLayout = useRoomLayout();\n const screenProps = roomLayout?.screens?.[screen] as useRoomLayoutScreenReturnType<T> | undefined;\n return screenProps;\n}\n\nexport function useRoomLayoutPreviewScreen() {\n const screenProps = useRoomLayoutScreen({ screen: 'preview' });\n const isPreviewScreenEnabled = !!screenProps;\n let elements: DefaultPreviewScreen_Elements | undefined;\n let screenType: keyof PreviewScreen | undefined;\n if (isPreviewScreenEnabled) {\n screenType = Object.keys(screenProps)[0] as keyof PreviewScreen;\n elements = screenProps[screenType]?.elements;\n }\n return {\n isPreviewScreenEnabled,\n elements,\n screenType,\n };\n}\n\nexport function useRoomLayoutConferencingScreen() {\n const screenProps = useRoomLayoutScreen({ screen: 'conferencing' }) || {};\n const screenType = Object.keys(screenProps)[0] as keyof ConferencingScreen;\n const elements = screenProps[screenType]?.elements;\n // @ts-ignore\n const hideSections: string[] = screenProps[screenType]?.hideSections || [];\n return {\n hideSections,\n elements,\n screenType,\n };\n}\n\nexport function useRoomLayoutLeaveScreen() {\n const screenProps = useRoomLayoutScreen({ screen: 'leave' });\n const isLeaveScreenEnabled = !!screenProps;\n return {\n isLeaveScreenEnabled,\n };\n}\n", "// eslint-disable-next-line complexity\nexport function shadeColor(color, percent) {\n let R = parseInt(color.substring(1, 3), 16);\n let G = parseInt(color.substring(3, 5), 16);\n let B = parseInt(color.substring(5, 7), 16);\n\n R = Math.floor((R * (100 + percent)) / 100);\n G = Math.floor((G * (100 + percent)) / 100);\n B = Math.floor((B * (100 + percent)) / 100);\n\n R = R < 255 ? R : 255;\n G = G < 255 ? G : 255;\n B = B < 255 ? B : 255;\n\n const RR = R.toString(16).length === 1 ? `0${R.toString(16)}` : R.toString(16);\n const GG = G.toString(16).length === 1 ? `0${G.toString(16)}` : G.toString(16);\n const BB = B.toString(16).length === 1 ? `0${B.toString(16)}` : B.toString(16);\n\n return `#${RR}${GG}${BB}`;\n}\n\n/**\n * TODO: this is currently an O(N**2) function, don't use with peer lists, it's currently\n * being used to find intersection between list of role names where the complexity shouldn't matter much.\n */\nexport const arrayIntersection = (a, b) => {\n if (a === undefined || b === undefined) {\n return [];\n }\n // ensure \"a\" is the bigger array\n if (b.length > a.length) {\n let t = b;\n b = a;\n a = t;\n }\n return a.filter(function (e) {\n return b.indexOf(e) > -1;\n });\n};\n\nexport const getMetadata = metadataString => {\n try {\n return !metadataString ? {} : JSON.parse(metadataString);\n } catch (error) {\n return {};\n }\n};\n\nexport const metadataProps = function (peer) {\n return {\n isHandRaised: getMetadata(peer.metadata)?.isHandRaised,\n };\n};\n\nexport const isScreenshareSupported = () => {\n return typeof navigator.mediaDevices.getDisplayMedia !== 'undefined';\n};\n\nexport const metadataPayloadParser = payload => {\n try {\n const data = window.atob(payload);\n const parsedData = JSON.parse(data);\n return parsedData;\n } catch (e) {\n return { payload };\n }\n};\n\n// For bottom action sheet, returns updated height based on drag\nexport const getUpdatedHeight = (e, MINIMUM_HEIGHT) => {\n const heightToPercentage = 100 - ((e?.touches?.[0] || e).pageY / window.innerHeight) * 100;\n // Snap to top if height > 80%, should be at least 40vh\n const sheetHeightInVH = Math.max(MINIMUM_HEIGHT, heightToPercentage > 80 ? 100 : heightToPercentage);\n return `${sheetHeightInVH}vh`;\n};\n\nexport const getFormattedCount = num => {\n const formatter = new Intl.NumberFormat('en', { notation: 'compact', maximumFractionDigits: 2 });\n const formattedNum = formatter.format(num);\n return formattedNum;\n};\n\nexport const formatTime = timeInSeconds => {\n timeInSeconds = Math.floor(timeInSeconds / 1000);\n const hours = Math.floor(timeInSeconds / 3600);\n const minutes = Math.floor((timeInSeconds % 3600) / 60);\n const seconds = timeInSeconds % 60;\n const hour = hours !== 0 ? `${hours < 10 ? '0' : ''}${hours}:` : '';\n return `${hour}${minutes < 10 ? '0' : ''}${minutes}:${seconds < 10 ? '0' : ''}${seconds}`;\n};\n\nexport const getAttributeBoxSize = (width, height) => {\n if (!width || !height) {\n return '';\n }\n return width < 180 || height < 180 ? 'small' : 'medium';\n};\n", "import React from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { ExitIcon } from '@100mslive/react-icons';\nimport { ToastManager } from './Toast/ToastManager';\nimport { Button } from '../../Button';\nimport { Box, Flex } from '../../Layout';\nimport { Text } from '../../Text';\nimport { useHMSPrebuiltContext } from '../AppContext';\nimport { Header } from './Header';\nimport { useRoomLayoutPreviewScreen } from '../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\nimport { defaultPreviewPreference, UserPreferencesKeys, useUserPreferences } from './hooks/useUserPreferences';\nimport { textEllipsis } from '../../utils';\n\nconst PostLeave = () => {\n const navigate = useNavigate();\n const { isPreviewScreenEnabled } = useRoomLayoutPreviewScreen();\n const { roomCode } = useHMSPrebuiltContext();\n const { roomId, role } = useParams();\n const [previewPreference] = useUserPreferences(UserPreferencesKeys.PREVIEW, defaultPreviewPreference);\n return (\n <Flex direction=\"column\" css={{ size: '100%' }}>\n <Box css={{ h: '$18', '@md': { h: '$17' } }} data-testid=\"header\">\n <Header />\n </Box>\n <Flex\n justify=\"center\"\n direction=\"column\"\n align=\"center\"\n css={{ bg: '$background_dim', flex: '1 1 0', position: 'relative' }}\n >\n <Text variant=\"h2\" css={{ fontWeight: '$semiBold' }}>\n \uD83D\uDC4B\n </Text>\n <Text variant=\"h4\" css={{ color: '$on_surface_high', fontWeight: '$semiBold', mt: '$12' }}>\n You left the room\n </Text>\n <Text\n variant=\"body1\"\n css={{\n color: '$on_surface_medium',\n mt: '$8',\n fontWeight: '$regular',\n textAlign: 'center',\n }}\n >\n Have a nice day\n {previewPreference.name && (\n <Box as=\"span\" css={{ ...textEllipsis(100) }}>\n , {previewPreference.name}\n </Box>\n )}\n !\n </Text>\n <Flex css={{ mt: '$14', gap: '$10', alignItems: 'center' }}>\n <Text variant=\"body1\" css={{ color: '$on_surface_medium', fontWeight: '$regular' }}>\n Left by mistake?\n </Text>\n <Button\n onClick={() => {\n let redirectUrl = `${isPreviewScreenEnabled ? '/preview/' : '/meeting/'}${roomCode || roomId}`;\n if (role && roomId) redirectUrl += '/' + role;\n navigate(redirectUrl);\n ToastManager.clearAllToast();\n }}\n data-testid=\"join_again_btn\"\n >\n <ExitIcon />\n <Text css={{ ml: '$3', fontWeight: '$semiBold', color: 'inherit' }}>Rejoin</Text>\n </Button>\n </Flex>\n </Flex>\n </Flex>\n );\n};\n\nexport default PostLeave;\n", "import React from 'react';\nimport { useMedia } from 'react-use';\nimport { HMSRoomState, selectRoomState, useHMSStore } from '@100mslive/react-sdk';\nimport { config as cssConfig, Flex } from '../../..';\n// @ts-ignore: No implicit any\nimport { Logo, SpeakerTag } from './HeaderComponents';\n// @ts-ignore: No implicit any\nimport { LiveStatus, RecordingStatus, StreamActions } from './StreamActions';\n// @ts-ignore: No implicit any\nimport { AudioOutputActions, CamaraFlipActions } from './common';\n\nexport const Header = () => {\n const roomState = useHMSStore(selectRoomState);\n const isMobile = useMedia(cssConfig.media.md);\n // Header should be present only inside the call - not in preview, leave room states\n if (roomState !== HMSRoomState.Connected) {\n return <></>;\n }\n return (\n <Flex justify=\"between\" align=\"center\" css={{ position: 'relative', height: '100%' }}>\n <Flex align=\"center\" gap=\"2\" css={{ position: 'absolute', left: '$10' }}>\n <Logo />\n <SpeakerTag />\n {isMobile && (\n <Flex align=\"center\" css={{ gap: '$4' }}>\n <LiveStatus />\n <RecordingStatus />\n </Flex>\n )}\n </Flex>\n <Flex\n align=\"center\"\n css={{\n position: 'absolute',\n right: '$10',\n gap: '$4',\n }}\n >\n <StreamActions />\n {isMobile ? (\n <>\n <CamaraFlipActions />\n <AudioOutputActions />\n </>\n ) : null}\n </Flex>\n </Flex>\n );\n};\n", "import React, { useEffect, useState } from 'react';\nimport { selectDominantSpeaker, useHMSStore } from '@100mslive/react-sdk';\nimport { VolumeOneIcon } from '@100mslive/react-icons';\nimport { Flex, styled, Text, textEllipsis, VerticalDivider } from '../../../';\nimport { useRoomLayout } from '../../provider/roomLayoutProvider';\n\nexport const SpeakerTag = () => {\n const dominantSpeaker = useHMSStore(selectDominantSpeaker);\n return (\n dominantSpeaker &&\n dominantSpeaker.name && (\n <Flex\n align=\"center\"\n justify=\"center\"\n css={{ flex: '1 1 0', color: '$on_primary_high', '@md': { display: 'none' } }}\n >\n <VerticalDivider css={{ ml: '$8' }} />\n <VolumeOneIcon />\n <Text variant=\"md\" css={{ ...textEllipsis(200), ml: '$2' }} title={dominantSpeaker.name}>\n {dominantSpeaker.name}\n </Text>\n </Flex>\n )\n );\n};\n\nconst LogoImg = styled('img', {\n maxHeight: '$14',\n w: 'auto',\n objectFit: 'contain',\n '@md': {\n maxHeight: '$12',\n },\n});\n\nexport const Logo = () => {\n const roomLayout = useRoomLayout();\n const logo = roomLayout?.logo?.url;\n const [hideImage, setHideImage] = useState(false);\n // Hide logo for now as there is not enough space\n useEffect(() => {\n if (hideImage) {\n setHideImage(false);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [logo]);\n\n return logo && !hideImage ? (\n <LogoImg\n src={logo}\n alt=\"Brand Logo\"\n onError={e => {\n e.target.onerror = null;\n setHideImage(true);\n }}\n />\n ) : null;\n};\n", "import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport {\n HMSRoomState,\n selectHLSState,\n selectIsConnectedToRoom,\n selectPermissions,\n selectRoomState,\n useHMSActions,\n useHMSStore,\n useRecordingStreaming,\n} from '@100mslive/react-sdk';\nimport { AlertTriangleIcon, CrossIcon, RecordIcon } from '@100mslive/react-icons';\nimport { Box, Button, config as cssConfig, Flex, HorizontalDivider, Loading, Popover, Text, Tooltip } from '../../..';\nimport { Sheet } from '../../../Sheet';\n// @ts-ignore\nimport { ToastManager } from '../Toast/ToastManager';\n// @ts-ignore\nimport { AdditionalRoomState, getRecordingText } from './AdditionalRoomState';\n// @ts-ignore\nimport { useSetAppDataByKey } from '../AppData/useUISettings';\n// @ts-ignore\nimport { formatTime } from '../../common/utils';\n// @ts-ignore\nimport { APP_DATA } from '../../common/constants';\n\nexport const LiveStatus = () => {\n const { isHLSRunning, isRTMPRunning } = useRecordingStreaming();\n const hlsState = useHMSStore(selectHLSState);\n const isMobile = useMedia(cssConfig.media.md);\n const intervalRef = useRef<NodeJS.Timeout | null>(null);\n\n const [liveTime, setLiveTime] = useState(0);\n\n const startTimer = useCallback(() => {\n intervalRef.current = setInterval(() => {\n if (hlsState?.running && hlsState?.variants[0]?.startedAt) {\n setLiveTime(Date.now() - hlsState.variants[0].startedAt.getTime());\n }\n }, 1000);\n }, [hlsState?.running, hlsState?.variants]);\n\n useEffect(() => {\n if (hlsState?.running) {\n startTimer();\n }\n if (!hlsState?.running && intervalRef.current) {\n clearInterval(intervalRef.current);\n }\n return () => {\n if (intervalRef.current) {\n clearInterval(intervalRef.current);\n }\n };\n }, [hlsState.running, isMobile, startTimer]);\n\n if (!isHLSRunning && !isRTMPRunning) {\n return null;\n }\n return (\n <Flex\n align=\"center\"\n gap=\"1\"\n css={{\n border: '1px solid $border_default',\n padding: '$4 $6 $4 $6',\n borderRadius: '$1',\n }}\n >\n <Box css={{ w: '$4', h: '$4', r: '$round', bg: '$alert_error_default', mr: '$2' }} />\n <Flex align=\"center\" gap=\"2\">\n <Text variant={!isMobile ? 'button' : 'body2'}>LIVE</Text>\n <Text variant=\"caption\">{hlsState?.variants?.length > 0 ? formatTime(liveTime) : ''}</Text>\n </Flex>\n </Flex>\n );\n};\n\nexport const RecordingStatus = () => {\n const { isBrowserRecordingOn, isServerRecordingOn, isHLSRecordingOn, isRecordingOn } = useRecordingStreaming();\n const permissions = useHMSStore(selectPermissions);\n const isMobile = useMedia(cssConfig.media.md);\n\n if (\n !isRecordingOn ||\n // if only browser recording is enabled, stop recording is shown\n // so no need to show this as it duplicates\n [permissions?.browserRecording, !isServerRecordingOn, !isHLSRecordingOn, isBrowserRecordingOn].every(\n value => !!value,\n )\n ) {\n // show recording icon in mobile without popover\n if (!(isMobile && isRecordingOn)) return null;\n }\n\n return (\n <Tooltip\n boxCss={{ zIndex: 1 }}\n title={getRecordingText({\n isBrowserRecordingOn,\n isServerRecordingOn,\n isHLSRecordingOn,\n })}\n >\n <Flex\n css={{\n color: '$alert_error_default',\n alignItems: 'center',\n }}\n >\n <RecordIcon width={24} height={24} />\n </Flex>\n </Tooltip>\n );\n};\n\nconst StartRecording = () => {\n const permissions = useHMSStore(selectPermissions);\n const [open, setOpen] = useState(false);\n const [recordingStarted, setRecordingState] = useSetAppDataByKey(APP_DATA.recordingStarted);\n const { isBrowserRecordingOn, isStreamingOn, isHLSRunning } = useRecordingStreaming();\n const hmsActions = useHMSActions();\n if (!permissions?.browserRecording || isHLSRunning) {\n return null;\n }\n if (isBrowserRecordingOn) {\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger asChild>\n <Button variant=\"danger\" data-testid=\"stop_recording\" icon outlined onClick={() => setOpen(true)}>\n <RecordIcon />\n <Text as=\"span\" css={{ '@md': { display: 'none' }, color: 'currentColor' }}>\n Stop Recording\n </Text>\n </Button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content align=\"end\" sideOffset={8} css={{ w: '$64' }}>\n <Text variant=\"body1\" css={{ color: '$on_surface_medium' }}>\n Are you sure you want to end the recording?\n </Text>\n <Button\n data-testid=\"stop_recording_confirm\"\n variant=\"danger\"\n icon\n css={{ ml: 'auto' }}\n onClick={async () => {\n try {\n await hmsActions.stopRTMPAndRecording();\n } catch (error) {\n const err = error as Error;\n ToastManager.addToast({\n title: err.message,\n variant: 'error',\n });\n }\n setOpen(false);\n }}\n >\n Stop\n </Button>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n }\n return (\n <Button\n data-testid=\"start_recording\"\n variant=\"standard\"\n icon\n disabled={recordingStarted || isStreamingOn}\n onClick={async () => {\n try {\n setRecordingState(true);\n await hmsActions.startRTMPOrRecording({\n record: true,\n });\n } catch (error) {\n const err = error as Error;\n if (err.message.includes('stream already running')) {\n ToastManager.addToast({\n title: 'Recording already running',\n variant: 'error',\n });\n } else {\n ToastManager.addToast({\n title: err.message,\n variant: 'error',\n });\n }\n setRecordingState(false);\n }\n }}\n >\n {recordingStarted ? <Loading size={24} color=\"currentColor\" /> : <RecordIcon />}\n <Text as=\"span\" css={{ '@md': { display: 'none' }, color: 'currentColor' }}>\n {recordingStarted ? 'Starting' : 'Start'} Recording\n </Text>\n </Button>\n );\n};\n\n/**\n * @description only start recording button will be shown.\n */\nexport const StreamActions = () => {\n const isConnected = useHMSStore(selectIsConnectedToRoom);\n const isMobile = useMedia(cssConfig.media.md);\n const roomState = useHMSStore(selectRoomState);\n\n return (\n <Flex align=\"center\" css={{ gap: '$4' }}>\n <AdditionalRoomState />\n {!isMobile && (\n <Flex align=\"center\" css={{ gap: '$4' }}>\n <RecordingStatus />\n {roomState !== HMSRoomState.Preview ? <LiveStatus /> : null}\n </Flex>\n )}\n {isConnected && !isMobile ? <StartRecording /> : null}\n </Flex>\n );\n};\n\nexport const StopRecordingInSheet = ({\n onStopRecording,\n onClose,\n}: {\n onStopRecording: () => void;\n onClose: () => void;\n}) => {\n return (\n <Sheet.Root open={true}>\n <Sheet.Content>\n <Sheet.Title css={{ p: '$10' }}>\n <Flex direction=\"row\" justify=\"between\" css={{ w: '100%', c: '$alert_error_default' }}>\n <Flex justify=\"start\" align=\"center\" gap=\"3\">\n <AlertTriangleIcon />\n <Text variant=\"h5\" css={{ c: '$alert_error_default' }}>\n Stop Recording\n </Text>\n </Flex>\n <Sheet.Close css={{ color: 'white' }} onClick={onClose}>\n <CrossIcon />\n </Sheet.Close>\n </Flex>\n </Sheet.Title>\n <HorizontalDivider />\n <Box as=\"div\" css={{ p: '$10', overflowY: 'scroll', maxHeight: '70vh' }}>\n <Text variant=\"caption\" css={{ c: '$on_surface_medium', pb: '$8' }}>\n Are you sure you want to stop recording? You can\u2019t undo this action.\n </Text>\n <Button\n variant=\"danger\"\n css={{ width: '100%' }}\n type=\"submit\"\n data-testid=\"popup_change_btn\"\n onClick={onStopRecording}\n >\n Stop\n </Button>\n </Box>\n </Sheet.Content>\n </Sheet.Root>\n );\n};\n", "import React from 'react';\nimport * as DialogPrimitive from '@radix-ui/react-dialog';\nimport { CSS, VariantProps } from '@stitches/react';\nimport { Dialog } from '../Modal';\nimport { styled } from '../Theme';\nimport { sheetFadeIn, sheetFadeOut, sheetSlideIn, sheetSlideOut } from '../utils';\n\nconst SheetRoot = styled(DialogPrimitive.Root, {\n minHeight: '240px',\n maxWidth: '100%',\n});\nconst SheetTrigger = styled(DialogPrimitive.Trigger, {\n appearance: 'none !important', // Needed for safari it shows white overlay\n});\n\nconst StyledOverlay = styled(Dialog.Overlay, {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n\n '&[data-state=\"open\"]': {\n animation: `${sheetFadeIn} 150ms cubic-bezier(0.22, 1, 0.36, 1)`,\n },\n\n '&[data-state=\"closed\"]': {\n animation: `${sheetFadeOut} 150ms cubic-bezier(0.22, 1, 0.36, 1)`,\n },\n});\n\nconst StyledContent = styled(DialogPrimitive.Content, {\n color: '$on_surface_medium',\n backgroundColor: '$surface_default',\n borderTopLeftRadius: '$3',\n borderTopRightRadius: '$3',\n boxShadow: '0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23)',\n position: 'fixed',\n zIndex: 1001,\n top: 0,\n right: 0,\n left: 0,\n bottom: 0,\n maxHeight: '96%',\n\n // Among other things, prevents text alignment inconsistencies when dialog can't be centered in the viewport evenly.\n // Affects animated and non-animated dialogs alike.\n willChange: 'transform',\n\n '&:focus': {\n outline: 'none',\n },\n '@allowMotion': {\n '&[data-state=\"open\"]': {\n animation: `${sheetSlideIn} 150ms cubic-bezier(0.22, 1, 0.36, 1)`,\n },\n\n '&[data-state=\"closed\"]': {\n animation: `${sheetSlideOut} 150ms cubic-bezier(0.22, 1, 0.36, 1)`,\n },\n },\n\n variants: {\n side: {\n top: {\n $$transformValue: 'translate3d(0,-100%,0)',\n bottom: 'auto',\n },\n right: {\n $$transformValue: 'translate3d(100%,0,0)',\n right: 0,\n },\n bottom: {\n $$transformValue: 'translate3d(0,100%,0)',\n bottom: 0,\n top: 'auto',\n },\n left: {\n $$transformValue: 'translate3d(-100%,0,0)',\n left: 0,\n },\n },\n },\n\n defaultVariants: {\n side: 'bottom',\n },\n});\n\ntype SheetContentVariants = VariantProps<typeof StyledContent>;\ntype DialogContentPrimitiveProps = React.ComponentProps<typeof DialogPrimitive.Content>;\ntype SheetContentProps = DialogContentPrimitiveProps & SheetContentVariants & { css?: CSS };\n\nconst SheetContent = React.forwardRef<React.ElementRef<typeof StyledContent>, SheetContentProps>(\n ({ children, ...props }, forwardedRef) => (\n <Dialog.Portal>\n <StyledOverlay />\n <StyledContent {...props} ref={forwardedRef}>\n {children}\n </StyledContent>\n </Dialog.Portal>\n ),\n);\nconst SheetClose = Dialog.Close;\nconst SheetTitle = styled(DialogPrimitive.Title, {\n margin: 0,\n});\nconst SheetDescription = Dialog.Description;\nconst SheetDefaultCloseIcon = Dialog.DefaultClose;\n\nexport const Sheet = {\n Root: SheetRoot,\n Trigger: SheetTrigger,\n Content: SheetContent,\n Description: SheetDescription,\n Title: SheetTitle,\n Close: SheetClose,\n DefaultClose: SheetDefaultCloseIcon,\n};\n", "import React, { useState } from 'react';\nimport { selectLocalPeerID, selectPeerSharingVideoPlaylist, useHMSStore, useScreenShare } from '@100mslive/react-sdk';\nimport {\n AudioPlayerIcon,\n ChevronDownIcon,\n ChevronUpIcon,\n MusicIcon,\n PencilDrawIcon,\n ShareScreenIcon,\n VideoPlayerIcon,\n} from '@100mslive/react-icons';\nimport { Box, Dropdown, Flex, Text, Tooltip } from '../../../';\nimport { useWhiteboardMetadata } from '../../plugins/whiteboard/useWhiteboardMetadata';\nimport { useUISettings } from '../AppData/useUISettings';\nimport { usePlaylistMusic } from '../hooks/usePlaylistMusic';\nimport { useScreenshareAudio } from '../hooks/useScreenshareAudio';\nimport { UI_SETTINGS } from '../../common/constants';\n\nexport const getRecordingText = ({ isBrowserRecordingOn, isServerRecordingOn, isHLSRecordingOn }, delimiter = ', ') => {\n if (!isBrowserRecordingOn && !isServerRecordingOn && !isHLSRecordingOn) {\n return '';\n }\n const title = [];\n if (isBrowserRecordingOn) {\n title.push('Browser');\n }\n if (isServerRecordingOn) {\n title.push('Server');\n }\n if (isHLSRecordingOn) {\n title.push('HLS');\n }\n return title.join(delimiter);\n};\n\n/**\n * Display state of recording, streaming, playlist, whiteboard\n */\nexport const AdditionalRoomState = () => {\n const playlist = usePlaylistMusic();\n const isAudioOnly = useUISettings(UI_SETTINGS.isAudioOnly);\n const screenshareAudio = useScreenshareAudio();\n const [open, setOpen] = useState(false);\n const isPlaylistInactive = [\n !playlist.peer || !playlist.track,\n !playlist.peer?.isLocal && !playlist.track?.enabled,\n playlist.peer?.isLocal && !playlist.selection,\n ].some(Boolean);\n const isAudioshareInactive = [\n !screenshareAudio.peer || !screenshareAudio.track,\n !screenshareAudio.peer?.isLocal && !screenshareAudio.track?.enabled,\n ].some(Boolean);\n\n const peerSharingPlaylist = useHMSStore(selectPeerSharingVideoPlaylist);\n const localPeerID = useHMSStore(selectLocalPeerID);\n const isVideoPlayListPlaying = !!peerSharingPlaylist?.id;\n const { screenSharingPeerName, screenSharingPeerId, screenShareVideoTrackId } = useScreenShare();\n\n const isVideoScreenSharingOn = !!screenShareVideoTrackId;\n const { whiteboardOwner, amIWhiteboardOwner, toggleWhiteboard } = useWhiteboardMetadata();\n const shouldShowScreenShareState = isAudioOnly && isVideoScreenSharingOn;\n const shouldShowVideoState = isAudioOnly && isVideoPlayListPlaying;\n if (\n isPlaylistInactive &&\n isAudioshareInactive &&\n !shouldShowScreenShareState &&\n !shouldShowVideoState &&\n !whiteboardOwner\n ) {\n return null;\n }\n\n return (\n <Dropdown.Root open={open} onOpenChange={setOpen}>\n <Dropdown.Trigger asChild>\n <Flex\n align=\"center\"\n css={{\n color: '$on_primary_high',\n borderRadius: '$1',\n border: '1px solid $on_surface_low',\n padding: '$4',\n '@sm': { display: 'none' },\n }}\n data-testid=\"record_status_dropdown\"\n >\n {!isAudioshareInactive && (\n <Tooltip title=\"Screenshare Audio\">\n <Flex align=\"center\" css={{ color: '$on_primary_high', mx: '$2' }}>\n <MusicIcon width={24} height={24} />\n </Flex>\n </Tooltip>\n )}\n {shouldShowScreenShareState && (\n <Tooltip title=\"Screenshare\">\n <Flex align=\"center\" css={{ color: '$on_primary_high', mx: '$2' }}>\n <ShareScreenIcon width={24} height={24} />\n </Flex>\n </Tooltip>\n )}\n {shouldShowVideoState && (\n <Tooltip title=\"video playlist\">\n <Flex align=\"center\" css={{ color: '$on_primary_high', mx: '$2' }}>\n <VideoPlayerIcon width={24} height={24} />\n </Flex>\n </Tooltip>\n )}\n {!isPlaylistInactive && (\n <Tooltip title=\"Playlist Music\">\n <Flex align=\"center\" css={{ color: '$on_primary_high', mx: '$2' }}>\n <AudioPlayerIcon width={24} height={24} />\n </Flex>\n </Tooltip>\n )}\n {whiteboardOwner && (\n <Tooltip title=\"Whiteboard\">\n <Flex align=\"center\" css={{ color: '$on_primary_high', mx: '$2' }}>\n <PencilDrawIcon width={24} height={24} />\n </Flex>\n </Tooltip>\n )}\n <Box css={{ '@lg': { display: 'none' }, color: '$on_surface_low' }}>\n {open ? <ChevronUpIcon /> : <ChevronDownIcon />}\n </Box>\n </Flex>\n </Dropdown.Trigger>\n <Dropdown.Content sideOffset={5} align=\"end\" css={{ w: '$60' }}>\n {!isPlaylistInactive && (\n <Dropdown.Item css={{ color: '$on_primary_high' }}>\n <AudioPlayerIcon width={24} height={24} />\n <Text variant=\"sm\" css={{ ml: '$2', flex: '1 1 0' }}>\n Playlist is playing\n </Text>\n {playlist.peer.isLocal ? (\n <Text\n variant=\"sm\"\n css={{ color: '$alert_error_default', cursor: 'pointer', ml: '$2' }}\n onClick={e => {\n e.preventDefault();\n playlist.selection.playing ? playlist.pause() : playlist.play(playlist.selection.id);\n }}\n >\n {playlist.selection.playing ? 'Pause' : 'Play'}\n </Text>\n ) : (\n <Text\n variant=\"sm\"\n css={{ color: '$alert_error_default', ml: '$2', cursor: 'pointer' }}\n onClick={e => {\n e.preventDefault();\n playlist.setVolume(!playlist.track.volume ? 100 : 0);\n }}\n >\n {playlist.track.volume === 0 ? 'Unmute' : 'Mute'}\n </Text>\n )}\n </Dropdown.Item>\n )}\n {!isAudioshareInactive && (\n <Dropdown.Item css={{ color: '$on_primary_high' }}>\n <MusicIcon width={24} height={24} />\n <Text variant=\"sm\" css={{ ml: '$2', flex: '1 1 0' }}>\n Music is playing\n </Text>\n <Text\n variant=\"sm\"\n css={{ color: '$alert_error_default', ml: '$2', cursor: 'pointer' }}\n onClick={e => {\n e.preventDefault();\n screenshareAudio.onToggle();\n }}\n >\n {screenshareAudio.muted ? 'Unmute' : 'Mute'}\n </Text>\n </Dropdown.Item>\n )}\n {shouldShowScreenShareState && (\n <Dropdown.Item css={{ color: '$on_primary_high' }}>\n <ShareScreenIcon width={24} height={24} />\n <Text variant=\"sm\" css={{ ml: '$2', flex: '1 1 0' }}>\n {`Shared by: ${screenSharingPeerId === localPeerID ? 'You' : screenSharingPeerName}`}\n </Text>\n </Dropdown.Item>\n )}\n {shouldShowVideoState && (\n <Dropdown.Item css={{ color: '$on_primary_high' }}>\n <VideoPlayerIcon width={24} height={24} />\n <Text variant=\"sm\" css={{ ml: '$2', flex: '1 1 0' }}>\n {`Shared by: ${peerSharingPlaylist.id === localPeerID ? 'You' : peerSharingPlaylist.name}`}\n </Text>\n </Dropdown.Item>\n )}\n {whiteboardOwner && (\n <Dropdown.Item css={{ color: '$on_primary_high' }}>\n <PencilDrawIcon width={24} height={24} />\n <Text variant=\"sm\" css={{ ml: '$2', flex: '1 1 0' }}>\n Whiteboard Owner - {whiteboardOwner.name}\n {amIWhiteboardOwner && '(You)'}\n </Text>\n {amIWhiteboardOwner && (\n <Text\n variant=\"sm\"\n css={{ color: '$alert_error_default', ml: '$2', cursor: 'pointer' }}\n onClick={e => {\n e.preventDefault();\n toggleWhiteboard();\n }}\n >\n Stop\n </Text>\n )}\n </Dropdown.Item>\n )}\n </Dropdown.Content>\n </Dropdown.Root>\n );\n};\n", "import { useCallback, useEffect, useMemo } from 'react';\nimport { selectLocalPeerID, selectPeerByCondition, useHMSStore } from '@100mslive/react-sdk';\nimport { useMyMetadata } from '../../components/hooks/useMetadata';\nimport { getMetadata } from '../../common/utils';\nimport { FeatureFlags } from '../../services/FeatureFlags';\n\nconst isWhiteboardOwner = peer => {\n return !!getMetadata(peer?.metadata).whiteboardOwner;\n};\n\nexport const useWhiteboardMetadata = () => {\n const localPeerID = useHMSStore(selectLocalPeerID);\n const { updateMetaData } = useMyMetadata();\n const whiteboardOwner = useHMSStore(selectPeerByCondition(isWhiteboardOwner));\n const amIWhiteboardOwner = useMemo(() => localPeerID === whiteboardOwner?.id, [localPeerID, whiteboardOwner]);\n\n /**\n * @param enabled {boolean}\n */\n const toggleWhiteboard = useCallback(async () => {\n if (!process.env.REACT_APP_PUSHER_APP_KEY) {\n console.error('Cannot start whiteboard - Pusher Key unavailable');\n }\n try {\n if (!whiteboardOwner || amIWhiteboardOwner) {\n await updateMetaData({ whiteboardOwner: !whiteboardOwner });\n } else {\n console.warn('Cannot toggle whiteboard as it was shared by another peer');\n }\n } catch (error) {\n console.error('failed to toggle whiteboard to ', !whiteboardOwner, error);\n }\n }, [whiteboardOwner, updateMetaData, amIWhiteboardOwner]);\n\n useEffect(() => {\n window.toggleWhiteboard = toggleWhiteboard;\n }, [toggleWhiteboard]);\n\n return {\n /** is whiteboard enabled for the room */\n whiteboardEnabled: FeatureFlags.enableWhiteboard,\n /** owner of the active whiteboard, can also be used to check if whiteboard is active */\n whiteboardOwner,\n amIWhiteboardOwner,\n toggleWhiteboard,\n };\n};\n", "import { useCallback } from 'react';\nimport {\n selectHasPeerHandRaised,\n selectLocalPeerID,\n selectPeerMetadata,\n useHMSActions,\n useHMSStore,\n useHMSVanillaStore,\n} from '@100mslive/react-sdk';\n\nexport const useMyMetadata = () => {\n const hmsActions = useHMSActions();\n const localPeerId = useHMSStore(selectLocalPeerID);\n const vanillaStore = useHMSVanillaStore();\n const metaData = useHMSStore(selectPeerMetadata(localPeerId));\n const isHandRaised = useHMSStore(selectHasPeerHandRaised(localPeerId));\n\n const update = async updatedFields => {\n try {\n // get current state from store and merge updated fields\n const currentMetadata = vanillaStore.getState(selectPeerMetadata(localPeerId));\n await hmsActions.changeMetadata(Object.assign(currentMetadata, updatedFields));\n return true;\n } catch (error) {\n console.error('failed to update metadata ', updatedFields);\n }\n };\n\n const toggleHandRaise = useCallback(async () => {\n if (isHandRaised) {\n await hmsActions.lowerLocalPeerHand();\n } else {\n await hmsActions.raiseLocalPeerHand();\n await update({ isBRBOn: false });\n }\n }, [isHandRaised]); //eslint-disable-line\n\n const toggleBRB = useCallback(async () => {\n const newValue = !metaData?.isBRBOn;\n await update({ isBRBOn: newValue });\n if (newValue) {\n await hmsActions.lowerLocalPeerHand();\n }\n }, [metaData?.isBRBOn]); //eslint-disable-line\n\n const setPrevRole = async role => {\n await update({\n prevRole: role,\n });\n };\n\n return {\n isHandRaised,\n isBRBOn: !!metaData?.isBRBOn,\n metaData,\n updateMetaData: update,\n toggleHandRaise,\n toggleBRB,\n setPrevRole,\n };\n};\n", "import { useCallback } from 'react';\nimport {\n selectAudioPlaylist,\n selectAudioPlaylistTrackByPeerID,\n selectPeerSharingAudioPlaylist,\n useHMSActions,\n useHMSStore,\n} from '@100mslive/react-sdk';\n\nexport const usePlaylistMusic = () => {\n const peer = useHMSStore(selectPeerSharingAudioPlaylist);\n const track = useHMSStore(selectAudioPlaylistTrackByPeerID(peer?.id));\n const selection = useHMSStore(selectAudioPlaylist.selectedItem);\n const hmsActions = useHMSActions();\n\n const play = useCallback(\n async selectedId => {\n await hmsActions.audioPlaylist.play(selectedId);\n },\n [hmsActions],\n );\n\n const pause = useCallback(() => {\n hmsActions.audioPlaylist.pause();\n }, [hmsActions]);\n\n const setVolume = useCallback(\n value => {\n hmsActions.setVolume(value, track?.id);\n },\n [hmsActions, track],\n );\n\n return { selection, peer, track, play, pause, setVolume };\n};\n", "import { useCallback } from 'react';\nimport {\n selectPeerSharingAudio,\n selectScreenShareAudioByPeerID,\n useHMSActions,\n useHMSStore,\n} from '@100mslive/react-sdk';\n\nexport const useScreenshareAudio = () => {\n const hmsActions = useHMSActions();\n const peer = useHMSStore(selectPeerSharingAudio);\n const track = useHMSStore(selectScreenShareAudioByPeerID(peer?.id));\n\n const handleMute = useCallback(() => {\n if (!peer.isLocal) {\n hmsActions.setVolume(!track.volume ? 100 : 0, track.id);\n } else {\n hmsActions.setEnabledTrack(track.id, !track.enabled).catch(console.error);\n }\n }, [peer, hmsActions, track]);\n\n let muted = undefined;\n if (peer && track) {\n muted = peer.isLocal ? !track.enabled : track.volume === 0;\n }\n\n return { peer, track, muted, onToggle: handleMute };\n};\n", "import React from 'react';\nimport {\n DeviceType,\n selectIsLocalVideoEnabled,\n selectLocalVideoTrackID,\n selectVideoTrackByID,\n useDevices,\n useHMSActions,\n useHMSStore,\n} from '@100mslive/react-sdk';\nimport { CameraFlipIcon, CheckIcon, CrossIcon, SpeakerIcon } from '@100mslive/react-icons';\nimport { HorizontalDivider } from '../../../Divider';\nimport { Label } from '../../../Label';\nimport { Box, Flex } from '../../../Layout';\nimport { Sheet } from '../../../Sheet';\nimport { Text } from '../../../Text';\nimport IconButton from '../../IconButton';\nimport { ToastManager } from '../Toast/ToastManager';\n\nexport const CamaraFlipActions = () => {\n const actions = useHMSActions();\n const { allDevices } = useDevices();\n const { videoInput } = allDevices;\n const isVideoOn = useHMSStore(selectIsLocalVideoEnabled);\n\n const videoTrackId = useHMSStore(selectLocalVideoTrackID);\n const localVideoTrack = useHMSStore(selectVideoTrackByID(videoTrackId));\n if (!videoInput || !videoInput?.length || !localVideoTrack?.facingMode) {\n return null;\n }\n return (\n <Box>\n <IconButton\n disabled={!isVideoOn}\n onClick={async () => {\n try {\n await actions.switchCamera();\n } catch (e) {\n ToastManager.addToast({\n title: `Error while flipping camera ${e.message || ''}`,\n variant: 'error',\n });\n }\n }}\n >\n <CameraFlipIcon />\n </IconButton>\n </Box>\n );\n};\n\nexport const AudioOutputActions = () => {\n const { allDevices, selectedDeviceIDs, updateDevice } = useDevices();\n const { audioOutput } = allDevices;\n // don't show speaker selector where the API is not supported, and use\n // a generic word(\"Audio\") for Mic. In some cases(Chrome Android for e.g.) this changes both mic and speaker keeping them in sync.\n const shouldShowAudioOutput = 'setSinkId' in HTMLMediaElement.prototype;\n\n /**\n * Chromium browsers return an audioOutput with empty label when no permissions are given\n */\n const audioOutputFiltered = audioOutput?.filter(item => !!item.label) ?? [];\n if (!shouldShowAudioOutput || !audioOutputFiltered?.length > 0) {\n return null;\n }\n return (\n <AudioOutputSelectionSheet\n outputDevices={audioOutput}\n outputSelected={selectedDeviceIDs.outputDevices}\n onChange={async deviceId => {\n try {\n await updateDevice({\n deviceId,\n deviceType: DeviceType.audioOutput,\n });\n } catch (e) {\n ToastManager.addToast({\n title: `Error while changing audio output ${e.message || ''}`,\n variant: 'error',\n });\n }\n }}\n >\n <Box>\n <IconButton>\n <SpeakerIcon />\n </IconButton>\n </Box>\n </AudioOutputSelectionSheet>\n );\n};\n\nconst AudioOutputSelectionSheet = ({ outputDevices, outputSelected, onChange, children }) => {\n return (\n <Sheet.Root>\n <Sheet.Trigger asChild>{children}</Sheet.Trigger>\n <Sheet.Content>\n <Sheet.Title css={{ py: '$10', px: '$8', alignItems: 'center' }}>\n <Flex direction=\"row\" justify=\"between\" css={{ w: '100%' }}>\n <Text variant=\"h6\" css={{ display: 'flex' }}>\n Audio Output\n </Text>\n <Sheet.Close>\n <IconButton as=\"div\" data-testid=\"dialog_cross_icon\">\n <CrossIcon />\n </IconButton>\n </Sheet.Close>\n </Flex>\n </Sheet.Title>\n <HorizontalDivider />\n <Flex\n direction=\"column\"\n css={{\n px: '$8',\n maxHeight: '80vh',\n overflowY: 'scroll',\n }}\n >\n {outputDevices.map(audioDevice => {\n return (\n <SelectWithLabel\n key={audioDevice.deviceId}\n label={audioDevice.label}\n id={audioDevice.deviceId}\n checked={audioDevice.deviceId === outputSelected}\n onChange={() => onChange(audioDevice.deviceId)}\n />\n );\n })}\n </Flex>\n </Sheet.Content>\n </Sheet.Root>\n );\n};\n\nconst SelectWithLabel = ({ label, icon = <></>, checked, id, onChange }) => {\n return (\n <Flex\n align=\"center\"\n css={{\n my: '$2',\n py: '$8',\n w: '100%',\n borderBottom: '1px solid $border_default',\n }}\n onClick={onChange}\n >\n <Label\n htmlFor={id}\n css={{\n fontSize: '$md',\n fontWeight: '$semiBold',\n color: checked ? '$on_surface_high' : '$on_surface_low',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: '$8',\n flex: '1 1 0',\n }}\n >\n {icon}\n {label}\n </Label>\n {checked && <CheckIcon width={24} height={24} />}\n </Flex>\n );\n};\n", "import React from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { useSearchParam } from 'react-use';\nimport { Flex } from '../../..';\nimport { useHMSPrebuiltContext } from '../../AppContext';\nimport { useRoomLayout } from '../../provider/roomLayoutProvider';\n// @ts-ignore: No implicit Any\nimport FullPageProgress from '../FullPageProgress';\n// @ts-ignore: No implicit Any\nimport PreviewJoin from './PreviewJoin';\nimport { useRoomLayoutPreviewScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\n// @ts-ignore: No implicit Any\nimport { useAuthToken } from '../AppData/useUISettings';\n// @ts-ignore: No implicit Any\nimport { QUERY_PARAM_PREVIEW_AS_ROLE } from '../../common/constants';\n\nconst PreviewContainer = () => {\n const navigate = useNavigate();\n const { isPreviewScreenEnabled } = useRoomLayoutPreviewScreen();\n const skipPreview = !isPreviewScreenEnabled;\n const previewAsRole = useSearchParam(QUERY_PARAM_PREVIEW_AS_ROLE);\n const { userName } = useHMSPrebuiltContext();\n const initialName = userName || (skipPreview ? 'Beam' : '');\n const { roomId: urlRoomId, role: userRole } = useParams(); // from the url\n const authToken = useAuthToken();\n const roomLayout = useRoomLayout();\n const { preview_header: previewHeader = {} } = roomLayout?.screens?.preview?.default?.elements || {};\n\n const onJoin = () => {\n let meetingURL = `/meeting/${urlRoomId}`;\n if (userRole) {\n meetingURL += `/${userRole}`;\n }\n navigate(meetingURL);\n };\n return (\n <Flex direction=\"column\" css={{ size: '100%' }}>\n <Flex\n css={{ flex: '1 1 0', position: 'relative', overflowY: 'auto', color: '$primary_default' }}\n justify=\"center\"\n align=\"center\"\n >\n {authToken && Object.keys(previewHeader).length > 0 ? (\n <PreviewJoin\n initialName={initialName}\n skipPreview={skipPreview}\n asRole={previewAsRole ?? undefined}\n onJoin={onJoin}\n />\n ) : (\n <FullPageProgress />\n )}\n </Flex>\n </Flex>\n );\n};\n\nexport default PreviewContainer;\n", "import React, { Fragment, Suspense, useCallback, useEffect, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport {\n HMSRoomState,\n selectIsLocalVideoEnabled,\n selectLocalPeer,\n selectRoomState,\n selectVideoTrackByID,\n useAVToggle,\n useHMSStore,\n useParticipants,\n usePreviewJoin,\n useRecordingStreaming,\n} from '@100mslive/react-sdk';\nimport { MicOffIcon, SettingsIcon } from '@100mslive/react-icons';\nimport { Avatar, Box, config as cssConfig, Flex, flexCenter, styled, StyledVideoTile, Text, Video } from '../../..';\nimport { useHMSPrebuiltContext } from '../../AppContext';\n// @ts-ignore: No implicit Any\nimport IconButton from '../../IconButton';\nimport { useRoomLayout } from '../../provider/roomLayoutProvider';\n// @ts-ignore: No implicit Any\nimport { AudioVideoToggle } from '../AudioVideoToggle';\n// @ts-ignore: No implicit Any\nimport Chip from '../Chip';\n// @ts-ignore: No implicit Any\nimport TileConnection from '../Connection/TileConnection';\n// @ts-ignore: No implicit Any\nimport FullPageProgress from '../FullPageProgress';\n// @ts-ignore: No implicit Any\nimport { Logo } from '../Header/HeaderComponents';\n// @ts-ignore: No implicit Any\nimport SettingsModal from '../Settings/SettingsModal';\n// @ts-ignore: No implicit Any\nimport { AudioLevel } from '../VideoTile';\n// @ts-ignore: No implicit Any\nimport PreviewForm from './PreviewForm';\n// @ts-ignore: No implicit Any\nimport { useAuthToken, useUISettings } from '../AppData/useUISettings';\n// @ts-ignore: No implicit Any\nimport { defaultPreviewPreference, UserPreferencesKeys, useUserPreferences } from '../hooks/useUserPreferences';\n// @ts-ignore: No implicit Any\nimport { getFormattedCount } from '../../common/utils';\n// @ts-ignore: No implicit Any\nimport { UI_SETTINGS } from '../../common/constants';\n\n// @ts-ignore: No implicit Any\nconst VirtualBackground = React.lazy(() => import('../../plugins/VirtualBackground/VirtualBackground'));\n\nconst getParticipantChipContent = (peerCount = 0) => {\n if (peerCount === 0) {\n return 'You are the first to join';\n }\n const formattedNum = getFormattedCount(peerCount);\n return `${formattedNum} other${parseInt(formattedNum) === 1 ? '' : 's'} in the session`;\n};\n\nconst PreviewJoin = ({\n onJoin,\n skipPreview,\n initialName,\n asRole,\n}: {\n onJoin: () => void;\n skipPreview?: boolean;\n initialName?: string;\n asRole?: string;\n}) => {\n const [previewPreference, setPreviewPreference] = useUserPreferences(\n UserPreferencesKeys.PREVIEW,\n defaultPreviewPreference,\n );\n const { isStreamingOn } = useRecordingStreaming();\n const authToken = useAuthToken();\n const [name, setName] = useState(initialName || previewPreference.name);\n const { toggleAudio, toggleVideo } = useAVToggle();\n const [previewError, setPreviewError] = useState(false);\n const { endpoints } = useHMSPrebuiltContext();\n const { peerCount } = useParticipants();\n const { enableJoin, preview, join } = usePreviewJoin({\n name,\n token: authToken,\n initEndpoint: endpoints?.init,\n initialSettings: {\n isAudioMuted: skipPreview || previewPreference.isAudioMuted,\n isVideoMuted: skipPreview || previewPreference.isVideoMuted,\n speakerAutoSelectionBlacklist: ['Yeti Stereo Microphone'],\n },\n captureNetworkQualityInPreview: true,\n handleError: (_, method) => {\n if (method === 'preview') {\n setPreviewError(true);\n }\n },\n asRole,\n });\n const roomState = useHMSStore(selectRoomState);\n\n const savePreferenceAndJoin = useCallback(() => {\n setPreviewPreference({\n name,\n });\n join();\n onJoin && onJoin();\n }, [join, name, setPreviewPreference, onJoin]);\n const roomLayout = useRoomLayout();\n\n const { preview_header: previewHeader = {} } = roomLayout?.screens?.preview?.default?.elements || {};\n const localPeer = useHMSStore(selectLocalPeer);\n const videoTrack = useHMSStore(selectVideoTrackByID(localPeer?.videoTrack));\n const isMobile = useMedia(cssConfig.media.md);\n const aspectRatio =\n videoTrack?.width && videoTrack?.height ? videoTrack.width / videoTrack.height : isMobile ? 9 / 16 : 16 / 9;\n useEffect(() => {\n if (authToken) {\n if (skipPreview) {\n savePreferenceAndJoin();\n } else {\n preview();\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [authToken, skipPreview]);\n\n useEffect(() => {\n if (initialName) {\n setName(initialName);\n }\n }, [initialName]);\n\n return roomState === HMSRoomState.Preview ? (\n <Container css={{ h: '100%', pt: '$10', '@md': { justifyContent: 'space-between' } }}>\n {toggleVideo ? null : <Box />}\n <Flex direction=\"column\" justify=\"center\" css={{ w: '100%', maxWidth: '640px' }}>\n <Logo />\n <Text\n variant=\"h4\"\n css={{ wordBreak: 'break-word', textAlign: 'center', mt: '$14', mb: '$4', '@md': { mt: '$8', mb: '$2' } }}\n >\n {previewHeader.title}\n </Text>\n <Text\n css={{ c: '$on_surface_medium', my: '0', textAlign: 'center', maxWidth: '100%', wordWrap: 'break-word' }}\n variant=\"sm\"\n >\n {previewHeader.sub_title}\n </Text>\n <Flex justify=\"center\" css={{ mt: '$14', '@md': { mt: '$8', mb: '0' }, gap: '$4' }}>\n {isStreamingOn ? (\n <Chip\n content=\"LIVE\"\n backgroundColor=\"$alert_error_default\"\n textColor=\"#FFF\"\n icon={<Box css={{ h: '$sm', w: '$sm', backgroundColor: '$on_primary_high', borderRadius: '$round' }} />}\n />\n ) : null}\n <Chip content={getParticipantChipContent(peerCount)} hideIfNoContent />\n </Flex>\n </Flex>\n {toggleVideo ? (\n <Flex\n align=\"center\"\n justify=\"center\"\n css={{\n mt: '$14',\n '@md': { mt: 0 },\n '@sm': { width: '100%' },\n flexDirection: 'column',\n }}\n >\n <PreviewTile name={name} error={previewError} />\n </Flex>\n ) : null}\n <Box css={{ w: '100%', maxWidth: `${Math.max(aspectRatio, 1) * 360}px` }}>\n <PreviewControls hideSettings={!toggleVideo && !toggleAudio} />\n <PreviewForm\n name={name}\n onChange={setName}\n enableJoin={enableJoin}\n onJoin={savePreferenceAndJoin}\n cannotPublishVideo={!toggleVideo}\n cannotPublishAudio={!toggleAudio}\n />\n </Box>\n </Container>\n ) : (\n <FullPageProgress />\n );\n};\n\nconst Container = styled('div', {\n width: '100%',\n ...flexCenter,\n flexDirection: 'column',\n px: '$10',\n});\n\nexport const PreviewTile = ({ name, error }: { name: string; error?: boolean }) => {\n const localPeer = useHMSStore(selectLocalPeer);\n const { isLocalAudioEnabled, toggleAudio } = useAVToggle();\n const isVideoOn = useHMSStore(selectIsLocalVideoEnabled);\n const mirrorLocalVideo = useUISettings(UI_SETTINGS.mirrorLocalVideo);\n const trackSelector = selectVideoTrackByID(localPeer?.videoTrack);\n const track = useHMSStore(trackSelector);\n const showMuteIcon = !isLocalAudioEnabled || !toggleAudio;\n const videoTrack = useHMSStore(selectVideoTrackByID(localPeer?.videoTrack));\n const isMobile = useMedia(cssConfig.media.md);\n const aspectRatio =\n videoTrack?.width && videoTrack?.height ? videoTrack.width / videoTrack.height : isMobile ? 9 / 16 : 16 / 9;\n\n return (\n <StyledVideoTile.Container\n css={{\n bg: '$surface_default',\n aspectRatio,\n height: 'min(360px, 70vh)',\n maxWidth: '640px',\n overflow: 'clip',\n '@md': {\n width: 'min(220px, 70vw)',\n maxWidth: '100%',\n my: '$4',\n },\n }}\n >\n {localPeer ? (\n <>\n <TileConnection name={name} peerId={localPeer.id} hideLabel={true} />\n <Video\n mirror={track?.facingMode !== 'environment' && mirrorLocalVideo}\n trackId={localPeer.videoTrack}\n data-testid=\"preview_tile\"\n />\n\n {!isVideoOn ? (\n <StyledVideoTile.AvatarContainer>\n <Avatar name={name} data-testid=\"preview_avatar_tile\" />\n </StyledVideoTile.AvatarContainer>\n ) : null}\n </>\n ) : !error ? (\n <FullPageProgress />\n ) : null}\n\n {showMuteIcon ? (\n <StyledVideoTile.AudioIndicator>\n <MicOffIcon />\n </StyledVideoTile.AudioIndicator>\n ) : (\n <AudioLevel trackId={localPeer?.audioTrack} />\n )}\n </StyledVideoTile.Container>\n );\n};\n\nexport const PreviewControls = ({ hideSettings }: { hideSettings: boolean }) => {\n const isMobile = useMedia(cssConfig.media.md);\n\n return (\n <Flex\n justify={hideSettings && isMobile ? 'center' : 'between'}\n css={{\n width: '100%',\n mt: '$8',\n }}\n >\n <Flex css={{ gap: '$4' }}>\n <AudioVideoToggle />\n <Suspense fallback=\"\">{!isMobile ? <VirtualBackground /> : null}</Suspense>\n </Flex>\n {!hideSettings ? <PreviewSettings /> : null}\n </Flex>\n );\n};\n\nexport const PreviewSettings = React.memo(() => {\n const [open, setOpen] = useState(false);\n\n return (\n <Fragment>\n <IconButton data-testid=\"preview_setting_btn\" css={{ flexShrink: 0 }} onClick={() => setOpen(value => !value)}>\n <SettingsIcon />\n </IconButton>\n {open && <SettingsModal open={open} onOpenChange={setOpen} />}\n </Fragment>\n );\n});\n\nexport default PreviewJoin;\n", "import React, { Fragment } from 'react';\nimport {\n DeviceType,\n HMSRoomState,\n selectLocalVideoTrackID,\n selectRoomState,\n selectVideoTrackByID,\n useAVToggle,\n useDevices,\n useHMSActions,\n useHMSStore,\n} from '@100mslive/react-sdk';\nimport { CameraFlipIcon, MicOffIcon, MicOnIcon, VideoOffIcon, VideoOnIcon } from '@100mslive/react-icons';\nimport { IconButtonWithOptions } from './IconButtonWithOptions/IconButtonWithOptions';\nimport { ToastManager } from './Toast/ToastManager';\nimport { Text } from '../../Text';\nimport { Tooltip } from '../../Tooltip';\nimport IconButton from '../IconButton';\nimport { isMacOS } from '../common/constants';\n\nconst optionsCSS = { fontWeight: '$semiBold', color: '$on_surface_high', w: '100%', p: '$8' };\n\nexport const AudioVideoToggle = ({ hideOptions = false }) => {\n const { allDevices, selectedDeviceIDs, updateDevice } = useDevices();\n const { videoInput, audioInput } = allDevices;\n\n const formattedVideoInputList = videoInput?.map(videoInput => ({\n active: selectedDeviceIDs.videoInput === videoInput.deviceId,\n content: (\n <Text\n variant=\"sm\"\n onClick={() =>\n updateDevice({\n deviceType: DeviceType.videoInput,\n deviceId: videoInput.deviceId,\n })\n }\n css={optionsCSS}\n >\n {videoInput.label}\n </Text>\n ),\n title: videoInput.label,\n }));\n\n const formattedAudioInputList = audioInput?.map(audioInput => ({\n active: selectedDeviceIDs.audioInput === audioInput.deviceId,\n content: (\n <Text\n variant=\"sm\"\n onClick={() =>\n updateDevice({\n deviceType: DeviceType.audioInput,\n deviceId: audioInput.deviceId,\n })\n }\n css={optionsCSS}\n >\n {audioInput.label}\n </Text>\n ),\n title: audioInput.label,\n }));\n\n const { isLocalVideoEnabled, isLocalAudioEnabled, toggleAudio, toggleVideo } = useAVToggle();\n const actions = useHMSActions();\n const videoTrackId = useHMSStore(selectLocalVideoTrackID);\n const localVideoTrack = useHMSStore(selectVideoTrackByID(videoTrackId));\n const roomState = useHMSStore(selectRoomState);\n const hasAudioDevices = audioInput?.length > 0;\n const hasVideoDevices = videoInput?.length > 0;\n\n return (\n <Fragment>\n {toggleAudio ? (\n hideOptions || !hasAudioDevices ? (\n <Tooltip title={`Turn ${isLocalAudioEnabled ? 'off' : 'on'} audio (${isMacOS ? '\u2318' : 'ctrl'} + d)`}>\n <IconButton\n active={isLocalAudioEnabled}\n disabled={!toggleAudio}\n onClick={toggleAudio}\n key=\"toggleAudio\"\n data-testid=\"audio_btn\"\n className=\"__cancel-drag-event\"\n >\n {!isLocalAudioEnabled ? (\n <MicOffIcon data-testid=\"audio_off_btn\" />\n ) : (\n <MicOnIcon data-testid=\"audio_on_btn\" />\n )}\n </IconButton>\n </Tooltip>\n ) : (\n <IconButtonWithOptions\n options={formattedAudioInputList}\n disabled={!toggleAudio}\n onDisabledClick={toggleAudio}\n tooltipMessage={`Turn ${isLocalAudioEnabled ? 'off' : 'on'} audio (${isMacOS ? '\u2318' : 'ctrl'} + d)`}\n icon={\n !isLocalAudioEnabled ? (\n <MicOffIcon data-testid=\"audio_off_btn\" />\n ) : (\n <MicOnIcon data-testid=\"audio_on_btn\" />\n )\n }\n active={isLocalAudioEnabled}\n onClick={toggleAudio}\n key=\"toggleAudio\"\n />\n )\n ) : null}\n\n {toggleVideo ? (\n hideOptions || !hasVideoDevices ? (\n <Tooltip title={`Turn ${isLocalVideoEnabled ? 'off' : 'on'} video (${isMacOS ? '\u2318' : 'ctrl'} + e)`}>\n <IconButton\n key=\"toggleVideo\"\n active={isLocalVideoEnabled}\n disabled={!toggleVideo}\n onClick={toggleVideo}\n data-testid=\"video_btn\"\n className=\"__cancel-drag-event\"\n >\n {!isLocalVideoEnabled ? (\n <VideoOffIcon data-testid=\"video_off_btn\" />\n ) : (\n <VideoOnIcon data-testid=\"video_on_btn\" />\n )}\n </IconButton>\n </Tooltip>\n ) : (\n <IconButtonWithOptions\n disabled={!toggleVideo}\n onDisabledClick={toggleVideo}\n options={formattedVideoInputList}\n tooltipMessage={`Turn ${isLocalVideoEnabled ? 'off' : 'on'} video (${isMacOS ? '\u2318' : 'ctrl'} + e)`}\n icon={\n !isLocalVideoEnabled ? (\n <VideoOffIcon data-testid=\"video_off_btn\" />\n ) : (\n <VideoOnIcon data-testid=\"video_on_btn\" />\n )\n }\n key=\"toggleVideo\"\n active={isLocalVideoEnabled}\n onClick={toggleVideo}\n />\n )\n ) : null}\n\n {localVideoTrack?.facingMode && roomState === HMSRoomState.Preview ? (\n <Tooltip title=\"Switch Camera\" key=\"switchCamera\">\n <IconButton\n onClick={async () => {\n try {\n await actions.switchCamera();\n } catch (e) {\n ToastManager.addToast({\n title: `Error while flipping camera ${e.message || ''}`,\n variant: 'error',\n });\n }\n }}\n >\n <CameraFlipIcon />\n </IconButton>\n </Tooltip>\n ) : null}\n </Fragment>\n );\n};\n", "import React from 'react';\nimport { VerticalMenuIcon } from '@100mslive/react-icons';\nimport { Dropdown } from '../../../Dropdown';\nimport { Box, Flex } from '../../../Layout';\nimport { styled } from '../../../Theme';\nimport { Tooltip } from '../../../Tooltip';\nimport IconButton from '../../IconButton';\n\nconst IconSection = styled(IconButton, {\n w: 'unset',\n h: '$14',\n p: '$4',\n r: '$1',\n borderTopRightRadius: 0,\n borderColor: '$border_default',\n borderBottomRightRadius: 0,\n position: 'relative',\n '&:not([disabled]):focus-visible': {\n zIndex: 1,\n },\n '@md': {\n mx: 0,\n borderTopRightRadius: '$1',\n borderBottomRightRadius: '$1',\n },\n});\n\nconst OptionsSection = styled(IconButton, {\n w: 'unset',\n h: '$14',\n p: '$4',\n r: '$1',\n borderTopLeftRadius: 0,\n borderColor: '$border_default',\n borderBottomLeftRadius: 0,\n borderLeftWidth: 0,\n position: 'relative',\n '&:not([disabled]):focus-visible': {\n zIndex: 1,\n },\n '@md': {\n display: 'none',\n },\n});\n\nexport const IconButtonWithOptions = ({\n disabled = false,\n onDisabledClick = () => {\n return;\n },\n tooltipMessage = '',\n icon,\n options = [],\n active,\n onClick = () => {\n return;\n },\n}) => {\n const bgCss = { backgroundColor: disabled ? '$surface_brighter' : active ? '$transparent' : '$secondary_dim' };\n const iconCss = { color: disabled ? '$on_surface_low' : active ? '$on_surface_high' : '$on_primary_high' };\n\n return (\n <Flex>\n <IconSection css={bgCss} onClick={onClick}>\n <Tooltip disabled={!tooltipMessage} title={tooltipMessage}>\n <Flex align=\"center\" justify=\"center\" css={iconCss}>\n {icon}\n </Flex>\n </Tooltip>\n </IconSection>\n <Dropdown.Root>\n <Dropdown.Trigger\n asChild\n // onClick does not work\n onPointerDown={e => {\n if (disabled) {\n e.preventDefault();\n onDisabledClick();\n }\n }}\n >\n <OptionsSection css={bgCss}>\n <Tooltip title=\"View Options\">\n <Box css={iconCss}>\n <VerticalMenuIcon />\n </Box>\n </Tooltip>\n </OptionsSection>\n </Dropdown.Trigger>\n <Dropdown.Content\n sideOffset={5}\n align=\"center\"\n css={{\n w: '$64',\n maxHeight: '$96',\n p: 0,\n border: 'none',\n }}\n >\n {options.map((option, index) => (\n <Dropdown.Item\n key={option.title}\n css={{\n flexDirection: 'column',\n alignItems: 'flex-start',\n backgroundColor: option.active ? '$surface_bright' : '$surface_dim',\n borderTop: index === 0 ? 'none' : '1px solid $border_default',\n '&:hover': {\n cursor: 'pointer',\n },\n p: '0',\n }}\n >\n {option.content}\n </Dropdown.Item>\n ))}\n </Dropdown.Content>\n </Dropdown.Root>\n </Flex>\n );\n};\n", "import React from 'react';\nimport { Flex } from '../../Layout';\nimport { Text } from '../../Text';\n\nconst Chip = ({\n icon = <></>,\n content = '',\n backgroundColor = '$surface_default',\n textColor = '$on_surface_high',\n hideIfNoContent = false,\n}) => {\n if (hideIfNoContent && !content) {\n return;\n }\n return (\n <Flex align=\"center\" css={{ backgroundColor, p: '$4 $6', borderRadius: '$4' }}>\n {icon}\n <Text variant=\"sm\" css={{ fontWeight: '$semiBold', color: textColor, ml: '$2' }}>\n {content}\n </Text>\n </Flex>\n );\n};\n\nexport default Chip;\n", "import React from 'react';\nimport { PinIcon, SpotlightIcon } from '@100mslive/react-icons';\nimport { Flex, styled, Text, textEllipsis } from '../../..';\nimport { ConnectionIndicator } from './ConnectionIndicator';\n\nconst TileConnection = ({\n name,\n peerId,\n hideLabel,\n width,\n spotlighted,\n pinned,\n}: {\n name: string;\n peerId: string;\n hideLabel: boolean;\n width?: number;\n spotlighted?: boolean;\n pinned?: boolean;\n}) => {\n return (\n <Wrapper>\n {!hideLabel ? (\n <>\n <Flex align=\"center\">\n {pinned && (\n <IconWrapper>\n <PinIcon width=\"15\" height=\"15\" />\n </IconWrapper>\n )}\n {spotlighted && (\n <IconWrapper>\n <SpotlightIcon width=\"15\" height=\"15\" />\n </IconWrapper>\n )}\n <Text\n css={{\n c: '$on_surface_high',\n verticalAlign: 'baseline',\n ...(width ? textEllipsis(width - 60) : {}),\n }}\n variant=\"xs\"\n >\n {name}\n </Text>\n </Flex>\n <ConnectionIndicator isTile peerId={peerId} hideBg />\n </>\n ) : null}\n </Wrapper>\n );\n};\n\nconst IconWrapper = styled('div', { c: '$on_surface_high', ml: '$3', mt: '$1' });\n\nconst Wrapper = styled('div', {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n position: 'absolute',\n bottom: '$2',\n left: '$2',\n backgroundColor: '$background_dim',\n borderRadius: '$1',\n maxWidth: '85%',\n '& p,span': {\n p: '$2 $3',\n },\n});\n\nexport default TileConnection;\n", "import React from 'react';\nimport { selectConnectionQualityByPeerID, useHMSStore } from '@100mslive/react-sdk';\nimport { PoorConnectivityIcon } from '@100mslive/react-icons';\nimport { styled, Tooltip, useTheme } from '../../..';\n// @ts-ignore\nimport { getColor, getTooltipText } from './connectionQualityUtils';\n\nconst Wrapper = styled('span', {\n width: '28px',\n height: '28px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '$round',\n variants: {\n isTile: {\n true: {\n width: 'unset',\n height: 'unset',\n },\n },\n },\n});\n\nexport const ConnectionIndicator = ({\n peerId,\n isTile = false,\n hideBg = false,\n}: {\n peerId: string;\n isTile?: boolean;\n hideBg?: boolean;\n}) => {\n const downlinkQuality = useHMSStore(selectConnectionQualityByPeerID(peerId))?.downlinkQuality;\n const { theme } = useTheme();\n const defaultColor = theme.colors.surface_brighter;\n if (downlinkQuality === -1 || downlinkQuality === undefined) {\n return null;\n }\n if (downlinkQuality === 0) {\n return (\n <Tooltip title={getTooltipText(downlinkQuality)}>\n <Wrapper isTile={isTile} css={{ color: '#ED4C5A' }} data-testid=\"tile_network\">\n <PoorConnectivityIcon />\n </Wrapper>\n </Tooltip>\n );\n }\n const size = isTile ? 12 : 16;\n return (\n <Tooltip title={getTooltipText(downlinkQuality)}>\n <Wrapper isTile={isTile} data-testid=\"tile_network\" css={{ backgroundColor: hideBg ? '' : '$surface_bright' }}>\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 14 12\"\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlSpace=\"preserve\"\n style={{\n fillRule: 'evenodd',\n clipRule: 'evenodd',\n strokeLinejoin: 'round',\n strokeMiterlimit: 2,\n }}\n >\n <path\n d=\"M6.875 0c2.549.035 4.679.902 6.445 2.648.366.362.45.796.216 1.096-.239.306-.714.34-1.142.072a2.28 2.28 0 0 1-.341-.271C9.24.862 4.924.775 1.992 3.346c-.284.249-.594.419-.983.393-.272-.019-.49-.135-.613-.388-.125-.261-.05-.498.114-.713.073-.092.156-.177.245-.254C2.516.804 4.591.039 6.875 0Z\"\n fill={getColor(4, downlinkQuality, defaultColor, theme)}\n transform=\"translate(-.333)\"\n />\n <path\n d=\"M7.056 2.964c1.756.035 3.208.7 4.499 1.763.162.134.277.315.354.512.098.251.114.503-.075.72-.193.222-.452.259-.725.198-.293-.066-.518-.247-.738-.443a4.859 4.859 0 0 0-6.198-.26c-.166.127-.318.271-.475.409-.242.211-.513.343-.843.317-.43-.034-.679-.397-.561-.81.062-.211.181-.4.345-.546 1.265-1.162 2.733-1.836 4.417-1.86Z\"\n fill={getColor(3, downlinkQuality, defaultColor, theme)}\n transform=\"translate(-.333)\"\n />\n <path\n d=\"M7.384,6.052C8.293,6.068 9.157,6.449 9.783,7.108C10.005,7.339 10.157,7.6 10.07,7.942C9.959,8.377 9.435,8.581 9.071,8.243C7.935,7.191 6.356,7.183 5.152,8.183C4.816,8.462 4.6,8.485 4.332,8.27C4.063,8.055 3.998,7.691 4.177,7.358C4.273,7.179 4.414,7.038 4.57,6.911C5.26,6.349 6.149,6.05 7.384,6.052L7.384,6.052Z\"\n fill={getColor(2, downlinkQuality, defaultColor, theme)}\n />\n <path\n d=\"M8.214,9.941C8.214,10.234 8.097,10.515 7.888,10.721C7.68,10.928 7.398,11.042 7.104,11.039C6.471,11.036 5.982,10.541 5.993,9.912C6.004,9.259 6.499,8.766 7.133,8.779C7.744,8.791 8.22,9.301 8.214,9.941Z\"\n fill={getColor(1, downlinkQuality, defaultColor, theme)}\n />\n </svg>\n </Wrapper>\n </Tooltip>\n );\n};\n", "const connectionTooltip = {\n 0: 'Reconnecting',\n 1: 'Very Bad Connection',\n 2: 'Bad Connection',\n 3: 'Moderate Connection',\n 4: 'Good Connection',\n 5: 'Excellent Connection',\n};\nconnectionTooltip[-1] = 'Network Unknown';\n\n/**\n * @param connectionScore -> 1-5 connection score for network quality\n */\nexport const getTooltipText = connectionScore => {\n return connectionTooltip[connectionScore];\n};\n\n/**\n * position is needed here as we don't want all the dots/arcs to be colored,\n * the non colored ones will be passed in the default color. If user is\n * disconnected(score=0), no dot/arc will be colored.\n * @param position -> 1 to 5\n * @param connectionScore -> 0 to 5, 0 means disconnected\n * @param defaultColor -> color for components not taking the connection color\n */\nexport const getColor = (position, connectionScore, defaultColor, theme) => {\n const shouldBeColored = position <= connectionScore;\n if (!shouldBeColored) {\n return defaultColor;\n }\n if (connectionScore >= 4) {\n return theme.colors.alert_success;\n } else if (connectionScore >= 3) {\n return theme.colors.alert_warning;\n } else if (connectionScore >= 1) {\n return theme.colors.alert_default;\n }\n return defaultColor;\n};\n", "import React, { useCallback, useEffect, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport { ChevronLeftIcon, CrossIcon } from '@100mslive/react-icons';\nimport { HorizontalDivider } from '../../../Divider';\nimport { IconButton } from '../../../IconButton';\nimport { Box, Flex } from '../../../Layout';\nimport { Dialog } from '../../../Modal';\nimport { Sheet } from '../../../Sheet';\nimport { Tabs } from '../../../Tabs';\nimport { Text } from '../../../Text';\nimport { config as cssConfig } from '../../../Theme';\nimport { settingContent, settingsList } from './common.js';\n\nconst SettingsModal = ({ open, onOpenChange, screenType, children = <></> }) => {\n const mediaQueryLg = cssConfig.media.md;\n const isMobile = useMedia(mediaQueryLg);\n\n const [showSetting, setShowSetting] = useState(() =>\n settingsList.reduce((obj, { tabName }) => ({ ...obj, [tabName]: true }), {}),\n );\n\n const hideSettingByTabName = useCallback(\n key => hide => setShowSetting(prev => ({ ...prev, [key]: !hide })),\n [setShowSetting],\n );\n\n useEffect(() => {\n if (screenType === 'hls_live_streaming') {\n hideSettingByTabName('layout')(true);\n }\n }, [screenType, hideSettingByTabName]);\n\n const [selection, setSelection] = useState(() => Object.keys(showSetting).find(key => showSetting[key]) ?? '');\n const resetSelection = useCallback(() => {\n setSelection('');\n }, []);\n\n useEffect(() => {\n if (isMobile) {\n setSelection('');\n } else {\n const firstNotHiddenTabName = Object.keys(showSetting).find(key => showSetting[key]) ?? '';\n setSelection(firstNotHiddenTabName);\n }\n }, [isMobile, showSetting]);\n\n return isMobile ? (\n <MobileSettingModal\n open={open}\n onOpenChange={onOpenChange}\n selection={selection}\n setSelection={setSelection}\n showSetting={showSetting}\n hideSettingByTabName={hideSettingByTabName}\n resetSelection={resetSelection}\n children={children}\n />\n ) : (\n <DesktopSettingModal\n open={open}\n onOpenChange={onOpenChange}\n selection={selection}\n setSelection={setSelection}\n showSetting={showSetting}\n hideSettingByTabName={hideSettingByTabName}\n resetSelection={resetSelection}\n children={children}\n />\n );\n};\n\nconst MobileSettingModal = ({\n open,\n onOpenChange,\n selection,\n setSelection,\n showSetting,\n hideSettingByTabName,\n resetSelection,\n children = <></>,\n}) => {\n return (\n <Sheet.Root open={open} onOpenChange={onOpenChange}>\n <Sheet.Trigger asChild>{children}</Sheet.Trigger>\n <Sheet.Content\n css={{\n bg: '$surface_dim',\n overflowY: 'auto',\n }}\n >\n <Sheet.Title css={{ py: '$10', px: '$8', alignItems: 'center' }}>\n <Flex direction=\"row\" justify=\"between\" css={{ w: '100%' }}>\n {!selection ? (\n <Text variant=\"h6\" css={{ display: 'flex' }}>\n Settings\n </Text>\n ) : (\n <Text variant=\"h6\" css={{ display: 'flex' }}>\n <Box as=\"span\" css={{ r: '$round', mr: '$2' }} onClick={resetSelection}>\n <ChevronLeftIcon />\n </Box>\n {selection?.charAt(0).toUpperCase() + selection.slice(1)}\n </Text>\n )}\n <Sheet.Close>\n <IconButton as=\"div\" data-testid=\"dialog_cross_icon\">\n <CrossIcon />\n </IconButton>\n </Sheet.Close>\n </Flex>\n </Sheet.Title>\n <HorizontalDivider />\n {!selection ? (\n <Flex\n direction=\"column\"\n css={{\n px: '$8',\n pb: '$8',\n overflowY: 'auto',\n }}\n >\n {settingsList\n .filter(({ tabName }) => showSetting[tabName])\n .map(({ icon: Icon, tabName, title }) => {\n return (\n <Box\n key={tabName}\n value={tabName}\n onClick={() => {\n setSelection(tabName);\n }}\n as=\"div\"\n css={{\n all: 'unset',\n fontFamily: '$sans',\n py: '$10',\n display: 'flex',\n alignItems: 'center',\n fontSize: '$sm',\n lineHeight: '$sm',\n color: '$on_surface_high',\n userSelect: 'none',\n gap: '$8',\n cursor: 'pointer',\n '&:hover': {\n bg: '$surface_brighter',\n r: '$1',\n gap: '$8',\n border: 'none',\n },\n borderBottom: '1px solid $border_default',\n }}\n >\n <Icon />\n {title}\n </Box>\n );\n })}\n </Flex>\n ) : (\n <Box\n direction=\"column\"\n css={{ overflowY: 'scroll', px: '$8', py: '$10', maxHeight: '70vh', overflowX: 'hidden' }}\n >\n {settingsList\n .filter(({ tabName }) => showSetting[tabName] && selection === tabName)\n .map(({ content: Content, title, tabName }) => {\n return <Content key={title} setHide={hideSettingByTabName(tabName)} />;\n })}\n </Box>\n )}\n </Sheet.Content>\n </Sheet.Root>\n );\n};\nconst DesktopSettingModal = ({\n open,\n onOpenChange,\n selection,\n setSelection,\n showSetting,\n hideSettingByTabName,\n resetSelection,\n children = <></>,\n}) => {\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Trigger asChild>{children}</Dialog.Trigger>\n <Dialog.Portal>\n <Dialog.Overlay />\n <Dialog.Content\n css={{\n w: 'min(800px, 90%)',\n height: 'min(656px, 90%)',\n p: 0,\n r: '$4',\n }}\n >\n <Tabs.Root\n value={selection}\n activationMode=\"automatic\"\n onValueChange={setSelection}\n css={{ size: '100%', position: 'relative' }}\n >\n <Tabs.List\n css={{\n w: '18.625rem',\n flexDirection: 'column',\n bg: '$background_default',\n p: '$14 $10',\n borderTopLeftRadius: '$4',\n borderBottomLeftRadius: '$4',\n }}\n >\n <Text variant=\"h5\">Settings </Text>\n <Flex direction=\"column\" css={{ mx: 0, overflowY: 'auto', pt: '$10' }}>\n {settingsList\n .filter(({ tabName }) => showSetting[tabName])\n .map(({ icon: Icon, tabName, title }) => {\n return (\n <Tabs.Trigger key={tabName} value={tabName} css={{ gap: '$8' }}>\n <Icon />\n {title}\n </Tabs.Trigger>\n );\n })}\n </Flex>\n </Tabs.List>\n {selection && (\n <Flex\n direction=\"column\"\n css={{\n flex: '1 1 0',\n minWidth: 0,\n mr: '$4',\n }}\n >\n {settingsList\n .filter(({ tabName }) => showSetting[tabName])\n .map(({ content: Content, title, tabName }) => {\n return (\n <Tabs.Content key={tabName} value={tabName} className={settingContent()}>\n <SettingsContentHeader onBack={resetSelection} isMobile={false}>\n {title}\n </SettingsContentHeader>\n <Content setHide={hideSettingByTabName(tabName)} />\n </Tabs.Content>\n );\n })}\n </Flex>\n )}\n </Tabs.Root>\n <Dialog.Close css={{ position: 'absolute', right: '$10', top: '$10' }}>\n <IconButton as=\"div\" data-testid=\"dialog_cross_icon\">\n <CrossIcon />\n </IconButton>\n </Dialog.Close>\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\nconst SettingsContentHeader = ({ children, isMobile, onBack }) => {\n return (\n <Text variant=\"h6\" css={{ mb: '$12', display: 'flex', alignItems: 'center' }}>\n {isMobile && (\n <Box as=\"span\" css={{ bg: '$surface_bright', mr: '$4', r: '$round', p: '$2' }} onClick={onBack}>\n <ChevronLeftIcon />\n </Box>\n )}\n {children}\n </Text>\n );\n};\n\nexport default SettingsModal;\n", "import { GridFourIcon, NotificationsIcon, SettingsIcon } from '@100mslive/react-icons';\nimport { css } from '../../..';\nimport DeviceSettings from '../Settings/DeviceSettings';\nimport { LayoutSettings } from '../Settings/LayoutSettings';\nimport { NotificationSettings } from '../Settings/NotificationSettings';\n\nexport const settingOverflow = css({\n flex: '1 1 0',\n pr: '$12',\n mr: '-$12',\n overflowY: 'auto',\n});\n\nexport const settingContent = css({\n display: 'flex',\n flexDirection: 'column',\n '&[hidden]': {\n display: 'none',\n },\n});\n\nexport const settingsList = [\n {\n tabName: 'devices',\n title: 'Device Settings',\n icon: SettingsIcon,\n content: DeviceSettings,\n },\n {\n tabName: 'notifications',\n title: 'Notifications',\n icon: NotificationsIcon,\n content: NotificationSettings,\n },\n {\n tabName: 'layout',\n title: 'Layout',\n icon: GridFourIcon,\n content: LayoutSettings,\n },\n];\n", "import React, { Fragment, useEffect, useRef, useState } from 'react';\nimport {\n DeviceType,\n selectIsLocalVideoEnabled,\n selectLocalVideoTrackID,\n selectVideoTrackByID,\n useDevices,\n useHMSStore,\n} from '@100mslive/react-sdk';\nimport { MicOnIcon, SpeakerIcon, VideoOnIcon } from '@100mslive/react-icons';\nimport { Box, Button, Dropdown, Flex, StyledVideoTile, Text, Video } from '../../../';\nimport { DialogDropdownTrigger } from '../../primitives/DropdownTrigger';\nimport { useUISettings } from '../AppData/useUISettings';\nimport { useDropdownSelection } from '../hooks/useDropdownSelection';\nimport { settingOverflow } from './common.js';\nimport { UI_SETTINGS } from '../../common/constants';\n\n/**\n * wrap the button on click of whom settings should open, this component will take care of the rest,\n * it'll give the user options to change input/output device as well as check speaker.\n * There is also another controlled way of using this by passing in open and onOpenChange.\n */\nconst Settings = ({ setHide }) => {\n const { allDevices, selectedDeviceIDs, updateDevice } = useDevices();\n const { videoInput, audioInput, audioOutput } = allDevices;\n const videoTrackId = useHMSStore(selectLocalVideoTrackID);\n const isVideoOn = useHMSStore(selectIsLocalVideoEnabled);\n // don't show speaker selector where the API is not supported, and use\n // a generic word(\"Audio\") for Mic. In some cases(Chrome Android for e.g.) this changes both mic and speaker keeping them in sync.\n const shouldShowAudioOutput = 'setSinkId' in HTMLMediaElement.prototype;\n const mirrorLocalVideo = useUISettings(UI_SETTINGS.mirrorLocalVideo);\n const trackSelector = selectVideoTrackByID(videoTrackId);\n const track = useHMSStore(trackSelector);\n\n /**\n * Chromium browsers return an audioOutput with empty label when no permissions are given\n */\n const audioOutputFiltered = audioOutput?.filter(item => !!item.label) ?? [];\n\n if (!videoInput?.length && !audioInput?.length && !audioOutputFiltered?.length) {\n setHide(true);\n }\n\n return (\n <Box className={settingOverflow()}>\n {videoInput?.length ? (\n <Fragment>\n {isVideoOn && (\n <StyledVideoTile.Container\n css={{\n w: '90%',\n px: '$10',\n height: '$48',\n bg: 'transparent',\n m: '$10 auto',\n }}\n >\n <Video trackId={videoTrackId} mirror={track?.facingMode !== 'environment' && mirrorLocalVideo} />\n </StyledVideoTile.Container>\n )}\n <DeviceSelector\n title=\"Video\"\n devices={videoInput}\n icon={<VideoOnIcon />}\n selection={selectedDeviceIDs.videoInput}\n onChange={deviceId =>\n updateDevice({\n deviceId,\n deviceType: DeviceType.videoInput,\n })\n }\n />\n </Fragment>\n ) : null}\n\n {audioInput?.length ? (\n <DeviceSelector\n title={shouldShowAudioOutput ? 'Microphone' : 'Audio'}\n icon={<MicOnIcon />}\n devices={audioInput}\n selection={selectedDeviceIDs.audioInput}\n onChange={deviceId =>\n updateDevice({\n deviceId,\n deviceType: DeviceType.audioInput,\n })\n }\n />\n ) : null}\n\n {audioOutputFiltered?.length && shouldShowAudioOutput ? (\n <DeviceSelector\n title=\"Speaker\"\n icon={<SpeakerIcon />}\n devices={audioOutput}\n selection={selectedDeviceIDs.audioOutput}\n onChange={deviceId =>\n updateDevice({\n deviceId,\n deviceType: DeviceType.audioOutput,\n })\n }\n >\n <TestAudio id={selectedDeviceIDs.audioOutput} />\n </DeviceSelector>\n ) : null}\n </Box>\n );\n};\n\nconst DeviceSelector = ({ title, devices, selection, onChange, icon, children = null }) => {\n const [open, setOpen] = useState(false);\n const selectionBg = useDropdownSelection();\n const ref = useRef(null);\n\n return (\n <Box css={{ mb: '$10' }}>\n <Text css={{ mb: '$4' }}>{title}</Text>\n <Flex\n align=\"center\"\n css={{\n gap: '$4',\n '@md': {\n flexDirection: children ? 'column' : 'row',\n alignItems: children ? 'start' : 'center',\n },\n }}\n >\n <Box\n css={{\n position: 'relative',\n flex: '1 1 0',\n minWidth: 0,\n w: '100%',\n maxWidth: '100%',\n '@md': {\n mb: children ? '$8' : 0,\n },\n }}\n >\n <Dropdown.Root open={open} onOpenChange={setOpen}>\n <DialogDropdownTrigger\n ref={ref}\n icon={icon}\n title={devices.find(({ deviceId }) => deviceId === selection)?.label || 'Select device from list'}\n open={open}\n />\n <Dropdown.Portal>\n <Dropdown.Content align=\"start\" sideOffset={8} css={{ w: ref.current?.clientWidth, zIndex: 1001 }}>\n {devices.map(device => {\n return (\n <Dropdown.Item\n key={device.label}\n onSelect={() => onChange(device.deviceId)}\n css={{\n px: '$9',\n bg: device.deviceId === selection ? selectionBg : undefined,\n }}\n >\n {device.label}\n </Dropdown.Item>\n );\n })}\n </Dropdown.Content>\n </Dropdown.Portal>\n </Dropdown.Root>\n </Box>\n {children}\n </Flex>\n </Box>\n );\n};\n\nconst TEST_AUDIO_URL = 'https://100ms.live/test-audio.wav';\n\nconst TestAudio = ({ id }) => {\n const audioRef = useRef(null);\n const [playing, setPlaying] = useState(false);\n useEffect(() => {\n if (audioRef.current && id) {\n try {\n if (typeof audioRef.current.setSinkId !== 'undefined') {\n audioRef.current.setSinkId(id);\n }\n } catch (error) {\n console.log(error);\n }\n }\n }, [id]);\n return (\n <>\n <Button\n variant=\"standard\"\n css={{\n flexShrink: 0,\n p: '$6 $9',\n '@md': {\n w: '100%',\n },\n }}\n onClick={() => audioRef.current?.play()}\n disabled={playing}\n >\n <SpeakerIcon />\n &nbsp;Test{' '}\n <Text as=\"span\" css={{ display: 'none', '@md': { display: 'inline' } }}>\n &nbsp; speaker\n </Text>\n </Button>\n <audio ref={audioRef} src={TEST_AUDIO_URL} onEnded={() => setPlaying(false)} onPlay={() => setPlaying(true)} />\n </>\n );\n};\n\nexport default Settings;\n", "import React from 'react';\nimport { ChevronDownIcon, ChevronUpIcon } from '@100mslive/react-icons';\nimport { Dropdown, Flex, Text, textEllipsis } from '../../index';\n\nconst DialogDropdownTrigger = React.forwardRef(({ title, css, open, icon, titleCSS = {} }, ref) => {\n return (\n <Dropdown.Trigger\n asChild\n data-testid={`${title}_selector`}\n css={{\n border: '1px solid $border_bright',\n bg: '$surface_bright',\n r: '$1',\n p: '$6 $9',\n zIndex: 10,\n ...css,\n }}\n ref={ref}\n >\n <Flex\n css={{\n display: 'flex',\n justifyContent: 'space-between',\n color: '$on_surface_high',\n w: '100%',\n }}\n >\n {icon}\n <Text\n css={{\n color: 'inherit',\n ...textEllipsis('90%'),\n flex: '1 1 0',\n mx: icon ? '$6' : '0',\n ...titleCSS,\n }}\n >\n {title}\n </Text>\n {open ? <ChevronUpIcon /> : <ChevronDownIcon />}\n </Flex>\n </Dropdown.Trigger>\n );\n});\n\nexport { DialogDropdownTrigger };\n", "export const useDropdownSelection = () => {\n return '$primary_dim';\n};\n", "import React, { useCallback } from 'react';\nimport { selectIsLocalScreenShared, selectIsLocalVideoEnabled, useHMSActions, useHMSStore } from '@100mslive/react-sdk';\nimport { Box, Flex, Slider, Text } from '../../../';\nimport SwitchWithLabel from './SwitchWithLabel';\nimport { useSetUiSettings } from '../AppData/useUISettings';\nimport { settingOverflow } from './common.js';\nimport { UI_SETTINGS } from '../../common/constants';\n\nexport const LayoutSettings = () => {\n const hmsActions = useHMSActions();\n const isLocalVideoEnabled = useHMSStore(selectIsLocalVideoEnabled);\n const isLocalScreenShared = useHMSStore(selectIsLocalScreenShared);\n const [{ isAudioOnly, maxTileCount, mirrorLocalVideo }, setUISettings] = useSetUiSettings();\n const toggleIsAudioOnly = useCallback(\n async isAudioOnlyModeOn => {\n if (isAudioOnlyModeOn) {\n // turn off video and screen share if user switches to audio only mode\n isLocalVideoEnabled && (await hmsActions.setLocalVideoEnabled(false));\n isLocalScreenShared && (await hmsActions.setScreenShareEnabled(false));\n }\n setUISettings({ [UI_SETTINGS.isAudioOnly]: isAudioOnlyModeOn });\n },\n [hmsActions, isLocalVideoEnabled, isLocalScreenShared, setUISettings],\n );\n\n return (\n <Box className={settingOverflow()}>\n <SwitchWithLabel label=\"Audio Only Mode\" id=\"audioOnlyMode\" checked={isAudioOnly} onChange={toggleIsAudioOnly} />\n <SwitchWithLabel\n label=\"Mirror Local Video\"\n id=\"mirrorMode\"\n checked={mirrorLocalVideo}\n onChange={value => {\n setUISettings({\n [UI_SETTINGS.mirrorLocalVideo]: value,\n });\n }}\n />\n <Flex align=\"center\" css={{ w: '100%', my: '$2', py: '$8', '@md': { display: 'none' } }}>\n <Text variant=\"md\" css={{ fontWeight: '$semiBold' }}>\n Tiles In View({maxTileCount})\n </Text>\n <Flex justify=\"end\" css={{ flex: '1 1 0' }}>\n <Slider\n step={1}\n value={[maxTileCount]}\n min={1}\n max={49}\n onValueChange={e => {\n setUISettings({ [UI_SETTINGS.maxTileCount]: e[0] });\n }}\n css={{ w: '70%' }}\n />\n </Flex>\n </Flex>\n </Box>\n );\n};\n", "import React from 'react';\nimport { Label } from '../../../Label';\nimport { Flex } from '../../../Layout';\nimport { Switch } from '../../../Switch';\n\nconst SwitchWithLabel = ({ label, icon, id, onChange, checked, hide = false }) => {\n return (\n <Flex\n align=\"center\"\n css={{\n my: '$2',\n py: '$8',\n w: '100%',\n borderBottom: '1px solid $border_default',\n display: hide ? 'none' : 'flex',\n }}\n >\n <Label\n htmlFor={id}\n css={{\n fontSize: '$md',\n fontWeight: '$semiBold',\n color: checked ? '$on_surface_high' : '$on_surface_low',\n cursor: 'pointer',\n display: 'flex',\n alignItems: 'center',\n gap: '$8',\n flex: '1 1 0',\n }}\n >\n {icon}\n {label}\n </Label>\n <Switch id={id} checked={checked} onCheckedChange={onChange} />\n </Flex>\n );\n};\n\nexport default SwitchWithLabel;\n", "import React from 'react';\nimport { AlertOctagonIcon, HandIcon, PeopleAddIcon, PeopleRemoveIcon } from '@100mslive/react-icons';\nimport { Box } from '../../../';\nimport SwitchWithLabel from './SwitchWithLabel';\nimport { useSetSubscribedNotifications, useSubscribedNotifications } from '../AppData/useUISettings';\nimport { settingOverflow } from './common.js';\nimport { SUBSCRIBED_NOTIFICATIONS } from '../../common/constants';\n\nconst NotificationItem = ({ type, label, icon, checked }) => {\n const [, setSubscribedNotifications] = useSetSubscribedNotifications(type);\n return (\n <SwitchWithLabel\n label={label}\n id={type}\n icon={icon}\n checked={checked}\n onChange={value => {\n setSubscribedNotifications(value);\n }}\n />\n );\n};\n\nexport const NotificationSettings = () => {\n const subscribedNotifications = useSubscribedNotifications();\n\n return (\n <Box className={settingOverflow()}>\n <NotificationItem\n label=\"Peer Joined\"\n type={SUBSCRIBED_NOTIFICATIONS.PEER_JOINED}\n icon={<PeopleAddIcon />}\n checked={subscribedNotifications.PEER_JOINED}\n />\n <NotificationItem\n label=\"Peer Leave\"\n type={SUBSCRIBED_NOTIFICATIONS.PEER_LEFT}\n icon={<PeopleRemoveIcon />}\n checked={subscribedNotifications.PEER_LEFT}\n />\n <NotificationItem\n label=\"Hand Raised\"\n type={SUBSCRIBED_NOTIFICATIONS.METADATA_UPDATED}\n icon={<HandIcon />}\n checked={subscribedNotifications.METADATA_UPDATED}\n />\n <NotificationItem\n label=\"Error\"\n type={SUBSCRIBED_NOTIFICATIONS.ERROR}\n icon={<AlertOctagonIcon />}\n checked={subscribedNotifications.ERROR}\n />\n </Box>\n );\n};\n", "import React, { Fragment, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport {\n selectAudioTrackByPeerID,\n selectHasPeerHandRaised,\n selectIsPeerAudioEnabled,\n selectLocalPeerID,\n selectPeerMetadata,\n selectPeerNameByID,\n selectSessionStore,\n selectTrackAudioByID,\n selectVideoTrackByID,\n selectVideoTrackByPeerID,\n useHMSStore,\n useHMSVanillaStore,\n} from '@100mslive/react-sdk';\nimport { BrbTileIcon, HandIcon, MicOffIcon } from '@100mslive/react-icons';\nimport TileConnection from './Connection/TileConnection';\nimport TileMenu, { isSameTile } from './TileMenu/TileMenu';\nimport { Avatar } from '../../Avatar';\nimport { Box, Flex } from '../../Layout';\nimport { VideoTileStats } from '../../Stats';\nimport { config as cssConfig, keyframes } from '../../Theme';\nimport { Video } from '../../Video';\nimport { StyledVideoTile } from '../../VideoTile';\nimport { getVideoTileLabel } from './peerTileUtils';\nimport { useSetAppDataByKey, useUISettings } from './AppData/useUISettings';\nimport { getAttributeBoxSize } from '../common/utils';\nimport { APP_DATA, SESSION_STORE_KEY, UI_SETTINGS } from '../common/constants';\n\nconst Tile = ({\n peerId,\n trackId,\n width,\n height,\n objectFit = 'cover',\n canMinimise = false,\n isDragabble = false,\n rootCSS = {},\n containerCSS = {},\n enableSpotlightingPeer = true,\n hideParticipantNameOnTile = false,\n roundedVideoTile = true,\n hideAudioMuteOnTile = false,\n hideMetadataOnTile = false,\n}) => {\n const trackSelector = trackId ? selectVideoTrackByID(trackId) : selectVideoTrackByPeerID(peerId);\n const track = useHMSStore(trackSelector);\n const isMobile = useMedia(cssConfig.media.md);\n const peerName = useHMSStore(selectPeerNameByID(peerId));\n const audioTrack = useHMSStore(selectAudioTrackByPeerID(peerId));\n const localPeerID = useHMSStore(selectLocalPeerID);\n const isAudioOnly = useUISettings(UI_SETTINGS.isAudioOnly);\n const mirrorLocalVideo = useUISettings(UI_SETTINGS.mirrorLocalVideo);\n const showStatsOnTiles = useUISettings(UI_SETTINGS.showStatsOnTiles);\n const isAudioMuted = !useHMSStore(selectIsPeerAudioEnabled(peerId));\n const isVideoMuted = !track?.enabled;\n const [isMouseHovered, setIsMouseHovered] = useState(false);\n const isVideoDegraded = track?.degraded;\n const isLocal = localPeerID === peerId;\n const [pinnedTrackId] = useSetAppDataByKey(APP_DATA.pinnedTrackId);\n const pinned = isSameTile({\n trackId: pinnedTrackId,\n videoTrackID: track?.id,\n audioTrackID: audioTrack?.id,\n });\n const spotlighted = useHMSStore(selectSessionStore(SESSION_STORE_KEY.SPOTLIGHT)) === peerId;\n const label = getVideoTileLabel({\n peerName,\n track,\n isLocal,\n });\n const onHoverHandler = useCallback(event => {\n setIsMouseHovered(event.type === 'mouseenter');\n }, []);\n\n const ref = useRef(null);\n const calculatedHeight = ref.current?.clientHeight || '';\n const calculatedWidth = ref.current?.clientWidth || '';\n\n const isTileBigEnoughToShowStats = calculatedHeight >= 180 && calculatedWidth >= 180;\n\n const avatarSize = useMemo(() => {\n if (!calculatedWidth || !calculatedHeight) {\n return undefined;\n }\n if (calculatedWidth <= 150 || calculatedHeight <= 150) {\n return 'small';\n } else if (calculatedWidth <= 300 || calculatedHeight <= 300) {\n return 'medium';\n }\n return 'large';\n }, [calculatedWidth, calculatedHeight]);\n\n return (\n <StyledVideoTile.Root\n ref={ref}\n css={{\n width,\n height,\n ...rootCSS,\n }}\n data-testid={`participant_tile_${peerName}`}\n >\n {peerName !== undefined ? (\n <StyledVideoTile.Container\n onMouseEnter={onHoverHandler}\n onMouseLeave={onHoverHandler}\n noRadius={!roundedVideoTile}\n css={containerCSS}\n >\n {showStatsOnTiles && isTileBigEnoughToShowStats ? (\n <VideoTileStats audioTrackID={audioTrack?.id} videoTrackID={track?.id} peerID={peerId} isLocal={isLocal} />\n ) : null}\n\n <Video\n trackId={track?.id}\n attach={isLocal ? undefined : !isAudioOnly}\n mirror={\n mirrorLocalVideo &&\n peerId === localPeerID &&\n track?.source === 'regular' &&\n track?.facingMode !== 'environment'\n }\n noRadius={!roundedVideoTile}\n data-testid=\"participant_video_tile\"\n css={{\n objectFit,\n filter: isVideoDegraded ? 'blur($space$2)' : undefined,\n bg: 'transparent',\n }}\n />\n\n {isVideoMuted || (!isLocal && isAudioOnly) ? (\n <StyledVideoTile.AvatarContainer>\n <Avatar name={peerName || ''} data-testid=\"participant_avatar_icon\" size={avatarSize} />\n </StyledVideoTile.AvatarContainer>\n ) : null}\n\n {!hideAudioMuteOnTile ? (\n isAudioMuted ? (\n <StyledVideoTile.AudioIndicator\n data-testid=\"participant_audio_mute_icon\"\n size={getAttributeBoxSize(calculatedWidth, calculatedHeight)}\n >\n <MicOffIcon />\n </StyledVideoTile.AudioIndicator>\n ) : (\n <AudioLevel trackId={audioTrack?.id} />\n )\n ) : null}\n {isMouseHovered || (isDragabble && isMobile) ? (\n <TileMenu\n peerID={peerId}\n audioTrackID={audioTrack?.id}\n videoTrackID={track?.id}\n canMinimise={canMinimise}\n enableSpotlightingPeer={enableSpotlightingPeer}\n />\n ) : null}\n {!hideMetadataOnTile && <PeerMetadata peerId={peerId} height={calculatedHeight} width={calculatedWidth} />}\n\n <TileConnection\n hideLabel={hideParticipantNameOnTile}\n name={label}\n isTile\n peerId={peerId}\n width={width}\n pinned={pinned}\n spotlighted={spotlighted}\n />\n </StyledVideoTile.Container>\n ) : null}\n </StyledVideoTile.Root>\n );\n};\n\nconst heightAnimation = value =>\n keyframes({\n '50%': {\n transform: `scale3d(1,${value},1)`,\n },\n '100%': {\n transform: `scale3d(1,1,1)`,\n },\n });\n\nconst AudioLevelIndicator = ({ trackId, value, delay }) => {\n const vanillaStore = useHMSVanillaStore();\n const ref = useRef();\n\n useEffect(() => {\n const unsubscribe = vanillaStore.subscribe(audioLevel => {\n if (ref.current) {\n ref.current.style['animation'] = `${heightAnimation(\n audioLevel ? value : 1,\n )} 0.3s cubic-bezier(0.61, 1, 0.88, 1) infinite ${delay}s`;\n }\n }, selectTrackAudioByID(trackId));\n return unsubscribe;\n }, [vanillaStore, trackId, value, delay]);\n return (\n <Box\n ref={ref}\n css={{\n w: 4,\n height: 6,\n r: 2,\n bg: '$on_primary_high',\n }}\n />\n );\n};\n\nexport const AudioLevel = ({ trackId }) => {\n return (\n <StyledVideoTile.AudioIndicator>\n <Flex align=\"center\" justify=\"center\" css={{ gap: '$2' }}>\n {[3, 2, 3].map((v, i) => (\n <AudioLevelIndicator trackId={trackId} value={v} delay={i * 0.15} key={i} />\n ))}\n </Flex>\n </StyledVideoTile.AudioIndicator>\n );\n};\n\nconst PeerMetadata = ({ peerId, height, width }) => {\n const metaData = useHMSStore(selectPeerMetadata(peerId));\n const isBRB = metaData?.isBRBOn || false;\n const isHandRaised = useHMSStore(selectHasPeerHandRaised(peerId));\n\n return (\n <Fragment>\n {isHandRaised ? (\n <StyledVideoTile.AttributeBox size={getAttributeBoxSize(width, height)} data-testid=\"raiseHand_icon_onTile\">\n <HandIcon width={24} height={24} />\n </StyledVideoTile.AttributeBox>\n ) : null}\n {isBRB ? (\n <StyledVideoTile.AttributeBox size={getAttributeBoxSize(width, height)} data-testid=\"brb_icon_onTile\">\n <BrbTileIcon width={22} height={22} />\n </StyledVideoTile.AttributeBox>\n ) : null}\n </Fragment>\n );\n};\n\nconst VideoTile = React.memo(Tile);\n\nexport default VideoTile;\n", "import React, { useState } from 'react';\nimport { useMedia } from 'react-use';\nimport {\n selectLocalPeerID,\n selectPeerByID,\n selectPermissions,\n selectTrackByID,\n selectVideoTrackByPeerID,\n useHMSStore,\n useRemoteAVToggle,\n} from '@100mslive/react-sdk';\nimport { CrossIcon, VerticalMenuIcon } from '@100mslive/react-icons';\nimport { Box, Flex } from '../../../Layout';\nimport { Sheet } from '../../../Sheet';\nimport { Text } from '../../../Text';\nimport { config as cssConfig, useTheme } from '../../../Theme';\nimport { StyledMenuTile } from '../../../TileMenu';\nimport { ChangeNameModal } from '../MoreSettings/ChangeNameModal';\nimport { TileMenuContent } from './TileMenuContent';\nimport { useDropdownList } from '../hooks/useDropdownList';\n\n/**\n * Taking peerID as peer won't necesarilly have tracks\n */\nconst TileMenu = ({\n audioTrackID,\n videoTrackID,\n peerID,\n isScreenshare = false,\n canMinimise,\n enableSpotlightingPeer = true,\n}) => {\n const [open, setOpen] = useState(false);\n const { theme } = useTheme();\n\n const localPeerID = useHMSStore(selectLocalPeerID);\n const isLocal = localPeerID === peerID;\n const { removeOthers } = useHMSStore(selectPermissions);\n const { setVolume, toggleAudio, toggleVideo } = useRemoteAVToggle(audioTrackID, videoTrackID);\n const showSpotlight = enableSpotlightingPeer;\n\n const isPrimaryVideoTrack = useHMSStore(selectVideoTrackByPeerID(peerID))?.id === videoTrackID;\n const showPinAction = audioTrackID || (videoTrackID && isPrimaryVideoTrack);\n\n const track = useHMSStore(selectTrackByID(videoTrackID));\n const hideSimulcastLayers = !track?.layerDefinitions?.length || track.degraded || !track.enabled;\n const isMobile = useMedia(cssConfig.media.md);\n const peer = useHMSStore(selectPeerByID(peerID));\n const [showNameChangeModal, setShowNameChangeModal] = useState(false);\n useDropdownList({ open, name: 'TileMenu' });\n\n if (!(removeOthers || toggleAudio || toggleVideo || setVolume || showPinAction) && hideSimulcastLayers) {\n return null;\n }\n\n const openNameChangeModal = () => setShowNameChangeModal(true);\n\n const props = {\n isLocal,\n isScreenshare,\n audioTrackID,\n videoTrackID,\n peerID,\n isPrimaryVideoTrack,\n showSpotlight,\n showPinAction,\n canMinimise,\n openNameChangeModal,\n };\n\n return (\n <>\n <StyledMenuTile.Root open={open} onOpenChange={setOpen}>\n <StyledMenuTile.Trigger\n data-testid=\"participant_menu_btn\"\n css={{ bg: `${theme.colors.background_dim.value}A3`, p: '$2', w: 'unset', h: 'unset' }}\n onClick={e => e.stopPropagation()}\n className={isMobile ? '__cancel-drag-event' : ''}\n >\n <VerticalMenuIcon width={20} height={20} />\n </StyledMenuTile.Trigger>\n\n {isMobile ? (\n <Sheet.Root open={open} onOpenChange={setOpen}>\n <Sheet.Content css={{ bg: '$surface_dim', pt: '$8' }}>\n <Flex\n css={{\n color: '$on_surface_high',\n display: 'flex',\n w: '100%',\n justifyContent: 'space-between',\n alignItems: 'center',\n px: '$10',\n pb: '$8',\n borderBottom: '1px solid $border_default',\n }}\n >\n <Box>\n <Text css={{ color: '$on_surface_high', fontWeight: '$semiBold' }}>\n {peer.name}\n {isLocal ? ` (You)` : null}\n </Text>\n {peer?.roleName ? (\n <Text variant=\"xs\" css={{ color: '$on_surface_low', mt: '$2' }}>\n {peer.roleName}\n </Text>\n ) : null}\n </Box>\n\n <Sheet.Close css={{ color: 'inherit' }}>\n <CrossIcon />\n </Sheet.Close>\n </Flex>\n <Box css={{ px: '$8', pb: '$8', maxHeight: '80vh', overflowY: 'auto' }}>\n <TileMenuContent {...props} closeSheetOnClick={() => setOpen(false)} />\n </Box>\n </Sheet.Content>\n </Sheet.Root>\n ) : (\n <StyledMenuTile.Content side=\"top\" align=\"end\" css={{ maxHeight: '$80', overflowY: 'auto' }}>\n <TileMenuContent {...props} />\n </StyledMenuTile.Content>\n )}\n </StyledMenuTile.Root>\n {showNameChangeModal && <ChangeNameModal onOpenChange={setShowNameChangeModal} />}\n </>\n );\n};\n\nexport { isSameTile } from './TileMenuContent';\n\nexport default TileMenu;\n", "import React, { useState } from 'react';\nimport { useMedia } from 'react-use';\nimport { selectLocalPeerName, useHMSActions, useHMSStore } from '@100mslive/react-sdk';\nimport { config as cssConfig, Dialog } from '../../../';\nimport { Sheet } from '../../../Sheet';\nimport { ToastManager } from '../Toast/ToastManager';\nimport { ChangeNameContent } from './ChangeNameContent';\nimport { UserPreferencesKeys, useUserPreferences } from '../hooks/useUserPreferences';\n\nexport const ChangeNameModal = ({ onOpenChange, openParentSheet = null }) => {\n const [previewPreference, setPreviewPreference] = useUserPreferences(UserPreferencesKeys.PREVIEW);\n const hmsActions = useHMSActions();\n const localPeerName = useHMSStore(selectLocalPeerName);\n const [currentName, setCurrentName] = useState(localPeerName);\n const isMobile = useMedia(cssConfig.media.md);\n\n const changeName = async () => {\n const name = currentName.trim();\n if (!name || name === localPeerName) {\n return;\n }\n try {\n await hmsActions.changeName(name);\n setPreviewPreference({\n ...(previewPreference || {}),\n name,\n });\n } catch (error) {\n console.error('failed to update name', error);\n ToastManager.addToast({ title: error.message });\n } finally {\n onOpenChange(false);\n }\n };\n\n const props = {\n changeName,\n setCurrentName,\n currentName,\n localPeerName,\n isMobile,\n onExit: () => onOpenChange(false),\n onBackClick: () => {\n onOpenChange(false);\n openParentSheet();\n },\n };\n\n if (isMobile) {\n return (\n <Sheet.Root defaultOpen onOpenChange={onOpenChange}>\n <Sheet.Content css={{ bg: '$surface_dim', p: '$8 0' }}>\n <ChangeNameContent {...props} />\n </Sheet.Content>\n </Sheet.Root>\n );\n }\n\n return (\n <Dialog.Root defaultOpen onOpenChange={onOpenChange}>\n <Dialog.Portal>\n <Dialog.Overlay />\n <Dialog.Content css={{ bg: '$surface_dim', width: 'min(400px,80%)', p: '$10' }}>\n <ChangeNameContent {...props} />\n </Dialog.Content>\n </Dialog.Portal>\n </Dialog.Root>\n );\n};\n", "import React from 'react';\nimport { ChevronLeftIcon, CrossIcon } from '@100mslive/react-icons';\nimport { Button } from '../../../Button';\nimport { Input } from '../../../Input';\nimport { Box, Flex } from '../../../Layout';\nimport { Text } from '../../../Text';\n\nexport const ChangeNameContent = ({\n changeName,\n setCurrentName,\n currentName,\n localPeerName,\n isMobile,\n onExit,\n onBackClick,\n}) => {\n return (\n <form\n onSubmit={async e => {\n e.preventDefault();\n await changeName();\n }}\n >\n <Text\n variant={isMobile ? 'md' : 'lg'}\n css={{\n color: '$on_surface_high',\n fontWeight: '$semiBold',\n display: 'flex',\n pb: '$4',\n '@md': { px: '$8', borderBottom: '1px solid $border_default' },\n }}\n >\n {isMobile ? <ChevronLeftIcon onClick={onBackClick} style={{ marginRight: '0.5rem' }} /> : null}\n Change Name\n <Box\n css={{ color: 'inherit', ml: 'auto', '&:hover': { color: '$on_surface_medium', cursor: 'pointer' } }}\n onClick={onExit}\n >\n <CrossIcon />\n </Box>\n </Text>\n <Text variant=\"sm\" css={{ color: '$on_surface_medium', pb: '$6', mb: '$8', '@md': { px: '$8', mt: '$4' } }}>\n Your name will be visible to other participants in the session.\n </Text>\n <Flex justify=\"center\" align=\"center\" css={{ my: '$8', w: '100%', '@md': { px: '$8' } }}>\n <Input\n css={{ width: '100%', bg: '$surface_default' }}\n value={currentName}\n // Prevents popup from showing up on chrome mweb\n type={isMobile ? 'search' : 'text'}\n onChange={e => {\n setCurrentName(e.target.value);\n }}\n autoComplete=\"name\"\n required\n data-testid=\"change_name_field\"\n onKeyDown={async e => {\n if (e.key === 'Enter' && currentName.trim().length > 0 && currentName !== localPeerName) {\n e.preventDefault();\n if (isMobile) {\n return;\n }\n changeName();\n }\n }}\n />\n </Flex>\n\n <Flex\n justify=\"between\"\n align=\"center\"\n css={{\n width: '100%',\n gap: '$md',\n mt: '$10',\n '@md': { px: '$4' },\n }}\n >\n {isMobile ? null : (\n <Button\n variant=\"standard\"\n css={{ w: '100%' }}\n outlined\n type=\"submit\"\n disabled={!localPeerName}\n onClick={onExit}\n >\n Cancel\n </Button>\n )}\n\n <Button\n variant=\"primary\"\n css={{ width: '100%' }}\n type=\"submit\"\n disabled={!currentName.trim() || currentName.trim() === localPeerName}\n data-testid=\"popup_change_btn\"\n >\n Change\n </Button>\n </Flex>\n </form>\n );\n};\n", "import React, { Fragment } from 'react';\nimport { useMedia } from 'react-use';\nimport {\n selectPermissions,\n selectSessionStore,\n selectTrackByID,\n useCustomEvent,\n useHMSActions,\n useHMSStore,\n useRemoteAVToggle,\n} from '@100mslive/react-sdk';\nimport {\n MicOffIcon,\n MicOnIcon,\n PencilIcon,\n PinIcon,\n RemoveUserIcon,\n ShareScreenIcon,\n ShrinkIcon,\n SpeakerIcon,\n StarIcon,\n VideoOffIcon,\n VideoOnIcon,\n} from '@100mslive/react-icons';\nimport { Box, Flex } from '../../../Layout';\nimport { Slider } from '../../../Slider';\nimport { Text } from '../../../Text';\nimport { config as cssConfig } from '../../../Theme';\nimport { StyledMenuTile } from '../../../TileMenu';\nimport { ToastManager } from '../Toast/ToastManager';\nimport { useSetAppDataByKey } from '../AppData/useUISettings';\nimport { useDropdownSelection } from '../hooks/useDropdownSelection';\nimport { APP_DATA, REMOTE_STOP_SCREENSHARE_TYPE, SESSION_STORE_KEY } from '../../common/constants';\n\nexport const isSameTile = ({ trackId, videoTrackID, audioTrackID }) =>\n trackId && ((videoTrackID && videoTrackID === trackId) || (audioTrackID && audioTrackID === trackId));\n\nconst spacingCSS = { '@md': { my: '$8', fontWeight: '$semiBold', fontSize: 'sm' } };\n\nconst SpotlightActions = ({\n peerId,\n onSpotLightClick = () => {\n return;\n },\n}) => {\n const hmsActions = useHMSActions();\n const spotlightPeerId = useHMSStore(selectSessionStore(SESSION_STORE_KEY.SPOTLIGHT));\n const isTileSpotlighted = spotlightPeerId === peerId;\n\n const setSpotlightPeerId = peer =>\n hmsActions.sessionStore\n .set(SESSION_STORE_KEY.SPOTLIGHT, peer)\n .catch(err => ToastManager.addToast({ title: err.description }));\n\n return (\n <StyledMenuTile.ItemButton\n css={spacingCSS}\n onClick={() => {\n if (isTileSpotlighted) {\n setSpotlightPeerId();\n } else {\n setSpotlightPeerId(peerId);\n }\n onSpotLightClick();\n }}\n >\n <StarIcon height={20} width={20} />\n <span>{isTileSpotlighted ? 'Remove from Spotlight' : 'Spotlight Tile for everyone'}</span>\n </StyledMenuTile.ItemButton>\n );\n};\n\nconst PinActions = ({ audioTrackID, videoTrackID }) => {\n const [pinnedTrackId, setPinnedTrackId] = useSetAppDataByKey(APP_DATA.pinnedTrackId);\n\n const isTilePinned = isSameTile({\n trackId: pinnedTrackId,\n videoTrackID,\n audioTrackID,\n });\n\n return (\n <>\n <StyledMenuTile.ItemButton\n css={spacingCSS}\n onClick={() => (isTilePinned ? setPinnedTrackId() : setPinnedTrackId(videoTrackID || audioTrackID))}\n >\n <PinIcon height={20} width={20} />\n <span>{isTilePinned ? 'Unpin' : 'Pin'} Tile for myself</span>\n </StyledMenuTile.ItemButton>\n </>\n );\n};\n\nconst MinimiseInset = () => {\n const [minimised, setMinimised] = useSetAppDataByKey(APP_DATA.minimiseInset);\n\n return (\n <>\n <StyledMenuTile.ItemButton css={spacingCSS} onClick={() => setMinimised(!minimised)}>\n <ShrinkIcon height={20} width={20} />\n <span>{minimised ? 'Show' : 'Minimise'} your video</span>\n </StyledMenuTile.ItemButton>\n </>\n );\n};\n\nconst SimulcastLayers = ({ trackId }) => {\n const track = useHMSStore(selectTrackByID(trackId));\n const actions = useHMSActions();\n const bg = useDropdownSelection();\n if (!track?.layerDefinitions?.length || track.degraded || !track.enabled) {\n return null;\n }\n const currentLayer = track.layerDefinitions.find(layer => layer.layer === track.layer);\n return (\n <Fragment>\n <StyledMenuTile.ItemButton css={{ color: '$on_surface_medium', cursor: 'default' }}>\n Select maximum resolution\n </StyledMenuTile.ItemButton>\n {track.layerDefinitions.map(layer => {\n return (\n <StyledMenuTile.ItemButton\n key={layer.layer}\n onClick={async () => {\n await actions.setPreferredLayer(trackId, layer.layer);\n }}\n css={{\n justifyContent: 'space-between',\n bg: track.preferredLayer === layer.layer ? bg : undefined,\n '&:hover': {\n bg: track.preferredLayer === layer.layer ? bg : undefined,\n },\n }}\n >\n <Text\n as=\"span\"\n css={{\n textTransform: 'capitalize',\n mr: '$2',\n fontWeight: track.preferredLayer === layer.layer ? '$semiBold' : '$regular',\n color: track.preferredLayer === layer.layer ? '$on_primary_high' : '$on_surface_high',\n }}\n >\n {layer.layer}\n </Text>\n <Text\n as=\"span\"\n variant=\"xs\"\n css={{\n color: track.preferredLayer === layer.layer ? '$on_primary_high' : '$on_surface_high',\n }}\n >\n {layer.resolution.width}x{layer.resolution.height}\n </Text>\n </StyledMenuTile.ItemButton>\n );\n })}\n <StyledMenuTile.ItemButton>\n <Text as=\"span\" variant=\"xs\" css={{ color: '$on_surface_medium' }}>\n Currently streaming:\n <Text\n as=\"span\"\n variant=\"xs\"\n css={{\n fontWeight: '$semiBold',\n textTransform: 'capitalize',\n color: '$on_surface_medium',\n ml: '$2',\n }}\n >\n {currentLayer ? (\n <>\n {track.layer} ({currentLayer.resolution.width}x{currentLayer.resolution.height})\n </>\n ) : (\n '-'\n )}\n </Text>\n </Text>\n </StyledMenuTile.ItemButton>\n </Fragment>\n );\n};\n\nexport const TileMenuContent = props => {\n const actions = useHMSActions();\n const { removeOthers } = useHMSStore(selectPermissions);\n const {\n videoTrackID,\n audioTrackID,\n isLocal,\n isScreenshare,\n showSpotlight,\n showPinAction,\n peerID,\n canMinimise,\n closeSheetOnClick = () => {\n return;\n },\n openNameChangeModal = () => {\n return;\n },\n } = props;\n\n const { isAudioEnabled, isVideoEnabled, setVolume, toggleAudio, toggleVideo, volume } = useRemoteAVToggle(\n audioTrackID,\n videoTrackID,\n );\n\n const { sendEvent } = useCustomEvent({\n type: REMOTE_STOP_SCREENSHARE_TYPE,\n });\n\n const isMobile = useMedia(cssConfig.media.md);\n\n return isLocal ? (\n (showPinAction || canMinimise) && (\n <>\n {showPinAction && <PinActions audioTrackID={audioTrackID} videoTrackID={videoTrackID} />}\n {showSpotlight && <SpotlightActions peerId={peerID} onSpotLightClick={() => closeSheetOnClick()} />}\n {canMinimise && <MinimiseInset />}\n <StyledMenuTile.ItemButton\n onClick={() => {\n openNameChangeModal();\n closeSheetOnClick();\n }}\n >\n <PencilIcon height={20} width={20} />\n <Text variant=\"sm\" css={{ '@md': { fontWeight: '$semiBold' }, c: '$on_surface_high' }}>\n Change Name\n </Text>\n </StyledMenuTile.ItemButton>\n </>\n )\n ) : (\n <>\n {toggleVideo ? (\n <StyledMenuTile.ItemButton\n css={spacingCSS}\n onClick={() => {\n toggleVideo();\n closeSheetOnClick();\n }}\n data-testid={isVideoEnabled ? 'mute_video_participant_btn' : 'unmute_video_participant_btn'}\n >\n {isVideoEnabled ? <VideoOnIcon height={20} width={20} /> : <VideoOffIcon height={20} width={20} />}\n <span>{isVideoEnabled ? 'Mute' : 'Request Unmute'}</span>\n </StyledMenuTile.ItemButton>\n ) : null}\n\n {toggleAudio ? (\n <StyledMenuTile.ItemButton\n css={spacingCSS}\n onClick={() => {\n toggleAudio();\n closeSheetOnClick();\n }}\n data-testid={isVideoEnabled ? 'mute_audio_participant_btn' : 'unmute_audio_participant_btn'}\n >\n {isAudioEnabled ? <MicOnIcon height={20} width={20} /> : <MicOffIcon height={20} width={20} />}\n <span>{isAudioEnabled ? 'Mute' : 'Request Unmute'}</span>\n </StyledMenuTile.ItemButton>\n ) : null}\n\n {audioTrackID ? (\n <StyledMenuTile.VolumeItem data-testid=\"participant_volume_slider\" css={{ ...spacingCSS, mb: '$0' }}>\n <Flex align=\"center\" gap={1}>\n <SpeakerIcon height={20} width={20} />\n <Box as=\"span\" css={{ ml: '$4' }}>\n Volume ({volume})\n </Box>\n </Flex>\n <Slider css={{ my: '0.5rem' }} step={5} value={[volume]} onValueChange={e => setVolume(e[0])} />\n </StyledMenuTile.VolumeItem>\n ) : null}\n\n {showPinAction && (\n <>\n <PinActions audioTrackID={audioTrackID} videoTrackID={videoTrackID} />\n {showSpotlight && <SpotlightActions peerId={peerID} onSpotLightClick={() => closeSheetOnClick()} />}\n </>\n )}\n\n {isMobile ? null : <SimulcastLayers trackId={videoTrackID} />}\n\n {removeOthers ? (\n <StyledMenuTile.RemoveItem\n css={{ ...spacingCSS, borderTop: 'none' }}\n onClick={async () => {\n try {\n await actions.removePeer(peerID, '');\n } catch (error) {\n // TODO: Toast here\n }\n closeSheetOnClick();\n }}\n data-testid=\"remove_participant_btn\"\n >\n <RemoveUserIcon height={20} width={20} />\n <span>Remove Participant</span>\n </StyledMenuTile.RemoveItem>\n ) : null}\n\n {removeOthers && isScreenshare ? (\n <StyledMenuTile.RemoveItem\n onClick={() => {\n sendEvent({});\n closeSheetOnClick();\n }}\n css={spacingCSS}\n >\n <ShareScreenIcon height={20} width={20} />\n <span>Stop Screenshare</span>\n </StyledMenuTile.RemoveItem>\n ) : null}\n </>\n );\n};\n", "import { useEffect } from 'react';\nimport { useSetAppDataByKey } from '../AppData/useUISettings';\nimport { APP_DATA } from '../../common/constants';\n\nexport const useDropdownList = ({ name, open }) => {\n const [dropdownList = [], setDropdownList] = useSetAppDataByKey(APP_DATA.dropdownList);\n\n useEffect(() => {\n if (open) {\n if (!dropdownList.includes(name)) {\n setDropdownList([...dropdownList, name]);\n }\n } else {\n const index = dropdownList.indexOf(name);\n if (index >= 0) {\n const newDropdownList = [...dropdownList];\n newDropdownList.splice(index, 1);\n setDropdownList(newDropdownList);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [open, name]);\n};\n", "const PEER_NAME_PLACEHOLDER = 'peerName';\nconst labelMap = new Map([\n [[true, 'screen'].toString(), 'Your Screen'],\n [[true, 'regular'].toString(), `You (${PEER_NAME_PLACEHOLDER})`],\n [[false, 'screen'].toString(), `${PEER_NAME_PLACEHOLDER}'s Screen`],\n [[false, 'regular'].toString(), PEER_NAME_PLACEHOLDER],\n [[true, undefined].toString(), `You (${PEER_NAME_PLACEHOLDER})`],\n [[false, undefined].toString(), `${PEER_NAME_PLACEHOLDER}`],\n]);\n\nexport const getVideoTileLabel = ({ peerName, isLocal, track }) => {\n const isPeerPresent = peerName !== undefined;\n if (!isPeerPresent || !track) {\n // for peers with only audio track\n return isPeerPresent ? labelMap.get([isLocal, undefined].toString()).replace(PEER_NAME_PLACEHOLDER, peerName) : '';\n }\n const isLocallyMuted = track.volume === 0;\n // Map [isLocal, videoSource] to the label to be displayed.\n let label = labelMap.get([isLocal, track.source].toString());\n if (label) {\n label = label.replace(PEER_NAME_PLACEHOLDER, peerName);\n } else {\n label = `${peerName} ${track.source}`;\n }\n // label = `${label}${track.degraded ? '(Degraded)' : ''}`;\n return `${label}${isLocallyMuted ? ' (Muted for you)' : ''}`;\n};\n", "import React from 'react';\nimport { useMedia } from 'react-use';\nimport { JoinForm_JoinBtnType } from '@100mslive/types-prebuilt/elements/join_form';\nimport { useRecordingStreaming } from '@100mslive/react-sdk';\nimport { RadioIcon } from '@100mslive/react-icons';\nimport { Button, config as cssConfig, Flex, Input, styled } from '../../..';\nimport { useRoomLayout } from '../../provider/roomLayoutProvider';\n// @ts-ignore: No implicit Any\nimport { PreviewSettings } from './PreviewJoin';\n\nconst PreviewForm = ({\n name,\n onChange,\n onJoin,\n enableJoin,\n cannotPublishVideo = false,\n cannotPublishAudio = false,\n}: {\n name: string;\n onChange: (name: string) => void;\n onJoin: () => void;\n enableJoin: boolean;\n cannotPublishVideo: boolean;\n cannotPublishAudio: boolean;\n}) => {\n const formSubmit = (e: React.SyntheticEvent) => {\n e.preventDefault();\n };\n const isMobile = useMedia(cssConfig.media.md);\n const { isHLSRunning } = useRecordingStreaming();\n const layout = useRoomLayout();\n const { join_form: joinForm = {} } = layout?.screens?.preview?.default?.elements || {};\n const showGoLive = joinForm?.join_btn_type === JoinForm_JoinBtnType.JOIN_BTN_TYPE_JOIN_AND_GO_LIVE && !isHLSRunning;\n\n return (\n <Form\n css={{ flexDirection: cannotPublishVideo ? 'column' : 'row', '@md': { flexDirection: 'row' } }}\n onSubmit={formSubmit}\n >\n <Flex align=\"center\" css={{ gap: '$8', w: '100%' }}>\n <Input\n required\n id=\"name\"\n css={{ w: '100%', boxSizing: 'border-box' }}\n value={name}\n onChange={e => onChange(e.target.value.trimStart())}\n placeholder=\"Enter name\"\n autoFocus\n autoComplete=\"name\"\n onKeyDown={e => {\n if (e.key === 'Enter' && name.trim().length > 0) {\n e.preventDefault();\n if (isMobile) {\n return;\n }\n onJoin();\n }\n }}\n />\n {cannotPublishAudio && cannotPublishVideo && !isMobile ? <PreviewSettings /> : null}\n </Flex>\n\n <Button type=\"submit\" icon disabled={!name || !enableJoin} onClick={onJoin}>\n {/* Conditions to show go live: The first broadcaster joins a streaming kit that is not live */}\n {showGoLive ? <RadioIcon height={18} width={18} /> : null}\n {showGoLive ? joinForm.go_live_btn_label : joinForm.join_btn_label}\n </Button>\n </Form>\n );\n};\n\nconst Form = styled('form', {\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '$8',\n mt: '$10',\n mb: '$10',\n '@md': {\n gap: '$4',\n },\n});\n\nexport default PreviewForm;\n", "import React, { useEffect, useState } from 'react';\nimport { selectIsConnectedToRoom, useHMSStore } from '@100mslive/react-sdk';\nimport { Toast as ToastPrimitive } from '../../../Toast';\nimport { Toast } from './Toast';\nimport { ToastManager } from './ToastManager';\nimport { MAX_TOASTS } from '../../common/constants';\n\nexport const ToastContainer = () => {\n const isConnected = useHMSStore(selectIsConnectedToRoom);\n const [toasts, setToast] = useState([]);\n useEffect(() => {\n ToastManager.addListener(setToast);\n return () => {\n ToastManager.removeListener(setToast);\n };\n }, []);\n return (\n <ToastPrimitive.Provider swipeDirection=\"left\" duration={3000}>\n {toasts.slice(0, MAX_TOASTS).map(toast => {\n return <Toast key={toast.id} {...toast} onOpenChange={value => !value && ToastManager.removeToast(toast.id)} />;\n })}\n <ToastPrimitive.Viewport\n css={{\n position: 'absolute',\n ...(!isConnected ? {} : { bottom: '$24' }),\n }}\n />\n </ToastPrimitive.Provider>\n );\n};\n", "import React from 'react';\nimport { Toast as ToastPrimitive } from '../../../Toast';\n\nexport const Toast = ({ title, description, close = true, open, duration, onOpenChange, icon, ...props }) => {\n return (\n <ToastPrimitive.HMSToast\n title={title}\n description={description}\n open={open}\n isClosable={close}\n onOpenChange={onOpenChange}\n duration={!close ? 600000 : duration}\n icon={icon}\n {...props}\n />\n );\n};\n", "import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport {\n selectLocalPeerID,\n selectPeerNameByID,\n useCustomEvent,\n useHMSStore,\n useHMSVanillaStore,\n} from '@100mslive/react-sdk';\nimport { Box, Flex } from '../../Layout';\nimport { Text } from '../../Text';\nimport { config as cssConfig, keyframes } from '../../Theme';\nimport { EMOJI_REACTION_TYPE } from '../common/constants';\n\nlet emojiCount = 1;\n\nconst flyAndFade = keyframes({\n '20%': { opacity: 1 },\n '100%': { bottom: '60%', opacity: 0 },\n});\n\nconst wiggleLeftRight = keyframes({\n '0%': { marginLeft: '-50px' },\n '100%': { marginLeft: '50px' },\n});\n\nconst wiggleRightLeft = keyframes({\n '0%': { marginLeft: '50px' },\n '100%': { marginLeft: '-50px' },\n});\n\nconst getStartingPoints = isMobile => {\n let arr = [];\n const min = 5;\n const max = isMobile ? 30 : 20;\n const inc = isMobile ? 8 : 5;\n for (let i = min; i <= max; i += inc) {\n arr.push(i);\n }\n return arr;\n};\n\nexport function FlyingEmoji() {\n const localPeerId = useHMSStore(selectLocalPeerID);\n const vanillaStore = useHMSVanillaStore();\n const [emojis, setEmojis] = useState([]);\n const isMobile = useMedia(cssConfig.media.md);\n\n const startingPoints = useMemo(() => getStartingPoints(isMobile), [isMobile]);\n\n const showFlyingEmoji = useCallback(\n ({ emojiId, senderId }) => {\n if (!emojiId || !senderId || document.hidden) {\n return;\n }\n const senderPeerName = vanillaStore.getState(selectPeerNameByID(senderId));\n const nameToShow = localPeerId === senderId ? 'You' : senderPeerName;\n const startingPoint = startingPoints[emojiCount % startingPoints.length];\n const id = emojiCount++;\n\n setEmojis(emojis => {\n return [\n ...emojis,\n {\n id: id,\n emojiId: emojiId,\n senderName: nameToShow,\n startingPoint: `${startingPoint}%`,\n wiggleType: Math.random() < 0.5 ? 0 : 1,\n },\n ];\n });\n },\n [localPeerId, vanillaStore, startingPoints],\n );\n\n useCustomEvent({\n type: EMOJI_REACTION_TYPE,\n onEvent: showFlyingEmoji,\n });\n\n useEffect(() => {\n window.showFlyingEmoji = showFlyingEmoji;\n }, [showFlyingEmoji]);\n\n return (\n <Box\n css={{\n position: 'absolute',\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n overflow: 'hidden',\n pointerEvents: 'none',\n userSelect: 'none',\n zIndex: 999,\n }}\n >\n {emojis.map(emoji => {\n return (\n <Flex\n key={emoji.id}\n css={{\n left: emoji.startingPoint,\n flexDirection: 'column',\n alignItems: 'center',\n position: 'absolute',\n bottom: 0,\n animation: `${flyAndFade()} 5s forwards, ${\n emoji.wiggleType === 0 ? wiggleLeftRight() : wiggleRightLeft()\n } 1s ease-in-out infinite alternate`,\n }}\n onAnimationEnd={() => {\n setEmojis(emojis.filter(item => item.id !== emoji.id));\n }}\n >\n <Box>\n <em-emoji id={emoji.emojiId} size=\"48px\" set=\"apple\"></em-emoji>\n </Box>\n <Box\n css={{\n width: 'fit-content',\n padding: '$2 $4',\n background: '$surface_bright',\n borderRadius: '$1',\n }}\n >\n <Text\n css={{\n fontSize: '$space$6',\n lineHeight: '$xs',\n color: '$on_surface_high',\n }}\n >\n {emoji.senderName}\n </Text>\n </Box>\n </Flex>\n );\n })}\n </Box>\n );\n}\n", "import React, { useCallback } from 'react';\nimport { useCustomEvent, useHMSActions } from '@100mslive/react-sdk';\nimport { REMOTE_STOP_SCREENSHARE_TYPE } from '../common/constants';\n\nexport function RemoteStopScreenshare() {\n const actions = useHMSActions();\n\n const onRemoteStopScreenshare = useCallback(async () => {\n await actions.setScreenShareEnabled(false);\n }, [actions]);\n\n useCustomEvent({\n type: REMOTE_STOP_SCREENSHARE_TYPE,\n onEvent: onRemoteStopScreenshare,\n });\n\n return <></>;\n}\n", "import { useCallback, useEffect, useRef } from 'react';\nimport {\n HMSException,\n selectIsConnectedToRoom,\n selectPermissions,\n useHMSActions,\n useHMSStore,\n useRecordingStreaming,\n} from '@100mslive/react-sdk';\n// @ts-ignore: No implicit Any\nimport { useSetAppDataByKey } from '../AppData/useUISettings';\n// @ts-ignore: No implicit Any\nimport { useShowStreamingUI } from '../../common/hooks';\n// @ts-ignore: No implicit Any\nimport { APP_DATA } from '../../common/constants';\n\nexport const useAutoStartStreaming = () => {\n const [isHLSStarted, setHLSStarted] = useSetAppDataByKey(APP_DATA.hlsStarted);\n const permissions = useHMSStore(selectPermissions);\n const showStreamingUI = useShowStreamingUI();\n const hmsActions = useHMSActions();\n const isConnected = useHMSStore(selectIsConnectedToRoom);\n const { isHLSRunning } = useRecordingStreaming();\n const streamStartedRef = useRef(false);\n\n const startHLS = useCallback(async () => {\n try {\n if (isHLSStarted || !showStreamingUI || isHLSRunning) {\n return;\n }\n setHLSStarted(true);\n streamStartedRef.current = true;\n await hmsActions.startHLSStreaming();\n } catch (error) {\n if ((error as HMSException).message?.includes('beam already started')) {\n return;\n }\n streamStartedRef.current = false;\n setHLSStarted(false);\n }\n }, [hmsActions, isHLSRunning, isHLSStarted, setHLSStarted, showStreamingUI]);\n\n useEffect(() => {\n if (!isHLSStarted && !isHLSRunning) {\n streamStartedRef.current = false;\n }\n }, [isHLSStarted, isHLSRunning]);\n\n useEffect(() => {\n if (!isConnected || streamStartedRef.current || !permissions?.hlsStreaming) {\n return;\n }\n // Is a streaming kit and broadcaster joins\n startHLS();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isConnected]);\n};\n", "// @ts-check\nimport { useEffect, useRef, useState } from 'react';\nimport { JoinForm_JoinBtnType } from '@100mslive/types-prebuilt/elements/join_form';\nimport {\n selectAvailableRoleNames,\n selectIsConnectedToRoom,\n selectPeerCount,\n selectPeerMetadata,\n selectPeers,\n selectRemotePeers,\n useHMSStore,\n useHMSVanillaStore,\n} from '@100mslive/react-sdk';\nimport { useRoomLayout } from '../provider/roomLayoutProvider';\n\n/**\n * Hook to execute a callback when alone in room(after a certain 5d of time)\n * @param {number} thresholdMs The threshold(in ms) after which the callback is executed,\n * starting from the instant when alone in room.\n * note: the cb is not called when another peer joins during this period.\n */\nexport const useWhenAloneInRoom = (thresholdMs = 5 * 60 * 1000) => {\n const isConnected = useHMSStore(selectIsConnectedToRoom);\n const peerCount = useHMSStore(selectPeerCount);\n const [aloneForLong, setAloneForLong] = useState(false);\n const cbTimeout = useRef(null);\n const alone = isConnected && peerCount === 1;\n\n useEffect(() => {\n if (alone && !cbTimeout.current) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n cbTimeout.current = setTimeout(() => {\n setAloneForLong(true);\n }, thresholdMs);\n } else if (!alone) {\n cbTimeout.current && clearTimeout(cbTimeout.current);\n cbTimeout.current = null;\n setAloneForLong(false);\n }\n }, [alone, thresholdMs]);\n\n useEffect(() => {\n return () => {\n if (cbTimeout.current) {\n clearTimeout(cbTimeout.current);\n }\n };\n }, []);\n\n return { alone, aloneForLong };\n};\n\nexport const useFilteredRoles = () => {\n const roles = useHMSStore(selectAvailableRoleNames);\n return roles;\n};\n\nexport const useShowStreamingUI = () => {\n const layout = useRoomLayout();\n const { join_form } = layout?.screens?.preview?.default?.elements || {};\n return join_form?.join_btn_type === JoinForm_JoinBtnType.JOIN_BTN_TYPE_JOIN_AND_GO_LIVE;\n};\n\n// The search results should not have role name matches\nexport const useParticipants = params => {\n const isConnected = useHMSStore(selectIsConnectedToRoom);\n const peerCount = useHMSStore(selectPeerCount);\n const availableRoles = useHMSStore(selectAvailableRoleNames);\n let participantList = useHMSStore(isConnected ? selectPeers : selectRemotePeers);\n const rolesWithParticipants = Array.from(new Set(participantList.map(peer => peer.roleName)));\n const vanillaStore = useHMSVanillaStore();\n if (params?.metadata?.isHandRaised) {\n participantList = participantList.filter(peer => {\n return vanillaStore.getState(selectPeerMetadata(peer.id)).isHandRaised;\n });\n }\n if (params?.role && availableRoles.includes(params.role)) {\n participantList = participantList.filter(peer => peer.roleName === params.role);\n }\n if (params?.search) {\n const search = params.search;\n // Removed peer.roleName?.toLowerCase().includes(search)\n participantList = participantList.filter(peer => peer.name.toLowerCase().includes(search));\n }\n return { participants: participantList, isConnected, peerCount, rolesWithParticipants };\n};\n", "import { Indicator, Root } from '@radix-ui/react-progress';\nimport { styled } from '../Theme';\n\nconst StyledIndicator = styled(Indicator, { h: '$4', backgroundColor: '$primary_default' });\n\nconst StyledRoot = styled(Root, {\n w: '100%',\n h: '$4',\n borderRadius: '$round',\n backgroundColor: '$secondary_dim',\n overflow: 'hidden',\n});\n\nexport const Progress = {\n Root: StyledRoot,\n Content: StyledIndicator,\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "useEffect", "useState", "ThemeTypes", "useState", "isBrowser", "updatedTheme", "useEffect", "React", "_a", "_b", "React", "_a", "_b", "_a", "_b", "css", "React", "React", "React", "React", "Root", "_a", "React", "React", "Root", "Track", "Range", "Thumb", "_a", "_b", "React", "Root", "styled", "React", "React", "styled", "Root", "React", "_a", "_b", "css", "React", "Root", "Overlay", "Root", "Container", "Root", "Content", "Portal", "Root", "Trigger", "Root", "Trigger", "Content", "Portal", "React", "_a", "_b", "React", "Root", "Flex", "useCallback", "useRef", "theme", "useCallback", "useRef", "Arrow", "Close", "Content", "Root", "Portal", "Trigger", "StyledContent", "Content", "Arrow", "StyledTrigger", "Trigger", "Popover", "Root", "Portal", "Close", "React", "Root", "Label", "_a", "_b", "React", "Label", "React", "CrossIcon", "css", "React", "CrossIcon", "_a", "_b", "React", "StyledTrigger", "StyledContent", "React", "_a", "_b", "css", "Root", "Select", "StyledTrigger", "StyledContent", "StyledItem", "Select", "StyledTrigger", "StyledContent", "React", "React", "React", "_a", "_b", "Icon", "React", "Content", "Root", "Trigger", "Root", "Trigger", "Content", "React", "Suspense", "useEffect", "useRef", "useParams", "selectIsConnectedToRoom", "useHMSActions", "useHMSStore", "React", "useEffect", "useHMSActions", "useHMSStore", "_a", "roleName", "useState", "useCallback", "useHMSStore", "_a", "_b", "useHMSStore", "useCallback", "useCallback", "selectAppData", "useHMSActions", "useHMSStore", "useHMSVanillaStore", "useHMSStore", "selectAppData", "useHMSStore", "selectAppData", "_a", "_b", "useHMSActions", "useCallback", "value", "useHMSVanillaStore", "React", "useHMSActions", "useHMSStore", "useEffect", "appData", "config", "React", "useEffect", "useState", "useHMSActions", "React", "React", "useRef", "CrossIcon", "_a", "_b", "Icon", "css", "React", "CrossIcon", "Label", "_a", "_b", "useRef", "React", "React", "useHMSActions", "useState", "useEffect", "error", "Link", "React", "CopyIcon", "React", "CopyIcon", "React", "css", "React", "React", "useEffect", "useEffect", "useHMSStore", "useHMSStore", "useEffect", "useEffect", "_a", "React", "useEffect", "selectAppData", "useHMSActions", "useHMSVanillaStore", "selectAppData", "useHMSVanillaStore", "useHMSActions", "useEffect", "React", "useCallback", "useEffect", "useNavigate", "useParams", "HMSNotificationTypes", "HMSRoomState", "selectRoomState", "useHMSNotifications", "useHMSStore", "useHMSVanillaStore", "React", "useCallback", "useEffect", "useRef", "useState", "useState", "useRef", "useCallback", "_a", "layout", "useEffect", "_b", "React", "_a", "React", "useCallback", "useHMSActions", "useHMSStore", "React", "_a", "_b", "useHMSActions", "useHMSStore", "useCallback", "React", "React", "React", "useEffect", "useState", "useState", "useEffect", "React", "useEffect", "useEffect", "React", "useEffect", "useState", "HMSNotificationTypes", "useHMSNotifications", "useHMSNotifications", "HMSNotificationTypes", "useState", "useEffect", "_a", "_b", "React", "React", "useEffect", "useState", "HMSNotificationTypes", "useHMSNotifications", "notificationTypes", "HMSNotificationTypes", "useHMSNotifications", "useState", "useEffect", "_a", "React", "React", "useEffect", "useState", "HMSNotificationTypes", "useHMSActions", "useHMSNotifications", "useHMSActions", "useState", "useHMSNotifications", "HMSNotificationTypes", "useEffect", "React", "useEffect", "HMSNotificationTypes", "useHMSNotifications", "notificationTypes", "React", "useEffect", "useState", "HMSNotificationTypes", "useHMSActions", "useHMSNotifications", "MicOnIcon", "useHMSActions", "useHMSNotifications", "HMSNotificationTypes", "useState", "useEffect", "React", "MicOnIcon", "useCallback", "_a", "_a", "_b", "useCallback", "useHMSNotifications", "useNavigate", "useParams", "useHMSStore", "selectRoomState", "useHMSVanillaStore", "useCallback", "useEffect", "_a", "_b", "HMSNotificationTypes", "HMSRoomState", "React", "React", "useNavigate", "useParams", "React", "useMedia", "HMSRoomState", "selectRoomState", "useHMSStore", "React", "useEffect", "useState", "useHMSStore", "useHMSStore", "React", "_a", "useState", "useEffect", "React", "useCallback", "useEffect", "useRef", "useState", "useMedia", "HMSRoomState", "selectHLSState", "selectIsConnectedToRoom", "selectRoomState", "useHMSActions", "useHMSStore", "useRecordingStreaming", "CrossIcon", "React", "DialogPrimitive", "StyledContent", "React", "_a", "_b", "React", "useState", "selectLocalPeerID", "useHMSStore", "ChevronDownIcon", "ChevronUpIcon", "useCallback", "useEffect", "useMemo", "selectLocalPeerID", "useHMSStore", "useCallback", "selectHasPeerHandRaised", "useHMSActions", "useHMSStore", "useHMSVanillaStore", "useHMSActions", "useHMSStore", "useHMSVanillaStore", "selectHasPeerHandRaised", "useCallback", "useHMSStore", "selectLocalPeerID", "useMemo", "useCallback", "useEffect", "useCallback", "useHMSActions", "useHMSStore", "useHMSStore", "useHMSActions", "useCallback", "useCallback", "useHMSActions", "useHMSStore", "_a", "_b", "useState", "useHMSStore", "selectLocalPeerID", "React", "ChevronUpIcon", "ChevronDownIcon", "_a", "useRecordingStreaming", "useHMSStore", "selectHLSState", "useMedia", "useRef", "useState", "useCallback", "useEffect", "React", "useHMSActions", "Popover", "selectIsConnectedToRoom", "selectRoomState", "HMSRoomState", "CrossIcon", "React", "selectIsLocalVideoEnabled", "useHMSActions", "useHMSStore", "CheckIcon", "CrossIcon", "useHMSActions", "useHMSStore", "selectIsLocalVideoEnabled", "React", "_a", "CrossIcon", "Label", "CheckIcon", "Header", "useHMSStore", "selectRoomState", "useMedia", "HMSRoomState", "React", "useNavigate", "useParams", "React", "Header", "React", "useNavigate", "useParams", "React", "Fragment", "useCallback", "useEffect", "useState", "useMedia", "HMSRoomState", "selectIsLocalVideoEnabled", "selectRoomState", "selectVideoTrackByID", "useAVToggle", "useHMSStore", "useRecordingStreaming", "MicOffIcon", "SettingsIcon", "React", "Fragment", "DeviceType", "HMSRoomState", "selectLocalVideoTrackID", "selectRoomState", "selectVideoTrackByID", "useDevices", "useHMSActions", "useHMSStore", "CameraFlipIcon", "MicOnIcon", "React", "React", "useDevices", "videoInput", "React", "DeviceType", "audioInput", "useHMSActions", "useHMSStore", "selectLocalVideoTrackID", "selectVideoTrackByID", "selectRoomState", "Fragment", "MicOnIcon", "HMSRoomState", "CameraFlipIcon", "React", "React", "React", "React", "selectConnectionQualityByPeerID", "useHMSStore", "PoorConnectivityIcon", "theme", "_a", "useHMSStore", "selectConnectionQualityByPeerID", "theme", "React", "PoorConnectivityIcon", "React", "Wrapper", "React", "useCallback", "useEffect", "useState", "useMedia", "CrossIcon", "React", "Fragment", "useEffect", "useRef", "useState", "DeviceType", "selectIsLocalVideoEnabled", "selectLocalVideoTrackID", "selectVideoTrackByID", "useDevices", "useHMSStore", "MicOnIcon", "SpeakerIcon", "VideoOnIcon", "React", "ChevronDownIcon", "ChevronUpIcon", "React", "css", "ChevronUpIcon", "ChevronDownIcon", "_a", "useDevices", "useHMSStore", "selectLocalVideoTrackID", "selectIsLocalVideoEnabled", "selectVideoTrackByID", "React", "Fragment", "VideoOnIcon", "DeviceType", "MicOnIcon", "SpeakerIcon", "_b", "useState", "useRef", "useEffect", "React", "useCallback", "selectIsLocalVideoEnabled", "useHMSActions", "useHMSStore", "React", "React", "Label", "useHMSActions", "useHMSStore", "selectIsLocalVideoEnabled", "useCallback", "React", "React", "HandIcon", "PeopleAddIcon", "PeopleRemoveIcon", "React", "PeopleAddIcon", "PeopleRemoveIcon", "HandIcon", "React", "useMedia", "useState", "useCallback", "useEffect", "_a", "CrossIcon", "Icon", "Content", "React", "Fragment", "useCallback", "useEffect", "useMemo", "useRef", "useState", "useMedia", "selectAudioTrackByPeerID", "selectHasPeerHandRaised", "selectLocalPeerID", "selectPeerMetadata", "selectSessionStore", "selectVideoTrackByID", "selectVideoTrackByPeerID", "useHMSStore", "useHMSVanillaStore", "HandIcon", "MicOffIcon", "React", "useState", "useMedia", "selectLocalPeerID", "selectPeerByID", "selectPermissions", "selectTrackByID", "selectVideoTrackByPeerID", "useHMSStore", "useRemoteAVToggle", "CrossIcon", "VerticalMenuIcon", "React", "useState", "useMedia", "useHMSActions", "useHMSStore", "React", "ChevronLeftIcon", "CrossIcon", "React", "ChevronLeftIcon", "CrossIcon", "useHMSActions", "useHMSStore", "useState", "useMedia", "React", "React", "Fragment", "useMedia", "selectPermissions", "selectSessionStore", "selectTrackByID", "useCustomEvent", "useHMSActions", "useHMSStore", "MicOffIcon", "MicOnIcon", "PinIcon", "ShareScreenIcon", "SpeakerIcon", "VideoOffIcon", "VideoOnIcon", "useHMSActions", "useHMSStore", "selectSessionStore", "React", "PinIcon", "_a", "selectTrackByID", "Fragment", "selectPermissions", "useCustomEvent", "useMedia", "VideoOnIcon", "VideoOffIcon", "MicOnIcon", "MicOffIcon", "SpeakerIcon", "ShareScreenIcon", "useEffect", "useEffect", "_a", "_b", "useState", "theme", "useHMSStore", "selectLocalPeerID", "selectPermissions", "useRemoteAVToggle", "selectVideoTrackByPeerID", "selectTrackByID", "useMedia", "selectPeerByID", "React", "VerticalMenuIcon", "CrossIcon", "_a", "_b", "selectVideoTrackByID", "selectVideoTrackByPeerID", "useHMSStore", "useMedia", "selectAudioTrackByPeerID", "selectLocalPeerID", "useState", "selectSessionStore", "useCallback", "useRef", "useMemo", "React", "MicOffIcon", "useHMSVanillaStore", "useEffect", "selectPeerMetadata", "selectHasPeerHandRaised", "Fragment", "HandIcon", "React", "useMedia", "JoinForm_JoinBtnType", "useRecordingStreaming", "_a", "_b", "useMedia", "useRecordingStreaming", "JoinForm_JoinBtnType", "React", "React", "_a", "_b", "useRecordingStreaming", "useState", "useAVToggle", "useHMSStore", "selectRoomState", "useCallback", "selectVideoTrackByID", "useMedia", "useEffect", "HMSRoomState", "Container", "selectIsLocalVideoEnabled", "MicOffIcon", "Fragment", "SettingsIcon", "_a", "_b", "useNavigate", "useParams", "React", "React", "useEffect", "useState", "selectIsConnectedToRoom", "useHMSStore", "React", "Toast", "_a", "_b", "React", "useHMSStore", "selectIsConnectedToRoom", "useState", "useEffect", "React", "Toast", "React", "useCallback", "useEffect", "useMemo", "useState", "useMedia", "selectLocalPeerID", "selectPeerNameByID", "useCustomEvent", "useHMSStore", "useHMSVanillaStore", "useHMSStore", "selectLocalPeerID", "useHMSVanillaStore", "useState", "useMedia", "useMemo", "useCallback", "selectPeerNameByID", "emojis", "useCustomEvent", "useEffect", "React", "React", "useCallback", "useCustomEvent", "useHMSActions", "useHMSActions", "useCallback", "useCustomEvent", "React", "useCallback", "useEffect", "useRef", "selectIsConnectedToRoom", "selectPermissions", "useHMSActions", "useHMSStore", "useRecordingStreaming", "useEffect", "useRef", "useState", "JoinForm_JoinBtnType", "selectAvailableRoleNames", "selectIsConnectedToRoom", "selectPeerMetadata", "useHMSStore", "useHMSVanillaStore", "useHMSStore", "selectAvailableRoleNames", "_a", "_b", "JoinForm_JoinBtnType", "useParticipants", "selectIsConnectedToRoom", "useHMSVanillaStore", "selectPeerMetadata", "useHMSStore", "selectPermissions", "useHMSActions", "selectIsConnectedToRoom", "useRecordingStreaming", "useRef", "useCallback", "_a", "useEffect", "React", "_a", "_b", "useRef", "useEffect", "theme", "typography", "useParams", "Suspense", "useHMSStore", "selectIsConnectedToRoom", "useHMSActions", "Indicator", "Root", "Indicator", "StyledRoot", "Root"]
7
+ }