react-native-gifted-chat 2.4.0 → 2.5.1

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 (159) hide show
  1. package/README.md +16 -6
  2. package/lib/Actions.d.ts +5 -6
  3. package/lib/Actions.js +16 -13
  4. package/lib/Actions.js.map +1 -1
  5. package/lib/Avatar.d.ts +10 -24
  6. package/lib/Avatar.js +24 -35
  7. package/lib/Avatar.js.flow +1 -1
  8. package/lib/Avatar.js.map +1 -1
  9. package/lib/Bubble.d.ts +30 -29
  10. package/lib/Bubble.js +90 -72
  11. package/lib/Bubble.js.flow +3 -1
  12. package/lib/Bubble.js.map +1 -1
  13. package/lib/Composer.d.ts +1 -1
  14. package/lib/Composer.js +30 -32
  15. package/lib/Composer.js.map +1 -1
  16. package/lib/Constant.js +1 -0
  17. package/lib/Constant.js.map +1 -1
  18. package/lib/Day.d.ts +3 -15
  19. package/lib/Day.js +2 -14
  20. package/lib/Day.js.flow +1 -1
  21. package/lib/Day.js.map +1 -1
  22. package/lib/GiftedAvatar.d.ts +7 -7
  23. package/lib/GiftedAvatar.js +30 -29
  24. package/lib/GiftedAvatar.js.map +1 -1
  25. package/lib/GiftedChat.d.ts +16 -89
  26. package/lib/GiftedChat.js +204 -350
  27. package/lib/GiftedChat.js.flow +3 -3
  28. package/lib/GiftedChat.js.map +1 -1
  29. package/lib/GiftedChatContext.d.ts +2 -1
  30. package/lib/GiftedChatContext.js.map +1 -1
  31. package/lib/InputToolbar.d.ts +7 -5
  32. package/lib/InputToolbar.js +41 -34
  33. package/lib/InputToolbar.js.map +1 -1
  34. package/lib/LoadEarlier.d.ts +4 -4
  35. package/lib/LoadEarlier.js +8 -6
  36. package/lib/LoadEarlier.js.map +1 -1
  37. package/lib/Message.d.ts +8 -9
  38. package/lib/Message.js +47 -40
  39. package/lib/Message.js.flow +1 -1
  40. package/lib/Message.js.map +1 -1
  41. package/lib/MessageAudio.d.ts +2 -1
  42. package/lib/MessageAudio.js +4 -4
  43. package/lib/MessageAudio.js.flow +1 -1
  44. package/lib/MessageAudio.js.map +1 -1
  45. package/lib/MessageContainer.d.ts +17 -17
  46. package/lib/MessageContainer.js +33 -51
  47. package/lib/MessageContainer.js.map +1 -1
  48. package/lib/MessageImage.d.ts +8 -5
  49. package/lib/MessageImage.js +6 -6
  50. package/lib/MessageImage.js.flow +1 -1
  51. package/lib/MessageImage.js.map +1 -1
  52. package/lib/MessageText.d.ts +11 -10
  53. package/lib/MessageText.js +5 -10
  54. package/lib/MessageText.js.flow +1 -1
  55. package/lib/MessageText.js.map +1 -1
  56. package/lib/MessageVideo.d.ts +2 -1
  57. package/lib/MessageVideo.js +4 -4
  58. package/lib/MessageVideo.js.flow +1 -1
  59. package/lib/MessageVideo.js.map +1 -1
  60. package/lib/Models.d.ts +7 -7
  61. package/lib/QuickReplies.d.ts +4 -3
  62. package/lib/QuickReplies.js +10 -16
  63. package/lib/QuickReplies.js.flow +4 -2
  64. package/lib/QuickReplies.js.map +1 -1
  65. package/lib/Send.d.ts +4 -4
  66. package/lib/Send.js +6 -9
  67. package/lib/Send.js.map +1 -1
  68. package/lib/SystemMessage.d.ts +6 -5
  69. package/lib/SystemMessage.js +1 -2
  70. package/lib/SystemMessage.js.flow +1 -1
  71. package/lib/SystemMessage.js.map +1 -1
  72. package/lib/Time.d.ts +7 -6
  73. package/lib/Time.js +1 -3
  74. package/lib/Time.js.flow +1 -1
  75. package/lib/Time.js.map +1 -1
  76. package/lib/TypingIndicator.d.ts +2 -1
  77. package/lib/TypingIndicator.js +5 -5
  78. package/lib/TypingIndicator.js.map +1 -1
  79. package/lib/hooks/useUpdateLayoutEffect.js +2 -4
  80. package/lib/hooks/useUpdateLayoutEffect.js.map +1 -1
  81. package/lib/index.d.ts +1 -0
  82. package/lib/index.js +1 -0
  83. package/lib/index.js.map +1 -1
  84. package/lib/logging.d.ts +2 -2
  85. package/lib/logging.js.map +1 -1
  86. package/lib/types.js.flow +1 -1
  87. package/lib/utils.d.ts +1 -1
  88. package/lib/utils.js +2 -4
  89. package/lib/utils.js.map +1 -1
  90. package/package.json +83 -53
  91. package/src/Actions.tsx +114 -0
  92. package/src/Avatar.tsx +178 -0
  93. package/src/Bubble.tsx +601 -0
  94. package/src/Color.ts +17 -0
  95. package/src/Composer.tsx +147 -0
  96. package/src/Constant.ts +18 -0
  97. package/src/Day.tsx +71 -0
  98. package/src/GiftedAvatar.tsx +205 -0
  99. package/src/GiftedChat.tsx +670 -0
  100. package/src/GiftedChatContext.ts +23 -0
  101. package/src/InputToolbar.tsx +113 -0
  102. package/src/LoadEarlier.tsx +108 -0
  103. package/src/Message.tsx +229 -0
  104. package/src/MessageAudio.tsx +19 -0
  105. package/src/MessageContainer.tsx +362 -0
  106. package/src/MessageImage.tsx +78 -0
  107. package/src/MessageText.tsx +187 -0
  108. package/src/MessageVideo.tsx +19 -0
  109. package/src/Models.ts +84 -0
  110. package/src/QuickReplies.tsx +186 -0
  111. package/src/Send.tsx +102 -0
  112. package/src/SystemMessage.tsx +61 -0
  113. package/src/Time.tsx +97 -0
  114. package/src/TypingIndicator.tsx +108 -0
  115. package/src/__tests__/Actions.test.tsx +10 -0
  116. package/src/__tests__/Avatar.test.tsx +13 -0
  117. package/src/__tests__/Bubble.test.tsx +23 -0
  118. package/src/__tests__/Color.test.tsx +5 -0
  119. package/src/__tests__/Composer.test.tsx +11 -0
  120. package/src/__tests__/Constant.test.tsx +5 -0
  121. package/src/__tests__/Day.test.tsx +23 -0
  122. package/src/__tests__/GiftedAvatar.test.tsx +11 -0
  123. package/src/__tests__/GiftedChat.test.tsx +36 -0
  124. package/src/__tests__/InputToolbar.test.tsx +11 -0
  125. package/src/__tests__/LoadEarlier.test.tsx +11 -0
  126. package/src/__tests__/Message.test.tsx +77 -0
  127. package/src/__tests__/MessageContainer.test.tsx +11 -0
  128. package/src/__tests__/MessageImage.test.tsx +27 -0
  129. package/src/__tests__/MessageText.test.tsx +11 -0
  130. package/src/__tests__/Send.test.tsx +22 -0
  131. package/src/__tests__/SystemMessage.test.tsx +27 -0
  132. package/src/__tests__/Time.test.tsx +29 -0
  133. package/src/__tests__/__snapshots__/Actions.test.tsx.snap +76 -0
  134. package/src/__tests__/__snapshots__/Avatar.test.tsx.snap +17 -0
  135. package/src/__tests__/__snapshots__/Bubble.test.tsx.snap +145 -0
  136. package/src/__tests__/__snapshots__/Color.test.tsx.snap +21 -0
  137. package/src/__tests__/__snapshots__/Composer.test.tsx.snap +35 -0
  138. package/src/__tests__/__snapshots__/Constant.test.tsx.snap +16 -0
  139. package/src/__tests__/__snapshots__/Day.test.tsx.snap +37 -0
  140. package/src/__tests__/__snapshots__/GiftedAvatar.test.tsx.snap +22 -0
  141. package/src/__tests__/__snapshots__/GiftedChat.test.tsx.snap +15 -0
  142. package/src/__tests__/__snapshots__/InputToolbar.test.tsx.snap +60 -0
  143. package/src/__tests__/__snapshots__/LoadEarlier.test.tsx.snap +74 -0
  144. package/src/__tests__/__snapshots__/Message.test.tsx.snap +628 -0
  145. package/src/__tests__/__snapshots__/MessageContainer.test.tsx.snap +127 -0
  146. package/src/__tests__/__snapshots__/MessageImage.test.tsx.snap +38 -0
  147. package/src/__tests__/__snapshots__/MessageText.test.tsx.snap +30 -0
  148. package/src/__tests__/__snapshots__/Send.test.tsx.snap +129 -0
  149. package/src/__tests__/__snapshots__/SystemMessage.test.tsx.snap +38 -0
  150. package/src/__tests__/__snapshots__/Time.test.tsx.snap +33 -0
  151. package/src/__tests__/data.ts +8 -0
  152. package/src/__tests__/utils.test.ts +31 -0
  153. package/src/hooks/useUpdateLayoutEffect.ts +21 -0
  154. package/src/index.ts +4 -0
  155. package/src/logging.ts +8 -0
  156. package/src/utils.ts +39 -0
  157. package/.eslintignore +0 -2
  158. package/.eslintrc.js +0 -21
  159. package/jest.config.js +0 -15
