@kesha-antonov/react-native-chat 4.2.0 → 4.4.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 (318) hide show
  1. package/README.md +253 -47
  2. package/lib/Actions.d.ts +5 -5
  3. package/lib/Actions.d.ts.map +1 -1
  4. package/lib/Actions.js +28 -39
  5. package/lib/Actions.js.map +1 -1
  6. package/lib/Avatar.d.ts.map +1 -1
  7. package/lib/Avatar.js +34 -32
  8. package/lib/Avatar.js.map +1 -1
  9. package/lib/Bubble/index.d.ts.map +1 -1
  10. package/lib/Bubble/index.js +98 -28
  11. package/lib/Bubble/index.js.map +1 -1
  12. package/lib/Bubble/styles.d.ts +28 -11
  13. package/lib/Bubble/styles.d.ts.map +1 -1
  14. package/lib/Bubble/styles.js +108 -80
  15. package/lib/Bubble/styles.js.map +1 -1
  16. package/lib/Bubble/types.d.ts +12 -7
  17. package/lib/Bubble/types.d.ts.map +1 -1
  18. package/lib/Chat/ChatKeyboardAvoidingView.d.ts +8 -3
  19. package/lib/Chat/ChatKeyboardAvoidingView.d.ts.map +1 -1
  20. package/lib/Chat/ChatKeyboardAvoidingView.js +3 -5
  21. package/lib/Chat/ChatKeyboardAvoidingView.js.map +1 -1
  22. package/lib/Chat/index.d.ts +1 -0
  23. package/lib/Chat/index.d.ts.map +1 -1
  24. package/lib/Chat/index.js +94 -28
  25. package/lib/Chat/index.js.map +1 -1
  26. package/lib/Chat/types.d.ts +66 -24
  27. package/lib/Chat/types.d.ts.map +1 -1
  28. package/lib/ChatAvatar.d.ts.map +1 -1
  29. package/lib/ChatAvatar.js +11 -17
  30. package/lib/ChatAvatar.js.map +1 -1
  31. package/lib/ChatContext.d.ts +31 -1
  32. package/lib/ChatContext.d.ts.map +1 -1
  33. package/lib/ChatContext.js +4 -0
  34. package/lib/ChatContext.js.map +1 -1
  35. package/lib/Color.d.ts.map +1 -1
  36. package/lib/Color.js +6 -2
  37. package/lib/Color.js.map +1 -1
  38. package/lib/Composer.d.ts +14 -1
  39. package/lib/Composer.d.ts.map +1 -1
  40. package/lib/Composer.js +68 -50
  41. package/lib/Composer.js.map +1 -1
  42. package/lib/Constant.d.ts +1 -0
  43. package/lib/Constant.d.ts.map +1 -1
  44. package/lib/Constant.js +1 -0
  45. package/lib/Constant.js.map +1 -1
  46. package/lib/Day/index.d.ts.map +1 -1
  47. package/lib/Day/index.js +7 -3
  48. package/lib/Day/index.js.map +1 -1
  49. package/lib/Day/styles.d.ts +6 -7
  50. package/lib/Day/styles.d.ts.map +1 -1
  51. package/lib/Day/styles.js +11 -13
  52. package/lib/Day/styles.js.map +1 -1
  53. package/lib/Icons.d.ts +24 -0
  54. package/lib/Icons.d.ts.map +1 -0
  55. package/lib/Icons.js +2 -0
  56. package/lib/Icons.js.map +1 -0
  57. package/lib/InputToolbar.d.ts +18 -5
  58. package/lib/InputToolbar.d.ts.map +1 -1
  59. package/lib/InputToolbar.js +246 -19
  60. package/lib/InputToolbar.js.map +1 -1
  61. package/lib/LoadEarlierMessages.d.ts.map +1 -1
  62. package/lib/LoadEarlierMessages.js +12 -7
  63. package/lib/LoadEarlierMessages.js.map +1 -1
  64. package/lib/Message/index.d.ts.map +1 -1
  65. package/lib/Message/index.js +21 -12
  66. package/lib/Message/index.js.map +1 -1
  67. package/lib/Message/styles.js +2 -2
  68. package/lib/Message/styles.js.map +1 -1
  69. package/lib/MessageAudio.d.ts +2 -1
  70. package/lib/MessageAudio.d.ts.map +1 -1
  71. package/lib/MessageAudio.js +121 -19
  72. package/lib/MessageAudio.js.map +1 -1
  73. package/lib/MessageLocation.d.ts +9 -0
  74. package/lib/MessageLocation.d.ts.map +1 -0
  75. package/lib/MessageLocation.js +85 -0
  76. package/lib/MessageLocation.js.map +1 -0
  77. package/lib/MessageText.d.ts +12 -1
  78. package/lib/MessageText.d.ts.map +1 -1
  79. package/lib/MessageText.js +38 -11
  80. package/lib/MessageText.js.map +1 -1
  81. package/lib/MessageVideo.d.ts +2 -1
  82. package/lib/MessageVideo.d.ts.map +1 -1
  83. package/lib/MessageVideo.js +156 -18
  84. package/lib/MessageVideo.js.map +1 -1
  85. package/lib/MessagesContainer/components/Item/index.d.ts +2 -1
  86. package/lib/MessagesContainer/components/Item/index.d.ts.map +1 -1
  87. package/lib/MessagesContainer/components/Item/index.js +23 -1
  88. package/lib/MessagesContainer/components/Item/index.js.map +1 -1
  89. package/lib/MessagesContainer/index.d.ts.map +1 -1
  90. package/lib/MessagesContainer/index.js +24 -11
  91. package/lib/MessagesContainer/index.js.map +1 -1
  92. package/lib/MessagesContainer/styles.d.ts +23 -3
  93. package/lib/MessagesContainer/styles.d.ts.map +1 -1
  94. package/lib/MessagesContainer/styles.js +25 -5
  95. package/lib/MessagesContainer/styles.js.map +1 -1
  96. package/lib/Models.d.ts +72 -0
  97. package/lib/Models.d.ts.map +1 -1
  98. package/lib/QuickReplies.d.ts +1 -1
  99. package/lib/QuickReplies.d.ts.map +1 -1
  100. package/lib/QuickReplies.js +13 -7
  101. package/lib/QuickReplies.js.map +1 -1
  102. package/lib/Reactions/MessageReactions.d.ts.map +1 -1
  103. package/lib/Reactions/MessageReactions.js +11 -10
  104. package/lib/Reactions/MessageReactions.js.map +1 -1
  105. package/lib/Reactions/ReactionPicker.d.ts.map +1 -1
  106. package/lib/Reactions/ReactionPicker.js +5 -3
  107. package/lib/Reactions/ReactionPicker.js.map +1 -1
  108. package/lib/Send.d.ts +2 -2
  109. package/lib/Send.d.ts.map +1 -1
  110. package/lib/Send.js +37 -37
  111. package/lib/Send.js.map +1 -1
  112. package/lib/SystemMessage.d.ts.map +1 -1
  113. package/lib/SystemMessage.js +8 -5
  114. package/lib/SystemMessage.js.map +1 -1
  115. package/lib/Theme.d.ts +159 -0
  116. package/lib/Theme.d.ts.map +1 -0
  117. package/lib/Theme.js +147 -0
  118. package/lib/Theme.js.map +1 -0
  119. package/lib/Time.d.ts.map +1 -1
  120. package/lib/Time.js +7 -5
  121. package/lib/Time.js.map +1 -1
  122. package/lib/TypingIndicator/index.d.ts.map +1 -1
  123. package/lib/TypingIndicator/index.js +4 -1
  124. package/lib/TypingIndicator/index.js.map +1 -1
  125. package/lib/TypingIndicator/styles.d.ts +2 -2
  126. package/lib/TypingIndicator/styles.d.ts.map +1 -1
  127. package/lib/TypingIndicator/styles.js +4 -5
  128. package/lib/TypingIndicator/styles.js.map +1 -1
  129. package/lib/components/AttachmentSheet.d.ts +28 -0
  130. package/lib/components/AttachmentSheet.d.ts.map +1 -0
  131. package/lib/components/AttachmentSheet.js +177 -0
  132. package/lib/components/AttachmentSheet.js.map +1 -0
  133. package/lib/components/BasicMarkdown.d.ts +12 -0
  134. package/lib/components/BasicMarkdown.d.ts.map +1 -0
  135. package/lib/components/BasicMarkdown.js +220 -0
  136. package/lib/components/BasicMarkdown.js.map +1 -0
  137. package/lib/components/ContextMenu.d.ts +25 -0
  138. package/lib/components/ContextMenu.d.ts.map +1 -0
  139. package/lib/components/ContextMenu.js +122 -0
  140. package/lib/components/ContextMenu.js.map +1 -0
  141. package/lib/components/Icon.d.ts +17 -0
  142. package/lib/components/Icon.d.ts.map +1 -0
  143. package/lib/components/Icon.js +19 -0
  144. package/lib/components/Icon.js.map +1 -0
  145. package/lib/components/LucideIcon.d.ts +10 -0
  146. package/lib/components/LucideIcon.d.ts.map +1 -0
  147. package/lib/components/LucideIcon.js +118 -0
  148. package/lib/components/LucideIcon.js.map +1 -0
  149. package/lib/components/MarkdownMessageText.d.ts +19 -0
  150. package/lib/components/MarkdownMessageText.d.ts.map +1 -0
  151. package/lib/components/MarkdownMessageText.js +35 -0
  152. package/lib/components/MarkdownMessageText.js.map +1 -0
  153. package/lib/components/MediaCard.d.ts +19 -0
  154. package/lib/components/MediaCard.d.ts.map +1 -0
  155. package/lib/components/MediaCard.js +102 -0
  156. package/lib/components/MediaCard.js.map +1 -0
  157. package/lib/components/MediaControls.d.ts +41 -0
  158. package/lib/components/MediaControls.d.ts.map +1 -0
  159. package/lib/components/MediaControls.js +524 -0
  160. package/lib/components/MediaControls.js.map +1 -0
  161. package/lib/components/MessageReply.d.ts.map +1 -1
  162. package/lib/components/MessageReply.js +11 -9
  163. package/lib/components/MessageReply.js.map +1 -1
  164. package/lib/components/ReplyPreview.d.ts +3 -1
  165. package/lib/components/ReplyPreview.d.ts.map +1 -1
  166. package/lib/components/ReplyPreview.js +37 -36
  167. package/lib/components/ReplyPreview.js.map +1 -1
  168. package/lib/components/SendIcon.d.ts +13 -0
  169. package/lib/components/SendIcon.d.ts.map +1 -0
  170. package/lib/components/SendIcon.js +37 -0
  171. package/lib/components/SendIcon.js.map +1 -0
  172. package/lib/components/Ticks.d.ts +25 -0
  173. package/lib/components/Ticks.d.ts.map +1 -0
  174. package/lib/components/Ticks.js +102 -0
  175. package/lib/components/Ticks.js.map +1 -0
  176. package/lib/components/VideoNoteOverlay.d.ts +25 -0
  177. package/lib/components/VideoNoteOverlay.d.ts.map +1 -0
  178. package/lib/components/VideoNoteOverlay.js +151 -0
  179. package/lib/components/VideoNoteOverlay.js.map +1 -0
  180. package/lib/components/VideoNoteRecorder.d.ts +19 -0
  181. package/lib/components/VideoNoteRecorder.d.ts.map +1 -0
  182. package/lib/components/VideoNoteRecorder.js +634 -0
  183. package/lib/components/VideoNoteRecorder.js.map +1 -0
  184. package/lib/components/VideoRecordButton.d.ts +29 -0
  185. package/lib/components/VideoRecordButton.d.ts.map +1 -0
  186. package/lib/components/VideoRecordButton.js +117 -0
  187. package/lib/components/VideoRecordButton.js.map +1 -0
  188. package/lib/components/VoiceMessageInput.d.ts +33 -0
  189. package/lib/components/VoiceMessageInput.d.ts.map +1 -0
  190. package/lib/components/VoiceMessageInput.js +403 -0
  191. package/lib/components/VoiceMessageInput.js.map +1 -0
  192. package/lib/components/WaveformPlayer.d.ts +19 -0
  193. package/lib/components/WaveformPlayer.d.ts.map +1 -0
  194. package/lib/components/WaveformPlayer.js +367 -0
  195. package/lib/components/WaveformPlayer.js.map +1 -0
  196. package/lib/components/mediaPalette.d.ts +23 -0
  197. package/lib/components/mediaPalette.d.ts.map +1 -0
  198. package/lib/components/mediaPalette.js +16 -0
  199. package/lib/components/mediaPalette.js.map +1 -0
  200. package/lib/components/mediaPlayback.d.ts +22 -0
  201. package/lib/components/mediaPlayback.d.ts.map +1 -0
  202. package/lib/components/mediaPlayback.js +34 -0
  203. package/lib/components/mediaPlayback.js.map +1 -0
  204. package/lib/dayjsLocales.d.ts +18 -0
  205. package/lib/dayjsLocales.d.ts.map +1 -0
  206. package/lib/dayjsLocales.js +36 -0
  207. package/lib/dayjsLocales.js.map +1 -0
  208. package/lib/hooks/useColorScheme.d.ts +9 -2
  209. package/lib/hooks/useColorScheme.d.ts.map +1 -1
  210. package/lib/hooks/useColorScheme.js +9 -3
  211. package/lib/hooks/useColorScheme.js.map +1 -1
  212. package/lib/hooks/useIcons.d.ts +4 -0
  213. package/lib/hooks/useIcons.d.ts.map +1 -0
  214. package/lib/hooks/useIcons.js +8 -0
  215. package/lib/hooks/useIcons.js.map +1 -0
  216. package/lib/hooks/useIsRTL.d.ts +3 -0
  217. package/lib/hooks/useIsRTL.d.ts.map +1 -0
  218. package/lib/hooks/useIsRTL.js +7 -0
  219. package/lib/hooks/useIsRTL.js.map +1 -0
  220. package/lib/hooks/useKeyboardVerticalOffset.d.ts +29 -8
  221. package/lib/hooks/useKeyboardVerticalOffset.d.ts.map +1 -1
  222. package/lib/hooks/useKeyboardVerticalOffset.js +41 -8
  223. package/lib/hooks/useKeyboardVerticalOffset.js.map +1 -1
  224. package/lib/hooks/useLabels.d.ts +4 -0
  225. package/lib/hooks/useLabels.d.ts.map +1 -0
  226. package/lib/hooks/useLabels.js +8 -0
  227. package/lib/hooks/useLabels.js.map +1 -0
  228. package/lib/hooks/useTheme.d.ts +21 -0
  229. package/lib/hooks/useTheme.d.ts.map +1 -0
  230. package/lib/hooks/useTheme.js +32 -0
  231. package/lib/hooks/useTheme.js.map +1 -0
  232. package/lib/i18n.d.ts +66 -0
  233. package/lib/i18n.d.ts.map +1 -0
  234. package/lib/i18n.js +53 -0
  235. package/lib/i18n.js.map +1 -0
  236. package/lib/index.d.ts +19 -0
  237. package/lib/index.d.ts.map +1 -1
  238. package/lib/index.js +19 -0
  239. package/lib/index.js.map +1 -1
  240. package/lib/locales/ar.d.ts +3 -0
  241. package/lib/locales/ar.d.ts.map +1 -0
  242. package/lib/locales/ar.js +22 -0
  243. package/lib/locales/ar.js.map +1 -0
  244. package/lib/locales/de.d.ts +3 -0
  245. package/lib/locales/de.d.ts.map +1 -0
  246. package/lib/locales/de.js +22 -0
  247. package/lib/locales/de.js.map +1 -0
  248. package/lib/locales/es.d.ts +3 -0
  249. package/lib/locales/es.d.ts.map +1 -0
  250. package/lib/locales/es.js +22 -0
  251. package/lib/locales/es.js.map +1 -0
  252. package/lib/locales/fr.d.ts +3 -0
  253. package/lib/locales/fr.d.ts.map +1 -0
  254. package/lib/locales/fr.js +22 -0
  255. package/lib/locales/fr.js.map +1 -0
  256. package/lib/locales/hi.d.ts +3 -0
  257. package/lib/locales/hi.d.ts.map +1 -0
  258. package/lib/locales/hi.js +22 -0
  259. package/lib/locales/hi.js.map +1 -0
  260. package/lib/locales/id.d.ts +3 -0
  261. package/lib/locales/id.d.ts.map +1 -0
  262. package/lib/locales/id.js +22 -0
  263. package/lib/locales/id.js.map +1 -0
  264. package/lib/locales/index.d.ts +19 -0
  265. package/lib/locales/index.d.ts.map +1 -0
  266. package/lib/locales/index.js +39 -0
  267. package/lib/locales/index.js.map +1 -0
  268. package/lib/locales/it.d.ts +3 -0
  269. package/lib/locales/it.d.ts.map +1 -0
  270. package/lib/locales/it.js +22 -0
  271. package/lib/locales/it.js.map +1 -0
  272. package/lib/locales/ja.d.ts +3 -0
  273. package/lib/locales/ja.d.ts.map +1 -0
  274. package/lib/locales/ja.js +22 -0
  275. package/lib/locales/ja.js.map +1 -0
  276. package/lib/locales/ko.d.ts +3 -0
  277. package/lib/locales/ko.d.ts.map +1 -0
  278. package/lib/locales/ko.js +22 -0
  279. package/lib/locales/ko.js.map +1 -0
  280. package/lib/locales/nl.d.ts +3 -0
  281. package/lib/locales/nl.d.ts.map +1 -0
  282. package/lib/locales/nl.js +22 -0
  283. package/lib/locales/nl.js.map +1 -0
  284. package/lib/locales/pl.d.ts +3 -0
  285. package/lib/locales/pl.d.ts.map +1 -0
  286. package/lib/locales/pl.js +22 -0
  287. package/lib/locales/pl.js.map +1 -0
  288. package/lib/locales/pt.d.ts +3 -0
  289. package/lib/locales/pt.d.ts.map +1 -0
  290. package/lib/locales/pt.js +22 -0
  291. package/lib/locales/pt.js.map +1 -0
  292. package/lib/locales/ru.d.ts +3 -0
  293. package/lib/locales/ru.d.ts.map +1 -0
  294. package/lib/locales/ru.js +22 -0
  295. package/lib/locales/ru.js.map +1 -0
  296. package/lib/locales/tr.d.ts +3 -0
  297. package/lib/locales/tr.d.ts.map +1 -0
  298. package/lib/locales/tr.js +22 -0
  299. package/lib/locales/tr.js.map +1 -0
  300. package/lib/locales/zh.d.ts +3 -0
  301. package/lib/locales/zh.d.ts.map +1 -0
  302. package/lib/locales/zh.js +22 -0
  303. package/lib/locales/zh.js.map +1 -0
  304. package/lib/rtl.d.ts +18 -0
  305. package/lib/rtl.d.ts.map +1 -0
  306. package/lib/rtl.js +31 -0
  307. package/lib/rtl.js.map +1 -0
  308. package/lib/types.d.ts +2 -1
  309. package/lib/types.d.ts.map +1 -1
  310. package/package.json +99 -44
  311. package/lib/MessageReply.d.ts +0 -15
  312. package/lib/MessageReply.d.ts.map +0 -1
  313. package/lib/MessageReply.js +0 -102
  314. package/lib/MessageReply.js.map +0 -1
  315. package/lib/ReplyPreview.d.ts +0 -14
  316. package/lib/ReplyPreview.d.ts.map +0 -1
  317. package/lib/ReplyPreview.js +0 -94
  318. package/lib/ReplyPreview.js.map +0 -1
