@kesha-antonov/react-native-chat 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +1087 -0
  3. package/lib/Actions.d.ts +16 -0
  4. package/lib/Actions.d.ts.map +1 -0
  5. package/lib/Actions.js +64 -0
  6. package/lib/Actions.js.map +1 -0
  7. package/lib/Avatar.d.ts +19 -0
  8. package/lib/Avatar.d.ts.map +1 -0
  9. package/lib/Avatar.js +93 -0
  10. package/lib/Avatar.js.map +1 -0
  11. package/lib/Bubble/index.d.ts +6 -0
  12. package/lib/Bubble/index.d.ts.map +1 -0
  13. package/lib/Bubble/index.js +391 -0
  14. package/lib/Bubble/index.js.map +1 -0
  15. package/lib/Bubble/styles.d.ts +57 -0
  16. package/lib/Bubble/styles.d.ts.map +1 -0
  17. package/lib/Bubble/styles.js +59 -0
  18. package/lib/Bubble/styles.js.map +1 -0
  19. package/lib/Bubble/types.d.ts +62 -0
  20. package/lib/Bubble/types.d.ts.map +1 -0
  21. package/lib/Bubble/types.js +2 -0
  22. package/lib/Bubble/types.js.map +1 -0
  23. package/lib/Chat/index.d.ts +10 -0
  24. package/lib/Chat/index.d.ts.map +1 -0
  25. package/lib/Chat/index.js +243 -0
  26. package/lib/Chat/index.js.map +1 -0
  27. package/lib/Chat/styles.d.ts +13 -0
  28. package/lib/Chat/styles.d.ts.map +1 -0
  29. package/lib/Chat/styles.js +13 -0
  30. package/lib/Chat/styles.js.map +1 -0
  31. package/lib/Chat/types.d.ts +102 -0
  32. package/lib/Chat/types.d.ts.map +1 -0
  33. package/lib/Chat/types.js +2 -0
  34. package/lib/Chat/types.js.map +1 -0
  35. package/lib/ChatAvatar.d.ts +12 -0
  36. package/lib/ChatAvatar.d.ts.map +1 -0
  37. package/lib/ChatAvatar.js +100 -0
  38. package/lib/ChatAvatar.js.map +1 -0
  39. package/lib/ChatContext.d.ts +12 -0
  40. package/lib/ChatContext.d.ts.map +1 -0
  41. package/lib/ChatContext.js +10 -0
  42. package/lib/ChatContext.js.map +1 -0
  43. package/lib/Color.d.ts +18 -0
  44. package/lib/Color.d.ts.map +1 -0
  45. package/lib/Color.js +18 -0
  46. package/lib/Color.js.map +1 -0
  47. package/lib/Composer.d.ts +9 -0
  48. package/lib/Composer.d.ts.map +1 -0
  49. package/lib/Composer.js +63 -0
  50. package/lib/Composer.js.map +1 -0
  51. package/lib/Constant.d.ts +8 -0
  52. package/lib/Constant.d.ts.map +1 -0
  53. package/lib/Constant.js +8 -0
  54. package/lib/Constant.js.map +1 -0
  55. package/lib/Day/index.d.ts +5 -0
  56. package/lib/Day/index.d.ts.map +1 -0
  57. package/lib/Day/index.js +39 -0
  58. package/lib/Day/index.js.map +1 -0
  59. package/lib/Day/styles.d.ts +21 -0
  60. package/lib/Day/styles.d.ts.map +1 -0
  61. package/lib/Day/styles.js +22 -0
  62. package/lib/Day/styles.js.map +1 -0
  63. package/lib/Day/types.d.ts +17 -0
  64. package/lib/Day/types.d.ts.map +1 -0
  65. package/lib/Day/types.js +2 -0
  66. package/lib/Day/types.js.map +1 -0
  67. package/lib/InputToolbar.d.ts +36 -0
  68. package/lib/InputToolbar.d.ts.map +1 -0
  69. package/lib/InputToolbar.js +108 -0
  70. package/lib/InputToolbar.js.map +1 -0
  71. package/lib/LoadEarlierMessages.d.ts +17 -0
  72. package/lib/LoadEarlierMessages.d.ts.map +1 -0
  73. package/lib/LoadEarlierMessages.js +44 -0
  74. package/lib/LoadEarlierMessages.js.map +1 -0
  75. package/lib/Message/index.d.ts +6 -0
  76. package/lib/Message/index.d.ts.map +1 -0
  77. package/lib/Message/index.js +180 -0
  78. package/lib/Message/index.js.map +1 -0
  79. package/lib/Message/styles.d.ts +18 -0
  80. package/lib/Message/styles.d.ts.map +1 -0
  81. package/lib/Message/styles.js +18 -0
  82. package/lib/Message/styles.js.map +1 -0
  83. package/lib/Message/types.d.ts +28 -0
  84. package/lib/Message/types.d.ts.map +1 -0
  85. package/lib/Message/types.js +2 -0
  86. package/lib/Message/types.js.map +1 -0
  87. package/lib/MessageAudio.d.ts +3 -0
  88. package/lib/MessageAudio.d.ts.map +1 -0
  89. package/lib/MessageAudio.js +24 -0
  90. package/lib/MessageAudio.js.map +1 -0
  91. package/lib/MessageImage.d.ts +12 -0
  92. package/lib/MessageImage.d.ts.map +1 -0
  93. package/lib/MessageImage.js +164 -0
  94. package/lib/MessageImage.js.map +1 -0
  95. package/lib/MessageReply.d.ts +15 -0
  96. package/lib/MessageReply.d.ts.map +1 -0
  97. package/lib/MessageReply.js +102 -0
  98. package/lib/MessageReply.js.map +1 -0
  99. package/lib/MessageText.d.ts +24 -0
  100. package/lib/MessageText.d.ts.map +1 -0
  101. package/lib/MessageText.js +51 -0
  102. package/lib/MessageText.js.map +1 -0
  103. package/lib/MessageVideo.d.ts +3 -0
  104. package/lib/MessageVideo.d.ts.map +1 -0
  105. package/lib/MessageVideo.js +24 -0
  106. package/lib/MessageVideo.js.map +1 -0
  107. package/lib/MessagesContainer/components/DayAnimated/debug.d.ts +8 -0
  108. package/lib/MessagesContainer/components/DayAnimated/debug.d.ts.map +1 -0
  109. package/lib/MessagesContainer/components/DayAnimated/debug.js +38 -0
  110. package/lib/MessagesContainer/components/DayAnimated/debug.js.map +1 -0
  111. package/lib/MessagesContainer/components/DayAnimated/index.d.ts +5 -0
  112. package/lib/MessagesContainer/components/DayAnimated/index.d.ts.map +1 -0
  113. package/lib/MessagesContainer/components/DayAnimated/index.js +123 -0
  114. package/lib/MessagesContainer/components/DayAnimated/index.js.map +1 -0
  115. package/lib/MessagesContainer/components/DayAnimated/styles.d.ts +12 -0
  116. package/lib/MessagesContainer/components/DayAnimated/styles.d.ts.map +1 -0
  117. package/lib/MessagesContainer/components/DayAnimated/styles.js +12 -0
  118. package/lib/MessagesContainer/components/DayAnimated/styles.js.map +1 -0
  119. package/lib/MessagesContainer/components/DayAnimated/types.d.ts +22 -0
  120. package/lib/MessagesContainer/components/DayAnimated/types.d.ts.map +1 -0
  121. package/lib/MessagesContainer/components/DayAnimated/types.js +2 -0
  122. package/lib/MessagesContainer/components/DayAnimated/types.js.map +1 -0
  123. package/lib/MessagesContainer/components/DayAnimated/useScrollGatedOpacity.d.ts +4 -0
  124. package/lib/MessagesContainer/components/DayAnimated/useScrollGatedOpacity.d.ts.map +1 -0
  125. package/lib/MessagesContainer/components/DayAnimated/useScrollGatedOpacity.js +37 -0
  126. package/lib/MessagesContainer/components/DayAnimated/useScrollGatedOpacity.js.map +1 -0
  127. package/lib/MessagesContainer/components/Item/index.d.ts +6 -0
  128. package/lib/MessagesContainer/components/Item/index.d.ts.map +1 -0
  129. package/lib/MessagesContainer/components/Item/index.js +86 -0
  130. package/lib/MessagesContainer/components/Item/index.js.map +1 -0
  131. package/lib/MessagesContainer/components/Item/types.d.ts +22 -0
  132. package/lib/MessagesContainer/components/Item/types.d.ts.map +1 -0
  133. package/lib/MessagesContainer/components/Item/types.js +2 -0
  134. package/lib/MessagesContainer/components/Item/types.js.map +1 -0
  135. package/lib/MessagesContainer/components/dayLayout.d.ts +10 -0
  136. package/lib/MessagesContainer/components/dayLayout.d.ts.map +1 -0
  137. package/lib/MessagesContainer/components/dayLayout.js +37 -0
  138. package/lib/MessagesContainer/components/dayLayout.js.map +1 -0
  139. package/lib/MessagesContainer/index.d.ts +6 -0
  140. package/lib/MessagesContainer/index.d.ts.map +1 -0
  141. package/lib/MessagesContainer/index.js +308 -0
  142. package/lib/MessagesContainer/index.js.map +1 -0
  143. package/lib/MessagesContainer/styles.d.ts +55 -0
  144. package/lib/MessagesContainer/styles.d.ts.map +1 -0
  145. package/lib/MessagesContainer/styles.js +42 -0
  146. package/lib/MessagesContainer/styles.js.map +1 -0
  147. package/lib/MessagesContainer/types.d.ts +91 -0
  148. package/lib/MessagesContainer/types.d.ts.map +1 -0
  149. package/lib/MessagesContainer/types.js +10 -0
  150. package/lib/MessagesContainer/types.js.map +1 -0
  151. package/lib/Models.d.ts +67 -0
  152. package/lib/Models.d.ts.map +1 -0
  153. package/lib/Models.js +2 -0
  154. package/lib/Models.js.map +1 -0
  155. package/lib/QuickReplies.d.ts +16 -0
  156. package/lib/QuickReplies.d.ts.map +1 -0
  157. package/lib/QuickReplies.js +107 -0
  158. package/lib/QuickReplies.js.map +1 -0
  159. package/lib/Reactions/MessageReactions.d.ts +5 -0
  160. package/lib/Reactions/MessageReactions.d.ts.map +1 -0
  161. package/lib/Reactions/MessageReactions.js +83 -0
  162. package/lib/Reactions/MessageReactions.js.map +1 -0
  163. package/lib/Reactions/ReactionPicker.d.ts +10 -0
  164. package/lib/Reactions/ReactionPicker.d.ts.map +1 -0
  165. package/lib/Reactions/ReactionPicker.js +84 -0
  166. package/lib/Reactions/ReactionPicker.js.map +1 -0
  167. package/lib/Reactions/index.d.ts +6 -0
  168. package/lib/Reactions/index.d.ts.map +1 -0
  169. package/lib/Reactions/index.js +6 -0
  170. package/lib/Reactions/index.js.map +1 -0
  171. package/lib/Reactions/types.d.ts +79 -0
  172. package/lib/Reactions/types.d.ts.map +1 -0
  173. package/lib/Reactions/types.js +2 -0
  174. package/lib/Reactions/types.js.map +1 -0
  175. package/lib/Reply/index.d.ts +2 -0
  176. package/lib/Reply/index.d.ts.map +1 -0
  177. package/lib/Reply/index.js +2 -0
  178. package/lib/Reply/index.js.map +1 -0
  179. package/lib/Reply/types.d.ts +72 -0
  180. package/lib/Reply/types.d.ts.map +1 -0
  181. package/lib/Reply/types.js +2 -0
  182. package/lib/Reply/types.js.map +1 -0
  183. package/lib/ReplyPreview.d.ts +14 -0
  184. package/lib/ReplyPreview.d.ts.map +1 -0
  185. package/lib/ReplyPreview.js +94 -0
  186. package/lib/ReplyPreview.js.map +1 -0
  187. package/lib/Send.d.ts +19 -0
  188. package/lib/Send.d.ts.map +1 -0
  189. package/lib/Send.js +56 -0
  190. package/lib/Send.js.map +1 -0
  191. package/lib/SystemMessage.d.ts +14 -0
  192. package/lib/SystemMessage.d.ts.map +1 -0
  193. package/lib/SystemMessage.js +42 -0
  194. package/lib/SystemMessage.js.map +1 -0
  195. package/lib/Time.d.ts +12 -0
  196. package/lib/Time.d.ts.map +1 -0
  197. package/lib/Time.js +38 -0
  198. package/lib/Time.js.map +1 -0
  199. package/lib/TypingIndicator/index.d.ts +5 -0
  200. package/lib/TypingIndicator/index.d.ts.map +1 -0
  201. package/lib/TypingIndicator/index.js +94 -0
  202. package/lib/TypingIndicator/index.js.map +1 -0
  203. package/lib/TypingIndicator/styles.d.ts +21 -0
  204. package/lib/TypingIndicator/styles.d.ts.map +1 -0
  205. package/lib/TypingIndicator/styles.js +22 -0
  206. package/lib/TypingIndicator/styles.js.map +1 -0
  207. package/lib/TypingIndicator/types.d.ts +6 -0
  208. package/lib/TypingIndicator/types.d.ts.map +1 -0
  209. package/lib/TypingIndicator/types.js +2 -0
  210. package/lib/TypingIndicator/types.js.map +1 -0
  211. package/lib/components/MessageReply.d.ts +29 -0
  212. package/lib/components/MessageReply.d.ts.map +1 -0
  213. package/lib/components/MessageReply.js +87 -0
  214. package/lib/components/MessageReply.js.map +1 -0
  215. package/lib/components/ReplyPreview.d.ts +17 -0
  216. package/lib/components/ReplyPreview.d.ts.map +1 -0
  217. package/lib/components/ReplyPreview.js +148 -0
  218. package/lib/components/ReplyPreview.js.map +1 -0
  219. package/lib/components/StreamingCursor.d.ts +15 -0
  220. package/lib/components/StreamingCursor.d.ts.map +1 -0
  221. package/lib/components/StreamingCursor.js +16 -0
  222. package/lib/components/StreamingCursor.js.map +1 -0
  223. package/lib/components/TouchableOpacity.d.ts +9 -0
  224. package/lib/components/TouchableOpacity.d.ts.map +1 -0
  225. package/lib/components/TouchableOpacity.js +47 -0
  226. package/lib/components/TouchableOpacity.js.map +1 -0
  227. package/lib/hooks/useColorScheme.d.ts +8 -0
  228. package/lib/hooks/useColorScheme.d.ts.map +1 -0
  229. package/lib/hooks/useColorScheme.js +17 -0
  230. package/lib/hooks/useColorScheme.js.map +1 -0
  231. package/lib/hooks/useStreamingMessages.d.ts +42 -0
  232. package/lib/hooks/useStreamingMessages.d.ts.map +1 -0
  233. package/lib/hooks/useStreamingMessages.js +96 -0
  234. package/lib/hooks/useStreamingMessages.js.map +1 -0
  235. package/lib/hooks/useUpdateLayoutEffect.d.ts +9 -0
  236. package/lib/hooks/useUpdateLayoutEffect.d.ts.map +1 -0
  237. package/lib/hooks/useUpdateLayoutEffect.js +17 -0
  238. package/lib/hooks/useUpdateLayoutEffect.js.map +1 -0
  239. package/lib/index.d.ts +35 -0
  240. package/lib/index.d.ts.map +1 -0
  241. package/lib/index.js +34 -0
  242. package/lib/index.js.map +1 -0
  243. package/lib/linkParser.d.ts +39 -0
  244. package/lib/linkParser.d.ts.map +1 -0
  245. package/lib/linkParser.js +154 -0
  246. package/lib/linkParser.js.map +1 -0
  247. package/lib/logging.d.ts +3 -0
  248. package/lib/logging.d.ts.map +1 -0
  249. package/lib/logging.js +5 -0
  250. package/lib/logging.js.map +1 -0
  251. package/lib/styles.d.ts +14 -0
  252. package/lib/styles.d.ts.map +1 -0
  253. package/lib/styles.js +23 -0
  254. package/lib/styles.js.map +1 -0
  255. package/lib/types.d.ts +19 -0
  256. package/lib/types.d.ts.map +1 -0
  257. package/lib/types.js +2 -0
  258. package/lib/types.js.map +1 -0
  259. package/lib/utils.d.ts +8 -0
  260. package/lib/utils.d.ts.map +1 -0
  261. package/lib/utils.js +105 -0
  262. package/lib/utils.js.map +1 -0
  263. package/package.json +119 -0
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { StyleProp, ImageStyle, TextStyle } from 'react-native';
3
+ import { User } from './Models';
4
+ export interface ChatAvatarProps {
5
+ user?: User;
6
+ avatarStyle?: StyleProp<ImageStyle>;
7
+ textStyle?: StyleProp<TextStyle>;
8
+ onPress?: (props: ChatAvatarProps) => void;
9
+ onLongPress?: (props: ChatAvatarProps) => void;
10
+ }
11
+ export declare function ChatAvatar(props: ChatAvatarProps): React.JSX.Element;
12
+ //# sourceMappingURL=ChatAvatar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatAvatar.d.ts","sourceRoot":"","sources":["../src/ChatAvatar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAA;AACnD,OAAO,EAIL,SAAS,EACT,UAAU,EACV,SAAS,EACH,MAAM,cAAc,CAAA;AAG5B,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AA8B/B,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,IAAI,CAAA;IACX,WAAW,CAAC,EAAE,SAAS,CAAC,UAAU,CAAC,CAAA;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAChC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;IAC1C,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAA;CAC/C;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,eAAe,qBAuIvB"}
@@ -0,0 +1,100 @@
1
+ import React, { useCallback, useMemo } from 'react';
2
+ import { Image, View, StyleSheet, Text } from 'react-native';
3
+ import { Color } from './Color';
4
+ import { TouchableOpacity } from './components/TouchableOpacity';
5
+ import stylesCommon from './styles';
6
+ const { carrot, emerald, peterRiver, wisteria, alizarin, turquoise, midnightBlue, } = Color;
7
+ const styles = StyleSheet.create({
8
+ avatarStyle: {
9
+ width: 40,
10
+ height: 40,
11
+ borderRadius: 20,
12
+ },
13
+ avatarTransparent: {
14
+ backgroundColor: Color.backgroundTransparent,
15
+ },
16
+ textStyle: {
17
+ color: Color.white,
18
+ fontSize: 16,
19
+ backgroundColor: Color.backgroundTransparent,
20
+ fontWeight: '100',
21
+ },
22
+ });
23
+ export function ChatAvatar(props) {
24
+ const { user, avatarStyle, textStyle, onPress, } = props;
25
+ const avatarName = useMemo(() => {
26
+ const userName = user?.name || '';
27
+ const name = userName.toUpperCase().split(' ');
28
+ if (name.length === 1)
29
+ return `${name[0].charAt(0)}`;
30
+ else if (name.length > 1)
31
+ return `${name[0].charAt(0)}${name[1].charAt(0)}`;
32
+ else
33
+ return '';
34
+ }, [user?.name]);
35
+ const backgroundColor = useMemo(() => {
36
+ let sumChars = 0;
37
+ if (user?.name)
38
+ for (let i = 0; i < user.name.length; i += 1)
39
+ sumChars += user.name.charCodeAt(i);
40
+ // inspired by https://github.com/wbinnssmith/react-user-avatar
41
+ // colors from https://flatuicolors.com/
42
+ const colors = [
43
+ carrot,
44
+ emerald,
45
+ peterRiver,
46
+ wisteria,
47
+ alizarin,
48
+ turquoise,
49
+ midnightBlue,
50
+ ];
51
+ return colors[sumChars % colors.length];
52
+ }, [user?.name]);
53
+ const renderAvatar = useCallback(() => {
54
+ switch (typeof user?.avatar) {
55
+ case 'function':
56
+ return user.avatar([stylesCommon.centerItems, styles.avatarStyle, avatarStyle]);
57
+ case 'string':
58
+ return (<Image source={{ uri: user.avatar }} style={[stylesCommon.centerItems, styles.avatarStyle, avatarStyle]}/>);
59
+ case 'number':
60
+ return (<Image source={user.avatar} style={[stylesCommon.centerItems, styles.avatarStyle, avatarStyle]}/>);
61
+ default:
62
+ return null;
63
+ }
64
+ }, [user, avatarStyle]);
65
+ const renderInitials = useCallback(() => {
66
+ return (<Text style={[styles.textStyle, textStyle]}>
67
+ {avatarName}
68
+ </Text>);
69
+ }, [textStyle, avatarName]);
70
+ const handleOnPress = useCallback(() => {
71
+ const { onPress, ...rest } = props;
72
+ onPress?.(rest);
73
+ }, [props]);
74
+ const handleOnLongPress = useCallback(() => {
75
+ const { onLongPress, ...rest } = props;
76
+ if (onLongPress)
77
+ onLongPress(rest);
78
+ }, [props]);
79
+ const placeholderView = useMemo(() => (<View style={[
80
+ stylesCommon.centerItems,
81
+ styles.avatarStyle,
82
+ styles.avatarTransparent,
83
+ avatarStyle,
84
+ ]} accessibilityRole='image'/>), [avatarStyle]);
85
+ if (!user || (!user.name && !user.avatar))
86
+ return placeholderView;
87
+ if (user.avatar)
88
+ return (<TouchableOpacity enabled={!!onPress} onPress={handleOnPress} onLongPress={handleOnLongPress} accessibilityRole='image'>
89
+ {renderAvatar()}
90
+ </TouchableOpacity>);
91
+ return (<TouchableOpacity enabled={!!onPress} onPress={handleOnPress} onLongPress={handleOnLongPress} style={[
92
+ stylesCommon.centerItems,
93
+ styles.avatarStyle,
94
+ { backgroundColor },
95
+ avatarStyle,
96
+ ]} accessibilityRole='image'>
97
+ {renderInitials()}
98
+ </TouchableOpacity>);
99
+ }
100
+ //# sourceMappingURL=ChatAvatar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatAvatar.js","sourceRoot":"","sources":["../src/ChatAvatar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { ColorSchemeName } from 'react-native';
2
+ import { ActionSheetOptions } from '@expo/react-native-action-sheet';
3
+ export interface IChatContext {
4
+ actionSheet(): {
5
+ showActionSheetWithOptions: (options: ActionSheetOptions, callback: (buttonIndex?: number) => void | Promise<void>) => void;
6
+ };
7
+ getLocale(): string;
8
+ getColorScheme(): ColorSchemeName | null | undefined;
9
+ }
10
+ export declare const ChatContext: import("react").Context<IChatContext>;
11
+ export declare const useChatContext: () => IChatContext;
12
+ //# sourceMappingURL=ChatContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatContext.d.ts","sourceRoot":"","sources":["../src/ChatContext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EACL,kBAAkB,EACnB,MAAM,iCAAiC,CAAA;AAExC,MAAM,WAAW,YAAY;IAC3B,WAAW,IAAI;QACb,0BAA0B,EAAE,CAC1B,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KACrD,IAAI,CAAA;KACV,CAAA;IACD,SAAS,IAAI,MAAM,CAAA;IACnB,cAAc,IAAI,eAAe,GAAG,IAAI,GAAG,SAAS,CAAA;CACrD;AAED,eAAO,MAAM,WAAW,uCAMtB,CAAA;AAEF,eAAO,MAAM,cAAc,oBAAgC,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { createContext, useContext } from 'react';
2
+ export const ChatContext = createContext({
3
+ getLocale: () => 'en',
4
+ actionSheet: () => ({
5
+ showActionSheetWithOptions: () => { },
6
+ }),
7
+ getColorScheme: () => null,
8
+ });
9
+ export const useChatContext = () => useContext(ChatContext);
10
+ //# sourceMappingURL=ChatContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatContext.js","sourceRoot":"","sources":["../src/ChatContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAiBjD,MAAM,CAAC,MAAM,WAAW,GAAG,aAAa,CAAe;IACrD,SAAS,EAAE,GAAG,EAAE,CAAC,IAAI;IACrB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;QAClB,0BAA0B,EAAE,GAAG,EAAE,GAAE,CAAC;KACrC,CAAC;IACF,cAAc,EAAE,GAAG,EAAE,CAAC,IAAI;CAC3B,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA"}
package/lib/Color.d.ts ADDED
@@ -0,0 +1,18 @@
1
+ export declare const Color: {
2
+ defaultColor: string;
3
+ backgroundTransparent: string;
4
+ defaultBlue: string;
5
+ leftBubbleBackground: string;
6
+ black: string;
7
+ white: string;
8
+ carrot: string;
9
+ emerald: string;
10
+ peterRiver: string;
11
+ wisteria: string;
12
+ alizarin: string;
13
+ turquoise: string;
14
+ midnightBlue: string;
15
+ optionTintColor: string;
16
+ timeTextColor: string;
17
+ };
18
+ //# sourceMappingURL=Color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../src/Color.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;CAgBjB,CAAA"}
package/lib/Color.js ADDED
@@ -0,0 +1,18 @@
1
+ export const Color = {
2
+ defaultColor: '#b2b2b2',
3
+ backgroundTransparent: 'transparent',
4
+ defaultBlue: '#0084ff',
5
+ leftBubbleBackground: '#f0f0f0',
6
+ black: '#000',
7
+ white: '#fff',
8
+ carrot: '#e67e22',
9
+ emerald: '#2ecc71',
10
+ peterRiver: '#3498db',
11
+ wisteria: '#8e44ad',
12
+ alizarin: '#e74c3c',
13
+ turquoise: '#1abc9c',
14
+ midnightBlue: '#2c3e50',
15
+ optionTintColor: '#007AFF',
16
+ timeTextColor: '#aaa',
17
+ };
18
+ //# sourceMappingURL=Color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Color.js","sourceRoot":"","sources":["../src/Color.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,YAAY,EAAE,SAAS;IACvB,qBAAqB,EAAE,aAAa;IACpC,WAAW,EAAE,SAAS;IACtB,oBAAoB,EAAE,SAAS;IAC/B,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,SAAS;IACjB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,SAAS;IACrB,QAAQ,EAAE,SAAS;IACnB,QAAQ,EAAE,SAAS;IACnB,SAAS,EAAE,SAAS;IACpB,YAAY,EAAE,SAAS;IACvB,eAAe,EAAE,SAAS;IAC1B,aAAa,EAAE,MAAM;CACtB,CAAA"}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { TextInputProps } from 'react-native';
3
+ export interface ComposerProps {
4
+ composerHeight?: number;
5
+ text?: string;
6
+ textInputProps?: Partial<TextInputProps>;
7
+ }
8
+ export declare function Composer({ text, textInputProps, }: ComposerProps): React.ReactElement;
9
+ //# sourceMappingURL=Composer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../src/Composer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoD,MAAM,OAAO,CAAA;AACxE,OAAO,EAKL,cAAc,EAEf,MAAM,cAAc,CAAA;AAMrB,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,cAAc,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;CACzC;AAED,wBAAgB,QAAQ,CAAE,EACxB,IAAS,EACT,cAAc,GACf,EAAE,aAAa,GAAG,KAAK,CAAC,YAAY,CAgEpC"}
@@ -0,0 +1,63 @@
1
+ import React, { useCallback, useEffect, useMemo, useState } from 'react';
2
+ import { Platform, StyleSheet, View, } from 'react-native';
3
+ import { TextInput } from 'react-native-gesture-handler';
4
+ import { Color } from './Color';
5
+ import { useColorScheme } from './hooks/useColorScheme';
6
+ import stylesCommon, { getColorSchemeStyle } from './styles';
7
+ export function Composer({ text = '', textInputProps, }) {
8
+ const colorScheme = useColorScheme();
9
+ const isDark = colorScheme === 'dark';
10
+ const placeholder = textInputProps?.placeholder ?? 'Type a message...';
11
+ const minHeight = useMemo(() => Platform.select({
12
+ web: styles.textInput.lineHeight + styles.textInput.paddingTop + styles.textInput.paddingBottom,
13
+ default: undefined,
14
+ }), []);
15
+ const [height, setHeight] = useState(minHeight);
16
+ // Reset the (web) auto-grown height back to its minimum once the text is
17
+ // cleared, e.g. after sending. Without this the composer stays expanded at
18
+ // the height of the previously sent multiline message. (#2716)
19
+ useEffect(() => {
20
+ if (Platform.OS === 'web' && text.length === 0)
21
+ setHeight(minHeight);
22
+ }, [text, minHeight]);
23
+ const handleContentSizeChange = useMemo(() => {
24
+ if (Platform.OS === 'web')
25
+ return (e) => {
26
+ const contentHeight = e.nativeEvent.contentSize.height;
27
+ setHeight(Math.max(minHeight ?? 0, contentHeight));
28
+ };
29
+ return undefined;
30
+ }, [minHeight]);
31
+ const handleChange = useCallback((event) => {
32
+ if (Platform.OS === 'web')
33
+ // Reset height to 0 to get the correct scrollHeight
34
+ requestAnimationFrame(() => {
35
+ // @ts-expect-error - web-specific code
36
+ event.nativeEvent.target.style.height = '0px';
37
+ // @ts-expect-error - web-specific code
38
+ event.nativeEvent.target.style.height = `${event.nativeEvent.target.scrollHeight}px`;
39
+ });
40
+ }, []);
41
+ return (<View style={stylesCommon.fill}>
42
+ <TextInput testID={placeholder} accessible accessibilityLabel={placeholder} placeholderTextColor={textInputProps?.placeholderTextColor ?? (isDark ? '#888' : Color.defaultColor)} value={text} enablesReturnKeyAutomatically underlineColorAndroid='transparent' keyboardAppearance={isDark ? 'dark' : 'default'} multiline placeholder={placeholder} onContentSizeChange={handleContentSizeChange} onChange={handleChange} {...textInputProps} style={[getColorSchemeStyle(styles, 'textInput', colorScheme), stylesWeb.textInput, { height }, textInputProps?.style]}/>
43
+ </View>);
44
+ }
45
+ const styles = StyleSheet.create({
46
+ textInput: {
47
+ fontSize: 16,
48
+ lineHeight: 22,
49
+ paddingTop: 8,
50
+ paddingBottom: 10,
51
+ paddingHorizontal: 8,
52
+ },
53
+ textInput_dark: {
54
+ color: '#fff',
55
+ },
56
+ });
57
+ const stylesWeb = StyleSheet.create({
58
+ textInput: {
59
+ /* @ts-expect-error - web-specific styles */
60
+ outlineStyle: 'none',
61
+ },
62
+ });
63
+ //# sourceMappingURL=Composer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Composer.js","sourceRoot":"","sources":["../src/Composer.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const DATE_FORMAT = "D MMMM";
2
+ export declare const TIME_FORMAT = "LT";
3
+ export declare const TEST_ID: {
4
+ WRAPPER: string;
5
+ LOADING_WRAPPER: string;
6
+ SEND_TOUCHABLE: string;
7
+ };
8
+ //# sourceMappingURL=Constant.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constant.d.ts","sourceRoot":"","sources":["../src/Constant.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,WAAW,WAAW,CAAA;AACnC,eAAO,MAAM,WAAW,OAAO,CAAA;AAE/B,eAAO,MAAM,OAAO;;;;CAInB,CAAA"}
@@ -0,0 +1,8 @@
1
+ export const DATE_FORMAT = 'D MMMM';
2
+ export const TIME_FORMAT = 'LT';
3
+ export const TEST_ID = {
4
+ WRAPPER: 'GC_WRAPPER',
5
+ LOADING_WRAPPER: 'GC_LOADING_CONTAINER',
6
+ SEND_TOUCHABLE: 'GC_SEND_TOUCHABLE',
7
+ };
8
+ //# sourceMappingURL=Constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Constant.js","sourceRoot":"","sources":["../src/Constant.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAA;AACnC,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,CAAA;AAE/B,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,OAAO,EAAE,YAAY;IACrB,eAAe,EAAE,sBAAsB;IACvC,cAAc,EAAE,mBAAmB;CACpC,CAAA"}
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ import { DayProps } from './types';
3
+ export * from './types';
4
+ export declare function Day({ dateFormat, dateFormatCalendar, createdAt, containerStyle, wrapperStyle, textProps, }: DayProps): React.JSX.Element | null;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Day/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAkB,MAAM,OAAO,CAAA;AAWtC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAElC,cAAc,SAAS,CAAA;AAKvB,wBAAgB,GAAG,CAAE,EACnB,UAAwB,EACxB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,YAAY,EACZ,SAAS,GACV,EAAE,QAAQ,4BAkCV"}
@@ -0,0 +1,39 @@
1
+ import React, { useMemo } from 'react';
2
+ import { View, Text } from 'react-native';
3
+ import dayjs from 'dayjs';
4
+ import calendar from 'dayjs/plugin/calendar';
5
+ import relativeTime from 'dayjs/plugin/relativeTime';
6
+ import { useChatContext } from '../ChatContext';
7
+ import { DATE_FORMAT } from '../Constant';
8
+ import stylesCommon from '../styles';
9
+ import styles from './styles';
10
+ export * from './types';
11
+ dayjs.extend(relativeTime);
12
+ dayjs.extend(calendar);
13
+ export function Day({ dateFormat = DATE_FORMAT, dateFormatCalendar, createdAt, containerStyle, wrapperStyle, textProps, }) {
14
+ const { getLocale } = useChatContext();
15
+ const dateStr = useMemo(() => {
16
+ if (createdAt == null)
17
+ return null;
18
+ const now = dayjs().startOf('day');
19
+ const date = dayjs(createdAt).locale(getLocale()).startOf('day');
20
+ if (!now.isSame(date, 'year'))
21
+ return date.format('D MMMM YYYY');
22
+ if (now.diff(date, 'days') < 1)
23
+ return date.calendar(now, {
24
+ sameDay: '[Today]',
25
+ ...dateFormatCalendar,
26
+ });
27
+ return date.format(dateFormat);
28
+ }, [createdAt, dateFormat, getLocale, dateFormatCalendar]);
29
+ if (!dateStr)
30
+ return null;
31
+ return (<View style={[stylesCommon.centerItems, styles.container, containerStyle]}>
32
+ <View style={[styles.wrapper, wrapperStyle]}>
33
+ <Text {...textProps} style={[styles.text, textProps?.style]}>
34
+ {dateStr}
35
+ </Text>
36
+ </View>
37
+ </View>);
38
+ }
39
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Day/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AACtC,OAAO,EACL,IAAI,EACJ,IAAI,EAAE,MAAM,cAAc,CAAA;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,QAAQ,MAAM,uBAAuB,CAAA;AAC5C,OAAO,YAAY,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,YAAY,MAAM,WAAW,CAAA;AACpC,OAAO,MAAM,MAAM,UAAU,CAAA;AAG7B,cAAc,SAAS,CAAA;AAEvB,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;AAC1B,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAEtB,MAAM,UAAU,GAAG,CAAE,EACnB,UAAU,GAAG,WAAW,EACxB,kBAAkB,EAClB,SAAS,EACT,cAAc,EACd,YAAY,EACZ,SAAS,GACA;IACT,MAAM,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAA;IAEtC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,IAAI,SAAS,IAAI,IAAI;YACnB,OAAO,IAAI,CAAA;QAEb,MAAM,GAAG,GAAG,KAAK,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAEhE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;YAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAA;QAEnC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC;YAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACxB,OAAO,EAAE,SAAS;gBAClB,GAAG,kBAAkB;aACtB,CAAC,CAAA;QAEJ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;IAChC,CAAC,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC,CAAA;IAE1D,IAAI,CAAC,OAAO;QACV,OAAO,IAAI,CAAA;IAEb,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CACxE;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAC1C;QAAA,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC,CAC1D;UAAA,CAAC,OAAO,CACV;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ declare const _default: {
2
+ container: {
3
+ marginTop: number;
4
+ marginBottom: number;
5
+ };
6
+ wrapper: {
7
+ backgroundColor: string;
8
+ paddingTop: number;
9
+ paddingBottom: number;
10
+ paddingLeft: number;
11
+ paddingRight: number;
12
+ borderRadius: number;
13
+ };
14
+ text: {
15
+ color: string;
16
+ fontSize: number;
17
+ fontWeight: "600";
18
+ };
19
+ };
20
+ export default _default;
21
+ //# sourceMappingURL=styles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Day/styles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAGA,wBAkBE"}
@@ -0,0 +1,22 @@
1
+ import { StyleSheet } from 'react-native';
2
+ import { Color } from '../Color';
3
+ export default StyleSheet.create({
4
+ container: {
5
+ marginTop: 5,
6
+ marginBottom: 10,
7
+ },
8
+ wrapper: {
9
+ backgroundColor: 'rgba(0, 0, 0, 0.75)',
10
+ paddingTop: 6,
11
+ paddingBottom: 6,
12
+ paddingLeft: 10,
13
+ paddingRight: 10,
14
+ borderRadius: 15,
15
+ },
16
+ text: {
17
+ color: Color.white,
18
+ fontSize: 12,
19
+ fontWeight: '600',
20
+ },
21
+ });
22
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/Day/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,eAAe,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,EAAE;KACjB;IACD,OAAO,EAAE;QACP,eAAe,EAAE,qBAAqB;QACtC,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,EAAE;QACf,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE;KACjB;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,KAAK;KAClB;CACF,CAAC,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { StyleProp, ViewStyle, TextProps } from 'react-native';
2
+ export interface DayProps {
3
+ createdAt: Date | number;
4
+ dateFormat?: string;
5
+ dateFormatCalendar?: object;
6
+ containerStyle?: StyleProp<ViewStyle>;
7
+ wrapperStyle?: StyleProp<ViewStyle>;
8
+ /** Props to pass to the Text component (e.g., style, allowFontScaling, numberOfLines) */
9
+ textProps?: Partial<TextProps>;
10
+ /**
11
+ * `true` when rendered as the floating/animated day header that sticks to the
12
+ * top while scrolling, `false`/`undefined` for the inline day separators.
13
+ * Use this in a custom `renderDay` to give the floating header a different look.
14
+ */
15
+ isAnimated?: boolean;
16
+ }
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Day/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACV,MAAM,cAAc,CAAA;AAErB,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,IAAI,GAAG,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACrC,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACnC,yFAAyF;IACzF,SAAS,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAA;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/Day/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle, TextStyle } from 'react-native';
3
+ import { ActionsProps } from './Actions';
4
+ import { ReplyPreviewProps } from './components/ReplyPreview';
5
+ import { ComposerProps } from './Composer';
6
+ import { IMessage, ReplyMessage } from './Models';
7
+ import { SendProps } from './Send';
8
+ export type { ReplyPreviewProps } from './components/ReplyPreview';
9
+ export interface InputToolbarProps<TMessage extends IMessage> {
10
+ actions?: Array<{
11
+ title: string;
12
+ action: () => void;
13
+ }>;
14
+ actionSheetOptionTintColor?: string;
15
+ containerStyle?: StyleProp<ViewStyle>;
16
+ primaryStyle?: StyleProp<ViewStyle>;
17
+ renderAccessory?: (props: InputToolbarProps<TMessage>) => React.ReactNode;
18
+ renderActions?: (props: ActionsProps) => React.ReactNode;
19
+ renderSend?: (props: SendProps<TMessage>) => React.ReactNode;
20
+ renderComposer?: (props: ComposerProps) => React.ReactNode;
21
+ onPressActionButton?: () => void;
22
+ icon?: () => React.ReactNode;
23
+ wrapperStyle?: StyleProp<ViewStyle>;
24
+ /** Reply message to show in preview */
25
+ replyMessage?: ReplyMessage | null;
26
+ /** Callback to clear reply */
27
+ onClearReply?: () => void;
28
+ /** Custom render for reply preview */
29
+ renderReplyPreview?: (props: ReplyPreviewProps) => React.ReactNode;
30
+ /** Style for reply preview container */
31
+ replyPreviewContainerStyle?: StyleProp<ViewStyle>;
32
+ /** Style for reply preview text */
33
+ replyPreviewTextStyle?: StyleProp<TextStyle>;
34
+ }
35
+ export declare function InputToolbar<TMessage extends IMessage = IMessage>(props: InputToolbarProps<TMessage>): React.JSX.Element;
36
+ //# sourceMappingURL=InputToolbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputToolbar.d.ts","sourceRoot":"","sources":["../src/InputToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+B,MAAM,OAAO,CAAA;AACnD,OAAO,EAAoB,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAEhF,OAAO,EAAW,YAAY,EAAE,MAAM,WAAW,CAAA;AAEjD,OAAO,EAAgB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAY,aAAa,EAAE,MAAM,YAAY,CAAA;AAEpD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAQ,SAAS,EAAE,MAAM,QAAQ,CAAA;AAGxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,QAAQ;IAC1D,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC,CAAA;IACtD,0BAA0B,CAAC,EAAE,MAAM,CAAA;IACnC,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACrC,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACnC,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,SAAS,CAAA;IACzE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,KAAK,CAAC,SAAS,CAAA;IACxD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,KAAK,KAAK,CAAC,SAAS,CAAA;IAC5D,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,KAAK,CAAC,SAAS,CAAA;IAC1D,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,KAAK,CAAC,SAAS,CAAA;IAC5B,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACnC,uCAAuC;IACvC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;IAClC,8BAA8B;IAC9B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,sCAAsC;IACtC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,KAAK,CAAC,SAAS,CAAA;IAClE,wCAAwC;IACxC,0BAA0B,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACjD,mCAAmC;IACnC,qBAAqB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;CAC7C;AAED,wBAAgB,YAAY,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAC/D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,qBAyHnC"}
@@ -0,0 +1,108 @@
1
+ import React, { useCallback, useMemo } from 'react';
2
+ import { StyleSheet, View } from 'react-native';
3
+ import { Actions } from './Actions';
4
+ import { Color } from './Color';
5
+ import { ReplyPreview } from './components/ReplyPreview';
6
+ import { Composer } from './Composer';
7
+ import { useColorScheme } from './hooks/useColorScheme';
8
+ import { Send } from './Send';
9
+ import { renderComponentOrElement } from './utils';
10
+ export function InputToolbar(props) {
11
+ const { renderActions, onPressActionButton, renderComposer, renderSend, renderAccessory, actions, actionSheetOptionTintColor, icon, wrapperStyle, containerStyle, replyMessage, onClearReply, renderReplyPreview: renderReplyPreviewProp, replyPreviewContainerStyle, replyPreviewTextStyle, } = props;
12
+ const colorScheme = useColorScheme();
13
+ const containerStyles = useMemo(() => [
14
+ styles.container,
15
+ colorScheme === 'dark' && styles.container_dark,
16
+ containerStyle,
17
+ ], [colorScheme, containerStyle]);
18
+ const primaryStyles = useMemo(() => [
19
+ styles.primary,
20
+ props.primaryStyle,
21
+ ], [props.primaryStyle]);
22
+ const actionsFragment = useMemo(() => {
23
+ const actionsProps = {
24
+ onPressActionButton,
25
+ actions,
26
+ actionSheetOptionTintColor,
27
+ icon,
28
+ wrapperStyle,
29
+ containerStyle,
30
+ };
31
+ if (renderActions)
32
+ return renderComponentOrElement(renderActions, actionsProps);
33
+ if (onPressActionButton)
34
+ return <Actions {...actionsProps}/>;
35
+ return null;
36
+ }, [
37
+ renderActions,
38
+ onPressActionButton,
39
+ actions,
40
+ actionSheetOptionTintColor,
41
+ icon,
42
+ wrapperStyle,
43
+ containerStyle,
44
+ ]);
45
+ const composerFragment = useMemo(() => {
46
+ const composerProps = props;
47
+ if (renderComposer)
48
+ return renderComponentOrElement(renderComposer, composerProps);
49
+ return <Composer {...composerProps}/>;
50
+ }, [renderComposer, props]);
51
+ const sendFragment = useMemo(() => {
52
+ if (renderSend)
53
+ return renderComponentOrElement(renderSend, props);
54
+ return <Send {...props}/>;
55
+ }, [renderSend, props]);
56
+ const accessoryFragment = useMemo(() => {
57
+ if (!renderAccessory)
58
+ return null;
59
+ return renderComponentOrElement(renderAccessory, props);
60
+ }, [renderAccessory, props]);
61
+ const handleClearReply = useCallback(() => {
62
+ onClearReply?.();
63
+ }, [onClearReply]);
64
+ const replyPreviewFragment = useMemo(() => {
65
+ if (!replyMessage)
66
+ return null;
67
+ const replyPreviewProps = {
68
+ replyMessage,
69
+ onClearReply: handleClearReply,
70
+ containerStyle: replyPreviewContainerStyle,
71
+ textStyle: replyPreviewTextStyle,
72
+ };
73
+ if (renderReplyPreviewProp)
74
+ return renderComponentOrElement(renderReplyPreviewProp, replyPreviewProps);
75
+ return <ReplyPreview {...replyPreviewProps}/>;
76
+ }, [
77
+ replyMessage,
78
+ handleClearReply,
79
+ renderReplyPreviewProp,
80
+ replyPreviewContainerStyle,
81
+ replyPreviewTextStyle,
82
+ ]);
83
+ return (<View style={containerStyles}>
84
+ {replyPreviewFragment}
85
+ <View style={primaryStyles}>
86
+ {actionsFragment}
87
+ {composerFragment}
88
+ {sendFragment}
89
+ </View>
90
+ {accessoryFragment}
91
+ </View>);
92
+ }
93
+ const styles = StyleSheet.create({
94
+ container: {
95
+ borderTopWidth: StyleSheet.hairlineWidth,
96
+ borderTopColor: Color.defaultColor,
97
+ backgroundColor: Color.white,
98
+ },
99
+ container_dark: {
100
+ backgroundColor: '#1a1a1a',
101
+ borderTopColor: '#444',
102
+ },
103
+ primary: {
104
+ flexDirection: 'row',
105
+ alignItems: 'flex-end',
106
+ },
107
+ });
108
+ //# sourceMappingURL=InputToolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputToolbar.js","sourceRoot":"","sources":["../src/InputToolbar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { StyleProp, ViewStyle, TextStyle } from 'react-native';
3
+ export interface LoadEarlierMessagesProps {
4
+ isAvailable: boolean;
5
+ isLoading: boolean;
6
+ onPress: () => void;
7
+ isInfiniteScrollEnabled?: boolean;
8
+ label?: string;
9
+ containerStyle?: StyleProp<ViewStyle>;
10
+ wrapperStyle?: StyleProp<ViewStyle>;
11
+ textStyle?: StyleProp<TextStyle>;
12
+ activityIndicatorStyle?: StyleProp<ViewStyle>;
13
+ activityIndicatorColor?: string;
14
+ activityIndicatorSize?: number | 'small' | 'large';
15
+ }
16
+ export declare const LoadEarlierMessages: React.FC<LoadEarlierMessagesProps>;
17
+ //# sourceMappingURL=LoadEarlierMessages.d.ts.map