UNPKG

2.34 kBTypeScriptView Raw
1import PropTypes from 'prop-types';
2import React, { ReactNode } from 'react';
3import { ImageStyle, TextStyle, ViewStyle } from 'react-native';
4import { Omit, IMessage, User, LeftRightStyle } from './Models';
5export interface AvatarProps<TMessage extends IMessage> {
6 currentMessage?: TMessage;
7 previousMessage?: TMessage;
8 nextMessage?: TMessage;
9 position: 'left' | 'right';
10 renderAvatarOnTop?: boolean;
11 showAvatarForEveryMessage?: boolean;
12 imageStyle?: LeftRightStyle<ImageStyle>;
13 containerStyle?: LeftRightStyle<ViewStyle>;
14 textStyle?: TextStyle;
15 renderAvatar?(props: Omit<AvatarProps<TMessage>, 'renderAvatar'>): ReactNode;
16 onPressAvatar?(user: User): void;
17 onLongPressAvatar?(user: User): void;
18}
19export default class Avatar<TMessage extends IMessage = IMessage> extends React.Component<AvatarProps<TMessage>> {
20 static defaultProps: {
21 renderAvatarOnTop: boolean;
22 showAvatarForEveryMessage: boolean;
23 position: string;
24 currentMessage: {
25 user: null;
26 };
27 previousMessage: {};
28 nextMessage: {};
29 containerStyle: {};
30 imageStyle: {};
31 onPressAvatar: () => void;
32 onLongPressAvatar: () => void;
33 };
34 static propTypes: {
35 renderAvatarOnTop: PropTypes.Requireable<boolean>;
36 showAvatarForEveryMessage: PropTypes.Requireable<boolean>;
37 position: PropTypes.Requireable<string>;
38 currentMessage: PropTypes.Requireable<object>;
39 previousMessage: PropTypes.Requireable<object>;
40 nextMessage: PropTypes.Requireable<object>;
41 onPressAvatar: PropTypes.Requireable<(...args: any[]) => any>;
42 onLongPressAvatar: PropTypes.Requireable<(...args: any[]) => any>;
43 renderAvatar: PropTypes.Requireable<(...args: any[]) => any>;
44 containerStyle: PropTypes.Requireable<PropTypes.InferProps<{
45 left: PropTypes.Requireable<number | boolean | object>;
46 right: PropTypes.Requireable<number | boolean | object>;
47 }>>;
48 imageStyle: PropTypes.Requireable<PropTypes.InferProps<{
49 left: PropTypes.Requireable<number | boolean | object>;
50 right: PropTypes.Requireable<number | boolean | object>;
51 }>>;
52 };
53 renderAvatar(): {} | null | undefined;
54 render(): JSX.Element | null;
55}