UNPKG

9.92 kBTypeScriptView Raw
1import { ActionSheetOptions } from '@expo/react-native-action-sheet';
2import PropTypes from 'prop-types';
3import React from 'react';
4import { Animated, FlatList, StyleProp, TextInput, TextStyle, ViewStyle } from 'react-native';
5import { LightboxProps } from 'react-native-lightbox-v2';
6import { Actions, ActionsProps } from './Actions';
7import { Avatar, AvatarProps } from './Avatar';
8import Bubble from './Bubble';
9import { Composer, ComposerProps } from './Composer';
10import { Day, DayProps } from './Day';
11import GiftedAvatar from './GiftedAvatar';
12import { InputToolbar, InputToolbarProps } from './InputToolbar';
13import { LoadEarlier, LoadEarlierProps } from './LoadEarlier';
14import Message from './Message';
15import MessageContainer from './MessageContainer';
16import { MessageImage, MessageImageProps } from './MessageImage';
17import { MessageText, MessageTextProps } from './MessageText';
18import { IMessage, LeftRightStyle, MessageAudioProps, MessageVideoProps, Reply, User } from './Models';
19import { QuickRepliesProps } from './QuickReplies';
20import { Send, SendProps } from './Send';
21import { SystemMessage, SystemMessageProps } from './SystemMessage';
22import { Time, TimeProps } from './Time';
23import * as utils from './utils';
24export interface GiftedChatProps<TMessage extends IMessage = IMessage> {
25 messageContainerRef?: React.RefObject<FlatList<IMessage>>;
26 textInputRef?: React.RefObject<TextInput>;
27 messages?: TMessage[];
28 isTyping?: boolean;
29 messagesContainerStyle?: StyleProp<ViewStyle>;
30 text?: string;
31 alignTop?: boolean;
32 scrollToBottom?: boolean;
33 scrollToBottomStyle?: StyleProp<ViewStyle>;
34 initialText?: string;
35 placeholder?: string;
36 disableComposer?: boolean;
37 user?: User;
38 locale?: string;
39 timeFormat?: string;
40 dateFormat?: string;
41 loadEarlier?: boolean;
42 isLoadingEarlier?: boolean;
43 showUserAvatar?: boolean;
44 showAvatarForEveryMessage?: boolean;
45 isKeyboardInternallyHandled?: boolean;
46 renderAvatarOnTop?: boolean;
47 inverted?: boolean;
48 imageProps?: Message<TMessage>['props'];
49 lightboxProps?: LightboxProps;
50 bottomOffset?: number;
51 minInputToolbarHeight?: number;
52 listViewProps?: any;
53 textInputProps?: any;
54 keyboardShouldPersistTaps?: any;
55 maxInputLength?: number;
56 forceGetKeyboardHeight?: boolean;
57 alwaysShowSend?: boolean;
58 imageStyle?: StyleProp<ViewStyle>;
59 extraData?: any;
60 minComposerHeight?: number;
61 maxComposerHeight?: number;
62 options?: {
63 [key: string]: any;
64 };
65 optionTintColor?: string;
66 quickReplyStyle?: StyleProp<ViewStyle>;
67 quickReplyTextStyle?: StyleProp<TextStyle>;
68 isCustomViewBottom?: boolean;
69 infiniteScroll?: boolean;
70 timeTextStyle?: LeftRightStyle<TextStyle>;
71 actionSheet?(): {
72 showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => void;
73 };
74 onPressAvatar?(user: User): void;
75 onLongPressAvatar?(user: User): void;
76 messageIdGenerator?(message?: TMessage): string;
77 onSend?(messages: TMessage[]): void;
78 onLoadEarlier?(): void;
79 renderLoading?(): React.ReactNode;
80 renderLoadEarlier?(props: LoadEarlierProps): React.ReactNode;
81 renderAvatar?: null | ((props: AvatarProps<TMessage>) => React.ReactNode);
82 renderBubble?(props: Bubble<TMessage>['props']): React.ReactNode;
83 renderSystemMessage?(props: SystemMessageProps<TMessage>): React.ReactNode;
84 onPress?(context: any, message: TMessage): void;
85 onLongPress?(context: any, message: TMessage): void;
86 renderUsername?(user: User): React.ReactNode;
87 renderMessage?(message: Message<TMessage>['props']): React.ReactNode;
88 renderMessageText?(messageText: MessageTextProps<TMessage>): React.ReactNode;
89 renderMessageImage?(props: MessageImageProps<TMessage>): React.ReactNode;
90 renderMessageVideo?(props: MessageVideoProps<TMessage>): React.ReactNode;
91 renderMessageAudio?(props: MessageAudioProps<TMessage>): React.ReactNode;
92 renderCustomView?(props: Bubble<TMessage>['props']): React.ReactNode;
93 renderDay?(props: DayProps<TMessage>): React.ReactNode;
94 renderTime?(props: TimeProps<TMessage>): React.ReactNode;
95 renderFooter?(): React.ReactNode;
96 renderChatEmpty?(): React.ReactNode;
97 renderChatFooter?(): React.ReactNode;
98 renderInputToolbar?(props: InputToolbarProps<TMessage>): React.ReactNode;
99 renderComposer?(props: ComposerProps): React.ReactNode;
100 renderActions?(props: ActionsProps): React.ReactNode;
101 renderSend?(props: SendProps<TMessage>): React.ReactNode;
102 renderAccessory?(props: InputToolbarProps<TMessage>): React.ReactNode;
103 onPressActionButton?(): void;
104 onInputTextChanged?(text: string): void;
105 parsePatterns?(linkStyle: TextStyle): any;
106 onQuickReply?(replies: Reply[]): void;
107 renderQuickReplies?(quickReplies: QuickRepliesProps<TMessage>): React.ReactNode;
108 renderQuickReplySend?(): React.ReactNode;
109 scrollToBottomComponent?(): React.ReactNode;
110 shouldUpdateMessage?(props: Message<TMessage>['props'], nextProps: Message<TMessage>['props']): boolean;
111}
112export interface GiftedChatState<TMessage extends IMessage = IMessage> {
113 isInitialized: boolean;
114 composerHeight?: number;
115 messagesContainerHeight?: number | Animated.Value;
116 typingDisabled: boolean;
117 text?: string;
118 messages?: TMessage[];
119}
120declare function GiftedChat<TMessage extends IMessage = IMessage>(props: GiftedChatProps): JSX.Element;
121declare namespace GiftedChat {
122 var propTypes: {
123 messages: PropTypes.Requireable<(object | null | undefined)[]>;
124 messagesContainerStyle: PropTypes.Requireable<number | boolean | object>;
125 text: PropTypes.Requireable<string>;
126 initialText: PropTypes.Requireable<string>;
127 placeholder: PropTypes.Requireable<string>;
128 disableComposer: PropTypes.Requireable<boolean>;
129 messageIdGenerator: PropTypes.Requireable<(...args: any[]) => any>;
130 user: PropTypes.Requireable<object>;
131 onSend: PropTypes.Requireable<(...args: any[]) => any>;
132 locale: PropTypes.Requireable<string>;
133 timeFormat: PropTypes.Requireable<string>;
134 dateFormat: PropTypes.Requireable<string>;
135 isKeyboardInternallyHandled: PropTypes.Requireable<boolean>;
136 loadEarlier: PropTypes.Requireable<boolean>;
137 onLoadEarlier: PropTypes.Requireable<(...args: any[]) => any>;
138 isLoadingEarlier: PropTypes.Requireable<boolean>;
139 renderLoading: PropTypes.Requireable<(...args: any[]) => any>;
140 renderLoadEarlier: PropTypes.Requireable<(...args: any[]) => any>;
141 renderAvatar: PropTypes.Requireable<(...args: any[]) => any>;
142 showUserAvatar: PropTypes.Requireable<boolean>;
143 actionSheet: PropTypes.Requireable<(...args: any[]) => any>;
144 onPressAvatar: PropTypes.Requireable<(...args: any[]) => any>;
145 onLongPressAvatar: PropTypes.Requireable<(...args: any[]) => any>;
146 renderUsernameOnMessage: PropTypes.Requireable<boolean>;
147 renderAvatarOnTop: PropTypes.Requireable<boolean>;
148 isCustomViewBottom: PropTypes.Requireable<boolean>;
149 renderBubble: PropTypes.Requireable<(...args: any[]) => any>;
150 renderSystemMessage: PropTypes.Requireable<(...args: any[]) => any>;
151 onLongPress: PropTypes.Requireable<(...args: any[]) => any>;
152 renderMessage: PropTypes.Requireable<(...args: any[]) => any>;
153 renderMessageText: PropTypes.Requireable<(...args: any[]) => any>;
154 renderMessageImage: PropTypes.Requireable<(...args: any[]) => any>;
155 imageProps: PropTypes.Requireable<object>;
156 videoProps: PropTypes.Requireable<object>;
157 audioProps: PropTypes.Requireable<object>;
158 lightboxProps: PropTypes.Requireable<object>;
159 renderCustomView: PropTypes.Requireable<(...args: any[]) => any>;
160 renderDay: PropTypes.Requireable<(...args: any[]) => any>;
161 renderTime: PropTypes.Requireable<(...args: any[]) => any>;
162 renderFooter: PropTypes.Requireable<(...args: any[]) => any>;
163 renderChatEmpty: PropTypes.Requireable<(...args: any[]) => any>;
164 renderChatFooter: PropTypes.Requireable<(...args: any[]) => any>;
165 renderInputToolbar: PropTypes.Requireable<(...args: any[]) => any>;
166 renderComposer: PropTypes.Requireable<(...args: any[]) => any>;
167 renderActions: PropTypes.Requireable<(...args: any[]) => any>;
168 renderSend: PropTypes.Requireable<(...args: any[]) => any>;
169 renderAccessory: PropTypes.Requireable<(...args: any[]) => any>;
170 onPressActionButton: PropTypes.Requireable<(...args: any[]) => any>;
171 bottomOffset: PropTypes.Requireable<number>;
172 minInputToolbarHeight: PropTypes.Requireable<number>;
173 listViewProps: PropTypes.Requireable<object>;
174 keyboardShouldPersistTaps: PropTypes.Requireable<string>;
175 onInputTextChanged: PropTypes.Requireable<(...args: any[]) => any>;
176 maxInputLength: PropTypes.Requireable<number>;
177 forceGetKeyboardHeight: PropTypes.Requireable<boolean>;
178 inverted: PropTypes.Requireable<boolean>;
179 textInputProps: PropTypes.Requireable<object>;
180 extraData: PropTypes.Requireable<object>;
181 minComposerHeight: PropTypes.Requireable<number>;
182 maxComposerHeight: PropTypes.Requireable<number>;
183 alignTop: PropTypes.Requireable<boolean>;
184 };
185 var append: <TMessage extends IMessage>(currentMessages: TMessage[] | undefined, messages: TMessage[], inverted?: boolean) => TMessage[];
186 var prepend: <TMessage extends IMessage>(currentMessages: TMessage[] | undefined, messages: TMessage[], inverted?: boolean) => TMessage[];
187}
188export * from './Models';
189export { GiftedChat, Actions, Avatar, Bubble, SystemMessage, MessageImage, MessageText, Composer, Day, InputToolbar, LoadEarlier, Message, MessageContainer, Send, Time, GiftedAvatar, utils, };