react-peer-chat
Version:
An easy to use react component for impleting peer-to-peer chatting.
50 lines (46 loc) • 1.54 kB
TypeScript
import { PeerOptions } from 'peerjs';
export { PeerOptions } from 'peerjs';
import { CSSProperties, DetailedHTMLProps, HTMLAttributes, ReactNode } from 'react';
type Message = {
id: string;
text: string;
};
type MessageEvent = (message: Message) => void;
type RemotePeerId = string | string[];
type useChatProps = {
name?: string;
peerId: string;
remotePeerId?: RemotePeerId;
text?: boolean;
recoverChat?: boolean;
audio?: boolean;
peerOptions?: PeerOptions;
onError?: Function;
onMicError?: Function;
onMessageSent?: MessageEvent;
onMessageReceived?: MessageEvent;
};
type IconProps = React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>;
type RemotePeers = {
[id: string]: string;
};
type Children = (childrenOptions: ChildrenOptions) => ReactNode;
type ChildrenOptions = {
remotePeers?: RemotePeers;
messages?: Message[];
sendMessage?: (message: Message) => void;
audio?: boolean;
setAudio?: (audio: boolean) => void;
};
type ChatProps = useChatProps & {
dialogOptions?: DialogOptions;
props?: DivProps;
children?: Children;
};
type DialogOptions = {
position?: DialogPosition;
style?: CSSProperties;
};
type DialogPosition = "left" | "center" | "right";
type DivProps = DetailedHTMLProps<HTMLAttributes<HTMLDivElement>, HTMLDivElement>;
export type { ChatProps, Children, ChildrenOptions, DialogOptions, DialogPosition, DivProps, IconProps, Message, MessageEvent, RemotePeerId, RemotePeers, useChatProps };