1 | import PropTypes from 'prop-types';
|
2 | import React, { RefObject } from 'react';
|
3 | import { Animated, StyleProp, ViewStyle, FlatList, TextStyle } from 'react-native';
|
4 | import { ActionSheetOptions } from '@expo/react-native-action-sheet';
|
5 | import * as utils from './utils';
|
6 | import Actions from './Actions';
|
7 | import Avatar from './Avatar';
|
8 | import Bubble from './Bubble';
|
9 | import SystemMessage from './SystemMessage';
|
10 | import MessageImage from './MessageImage';
|
11 | import MessageText from './MessageText';
|
12 | import Composer from './Composer';
|
13 | import Day from './Day';
|
14 | import InputToolbar from './InputToolbar';
|
15 | import LoadEarlier from './LoadEarlier';
|
16 | import Message from './Message';
|
17 | import MessageContainer from './MessageContainer';
|
18 | import Send from './Send';
|
19 | import Time from './Time';
|
20 | import GiftedAvatar from './GiftedAvatar';
|
21 | import { IMessage, User, Reply, LeftRightStyle } from './Models';
|
22 | import QuickReplies from './QuickReplies';
|
23 | export interface GiftedChatProps<TMessage extends IMessage = IMessage> {
|
24 | messages?: TMessage[];
|
25 | isTyping?: boolean;
|
26 | messagesContainerStyle?: StyleProp<ViewStyle>;
|
27 | text?: string;
|
28 | alignTop?: boolean;
|
29 | wrapInSafeArea?: boolean;
|
30 | scrollToBottom?: boolean;
|
31 | scrollToBottomStyle?: StyleProp<ViewStyle>;
|
32 | initialText?: string;
|
33 | placeholder?: string;
|
34 | disableComposer?: boolean;
|
35 | user?: User;
|
36 | locale?: string;
|
37 | timeFormat?: string;
|
38 | dateFormat?: string;
|
39 | loadEarlier?: boolean;
|
40 | isLoadingEarlier?: boolean;
|
41 | showUserAvatar?: boolean;
|
42 | showAvatarForEveryMessage?: boolean;
|
43 | isKeyboardInternallyHandled?: boolean;
|
44 | renderAvatarOnTop?: boolean;
|
45 | inverted?: boolean;
|
46 | imageProps?: Message<TMessage>['props'];
|
47 | lightboxProps?: any;
|
48 | bottomOffset?: number;
|
49 | minInputToolbarHeight?: number;
|
50 | listViewProps?: any;
|
51 | textInputProps?: any;
|
52 | keyboardShouldPersistTaps?: any;
|
53 | maxInputLength?: number;
|
54 | forceGetKeyboardHeight?: boolean;
|
55 | alwaysShowSend?: boolean;
|
56 | imageStyle?: StyleProp<ViewStyle>;
|
57 | extraData?: any;
|
58 | minComposerHeight?: number;
|
59 | maxComposerHeight?: number;
|
60 | options?: {
|
61 | [key: string]: any;
|
62 | };
|
63 | optionTintColor?: string;
|
64 | quickReplyStyle?: StyleProp<ViewStyle>;
|
65 | isCustomViewBottom?: boolean;
|
66 | infiniteScroll?: boolean;
|
67 | timeTextStyle?: LeftRightStyle<TextStyle>;
|
68 | actionSheet?(): {
|
69 | showActionSheetWithOptions: (options: ActionSheetOptions, callback: (i: number) => void) => void;
|
70 | };
|
71 | onPressAvatar?(user: User): void;
|
72 | onLongPressAvatar?(user: User): void;
|
73 | messageIdGenerator?(message?: TMessage): string;
|
74 | onSend?(messages: TMessage[]): void;
|
75 | onLoadEarlier?(): void;
|
76 | renderLoading?(): React.ReactNode;
|
77 | renderLoadEarlier?(props: LoadEarlier['props']): React.ReactNode;
|
78 | renderAvatar?(props: Avatar<TMessage>['props']): React.ReactNode;
|
79 | renderBubble?(props: Bubble<TMessage>['props']): React.ReactNode;
|
80 | renderSystemMessage?(props: SystemMessage<TMessage>['props']): React.ReactNode;
|
81 | onLongPress?(context: any, message: any): void;
|
82 | renderMessage?(message: Message<TMessage>['props']): React.ReactNode;
|
83 | renderMessageText?(messageText: MessageText<TMessage>['props']): React.ReactNode;
|
84 | renderMessageImage?(props: MessageImage<TMessage>['props']): React.ReactNode;
|
85 | renderCustomView?(props: Bubble<TMessage>['props']): React.ReactNode;
|
86 | renderDay?(props: Day<TMessage>['props']): React.ReactNode;
|
87 | renderTime?(props: Time<TMessage>['props']): React.ReactNode;
|
88 | renderFooter?(): React.ReactNode;
|
89 | renderChatEmpty?(): React.ReactNode;
|
90 | renderChatFooter?(): React.ReactNode;
|
91 | renderInputToolbar?(props: InputToolbar['props']): React.ReactNode;
|
92 | renderComposer?(props: Composer['props']): React.ReactNode;
|
93 | renderActions?(props: Actions['props']): React.ReactNode;
|
94 | renderSend?(props: Send['props']): React.ReactNode;
|
95 | renderAccessory?(props: InputToolbar['props']): React.ReactNode;
|
96 | onPressActionButton?(): void;
|
97 | onInputTextChanged?(text: string): void;
|
98 | parsePatterns?(linkStyle: TextStyle): any;
|
99 | onQuickReply?(replies: Reply[]): void;
|
100 | renderQuickReplies?(quickReplies: QuickReplies['props']): React.ReactNode;
|
101 | renderQuickReplySend?(): React.ReactNode;
|
102 | scrollToBottomComponent?(): React.ReactNode;
|
103 | shouldUpdateMessage?(props: Message<TMessage>['props'], nextProps: Message<TMessage>['props']): boolean;
|
104 | }
|
105 | export interface GiftedChatState<TMessage extends IMessage = IMessage> {
|
106 | isInitialized: boolean;
|
107 | composerHeight?: number;
|
108 | messagesContainerHeight?: number | Animated.Value;
|
109 | typingDisabled: boolean;
|
110 | text?: string;
|
111 | messages?: TMessage[];
|
112 | }
|
113 | declare class GiftedChat<TMessage extends IMessage = IMessage> extends React.Component<GiftedChatProps<TMessage>, GiftedChatState> {
|
114 | static childContextTypes: {
|
115 | actionSheet: PropTypes.Requireable<(...args: any[]) => any>;
|
116 | getLocale: PropTypes.Requireable<(...args: any[]) => any>;
|
117 | };
|
118 | static defaultProps: {
|
119 | messages: never[];
|
120 | messagesContainerStyle: undefined;
|
121 | text: undefined;
|
122 | placeholder: string;
|
123 | disableComposer: boolean;
|
124 | messageIdGenerator: () => string;
|
125 | user: {};
|
126 | onSend: () => void;
|
127 | locale: null;
|
128 | timeFormat: string;
|
129 | dateFormat: string;
|
130 | loadEarlier: boolean;
|
131 | onLoadEarlier: () => void;
|
132 | isLoadingEarlier: boolean;
|
133 | renderLoading: null;
|
134 | renderLoadEarlier: null;
|
135 | renderAvatar: undefined;
|
136 | showUserAvatar: boolean;
|
137 | actionSheet: null;
|
138 | onPressAvatar: null;
|
139 | onLongPressAvatar: null;
|
140 | renderUsernameOnMessage: boolean;
|
141 | renderAvatarOnTop: boolean;
|
142 | renderBubble: null;
|
143 | renderSystemMessage: null;
|
144 | onLongPress: null;
|
145 | renderMessage: null;
|
146 | renderMessageText: null;
|
147 | renderMessageImage: null;
|
148 | imageProps: {};
|
149 | videoProps: {};
|
150 | audioProps: {};
|
151 | lightboxProps: {};
|
152 | textInputProps: {};
|
153 | listViewProps: {};
|
154 | renderCustomView: null;
|
155 | isCustomViewBottom: boolean;
|
156 | renderDay: null;
|
157 | renderTime: null;
|
158 | renderFooter: null;
|
159 | renderChatEmpty: null;
|
160 | renderChatFooter: null;
|
161 | renderInputToolbar: null;
|
162 | renderComposer: null;
|
163 | renderActions: null;
|
164 | renderSend: null;
|
165 | renderAccessory: null;
|
166 | isKeyboardInternallyHandled: boolean;
|
167 | onPressActionButton: null;
|
168 | bottomOffset: number;
|
169 | minInputToolbarHeight: number;
|
170 | keyboardShouldPersistTaps: string;
|
171 | onInputTextChanged: null;
|
172 | maxInputLength: null;
|
173 | forceGetKeyboardHeight: boolean;
|
174 | inverted: boolean;
|
175 | extraData: null;
|
176 | minComposerHeight: number | undefined;
|
177 | maxComposerHeight: number;
|
178 | wrapInSafeArea: boolean;
|
179 | };
|
180 | static propTypes: {
|
181 | messages: PropTypes.Requireable<(object | null | undefined)[]>;
|
182 | messagesContainerStyle: PropTypes.Requireable<number | boolean | object>;
|
183 | text: PropTypes.Requireable<string>;
|
184 | initialText: PropTypes.Requireable<string>;
|
185 | placeholder: PropTypes.Requireable<string>;
|
186 | disableComposer: PropTypes.Requireable<boolean>;
|
187 | messageIdGenerator: PropTypes.Requireable<(...args: any[]) => any>;
|
188 | user: PropTypes.Requireable<object>;
|
189 | onSend: PropTypes.Requireable<(...args: any[]) => any>;
|
190 | locale: PropTypes.Requireable<string>;
|
191 | timeFormat: PropTypes.Requireable<string>;
|
192 | dateFormat: PropTypes.Requireable<string>;
|
193 | isKeyboardInternallyHandled: PropTypes.Requireable<boolean>;
|
194 | loadEarlier: PropTypes.Requireable<boolean>;
|
195 | onLoadEarlier: PropTypes.Requireable<(...args: any[]) => any>;
|
196 | isLoadingEarlier: PropTypes.Requireable<boolean>;
|
197 | renderLoading: PropTypes.Requireable<(...args: any[]) => any>;
|
198 | renderLoadEarlier: PropTypes.Requireable<(...args: any[]) => any>;
|
199 | renderAvatar: PropTypes.Requireable<(...args: any[]) => any>;
|
200 | showUserAvatar: PropTypes.Requireable<boolean>;
|
201 | actionSheet: PropTypes.Requireable<(...args: any[]) => any>;
|
202 | onPressAvatar: PropTypes.Requireable<(...args: any[]) => any>;
|
203 | onLongPressAvatar: PropTypes.Requireable<(...args: any[]) => any>;
|
204 | renderUsernameOnMessage: PropTypes.Requireable<boolean>;
|
205 | renderAvatarOnTop: PropTypes.Requireable<boolean>;
|
206 | isCustomViewBottom: PropTypes.Requireable<boolean>;
|
207 | renderBubble: PropTypes.Requireable<(...args: any[]) => any>;
|
208 | renderSystemMessage: PropTypes.Requireable<(...args: any[]) => any>;
|
209 | onLongPress: PropTypes.Requireable<(...args: any[]) => any>;
|
210 | renderMessage: PropTypes.Requireable<(...args: any[]) => any>;
|
211 | renderMessageText: PropTypes.Requireable<(...args: any[]) => any>;
|
212 | renderMessageImage: PropTypes.Requireable<(...args: any[]) => any>;
|
213 | imageProps: PropTypes.Requireable<object>;
|
214 | videoProps: PropTypes.Requireable<object>;
|
215 | audioProps: PropTypes.Requireable<object>;
|
216 | lightboxProps: PropTypes.Requireable<object>;
|
217 | renderCustomView: PropTypes.Requireable<(...args: any[]) => any>;
|
218 | renderDay: PropTypes.Requireable<(...args: any[]) => any>;
|
219 | renderTime: PropTypes.Requireable<(...args: any[]) => any>;
|
220 | renderFooter: PropTypes.Requireable<(...args: any[]) => any>;
|
221 | renderChatEmpty: PropTypes.Requireable<(...args: any[]) => any>;
|
222 | renderChatFooter: PropTypes.Requireable<(...args: any[]) => any>;
|
223 | renderInputToolbar: PropTypes.Requireable<(...args: any[]) => any>;
|
224 | renderComposer: PropTypes.Requireable<(...args: any[]) => any>;
|
225 | renderActions: PropTypes.Requireable<(...args: any[]) => any>;
|
226 | renderSend: PropTypes.Requireable<(...args: any[]) => any>;
|
227 | renderAccessory: PropTypes.Requireable<(...args: any[]) => any>;
|
228 | onPressActionButton: PropTypes.Requireable<(...args: any[]) => any>;
|
229 | bottomOffset: PropTypes.Requireable<number>;
|
230 | minInputToolbarHeight: PropTypes.Requireable<number>;
|
231 | listViewProps: PropTypes.Requireable<object>;
|
232 | keyboardShouldPersistTaps: PropTypes.Requireable<string>;
|
233 | onInputTextChanged: PropTypes.Requireable<(...args: any[]) => any>;
|
234 | maxInputLength: PropTypes.Requireable<number>;
|
235 | forceGetKeyboardHeight: PropTypes.Requireable<boolean>;
|
236 | inverted: PropTypes.Requireable<boolean>;
|
237 | textInputProps: PropTypes.Requireable<object>;
|
238 | extraData: PropTypes.Requireable<object>;
|
239 | minComposerHeight: PropTypes.Requireable<number>;
|
240 | maxComposerHeight: PropTypes.Requireable<number>;
|
241 | alignTop: PropTypes.Requireable<boolean>;
|
242 | wrapInSafeArea: PropTypes.Requireable<boolean>;
|
243 | };
|
244 | static append<TMessage extends IMessage>(currentMessages: TMessage[] | undefined, messages: TMessage[], inverted?: boolean): TMessage[];
|
245 | static prepend<TMessage extends IMessage>(currentMessages: TMessage[] | undefined, messages: TMessage[], inverted?: boolean): TMessage[];
|
246 | _isMounted: boolean;
|
247 | _keyboardHeight: number;
|
248 | _bottomOffset: number;
|
249 | _maxHeight?: number;
|
250 | _isFirstLayout: boolean;
|
251 | _locale: string;
|
252 | invertibleScrollViewProps: any;
|
253 | _actionSheetRef: any;
|
254 | _messageContainerRef?: RefObject<FlatList<IMessage>>;
|
255 | textInput?: any;
|
256 | state: {
|
257 | isInitialized: boolean;
|
258 | composerHeight: number | undefined;
|
259 | messagesContainerHeight: undefined;
|
260 | typingDisabled: boolean;
|
261 | text: undefined;
|
262 | messages: undefined;
|
263 | };
|
264 | constructor(props: GiftedChatProps<TMessage>);
|
265 | getChildContext(): {
|
266 | actionSheet: () => any;
|
267 | getLocale: () => string;
|
268 | };
|
269 | componentDidMount(): void;
|
270 | componentWillUnmount(): void;
|
271 | componentDidUpdate(prevProps?: GiftedChatProps<TMessage>): void;
|
272 | initLocale(): void;
|
273 | setLocale(locale: string): void;
|
274 | getLocale: () => string;
|
275 | setTextFromProp(textProp?: string): void;
|
276 | getTextFromProp(fallback: string): string;
|
277 | setMessages(messages: TMessage[]): void;
|
278 | getMessages(): undefined;
|
279 | setMaxHeight(height: number): void;
|
280 | getMaxHeight(): number | undefined;
|
281 | setKeyboardHeight(height: number): void;
|
282 | getKeyboardHeight(): number;
|
283 | setBottomOffset(value: number): void;
|
284 | getBottomOffset(): number;
|
285 | setIsFirstLayout(value: boolean): void;
|
286 | getIsFirstLayout(): boolean;
|
287 | setIsTypingDisabled(value: boolean): void;
|
288 | getIsTypingDisabled(): boolean;
|
289 | setIsMounted(value: boolean): void;
|
290 | getIsMounted(): boolean;
|
291 | getMinInputToolbarHeight(): number | undefined;
|
292 | calculateInputToolbarHeight(composerHeight: number): number;
|
293 | |
294 |
|
295 |
|
296 | getBasicMessagesContainerHeight(composerHeight?: number | undefined): number;
|
297 | |
298 |
|
299 |
|
300 | getMessagesContainerHeightWithKeyboard(composerHeight?: number | undefined): number;
|
301 | safeAreaSupport: (bottomOffset: number) => number;
|
302 | onKeyboardWillShow: (e: any) => void;
|
303 | onKeyboardWillHide: (_e: any) => void;
|
304 | onKeyboardDidShow: (e: any) => void;
|
305 | onKeyboardDidHide: (e: any) => void;
|
306 | scrollToBottom(animated?: boolean): void;
|
307 | renderMessages(): JSX.Element;
|
308 | onSend: (messages?: TMessage[], shouldResetInputToolbar?: boolean) => void;
|
309 | resetInputToolbar(): void;
|
310 | focusTextInput(): void;
|
311 | onInputSizeChanged: (size: {
|
312 | height: number;
|
313 | }) => void;
|
314 | onInputTextChanged: (text: string) => void;
|
315 | notifyInputTextReset(): void;
|
316 | onInitialLayoutViewLayout: (e: any) => void;
|
317 | onMainViewLayout: (e: any) => void;
|
318 | renderInputToolbar(): {} | null | undefined;
|
319 | renderChatFooter(): {} | null | undefined;
|
320 | renderLoading(): {} | null | undefined;
|
321 | render(): JSX.Element;
|
322 | }
|
323 | export * from './Models';
|
324 | export { GiftedChat, Actions, Avatar, Bubble, SystemMessage, MessageImage, MessageText, Composer, Day, InputToolbar, LoadEarlier, Message, MessageContainer, Send, Time, GiftedAvatar, utils, };
|