import React, { useMemo, useState } from 'react'; import { selectAvailableRoleNames, selectRemotePeers, HMSPeer, selectMessagesUnreadCountByRole, selectMessagesUnreadCountByPeerID, selectBroadcastMessagesUnreadCount, } from '@100mslive/hms-video-store'; import { useHMSStore } from '../../hooks/HMSRoomProvider'; import { useHMSTheme } from '../../hooks/HMSThemeProvider'; import { Input } from '../Input'; import { Avatar } from '../TwAvatar'; import { CloseIcon } from '../Icons'; import { hmsUiClassParserGenerator } from '../../utils/classes'; export interface ChatSelectorClasses { root?: string; divider?: string; itemList?: string; item?: string; dot?: string; itemTitle?: string; search?: string; searchBox?: string; clearSearch?: string; itemHover?: string; } export interface ChatSelectorProps { show?: boolean; selectedRole?: string; selectedPeerID?: string; classes?: ChatSelectorClasses; onChange: (change: { peer: string; role: string }) => void; } const defaultClasses: ChatSelectorClasses = { root: 'absolute w-full top-14 left-0 bottom-16 bg-white dark:bg-gray-200 flex flex-col', divider: 'bg-gray-400 dark:bg-white h-px w-full my-2', itemList: 'flex-1 pb-2 overflow-y-auto text-gray-100 dark:text-white text-base', item: 'w-full h-10 flex flex-row items-center pl-5 pr-3', itemHover: 'hover:bg-gray-600 dark:hover:bg-gray-300 cursor-pointer', itemTitle: 'flex-1 w-9/12 min-w-0 truncate', dot: 'bg-brand-main w-3 h-3 rounded-full', searchBox: 'p-3 relative', search: 'h-8 bg-gray-600 dark:bg-gray-300 pr-7', clearSearch: 'absolute right-5 top-5 w-4 h-4 fill-current text-white z-10 cursor-pointer', }; interface ChatSelectorRoleProps { role: string; onChange: (change: { peer: string; role: string }) => void; styler: (s: keyof ChatSelectorClasses) => string | undefined; } interface ChatSelectorPeerProps { peer: HMSPeer; onChange: (change: { peer: string; role: string }) => void; styler: (s: keyof ChatSelectorClasses) => string | undefined; } const ChatSelectorRole = ({ role, styler, onChange, }: ChatSelectorRoleProps) => { const unreadCount = useHMSStore(selectMessagesUnreadCountByRole(role)); return (