UNPKG

2.74 kBTypeScriptView Raw
1import PropTypes from 'prop-types';
2import React from 'react';
3import { ViewStyle } from 'react-native';
4import Avatar from './Avatar';
5import Bubble from './Bubble';
6import SystemMessage from './SystemMessage';
7import Day 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: Day['props']): React.ReactNode;
21 renderSystemMessage?(props: SystemMessage['props']): React.ReactNode;
22 renderAvatar?(props: Avatar['props']): React.ReactNode;
23 shouldUpdateMessage?(props: MessageProps<IMessage>, nextProps: MessageProps<IMessage>): boolean;
24}
25export default class Message<TMessage extends IMessage = IMessage> extends React.Component<MessageProps<TMessage>> {
26 static defaultProps: {
27 renderAvatar: undefined;
28 renderBubble: null;
29 renderDay: null;
30 renderSystemMessage: null;
31 position: string;
32 currentMessage: {};
33 nextMessage: {};
34 previousMessage: {};
35 user: {};
36 containerStyle: {};
37 showUserAvatar: boolean;
38 inverted: boolean;
39 shouldUpdateMessage: undefined;
40 };
41 static propTypes: {
42 renderAvatar: PropTypes.Requireable<(...args: any[]) => any>;
43 showUserAvatar: PropTypes.Requireable<boolean>;
44 renderBubble: PropTypes.Requireable<(...args: any[]) => any>;
45 renderDay: PropTypes.Requireable<(...args: any[]) => any>;
46 renderSystemMessage: PropTypes.Requireable<(...args: any[]) => any>;
47 position: PropTypes.Requireable<string>;
48 currentMessage: PropTypes.Requireable<object>;
49 nextMessage: PropTypes.Requireable<object>;
50 previousMessage: PropTypes.Requireable<object>;
51 user: PropTypes.Requireable<object>;
52 inverted: PropTypes.Requireable<boolean>;
53 containerStyle: PropTypes.Requireable<PropTypes.InferProps<{
54 left: PropTypes.Requireable<number | boolean | object>;
55 right: PropTypes.Requireable<number | boolean | object>;
56 }>>;
57 shouldUpdateMessage: PropTypes.Requireable<(...args: any[]) => any>;
58 };
59 shouldComponentUpdate(nextProps: MessageProps<TMessage>): boolean;
60 renderDay(): {} | null | undefined;
61 renderBubble(): {} | null | undefined;
62 renderSystemMessage(): {} | null | undefined;
63 renderAvatar(): JSX.Element | null;
64 render(): JSX.Element | null;
65}