UNPKG

2.95 kBTypeScriptView Raw
1import PropTypes from 'prop-types';
2import React from 'react';
3import { ViewStyle, LayoutChangeEvent } from 'react-native';
4import { AvatarProps } from './Avatar';
5import Bubble from './Bubble';
6import { SystemMessageProps } from './SystemMessage';
7import { DayProps } from './Day';
8import { IMessage, User, LeftRightStyle } from './Models';
9export interface MessageProps<TMessage extends IMessage> {
10 key: any;
11 showUserAvatar?: boolean;
12 position: 'left' | 'right';
13 currentMessage?: TMessage;
14 nextMessage?: TMessage;
15 previousMessage?: TMessage;
16 user: User;
17 inverted?: boolean;
18 containerStyle?: LeftRightStyle<ViewStyle>;
19 renderBubble?(props: Bubble['props']): React.ReactNode;
20 renderDay?(props: DayProps<TMessage>): React.ReactNode;
21 renderSystemMessage?(props: SystemMessageProps<TMessage>): React.ReactNode;
22 renderAvatar?(props: AvatarProps<TMessage>): React.ReactNode;
23 shouldUpdateMessage?(props: MessageProps<IMessage>, nextProps: MessageProps<IMessage>): boolean;
24 onMessageLayout?(event: LayoutChangeEvent): void;
25}
26export default class Message<TMessage extends IMessage = IMessage> extends React.Component<MessageProps<TMessage>> {
27 static defaultProps: {
28 renderAvatar: undefined;
29 renderBubble: null;
30 renderDay: null;
31 renderSystemMessage: null;
32 position: string;
33 currentMessage: {};
34 nextMessage: {};
35 previousMessage: {};
36 user: {};
37 containerStyle: {};
38 showUserAvatar: boolean;
39 inverted: boolean;
40 shouldUpdateMessage: undefined;
41 onMessageLayout: undefined;
42 };
43 static propTypes: {
44 renderAvatar: PropTypes.Requireable<(...args: any[]) => any>;
45 showUserAvatar: PropTypes.Requireable<boolean>;
46 renderBubble: PropTypes.Requireable<(...args: any[]) => any>;
47 renderDay: PropTypes.Requireable<(...args: any[]) => any>;
48 renderSystemMessage: PropTypes.Requireable<(...args: any[]) => any>;
49 position: PropTypes.Requireable<string>;
50 currentMessage: PropTypes.Requireable<object>;
51 nextMessage: PropTypes.Requireable<object>;
52 previousMessage: PropTypes.Requireable<object>;
53 user: PropTypes.Requireable<object>;
54 inverted: PropTypes.Requireable<boolean>;
55 containerStyle: PropTypes.Requireable<PropTypes.InferProps<{
56 left: PropTypes.Requireable<number | boolean | object>;
57 right: PropTypes.Requireable<number | boolean | object>;
58 }>>;
59 shouldUpdateMessage: PropTypes.Requireable<(...args: any[]) => any>;
60 onMessageLayout: PropTypes.Requireable<(...args: any[]) => any>;
61 };
62 shouldComponentUpdate(nextProps: MessageProps<TMessage>): boolean;
63 renderDay(): React.ReactNode;
64 renderBubble(): React.ReactNode;
65 renderSystemMessage(): React.ReactNode;
66 renderAvatar(): JSX.Element | null;
67 render(): JSX.Element | null;
68}