@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
package/lib/Day/index.js CHANGED
@@ -5,13 +5,17 @@ import calendar from 'dayjs/plugin/calendar';
5
5
  import relativeTime from 'dayjs/plugin/relativeTime';
6
6
  import { useChatContext } from '../ChatContext';
7
7
  import { DATE_FORMAT } from '../Constant';
8
+ import { useLabels } from '../hooks/useLabels';
9
+ import { useThemedStyles } from '../hooks/useTheme';
8
10
  import stylesCommon from '../styles';
9
- import styles from './styles';
11
+ import { createDayStyles } from './styles';
10
12
  export * from './types';
11
13
  dayjs.extend(relativeTime);
12
14
  dayjs.extend(calendar);
13
15
  export function Day({ dateFormat = DATE_FORMAT, dateFormatCalendar, createdAt, containerStyle, wrapperStyle, textProps, }) {
14
16
  const { getLocale } = useChatContext();
17
+ const labels = useLabels();
18
+ const styles = useThemedStyles(createDayStyles);
15
19
  const dateStr = useMemo(() => {
16
20
  if (createdAt == null)
17
21
  return null;
@@ -21,11 +25,11 @@ export function Day({ dateFormat = DATE_FORMAT, dateFormatCalendar, createdAt, c
21
25
  return date.format('D MMMM YYYY');
22
26
  if (now.diff(date, 'days') < 1)
23
27
  return date.calendar(now, {
24
- sameDay: '[Today]',
28
+ sameDay: `[${labels.today}]`,
25
29
  ...dateFormatCalendar,
26
30
  });
27
31
  return date.format(dateFormat);
28
- }, [createdAt, dateFormat, getLocale, dateFormatCalendar]);
32
+ }, [createdAt, dateFormat, getLocale, dateFormatCalendar, labels.today]);
29
33
  if (!dateStr)
30
34
  return null;
31
35
  return (<View style={[stylesCommon.centerItems, styles.container, containerStyle]}>
@@ -1 +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"}
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,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,YAAY,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG1C,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;IACtC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,eAAe,CAAC,eAAe,CAAC,CAAA;IAE/C,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,IAAI,MAAM,CAAC,KAAK,GAAG;gBAC5B,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,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;IAExE,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"}
@@ -1,21 +1,20 @@
1
- declare const _default: {
1
+ import { ChatTheme } from '../Theme';
2
+ export declare const createDayStyles: (theme: ChatTheme) => {
2
3
  container: {
3
4
  marginTop: number;
4
5
  marginBottom: number;
5
6
  };
6
7
  wrapper: {
7
8
  backgroundColor: string;
8
- paddingTop: number;
9
- paddingBottom: number;
10
- paddingLeft: number;
11
- paddingRight: number;
9
+ paddingVertical: number;
10
+ paddingHorizontal: number;
12
11
  borderRadius: number;
13
12
  };
14
13
  text: {
15
14
  color: string;
16
15
  fontSize: number;
17
- fontWeight: "600";
16
+ fontWeight: "normal" | "bold" | "100" | "200" | "300" | "400" | "500" | "600" | "700" | "800" | "900" | undefined;
17
+ letterSpacing: number;
18
18
  };
19
19
  };
20
- export default _default;
21
20
  //# sourceMappingURL=styles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Day/styles.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAGA,wBAkBE"}
1
+ {"version":3,"file":"styles.d.ts","sourceRoot":"","sources":["../../src/Day/styles.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,eAAO,MAAM,eAAe,GAAI,OAAO,SAAS;;;;;;;;;;;;;;;;;CAkB5C,CAAA"}
package/lib/Day/styles.js CHANGED
@@ -1,22 +1,20 @@
1
1
  import { StyleSheet } from 'react-native';
2
- import { Color } from '../Color';
3
- export default StyleSheet.create({
2
+ export const createDayStyles = (theme) => StyleSheet.create({
4
3
  container: {
5
- marginTop: 5,
6
- marginBottom: 10,
4
+ marginTop: 8,
5
+ marginBottom: 12,
7
6
  },
8
7
  wrapper: {
9
- backgroundColor: 'rgba(0, 0, 0, 0.75)',
10
- paddingTop: 6,
11
- paddingBottom: 6,
12
- paddingLeft: 10,
13
- paddingRight: 10,
14
- borderRadius: 15,
8
+ backgroundColor: theme.colors.dayPillBackground,
9
+ paddingVertical: 5,
10
+ paddingHorizontal: 12,
11
+ borderRadius: theme.radii.dayPill,
15
12
  },
16
13
  text: {
17
- color: Color.white,
18
- fontSize: 12,
19
- fontWeight: '600',
14
+ color: theme.colors.dayPillText,
15
+ fontSize: theme.typography.day.fontSize,
16
+ fontWeight: theme.typography.day.fontWeight,
17
+ letterSpacing: 0.2,
20
18
  },
21
19
  });
22
20
  //# sourceMappingURL=styles.js.map
@@ -1 +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"}
1
+ {"version":3,"file":"styles.js","sourceRoot":"","sources":["../../src/Day/styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAGzC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAgB,EAAE,EAAE,CAClD,UAAU,CAAC,MAAM,CAAC;IAChB,SAAS,EAAE;QACT,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,EAAE;KACjB;IACD,OAAO,EAAE;QACP,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,iBAAiB;QAC/C,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,EAAE;QACrB,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;KAClC;IACD,IAAI,EAAE;QACJ,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ;QACvC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU;QAC3C,aAAa,EAAE,GAAG;KACnB;CACF,CAAC,CAAA"}
package/lib/Icons.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ import { ReactNode } from 'react';
2
+ export interface IconProps {
3
+ color: string;
4
+ size: number;
5
+ }
6
+ export type IconRenderer = (props: IconProps) => ReactNode;
7
+ /** Named icons the chat UI renders. Override any subset via the `icons` prop. */
8
+ export type IconName = 'send' | 'mic' | 'camera' | 'play' | 'pause' | 'close' | 'chevronLeft' | 'chevronDown' | 'clock' | 'check' | 'checkAll' | 'pin' | 'plus' | 'emoji' | 'paperclip' | 'reply' | 'pencil' | 'lock' | 'trash';
9
+ /**
10
+ * Icon override registry. Supply a render function for any icon to replace the
11
+ * built-in (dependency-free) drawn icon with your own - e.g. lucide-react-native:
12
+ *
13
+ * ```tsx
14
+ * import { Send, Mic } from 'lucide-react-native'
15
+ * <Chat icons={{
16
+ * send: ({ color, size }) => <Send color={color} size={size} />,
17
+ * mic: ({ color, size }) => <Mic color={color} size={size} />,
18
+ * }} />
19
+ * ```
20
+ *
21
+ * No dependency is added by this library; the drawn icons remain the default.
22
+ */
23
+ export type ChatIcons = Partial<Record<IconName, IconRenderer>>;
24
+ //# sourceMappingURL=Icons.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icons.d.ts","sourceRoot":"","sources":["../src/Icons.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAEjC,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,SAAS,CAAA;AAE1D,iFAAiF;AACjF,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,KAAK,GACL,QAAQ,GACR,MAAM,GACN,OAAO,GACP,OAAO,GACP,aAAa,GACb,aAAa,GACb,OAAO,GACP,OAAO,GACP,UAAU,GACV,KAAK,GACL,MAAM,GACN,OAAO,GACP,WAAW,GACX,OAAO,GACP,QAAQ,GACR,MAAM,GACN,OAAO,CAAA;AAEX;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAA"}
package/lib/Icons.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Icons.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Icons.js","sourceRoot":"","sources":["../src/Icons.ts"],"names":[],"mappings":""}
@@ -1,16 +1,14 @@
1
1
  import React from 'react';
2
2
  import { StyleProp, ViewStyle, TextStyle } from 'react-native';
3
3
  import { ActionsProps } from './Actions';
4
+ import { AttachmentAction } from './components/AttachmentSheet';
4
5
  import { ReplyPreviewProps } from './components/ReplyPreview';
5
6
  import { ComposerProps } from './Composer';
6
- import { IMessage, ReplyMessage } from './Models';
7
+ import { AudioRecordingProps, IMessage, ReplyMessage, VideoRecordingProps } from './Models';
7
8
  import { SendProps } from './Send';
8
9
  export type { ReplyPreviewProps } from './components/ReplyPreview';
9
10
  export interface InputToolbarProps<TMessage extends IMessage> {
10
- actions?: Array<{
11
- title: string;
12
- action: () => void;
13
- }>;
11
+ actions?: AttachmentAction[];
14
12
  actionSheetOptionTintColor?: string;
15
13
  containerStyle?: StyleProp<ViewStyle>;
16
14
  primaryStyle?: StyleProp<ViewStyle>;
@@ -31,6 +29,21 @@ export interface InputToolbarProps<TMessage extends IMessage> {
31
29
  replyPreviewContainerStyle?: StyleProp<ViewStyle>;
32
30
  /** Style for reply preview text */
33
31
  replyPreviewTextStyle?: StyleProp<TextStyle>;
32
+ /** Telegram-style hold-to-record voice messages (needs optional expo-audio) */
33
+ audioRecording?: AudioRecordingProps;
34
+ /** Record-and-send video messages (needs optional expo-image-picker) */
35
+ videoRecording?: VideoRecordingProps;
36
+ /** Force-show the send button even when the composer is empty */
37
+ isSendButtonAlwaysVisible?: boolean;
38
+ /** Current composer text (used to swap the send button for the mic button) */
39
+ text?: string;
40
+ /** Show an emoji button inset on the left of the field; called on press. */
41
+ onPressEmoji?: () => void;
42
+ /**
43
+ * Whether the composer accepts multiple lines. `true` (default) keeps the
44
+ * return key inserting a newline; `false` turns it into Send.
45
+ */
46
+ isMultiline?: boolean;
34
47
  }
35
48
  export declare function InputToolbar<TMessage extends IMessage = IMessage>(props: InputToolbarProps<TMessage>): React.JSX.Element;
36
49
  //# sourceMappingURL=InputToolbar.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"InputToolbar.d.ts","sourceRoot":"","sources":["../src/InputToolbar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAChF,OAAO,EAAqC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAajG,OAAO,EAAW,YAAY,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAG/D,OAAO,EAAgB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAU3E,OAAO,EAAY,aAAa,EAAE,MAAM,YAAY,CAAA;AAIpD,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC3F,OAAO,EAAQ,SAAS,EAAE,MAAM,QAAQ,CAAA;AAIxC,YAAY,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAElE,MAAM,WAAW,iBAAiB,CAAC,QAAQ,SAAS,QAAQ;IAC1D,OAAO,CAAC,EAAE,gBAAgB,EAAE,CAAA;IAC5B,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;IAC5C,+EAA+E;IAC/E,cAAc,CAAC,EAAE,mBAAmB,CAAA;IACpC,wEAAwE;IACxE,cAAc,CAAC,EAAE,mBAAmB,CAAA;IACpC,iEAAiE;IACjE,yBAAyB,CAAC,EAAE,OAAO,CAAA;IACnC,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAOD,wBAAgB,YAAY,CAAC,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAC/D,KAAK,EAAE,iBAAiB,CAAC,QAAQ,CAAC,qBA8SnC"}
@@ -1,24 +1,40 @@
1
- import React, { useCallback, useMemo } from 'react';
2
- import { StyleSheet, View } from 'react-native';
1
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { Pressable, StyleSheet, Text, View } from 'react-native';
3
+ import Animated, { Easing, ReduceMotion, cancelAnimation, interpolate, useAnimatedStyle, useSharedValue, withRepeat, withTiming, } from 'react-native-reanimated';
4
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
3
5
  import { Actions } from './Actions';
4
- import { Color } from './Color';
6
+ import { Icon } from './components/Icon';
7
+ import { ChevronIcon, EmojiIcon, TrashIcon } from './components/MediaControls';
5
8
  import { ReplyPreview } from './components/ReplyPreview';
9
+ import { VideoRecordButton, isVideoRecordingAvailable } from './components/VideoRecordButton';
10
+ import { VoiceMessageInput, formatElapsed, isVoiceRecordingAvailable, } from './components/VoiceMessageInput';
6
11
  import { Composer } from './Composer';
7
- import { useColorScheme } from './hooks/useColorScheme';
12
+ import { useIsRTL } from './hooks/useIsRTL';
13
+ import { useLabels } from './hooks/useLabels';
14
+ import { useThemedStyles } from './hooks/useTheme';
8
15
  import { Send } from './Send';
9
16
  import { renderComponentOrElement } from './utils';
10
17
  export function InputToolbar(props) {
11
18
  const { renderActions, onPressActionButton, renderComposer, renderSend, renderAccessory, actions, actionSheetOptionTintColor, icon, wrapperStyle, containerStyle, replyMessage, onClearReply, renderReplyPreview: renderReplyPreviewProp, replyPreviewContainerStyle, replyPreviewTextStyle, } = props;
12
- const colorScheme = useColorScheme();
19
+ const styles = useThemedStyles(createStyles);
20
+ const insets = useSafeAreaInsets();
21
+ const isRTL = useIsRTL();
13
22
  const containerStyles = useMemo(() => [
14
23
  styles.container,
15
- colorScheme === 'dark' && styles.container_dark,
24
+ // Pad for the home indicator so the field doesn't kiss it (no-op when the
25
+ // keyboard covers the inset).
26
+ { paddingBottom: insets.bottom },
16
27
  containerStyle,
17
- ], [colorScheme, containerStyle]);
28
+ ], [styles, insets.bottom, containerStyle]);
18
29
  const primaryStyles = useMemo(() => [
19
30
  styles.primary,
31
+ isRTL && styles.rowReverse,
20
32
  props.primaryStyle,
21
- ], [props.primaryStyle]);
33
+ ], [styles, isRTL, props.primaryStyle]);
34
+ const fieldGroupStyles = useMemo(() => [
35
+ styles.fieldGroup,
36
+ isRTL && styles.rowReverse,
37
+ ], [styles, isRTL]);
22
38
  const actionsFragment = useMemo(() => {
23
39
  const actionsProps = {
24
40
  onPressActionButton,
@@ -30,7 +46,7 @@ export function InputToolbar(props) {
30
46
  };
31
47
  if (renderActions)
32
48
  return renderComponentOrElement(renderActions, actionsProps);
33
- if (onPressActionButton)
49
+ if (onPressActionButton || actions?.length)
34
50
  return <Actions {...actionsProps}/>;
35
51
  return null;
36
52
  }, [
@@ -42,6 +58,14 @@ export function InputToolbar(props) {
42
58
  wrapperStyle,
43
59
  containerStyle,
44
60
  ]);
61
+ const emojiFragment = useMemo(() => {
62
+ if (!props.onPressEmoji)
63
+ return null;
64
+ const size = styles.insetColor.fontSize;
65
+ return (<Pressable onPress={props.onPressEmoji} hitSlop={8} accessibilityRole='button' accessibilityLabel='emoji' style={styles.inset}>
66
+ <Icon name='emoji' color={styles.insetColor.color} size={size} fallback={<EmojiIcon color={styles.insetColor.color} size={size}/>}/>
67
+ </Pressable>);
68
+ }, [props.onPressEmoji, styles]);
45
69
  const composerFragment = useMemo(() => {
46
70
  const composerProps = props;
47
71
  if (renderComposer)
@@ -53,6 +77,72 @@ export function InputToolbar(props) {
53
77
  return renderComponentOrElement(renderSend, props);
54
78
  return <Send {...props}/>;
55
79
  }, [renderSend, props]);
80
+ // onSend is forwarded from Chat at runtime; it isn't part of the public
81
+ // InputToolbarProps surface, so read it through a typed cast.
82
+ const onSend = props.onSend;
83
+ const labels = useLabels();
84
+ // Recording state is owned by VoiceMessageInput (it holds the recorder + the
85
+ // gesture); it reports up here so the bar - timer on the left, pulsating
86
+ // "slide to cancel" hint across the field - can span the full input row.
87
+ const [voiceState, setVoiceState] = useState({
88
+ active: false, locked: false, elapsed: 0, cancelArmed: false, levels: [],
89
+ });
90
+ const voiceRef = useRef(null);
91
+ const recPulse = useSharedValue(0);
92
+ useEffect(() => {
93
+ if (voiceState.active) {
94
+ recPulse.value = withRepeat(withTiming(1, { duration: 750, easing: Easing.inOut(Easing.quad), reduceMotion: ReduceMotion.System }), -1, true);
95
+ }
96
+ else {
97
+ cancelAnimation(recPulse);
98
+ recPulse.value = 0;
99
+ }
100
+ }, [voiceState.active, recPulse]);
101
+ const recDotStyle = useAnimatedStyle(() => ({
102
+ opacity: interpolate(recPulse.value, [0, 1], [1, 0.25]),
103
+ }));
104
+ const recHintStyle = useAnimatedStyle(() => ({
105
+ opacity: interpolate(recPulse.value, [0, 1], [1, 0.5]),
106
+ }));
107
+ // Telegram-style swap: mic when the composer is empty and voice recording is
108
+ // enabled/available, otherwise the send button.
109
+ const hasText = !!props.text?.trim();
110
+ const showVoice = !!props.audioRecording?.isEnabled &&
111
+ isVoiceRecordingAvailable &&
112
+ !hasText &&
113
+ !props.isSendButtonAlwaysVisible;
114
+ const showVideo = !!props.videoRecording?.isEnabled && isVideoRecordingAvailable;
115
+ // Telegram shares one right-slot control between voice and video: a single tap
116
+ // switches which one it is, a hold records. Only offered when both are
117
+ // available - with just one, that control has nothing to toggle to.
118
+ const [recordMode, setRecordMode] = useState('voice');
119
+ const canToggleMode = showVoice && showVideo;
120
+ const toggleRecordMode = useCallback(() => {
121
+ setRecordMode(current => (current === 'voice' ? 'video' : 'voice'));
122
+ }, []);
123
+ const rightControl = useMemo(() => {
124
+ if (showVoice && !(canToggleMode && recordMode === 'video'))
125
+ return (<VoiceMessageInput ref={voiceRef} config={props.audioRecording} onSend={onSend} onStateChange={setVoiceState} onTap={canToggleMode ? toggleRecordMode : undefined}/>);
126
+ if (canToggleMode && recordMode === 'video')
127
+ return (<VideoRecordButton config={props.videoRecording} onSend={onSend} onTap={toggleRecordMode} variant='round'/>);
128
+ return sendFragment;
129
+ }, [
130
+ showVoice,
131
+ canToggleMode,
132
+ recordMode,
133
+ toggleRecordMode,
134
+ props.audioRecording,
135
+ props.videoRecording,
136
+ onSend,
137
+ sendFragment,
138
+ ]);
139
+ // Inset camera button inside the field. Dropped once the right-slot control
140
+ // can toggle to video, so there is only ever one camera entry point.
141
+ const videoFragment = useMemo(() => {
142
+ if (!showVideo || canToggleMode)
143
+ return null;
144
+ return <VideoRecordButton config={props.videoRecording} onSend={onSend}/>;
145
+ }, [showVideo, canToggleMode, props.videoRecording, onSend]);
56
146
  const accessoryFragment = useMemo(() => {
57
147
  if (!renderAccessory)
58
148
  return null;
@@ -83,26 +173,163 @@ export function InputToolbar(props) {
83
173
  return (<View style={containerStyles}>
84
174
  {replyPreviewFragment}
85
175
  <View style={primaryStyles}>
86
- {actionsFragment}
87
- {composerFragment}
88
- {sendFragment}
176
+ {voiceState.active
177
+ ? (<View style={[styles.recordingBar, isRTL && styles.rowReverse]}>
178
+ <Animated.View style={[styles.recDot, recDotStyle]}/>
179
+ <Text style={[styles.recTimer, isRTL ? styles.recTimerRTL : styles.recTimerLTR]}>{formatElapsed(voiceState.elapsed)}</Text>
180
+ {voiceState.locked
181
+ ? (
182
+ // Locked: Telegram shows a trash target and a live waveform in
183
+ // place of the slide-to-cancel hint, with send on the right.
184
+ <>
185
+ <Pressable style={styles.recTrash} hitSlop={8} onPress={() => voiceRef.current?.cancel()} accessibilityRole='button' accessibilityLabel='delete recording'>
186
+ <Icon name='trash' color={styles.recTrashColor.color} size={20} fallback={<TrashIcon color={styles.recTrashColor.color} size={20}/>}/>
187
+ </Pressable>
188
+ <View style={styles.recLevels}>
189
+ {voiceState.levels.map((level, index) => (<View key={index} style={[
190
+ styles.recLevelBar,
191
+ // Per-sample runtime height, so it stays inline.
192
+ { height: 2 + level * 18 },
193
+ ]}/>))}
194
+ </View>
195
+ </>)
196
+ : (<Animated.View style={[styles.recHintWrap, recHintStyle]} pointerEvents='none'>
197
+ <ChevronIcon color={styles.recHintColor.color} size={14} direction={isRTL ? 'right' : 'left'}/>
198
+ <Text style={[styles.recHint, voiceState.cancelArmed && styles.recHintArmed]}>
199
+ {labels.slideToCancel}
200
+ </Text>
201
+ </Animated.View>)}
202
+ </View>)
203
+ : (<View style={fieldGroupStyles}>
204
+ {emojiFragment}
205
+ {composerFragment}
206
+ {actionsFragment}
207
+ {videoFragment}
208
+ </View>)}
209
+ {rightControl}
89
210
  </View>
90
211
  {accessoryFragment}
91
212
  </View>);
92
213
  }
93
- const styles = StyleSheet.create({
214
+ const createStyles = (theme) => StyleSheet.create({
94
215
  container: {
95
216
  borderTopWidth: StyleSheet.hairlineWidth,
96
- borderTopColor: Color.defaultColor,
97
- backgroundColor: Color.white,
98
- },
99
- container_dark: {
100
- backgroundColor: '#1a1a1a',
101
- borderTopColor: '#444',
217
+ backgroundColor: theme.colors.inputBarBackground,
218
+ borderTopColor: theme.colors.separator,
102
219
  },
103
220
  primary: {
104
221
  flexDirection: 'row',
105
222
  alignItems: 'flex-end',
223
+ paddingVertical: theme.spacing.inputToolbarPaddingV,
224
+ paddingLeft: theme.spacing.screenEdge.left,
225
+ paddingRight: theme.spacing.screenEdge.right,
226
+ gap: theme.spacing.screenEdge.left,
227
+ // positioned parent for the voice recorder's overlay bar
228
+ position: 'relative',
229
+ },
230
+ // Mirrors `primary`/`fieldGroup`/`recordingBar` for RTL. All three space their
231
+ // children with `gap` rather than manual margins, so reversing direction is
232
+ // enough - no per-child left/right swap needed (recTimer's margin is the one
233
+ // exception, since it sits inside `recordingBar` without its own gap - see
234
+ // recTimerLTR/recTimerRTL below).
235
+ rowReverse: {
236
+ flexDirection: 'row-reverse',
237
+ },
238
+ // While recording, the field is replaced by a bar: a blinking red dot and the
239
+ // timer on one side, then the pulsating "slide to cancel" hint (or a Cancel
240
+ // button once locked). Sized like the field so the row height does not jump.
241
+ recordingBar: {
242
+ flex: 1,
243
+ flexDirection: 'row',
244
+ alignItems: 'center',
245
+ minHeight: theme.composer.minHeight,
246
+ paddingHorizontal: theme.composer.fieldPaddingH,
247
+ },
248
+ recDot: {
249
+ width: 9,
250
+ height: 9,
251
+ borderRadius: 5,
252
+ backgroundColor: theme.colors.error,
253
+ },
254
+ recTimer: {
255
+ fontSize: 15,
256
+ color: theme.colors.inputText,
257
+ fontVariant: ['tabular-nums'],
258
+ minWidth: 44,
259
+ },
260
+ // recTimer has no shared `gap` with recDot to fall back on, so the gap
261
+ // between them needs to swap sides explicitly when the row reverses.
262
+ recTimerLTR: {
263
+ marginLeft: 8,
264
+ },
265
+ recTimerRTL: {
266
+ marginRight: 8,
267
+ },
268
+ recHintWrap: {
269
+ flex: 1,
270
+ flexDirection: 'row',
271
+ alignItems: 'center',
272
+ justifyContent: 'center',
273
+ gap: 4,
274
+ },
275
+ recHint: {
276
+ fontSize: 14,
277
+ color: theme.colors.placeholder,
278
+ },
279
+ recHintArmed: {
280
+ color: theme.colors.error,
281
+ },
282
+ // Carries the chevron color through the StyleSheet so it stays themed.
283
+ recHintColor: {
284
+ color: theme.colors.placeholder,
285
+ },
286
+ // Locked state: a real delete target (44pt) instead of a text link.
287
+ recTrash: {
288
+ width: 44,
289
+ height: 44,
290
+ alignItems: 'center',
291
+ justifyContent: 'center',
292
+ },
293
+ recTrashColor: {
294
+ color: theme.colors.error,
295
+ },
296
+ // Live mic amplitudes, newest on the right - Telegram's locked-state waveform.
297
+ recLevels: {
298
+ flex: 1,
299
+ flexDirection: 'row',
300
+ alignItems: 'center',
301
+ justifyContent: 'flex-end',
302
+ height: 22,
303
+ gap: 1,
304
+ },
305
+ recLevelBar: {
306
+ width: 2,
307
+ borderRadius: 1,
308
+ backgroundColor: theme.colors.accent,
309
+ },
310
+ // The field is the bar: one rounded pill holding the inset controls + the
311
+ // text field. Only the send/mic button lives outside it.
312
+ fieldGroup: {
313
+ flex: 1,
314
+ flexDirection: 'row',
315
+ alignItems: 'flex-end',
316
+ minHeight: theme.composer.minHeight,
317
+ paddingHorizontal: theme.composer.fieldPaddingH,
318
+ gap: 6,
319
+ borderRadius: theme.radii.inputField,
320
+ backgroundColor: theme.colors.inputBackground,
321
+ borderWidth: StyleSheet.hairlineWidth,
322
+ borderColor: theme.colors.inputFieldBorder,
323
+ },
324
+ inset: {
325
+ alignItems: 'center',
326
+ justifyContent: 'center',
327
+ paddingBottom: 8,
328
+ },
329
+ // Carries inset icon color + size (kept out of JSX).
330
+ insetColor: {
331
+ color: theme.colors.incomingMeta,
332
+ fontSize: theme.composer.insetIconSize,
106
333
  },
107
334
  });
108
335
  //# sourceMappingURL=InputToolbar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InputToolbar.js","sourceRoot":"","sources":["../src/InputToolbar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"InputToolbar.js","sourceRoot":"","sources":["../src/InputToolbar.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"LoadEarlierMessages.d.ts","sourceRoot":"","sources":["../src/LoadEarlierMessages.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAIL,SAAS,EACT,SAAS,EACT,SAAS,EACH,MAAM,cAAc,CAAA;AAK5B,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACrC,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAChC,sBAAsB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC7C,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;CACnD;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAuClE,CAAA"}
1
+ {"version":3,"file":"LoadEarlierMessages.d.ts","sourceRoot":"","sources":["../src/LoadEarlierMessages.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAIL,SAAS,EACT,SAAS,EACT,SAAS,EACH,MAAM,cAAc,CAAA;AAQ5B,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,OAAO,CAAA;IACpB,SAAS,EAAE,OAAO,CAAA;IAClB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,uBAAuB,CAAC,EAAE,OAAO,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACrC,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IACnC,SAAS,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAChC,sBAAsB,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAA;IAC7C,sBAAsB,CAAC,EAAE,MAAM,CAAA;IAC/B,qBAAqB,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;CACnD;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA2ClE,CAAA"}
@@ -2,29 +2,34 @@ import React from 'react';
2
2
  import { ActivityIndicator, StyleSheet, View, Text } from 'react-native';
3
3
  import { Color } from './Color';
4
4
  import { TouchableOpacity } from './components/TouchableOpacity';
5
+ import { useLabels } from './hooks/useLabels';
6
+ import { useThemedStyles } from './hooks/useTheme';
5
7
  import stylesCommon from './styles';
6
- export const LoadEarlierMessages = ({ isLoading = false, onPress, label = 'Load earlier messages', containerStyle, wrapperStyle, textStyle, activityIndicatorColor = 'white', activityIndicatorSize = 'small', activityIndicatorStyle, }) => {
8
+ export const LoadEarlierMessages = ({ isLoading = false, onPress, label, containerStyle, wrapperStyle, textStyle, activityIndicatorColor = 'white', activityIndicatorSize = 'small', activityIndicatorStyle, }) => {
9
+ const styles = useThemedStyles(createStyles);
10
+ const labels = useLabels();
11
+ const resolvedLabel = label ?? labels.loadEarlier;
7
12
  return (<TouchableOpacity style={[styles.container, containerStyle]} onPress={onPress} enabled={!isLoading} accessibilityRole='button'>
8
13
  <View style={[stylesCommon.centerItems, styles.wrapper, wrapperStyle]}>
9
14
  {isLoading
10
15
  ? (<ActivityIndicator color={activityIndicatorColor} size={activityIndicatorSize} style={[styles.activityIndicator, activityIndicatorStyle]}/>)
11
16
  : (<View style={styles.textContainer}>
12
17
  <Text style={[styles.text, textStyle]}>
13
- {label}
18
+ {resolvedLabel}
14
19
  </Text>
15
20
  </View>)}
16
21
  </View>
17
22
  </TouchableOpacity>);
18
23
  };
19
- const styles = StyleSheet.create({
24
+ const createStyles = (theme) => StyleSheet.create({
20
25
  container: {
21
26
  alignItems: 'center',
22
27
  marginVertical: 10,
23
28
  },
24
29
  wrapper: {
25
- backgroundColor: Color.defaultColor,
26
- borderRadius: 15,
27
- paddingHorizontal: 10,
30
+ backgroundColor: theme.colors.dayPillBackground,
31
+ borderRadius: theme.radii.dayPill,
32
+ paddingHorizontal: 12,
28
33
  paddingVertical: 5,
29
34
  },
30
35
  textContainer: {
@@ -33,7 +38,7 @@ const styles = StyleSheet.create({
33
38
  },
34
39
  text: {
35
40
  backgroundColor: Color.backgroundTransparent,
36
- color: Color.white,
41
+ color: theme.colors.dayPillText,
37
42
  fontSize: 12,
38
43
  lineHeight: 13,
39
44
  },
@@ -1 +1 @@
1
- {"version":3,"file":"LoadEarlierMessages.js","sourceRoot":"","sources":["../src/LoadEarlierMessages.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,IAAI,EAIJ,IAAI,EAAE,MAAM,cAAc,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,YAAY,MAAM,UAAU,CAAA;AAgBnC,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,EACtE,SAAS,GAAG,KAAK,EACjB,OAAO,EACP,KAAK,GAAG,uBAAuB,EAC/B,cAAc,EACd,YAAY,EACZ,SAAS,EACT,sBAAsB,GAAG,OAAO,EAChC,qBAAqB,GAAG,OAAO,EAC/B,sBAAsB,GACvB,EAAE,EAAE;IACH,OAAO,CACL,CAAC,gBAAgB,CACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAC1C,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CACpB,iBAAiB,CAAC,QAAQ,CAE1B;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CACpE;QAAA,CACE,SAAS;YACP,CAAC,CAAC,CACA,CAAC,iBAAiB,CAChB,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAC9B,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAC5B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC,EAC1D,CACH;YACD,CAAC,CAAC,CACA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAChC;gBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CACpC;kBAAA,CAAC,KAAK,CACR;gBAAA,EAAE,IAAI,CACR;cAAA,EAAE,IAAI,CAAC,CAEb,CACF;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,gBAAgB,CAAC,CACpB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC/B,SAAS,EAAE;QACT,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,EAAE;KACnB;IACD,OAAO,EAAE;QACP,eAAe,EAAE,KAAK,CAAC,YAAY;QACnC,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,CAAC;KACnB;IACD,aAAa,EAAE;QACb,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;KACjB;IACD,IAAI,EAAE;QACJ,eAAe,EAAE,KAAK,CAAC,qBAAqB;QAC5C,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;KACf;IACD,iBAAiB,EAAE;QACjB,iBAAiB,EAAE,EAAE;KACtB;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"LoadEarlierMessages.js","sourceRoot":"","sources":["../src/LoadEarlierMessages.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,IAAI,EAIJ,IAAI,EAAE,MAAM,cAAc,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,YAAY,MAAM,UAAU,CAAA;AAiBnC,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,EACtE,SAAS,GAAG,KAAK,EACjB,OAAO,EACP,KAAK,EACL,cAAc,EACd,YAAY,EACZ,SAAS,EACT,sBAAsB,GAAG,OAAO,EAChC,qBAAqB,GAAG,OAAO,EAC/B,sBAAsB,GACvB,EAAE,EAAE;IACH,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,aAAa,GAAG,KAAK,IAAI,MAAM,CAAC,WAAW,CAAA;IAEjD,OAAO,CACL,CAAC,gBAAgB,CACf,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAC1C,OAAO,CAAC,CAAC,OAAO,CAAC,CACjB,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CACpB,iBAAiB,CAAC,QAAQ,CAE1B;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CACpE;QAAA,CACE,SAAS;YACP,CAAC,CAAC,CACA,CAAC,iBAAiB,CAChB,KAAK,CAAC,CAAC,sBAAsB,CAAC,CAC9B,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAC5B,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,CAAC,EAC1D,CACH;YACD,CAAC,CAAC,CACA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAChC;gBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CACpC;kBAAA,CAAC,aAAa,CAChB;gBAAA,EAAE,IAAI,CACR;cAAA,EAAE,IAAI,CAAC,CAEb,CACF;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,gBAAgB,CAAC,CACpB,CAAA;AACH,CAAC,CAAA;AAED,MAAM,YAAY,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;IAC3D,SAAS,EAAE;QACT,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,EAAE;KACnB;IACD,OAAO,EAAE;QACP,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,iBAAiB;QAC/C,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;QACjC,iBAAiB,EAAE,EAAE;QACrB,eAAe,EAAE,CAAC;KACnB;IACD,aAAa,EAAE;QACb,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC;KACjB;IACD,IAAI,EAAE;QACJ,eAAe,EAAE,KAAK,CAAC,qBAAqB;QAC5C,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,EAAE;QACZ,UAAU,EAAE,EAAE;KACf;IACD,iBAAiB,EAAE;QACjB,iBAAiB,EAAE,EAAE;KACtB;CACF,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Message/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAQ3D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAMpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,cAAc,SAAS,CAAA;AAwCvB,eAAO,MAAM,OAAO,GAAI,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAAE,OAAO,YAAY,CAAC,QAAQ,CAAC,6BA0K1F,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/Message/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAA;AAS3D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAQpC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEtC,cAAc,SAAS,CAAA;AA0CvB,eAAO,MAAM,OAAO,GAAI,QAAQ,SAAS,QAAQ,GAAG,QAAQ,EAAE,OAAO,YAAY,CAAC,QAAQ,CAAC,6BAiL1F,CAAA"}