@100mslive/roomkit-react 0.3.22-alpha.1 → 0.3.22-alpha.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (132) hide show
  1. package/dist/ConferenceScreen-CSVWECB5.js +1778 -0
  2. package/dist/ConferenceScreen-CSVWECB5.js.map +7 -0
  3. package/dist/ConferenceScreen-YRURU3RV.css +2780 -0
  4. package/dist/{HLSView-Z2JID2W7.css.map → ConferenceScreen-YRURU3RV.css.map} +1 -1
  5. package/dist/EmbedView-N2E4DZQA.js +17 -0
  6. package/dist/EmbedView-N2E4DZQA.js.map +7 -0
  7. package/dist/EmbedView-S54NTHF5.css +2780 -0
  8. package/dist/EmbedView-S54NTHF5.css.map +7 -0
  9. package/dist/EmojiReaction-3X4ST4AU.js +11 -0
  10. package/dist/EmojiReaction-3X4ST4AU.js.map +7 -0
  11. package/dist/{HLSView-LCFZPBH3.js → HLSView-EYGGK6BH.js} +38 -24
  12. package/dist/HLSView-EYGGK6BH.js.map +7 -0
  13. package/dist/{HLSView-Z2JID2W7.css → HLSView-LBTFLMI4.css} +3 -3
  14. package/dist/HLSView-LBTFLMI4.css.map +7 -0
  15. package/dist/LeaveScreen-D6XU64JL.js +556 -0
  16. package/dist/LeaveScreen-D6XU64JL.js.map +7 -0
  17. package/dist/LeaveScreen-ZAG5UJZL.css +2780 -0
  18. package/dist/LeaveScreen-ZAG5UJZL.css.map +7 -0
  19. package/dist/MoreSettings-R7B4BSNT.css +2780 -0
  20. package/dist/MoreSettings-R7B4BSNT.css.map +7 -0
  21. package/dist/MoreSettings-TBJVM7OY.js +16 -0
  22. package/dist/MoreSettings-TBJVM7OY.js.map +7 -0
  23. package/dist/PDFView-JOIJDP65.js +84 -0
  24. package/dist/PDFView-JOIJDP65.js.map +7 -0
  25. package/dist/PDFView-RMR33QH4.css +2780 -0
  26. package/dist/PDFView-RMR33QH4.css.map +7 -0
  27. package/dist/Polls-IN3V2HFI.js +1584 -0
  28. package/dist/Polls-IN3V2HFI.js.map +7 -0
  29. package/dist/Polls-JW7JWGTE.css +2780 -0
  30. package/dist/Polls-JW7JWGTE.css.map +7 -0
  31. package/dist/Prebuilt/components/Notifications/RoleChangeNotification.d.ts +1 -0
  32. package/dist/RaiseHand-WES4KKMD.js +10 -0
  33. package/dist/RaiseHand-WES4KKMD.js.map +7 -0
  34. package/dist/RoleProminence-4ZBDBCMU.css +2780 -0
  35. package/dist/RoleProminence-4ZBDBCMU.css.map +7 -0
  36. package/dist/RoleProminence-PB32DLIB.js +116 -0
  37. package/dist/RoleProminence-PB32DLIB.js.map +7 -0
  38. package/dist/RoomDetailsPane-CZH2SNLE.js +53 -0
  39. package/dist/RoomDetailsPane-CZH2SNLE.js.map +7 -0
  40. package/dist/RoomDetailsPane-XWH2KEFI.css +2780 -0
  41. package/dist/RoomDetailsPane-XWH2KEFI.css.map +7 -0
  42. package/dist/ScreenshareLayout-XVENPVK3.js +358 -0
  43. package/dist/ScreenshareLayout-XVENPVK3.js.map +7 -0
  44. package/dist/ScreenshareLayout-YUW3KHAB.css +2780 -0
  45. package/dist/ScreenshareLayout-YUW3KHAB.css.map +7 -0
  46. package/dist/SidePaneTabs-QXCDHOGG.js +1354 -0
  47. package/dist/SidePaneTabs-QXCDHOGG.js.map +7 -0
  48. package/dist/SidePaneTabs-WQGVOWRP.css +2780 -0
  49. package/dist/SidePaneTabs-WQGVOWRP.css.map +7 -0
  50. package/dist/VBPicker-XN74N67R.js +322 -0
  51. package/dist/VBPicker-XN74N67R.js.map +7 -0
  52. package/dist/VBPicker-YDM2YIOM.css +2780 -0
  53. package/dist/VBPicker-YDM2YIOM.css.map +7 -0
  54. package/dist/WaitingView-77PRTIBV.js +10 -0
  55. package/dist/WaitingView-77PRTIBV.js.map +7 -0
  56. package/dist/WhiteboardLayout-FZC7SOSG.js +96 -0
  57. package/dist/WhiteboardLayout-FZC7SOSG.js.map +7 -0
  58. package/dist/WhiteboardLayout-MNTUWEVK.css +2780 -0
  59. package/dist/WhiteboardLayout-MNTUWEVK.css.map +7 -0
  60. package/dist/android-perm-1.png +0 -0
  61. package/dist/audio-level.png +0 -0
  62. package/dist/chunk-26D5FDBW.js +16812 -0
  63. package/dist/chunk-26D5FDBW.js.map +7 -0
  64. package/dist/chunk-2J5WS52X.js +2595 -0
  65. package/dist/chunk-2J5WS52X.js.map +7 -0
  66. package/dist/chunk-2LWOQMYY.js +30 -0
  67. package/dist/chunk-2LWOQMYY.js.map +7 -0
  68. package/dist/chunk-3MRQJSIY.js +171 -0
  69. package/dist/chunk-3MRQJSIY.js.map +7 -0
  70. package/dist/chunk-4X4WB7X3.js +98 -0
  71. package/dist/chunk-4X4WB7X3.js.map +7 -0
  72. package/dist/chunk-7QZJMUHM.js +90 -0
  73. package/dist/chunk-7QZJMUHM.js.map +7 -0
  74. package/dist/chunk-ABCV7TX5.js +71 -0
  75. package/dist/chunk-ABCV7TX5.js.map +7 -0
  76. package/dist/chunk-BQOT4DK7.js +418 -0
  77. package/dist/chunk-BQOT4DK7.js.map +7 -0
  78. package/dist/chunk-ENHSO6YN.js +6337 -0
  79. package/dist/chunk-ENHSO6YN.js.map +7 -0
  80. package/dist/chunk-JKWX7W4K.js +161 -0
  81. package/dist/chunk-JKWX7W4K.js.map +7 -0
  82. package/dist/chunk-LO4BXA4G.js +114 -0
  83. package/dist/chunk-LO4BXA4G.js.map +7 -0
  84. package/dist/chunk-MRVWNFXC.js +59 -0
  85. package/dist/chunk-MRVWNFXC.js.map +7 -0
  86. package/dist/chunk-OA4HW7HW.js +262 -0
  87. package/dist/chunk-OA4HW7HW.js.map +7 -0
  88. package/dist/chunk-PJQSPAFZ.js +178 -0
  89. package/dist/chunk-PJQSPAFZ.js.map +7 -0
  90. package/dist/chunk-QHQKY35W.js +830 -0
  91. package/dist/chunk-QHQKY35W.js.map +7 -0
  92. package/dist/chunk-QKXHQ6DV.js +254 -0
  93. package/dist/chunk-QKXHQ6DV.js.map +7 -0
  94. package/dist/chunk-RTWNTT77.js +62 -0
  95. package/dist/chunk-RTWNTT77.js.map +7 -0
  96. package/dist/chunk-TBXRX6MK.js +576 -0
  97. package/dist/chunk-TBXRX6MK.js.map +7 -0
  98. package/dist/chunk-TCOPR3BK.js +487 -0
  99. package/dist/chunk-TCOPR3BK.js.map +7 -0
  100. package/dist/chunk-VKORP2LF.js +41 -0
  101. package/dist/chunk-VKORP2LF.js.map +7 -0
  102. package/dist/chunk-YYVDCP5Z.js +136 -0
  103. package/dist/chunk-YYVDCP5Z.js.map +7 -0
  104. package/dist/empty-chat.svg +12 -0
  105. package/dist/index.cjs.css +2 -2
  106. package/dist/index.cjs.css.map +1 -1
  107. package/dist/index.cjs.js +17888 -17792
  108. package/dist/index.cjs.js.map +4 -4
  109. package/dist/index.css +2 -2
  110. package/dist/index.css.map +1 -1
  111. package/dist/index.js +25 -15
  112. package/dist/ios-perm-0.png +0 -0
  113. package/dist/meta.cjs.json +5326 -5184
  114. package/dist/meta.esbuild.json +8960 -6320
  115. package/dist/pdf-share.png +0 -0
  116. package/dist/screen-share.png +0 -0
  117. package/dist/transaction_error.svg +12 -0
  118. package/package.json +7 -7
  119. package/src/Prebuilt/App.tsx +6 -2
  120. package/src/Prebuilt/components/Chat/Chat.tsx +12 -8
  121. package/src/Prebuilt/components/Chat/ChatFooter.tsx +1 -1
  122. package/src/Prebuilt/components/Notifications/Notifications.tsx +2 -0
  123. package/src/Prebuilt/components/Notifications/PeerNotifications.tsx +0 -14
  124. package/src/Prebuilt/components/Notifications/RoleChangeNotification.tsx +24 -0
  125. package/src/Prebuilt/components/VideoLayouts/GridLayout.tsx +43 -31
  126. package/src/Prebuilt/layouts/HLSView.jsx +1 -0
  127. package/src/Prebuilt/layouts/PDFView.jsx +1 -0
  128. package/src/Prebuilt/layouts/SidePane.tsx +12 -6
  129. package/src/Prebuilt/layouts/VideoStreamingSection.tsx +35 -34
  130. package/dist/HLSView-LCFZPBH3.js.map +0 -7
  131. package/dist/chunk-CRGZUJSX.js +0 -34811
  132. package/dist/chunk-CRGZUJSX.js.map +0 -7
@@ -0,0 +1,7 @@
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&nbsp;\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&nbsp;\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 &nbsp;{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
+ }