@@ -1,82 +1,110 @@
1
1
  import { StyleSheet } from 'react-native';
2
- import { Color } from '../Color';
3
- const styles = StyleSheet.create({
4
- // Fills the message row so the pressable surface reaches the far edge, with
5
- // the bubble itself pinned to the sender's side.
6
- container: {
7
- flex: 1,
8
- },
9
- container_left: {
10
- alignItems: 'flex-start',
11
- },
12
- container_right: {
13
- alignItems: 'flex-end',
14
- },
15
- // Full-width band holding the bubble - this is what the reactions gesture is
16
- // attached to, so the whole row responds and not just the bubble.
17
- rowSurface: {
18
- alignSelf: 'stretch',
19
- },
20
- rowSurface_left: {
21
- alignItems: 'flex-start',
22
- },
23
- rowSurface_right: {
24
- alignItems: 'flex-end',
25
- },
26
- wrapper: {
27
- borderRadius: 15,
28
- minHeight: 20,
29
- maxWidth: '70%',
30
- },
31
- wrapper_left: {
32
- backgroundColor: Color.leftBubbleBackground,
33
- justifyContent: 'flex-end',
34
- },
35
- wrapper_right: {
36
- backgroundColor: Color.defaultBlue,
37
- justifyContent: 'flex-end',
38
- },
39
- bottom: {
40
- flexDirection: 'row',
41
- justifyContent: 'space-between',
42
- alignItems: 'flex-end',
43
- paddingHorizontal: 10,
44
- paddingBottom: 5,
45
- },
46
- containerToNext_left: {
47
- borderBottomLeftRadius: 3,
48
- },
49
- containerToNext_right: {
50
- borderBottomRightRadius: 3,
51
- },
52
- containerToPrevious_left: {
53
- borderTopLeftRadius: 3,
54
- },
55
- containerToPrevious_right: {
56
- borderTopRightRadius: 3,
57
- },
58
- messageTimeAndStatusContainer: {
59
- flexGrow: 1,
60
- flexDirection: 'row',
61
- alignItems: 'center',
62
- justifyContent: 'flex-end',
63
- },
64
- messageStatusContainer: {
65
- flexDirection: 'row',
66
- marginLeft: 5,
67
- },
68
- messageStatus: {
69
- fontSize: 10,
70
- color: Color.white,
71
- },
72
- usernameContainer: {
73
- flexDirection: 'row',
74
- marginRight: 5,
75
- },
76
- username: {
77
- fontSize: 12,
78
- color: '#aaa',
79
- },
80
- });
81
- export default styles;
2
+ export const createBubbleStyles = (theme) => {
3
+ const { colors, radii, spacing, typography } = theme;
4
+ return StyleSheet.create({
5
+ // Fills the message row so the pressable surface reaches the far edge, with
6
+ // the bubble itself pinned to the sender's side.
7
+ container: {
8
+ flex: 1,
9
+ },
10
+ container_left: {
11
+ alignItems: 'flex-start',
12
+ },
13
+ container_right: {
14
+ alignItems: 'flex-end',
15
+ },
16
+ // Full-width band holding the bubble - this is what the reactions gesture is
17
+ // attached to, so the whole row responds and not just the bubble.
18
+ rowSurface: {
19
+ alignSelf: 'stretch',
20
+ },
21
+ rowSurface_left: {
22
+ alignItems: 'flex-start',
23
+ },
24
+ rowSurface_right: {
25
+ alignItems: 'flex-end',
26
+ },
27
+ wrapper: {
28
+ borderRadius: radii.bubble,
29
+ minHeight: 20,
30
+ maxWidth: '70%',
31
+ },
32
+ wrapper_left: {
33
+ backgroundColor: colors.incomingBubble,
34
+ justifyContent: 'flex-end',
35
+ },
36
+ wrapper_right: {
37
+ backgroundColor: colors.outgoingBubble,
38
+ justifyContent: 'flex-end',
39
+ },
40
+ // A round video note floats with no bubble background/chrome (Telegram-style).
41
+ noteWrapper: {
42
+ backgroundColor: 'transparent',
43
+ },
44
+ // With the bubble background gone, the meta row would render white-on-light.
45
+ // Telegram floats it in a translucent dark pill over the circle's lower edge.
46
+ // Positioning shell only. Anchored to the note's bounding-box corner, which
47
+ // on a circle sits just outside the shape - where Telegram puts the
48
+ // timestamp, clear of the duration pill centred on the circle itself.
49
+ noteMetaPill: {
50
+ position: 'absolute',
51
+ bottom: 2,
52
+ right: 0,
53
+ justifyContent: 'flex-end',
54
+ // Overrides `bottom`'s padding, which would otherwise offset the pill.
55
+ paddingHorizontal: 0,
56
+ paddingTop: 0,
57
+ paddingBottom: 0,
58
+ },
59
+ // The meta row grows to fill a bubble; on a note it just hugs. It sits on
60
+ // the chat background beside the duration now, not over the video, so it
61
+ // needs no pill behind it.
62
+ noteMetaInner: {
63
+ flexGrow: 0,
64
+ },
65
+ noteMetaText: {
66
+ color: colors.incomingMeta,
67
+ },
68
+ bottom: {
69
+ flexDirection: 'row',
70
+ alignItems: 'center',
71
+ justifyContent: 'flex-end',
72
+ paddingHorizontal: spacing.bubblePaddingH,
73
+ paddingBottom: spacing.bubblePaddingV,
74
+ },
75
+ // Soften the inner corners of grouped messages instead of squaring them off.
76
+ containerToNext_left: {
77
+ borderBottomLeftRadius: radii.bubbleGrouped,
78
+ },
79
+ containerToNext_right: {
80
+ borderBottomRightRadius: radii.bubbleGrouped,
81
+ },
82
+ containerToPrevious_left: {
83
+ borderTopLeftRadius: radii.bubbleGrouped,
84
+ },
85
+ containerToPrevious_right: {
86
+ borderTopRightRadius: radii.bubbleGrouped,
87
+ },
88
+ messageTimeAndStatusContainer: {
89
+ flexGrow: 1,
90
+ flexDirection: 'row',
91
+ alignItems: 'center',
92
+ justifyContent: 'flex-end',
93
+ gap: 3,
94
+ },
95
+ messageStatusContainer: {
96
+ flexDirection: 'row',
97
+ alignItems: 'center',
98
+ },
99
+ usernameContainer: {
100
+ paddingHorizontal: spacing.bubblePaddingH,
101
+ paddingTop: spacing.bubblePaddingV,
102
+ },
103
+ username: {
104
+ fontSize: typography.senderName.fontSize,
105
+ fontWeight: typography.senderName.fontWeight,
106
+ color: colors.senderName,
107
+ },
108
+ });
109
+ };
82
110
  //# sourceMappingURL=styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/Bubble/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,4EAA4E;IAC5E,iDAAiD;IACjD,SAAS,EAAE;QACT,IAAI,EAAE,CAAC;KACR;IACD,cAAc,EAAE;QACd,UAAU,EAAE,YAAY;KACzB;IACD,eAAe,EAAE;QACf,UAAU,EAAE,UAAU;KACvB;IAED,6EAA6E;IAC7E,kEAAkE;IAClE,UAAU,EAAE;QACV,SAAS,EAAE,SAAS;KACrB;IACD,eAAe,EAAE;QACf,UAAU,EAAE,YAAY;KACzB;IACD,gBAAgB,EAAE;QAChB,UAAU,EAAE,UAAU;KACvB;IAED,OAAO,EAAE;QACP,YAAY,EAAE,EAAE;QAChB,SAAS,EAAE,EAAE;QACb,QAAQ,EAAE,KAAK;KAChB;IACD,YAAY,EAAE;QACZ,eAAe,EAAE,KAAK,CAAC,oBAAoB;QAC3C,cAAc,EAAE,UAAU;KAC3B;IACD,aAAa,EAAE;QACb,eAAe,EAAE,KAAK,CAAC,WAAW;QAClC,cAAc,EAAE,UAAU;KAC3B;IAED,MAAM,EAAE;QACN,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,eAAe;QAC/B,UAAU,EAAE,UAAU;QACtB,iBAAiB,EAAE,EAAE;QACrB,aAAa,EAAE,CAAC;KACjB;IAED,oBAAoB,EAAE;QACpB,sBAAsB,EAAE,CAAC;KAC1B;IACD,qBAAqB,EAAE;QACrB,uBAAuB,EAAE,CAAC;KAC3B;IAED,wBAAwB,EAAE;QACxB,mBAAmB,EAAE,CAAC;KACvB;IACD,yBAAyB,EAAE;QACzB,oBAAoB,EAAE,CAAC;KACxB;IAED,6BAA6B,EAAE;QAC7B,QAAQ,EAAE,CAAC;QACX,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,UAAU;KAC3B;IAED,sBAAsB,EAAE;QACtB,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,CAAC;KACd;IACD,aAAa,EAAE;QACb,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB;IAED,iBAAiB,EAAE;QACjB,aAAa,EAAE,KAAK;QACpB,WAAW,EAAE,CAAC;KACf;IACD,QAAQ,EAAE;QACR,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,MAAM;KACd;CACF,CAAC,CAAA;AAEF,eAAe,MAAM,CAAA"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/Bubble/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAgB,EAAE,EAAE;IACrD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAEpD,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,4EAA4E;QAC5E,iDAAiD;QACjD,SAAS,EAAE;YACT,IAAI,EAAE,CAAC;SACR;QACD,cAAc,EAAE;YACd,UAAU,EAAE,YAAY;SACzB;QACD,eAAe,EAAE;YACf,UAAU,EAAE,UAAU;SACvB;QAED,6EAA6E;QAC7E,kEAAkE;QAClE,UAAU,EAAE;YACV,SAAS,EAAE,SAAS;SACrB;QACD,eAAe,EAAE;YACf,UAAU,EAAE,YAAY;SACzB;QACD,gBAAgB,EAAE;YAChB,UAAU,EAAE,UAAU;SACvB;QAED,OAAO,EAAE;YACP,YAAY,EAAE,KAAK,CAAC,MAAM;YAC1B,SAAS,EAAE,EAAE;YACb,QAAQ,EAAE,KAAK;SAChB;QACD,YAAY,EAAE;YACZ,eAAe,EAAE,MAAM,CAAC,cAAc;YACtC,cAAc,EAAE,UAAU;SAC3B;QACD,aAAa,EAAE;YACb,eAAe,EAAE,MAAM,CAAC,cAAc;YACtC,cAAc,EAAE,UAAU;SAC3B;QACD,+EAA+E;QAC/E,WAAW,EAAE;YACX,eAAe,EAAE,aAAa;SAC/B;QAED,6EAA6E;QAC7E,8EAA8E;QAC9E,4EAA4E;QAC5E,oEAAoE;QACpE,sEAAsE;QACtE,YAAY,EAAE;YACZ,QAAQ,EAAE,UAAU;YACpB,MAAM,EAAE,CAAC;YACT,KAAK,EAAE,CAAC;YACR,cAAc,EAAE,UAAU;YAC1B,uEAAuE;YACvE,iBAAiB,EAAE,CAAC;YACpB,UAAU,EAAE,CAAC;YACb,aAAa,EAAE,CAAC;SACjB;QACD,0EAA0E;QAC1E,yEAAyE;QACzE,2BAA2B;QAC3B,aAAa,EAAE;YACb,QAAQ,EAAE,CAAC;SACZ;QACD,YAAY,EAAE;YACZ,KAAK,EAAE,MAAM,CAAC,YAAY;SAC3B;QAED,MAAM,EAAE;YACN,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,UAAU;YAC1B,iBAAiB,EAAE,OAAO,CAAC,cAAc;YACzC,aAAa,EAAE,OAAO,CAAC,cAAc;SACtC;QAED,6EAA6E;QAC7E,oBAAoB,EAAE;YACpB,sBAAsB,EAAE,KAAK,CAAC,aAAa;SAC5C;QACD,qBAAqB,EAAE;YACrB,uBAAuB,EAAE,KAAK,CAAC,aAAa;SAC7C;QAED,wBAAwB,EAAE;YACxB,mBAAmB,EAAE,KAAK,CAAC,aAAa;SACzC;QACD,yBAAyB,EAAE;YACzB,oBAAoB,EAAE,KAAK,CAAC,aAAa;SAC1C;QAED,6BAA6B,EAAE;YAC7B,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,UAAU;YAC1B,GAAG,EAAE,CAAC;SACP;QAED,sBAAsB,EAAE;YACtB,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,QAAQ;SACrB;QAED,iBAAiB,EAAE;YACjB,iBAAiB,EAAE,OAAO,CAAC,cAAc;YACzC,UAAU,EAAE,OAAO,CAAC,cAAc;SACnC;QACD,QAAQ,EAAE;YACR,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,QAAQ;YACxC,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,UAAU;YAC5C,KAAK,EAAE,MAAM,CAAC,UAAU;SACzB;KACF,CAAC,CAAA;AACJ,CAAC,CAAA"}
