UNPKG

react-together

Version:

A library to seamlessly add real-time multi-user interaction to your React app!

65 lines (64 loc) 2.24 kB
export interface ChatMessage { id: number; senderId: string; message: string; sentAt: number; } export type Component<P> = React.ComponentType<P> | React.ForwardRefExoticComponent<P> | React.FC<P> | keyof React.ReactHTML; export interface ChatComponents { ChatMinimized?: Component<ChatMinimizedProps>; ChatExpanded?: Component<ChatExpandedProps>; ChatHeader?: Component<ChatHeaderProps>; MessageList?: Component<MessageListProps>; MessageRow?: Component<MessageRowProps>; MessageAvatar?: Component<MessageAvatarProps>; MessageBody?: Component<MessageBodyProps>; ChatInput?: Component<ChatInputProps>; ConnectPrompt?: Component<unknown>; WelcomeMessage?: Component<unknown>; } export interface ChatProps { rtKey: string; chatName?: string | React.ReactElement; hideWhenDisconnected?: boolean; components?: ChatComponents; } export interface ChatMinimizedProps { chatName: string | React.ReactElement; expandChat: () => void; } export interface ChatExpandedProps extends ChatHeaderProps, ChatInputProps, MessageListProps { ChatHeader: Component<ChatHeaderProps>; MessageList: Component<MessageListProps>; MessageRow: Component<MessageRowProps>; MessageAvatar: Component<MessageAvatarProps>; MessageBody: Component<MessageBodyProps>; ChatInput: Component<ChatInputProps>; } export interface ChatHeaderProps { chatName: string | React.ReactElement; minimizeChat: () => void; } export interface MessageRowProps extends MessageBodyProps, MessageAvatarProps { MessageAvatar: Component<MessageAvatarProps>; MessageBody: Component<MessageBodyProps>; } export interface MessageListProps { messages: ChatMessage[]; MessageRow: Component<MessageRowProps>; MessageAvatar: Component<MessageAvatarProps>; MessageBody: Component<MessageBodyProps>; ConnectPrompt: Component<unknown>; WelcomeMessage: Component<unknown>; } export interface MessageAvatarProps { senderId: string; isMe: boolean; } export interface MessageBodyProps extends Omit<ChatMessage, 'id'> { isMe: boolean; formatTime?: (ts: number) => string; } export interface ChatInputProps { sendMessage: (message: string) => void; }