package/README.md CHANGED
@@ -16,8 +16,6 @@
16
16
  <a href="https://www.npmjs.com/package/react-native-gifted-chat">
17
17
  <img alt="npm downloads" src="https://img.shields.io/npm/dm/react-native-gifted-chat.svg"/></a>
18
18
  <a href="https://www.npmjs.com/package/react-native-gifted-chat"><img alt="npm version" src="https://badge.fury.io/js/react-native-gifted-chat.svg"/></a>
19
- <a href="https://reactnative.gallery/FaridSafi/gifted-chat"><img src="https://img.shields.io/badge/reactnative.gallery-%F0%9F%8E%AC-green.svg"/></a>
20
-
21
19
  </p>
22
20
  <p align="center">
23
21
   <a href="https://circleci.com/gh/FaridSafi/react-native-gifted-chat"><img src="https://circleci.com/gh/FaridSafi/react-native-gifted-chat.svg?style=shield" alt="build"></a>
@@ -67,6 +65,20 @@
67
65
  </p>
68
66
  </p>
69
67
 
68
+ <p align="center">
69
+ <br/>
70
+ <a href="https://www.ethora.com" target="_blank">
71
+ <img src="https://www.dappros.com/wp-content/uploads/2023/12/Ethora-Logo.png" width="300px">
72
+ </a>
73
+ <br>
74
+ <p align="center">
75
+ A complete app engine featuring GiftedChat
76
+ </p>
77
+ <p align="center">
78
+ <a href="https://bit.ly/ethorachat" target="_blank">Check out our GitHub</a>
79
+ </p>
80
+ </p>
81
+
70
82
  ## The future of GiftedChat 🎉
71
83
 