@@ -3,7 +3,7 @@ import { StyleProp, ViewStyle, TextStyle, Pressable } from 'react-native';
3
3
  import { MessageReplyProps } from '../components/MessageReply';
4
4
  import { MessageImageProps } from '../MessageImage';
5
5
  import { MessageTextProps } from '../MessageText';
6
- import { User, IMessage, LeftRightStyle, Reply, ReplyMessage, Omit, MessageVideoProps, MessageAudioProps } from '../Models';
6
+ import { User, IMessage, LeftRightStyle, Reply, ReplyMessage, Omit, MessageVideoProps, MessageAudioProps, MessageLocationProps, MessageMenuItem } from '../Models';
7
7
  import { QuickRepliesProps } from '../QuickReplies';
8
8
  import { ReactionsProps } from '../Reactions';
9
9
  import { MessageReplyStyleProps } from '../Reply';
@@ -11,6 +11,7 @@ import { TimeProps } from '../Time';
11
11
  export type RenderMessageImageProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageImageProps<TMessage>;
12
12
  export type RenderMessageVideoProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageVideoProps<TMessage>;
13
13
  export type RenderMessageAudioProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageAudioProps<TMessage>;
14
+ export type RenderMessageLocationProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageLocationProps<TMessage>;
14
15
  export type RenderMessageTextProps<TMessage extends IMessage> = Omit<BubbleProps<TMessage>, 'containerStyle' | 'wrapperStyle'> & MessageTextProps<TMessage>;
