@qte/react-native-gifted-chat
Version:
Performant fork of react-native-gifted-chat with FlashList support
48 lines (47 loc) • 2.79 kB
TypeScript
import React from 'react';
import { StyleProp, ViewStyle, TextStyle } from 'react-native';
import { QuickRepliesProps } from '../QuickReplies';
import { MessageTextProps } from '../MessageText';
import { MessageImageProps } from '../MessageImage';
import { TimeProps } from '../Time';
import { User, IMessage, LeftRightStyle, Reply, Omit, MessageVideoProps, MessageAudioProps } from '../types';
export type RenderMessageImageProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageImageProps<TMessage>;
export type RenderMessageVideoProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageVideoProps<TMessage>;
export type RenderMessageAudioProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageAudioProps<TMessage>;
export type RenderMessageTextProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageTextProps<TMessage>;
export interface BubbleProps<TMessage extends IMessage> {
user?: User;
touchableProps?: object;
renderUsernameOnMessage?: boolean;
isCustomViewBottom?: boolean;
inverted?: boolean;
position: 'left' | 'right';
currentMessage: TMessage;
nextMessage?: TMessage;
previousMessage?: TMessage;
optionTitles?: string[];
containerStyle?: LeftRightStyle<ViewStyle>;
wrapperStyle?: LeftRightStyle<ViewStyle>;
textStyle?: LeftRightStyle<TextStyle>;
bottomContainerStyle?: LeftRightStyle<ViewStyle>;
tickStyle?: StyleProp<TextStyle>;
containerToNextStyle?: LeftRightStyle<ViewStyle>;
containerToPreviousStyle?: LeftRightStyle<ViewStyle>;
usernameStyle?: TextStyle;
quickReplyStyle?: StyleProp<ViewStyle>;
quickReplyTextStyle?: StyleProp<TextStyle>;
quickReplyContainerStyle?: StyleProp<ViewStyle>;
onPress?(context?: unknown, message?: unknown): void;
onLongPress?(context?: unknown, message?: unknown): void;
onQuickReply?(replies: Reply[]): void;
renderMessageImage?(props: RenderMessageImageProps<TMessage>): React.ReactNode;
renderMessageVideo?(props: RenderMessageVideoProps<TMessage>): React.ReactNode;
renderMessageAudio?(props: RenderMessageAudioProps<TMessage>): React.ReactNode;
renderMessageText?(props: RenderMessageTextProps<TMessage>): React.ReactNode;
renderCustomView?(bubbleProps: BubbleProps<TMessage>): React.ReactNode;
renderTime?(timeProps: TimeProps<TMessage>): React.ReactNode;
renderTicks?(currentMessage: TMessage): React.ReactNode;
renderUsername?(user?: TMessage['user']): React.ReactNode;
renderQuickReplySend?(): React.ReactNode;
renderQuickReplies?(quickReplies: QuickRepliesProps<TMessage>): React.ReactNode;
}