@100mslive/roomkit-react 0.3.24-alpha.0 → 0.3.24-alpha.2
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/Theme/ThemeProvider.d.ts +1 -0
- package/dist/index.cjs.css +2 -2
- package/dist/index.cjs.css.map +1 -1
- package/dist/index.cjs.js +34109 -37488
- package/dist/index.cjs.js.map +4 -4
- package/dist/index.css +2 -2
- package/dist/index.css.map +1 -1
- package/dist/index.js +36389 -73
- package/dist/index.js.map +4 -4
- package/dist/meta.cjs.json +5568 -5617
- package/dist/meta.esbuild.json +6032 -8744
- package/package.json +7 -7
- package/src/Prebuilt/App.tsx +3 -6
- package/src/Prebuilt/components/Chat/Chat.tsx +8 -12
- package/src/Prebuilt/components/Footer/WhiteboardToggle.tsx +11 -4
- package/src/Prebuilt/components/HMSVideo/HMSVideo.jsx +3 -3
- package/src/Prebuilt/components/MoreSettings/SplitComponents/DesktopOptions.tsx +3 -0
- package/src/Prebuilt/components/Preview/PreviewJoin.tsx +3 -2
- package/src/Prebuilt/components/VideoLayouts/GridLayout.tsx +30 -43
- package/src/Prebuilt/layouts/HLSView.jsx +2 -3
- package/src/Prebuilt/layouts/SidePane.tsx +6 -12
- package/src/Prebuilt/layouts/VideoStreamingSection.tsx +64 -69
- package/src/Theme/ThemeProvider.tsx +9 -3
- package/dist/ConferenceScreen-CLPW3BGP.css +0 -2780
- package/dist/ConferenceScreen-CLPW3BGP.css.map +0 -7
- package/dist/ConferenceScreen-M6RBPTAJ.js +0 -1774
- package/dist/ConferenceScreen-M6RBPTAJ.js.map +0 -7
- package/dist/EmbedView-DDSO7ZCV.js +0 -17
- package/dist/EmbedView-DDSO7ZCV.js.map +0 -7
- package/dist/EmbedView-HGIUZHKA.css +0 -2780
- package/dist/EmbedView-HGIUZHKA.css.map +0 -7
- package/dist/EmojiReaction-23JDKJD4.js +0 -11
- package/dist/EmojiReaction-23JDKJD4.js.map +0 -7
- package/dist/HLSView-OW77EAAO.css +0 -2780
- package/dist/HLSView-OW77EAAO.css.map +0 -7
- package/dist/HLSView-Q6GEB3UM.js +0 -1666
- package/dist/HLSView-Q6GEB3UM.js.map +0 -7
- package/dist/LeaveScreen-BYTE73MT.js +0 -556
- package/dist/LeaveScreen-BYTE73MT.js.map +0 -7
- package/dist/LeaveScreen-P7AATEIF.css +0 -2780
- package/dist/LeaveScreen-P7AATEIF.css.map +0 -7
- package/dist/MoreSettings-LV5X2U6K.css +0 -2780
- package/dist/MoreSettings-LV5X2U6K.css.map +0 -7
- package/dist/MoreSettings-WSHMMNOC.js +0 -16
- package/dist/MoreSettings-WSHMMNOC.js.map +0 -7
- package/dist/PDFView-RIPRIIH6.css +0 -2780
- package/dist/PDFView-RIPRIIH6.css.map +0 -7
- package/dist/PDFView-ZFSG2ESE.js +0 -84
- package/dist/PDFView-ZFSG2ESE.js.map +0 -7
- package/dist/Polls-QWW5LTTB.js +0 -1584
- package/dist/Polls-QWW5LTTB.js.map +0 -7
- package/dist/Polls-ULYGUPPF.css +0 -2780
- package/dist/Polls-ULYGUPPF.css.map +0 -7
- package/dist/RaiseHand-K7NFLH7H.js +0 -10
- package/dist/RaiseHand-K7NFLH7H.js.map +0 -7
- package/dist/RoleProminence-235AFT7F.js +0 -116
- package/dist/RoleProminence-235AFT7F.js.map +0 -7
- package/dist/RoleProminence-6XN3POS5.css +0 -2780
- package/dist/RoleProminence-6XN3POS5.css.map +0 -7
- package/dist/RoomDetailsPane-O5TFMTPI.css +0 -2780
- package/dist/RoomDetailsPane-O5TFMTPI.css.map +0 -7
- package/dist/RoomDetailsPane-RF3D3TDR.js +0 -53
- package/dist/RoomDetailsPane-RF3D3TDR.js.map +0 -7
- package/dist/ScreenshareLayout-KNEB3AJJ.css +0 -2780
- package/dist/ScreenshareLayout-KNEB3AJJ.css.map +0 -7
- package/dist/ScreenshareLayout-PSQMS3NC.js +0 -358
- package/dist/ScreenshareLayout-PSQMS3NC.js.map +0 -7
- package/dist/SidePaneTabs-I6DECE5R.css +0 -2780
- package/dist/SidePaneTabs-I6DECE5R.css.map +0 -7
- package/dist/SidePaneTabs-NXHBI2JB.js +0 -1354
- package/dist/SidePaneTabs-NXHBI2JB.js.map +0 -7
- package/dist/VBPicker-2CQ3IIO7.js +0 -322
- package/dist/VBPicker-2CQ3IIO7.js.map +0 -7
- package/dist/VBPicker-DCNYGO23.css +0 -2780
- package/dist/VBPicker-DCNYGO23.css.map +0 -7
- package/dist/WaitingView-NZIUOXBI.js +0 -10
- package/dist/WaitingView-NZIUOXBI.js.map +0 -7
- package/dist/WhiteboardLayout-4YLFM3EY.js +0 -96
- package/dist/WhiteboardLayout-4YLFM3EY.js.map +0 -7
- package/dist/WhiteboardLayout-JUOBDFKY.css +0 -2780
- package/dist/WhiteboardLayout-JUOBDFKY.css.map +0 -7
- package/dist/chunk-3C7IESSI.js +0 -254
- package/dist/chunk-3C7IESSI.js.map +0 -7
- package/dist/chunk-7FD3VT6Q.js +0 -114
- package/dist/chunk-7FD3VT6Q.js.map +0 -7
- package/dist/chunk-AHI4HCY3.js +0 -62
- package/dist/chunk-AHI4HCY3.js.map +0 -7
- package/dist/chunk-BGSYLCVD.js +0 -6337
- package/dist/chunk-BGSYLCVD.js.map +0 -7
- package/dist/chunk-DANANDDE.js +0 -418
- package/dist/chunk-DANANDDE.js.map +0 -7
- package/dist/chunk-ETRNLEWQ.js +0 -2658
- package/dist/chunk-ETRNLEWQ.js.map +0 -7
- package/dist/chunk-EWPHJFZJ.js +0 -487
- package/dist/chunk-EWPHJFZJ.js.map +0 -7
- package/dist/chunk-F63YJBI4.js +0 -98
- package/dist/chunk-F63YJBI4.js.map +0 -7
- package/dist/chunk-GLAJUP3O.js +0 -576
- package/dist/chunk-GLAJUP3O.js.map +0 -7
- package/dist/chunk-GOXRTCTY.js +0 -90
- package/dist/chunk-GOXRTCTY.js.map +0 -7
- package/dist/chunk-HMCBZI3A.js +0 -59
- package/dist/chunk-HMCBZI3A.js.map +0 -7
- package/dist/chunk-HVYTC3PX.js +0 -171
- package/dist/chunk-HVYTC3PX.js.map +0 -7
- package/dist/chunk-LJVP6AWF.js +0 -262
- package/dist/chunk-LJVP6AWF.js.map +0 -7
- package/dist/chunk-LXJGCRKM.js +0 -30
- package/dist/chunk-LXJGCRKM.js.map +0 -7
- package/dist/chunk-MG3UGW66.js +0 -16800
- package/dist/chunk-MG3UGW66.js.map +0 -7
- package/dist/chunk-MUKUP7JU.js +0 -161
- package/dist/chunk-MUKUP7JU.js.map +0 -7
- package/dist/chunk-OV6MVDCL.js +0 -41
- package/dist/chunk-OV6MVDCL.js.map +0 -7
- package/dist/chunk-P6NV2XO4.js +0 -178
- package/dist/chunk-P6NV2XO4.js.map +0 -7
- package/dist/chunk-REL3HBSD.js +0 -71
- package/dist/chunk-REL3HBSD.js.map +0 -7
- package/dist/chunk-U4SQBXPZ.js +0 -830
- package/dist/chunk-U4SQBXPZ.js.map +0 -7
- package/dist/chunk-YEL5ZTFU.js +0 -136
- package/dist/chunk-YEL5ZTFU.js.map +0 -7
@@ -1,7 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"version": 3,
|
3
|
-
"sources": ["../src/Prebuilt/components/SidePaneTabs.tsx", "../src/Prebuilt/components/Chat/Chat.tsx", "../src/Prebuilt/components/Chat/ChatFooter.tsx", "../src/Prebuilt/components/Chat/ChatSelectorContainer.tsx", "../src/Prebuilt/components/Chat/ChatSelector.tsx", "../src/Prebuilt/components/AppData/useChatState.js", "../src/Prebuilt/components/Chat/useEmojiPickerStyles.js", "../src/Prebuilt/components/Chat/ChatStates.tsx", "../src/Prebuilt/components/Chat/PinnedMessage.tsx", "../src/Prebuilt/components/Chat/ArrowNavigation.tsx", "../src/Prebuilt/components/Chat/StickIndicator.tsx", "../src/Prebuilt/components/Footer/PaginatedParticipants.tsx", "../src/Prebuilt/components/ChatSettings.tsx"],
|
4
|
-
"sourcesContent": ["import React, { useEffect, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport { DefaultConferencingScreen_Elements } from '@100mslive/types-prebuilt';\nimport { match } from 'ts-pattern';\nimport { selectPeerCount, useHMSStore } from '@100mslive/react-sdk';\nimport { CrossIcon } from '@100mslive/react-icons';\nimport { Chat } from './Chat/Chat';\nimport { PaginatedParticipants } from './Footer/PaginatedParticipants';\nimport { ParticipantList } from './Footer/ParticipantList';\nimport { Box, config as cssConfig, Flex, IconButton, Tabs, Text } from '../..';\nimport { Tooltip } from '../../Tooltip';\nimport { ChatSettings } from './ChatSettings';\nimport { useRoomLayoutConferencingScreen } from '../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\n// @ts-ignore: No implicit Any\nimport { useIsSidepaneTypeOpen, useSidepaneReset, useSidepaneToggle } from './AppData/useSidepane';\n// @ts-ignore: No implicit Any\nimport { getFormattedCount } from '../common/utils';\nimport { SIDE_PANE_OPTIONS } from '../common/constants';\n\nconst tabTriggerCSS = {\n color: '$on_surface_low',\n p: '$4',\n fontWeight: '$semiBold',\n fontSize: '$sm',\n w: '100%',\n justifyContent: 'center',\n '&[data-state=\"active\"]': {\n color: '$on_surface_high',\n },\n};\n\nconst ParticipantCount = ({ count }: { count: number }) => {\n return count < 1000 ? (\n <span>({count})</span>\n ) : (\n <Tooltip title={count}>\n <span>({getFormattedCount(count)})</span>\n </Tooltip>\n );\n};\n\nexport const SidePaneTabs = React.memo<{\n active: 'Participants | Chat';\n hideTab?: boolean;\n}>(({ active = SIDE_PANE_OPTIONS.CHAT, hideTab = false }) => {\n const toggleChat = useSidepaneToggle(SIDE_PANE_OPTIONS.CHAT);\n const toggleParticipants = useSidepaneToggle(SIDE_PANE_OPTIONS.PARTICIPANTS);\n const resetSidePane = useSidepaneReset();\n const [activeTab, setActiveTab] = useState(active);\n const [activeRole, setActiveRole] = useState('');\n const peerCount = useHMSStore(selectPeerCount);\n const { elements, screenType } = useRoomLayoutConferencingScreen();\n const chat_title = elements?.chat?.chat_title || 'Chat';\n const showChat = !!elements?.chat;\n const showParticipants = !!elements?.participant_list;\n const hideTabs = !(showChat && showParticipants) || hideTab;\n const isMobile = useMedia(cssConfig.media.md);\n const isOverlayChat = !!elements?.chat?.is_overlay && isMobile;\n const { off_stage_roles = [] } = (elements as DefaultConferencingScreen_Elements)?.on_stage_exp || {};\n const isChatOpen = useIsSidepaneTypeOpen(SIDE_PANE_OPTIONS.CHAT);\n const showChatSettings = showChat && isChatOpen && (!isMobile || !isOverlayChat);\n\n useEffect(() => {\n match({ activeTab, showChat, showParticipants })\n .with({ activeTab: SIDE_PANE_OPTIONS.CHAT, showChat: false, showParticipants: true }, () => {\n setActiveTab(SIDE_PANE_OPTIONS.PARTICIPANTS);\n })\n .with({ activeTab: SIDE_PANE_OPTIONS.PARTICIPANTS, showChat: true, showParticipants: false }, () => {\n setActiveTab(SIDE_PANE_OPTIONS.CHAT);\n })\n .with({ showChat: false, showParticipants: false }, () => {\n resetSidePane();\n });\n }, [showChat, activeTab, showParticipants, resetSidePane]);\n\n useEffect(() => {\n setActiveTab(active);\n }, [active]);\n\n if (activeRole) {\n return (\n <Flex\n direction=\"column\"\n css={{\n color: '$on_primary_high',\n h: '100%',\n transition: 'margin 0.3s ease-in-out',\n position: 'relative',\n }}\n >\n <Box css={{ position: 'absolute', left: 0, top: 0, size: '100%', zIndex: 21, bg: '$surface_dim' }}>\n <PaginatedParticipants roleName={activeRole} onBack={() => setActiveRole('')} />\n </Box>\n </Flex>\n );\n }\n\n return (\n <Flex\n direction=\"column\"\n css={{\n color: '$on_primary_high',\n h: '100%',\n transition: 'margin 0.3s ease-in-out',\n }}\n >\n {match({ isOverlayChat, isChatOpen, showChat, hideTabs })\n .with({ isOverlayChat: true, isChatOpen: true, showChat: true }, () => <Chat />)\n .with({ hideTabs: true }, () => {\n return (\n <>\n <Flex justify=\"between\" css={{ w: '100%', '&:empty': { display: 'none' } }}>\n <Text\n variant=\"sm\"\n css={{\n fontWeight: '$semiBold',\n p: '$4',\n c: '$on_surface_high',\n pr: '$12',\n '&:empty': { display: 'none' },\n }}\n >\n {activeTab === SIDE_PANE_OPTIONS.CHAT ? (\n screenType !== 'hls_live_streaming' && chat_title\n ) : (\n <span>\n Participants \n <ParticipantCount count={peerCount} />\n </span>\n )}\n </Text>\n <Flex>\n {showChatSettings ? <ChatSettings /> : null}\n {isOverlayChat && isChatOpen ? null : (\n <IconButton\n css={{\n my: '$1',\n color: '$on_surface_medium',\n '&:hover': { color: '$on_surface_high' },\n '&:empty': { display: 'none' },\n }}\n onClick={e => {\n e.stopPropagation();\n if (activeTab === SIDE_PANE_OPTIONS.CHAT) {\n toggleChat();\n } else {\n toggleParticipants();\n }\n }}\n data-testid=\"close_chat\"\n >\n {screenType === 'hls_live_streaming' && isChatOpen ? null : <CrossIcon />}\n </IconButton>\n )}\n </Flex>\n </Flex>\n {activeTab === SIDE_PANE_OPTIONS.CHAT ? (\n <Chat />\n ) : (\n <ParticipantList offStageRoles={off_stage_roles} onActive={setActiveRole} />\n )}\n </>\n );\n })\n .otherwise(() => {\n return (\n <Tabs.Root\n value={activeTab}\n onValueChange={setActiveTab}\n css={{\n flexDirection: 'column',\n size: '100%',\n }}\n >\n <Flex css={{ w: '100%' }}>\n <Tabs.List css={{ flexGrow: 1, borderRadius: '$2', bg: '$surface_default' }}>\n <Tabs.Trigger value={SIDE_PANE_OPTIONS.CHAT} onClick={toggleChat} css={tabTriggerCSS}>\n {chat_title}\n </Tabs.Trigger>\n <Tabs.Trigger value={SIDE_PANE_OPTIONS.PARTICIPANTS} onClick={toggleParticipants} css={tabTriggerCSS}>\n Participants \n <ParticipantCount count={peerCount} />\n </Tabs.Trigger>\n </Tabs.List>\n {showChatSettings ? <ChatSettings /> : null}\n {isOverlayChat && isChatOpen ? null : (\n <IconButton\n css={{ my: '$1', color: '$on_surface_medium', '&:hover': { color: '$on_surface_high' } }}\n onClick={e => {\n e.stopPropagation();\n if (activeTab === SIDE_PANE_OPTIONS.CHAT) {\n toggleChat();\n } else {\n toggleParticipants();\n }\n }}\n data-testid=\"close_chat\"\n >\n <CrossIcon />\n </IconButton>\n )}\n </Flex>\n <Tabs.Content value={SIDE_PANE_OPTIONS.PARTICIPANTS} css={{ p: 0 }}>\n <ParticipantList offStageRoles={off_stage_roles} onActive={setActiveRole} />\n </Tabs.Content>\n <Tabs.Content value={SIDE_PANE_OPTIONS.CHAT} css={{ p: 0 }}>\n <Chat />\n </Tabs.Content>\n </Tabs.Root>\n );\n })}\n </Flex>\n );\n});\n", "import React, { MutableRefObject, Suspense, useCallback, useRef } from 'react';\nimport { useMedia } from 'react-use';\nimport { VariableSizeList } from 'react-window';\nimport { selectSessionStore, selectUnreadHMSMessagesCount } from '@100mslive/hms-video-store';\nimport { match } from 'ts-pattern';\nimport { selectHMSMessagesCount, useHMSActions, useHMSStore, useHMSVanillaStore } from '@100mslive/react-sdk';\nimport { ChevronDownIcon } from '@100mslive/react-icons';\nimport { Button } from '../../../Button';\nimport { Box, Flex } from '../../../Layout';\nimport { config as cssConfig } from '../../../Theme';\nimport { ChatBody } from './ChatBody';\nimport { ChatFooter } from './ChatFooter';\nimport { ChatBlocked, ChatPaused } from './ChatStates';\nimport { PinnedMessage } from './PinnedMessage';\nimport { useRoomLayoutConferencingScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\nimport { useSidepaneResetOnLayoutUpdate } from '../AppData/useSidepaneResetOnLayoutUpdate';\nimport { useIsPeerBlacklisted } from '../hooks/useChatBlacklist';\nimport { useLandscapeHLSStream, useMobileHLSStream } from '../../common/hooks';\nimport { SESSION_STORE_KEY, SIDE_PANE_OPTIONS } from '../../common/constants';\nconst MoreSettings = React.lazy(() =>\n import('../MoreSettings/MoreSettings').then(module => ({ default: module.MoreSettings })),\n);\nconst RaiseHand = React.lazy(() => import('../RaiseHand').then(module => ({ default: module.RaiseHand })));\n// @ts-ignore: No implicit any\nconst EmojiReaction = React.lazy(() => import('../EmojiReaction').then(module => ({ default: module.EmojiReaction })));\n\nexport const Chat = () => {\n const { elements, screenType } = useRoomLayoutConferencingScreen();\n const listRef = useRef<VariableSizeList | null>(null);\n const hmsActions = useHMSActions();\n const vanillaStore = useHMSVanillaStore();\n const { enabled: isChatEnabled = true } = useHMSStore(selectSessionStore(SESSION_STORE_KEY.CHAT_STATE)) || {};\n const isMobile = useMedia(cssConfig.media.md);\n const isMobileHLSStream = useMobileHLSStream();\n const isLandscapeStream = useLandscapeHLSStream();\n useSidepaneResetOnLayoutUpdate('chat', SIDE_PANE_OPTIONS.CHAT);\n const isLocalPeerBlacklisted = useIsPeerBlacklisted({ local: true });\n\n const scrollToBottom = useCallback(\n (unreadCount = 0) => {\n if (listRef.current && listRef.current.scrollToItem && unreadCount > 0) {\n const messagesCount = vanillaStore.getState(selectHMSMessagesCount);\n listRef.current?.scrollToItem(messagesCount, 'end');\n requestAnimationFrame(() => {\n listRef.current?.scrollToItem(messagesCount, 'end');\n });\n hmsActions.setMessageRead(true);\n }\n },\n [hmsActions, vanillaStore],\n );\n\n const streaming = isMobileHLSStream || isLandscapeStream;\n\n return (\n <Flex\n direction=\"column\"\n justify=\"end\"\n css={{\n size: '100%',\n gap: '$4',\n }}\n >\n {isMobile && elements?.chat?.is_overlay && !streaming ? null : <PinnedMessage />}\n <ChatBody ref={listRef} scrollToBottom={scrollToBottom} />\n <Flex align=\"center\" css={{ w: '100%', gap: '$2' }}>\n <ChatPaused />\n <ChatBlocked />\n {streaming && (!isChatEnabled || isLocalPeerBlacklisted) && (\n <Suspense fallback={<></>}>\n <RaiseHand css={{ bg: '$surface_default' }} />\n <MoreSettings elements={elements} screenType={screenType} />\n </Suspense>\n )}\n </Flex>\n {isMobile && elements?.chat?.is_overlay && !streaming ? <PinnedMessage /> : null}\n {isChatEnabled ? (\n <ChatFooter onSend={scrollToBottom}>\n <NewMessageIndicator scrollToBottom={scrollToBottom} listRef={listRef} />\n </ChatFooter>\n ) : null}\n {streaming && (\n <Box\n css={{\n position: 'absolute',\n ...match({ isLandscapeStream, isMobileHLSStream, isChatEnabled, isLocalPeerBlacklisted })\n .with(\n {\n isLandscapeStream: true,\n isChatEnabled: true,\n },\n () => ({ bottom: '$19', right: '$10' }),\n )\n .with(\n {\n isLandscapeStream: true,\n isChatEnabled: false,\n },\n () => ({ bottom: '$20', right: '$10' }),\n )\n .with(\n {\n isMobileHLSStream: true,\n isChatEnabled: false,\n },\n () => ({ bottom: '$19', right: '$8' }),\n )\n .with(\n {\n isMobileHLSStream: true,\n isChatEnabled: true,\n isLocalPeerBlacklisted: false,\n },\n () => ({ bottom: '$17', right: '$8' }),\n )\n .with(\n {\n isLandscapeStream: false,\n isChatEnabled: true,\n isLocalPeerBlacklisted: true,\n },\n () => ({ bottom: '$18', right: '$8' }),\n )\n .with(\n {\n isMobileHLSStream: true,\n isLocalPeerBlacklisted: true,\n },\n () => ({ bottom: '$20', right: '$8' }),\n )\n .otherwise(() => ({})),\n }}\n >\n <Suspense fallback={<></>}>\n <EmojiReaction />\n </Suspense>\n </Box>\n )}\n </Flex>\n );\n};\n\nconst NewMessageIndicator = ({\n scrollToBottom,\n listRef,\n}: {\n scrollToBottom: (count: number) => void;\n listRef: MutableRefObject<VariableSizeList | null>;\n}) => {\n const unreadCount = useHMSStore(selectUnreadHMSMessagesCount);\n if (!unreadCount || !listRef.current) {\n return null;\n }\n // @ts-ignore\n const outerElement = listRef.current._outerRef;\n if (\n outerElement &&\n outerElement.clientHeight + outerElement.scrollTop + outerElement.offsetTop >= outerElement.scrollHeight\n ) {\n return null;\n }\n\n return (\n <Flex\n justify=\"center\"\n css={{\n width: '100%',\n left: 0,\n bottom: '$28',\n position: 'absolute',\n }}\n >\n <Button\n variant=\"standard\"\n onClick={() => {\n scrollToBottom(unreadCount);\n }}\n icon\n css={{\n p: '$3 $4',\n pl: '$6',\n '& > svg': { ml: '$4' },\n borderRadius: '$round',\n fontSize: '$xs',\n fontWeight: '$semiBold',\n c: '$on_secondary_high',\n }}\n >\n New {unreadCount === 1 ? 'message' : 'messages'}\n <ChevronDownIcon height={16} width={16} />\n </Button>\n </Flex>\n );\n};\n", "import React, { ReactNode, useCallback, useEffect, useRef, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport data from '@emoji-mart/data/sets/14/apple.json';\nimport Picker from '@emoji-mart/react';\nimport { HMSException, selectLocalPeer, useHMSActions, useHMSStore } from '@100mslive/react-sdk';\nimport { EmojiIcon, PauseCircleIcon, SendIcon, VerticalMenuIcon } from '@100mslive/react-icons';\nimport { Box, config as cssConfig, Flex, IconButton as BaseIconButton, Popover, styled, Text } from '../../..';\nimport { IconButton } from '../../../IconButton';\nimport { MoreSettings } from '../MoreSettings/MoreSettings';\nimport { RaiseHand } from '../RaiseHand';\n// @ts-ignore: No implicit any\nimport { ToastManager } from '../Toast/ToastManager';\nimport { ChatSelectorContainer } from './ChatSelectorContainer';\nimport { useRoomLayoutConferencingScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\n// @ts-ignore: No implicit any\nimport { useChatDraftMessage } from '../AppData/useChatState';\n// @ts-ignore: No implicit any\nimport { useSetSubscribedChatSelector, useSubscribeChatSelector } from '../AppData/useUISettings';\nimport { useIsPeerBlacklisted } from '../hooks/useChatBlacklist';\n// @ts-ignore: No implicit any\nimport { useEmojiPickerStyles } from './useEmojiPickerStyles';\nimport { useDefaultChatSelection, useLandscapeHLSStream, useMobileHLSStream } from '../../common/hooks';\nimport { CHAT_MESSAGE_LIMIT } from './utils';\nimport { CHAT_SELECTOR, SESSION_STORE_KEY } from '../../common/constants';\n\nconst TextArea = styled('textarea', {\n width: '100%',\n bg: 'transparent',\n color: '$on_primary_high',\n resize: 'none',\n lineHeight: '1rem',\n position: 'relative',\n fontFamily: '$sans',\n fontSize: '100%',\n margin: 0,\n padding: 0,\n top: '$3',\n '&:focus': {\n boxShadow: 'none',\n outline: 'none',\n },\n});\n\nfunction EmojiPicker({ onSelect }: { onSelect: (emoji: any) => void }) {\n const [showEmoji, setShowEmoji] = useState(false);\n const ref = useEmojiPickerStyles(showEmoji);\n return (\n <Popover.Root open={showEmoji} onOpenChange={setShowEmoji}>\n <Popover.Trigger asChild css={{ appearance: 'none' }}>\n <BaseIconButton as=\"div\">\n <EmojiIcon />\n </BaseIconButton>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n alignOffset={-40}\n sideOffset={16}\n align=\"end\"\n css={{\n p: 0,\n }}\n >\n <Box\n css={{\n minWidth: 352,\n minHeight: 435,\n }}\n ref={ref}\n >\n <Picker onEmojiSelect={onSelect} data={data} previewPosition=\"none\" skinPosition=\"search\" />\n </Box>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n\nexport const ChatFooter = ({ onSend, children }: { onSend: (count: number) => void; children?: ReactNode }) => {\n const hmsActions = useHMSActions();\n const inputRef = useRef<HTMLTextAreaElement>(null);\n const [draftMessage, setDraftMessage] = useChatDraftMessage();\n const isMobile = useMedia(cssConfig.media.md);\n const { elements, screenType } = useRoomLayoutConferencingScreen();\n const message_placeholder = elements?.chat?.message_placeholder || 'Send a message';\n const localPeer = useHMSStore(selectLocalPeer);\n const isOverlayChat = elements?.chat?.is_overlay;\n const canDisableChat = !!elements?.chat?.real_time_controls?.can_disable_chat;\n const selectedPeer = useSubscribeChatSelector(CHAT_SELECTOR.PEER);\n const [selectedRole, setRoleSelector] = useSetSubscribedChatSelector(CHAT_SELECTOR.ROLE);\n const defaultSelection = useDefaultChatSelection();\n const selection = selectedPeer.name || selectedRole || defaultSelection;\n const isLocalPeerBlacklisted = useIsPeerBlacklisted({ local: true });\n const isMwebHLSStream = useMobileHLSStream();\n const [messageLengthExceeded, setMessageLengthExceeded] = useState(false);\n const isLandscapeHLSStream = useLandscapeHLSStream();\n\n useEffect(() => {\n if (!selectedPeer.id && !selectedRole && !['Everyone', ''].includes(defaultSelection)) {\n setRoleSelector(defaultSelection);\n } else {\n // @ts-ignore\n if (!(isMobile || isLandscapeHLSStream) && !elements?.chat?.disable_autofocus) {\n inputRef.current?.focus();\n }\n }\n }, [defaultSelection, selectedPeer, selectedRole, setRoleSelector, isMobile, isLandscapeHLSStream, elements?.chat]);\n\n const resetInputHeight = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.style.height = `${Math.max(\n 32,\n inputRef.current.value ? Math.min(inputRef.current.scrollHeight, 24 * 4) : 0,\n )}px`;\n }\n }, []);\n\n const updateInputHeight = useCallback(() => {\n if (inputRef.current) {\n inputRef.current.style.height = `${Math.max(32, Math.min(inputRef.current.scrollHeight, 24 * 4))}px`;\n }\n }, []);\n\n const sendMessage = useCallback(async () => {\n const message = inputRef?.current?.value;\n if (!message || !message.trim().length) {\n return;\n }\n try {\n if (selectedRole) {\n await hmsActions.sendGroupMessage(message, [selectedRole]);\n } else if (selectedPeer.id) {\n await hmsActions.sendDirectMessage(message, selectedPeer.id);\n } else {\n await hmsActions.sendBroadcastMessage(message);\n }\n inputRef.current.value = '';\n resetInputHeight();\n setTimeout(() => {\n onSend(1);\n }, 0);\n } catch (error) {\n const err = error as HMSException;\n ToastManager.addToast({\n title: err.message.startsWith('Invalid peer') ? `${selectedPeer.name} is not in this room` : err.message,\n });\n }\n }, [selectedRole, selectedPeer, hmsActions, onSend]);\n\n useEffect(() => {\n const messageElement = inputRef.current;\n if (messageElement) {\n messageElement.value = draftMessage;\n updateInputHeight();\n setMessageLengthExceeded(draftMessage.length > CHAT_MESSAGE_LIMIT);\n }\n }, [draftMessage]);\n\n useEffect(() => {\n const messageElement = inputRef.current;\n return () => {\n setDraftMessage(messageElement?.value || '');\n };\n }, [setDraftMessage]);\n\n if (isLocalPeerBlacklisted) {\n return null;\n }\n\n return (\n <Box css={{ position: 'relative' }}>\n <Flex>\n <ChatSelectorContainer />\n {canDisableChat && isMobile && isOverlayChat ? (\n <Flex align=\"center\" justify=\"end\" css={{ mb: '$4' }} onClick={e => e.stopPropagation()}>\n <Popover.Root>\n <Popover.Trigger asChild>\n <IconButton css={{ border: '1px solid $border_bright' }}>\n <VerticalMenuIcon height=\"16\" width=\"16\" />\n </IconButton>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n align=\"end\"\n side=\"top\"\n onClick={() => {\n const chatState = {\n enabled: false,\n updatedBy: {\n peerId: localPeer?.id,\n userId: localPeer?.customerUserId,\n userName: localPeer?.name,\n },\n updatedAt: Date.now(),\n };\n hmsActions.sessionStore.set(SESSION_STORE_KEY.CHAT_STATE, chatState);\n }}\n css={{\n backgroundColor: '$surface_default',\n display: 'flex',\n alignItems: 'center',\n gap: '$4',\n borderRadius: '$1',\n color: '$on_surface_high',\n cursor: 'pointer',\n '&:hover': { backgroundColor: '$surface_dim' },\n }}\n >\n <PauseCircleIcon />\n <Text variant=\"sm\" css={{ fontWeight: '$semiBold' }}>\n Pause Chat\n </Text>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </Flex>\n ) : null}\n </Flex>\n {selection && (\n <Flex align={inputRef.current?.scrollHeight === 32 ? 'center' : 'end'} css={{ gap: '$4', w: '100%' }}>\n <Flex\n align=\"end\"\n css={{\n bg: isOverlayChat && isMobile ? '$surface_dim' : '$surface_default',\n minHeight: '$16',\n position: 'relative',\n py: isOverlayChat && isMobile ? '$2' : '$6',\n pl: '$8',\n flexGrow: 1,\n r: '$1',\n '@md': {\n minHeight: '$14',\n boxSizing: 'border-box',\n },\n ...(isLandscapeHLSStream ? { minHeight: '$14', py: 0 } : {}),\n }}\n >\n {children}\n <TextArea\n maxLength={CHAT_MESSAGE_LIMIT + 10}\n css={{\n c: '$on_surface_high',\n '&:valid ~ .send-msg': { color: '$on_surface_high' },\n '& ~ .send-msg': { color: '$on_surface_low' },\n '&::placeholder': { color: '$on_surface_medium' },\n border: 'none',\n }}\n placeholder={message_placeholder}\n ref={inputRef}\n required\n autoFocus={!(isMobile || isLandscapeHLSStream)}\n onKeyPress={async event => {\n if (event.key === 'Enter') {\n if (!event.shiftKey && !messageLengthExceeded) {\n event.preventDefault();\n await sendMessage();\n }\n }\n }}\n autoComplete=\"off\"\n aria-autocomplete=\"none\"\n onChange={e => {\n updateInputHeight();\n setMessageLengthExceeded(e.target.value.length > CHAT_MESSAGE_LIMIT);\n }}\n onBlur={resetInputHeight}\n onPaste={e => e.stopPropagation()}\n onCut={e => e.stopPropagation()}\n onCopy={e => e.stopPropagation()}\n />\n {!isMobile && !isLandscapeHLSStream ? (\n <EmojiPicker\n onSelect={emoji => {\n if (inputRef.current) {\n inputRef.current.value += ` ${emoji.native} `;\n }\n }}\n />\n ) : null}\n <BaseIconButton\n className=\"send-msg\"\n onClick={sendMessage}\n disabled={messageLengthExceeded}\n css={{\n ml: 'auto',\n height: 'max-content',\n mr: '$4',\n '&:hover': { c: isMobile ? '' : '$on_surface_medium' },\n }}\n data-testid=\"send_msg_btn\"\n >\n <SendIcon />\n </BaseIconButton>\n </Flex>\n {(isMwebHLSStream || isLandscapeHLSStream) && (\n <>\n <Flex\n css={{\n alignItems: 'center',\n }}\n gap=\"2\"\n >\n <RaiseHand css={{ bg: '$surface_default' }} />\n <MoreSettings elements={elements} screenType={screenType} />\n </Flex>\n </>\n )}\n </Flex>\n )}\n {messageLengthExceeded && (\n <Text variant=\"xs\" css={{ color: '$alert_error_default', fontWeight: '$semiBold', mt: '$1', ml: '$7' }}>\n Message cannot exceed 2000 characters\n </Text>\n )}\n </Box>\n );\n};\n", "import React, { useState } from 'react';\nimport { useMedia } from 'react-use';\nimport { ChevronDownIcon, ChevronUpIcon, CrossIcon, GroupIcon, PersonIcon } from '@100mslive/react-icons';\nimport { Dropdown } from '../../../Dropdown';\nimport { Box, Flex } from '../../../Layout';\nimport { Sheet } from '../../../Sheet';\nimport { Text } from '../../../Text';\nimport { config as cssConfig } from '../../../Theme';\nimport { ChatSelector } from './ChatSelector';\nimport { useRoomLayoutConferencingScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\n// @ts-ignore\nimport { useSubscribeChatSelector } from '../AppData/useUISettings';\nimport { useDefaultChatSelection, useFilteredRoles } from '../../common/hooks';\nimport { CHAT_SELECTOR } from '../../common/constants';\n\nexport const ChatSelectorContainer = () => {\n const [open, setOpen] = useState(false);\n const isMobile = useMedia(cssConfig.media.md);\n const { elements } = useRoomLayoutConferencingScreen();\n const isPrivateChatEnabled = !!elements?.chat?.private_chat_enabled;\n const isPublicChatEnabled = !!elements?.chat?.public_chat_enabled;\n const roles = useFilteredRoles();\n const selectedPeer = useSubscribeChatSelector(CHAT_SELECTOR.PEER);\n const selectedRole = useSubscribeChatSelector(CHAT_SELECTOR.ROLE);\n const defaultSelection = useDefaultChatSelection();\n const selection = selectedPeer.name || selectedRole || defaultSelection;\n\n if (!(isPrivateChatEnabled || isPublicChatEnabled || roles.length > 0) && !isPrivateChatEnabled && !selection) {\n return null;\n }\n return (\n <>\n <Flex align=\"center\" css={{ mb: '$8', flex: '1 1 0', pl: '$2' }}>\n <Text variant=\"xs\" css={{ color: '$on_surface_medium' }}>\n {selection ? 'To' : 'Choose Participant'}\n </Text>\n\n {isMobile ? (\n <Flex\n align=\"center\"\n css={{ c: '$on_surface_medium', border: '1px solid $border_bright', r: '$0', p: '$1 $2', ml: '$6' }}\n gap=\"1\"\n onClick={e => {\n setOpen(value => !value);\n e.stopPropagation();\n }}\n >\n <Text\n variant=\"caption\"\n css={{\n c: '$on_surface_high',\n pr: '$2',\n display: 'flex',\n alignItems: 'center',\n gap: '$1',\n textTransform: selection !== selectedPeer.name ? 'capitalize' : undefined,\n }}\n >\n {selection === CHAT_SELECTOR.EVERYONE ? (\n <GroupIcon width={16} height={16} />\n ) : (\n <PersonIcon width={16} height={16} />\n )}\n {selection || 'Search'}\n </Text>\n {selection &&\n (open ? <ChevronUpIcon width={16} height={16} /> : <ChevronDownIcon width={16} height={16} />)}\n </Flex>\n ) : (\n <Dropdown.Root open={open} onOpenChange={value => setOpen(value)}>\n <Dropdown.Trigger\n asChild\n data-testid=\"participant_list_filter\"\n css={{\n background: '$primary_default',\n r: '$0',\n p: '$1 $2',\n ml: '$6',\n }}\n tabIndex={0}\n >\n <Flex align=\"center\" css={{ c: '$on_surface_medium' }} gap=\"1\">\n <Text\n variant=\"caption\"\n css={{\n c: '$on_surface_high',\n pr: '$2',\n display: 'flex',\n alignItems: 'center',\n gap: '$1',\n textTransform: selection !== selectedPeer.name ? 'capitalize' : undefined,\n }}\n >\n {selection === CHAT_SELECTOR.EVERYONE ? (\n <GroupIcon width={16} height={16} />\n ) : (\n <PersonIcon width={16} height={16} />\n )}\n {selection || 'Search'}\n </Text>\n {selection && (\n <ChevronDownIcon\n style={{ transform: open ? 'rotate(180deg)' : 'rotate(0deg)', transition: 'transform 150ms ease' }}\n width={12}\n height={12}\n />\n )}\n </Flex>\n </Dropdown.Trigger>\n\n <Dropdown.Content\n css={{\n w: '$64',\n overflow: 'hidden',\n maxHeight: 'unset',\n bg: '$surface_default',\n }}\n align=\"start\"\n sideOffset={8}\n >\n <ChatSelector role={selectedRole} peerId={selectedPeer.id} />\n </Dropdown.Content>\n </Dropdown.Root>\n )}\n </Flex>\n {isMobile ? (\n <Sheet.Root open={open} onOpenChange={value => setOpen(value)}>\n <Sheet.Content css={{ pt: '$8' }}>\n <Sheet.Title\n css={{\n display: 'flex',\n w: '100%',\n justifyContent: 'space-between',\n px: '$10',\n pb: '$4',\n mb: '$8',\n borderBottom: '1px solid $border_bright',\n }}\n >\n <Text css={{ color: '$on_surface_medium', fontWeight: '$semiBold' }}>Chat with</Text>\n <Sheet.Close css={{ color: '$on_surface_medium' }}>\n <CrossIcon />\n </Sheet.Close>\n </Sheet.Title>\n <Box\n onClick={() => {\n setOpen(false);\n }}\n >\n <ChatSelector role={selectedRole} peerId={selectedPeer.id} />\n </Box>\n </Sheet.Content>\n </Sheet.Root>\n ) : null}\n </>\n );\n};\n", "import React, { useMemo, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport {\n HMSPeer,\n HMSPeerType,\n selectMessagesUnreadCountByPeerID,\n selectMessagesUnreadCountByRole,\n selectRemotePeers,\n selectUnreadHMSMessagesCount,\n useHMSStore,\n} from '@100mslive/react-sdk';\nimport { CheckIcon, PeopleIcon } from '@100mslive/react-icons';\nimport { Box, CSS, Dropdown, Flex, HorizontalDivider, Text, Tooltip } from '../../..';\nimport { config as cssConfig } from '../../../Theme';\nimport { ParticipantSearch } from '../Footer/ParticipantList';\nimport { useRoomLayoutConferencingScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\n// @ts-ignore\nimport { useSetSubscribedChatSelector } from '../AppData/useUISettings';\nimport { useFilteredRoles } from '../../common/hooks';\nimport { CHAT_SELECTOR } from '../../common/constants';\n\nconst ChatDotIcon = () => {\n return <Box css={{ size: '$6', bg: '$primary_default', mx: '$2', r: '$round' }} />;\n};\n\nconst SelectorItem = ({\n value,\n active,\n onClick,\n unreadCount,\n icon = undefined,\n}: {\n value: string;\n active: boolean;\n onClick: () => void;\n unreadCount: number;\n icon?: React.JSX.Element;\n}) => {\n const isMobile = useMedia(cssConfig.media.md);\n\n const Root = !isMobile\n ? Dropdown.Item\n : ({ children, ...rest }: { children: React.ReactNode; css: CSS }) => (\n <Flex {...rest} css={{ p: '$6 $8', ...rest.css }}>\n {children}\n </Flex>\n );\n return (\n <Root\n data-testid=\"chat_members\"\n css={{ align: 'center', px: '$10', py: '$4', bg: '$surface_default' }}\n onClick={onClick}\n >\n <Text\n variant=\"sm\"\n css={{ display: 'flex', alignItems: 'center', gap: '$4', fontWeight: '$semiBold', color: '$on_surface_high' }}\n >\n {icon}\n {value}\n </Text>\n <Flex align=\"center\" css={{ ml: 'auto', color: '$on_primary_high' }}>\n {unreadCount > 0 && (\n <Tooltip title={`${unreadCount} unread`}>\n <Box css={{ mr: active ? '$3' : 0 }}>\n <ChatDotIcon />\n </Box>\n </Tooltip>\n )}\n {active && <CheckIcon width={16} height={16} />}\n </Flex>\n </Root>\n );\n};\n\nconst SelectorHeader = React.memo(\n ({ isHorizontalDivider = true, children }: { isHorizontalDivider?: boolean; children: React.ReactNode }) => {\n return (\n <Box css={{ flexShrink: 0 }}>\n {isHorizontalDivider && <HorizontalDivider space={4} />}\n <Text\n variant=\"overline\"\n css={{ p: '$4 $10', fontWeight: '$semiBold', textTransform: 'uppercase', color: '$on_surface_medium' }}\n >\n {children}\n </Text>\n </Box>\n );\n },\n);\n\nconst Everyone = React.memo(({ active }: { active: boolean }) => {\n const unreadCount: number = useHMSStore(selectUnreadHMSMessagesCount);\n const [, setPeerSelector] = useSetSubscribedChatSelector(CHAT_SELECTOR.PEER);\n const [, setRoleSelector] = useSetSubscribedChatSelector(CHAT_SELECTOR.ROLE);\n return (\n <SelectorItem\n value=\"Everyone\"\n icon={<PeopleIcon />}\n active={active}\n unreadCount={unreadCount}\n onClick={() => {\n setPeerSelector({});\n setRoleSelector('');\n }}\n />\n );\n});\n\nconst RoleItem = React.memo(({ role, active }: { role: string; active: boolean }) => {\n const unreadCount: number = useHMSStore(selectMessagesUnreadCountByRole(role));\n const [, setPeerSelector] = useSetSubscribedChatSelector(CHAT_SELECTOR.PEER);\n const [, setRoleSelector] = useSetSubscribedChatSelector(CHAT_SELECTOR.ROLE);\n return (\n <SelectorItem\n value={role}\n active={active}\n unreadCount={unreadCount}\n onClick={() => {\n setPeerSelector({});\n setRoleSelector(role);\n }}\n />\n );\n});\n\nconst PeerItem = ({ peerId, name, active }: { name: string; peerId: string; active: boolean }) => {\n const unreadCount: number = useHMSStore(selectMessagesUnreadCountByPeerID(peerId));\n const [, setPeerSelector] = useSetSubscribedChatSelector(CHAT_SELECTOR.PEER);\n const [, setRoleSelector] = useSetSubscribedChatSelector(CHAT_SELECTOR.ROLE);\n\n return (\n <SelectorItem\n value={name}\n active={active}\n unreadCount={unreadCount}\n onClick={() => {\n setPeerSelector({ id: peerId, name });\n setRoleSelector('');\n }}\n />\n );\n};\n\nconst VirtualizedSelectItemList = ({\n peers,\n selectedRole,\n selectedPeerId,\n searchValue,\n isPublicChatEnabled,\n}: {\n peers: HMSPeer[];\n selectedRole: string;\n selectedPeerId: string;\n searchValue: string;\n isPublicChatEnabled: boolean;\n}) => {\n const roles = useFilteredRoles();\n const filteredPeers = useMemo(\n () =>\n peers.filter(\n // search should be empty or search phrase should be included in name\n peer =>\n (!searchValue || peer.name.toLowerCase().includes(searchValue.toLowerCase())) &&\n peer.type !== HMSPeerType.SIP,\n ),\n [peers, searchValue],\n );\n\n const listItems = useMemo(() => {\n let selectItems: React.ReactNode[] = [];\n if (isPublicChatEnabled && !searchValue) {\n selectItems = [<Everyone active={!selectedRole && !selectedPeerId} />];\n }\n if (roles.length > 0 && !searchValue) {\n selectItems.push(<SelectorHeader isHorizontalDivider={isPublicChatEnabled}>Roles</SelectorHeader>);\n roles.forEach(userRole =>\n selectItems.push(<RoleItem key={userRole} active={selectedRole === userRole} role={userRole} />),\n );\n }\n\n if (filteredPeers.length > 0) {\n selectItems.push(\n <SelectorHeader isHorizontalDivider={isPublicChatEnabled || roles.length > 0}>Participants</SelectorHeader>,\n );\n }\n filteredPeers.forEach(peer =>\n selectItems.push(\n <PeerItem key={peer.id} name={peer.name} peerId={peer.id} active={peer.id === selectedPeerId} />,\n ),\n );\n\n return selectItems;\n }, [isPublicChatEnabled, searchValue, selectedRole, selectedPeerId, roles, filteredPeers]);\n\n return (\n <Dropdown.Group css={{ overflowY: 'auto', maxHeight: '$64', bg: '$surface_default' }}>\n {listItems.map((item, index) => (\n <Box key={index}>{item}</Box>\n ))}\n </Dropdown.Group>\n );\n};\n\nexport const ChatSelector = ({ role, peerId }: { role: string; peerId: string }) => {\n const { elements } = useRoomLayoutConferencingScreen();\n const peers = useHMSStore(selectRemotePeers);\n const [search, setSearch] = useState('');\n\n const isPrivateChatEnabled = !!elements?.chat?.private_chat_enabled;\n const isPublicChatEnabled = !!elements?.chat?.public_chat_enabled;\n\n return (\n <>\n {peers.length > 0 && isPrivateChatEnabled && (\n <Box css={{ px: '$4' }}>\n <ParticipantSearch onSearch={setSearch} placeholder=\"Search for participants\" />\n </Box>\n )}\n <VirtualizedSelectItemList\n selectedRole={role}\n selectedPeerId={peerId}\n peers={isPrivateChatEnabled ? peers : []}\n isPublicChatEnabled={isPublicChatEnabled}\n searchValue={search}\n />\n </>\n );\n};\n", "import { useCallback } from 'react';\nimport { selectAppData, useHMSActions, useHMSStore } from '@100mslive/react-sdk';\nimport { APP_DATA } from '../../common/constants';\n\nexport const useChatDraftMessage = () => {\n const hmsActions = useHMSActions();\n let chatDraftMessage = useHMSStore(selectAppData(APP_DATA.chatDraft));\n if (chatDraftMessage === undefined || chatDraftMessage === null) {\n chatDraftMessage = '';\n }\n const setDraftMessage = useCallback(\n message => {\n hmsActions.setAppData(APP_DATA.chatDraft, message, true);\n },\n [hmsActions],\n );\n return [chatDraftMessage, setDraftMessage];\n};\n", "import { useEffect, useRef } from 'react';\n\nexport const useEmojiPickerStyles = showing => {\n const ref = useRef(null);\n useEffect(() => {\n if (showing) {\n setTimeout(() => {\n const root = ref.current?.querySelector('em-emoji-picker')?.shadowRoot;\n const style = document.createElement('style');\n style.textContent = `\n #root {\n --em-rgb-color: var(--hms-ui-colors-on_surface_high);\n --em-rgb-input: var(--hms-ui-colors-on_primary_high);\n --em-color-border: var(--hms-ui-colors-surface_bright);\n --color-b: var(--hms-ui-colors-on_surface_high);\n --rgb-background: transparent;\n color: var(--hms-ui-colors-on_surface_high);\n font-family: var(--hms-ui-fonts-sans);\n }\n .sticky {\n top: 0.25rem;\n background-color: var(--hms-ui-colors-surface_bright);\n margin-top: 0.5rem;\n }\n `;\n root?.appendChild(style);\n }, 0);\n }\n }, [showing]);\n\n return ref;\n};\n", "import React, { useCallback } from 'react';\nimport { selectLocalPeer, selectSessionStore, useHMSActions, useHMSStore } from '@100mslive/react-sdk';\nimport { Button } from '../../../Button';\nimport { Box, Flex } from '../../../Layout';\nimport { Text } from '../../../Text';\nimport { useRoomLayoutConferencingScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\nimport { useIsPeerBlacklisted } from '../hooks/useChatBlacklist';\nimport { SESSION_STORE_KEY } from '../../common/constants';\n\nexport const ChatPaused = () => {\n const hmsActions = useHMSActions();\n const { elements } = useRoomLayoutConferencingScreen();\n const can_disable_chat = !!elements?.chat?.real_time_controls?.can_disable_chat;\n const { enabled: isChatEnabled = true, updatedBy: chatStateUpdatedBy = '' } =\n useHMSStore(selectSessionStore(SESSION_STORE_KEY.CHAT_STATE)) || {};\n\n const localPeer = useHMSStore(selectLocalPeer);\n\n const unPauseChat = useCallback(\n async () =>\n await hmsActions.sessionStore.set(SESSION_STORE_KEY.CHAT_STATE, {\n enabled: true,\n updatedBy: { userName: localPeer?.name, userId: localPeer?.customerUserId, peerId: localPeer?.id },\n updatedAt: Date.now(),\n }),\n [hmsActions, localPeer],\n );\n\n return isChatEnabled ? null : (\n <Flex\n align=\"center\"\n justify=\"between\"\n css={{ borderRadius: '$1', bg: '$surface_default', p: '$2 $4 $2 $8', w: '100%' }}\n >\n <Box>\n <Text variant=\"sm\" css={{ fontWeight: '$semiBold', color: '$on_surface_high' }}>\n Chat paused\n </Text>\n <Text\n variant=\"xs\"\n css={{ color: '$on_surface_medium', maxWidth: '100%', overflow: 'hidden', textOverflow: 'ellipsis' }}\n >\n Chat has been paused by {chatStateUpdatedBy?.peerId === localPeer?.id ? 'you' : chatStateUpdatedBy?.userName}\n </Text>\n </Box>\n {can_disable_chat ? (\n <Button css={{ fontWeight: '$semiBold', fontSize: '$sm', borderRadius: '$2' }} onClick={unPauseChat}>\n Resume\n </Button>\n ) : (\n <></>\n )}\n </Flex>\n );\n};\n\nexport const ChatBlocked = () => {\n const isLocalPeerBlacklisted = useIsPeerBlacklisted({ local: true });\n if (!isLocalPeerBlacklisted) {\n return null;\n }\n return (\n <Flex\n align=\"center\"\n justify=\"between\"\n css={{ borderRadius: '$1', bg: '$surface_default', p: '$4 $4 $4 $8', w: '100%' }}\n >\n <Text variant=\"sm\" css={{ color: '$on_surface_medium', textAlign: 'center', w: '100%' }}>\n You've been blocked from sending messages\n </Text>\n </Flex>\n );\n};\n", "import React, { useEffect, useState } from 'react';\nimport { useSwipeable } from 'react-swipeable';\nimport { useMedia } from 'react-use';\nimport { selectSessionStore, useHMSStore } from '@100mslive/react-sdk';\nimport { PinIcon, UnpinIcon } from '@100mslive/react-icons';\nimport { Box, Flex } from '../../../Layout';\nimport { Text } from '../../../Text';\nimport { config as cssConfig } from '../../../Theme';\nimport { ArrowNavigation } from './ArrowNavigation';\n// @ts-ignore\nimport { AnnotisedMessage } from './ChatBody';\nimport { StickIndicator } from './StickIndicator';\nimport { useRoomLayoutConferencingScreen } from '../../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\nimport { usePinnedMessages } from '../hooks/usePinnedMessages';\nimport { SESSION_STORE_KEY } from '../../common/constants';\n\nconst PINNED_MESSAGE_LENGTH = 75;\n\nexport const PinnedMessage = () => {\n const pinnedMessages = useHMSStore(selectSessionStore(SESSION_STORE_KEY.PINNED_MESSAGES));\n const [pinnedMessageIndex, setPinnedMessageIndex] = useState(0);\n const { removePinnedMessage } = usePinnedMessages();\n const isMobile = useMedia(cssConfig.media.md);\n\n const { elements } = useRoomLayoutConferencingScreen();\n const canUnpinMessage = !!elements?.chat?.allow_pinning_messages;\n\n const [hideOverflow, setHideOverflow] = useState(true);\n const currentPinnedMessage = pinnedMessages?.[pinnedMessageIndex]?.text || '';\n const canOverflow = currentPinnedMessage.length > PINNED_MESSAGE_LENGTH;\n\n const showPreviousPinnedMessage = () => {\n const previousIndex = Math.max(pinnedMessageIndex - 1, 0);\n setHideOverflow(pinnedMessages[previousIndex].text.length > PINNED_MESSAGE_LENGTH);\n setPinnedMessageIndex(previousIndex);\n };\n\n const showNextPinnedMessage = () => {\n const nextIndex = Math.min(pinnedMessageIndex + 1, pinnedMessages.length - 1);\n setHideOverflow(pinnedMessages[nextIndex].text.length > PINNED_MESSAGE_LENGTH);\n setPinnedMessageIndex(nextIndex);\n };\n\n const swipeHandlers = useSwipeable({\n onSwipedUp: () => showNextPinnedMessage(),\n onSwipedDown: () => showPreviousPinnedMessage(),\n });\n\n // Scenario: User is on a particular index but an earlier message is removed by another peer\n useEffect(() => {\n const count = pinnedMessages?.length || 1;\n if (pinnedMessageIndex >= count) {\n setPinnedMessageIndex(count - 1);\n }\n }, [pinnedMessageIndex, pinnedMessages]);\n\n if (!pinnedMessages || pinnedMessages.length === 0) {\n return null;\n }\n\n return (\n <Flex align=\"center\" css={{ w: '100%', gap: '$4' }}>\n {!isMobile ? (\n <ArrowNavigation\n index={pinnedMessageIndex}\n total={pinnedMessages.length}\n showPrevious={showPreviousPinnedMessage}\n showNext={showNextPinnedMessage}\n />\n ) : null}\n <Flex\n css={{\n p: '$4',\n color: '$on_surface_high',\n bg: isMobile && elements?.chat?.is_overlay ? 'rgba(0, 0, 0, 0.64)' : '$surface_brighter',\n r: '$1',\n gap: '$4',\n mb: '$8',\n mt: '$8',\n flexGrow: 1,\n border: '1px solid $border_bright',\n }}\n align=\"center\"\n justify=\"between\"\n >\n {isMobile ? <StickIndicator index={pinnedMessageIndex} total={pinnedMessages.length} /> : null}\n\n <Box\n css={{\n w: '100%',\n maxHeight: '$18',\n overflowY: 'auto',\n overflowX: 'hidden',\n wordBreak: 'break-word',\n '& p span': {\n color: '$primary_default',\n },\n }}\n >\n <Text\n variant=\"sm\"\n css={{ color: '$on_surface_high' }}\n {...swipeHandlers}\n title={pinnedMessages[pinnedMessageIndex]?.text}\n >\n <AnnotisedMessage\n message={currentPinnedMessage}\n length={hideOverflow ? PINNED_MESSAGE_LENGTH : currentPinnedMessage.length}\n />\n {canOverflow ? (\n <span style={{ cursor: 'pointer' }} onClick={() => setHideOverflow(prev => !prev)}>\n {hideOverflow ? '... See more' : 'Collapse'}\n </span>\n ) : null}\n </Text>\n </Box>\n\n {canUnpinMessage ? (\n <Flex\n onClick={() => {\n removePinnedMessage(pinnedMessageIndex);\n setPinnedMessageIndex(Math.max(0, pinnedMessageIndex - 1));\n }}\n css={{\n cursor: 'pointer',\n color: '$on_surface_medium',\n '&:hover': { color: '$on_surface_high' },\n '&:hover .hide-on-hover': { display: 'none !important' },\n '&:hover .show-on-hover': { display: 'block !important' },\n }}\n title=\"Unpin Message\"\n >\n <UnpinIcon className=\"show-on-hover\" style={{ display: 'none' }} height={20} width={20} />\n <PinIcon className=\"hide-on-hover\" style={{ display: 'block' }} height={20} width={20} />\n </Flex>\n ) : null}\n </Flex>\n </Flex>\n );\n};\n", "import React from 'react';\nimport { ChevronDownIcon, ChevronUpIcon } from '@100mslive/react-icons';\nimport { Flex } from '../../../Layout';\n\nexport const ArrowNavigation = ({\n total,\n index,\n showPrevious,\n showNext,\n}: {\n total: number;\n index: number;\n showPrevious: () => void;\n showNext: () => void;\n}) => {\n if (total < 2) {\n return null;\n }\n\n return (\n <Flex direction=\"column\" css={{ gap: '$1' }}>\n <Flex\n onClick={showPrevious}\n css={\n index === 0\n ? { cursor: 'not-allowed', color: '$on_surface_low' }\n : { cursor: 'pointer', color: '$on_surface_medium' }\n }\n >\n <ChevronUpIcon height={20} width={20} />\n </Flex>\n <Flex\n onClick={showNext}\n css={\n index === total - 1\n ? { cursor: 'not-allowed', color: '$on_surface_low' }\n : { cursor: 'pointer', color: '$on_surface_medium' }\n }\n >\n <ChevronDownIcon height={20} width={20} />\n </Flex>\n </Flex>\n );\n};\n", "import React from 'react';\nimport { Box, Flex } from '../../../Layout';\n\nexport const StickIndicator = ({ total, index }: { total: number; index: number }) => {\n const sticksCount = Math.min(3, total);\n\n if (total < 2) {\n return null;\n }\n\n return (\n <Flex direction=\"column\" css={{ gap: '$1' }}>\n {[...Array(sticksCount)].map((_, i) => (\n <Box\n css={{\n borderLeft: '2px solid',\n height: '$4',\n borderColor: i === index ? '$on_surface_high' : '$on_surface_low',\n }}\n />\n ))}\n </Flex>\n );\n};\n", "import React, { useEffect, useState } from 'react';\nimport { useInView } from 'react-intersection-observer';\nimport { useMeasure } from 'react-use';\nimport { VariableSizeList } from 'react-window';\nimport { selectIsConnectedToRoom, useHMSStore, usePaginatedParticipants } from '@100mslive/react-sdk';\nimport { ChevronLeftIcon, CrossIcon } from '@100mslive/react-icons';\nimport { IconButton } from '../../../IconButton';\nimport { Box, Flex } from '../../../Layout';\nimport { Loading } from '../../../Loading';\nimport { Text } from '../../../Text';\nimport { Participant, ParticipantSearch } from './ParticipantList';\nimport { ItemData, itemKey, ROW_HEIGHT } from './RoleAccordion';\n// @ts-ignore: No implicit Any\nimport { useSidepaneReset } from '../AppData/useSidepane';\n// @ts-ignore: No implicit Any\nimport { getFormattedCount } from '../../common/utils';\n\nconst LoadMoreParticipants = ({\n hasNext,\n loadMore,\n style,\n}: {\n hasNext: boolean;\n loadMore: () => Promise<void>;\n style: React.CSSProperties;\n}) => {\n const { ref, inView } = useInView();\n const [inProgress, setInProgress] = useState(false);\n\n useEffect(() => {\n if (hasNext && inView && !inProgress) {\n setInProgress(true);\n loadMore()\n .catch(console.error)\n .finally(() => setInProgress(false));\n }\n }, [hasNext, loadMore, inView, inProgress]);\n return (\n <Flex ref={ref} style={style} align=\"center\" justify=\"center\">\n {inProgress ? <Loading size={16} /> : null}\n </Flex>\n );\n};\n\nconst VirtualizedParticipantItem = React.memo(\n ({\n index,\n data,\n style,\n }: {\n index: number;\n data: ItemData & { hasNext: boolean; loadMorePeers: () => Promise<void> };\n style: React.CSSProperties;\n }) => {\n if (!data.peerList[index]) {\n return <LoadMoreParticipants hasNext={data.hasNext} loadMore={data.loadMorePeers} style={style} />;\n }\n return (\n <Participant\n key={data.peerList[index].id}\n peer={data.peerList[index]}\n isConnected={data.isConnected}\n style={style}\n />\n );\n },\n);\n\nexport const PaginatedParticipants = ({ roleName, onBack }: { roleName: string; onBack: () => void }) => {\n const { peers, total, hasNext, loadPeers, loadMorePeers } = usePaginatedParticipants({ role: roleName, limit: 20 });\n const [search, setSearch] = useState<string>('');\n const filteredPeers = peers.filter(p => p.name?.toLowerCase().includes(search?.toLowerCase()));\n const isConnected = useHMSStore(selectIsConnectedToRoom);\n const [ref, { width }] = useMeasure<HTMLDivElement>();\n const height = ROW_HEIGHT * (filteredPeers.length + 1);\n const resetSidePane = useSidepaneReset();\n\n useEffect(() => {\n loadPeers();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n <Flex ref={ref} direction=\"column\" css={{ size: '100%', gap: '$4' }}>\n <Flex align=\"center\">\n <Flex align=\"center\" css={{ flex: '1 1 0', cursor: 'pointer' }} onClick={onBack}>\n <ChevronLeftIcon />\n <Text variant=\"lg\" css={{ flex: '1 1 0' }}>\n Participants\n </Text>\n </Flex>\n <IconButton\n onClick={e => {\n e.stopPropagation();\n resetSidePane();\n }}\n data-testid=\"close_sidepane\"\n >\n <CrossIcon />\n </IconButton>\n </Flex>\n <ParticipantSearch onSearch={(search: string) => setSearch(search)} placeholder={`Search for ${roleName}`} />\n <Flex direction=\"column\" css={{ border: '1px solid $border_default', borderRadius: '$1', flex: '1 1 0' }}>\n <Flex align=\"center\" css={{ height: ROW_HEIGHT, borderBottom: '1px solid $border_default', px: '$8' }}>\n <Text css={{ fontSize: '$space$7' }}>\n {roleName}({getFormattedCount(peers.length)}/{getFormattedCount(total)})\n </Text>\n </Flex>\n <Box css={{ flex: '1 1 0', overflowY: 'auto', overflowX: 'hidden', mr: '-$10' }}>\n <VariableSizeList\n itemSize={index => (index === filteredPeers.length + 1 ? 16 : ROW_HEIGHT)}\n itemData={{ peerList: filteredPeers, hasNext: hasNext(), loadMorePeers, isConnected: isConnected === true }}\n itemKey={itemKey}\n itemCount={filteredPeers.length + 1}\n width={width}\n height={height}\n >\n {VirtualizedParticipantItem}\n </VariableSizeList>\n </Box>\n </Flex>\n </Flex>\n );\n};\n", "import React from 'react';\nimport { selectLocalPeer, selectSessionStore, useHMSActions, useHMSStore } from '@100mslive/react-sdk';\nimport { PauseCircleIcon, SettingsIcon } from '@100mslive/react-icons';\nimport { Flex } from '../../Layout';\nimport { Popover } from '../../Popover';\nimport { Text } from '../../Text';\nimport { useRoomLayoutConferencingScreen } from '../provider/roomLayoutProvider/hooks/useRoomLayoutScreen';\nimport { SESSION_STORE_KEY } from '../common/constants';\n\nexport const ChatSettings = () => {\n const hmsActions = useHMSActions();\n const localPeer = useHMSStore(selectLocalPeer);\n const { elements } = useRoomLayoutConferencingScreen();\n const canPauseChat = !!elements?.chat?.real_time_controls?.can_disable_chat;\n const { enabled: isChatEnabled = true } = useHMSStore(selectSessionStore(SESSION_STORE_KEY.CHAT_STATE)) || {};\n const showPause = canPauseChat && isChatEnabled;\n\n if (!showPause) {\n return null;\n }\n\n return (\n <Popover.Root>\n <Popover.Trigger asChild css={{ px: '$4' }}>\n <Flex\n align=\"center\"\n css={{ color: '$on_surface_medium', '&:hover': { color: '$on_surface_high' }, cursor: 'pointer' }}\n >\n <SettingsIcon />\n </Flex>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n align=\"end\"\n side=\"bottom\"\n sideOffset={2}\n onClick={() => {\n const chatState = {\n enabled: false,\n updatedBy: {\n peerId: localPeer?.id,\n userId: localPeer?.customerUserId,\n userName: localPeer?.name,\n },\n updatedAt: Date.now(),\n };\n hmsActions.sessionStore.set(SESSION_STORE_KEY.CHAT_STATE, chatState);\n }}\n css={{\n backgroundColor: '$surface_default',\n display: 'flex',\n alignItems: 'center',\n gap: '$4',\n borderRadius: '$1',\n color: '$on_surface_high',\n cursor: 'pointer',\n '&:hover': { backgroundColor: '$surface_dim' },\n }}\n >\n <PauseCircleIcon />\n <Text variant=\"sm\" css={{ fontWeight: '$semiBold' }}>\n Pause Chat\n </Text>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n );\n};\n"],
|
5
|
-
"mappings": "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",
|
6
|
-
"names": ["React", "useEffect", "useState", "useMedia", "match", "useHMSStore", "CrossIcon", "React", "useCallback", "useRef", "useMedia", "useHMSActions", "useHMSStore", "ChevronDownIcon", "React", "useCallback", "useEffect", "useRef", "useState", "useMedia", "useHMSActions", "useHMSStore", "React", "useState", "useMedia", "useState", "useMedia", "React", "useHMSStore", "useHMSStore", "useState", "React", "useHMSActions", "useRef", "useMedia", "useHMSStore", "useEffect", "_a", "_b", "useCallback", "React", "useCallback", "selectLocalPeer", "useHMSActions", "useHMSStore", "useHMSActions", "useHMSStore", "selectLocalPeer", "useCallback", "React", "React", "useEffect", "useState", "useMedia", "selectSessionStore", "useHMSStore", "React", "ChevronDownIcon", "ChevronUpIcon", "React", "ChevronUpIcon", "ChevronDownIcon", "React", "React", "useHMSStore", "selectSessionStore", "useState", "useMedia", "useEffect", "React", "MoreSettings", "React", "RaiseHand", "useRef", "useHMSActions", "useHMSStore", "useMedia", "useCallback", "_a", "ChevronDownIcon", "React", "useEffect", "useState", "useHMSStore", "CrossIcon", "useState", "useEffect", "React", "data", "useHMSStore", "CrossIcon", "search", "React", "selectLocalPeer", "selectSessionStore", "useHMSActions", "useHMSStore", "PauseCircleIcon", "useHMSActions", "useHMSStore", "selectLocalPeer", "selectSessionStore", "React", "PauseCircleIcon", "React", "useState", "useHMSStore", "useMedia", "useEffect", "match", "CrossIcon"]
|
7
|
-
}
|
@@ -1,322 +0,0 @@
|
|
1
|
-
import {
|
2
|
-
useSidepaneResetOnLayoutUpdate
|
3
|
-
} from "./chunk-LXJGCRKM.js";
|
4
|
-
import {
|
5
|
-
Dm,
|
6
|
-
Loading,
|
7
|
-
Nm,
|
8
|
-
Slider,
|
9
|
-
VBHandler,
|
10
|
-
Video,
|
11
|
-
Ym,
|
12
|
-
at,
|
13
|
-
useSidepaneToggle
|
14
|
-
} from "./chunk-MG3UGW66.js";
|
15
|
-
import {
|
16
|
-
Text
|
17
|
-
} from "./chunk-MUKUP7JU.js";
|
18
|
-
import "./chunk-DANANDDE.js";
|
19
|
-
import {
|
20
|
-
Box,
|
21
|
-
Flex
|
22
|
-
} from "./chunk-GOXRTCTY.js";
|
23
|
-
import {
|
24
|
-
useSetAppDataByKey,
|
25
|
-
useUISettings
|
26
|
-
} from "./chunk-BGSYLCVD.js";
|
27
|
-
import {
|
28
|
-
APP_DATA,
|
29
|
-
SIDE_PANE_OPTIONS,
|
30
|
-
UI_SETTINGS,
|
31
|
-
__async,
|
32
|
-
__spreadProps,
|
33
|
-
__spreadValues,
|
34
|
-
config,
|
35
|
-
init_define_process_env
|
36
|
-
} from "./chunk-GLAJUP3O.js";
|
37
|
-
|
38
|
-
// src/Prebuilt/components/VirtualBackground/VBPicker.tsx
|
39
|
-
init_define_process_env();
|
40
|
-
import React3, { useEffect, useRef, useState } from "react";
|
41
|
-
import { useMedia } from "react-use";
|
42
|
-
import { HMSVirtualBackgroundTypes as HMSVirtualBackgroundTypes2 } from "@100mslive/hms-virtual-background/hmsvbplugin";
|
43
|
-
import {
|
44
|
-
HMSRoomState,
|
45
|
-
selectIsLargeRoom,
|
46
|
-
selectIsLocalVideoEnabled,
|
47
|
-
selectIsLocalVideoPluginPresent,
|
48
|
-
selectLocalPeer,
|
49
|
-
selectRoomState,
|
50
|
-
selectVideoTrackByID,
|
51
|
-
useHMSActions,
|
52
|
-
useHMSStore
|
53
|
-
} from "@100mslive/react-sdk";
|
54
|
-
import { BlurPersonHighIcon, CrossCircleIcon, CrossIcon } from "@100mslive/react-icons";
|
55
|
-
|
56
|
-
// src/Prebuilt/components/VirtualBackground/VBCollection.tsx
|
57
|
-
init_define_process_env();
|
58
|
-
import React2 from "react";
|
59
|
-
import { HMSVirtualBackgroundTypes } from "@100mslive/hms-virtual-background/hmsvbplugin";
|
60
|
-
|
61
|
-
// src/Prebuilt/components/VirtualBackground/VBOption.tsx
|
62
|
-
init_define_process_env();
|
63
|
-
import React from "react";
|
64
|
-
var Root = ({
|
65
|
-
onClick,
|
66
|
-
mediaURL,
|
67
|
-
isActive,
|
68
|
-
children,
|
69
|
-
testid = ""
|
70
|
-
}) => /* @__PURE__ */ React.createElement(
|
71
|
-
Flex,
|
72
|
-
{
|
73
|
-
"data-testid": testid,
|
74
|
-
direction: "column",
|
75
|
-
align: "center",
|
76
|
-
css: __spreadValues({
|
77
|
-
p: "$5",
|
78
|
-
borderRadius: "$1",
|
79
|
-
bg: "$surface_bright",
|
80
|
-
border: `4px solid ${isActive ? "$primary_default" : "$surface_dim"}`,
|
81
|
-
cursor: "pointer",
|
82
|
-
"@media (hover:hover)": {
|
83
|
-
"&:hover": { border: "4px solid $primary_dim" }
|
84
|
-
}
|
85
|
-
}, mediaURL ? { height: "$20", backgroundImage: `url("${mediaURL}")`, backgroundSize: "cover" } : {}),
|
86
|
-
onClick: () => __async(void 0, null, function* () {
|
87
|
-
yield onClick == null ? void 0 : onClick();
|
88
|
-
})
|
89
|
-
},
|
90
|
-
children
|
91
|
-
);
|
92
|
-
var Title = ({ children }) => {
|
93
|
-
return children ? /* @__PURE__ */ React.createElement(Text, { variant: "xs", css: { color: "$on_surface_medium" } }, children) : null;
|
94
|
-
};
|
95
|
-
var Icon = ({ children }) => {
|
96
|
-
return children ? /* @__PURE__ */ React.createElement(Box, { css: { color: "$on_surface_high" } }, children) : null;
|
97
|
-
};
|
98
|
-
var VBOption = {
|
99
|
-
Root,
|
100
|
-
Title,
|
101
|
-
Icon
|
102
|
-
};
|
103
|
-
|
104
|
-
// src/Prebuilt/components/VirtualBackground/VBCollection.tsx
|
105
|
-
var VBCollection = ({
|
106
|
-
options,
|
107
|
-
title,
|
108
|
-
activeBackground = ""
|
109
|
-
}) => {
|
110
|
-
if (options.length === 0) {
|
111
|
-
return null;
|
112
|
-
}
|
113
|
-
return /* @__PURE__ */ React2.createElement(Box, { css: { mt: "$10" } }, /* @__PURE__ */ React2.createElement(Text, { variant: "sm", css: { color: "$on_surface_high", fontWeight: "$semiBold" } }, title), /* @__PURE__ */ React2.createElement(Box, { css: { py: "$4", display: "grid", gridTemplateColumns: "1fr 1fr 1fr", gap: "$8" } }, options.map(
|
114
|
-
(option, index) => option.supported ? /* @__PURE__ */ React2.createElement(
|
115
|
-
VBOption.Root,
|
116
|
-
__spreadProps(__spreadValues({
|
117
|
-
key: option.value,
|
118
|
-
testid: option.value === HMSVirtualBackgroundTypes.IMAGE ? `virtual_bg_option-${index}` : option.value
|
119
|
-
}, option), {
|
120
|
-
isActive: activeBackground === option.value
|
121
|
-
}),
|
122
|
-
/* @__PURE__ */ React2.createElement(VBOption.Icon, null, option == null ? void 0 : option.icon),
|
123
|
-
/* @__PURE__ */ React2.createElement(VBOption.Title, null, option == null ? void 0 : option.title)
|
124
|
-
) : ""
|
125
|
-
)));
|
126
|
-
};
|
127
|
-
|
128
|
-
// src/Prebuilt/components/VirtualBackground/VBPicker.tsx
|
129
|
-
var iconDims = { height: "40px", width: "40px" };
|
130
|
-
var VBPicker = ({ backgroundMedia = [] }) => {
|
131
|
-
var _a, _b;
|
132
|
-
const toggleVB = useSidepaneToggle(SIDE_PANE_OPTIONS.VB);
|
133
|
-
const hmsActions = useHMSActions();
|
134
|
-
const localPeer = useHMSStore(selectLocalPeer);
|
135
|
-
const role = useHMSStore(at);
|
136
|
-
const isVideoOn = useHMSStore(selectIsLocalVideoEnabled);
|
137
|
-
const mirrorLocalVideo = useUISettings(UI_SETTINGS.mirrorLocalVideo);
|
138
|
-
const trackSelector = selectVideoTrackByID(localPeer == null ? void 0 : localPeer.videoTrack);
|
139
|
-
const track = useHMSStore(trackSelector);
|
140
|
-
const [blurAmount, setBlurAmount] = useState(VBHandler.getBlurAmount() || 0.5);
|
141
|
-
const roomState = useHMSStore(selectRoomState);
|
142
|
-
const isLargeRoom = useHMSStore(selectIsLargeRoom);
|
143
|
-
const isEffectsSupported = VBHandler.isEffectsSupported();
|
144
|
-
const isEffectsEnabled = useHMSStore(Dm);
|
145
|
-
const effectsKey = useHMSStore(Nm);
|
146
|
-
const isMobile = useMedia(config.media.md);
|
147
|
-
const [loadingEffects, setLoadingEffects] = useSetAppDataByKey(APP_DATA.loadingEffects);
|
148
|
-
const isPluginAdded = useHMSStore(selectIsLocalVideoPluginPresent(((_a = VBHandler) == null ? void 0 : _a.getName()) || ""));
|
149
|
-
const background = useHMSStore(Ym(APP_DATA.background));
|
150
|
-
const mediaList = backgroundMedia.map((media) => media.url || "");
|
151
|
-
const pluginLoadingRef = useRef(false);
|
152
|
-
const isBlurSupported = (_b = VBHandler) == null ? void 0 : _b.isBlurSupported();
|
153
|
-
const inPreview = roomState === HMSRoomState.Preview;
|
154
|
-
const showVideoTile = isVideoOn && isLargeRoom && !inPreview;
|
155
|
-
useEffect(() => {
|
156
|
-
const addHMSVBPlugin = () => __async(void 0, null, function* () {
|
157
|
-
setLoadingEffects(false);
|
158
|
-
if (!role) {
|
159
|
-
return;
|
160
|
-
}
|
161
|
-
yield VBHandler.initialisePlugin();
|
162
|
-
yield hmsActions.addPluginToVideoTrack(
|
163
|
-
VBHandler.getVBObject(),
|
164
|
-
Math.floor(role.publishParams.video.frameRate / 2)
|
165
|
-
);
|
166
|
-
});
|
167
|
-
const initializeVirtualBackground = () => __async(void 0, null, function* () {
|
168
|
-
if (!(track == null ? void 0 : track.id) || pluginLoadingRef.current || isPluginAdded) {
|
169
|
-
return;
|
170
|
-
}
|
171
|
-
try {
|
172
|
-
pluginLoadingRef.current = true;
|
173
|
-
if (isEffectsEnabled && isEffectsSupported && effectsKey) {
|
174
|
-
setLoadingEffects(true);
|
175
|
-
yield VBHandler.initialisePlugin(effectsKey, () => {
|
176
|
-
setLoadingEffects(false);
|
177
|
-
});
|
178
|
-
const vbInstance = VBHandler.getVBObject();
|
179
|
-
if (vbInstance.getName() === "HMSEffects") {
|
180
|
-
hmsActions.addPluginsToVideoStream([VBHandler.getVBObject()]);
|
181
|
-
} else {
|
182
|
-
yield addHMSVBPlugin();
|
183
|
-
}
|
184
|
-
} else {
|
185
|
-
yield addHMSVBPlugin();
|
186
|
-
}
|
187
|
-
const handleDefaultBackground = () => __async(void 0, null, function* () {
|
188
|
-
switch (background) {
|
189
|
-
case HMSVirtualBackgroundTypes2.NONE:
|
190
|
-
break;
|
191
|
-
case HMSVirtualBackgroundTypes2.BLUR:
|
192
|
-
yield VBHandler.setBlur(blurAmount);
|
193
|
-
break;
|
194
|
-
default:
|
195
|
-
yield VBHandler.setBackground(background);
|
196
|
-
}
|
197
|
-
});
|
198
|
-
yield handleDefaultBackground();
|
199
|
-
} catch (error) {
|
200
|
-
console.error("Error initializing virtual background:", error);
|
201
|
-
setLoadingEffects(false);
|
202
|
-
}
|
203
|
-
});
|
204
|
-
initializeVirtualBackground();
|
205
|
-
}, [
|
206
|
-
hmsActions,
|
207
|
-
role,
|
208
|
-
isPluginAdded,
|
209
|
-
isEffectsEnabled,
|
210
|
-
isEffectsSupported,
|
211
|
-
effectsKey,
|
212
|
-
track == null ? void 0 : track.id,
|
213
|
-
background,
|
214
|
-
blurAmount,
|
215
|
-
setLoadingEffects
|
216
|
-
]);
|
217
|
-
useEffect(() => {
|
218
|
-
if (!isVideoOn) {
|
219
|
-
toggleVB();
|
220
|
-
}
|
221
|
-
return () => setLoadingEffects(false);
|
222
|
-
}, [isVideoOn, setLoadingEffects, toggleVB]);
|
223
|
-
useSidepaneResetOnLayoutUpdate("virtual_background", SIDE_PANE_OPTIONS.VB);
|
224
|
-
return /* @__PURE__ */ React3.createElement(Flex, { css: { pr: "$6", size: "100%" }, direction: "column" }, /* @__PURE__ */ React3.createElement(Flex, { align: "center", justify: "between", css: { w: "100%", background: "$surface_dim", pb: "$4" } }, /* @__PURE__ */ React3.createElement(Text, { variant: "h6", css: { color: "$on_surface_high", display: "flex", alignItems: "center" } }, "Virtual Background ", isMobile && loadingEffects ? /* @__PURE__ */ React3.createElement(Loading, { size: 18, style: { marginLeft: "0.5rem" } }) : ""), /* @__PURE__ */ React3.createElement(
|
225
|
-
Box,
|
226
|
-
{
|
227
|
-
css: { color: "$on_surface_high", "&:hover": { color: "$on_surface_medium" }, cursor: "pointer" },
|
228
|
-
onClick: toggleVB
|
229
|
-
},
|
230
|
-
/* @__PURE__ */ React3.createElement(CrossIcon, null)
|
231
|
-
)), showVideoTile ? /* @__PURE__ */ React3.createElement(
|
232
|
-
Video,
|
233
|
-
{
|
234
|
-
mirror: (track == null ? void 0 : track.facingMode) !== "environment" && mirrorLocalVideo,
|
235
|
-
trackId: localPeer == null ? void 0 : localPeer.videoTrack,
|
236
|
-
"data-testid": "preview_tile",
|
237
|
-
css: { width: "100%", height: "16rem" }
|
238
|
-
}
|
239
|
-
) : null, /* @__PURE__ */ React3.createElement(
|
240
|
-
Box,
|
241
|
-
{
|
242
|
-
css: {
|
243
|
-
mt: "$4",
|
244
|
-
overflowY: "auto",
|
245
|
-
flex: "1 1 0",
|
246
|
-
mr: "-$10",
|
247
|
-
pr: "$10"
|
248
|
-
}
|
249
|
-
},
|
250
|
-
/* @__PURE__ */ React3.createElement(
|
251
|
-
VBCollection,
|
252
|
-
{
|
253
|
-
title: "Effects",
|
254
|
-
options: [
|
255
|
-
{
|
256
|
-
title: "No effect",
|
257
|
-
icon: /* @__PURE__ */ React3.createElement(CrossCircleIcon, { style: iconDims }),
|
258
|
-
value: HMSVirtualBackgroundTypes2.NONE,
|
259
|
-
onClick: () => __async(void 0, null, function* () {
|
260
|
-
yield VBHandler.removeEffects();
|
261
|
-
hmsActions.setAppData(APP_DATA.background, HMSVirtualBackgroundTypes2.NONE);
|
262
|
-
if (isMobile) {
|
263
|
-
toggleVB();
|
264
|
-
}
|
265
|
-
}),
|
266
|
-
supported: true
|
267
|
-
},
|
268
|
-
{
|
269
|
-
title: "Blur",
|
270
|
-
icon: /* @__PURE__ */ React3.createElement(BlurPersonHighIcon, { style: iconDims }),
|
271
|
-
value: HMSVirtualBackgroundTypes2.BLUR,
|
272
|
-
onClick: () => __async(void 0, null, function* () {
|
273
|
-
var _a2;
|
274
|
-
yield (_a2 = VBHandler) == null ? void 0 : _a2.setBlur(blurAmount);
|
275
|
-
hmsActions.setAppData(APP_DATA.background, HMSVirtualBackgroundTypes2.BLUR);
|
276
|
-
}),
|
277
|
-
supported: isBlurSupported
|
278
|
-
}
|
279
|
-
],
|
280
|
-
activeBackground: background
|
281
|
-
}
|
282
|
-
),
|
283
|
-
/* @__PURE__ */ React3.createElement(Flex, { direction: "column", css: { w: "100%", gap: "$8", mt: "$8" } }, background === HMSVirtualBackgroundTypes2.BLUR && isBlurSupported ? /* @__PURE__ */ React3.createElement(Box, null, /* @__PURE__ */ React3.createElement(Text, { variant: "sm", css: { color: "$on_surface_high", fontWeight: "$semiBold", mb: "$4" } }, "Blur intensity"), /* @__PURE__ */ React3.createElement(Flex, { css: { w: "100%", justifyContent: "space-between", alignItems: "center", gap: "$4" } }, /* @__PURE__ */ React3.createElement(Text, { variant: "caption", css: { fontWeight: "$medium", color: "$on_surface_medium" } }, "Low"), /* @__PURE__ */ React3.createElement(
|
284
|
-
Slider,
|
285
|
-
{
|
286
|
-
showTooltip: false,
|
287
|
-
value: [blurAmount],
|
288
|
-
onValueChange: (e) => __async(void 0, null, function* () {
|
289
|
-
setBlurAmount(e[0]);
|
290
|
-
yield VBHandler.setBlur(e[0]);
|
291
|
-
}),
|
292
|
-
step: 0.1,
|
293
|
-
min: 0.1,
|
294
|
-
max: 1
|
295
|
-
}
|
296
|
-
), /* @__PURE__ */ React3.createElement(Text, { variant: "caption", css: { fontWeight: "$medium", color: "$on_surface_medium" } }, "High"))) : null),
|
297
|
-
/* @__PURE__ */ React3.createElement(
|
298
|
-
VBCollection,
|
299
|
-
{
|
300
|
-
title: "Backgrounds",
|
301
|
-
options: mediaList.map((mediaURL) => ({
|
302
|
-
mediaURL,
|
303
|
-
value: mediaURL,
|
304
|
-
onClick: () => __async(void 0, null, function* () {
|
305
|
-
var _a2;
|
306
|
-
yield (_a2 = VBHandler) == null ? void 0 : _a2.setBackground(mediaURL);
|
307
|
-
hmsActions.setAppData(APP_DATA.background, mediaURL);
|
308
|
-
if (isMobile) {
|
309
|
-
toggleVB();
|
310
|
-
}
|
311
|
-
}),
|
312
|
-
supported: true
|
313
|
-
})),
|
314
|
-
activeBackground: background
|
315
|
-
}
|
316
|
-
)
|
317
|
-
));
|
318
|
-
};
|
319
|
-
export {
|
320
|
-
VBPicker
|
321
|
-
};
|
322
|
-
//# sourceMappingURL=VBPicker-2CQ3IIO7.js.map
|
@@ -1,7 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"version": 3,
|
3
|
-
"sources": ["../src/Prebuilt/components/VirtualBackground/VBPicker.tsx", "../src/Prebuilt/components/VirtualBackground/VBCollection.tsx", "../src/Prebuilt/components/VirtualBackground/VBOption.tsx"],
|
4
|
-
"sourcesContent": ["import React, { useEffect, useRef, useState } from 'react';\nimport { useMedia } from 'react-use';\nimport {\n HMSMediaStreamPlugin,\n selectAppData,\n selectEffectsKey,\n selectIsEffectsEnabled,\n selectLocalPeerRole,\n} from '@100mslive/hms-video-store';\n// Open issue with eslint-plugin-import https://github.com/import-js/eslint-plugin-import/issues/1810\n// eslint-disable-next-line\nimport { HMSVBPlugin, HMSVirtualBackgroundTypes } from '@100mslive/hms-virtual-background/hmsvbplugin';\nimport { VirtualBackgroundMedia } from '@100mslive/types-prebuilt/elements/virtual_background';\nimport {\n HMSRoomState,\n selectIsLargeRoom,\n selectIsLocalVideoEnabled,\n selectIsLocalVideoPluginPresent,\n selectLocalPeer,\n selectRoomState,\n selectVideoTrackByID,\n useHMSActions,\n useHMSStore,\n} from '@100mslive/react-sdk';\nimport { BlurPersonHighIcon, CrossCircleIcon, CrossIcon } from '@100mslive/react-icons';\nimport { Box, config as cssConfig, Flex, Loading, Slider, Video } from '../../../index';\nimport { Text } from '../../../Text';\nimport { VBCollection } from './VBCollection';\nimport { VBHandler } from './VBHandler';\n// @ts-ignore\nimport { useSidepaneToggle } from '../AppData/useSidepane';\nimport { useSidepaneResetOnLayoutUpdate } from '../AppData/useSidepaneResetOnLayoutUpdate';\n// @ts-ignore\nimport { useSetAppDataByKey, useUISettings } from '../AppData/useUISettings';\nimport { APP_DATA, SIDE_PANE_OPTIONS, UI_SETTINGS } from '../../common/constants';\n\nconst iconDims = { height: '40px', width: '40px' };\n\nexport const VBPicker = ({ backgroundMedia = [] }: { backgroundMedia: VirtualBackgroundMedia[] }) => {\n const toggleVB = useSidepaneToggle(SIDE_PANE_OPTIONS.VB);\n const hmsActions = useHMSActions();\n const localPeer = useHMSStore(selectLocalPeer);\n const role = useHMSStore(selectLocalPeerRole);\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 [blurAmount, setBlurAmount] = useState(VBHandler.getBlurAmount() || 0.5);\n const roomState = useHMSStore(selectRoomState);\n const isLargeRoom = useHMSStore(selectIsLargeRoom);\n const isEffectsSupported = VBHandler.isEffectsSupported();\n const isEffectsEnabled = useHMSStore(selectIsEffectsEnabled);\n const effectsKey = useHMSStore(selectEffectsKey);\n const isMobile = useMedia(cssConfig.media.md);\n const [loadingEffects, setLoadingEffects] = useSetAppDataByKey(APP_DATA.loadingEffects);\n const isPluginAdded = useHMSStore(selectIsLocalVideoPluginPresent(VBHandler?.getName() || ''));\n const background = useHMSStore(selectAppData(APP_DATA.background));\n const mediaList = backgroundMedia.map((media: VirtualBackgroundMedia) => media.url || '');\n const pluginLoadingRef = useRef(false);\n const isBlurSupported = VBHandler?.isBlurSupported();\n\n const inPreview = roomState === HMSRoomState.Preview;\n // Hidden in preview as the effect will be visible in the preview tile\n const showVideoTile = isVideoOn && isLargeRoom && !inPreview;\n\n useEffect(() => {\n const addHMSVBPlugin = async () => {\n setLoadingEffects(false);\n if (!role) {\n return;\n }\n await VBHandler.initialisePlugin();\n await hmsActions.addPluginToVideoTrack(\n VBHandler.getVBObject() as HMSVBPlugin,\n Math.floor(role.publishParams.video.frameRate / 2),\n );\n };\n const initializeVirtualBackground = async () => {\n if (!track?.id || pluginLoadingRef.current || isPluginAdded) {\n return;\n }\n\n try {\n pluginLoadingRef.current = true;\n if (isEffectsEnabled && isEffectsSupported && effectsKey) {\n setLoadingEffects(true);\n await VBHandler.initialisePlugin(effectsKey, () => {\n setLoadingEffects(false);\n });\n const vbInstance = VBHandler.getVBObject();\n if (vbInstance.getName() === 'HMSEffects') {\n hmsActions.addPluginsToVideoStream([VBHandler.getVBObject() as HMSMediaStreamPlugin]);\n } else {\n await addHMSVBPlugin();\n }\n } else {\n await addHMSVBPlugin();\n }\n\n const handleDefaultBackground = async () => {\n switch (background) {\n case HMSVirtualBackgroundTypes.NONE:\n break;\n case HMSVirtualBackgroundTypes.BLUR:\n await VBHandler.setBlur(blurAmount);\n break;\n default:\n await VBHandler.setBackground(background);\n }\n };\n\n await handleDefaultBackground();\n } catch (error) {\n console.error('Error initializing virtual background:', error);\n setLoadingEffects(false);\n }\n };\n\n initializeVirtualBackground();\n }, [\n hmsActions,\n role,\n isPluginAdded,\n isEffectsEnabled,\n isEffectsSupported,\n effectsKey,\n track?.id,\n background,\n blurAmount,\n setLoadingEffects,\n ]);\n\n useEffect(() => {\n if (!isVideoOn) {\n toggleVB();\n }\n return () => setLoadingEffects(false);\n }, [isVideoOn, setLoadingEffects, toggleVB]);\n\n useSidepaneResetOnLayoutUpdate('virtual_background', SIDE_PANE_OPTIONS.VB);\n\n return (\n <Flex css={{ pr: '$6', size: '100%' }} direction=\"column\">\n <Flex align=\"center\" justify=\"between\" css={{ w: '100%', background: '$surface_dim', pb: '$4' }}>\n <Text variant=\"h6\" css={{ color: '$on_surface_high', display: 'flex', alignItems: 'center' }}>\n Virtual Background {isMobile && loadingEffects ? <Loading size={18} style={{ marginLeft: '0.5rem' }} /> : ''}\n </Text>\n <Box\n css={{ color: '$on_surface_high', '&:hover': { color: '$on_surface_medium' }, cursor: 'pointer' }}\n onClick={toggleVB}\n >\n <CrossIcon />\n </Box>\n </Flex>\n\n {showVideoTile ? (\n <Video\n mirror={track?.facingMode !== 'environment' && mirrorLocalVideo}\n trackId={localPeer?.videoTrack}\n data-testid=\"preview_tile\"\n css={{ width: '100%', height: '16rem' }}\n />\n ) : null}\n <Box\n css={{\n mt: '$4',\n overflowY: 'auto',\n flex: '1 1 0',\n mr: '-$10',\n pr: '$10',\n }}\n >\n <VBCollection\n title=\"Effects\"\n options={[\n {\n title: 'No effect',\n icon: <CrossCircleIcon style={iconDims} />,\n value: HMSVirtualBackgroundTypes.NONE,\n onClick: async () => {\n await VBHandler.removeEffects();\n hmsActions.setAppData(APP_DATA.background, HMSVirtualBackgroundTypes.NONE);\n if (isMobile) {\n toggleVB();\n }\n },\n supported: true,\n },\n {\n title: 'Blur',\n icon: <BlurPersonHighIcon style={iconDims} />,\n value: HMSVirtualBackgroundTypes.BLUR,\n onClick: async () => {\n await VBHandler?.setBlur(blurAmount);\n hmsActions.setAppData(APP_DATA.background, HMSVirtualBackgroundTypes.BLUR);\n },\n supported: isBlurSupported,\n },\n ]}\n activeBackground={background}\n />\n\n {/* Slider */}\n <Flex direction=\"column\" css={{ w: '100%', gap: '$8', mt: '$8' }}>\n {background === HMSVirtualBackgroundTypes.BLUR && isBlurSupported ? (\n <Box>\n <Text variant=\"sm\" css={{ color: '$on_surface_high', fontWeight: '$semiBold', mb: '$4' }}>\n Blur intensity\n </Text>\n <Flex css={{ w: '100%', justifyContent: 'space-between', alignItems: 'center', gap: '$4' }}>\n <Text variant=\"caption\" css={{ fontWeight: '$medium', color: '$on_surface_medium' }}>\n Low\n </Text>\n <Slider\n showTooltip={false}\n value={[blurAmount]}\n onValueChange={async e => {\n setBlurAmount(e[0]);\n await VBHandler.setBlur(e[0]);\n }}\n step={0.1}\n min={0.1}\n max={1}\n />\n <Text variant=\"caption\" css={{ fontWeight: '$medium', color: '$on_surface_medium' }}>\n High\n </Text>\n </Flex>\n </Box>\n ) : null}\n </Flex>\n\n <VBCollection\n title=\"Backgrounds\"\n options={mediaList.map(mediaURL => ({\n mediaURL,\n value: mediaURL,\n onClick: async () => {\n await VBHandler?.setBackground(mediaURL);\n hmsActions.setAppData(APP_DATA.background, mediaURL);\n if (isMobile) {\n toggleVB();\n }\n },\n supported: true,\n }))}\n activeBackground={background}\n />\n </Box>\n </Flex>\n );\n};\n", "import React from 'react';\n// Open issue with eslint-plugin-import https://github.com/import-js/eslint-plugin-import/issues/1810\n// eslint-disable-next-line\nimport { HMSVirtualBackgroundTypes } from '@100mslive/hms-virtual-background/hmsvbplugin';\nimport { Box } from '../../../Layout';\nimport { Text } from '../../../Text';\nimport { VBOption } from './VBOption';\n\nexport const VBCollection = ({\n options,\n title,\n activeBackground = '',\n}: {\n options: {\n title?: string;\n icon?: React.JSX.Element;\n onClick?: () => Promise<void>;\n mediaURL?: string;\n value: string | HMSVirtualBackgroundTypes;\n supported?: boolean;\n }[];\n title: string;\n activeBackground: string;\n}) => {\n if (options.length === 0) {\n return null;\n }\n return (\n <Box css={{ mt: '$10' }}>\n <Text variant=\"sm\" css={{ color: '$on_surface_high', fontWeight: '$semiBold' }}>\n {title}\n </Text>\n <Box css={{ py: '$4', display: 'grid', gridTemplateColumns: '1fr 1fr 1fr', gap: '$8' }}>\n {options.map((option, index) =>\n option.supported ? (\n <VBOption.Root\n key={option.value}\n testid={option.value === HMSVirtualBackgroundTypes.IMAGE ? `virtual_bg_option-${index}` : option.value}\n {...option}\n isActive={activeBackground === option.value}\n >\n <VBOption.Icon>{option?.icon}</VBOption.Icon>\n <VBOption.Title>{option?.title}</VBOption.Title>\n </VBOption.Root>\n ) : (\n ''\n ),\n )}\n </Box>\n </Box>\n );\n};\n", "import React from 'react';\nimport { Box, Flex } from '../../../Layout';\nimport { Text } from '../../../Text';\n\nconst Root = ({\n onClick,\n mediaURL,\n isActive,\n children,\n testid = '',\n}: {\n onClick?: () => Promise<void>;\n mediaURL?: string;\n isActive: boolean;\n children?: React.JSX.Element[];\n testid: string;\n}) => (\n <Flex\n data-testid={testid}\n direction=\"column\"\n align=\"center\"\n css={{\n p: '$5',\n borderRadius: '$1',\n bg: '$surface_bright',\n border: `4px solid ${isActive ? '$primary_default' : '$surface_dim'}`,\n cursor: 'pointer',\n '@media (hover:hover)': {\n '&:hover': { border: '4px solid $primary_dim' },\n },\n ...(mediaURL ? { height: '$20', backgroundImage: `url(\"${mediaURL}\")`, backgroundSize: 'cover' } : {}),\n }}\n onClick={async () => {\n await onClick?.();\n }}\n >\n {children}\n </Flex>\n);\n\nconst Title = ({ children }: { children?: string }) => {\n return children ? (\n <Text variant=\"xs\" css={{ color: '$on_surface_medium' }}>\n {children}\n </Text>\n ) : null;\n};\n\nconst Icon = ({ children }: { children?: React.JSX.Element }) => {\n return children ? <Box css={{ color: '$on_surface_high' }}>{children}</Box> : null;\n};\n\nexport const VBOption = {\n Root,\n Title,\n Icon,\n};\n"],
|
5
|
-
"mappings": "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",
|
6
|
-
"names": ["React", "HMSVirtualBackgroundTypes", "React", "React", "HMSVirtualBackgroundTypes", "React", "_a"]
|
7
|
-
}
|