72
84
  Please give us your advice: [Related PR](https://github.com/FaridSafi/react-native-gifted-chat/pull/1775)
@@ -186,7 +198,7 @@ See [`App.tsx`](https://github.com/FaridSafi/react-native-gifted-chat/blob/maste
186
198
 
187
199
  ## "Slack" example
188
200
 
189
- See the files in [`example-slack-message`](example-slack-message) for an example of how to override the default UI to make something that looks more like Slack -- with usernames displayed and all messages on the left.
201
+ See the files in [`example/example-slack-message`](example/example-slack-message) for an example of how to override the default UI to make something that looks more like Slack -- with usernames displayed and all messages on the left.
190
202
 
191
203
  ## Message object
192
204
 
@@ -252,7 +264,7 @@ See PR [#1211](https://github.com/FaridSafi/react-native-gifted-chat/pull/1211)
252
264
  interface Reply {
253
265
  title: string
254
266
  value: string
255
- messageId?: any
267
+ messageId?: number | string
256
268
  }
257
269
 
258
270
  interface QuickReplies {
@@ -334,7 +346,6 @@ interface QuickReplies {
334
346
  - **`timeFormat`** _(String)_ - Format to use for rendering times; default is `'LT'` (see [Day.js Format](https://day.js.org/docs/en/display/format))
335
347
  - **`dateFormat`** _(String)_ - Format to use for rendering dates; default is `'ll'` (see [Day.js Format](https://day.js.org/docs/en/display/format))
336
348
  - **`loadEarlier`** _(Bool)_ - Enables the "load earlier messages" button, required for `infiniteScroll`
337
- - **`isKeyboardInternallyHandled`** _(Bool)_ - Determine whether to handle keyboard awareness inside the plugin. If you have your own keyboard handling outside the plugin set this to false; default is `true`
338
349
  - **`onLoadEarlier`** _(Function)_ - Callback when loading earlier messages
339
350
  - **`isLoadingEarlier`** _(Bool)_ - Display an `ActivityIndicator` when loading earlier messages
340
351
  - **`renderLoading`** _(Function)_ - Render a loading view when initializing
@@ -373,7 +384,6 @@ interface QuickReplies {
373
384
  - **`renderSend`** _(Function)_ - Custom send button; you can pass children to the original `Send` component quite easily, for example, to use a custom icon ([example](https://github.com/FaridSafi/react-native-gifted-chat/pull/487))
374
385
  - **`renderAccessory`** _(Function)_ - Custom second line of actions below the message composer
375
386
  - **`onPressActionButton`** _(Function)_ - Callback when the Action button is pressed (if set, the default `actionSheet` will not be used)
376
- - **`bottomOffset`** _(Integer)_ - Distance of the chat from the bottom of the screen (e.g. useful if you display a tab bar)
377
387
  - **`minInputToolbarHeight`** _(Integer)_ - Minimum height of the input toolbar; default is `44`
378
388
  - **`listViewProps`** _(Object)_ - Extra props to be passed to the messages [`<ListView>`](https://facebook.github.io/react-native/docs/listview.html); some props can't be overridden, see the code in `MessageContainer.render()` for details
379
389
  - **`textInputProps`** _(Object)_ - Extra props to be passed to the [`<TextInput>`](https://facebook.github.io/react-native/docs/textinput.html)
package/lib/Actions.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import PropTypes from 'prop-types';
2
- import { ReactNode } from 'react';
2
+ import React, { ReactNode } from 'react';
3
3
  import { StyleProp, ViewStyle, TextStyle } from 'react-native';
4
4
  export interface ActionsProps {
5
5
  options?: {
6
- [key: string]: any;
6
+ [key: string]: () => void;
7
7
  };
8
8
  optionTintColor?: string;
9
9
  icon?: () => ReactNode;
@@ -12,15 +12,14 @@ export interface ActionsProps {
12
12
  containerStyle?: StyleProp<ViewStyle>;
13
13
  onPressActionButton?(): void;
14
14
  }
15
- export declare function Actions({ options, optionTintColor, icon, wrapperStyle, iconTextStyle, onPressActionButton, containerStyle, }: ActionsProps): JSX.Element;
15
+ export declare function Actions({ options, optionTintColor, icon, wrapperStyle, iconTextStyle, onPressActionButton, containerStyle, }: ActionsProps): React.JSX.Element;
16
16
  export declare namespace Actions {
17
17
  var propTypes: {
18
- onSend: PropTypes.Requireable<(...args: any[]) => any>;
19
18
  options: PropTypes.Requireable<object>;
20
19
  optionTintColor: PropTypes.Requireable<string>;
21
20
  icon: PropTypes.Requireable<(...args: any[]) => any>;
22
21
  onPressActionButton: PropTypes.Requireable<(...args: any[]) => any>;
23
- wrapperStyle: PropTypes.Requireable<number | boolean | object>;
24
- containerStyle: PropTypes.Requireable<number | boolean | object>;
22
+ wrapperStyle: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
23
+ containerStyle: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
25
24
  };
26
25
  }
package/lib/Actions.js CHANGED
@@ -1,13 +1,14 @@
1
1
  import PropTypes from 'prop-types';
2
- import React from 'react';
2
+ import React, { useCallback } from 'react';
3
3
  import { StyleSheet, Text, TouchableOpacity, View, } from 'react-native';
4
4
  import Color from './Color';
5
5
  import { StylePropType } from './utils';
6
6
  import { useChatContext } from './GiftedChatContext';
7
- import { useCallbackOne } from 'use-memo-one';
8
- export function Actions({ options = {}, optionTintColor = Color.optionTintColor, icon, wrapperStyle, iconTextStyle, onPressActionButton, containerStyle, }) {
7
+ export function Actions({ options, optionTintColor = Color.optionTintColor, icon, wrapperStyle, iconTextStyle, onPressActionButton, containerStyle, }) {
9
8
  const { actionSheet } = useChatContext();
10
- const onActionsPress = useCallbackOne(() => {
9
+ const onActionsPress = useCallback(() => {
10
+ if (!options)
11
+ return;
11
12
  const optionKeys = Object.keys(options);
12
13
  const cancelButtonIndex = optionKeys.indexOf('Cancel');
13
14
  actionSheet().showActionSheetWithOptions({
@@ -15,26 +16,25 @@ export function Actions({ options = {}, optionTintColor = Color.optionTintColor,
15
16
  cancelButtonIndex,
16
17
  tintColor: optionTintColor,
17
18
  }, (buttonIndex) => {
19
+ if (buttonIndex === undefined)
20
+ return;
18
21
  const key = optionKeys[buttonIndex];
19
- if (key) {
22
+ if (key)
20
23
  options[key]();
21
- }
22
24
  });
23
- }, []);
24
- const renderIcon = useCallbackOne(() => {
25
- if (icon) {
25
+ }, [actionSheet, options, optionTintColor]);
26
+ const renderIcon = useCallback(() => {
27
+ if (icon)
26
28
  return icon();
27
- }
28
29
  return (<View style={[styles.wrapper, wrapperStyle]}>
29
- <Text style={[styles.iconText, iconTextStyle]}>+</Text>
30
+ <Text style={[styles.iconText, iconTextStyle]}>{'+'}</Text>
30
31
  </View>);
31
- }, []);
32
+ }, [icon, iconTextStyle, wrapperStyle]);
32
33
  return (<TouchableOpacity style={[styles.container, containerStyle]} onPress={onPressActionButton || onActionsPress}>
33
34
  {renderIcon()}
34
35
  </TouchableOpacity>);
35
36
  }
36
37
  Actions.propTypes = {
37
- onSend: PropTypes.func,
38
38
  options: PropTypes.object,
39
39
  optionTintColor: PropTypes.string,
40
40
  icon: PropTypes.func,
@@ -54,11 +54,14 @@ const styles = StyleSheet.create({
54
54
  borderColor: Color.defaultColor,
55
55
  borderWidth: 2,
56
56
  flex: 1,
57
+ alignItems: 'center',
58
+ justifyContent: 'center',
57
59
  },
58
60
  iconText: {
59
61
  color: Color.defaultColor,
60
62
  fontWeight: 'bold',
61
63
  fontSize: 16,
64
+ lineHeight: 16,
62
65
  backgroundColor: Color.backgroundTransparent,
63
66
  textAlign: 'center',
64
67
  },
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.js","sourceRoot":"","sources":["../src/Actions.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Actions.js","sourceRoot":"","sources":["../src/Actions.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAA;AAClC,OAAO,KAAK,EAAE,EAAa,WAAW,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,EACL,UAAU,EACV,IAAI,EACJ,gBAAgB,EAChB,IAAI,GAIL,MAAM,cAAc,CAAA;AACrB,OAAO,KAAK,MAAM,SAAS,CAAA;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAYpD,MAAM,UAAU,OAAO,CAAE,EACvB,OAAO,EACP,eAAe,GAAG,KAAK,CAAC,eAAe,EACvC,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,cAAc,GACD;IACb,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,EAAE,CAAA;IAExC,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI,CAAC,OAAO;YACV,OAAM;QAER,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACvC,MAAM,iBAAiB,GAAG,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAEtD,WAAW,EAAE,CAAC,0BAA0B,CACtC;YACE,OAAO,EAAE,UAAU;YACnB,iBAAiB;YACjB,SAAS,EAAE,eAAe;SAC3B,EACD,CAAC,WAA+B,EAAE,EAAE;YAClC,IAAI,WAAW,KAAK,SAAS;gBAC3B,OAAM;YAER,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,CAAA;YACnC,IAAI,GAAG;gBACL,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;QAClB,CAAC,CACF,CAAA;IACH,CAAC,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAA;IAE3C,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,IAAI;YACN,OAAO,IAAI,EAAE,CAAA;QAEf,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAC1C;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAC5D;MAAA,EAAE,IAAI,CAAC,CACR,CAAA;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC,CAAA;IAEvC,OAAO,CACL,CAAC,gBAAgB,CACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAC1C,OAAO,CAAC,CAAC,mBAAmB,IAAI,cAAc,CAAC,CAE/C;MAAA,CAAC,UAAU,EAAE,CACf;IAAA,EAAE,gBAAgB,CAAC,CACpB,CAAA;AACH,CAAC;AAED,OAAO,CAAC,SAAS,GAAG;IAClB,OAAO,EAAE,SAAS,CAAC,MAAM;IACzB,eAAe,EAAE,SAAS,CAAC,MAAM;IACjC,IAAI,EAAE,SAAS,CAAC,IAAI;IACpB,mBAAmB,EAAE,SAAS,CAAC,IAAI;IACnC,YAAY,EAAE,aAAa;IAC3B,cAAc,EAAE,aAAa;CAC9B,CAAA;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,EAAE;QACd,YAAY,EAAE,EAAE;KACjB;IACD,OAAO,EAAE;QACP,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,KAAK,CAAC,YAAY;QAC/B,WAAW,EAAE,CAAC;QACd,IAAI,EAAE,CAAC;QACP,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;KACzB;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,KAAK,CAAC,YAAY;QACzB,UAAU,EAAE,MAAM;QAClB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;QACd,eAAe,EAAE,KAAK,CAAC,qBAAqB;QAC5C,SAAS,EAAE,QAAQ;KACpB;CACF,CAAC,CAAA"}
package/lib/Avatar.d.ts CHANGED
@@ -1,9 +1,9 @@
1
1
  import PropTypes from 'prop-types';
2
- import { ReactNode } from 'react';
2
+ import React, { ReactNode } from 'react';
3
3
  import { ImageStyle, TextStyle, ViewStyle } from 'react-native';
4
- import { Omit, IMessage, User, LeftRightStyle } from './Models';
4
+ import { IMessage, LeftRightStyle, User } from './Models';
5
5
  export interface AvatarProps<TMessage extends IMessage> {
6
- currentMessage?: TMessage;
6
+ currentMessage: TMessage;
7
7
  previousMessage?: TMessage;
8
8
  nextMessage?: TMessage;
9
9
  position: 'left' | 'right';
@@ -13,25 +13,11 @@ export interface AvatarProps<TMessage extends IMessage> {
13
13
  containerStyle?: LeftRightStyle<ViewStyle>;
14
14
  textStyle?: TextStyle;
15
15
  renderAvatar?(props: Omit<AvatarProps<TMessage>, 'renderAvatar'>): ReactNode;
16
- onPressAvatar?(user: User): void;
17
- onLongPressAvatar?(user: User): void;
16
+ onPressAvatar?: (user: User) => void;
17
+ onLongPressAvatar?: (user: User) => void;
18
18
  }
19
- export declare function Avatar<TMessage extends IMessage = IMessage>(props: AvatarProps<TMessage>): JSX.Element | null;
19
+ export declare function Avatar<TMessage extends IMessage = IMessage>(props: AvatarProps<TMessage>): React.JSX.Element | null;
20
20
  export declare namespace Avatar {
21
- var defaultProps: {
22
- renderAvatarOnTop: boolean;
23
- showAvatarForEveryMessage: boolean;
24
- position: string;
25
- currentMessage: {
26
- user: null;
27
- };
28
- previousMessage: {};
29
- nextMessage: {};
30
- containerStyle: {};
31
- imageStyle: {};
32
- onPressAvatar: () => void;
33
- onLongPressAvatar: () => void;
34
- };
35
21
  var propTypes: {
36
22
  renderAvatarOnTop: PropTypes.Requireable<boolean>;
37
23
  showAvatarForEveryMessage: PropTypes.Requireable<boolean>;
@@ -43,12 +29,12 @@ export declare namespace Avatar {
43
29
  onLongPressAvatar: PropTypes.Requireable<(...args: any[]) => any>;
44
30
  renderAvatar: PropTypes.Requireable<(...args: any[]) => any>;
45
31
  containerStyle: PropTypes.Requireable<PropTypes.InferProps<{
46
- left: PropTypes.Requireable<number | boolean | object>;
47
- right: PropTypes.Requireable<number | boolean | object>;
32
+ left: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
33
+ right: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
48
34
  }>>;
49
35
  imageStyle: PropTypes.Requireable<PropTypes.InferProps<{
50
- left: PropTypes.Requireable<number | boolean | object>;
51
- right: PropTypes.Requireable<number | boolean | object>;
36
+ left: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
37
+ right: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
52
38
  }>>;
53
39
  };
54
40
  }
package/lib/Avatar.js CHANGED
@@ -11,7 +11,6 @@ const styles = {
11
11
  onTop: {
12
12
  alignSelf: 'flex-start',
13
13
  },
14
- onBottom: {},
15
14
  image: {
16
15
  height: 36,
17
16
  width: 36,
@@ -25,7 +24,6 @@ const styles = {
25
24
  onTop: {
26
25
  alignSelf: 'flex-start',
27
26
  },
28
- onBottom: {},
29
27
  image: {
30
28
  height: 36,
31
29
  width: 36,
@@ -34,62 +32,53 @@ const styles = {
34
32
  }),
35
33
  };
36
34
  export function Avatar(props) {
37
- const { renderAvatarOnTop, showAvatarForEveryMessage, containerStyle, position, currentMessage, renderAvatar, previousMessage, nextMessage, imageStyle, } = props;
35
+ const { renderAvatarOnTop, showAvatarForEveryMessage, containerStyle, position, currentMessage, renderAvatar, previousMessage, nextMessage, imageStyle, onPressAvatar, onLongPressAvatar, } = props;
38
36
  const messageToCompare = renderAvatarOnTop ? previousMessage : nextMessage;
39
- const computedStyle = renderAvatarOnTop ? 'onTop' : 'onBottom';
40
- if (renderAvatar === null) {
37
+ if (renderAvatar === null)
41
38
  return null;
42
- }
43
39
  if (!showAvatarForEveryMessage &&
44
40
  currentMessage &&
45
41
  messageToCompare &&
46
42
  isSameUser(currentMessage, messageToCompare) &&
47
- isSameDay(currentMessage, messageToCompare)) {
43
+ isSameDay(currentMessage, messageToCompare))
48
44
  return (<View style={[
49
45
  styles[position].container,
50
- containerStyle && containerStyle[position],
46
+ containerStyle?.[position],
51
47
  ]}>
52
48
  <GiftedAvatar avatarStyle={[
53
49
  styles[position].image,
54
- imageStyle && imageStyle[position],
50
+ imageStyle?.[position],
55
51
  ]}/>
56
52
  </View>);
57
- }
58
53
  const renderAvatarComponent = () => {
59
- if (props.renderAvatar) {
60
- const { renderAvatar, ...avatarProps } = props;
61
- return props.renderAvatar(avatarProps);
62
- }
63
- if (props.currentMessage) {
54
+ if (renderAvatar)
55
+ return renderAvatar({
56
+ renderAvatarOnTop,
57
+ showAvatarForEveryMessage,
58
+ containerStyle,
59
+ position,
60
+ currentMessage,
61
+ previousMessage,
62
+ nextMessage,
63
+ imageStyle,
64
+ onPressAvatar,
65
+ onLongPressAvatar,
66
+ });
67
+ if (currentMessage)
64
68
  return (<GiftedAvatar avatarStyle={[
65
- styles[props.position].image,
66
- props.imageStyle && props.imageStyle[props.position],
67
- ]} user={props.currentMessage.user} onPress={() => { var _a; return (_a = props.onPressAvatar) === null || _a === void 0 ? void 0 : _a.call(props, props.currentMessage.user); }} onLongPress={() => { var _a; return (_a = props.onLongPressAvatar) === null || _a === void 0 ? void 0 : _a.call(props, props.currentMessage.user); }}/>);
68
- }
69
+ styles[position].image,
70
+ imageStyle?.[position],
71
+ ]} user={currentMessage.user} onPress={() => onPressAvatar?.(currentMessage.user)} onLongPress={() => onLongPressAvatar?.(currentMessage.user)}/>);
69
72
  return null;
70
73
  };
71
74
  return (<View style={[
72
75
  styles[position].container,
73
- styles[position][computedStyle],
74
- containerStyle && containerStyle[position],
76
+ renderAvatarOnTop && styles[position].onTop,
77
+ containerStyle?.[position],
75
78
  ]}>
76
79
  {renderAvatarComponent()}
77
80
  </View>);
78
81
  }
79
- Avatar.defaultProps = {
80
- renderAvatarOnTop: false,
81
- showAvatarForEveryMessage: false,
82
- position: 'left',
83
- currentMessage: {
84
- user: null,
85
- },
86
- previousMessage: {},
87
- nextMessage: {},
88
- containerStyle: {},
89
- imageStyle: {},
90
- onPressAvatar: () => { },
91
- onLongPressAvatar: () => { },
92
- };
93
82
  Avatar.propTypes = {
94
83
  renderAvatarOnTop: PropTypes.bool,
95
84
  showAvatarForEveryMessage: PropTypes.bool,
@@ -7,7 +7,7 @@ import type {
7
7
  } from 'react-native/Libraries/StyleSheet/StyleSheet'
8
8
 
9
9
  export type AvatarProps<TMessage: IMessage = IMessage> = $ReadOnly<{|
10
- currentMessage?: TMessage,
10
+ currentMessage: TMessage,
11
11
  previousMessage?: TMessage,
12
12
  nextMessage?: TMessage,
13
13
  position: 'left' | 'right',
package/lib/Avatar.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../src/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAA;AAClC,OAAO,KAAoB,MAAM,OAAO,CAAA;AACxC,OAAO,EACL,UAAU,EACV,IAAI,GAIL,MAAM,cAAc,CAAA;AACrB,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAG9D,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC;QACtB,SAAS,EAAE;YACT,WAAW,EAAE,CAAC;SACf;QACD,KAAK,EAAE;YACL,SAAS,EAAE,YAAY;SACxB;QACD,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE;YACL,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;YACT,YAAY,EAAE,EAAE;SACjB;KACF,CAAC;IACF,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;QACvB,SAAS,EAAE;YACT,UAAU,EAAE,CAAC;SACd;QACD,KAAK,EAAE;YACL,SAAS,EAAE,YAAY;SACxB;QACD,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE;YACL,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;YACT,YAAY,EAAE,EAAE;SACjB;KACF,CAAC;CACH,CAAA;AAiBD,MAAM,UAAU,MAAM,CACpB,KAA4B;IAE5B,MAAM,EACJ,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,UAAU,GACX,GAAG,KAAK,CAAA;IACT,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAA;IAC1E,MAAM,aAAa,GAAG,iBAAiB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAA;IAE9D,IAAI,YAAY,KAAK,IAAI,EAAE;QACzB,OAAO,IAAI,CAAA;KACZ;IAED,IACE,CAAC,yBAAyB;QAC1B,cAAc;QACd,gBAAgB;QAChB,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAC5C,SAAS,CAAC,cAAc,EAAE,gBAAgB,CAAC,EAC3C;QACA,OAAO,CACL,CAAC,IAAI,CACH,KAAK,CAAC,CAAC;gBACL,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;gBAC1B,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC;aAC3C,CAAC,CAEF;QAAA,CAAC,YAAY,CACX,WAAW,CAAC,CACV;gBACE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK;gBACtB,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC;aACrB,CAChB,EAEL;MAAA,EAAE,IAAI,CAAC,CACR,CAAA;KACF;IAED,MAAM,qBAAqB,GAAG,GAAG,EAAE;QACjC,IAAI,KAAK,CAAC,YAAY,EAAE;YACtB,MAAM,EAAE,YAAY,EAAE,GAAG,WAAW,EAAE,GAAG,KAAK,CAAA;YAC9C,OAAO,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;SACvC;QAED,IAAI,KAAK,CAAC,cAAc,EAAE;YACxB,OAAO,CACL,CAAC,YAAY,CACX,WAAW,CAAC,CACV;oBACE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK;oBAC5B,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;iBACvC,CAChB,CACD,IAAI,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,CAChC,OAAO,CAAC,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,KAAK,CAAC,aAAa,sDAAG,KAAK,CAAC,cAAe,CAAC,IAAI,CAAC,CAAA,EAAA,CAAC,CACjE,WAAW,CAAC,CAAC,GAAG,EAAE,WAChB,OAAA,MAAA,KAAK,CAAC,iBAAiB,sDAAG,KAAK,CAAC,cAAe,CAAC,IAAI,CAAC,CAAA,EAAA,CACtD,EACD,CACH,CAAA;SACF;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,OAAO,CACL,CAAC,IAAI,CACH,KAAK,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;YAC1B,MAAM,CAAC,QAAQ,CAAC,CAAC,aAAa,CAAC;YAC/B,cAAc,IAAI,cAAc,CAAC,QAAQ,CAAC;SAC3C,CAAC,CAEF;MAAA,CAAC,qBAAqB,EAAE,CAC1B;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC;AAED,MAAM,CAAC,YAAY,GAAG;IACpB,iBAAiB,EAAE,KAAK;IACxB,yBAAyB,EAAE,KAAK;IAChC,QAAQ,EAAE,MAAM;IAChB,cAAc,EAAE;QACd,IAAI,EAAE,IAAI;KACX;IACD,eAAe,EAAE,EAAE;IACnB,WAAW,EAAE,EAAE;IACf,cAAc,EAAE,EAAE;IAClB,UAAU,EAAE,EAAE;IACd,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC;IACvB,iBAAiB,EAAE,GAAG,EAAE,GAAE,CAAC;CAC5B,CAAA;AAED,MAAM,CAAC,SAAS,GAAG;IACjB,iBAAiB,EAAE,SAAS,CAAC,IAAI;IACjC,yBAAyB,EAAE,SAAS,CAAC,IAAI;IACzC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,cAAc,EAAE,SAAS,CAAC,MAAM;IAChC,eAAe,EAAE,SAAS,CAAC,MAAM;IACjC,WAAW,EAAE,SAAS,CAAC,MAAM;IAC7B,aAAa,EAAE,SAAS,CAAC,IAAI;IAC7B,iBAAiB,EAAE,SAAS,CAAC,IAAI;IACjC,YAAY,EAAE,SAAS,CAAC,IAAI;IAC5B,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC;QAC9B,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,aAAa;KACrB,CAAC;IACF,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC;QAC1B,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,aAAa;KACrB,CAAC;CACH,CAAA"}
1
+ {"version":3,"file":"Avatar.js","sourceRoot":"","sources":["../src/Avatar.tsx"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,YAAY,CAAA;AAClC,OAAO,KAAoB,MAAM,OAAO,CAAA;AACxC,OAAO,EAEL,UAAU,EAEV,IAAI,GAEL,MAAM,cAAc,CAAA;AACrB,OAAO,YAAY,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAgB9D,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC;QACtB,SAAS,EAAE;YACT,WAAW,EAAE,CAAC;SACf;QACD,KAAK,EAAE;YACL,SAAS,EAAE,YAAY;SACxB;QACD,KAAK,EAAE;YACL,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;YACT,YAAY,EAAE,EAAE;SACjB;KACF,CAAC;IACF,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC;QACvB,SAAS,EAAE;YACT,UAAU,EAAE,CAAC;SACd;QACD,KAAK,EAAE;YACL,SAAS,EAAE,YAAY;SACxB;QACD,KAAK,EAAE;YACL,MAAM,EAAE,EAAE;YACV,KAAK,EAAE,EAAE;YACT,YAAY,EAAE,EAAE;SACjB;KACF,CAAC;CACH,CAAA;AAiBD,MAAM,UAAU,MAAM,CACpB,KAA4B;IAE5B,MAAM,EACJ,iBAAiB,EACjB,yBAAyB,EACzB,cAAc,EACd,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,EACf,WAAW,EACX,UAAU,EACV,aAAa,EACb,iBAAiB,GAClB,GAAG,KAAK,CAAA;IAET,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAA;IAE1E,IAAI,YAAY,KAAK,IAAI;QACvB,OAAO,IAAI,CAAA;IAEb,IACE,CAAC,yBAAyB;QAC1B,cAAc;QACd,gBAAgB;QAChB,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAC5C,SAAS,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAE3C,OAAO,CACL,CAAC,IAAI,CACH,KAAK,CAAC,CAAC;gBACL,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;gBAC1B,cAAc,EAAE,CAAC,QAAQ,CAAC;aAC3B,CAAC,CAEF;QAAA,CAAC,YAAY,CACX,WAAW,CAAC,CAAC;gBACX,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK;gBACtB,UAAU,EAAE,CAAC,QAAQ,CAAC;aACvB,CAAC,EAEN;MAAA,EAAE,IAAI,CAAC,CACR,CAAA;IAEH,MAAM,qBAAqB,GAAG,GAAG,EAAE;QACjC,IAAI,YAAY;YACd,OAAO,YAAY,CAAC;gBAClB,iBAAiB;gBACjB,yBAAyB;gBACzB,cAAc;gBACd,QAAQ;gBACR,cAAc;gBACd,eAAe;gBACf,WAAW;gBACX,UAAU;gBACV,aAAa;gBACb,iBAAiB;aAClB,CAAC,CAAA;QAEJ,IAAI,cAAc;YAChB,OAAO,CACL,CAAC,YAAY,CACX,WAAW,CAAC,CAAC;oBACX,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK;oBACtB,UAAU,EAAE,CAAC,QAAQ,CAAC;iBACvB,CAAC,CACF,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAC1B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,aAAa,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CACpD,WAAW,CAAC,CAAC,GAAG,EAAE,CAAC,iBAAiB,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAC5D,CACH,CAAA;QAEH,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,OAAO,CACL,CAAC,IAAI,CACH,KAAK,CAAC,CAAC;YACL,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS;YAC1B,iBAAiB,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK;YAC3C,cAAc,EAAE,CAAC,QAAQ,CAAC;SAC3B,CAAC,CAEF;MAAA,CAAC,qBAAqB,EAAE,CAC1B;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC;AAED,MAAM,CAAC,SAAS,GAAG;IACjB,iBAAiB,EAAE,SAAS,CAAC,IAAI;IACjC,yBAAyB,EAAE,SAAS,CAAC,IAAI;IACzC,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,cAAc,EAAE,SAAS,CAAC,MAAM;IAChC,eAAe,EAAE,SAAS,CAAC,MAAM;IACjC,WAAW,EAAE,SAAS,CAAC,MAAM;IAC7B,aAAa,EAAE,SAAS,CAAC,IAAI;IAC7B,iBAAiB,EAAE,SAAS,CAAC,IAAI;IACjC,YAAY,EAAE,SAAS,CAAC,IAAI;IAC5B,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC;QAC9B,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,aAAa;KACrB,CAAC;IACF,UAAU,EAAE,SAAS,CAAC,KAAK,CAAC;QAC1B,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,aAAa;KACrB,CAAC;CACH,CAAA"}
package/lib/Bubble.d.ts CHANGED
@@ -6,10 +6,10 @@ import { MessageTextProps } from './MessageText';
6
6
  import { MessageImageProps } from './MessageImage';
7
7
  import { TimeProps } from './Time';
8
8
  import { User, IMessage, LeftRightStyle, Reply, Omit, MessageVideoProps, MessageAudioProps } from './Models';
9
- export declare type RenderMessageImageProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageImageProps<TMessage>;
10
- export declare type RenderMessageVideoProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageVideoProps<TMessage>;
11
- export declare type RenderMessageAudioProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageAudioProps<TMessage>;
12
- export declare type RenderMessageTextProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageTextProps<TMessage>;
9
+ export type RenderMessageImageProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageImageProps<TMessage>;
10
+ export type RenderMessageVideoProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageVideoProps<TMessage>;
11
+ export type RenderMessageAudioProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageAudioProps<TMessage>;
12
+ export type RenderMessageTextProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageTextProps<TMessage>;
13
13
  export interface BubbleProps<TMessage extends IMessage> {
14
14
  user?: User;
15
15
  touchableProps?: object;
@@ -17,7 +17,7 @@ export interface BubbleProps<TMessage extends IMessage> {
17
17
  isCustomViewBottom?: boolean;
18
18
  inverted?: boolean;
19
19
  position: 'left' | 'right';
20
- currentMessage?: TMessage;
20
+ currentMessage: TMessage;
21
21
  nextMessage?: TMessage;
22
22
  previousMessage?: TMessage;
23
23
  optionTitles?: string[];
@@ -31,8 +31,9 @@ export interface BubbleProps<TMessage extends IMessage> {
31
31
  usernameStyle?: TextStyle;
32
32
  quickReplyStyle?: StyleProp<ViewStyle>;
33
33
  quickReplyTextStyle?: StyleProp<TextStyle>;
34
- onPress?(context?: any, message?: any): void;
35
- onLongPress?(context?: any, message?: any): void;
34
+ quickReplyContainerStyle?: StyleProp<ViewStyle>;
35
+ onPress?(context?: unknown, message?: unknown): void;
36
+ onLongPress?(context?: unknown, message?: unknown): void;
36
37
  onQuickReply?(replies: Reply[]): void;
37
38
  renderMessageImage?(props: RenderMessageImageProps<TMessage>): React.ReactNode;
38
39
  renderMessageVideo?(props: RenderMessageVideoProps<TMessage>): React.ReactNode;
@@ -100,26 +101,26 @@ export default class Bubble<TMessage extends IMessage = IMessage> extends React.
100
101
  nextMessage: PropTypes.Requireable<object>;
101
102
  previousMessage: PropTypes.Requireable<object>;
102
103
  containerStyle: PropTypes.Requireable<PropTypes.InferProps<{
103
- left: PropTypes.Requireable<number | boolean | object>;
104
- right: PropTypes.Requireable<number | boolean | object>;
104
+ left: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
105
+ right: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
105
106
  }>>;
106
107
  wrapperStyle: PropTypes.Requireable<PropTypes.InferProps<{
107
- left: PropTypes.Requireable<number | boolean | object>;
108
- right: PropTypes.Requireable<number | boolean | object>;
108
+ left: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
109
+ right: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
109
110
  }>>;
110
111
  bottomContainerStyle: PropTypes.Requireable<PropTypes.InferProps<{
111
- left: PropTypes.Requireable<number | boolean | object>;
112
- right: PropTypes.Requireable<number | boolean | object>;
112
+ left: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
113
+ right: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
113
114
  }>>;
114
- tickStyle: PropTypes.Requireable<number | boolean | object>;
115
- usernameStyle: PropTypes.Requireable<number | boolean | object>;
115
+ tickStyle: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
116
+ usernameStyle: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
116
117
  containerToNextStyle: PropTypes.Requireable<PropTypes.InferProps<{
117
- left: PropTypes.Requireable<number | boolean | object>;
118
- right: PropTypes.Requireable<number | boolean | object>;
118
+ left: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
119
+ right: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
119
120
  }>>;
120
121
  containerToPreviousStyle: PropTypes.Requireable<PropTypes.InferProps<{
121
- left: PropTypes.Requireable<number | boolean | object>;
122
- right: PropTypes.Requireable<number | boolean | object>;
122
+ left: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
123
+ right: PropTypes.Requireable<NonNullable<number | boolean | object | null | undefined>>;
123
124
  }>>;
124
125
  };
125
126
  onPress: () => void;
@@ -134,15 +135,15 @@ export default class Bubble<TMessage extends IMessage = IMessage> extends React.
134
135
  } | {
135
136
  borderTopRightRadius: number;
136
137
  })[] | 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;
138
+ renderQuickReplies(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
139
+ renderMessageText(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
140
+ renderMessageImage(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
141
+ renderMessageVideo(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
142
+ renderMessageAudio(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
143
+ renderTicks(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
144
+ renderTime(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
145
+ renderUsername(): string | number | boolean | Iterable<React.ReactNode> | React.JSX.Element | null | undefined;
145
146
  renderCustomView(): React.ReactNode;
146
- renderBubbleContent(): JSX.Element;
147
- render(): JSX.Element;
147
+ renderBubbleContent(): React.JSX.Element;
148
+ render(): React.JSX.Element;
148
149
  }