@qte/react-native-gifted-chat
Version:
Performant fork of react-native-gifted-chat with FlashList support
91 lines (85 loc) • 2.86 kB
text/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'
/* eslint-disable no-use-before-define */
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>
/* eslint-enable no-use-before-define */
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
}