15
16
  /** Props for message reply functionality in bubble */
16
17
  export interface BubbleReplyProps<TMessage extends IMessage> extends MessageReplyStyleProps {
@@ -47,6 +48,7 @@ export interface BubbleProps<TMessage extends IMessage> {
47
48
  renderMessageImage?: (props: RenderMessageImageProps<TMessage>) => React.ReactNode;
48
49
  renderMessageVideo?: (props: RenderMessageVideoProps<TMessage>) => React.ReactNode;
49
50
  renderMessageAudio?: (props: RenderMessageAudioProps<TMessage>) => React.ReactNode;
51
+ renderMessageLocation?: (props: RenderMessageLocationProps<TMessage>) => React.ReactNode;
50
52
  renderMessageText?: (props: RenderMessageTextProps<TMessage>) => React.ReactNode;
51
53
  renderCustomView?: (bubbleProps: BubbleProps<TMessage>) => React.ReactNode;
52
54
  renderTime?: (timeProps: TimeProps<TMessage>) => React.ReactNode;
@@ -58,13 +60,16 @@ export interface BubbleProps<TMessage extends IMessage> {
58
60
  messageReply?: BubbleReplyProps<TMessage>;
59
61
  /** Emoji reactions configuration */
60
62
  reactions?: ReactionsProps<TMessage>;
63
+ /** Telegram-style long-press context menu actions (array or per-message function) */
64
+ messageActions?: MessageMenuItem[] | ((message: TMessage) => MessageMenuItem[]);
61
65
  /**
62
- * Controls whether the bubble itself is part of the row's tap / long-press
63
- * surface that `reactions` relies on. Pass `false` (or a predicate returning
64
- * `false`) for messages that render natively interactive content - a video
65
- * player with its own controls, a map, a WebView - whose touches must not
66
- * compete with the bubble. The surface beside the bubble stays pressable
67
- * either way, so reactions are never lost for that message.
66
+ * Controls whether the bubble attaches its tap / long-press gestures, which
67
+ * `reactions` and `messageActions` rely on. Pass `false` (or a predicate
68
+ * returning `false`) for messages that render natively interactive content -
69
+ * a video player with its own controls, a map, a WebView - whose touches
70
+ * must not compete with the bubble.
71
+ * Note: with gestures off, that message can no longer open the reaction
72
+ * picker or the context menu.
68
73
  * @default true
69
74
  */
70
75
  isMessageGestureEnabled?: boolean | ((message: TMessage) => boolean);
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Bubble/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/Bubble/types.ts"],"names":[],"mappings":"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"}
@@ -2,15 +2,20 @@ import React from 'react';
2
2
  import { KeyboardAvoidingViewProps } from 'react-native-keyboard-controller';
3
3
  interface ChatKeyboardAvoidingViewProps {
4
4
  children: React.ReactNode;
5
+ /**
6
+ * How far down the window the chat starts, measured by the container above us
7
+ * (see `useKeyboardVerticalOffset`).
8
+ */
9
+ keyboardVerticalOffset: number;
5
10
  /** Consumer overrides, applied last so `keyboardVerticalOffset` can be replaced. */
6
11
  keyboardAvoidingViewProps?: KeyboardAvoidingViewProps;
7
12
  }
8
13
  /**
9
14
  * Keeps the input toolbar above the keyboard.
10
15
  *
11
- * Split out of `Chat` so the frame subscription behind `keyboardVerticalOffset` lives
12
- * in a leaf: only this wrapper re-renders when the chat is re-measured.
16
+ * Split out of `Chat` so the offset can be measured on the container and handed
17
+ * down, keeping the subscription out of the chat's own render path.
13
18
  */
14
- export declare function ChatKeyboardAvoidingView({ children, keyboardAvoidingViewProps, }: ChatKeyboardAvoidingViewProps): React.JSX.Element;
19
+ export declare function ChatKeyboardAvoidingView({ children, keyboardVerticalOffset, keyboardAvoidingViewProps, }: ChatKeyboardAvoidingViewProps): React.JSX.Element;
15
20
  export {};
16
21
  //# sourceMappingURL=ChatKeyboardAvoidingView.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatKeyboardAvoidingView.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatKeyboardAvoidingView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAwB,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAIlG,UAAU,6BAA6B;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,oFAAoF;IACpF,yBAAyB,CAAC,EAAE,yBAAyB,CAAA;CACtD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAE,EACxC,QAAQ,EACR,yBAAyB,GAC1B,EAAE,6BAA6B,qBAa/B"}
1
+ {"version":3,"file":"ChatKeyboardAvoidingView.d.ts","sourceRoot":"","sources":["../../src/Chat/ChatKeyboardAvoidingView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAwB,yBAAyB,EAAE,MAAM,kCAAkC,CAAA;AAGlG,UAAU,6BAA6B;IACrC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB;;;OAGG;IACH,sBAAsB,EAAE,MAAM,CAAA;IAC9B,oFAAoF;IACpF,yBAAyB,CAAC,EAAE,yBAAyB,CAAA;CACtD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAE,EACxC,QAAQ,EACR,sBAAsB,EACtB,yBAAyB,GAC1B,EAAE,6BAA6B,qBAW/B"}
@@ -1,15 +1,13 @@
1
1
  import React from 'react';
2
2
  import { KeyboardAvoidingView } from 'react-native-keyboard-controller';
3
- import { useKeyboardVerticalOffset } from '../hooks/useKeyboardVerticalOffset';
4
3
  import stylesCommon from '../styles';
5
4
  /**
6
5
  * Keeps the input toolbar above the keyboard.
7
6
  *
8
- * Split out of `Chat` so the frame subscription behind `keyboardVerticalOffset` lives
9
- * in a leaf: only this wrapper re-renders when the chat is re-measured.
7
+ * Split out of `Chat` so the offset can be measured on the container and handed
8
+ * down, keeping the subscription out of the chat's own render path.
10
9
  */
11
- export function ChatKeyboardAvoidingView({ children, keyboardAvoidingViewProps, }) {
12
- const keyboardVerticalOffset = useKeyboardVerticalOffset();
10
+ export function ChatKeyboardAvoidingView({ children, keyboardVerticalOffset, keyboardAvoidingViewProps, }) {
13
11
  return (<KeyboardAvoidingView behavior='translate-with-padding' keyboardVerticalOffset={keyboardVerticalOffset} style={stylesCommon.fill} {...keyboardAvoidingViewProps}>
14
12
  {children}
15
13
  </KeyboardAvoidingView>);
@@ -1 +1 @@
1
- {"version":3,"file":"ChatKeyboardAvoidingView.js","sourceRoot":"","sources":["../../src/Chat/ChatKeyboardAvoidingView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,oBAAoB,EAA6B,MAAM,kCAAkC,CAAA;AAClG,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAA;AAC9E,OAAO,YAAY,MAAM,WAAW,CAAA;AAQpC;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAE,EACxC,QAAQ,EACR,yBAAyB,GACK;IAC9B,MAAM,sBAAsB,GAAG,yBAAyB,EAAE,CAAA;IAE1D,OAAO,CACL,CAAC,oBAAoB,CACnB,QAAQ,CAAC,wBAAwB,CACjC,sBAAsB,CAAC,CAAC,sBAAsB,CAAC,CAC/C,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CACzB,IAAI,yBAAyB,CAAC,CAE9B;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,oBAAoB,CAAC,CACxB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"ChatKeyboardAvoidingView.js","sourceRoot":"","sources":["../../src/Chat/ChatKeyboardAvoidingView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,oBAAoB,EAA6B,MAAM,kCAAkC,CAAA;AAClG,OAAO,YAAY,MAAM,WAAW,CAAA;AAapC;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAE,EACxC,QAAQ,EACR,sBAAsB,EACtB,yBAAyB,GACK;IAC9B,OAAO,CACL,CAAC,oBAAoB,CACnB,QAAQ,CAAC,wBAAwB,CACjC,sBAAsB,CAAC,CAAC,sBAAsB,CAAC,CAC/C,KAAK,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CACzB,IAAI,yBAAyB,CAAC,CAE9B;MAAA,CAAC,QAAQ,CACX;IAAA,EAAE,oBAAoB,CAAC,CACxB,CAAA;AACH,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import '../dayjsLocales';
2
3
  import { IMessage } from '../Models';
3
4
  import { ChatProps } from './types';
4
5
  declare function ChatWrapper<TMessage extends IMessage = IMessage>(props: ChatProps<TMessage>): React.JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Chat/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAQN,MAAM,OAAO,CAAA;AAoBd,OAAO,EAAE,QAAQ,EAAgB,MAAM,WAAW,CAAA;AAKlD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAsTnC,iBAAS,WAAW,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAAG,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,qBAkCrF;kBAlCQ,WAAW;iBAoCE,QAAQ,SAAS,QAAQ,mBAC5B,QAAQ,EAAE,wBACjB,QAAQ,EAAE;kBAWC,QAAQ,SAAS,QAAQ,mBAC7B,QAAQ,EAAE,wBACjB,QAAQ,EAAE;;AAWtB,OAAO,EACL,WAAW,IAAI,IAAI,EACpB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Chat/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAA;AAQd,OAAO,iBAAiB,CAAA;AAYxB,OAAO,EAAE,QAAQ,EAAgB,MAAM,WAAW,CAAA;AAOlD,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAyWnC,iBAAS,WAAW,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAAG,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,qBAyErF;kBAzEQ,WAAW;iBA2EE,QAAQ,SAAS,QAAQ,mBAC5B,QAAQ,EAAE,wBACjB,QAAQ,EAAE;kBAWC,QAAQ,SAAS,QAAQ,mBAC7B,QAAQ,EAAE,wBACjB,QAAQ,EAAE;;AAWtB,OAAO,EACL,WAAW,IAAI,IAAI,EACpB,CAAA"}
package/lib/Chat/index.js CHANGED
@@ -1,27 +1,37 @@
1
- import React, { createRef, useEffect, useMemo, useRef, useState, useCallback, } from 'react';
1
+ import React, { createRef, useEffect, useMemo, useState, useCallback, } from 'react';
2
2
  import { View, useColorScheme, } from 'react-native';
3
- import { ActionSheetProvider, } from '@expo/react-native-action-sheet';
4
3
  import dayjs from 'dayjs';
5
4
  import localizedFormat from 'dayjs/plugin/localizedFormat';
5
+ import '../dayjsLocales';
6
6
  import { GestureHandlerRootView } from 'react-native-gesture-handler';
7
7
  import { KeyboardProvider } from 'react-native-keyboard-controller';
8
- import { SafeAreaProvider } from 'react-native-safe-area-context';
8
+ import { SafeAreaProvider, initialWindowMetrics } from 'react-native-safe-area-context';
9
9
  import { ChatContext } from '../ChatContext';
10
10
  import { TEST_ID } from '../Constant';
11
+ import { normalizeColorScheme } from '../hooks/useColorScheme';
11
12
  import { useHasKeyboardProvider } from '../hooks/useHasKeyboardProvider';
13
+ import { useKeyboardVerticalOffset } from '../hooks/useKeyboardVerticalOffset';
14
+ import { resolveLabels } from '../i18n';
12
15
  import { InputToolbar } from '../InputToolbar';
13
16
  import { MessagesContainer } from '../MessagesContainer';
17
+ import { isRTLLocale } from '../rtl';
14
18
  import stylesCommon from '../styles';
19
+ import { resolveTheme } from '../Theme';
15
20
  import { renderComponentOrElement } from '../utils';
16
21
  import { ChatKeyboardAvoidingView } from './ChatKeyboardAvoidingView';
17
22
  import styles from './styles';
18
23
  dayjs.extend(localizedFormat);
24
+ /** Seed for Chat's own SafeAreaProvider - real frame, but no insets claimed yet. */
25
+ const INITIAL_SAFE_AREA_METRICS = {
26
+ frame: initialWindowMetrics?.frame ?? { x: 0, y: 0, width: 0, height: 0 },
27
+ insets: { top: 0, left: 0, right: 0, bottom: 0 },
28
+ };
19
29
  function Chat(props) {
20
30
  const { messages = [], initialText = '', isTyping,
21
31
  // "random" function from here: https://stackoverflow.com/a/8084248/3452513
22
32
  // we do not use uuid since it would add extra native dependency (https://www.npmjs.com/package/react-native-get-random-values)
23
33
  // lib's user can decide which algorithm to use and pass it as a prop
24
- messageIdGenerator = () => (Math.random() + 1).toString(36).substring(7), user = {}, onSend, locale = 'en', colorScheme: colorSchemeProp, renderLoading, actionSheet, textInputProps, renderChatFooter, renderInputToolbar, isInverted = true,
34
+ messageIdGenerator = () => (Math.random() + 1).toString(36).substring(7), user = {}, onSend, locale = 'en', forceRTL, colorScheme: colorSchemeProp, theme, darkTheme, icons, labels, renderLoading, actionSheet, textInputProps, renderChatFooter, renderInputToolbar, isInverted = true,
25
35
  // Reply props
26
36
  reply, } = props;
27
37
  // Extract reply props for internal use
@@ -32,8 +42,14 @@ function Chat(props) {
32
42
  const replyPreviewContainerStyle = reply?.previewStyle?.containerStyle;
33
43
  const replyPreviewTextStyle = reply?.previewStyle?.textStyle;
34
44
  const systemColorScheme = useColorScheme();
35
- const colorScheme = colorSchemeProp !== undefined ? colorSchemeProp : systemColorScheme;
36
- const actionSheetRef = useRef(null);
45
+ // RN 0.86 can report 'unspecified'; normalize it away before it reaches the theme.
46
+ const colorScheme = normalizeColorScheme(colorSchemeProp !== undefined ? colorSchemeProp : systemColorScheme);
47
+ // Resolve the theme once per change so its identity is stable; this is what
48
+ // makes on-the-fly theme / color-scheme switching propagate to every memoized
49
+ // StyleSheet without rebuilding styles on unrelated renders.
50
+ const resolvedTheme = useMemo(() => resolveTheme(colorScheme, theme, darkTheme), [colorScheme, theme, darkTheme]);
51
+ const resolvedLabels = useMemo(() => resolveLabels(locale, labels), [locale, labels]);
52
+ const isRTL = useMemo(() => forceRTL ?? isRTLLocale(locale), [forceRTL, locale]);
37
53
  const messagesContainerRef = useMemo(() => props.messagesContainerRef || createRef(), [props.messagesContainerRef]);
38
54
  const textInputRef = useMemo(() => props.textInputRef || createRef(), [props.textInputRef]);
39
55
  const [isInitialized, setIsInitialized] = useState(false);
@@ -139,7 +155,19 @@ function Chat(props) {
139
155
  if (props.text === undefined)
140
156
  setText(text);
141
157
  }, [props.text, props.textInputProps]);
158
+ // Measures where the chat starts in the window, which is what the
159
+ // KeyboardAvoidingView needs to keep the toolbar on the keyboard.
160
+ const keyboardOffset = useKeyboardVerticalOffset();
161
+ const measureKeyboardOffset = keyboardOffset.onLayout;
162
+ // Reveal only once the real offset has been measured, not just once the layout
163
+ // event that kicked off measuring it has fired - `isInitialized` alone let the
164
+ // toolbar paint for a frame at the pre-measurement seed, which is offset 0 for
165
+ // any chat that isn't full-screen. See `useKeyboardVerticalOffset` (#12).
166
+ const isReady = isInitialized && keyboardOffset.isMeasured;
142
167
  const onInitialLayoutViewLayout = useCallback((e) => {
168
+ // Runs on every layout, not just the first: a header appearing or the
169
+ // device rotating moves the chat's top edge.
170
+ measureKeyboardOffset();
143
171
  if (isInitialized)
144
172
  return;
145
173
  const { layout } = e.nativeEvent;
@@ -148,7 +176,7 @@ function Chat(props) {
148
176
  notifyInputTextReset();
149
177
  setIsInitialized(true);
150
178
  setText(getTextFromProp(initialText));
151
- }, [isInitialized, initialText, notifyInputTextReset, getTextFromProp]);
179
+ }, [isInitialized, initialText, notifyInputTextReset, getTextFromProp, measureKeyboardOffset]);
152
180
  const inputToolbarFragment = useMemo(() => {
153
181
  if (!isInitialized)
154
182
  return null;
@@ -188,40 +216,53 @@ function Chat(props) {
188
216
  replyPreviewTextStyle,
189
217
  ]);
190
218
  const contextValues = useMemo(() => ({
219
+ // The built-in UI no longer uses an action sheet; this stays as an
220
+ // escape hatch for consumers who pass their own `actionSheet` (e.g.
221
+ // @expo/react-native-action-sheet). Defaults to a no-op.
191
222
  actionSheet: actionSheet ||
192
223
  (() => ({
193
- showActionSheetWithOptions: actionSheetRef.current.showActionSheetWithOptions,
224
+ showActionSheetWithOptions: () => { },
194
225
  })),
195
226
  getLocale: () => locale,
227
+ getIsRTL: () => isRTL,
196
228
  getColorScheme: () => colorScheme,
197
- }), [actionSheet, locale, colorScheme]);
229
+ getTheme: () => resolvedTheme,
230
+ getIcons: () => icons,
231
+ getLabels: () => resolvedLabels,
232
+ }), [actionSheet, locale, isRTL, colorScheme, resolvedTheme, icons, resolvedLabels]);
198
233
  useEffect(() => {
199
234
  if (props.text != null)
200
235
  setText(props.text);
201
236
  }, [props.text]);
202
237
  return (<ChatContext.Provider value={contextValues}>
203
- <ActionSheetProvider ref={actionSheetRef}>
204
- <View testID={TEST_ID.WRAPPER} style={[stylesCommon.fill, styles.contentContainer]} onLayout={onInitialLayoutViewLayout}>
205
- <ChatKeyboardAvoidingView keyboardAvoidingViewProps={props.keyboardAvoidingViewProps}>
206
- <View style={[stylesCommon.fill, !isInitialized && styles.hidden]}>
207
- {renderMessages}
208
- {inputToolbarFragment}
209
- </View>
210
- {!isInitialized && renderComponentOrElement(renderLoading, {})}
211
- </ChatKeyboardAvoidingView>
212
- </View>
213
- </ActionSheetProvider>
238
+ <View testID={TEST_ID.WRAPPER} ref={keyboardOffset.ref} style={[stylesCommon.fill, styles.contentContainer]} onLayout={onInitialLayoutViewLayout}>
239
+ <ChatKeyboardAvoidingView keyboardVerticalOffset={keyboardOffset.keyboardVerticalOffset} keyboardAvoidingViewProps={props.keyboardAvoidingViewProps}>
240
+ <View testID={TEST_ID.CONTENT} style={[stylesCommon.fill, !isReady && styles.hidden]}>
241
+ {renderMessages}
242
+ {inputToolbarFragment}
243
+ </View>
244
+ {!isReady && renderComponentOrElement(renderLoading, {})}
245
+ </ChatKeyboardAvoidingView>
246
+ </View>
214
247
  </ChatContext.Provider>);
215
248
  }
216
249
  function ChatWrapper(props) {
217
- const { keyboardProviderProps, disableKeyboardProvider = false, ...rest } = props;
250
+ const { keyboardProviderProps, disableKeyboardProvider = false, disableGestureHandlerRootView = false, ...rest } = props;
218
251
  // Apps are meant to mount `KeyboardProvider` once, at the root. Nesting a second one
219
252
  // breaks keyboard handling on Android, so we only provide one when the app has none.
220
- const hasKeyboardProvider = useHasKeyboardProvider();
253
+ //
254
+ // Locked in on mount rather than read fresh every render: Chat is often portaled in
255
+ // and out of the tree (a bottom sheet, a conditional screen), and if this ever flipped
256
+ // on a later render, `chat` below would move from being a direct child of the fragment
257
+ // to a child of `KeyboardProvider` (or back) - a structural change React can only handle
258
+ // by unmounting and remounting the whole subtree. That kind of surprise remount, with a
259
+ // shared element reused across both branches, is exactly the shape of hazard reported in
260
+ // #17 alongside a rare Fabric/Yoga layout assertion; locking the choice removes it even
261
+ // though it wasn't confirmed as that bug's root cause.
262
+ const [hasKeyboardProvider] = useState(useHasKeyboardProvider());
221
263
  const chat = <Chat {...rest}/>;
222
- return (<GestureHandlerRootView style={styles.fill}>
223
- <SafeAreaProvider>
224
- {disableKeyboardProvider || hasKeyboardProvider
264
+ const withKeyboardProvider = (<>
265
+ {disableKeyboardProvider || hasKeyboardProvider
225
266
  ? chat
226
267
  : (
227
268
  // No `statusBarTranslucent` / `navigationBarTranslucent` here on purpose.
@@ -233,9 +274,34 @@ function ChatWrapper(props) {
233
274
  // the app really is edge-to-edge, so forcing them only ever mismatches a
234
275
  // window that is not. Override via `keyboardProviderProps` if needed.
235
276
  <KeyboardProvider {...keyboardProviderProps}>
236
- {chat}
237
- </KeyboardProvider>)}
238
- </SafeAreaProvider>
277
+ {chat}
278
+ </KeyboardProvider>)}
279
+ </>);
280
+ const content = (
281
+ // Chat measures its *own* insets rather than reusing the app's. Reusing them
282
+ // double-pads: a navigator has usually already inset the screen, so the
283
+ // window's bottom inset is consumed before the chat even renders.
284
+ //
285
+ // The provider is seeded with zero insets on purpose. Without `initialMetrics`
286
+ // react-native-safe-area-context seeds a nested provider from its parent, so
287
+ // the first frame used the window's insets and the second the measured ones -
288
+ // bottom 34 -> 0 on an iPhone, which is the jump you see on every mount.
289
+ // Seeding zero matches what a chat inside a navigator settles on, so nothing
290
+ // moves; a genuinely full-screen chat grows into its inset on the next frame
291
+ // instead of collapsing out of one.
292
+ <SafeAreaProvider initialMetrics={INITIAL_SAFE_AREA_METRICS}>
293
+ {withKeyboardProvider}
294
+ </SafeAreaProvider>);
295
+ // Apps are meant to mount `GestureHandlerRootView` once, at the root, same as
296
+ // `KeyboardProvider` above - a nested one changes the native view hierarchy around
297
+ // the composer for no benefit. Unlike `KeyboardProvider`, this can't be auto-detected:
298
+ // `react-native-gesture-handler` doesn't publicly expose whether one is already
299
+ // mounted above, so an app that has its own (directly, or via something like a bottom
300
+ // sheet library) needs to opt out explicitly.
301
+ if (disableGestureHandlerRootView)
302
+ return <View style={styles.fill}>{content}</View>;
303
+ return (<GestureHandlerRootView style={styles.fill}>
304
+ {content}
239
305
  </GestureHandlerRootView>);
240
306
  }
241
307
  ChatWrapper.append = (currentMessages = [], messages, isInverted = true) => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Chat/index.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Chat/index.tsx"],"names":[],"mappings":"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"}