UNPKG

7.26 kBTypeScriptView Raw
1import PropTypes from 'prop-types';
2import React from 'react';
3import { StyleProp, ViewStyle, TextStyle } from 'react-native';
4import { QuickRepliesProps } from './QuickReplies';
5import { MessageTextProps } from './MessageText';
6import { MessageImageProps } from './MessageImage';
7import { TimeProps } from './Time';
8import { User, IMessage, LeftRightStyle, Reply, Omit, MessageVideoProps, MessageAudioProps } from './Models';
9export declare type RenderMessageImageProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageImageProps<TMessage>;
10export declare type RenderMessageVideoProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageVideoProps<TMessage>;
11export declare type RenderMessageAudioProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageAudioProps<TMessage>;
12export declare type RenderMessageTextProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageTextProps<TMessage>;
13export interface BubbleProps<TMessage extends IMessage> {
14 user?: User;
15 touchableProps?: object;
16 renderUsernameOnMessage?: boolean;
17 isCustomViewBottom?: boolean;
18 inverted?: boolean;
19 position: 'left' | 'right';
20 currentMessage?: TMessage;
21 nextMessage?: TMessage;
22 previousMessage?: TMessage;
23 optionTitles?: string[];
24 containerStyle?: LeftRightStyle<ViewStyle>;
25 wrapperStyle?: LeftRightStyle<ViewStyle>;
26 textStyle?: LeftRightStyle<TextStyle>;
27 bottomContainerStyle?: LeftRightStyle<ViewStyle>;
28 tickStyle?: StyleProp<TextStyle>;
29 containerToNextStyle?: LeftRightStyle<ViewStyle>;
30 containerToPreviousStyle?: LeftRightStyle<ViewStyle>;
31 usernameStyle?: TextStyle;
32 quickReplyStyle?: StyleProp<ViewStyle>;
33 quickReplyTextStyle?: StyleProp<TextStyle>;
34 onPress?(context?: any, message?: any): void;
35 onLongPress?(context?: any, message?: any): void;
36 onQuickReply?(replies: Reply[]): void;
37 renderMessageImage?(props: RenderMessageImageProps<TMessage>): React.ReactNode;
38 renderMessageVideo?(props: RenderMessageVideoProps<TMessage>): React.ReactNode;
39 renderMessageAudio?(props: RenderMessageAudioProps<TMessage>): React.ReactNode;
40 renderMessageText?(props: RenderMessageTextProps<TMessage>): React.ReactNode;
41 renderCustomView?(bubbleProps: BubbleProps<TMessage>): React.ReactNode;
42 renderTime?(timeProps: TimeProps<TMessage>): React.ReactNode;
43 renderTicks?(currentMessage: TMessage): React.ReactNode;
44 renderUsername?(user?: TMessage['user']): React.ReactNode;
45 renderQuickReplySend?(): React.ReactNode;
46 renderQuickReplies?(quickReplies: QuickRepliesProps<TMessage>): React.ReactNode;
47}
48export default class Bubble<TMessage extends IMessage = IMessage> extends React.Component<BubbleProps<TMessage>> {
49 static contextType: React.Context<import("./GiftedChatContext").IGiftedChatContext>;
50 static defaultProps: {
51 touchableProps: {};
52 onPress: null;
53 onLongPress: null;
54 renderMessageImage: null;
55 renderMessageVideo: null;
56 renderMessageAudio: null;
57 renderMessageText: null;
58 renderCustomView: null;
59 renderUsername: null;
60 renderTicks: null;
61 renderTime: null;
62 renderQuickReplies: null;
63 onQuickReply: null;
64 position: string;
65 optionTitles: string[];
66 currentMessage: {
67 text: null;
68 createdAt: null;
69 image: null;
70 };
71 nextMessage: {};
72 previousMessage: {};
73 containerStyle: {};
74 wrapperStyle: {};
75 bottomContainerStyle: {};
76 tickStyle: {};
77 usernameStyle: {};
78 containerToNextStyle: {};
79 containerToPreviousStyle: {};
80 };
81 static propTypes: {
82 user: PropTypes.Validator<object>;
83 touchableProps: PropTypes.Requireable<object>;
84 onLongPress: PropTypes.Requireable<(...args: any[]) => any>;
85 renderMessageImage: PropTypes.Requireable<(...args: any[]) => any>;
86 renderMessageVideo: PropTypes.Requireable<(...args: any[]) => any>;
87 renderMessageAudio: PropTypes.Requireable<(...args: any[]) => any>;
88 renderMessageText: PropTypes.Requireable<(...args: any[]) => any>;
89 renderCustomView: PropTypes.Requireable<(...args: any[]) => any>;
90 isCustomViewBottom: PropTypes.Requireable<boolean>;
91 renderUsernameOnMessage: PropTypes.Requireable<boolean>;
92 renderUsername: PropTypes.Requireable<(...args: any[]) => any>;
93 renderTime: PropTypes.Requireable<(...args: any[]) => any>;
94 renderTicks: PropTypes.Requireable<(...args: any[]) => any>;
95 renderQuickReplies: PropTypes.Requireable<(...args: any[]) => any>;
96 onQuickReply: PropTypes.Requireable<(...args: any[]) => any>;
97 position: PropTypes.Requireable<string>;
98 optionTitles: PropTypes.Requireable<(string | null | undefined)[]>;
99 currentMessage: PropTypes.Requireable<object>;
100 nextMessage: PropTypes.Requireable<object>;
101 previousMessage: PropTypes.Requireable<object>;
102 containerStyle: PropTypes.Requireable<PropTypes.InferProps<{
103 left: PropTypes.Requireable<number | boolean | object>;
104 right: PropTypes.Requireable<number | boolean | object>;
105 }>>;
106 wrapperStyle: PropTypes.Requireable<PropTypes.InferProps<{
107 left: PropTypes.Requireable<number | boolean | object>;
108 right: PropTypes.Requireable<number | boolean | object>;
109 }>>;
110 bottomContainerStyle: PropTypes.Requireable<PropTypes.InferProps<{
111 left: PropTypes.Requireable<number | boolean | object>;
112 right: PropTypes.Requireable<number | boolean | object>;
113 }>>;
114 tickStyle: PropTypes.Requireable<number | boolean | object>;
115 usernameStyle: PropTypes.Requireable<number | boolean | object>;
116 containerToNextStyle: PropTypes.Requireable<PropTypes.InferProps<{
117 left: PropTypes.Requireable<number | boolean | object>;
118 right: PropTypes.Requireable<number | boolean | object>;
119 }>>;
120 containerToPreviousStyle: PropTypes.Requireable<PropTypes.InferProps<{
121 left: PropTypes.Requireable<number | boolean | object>;
122 right: PropTypes.Requireable<number | boolean | object>;
123 }>>;
124 };
125 onPress: () => void;
126 onLongPress: () => void;
127 styledBubbleToNext(): (StyleProp<ViewStyle> | {
128 borderBottomLeftRadius: number;
129 } | {
130 borderBottomRightRadius: number;
131 })[] | null;
132 styledBubbleToPrevious(): (StyleProp<ViewStyle> | {
133 borderTopLeftRadius: number;
134 } | {
135 borderTopRightRadius: number;
136 })[] | null;
137 renderQuickReplies(): React.ReactNode;
138 renderMessageText(): React.ReactNode;
139 renderMessageImage(): React.ReactNode;
140 renderMessageVideo(): React.ReactNode;
141 renderMessageAudio(): React.ReactNode;
142 renderTicks(): React.ReactNode;
143 renderTime(): React.ReactNode;
144 renderUsername(): React.ReactNode;
145 renderCustomView(): React.ReactNode;
146 renderBubbleContent(): JSX.Element;
147 render(): JSX.Element;
148}