@kesha-antonov/react-native-chat 4.2.0 → 4.3.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 (237) hide show
  1. package/README.md +252 -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 +22 -27
  8. package/lib/Avatar.js.map +1 -1
  9. package/lib/Bubble/index.d.ts.map +1 -1
  10. package/lib/Bubble/index.js +86 -25
  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.map +1 -1
  23. package/lib/Chat/index.js +65 -25
  24. package/lib/Chat/index.js.map +1 -1
  25. package/lib/Chat/types.d.ts +35 -25
  26. package/lib/Chat/types.d.ts.map +1 -1
  27. package/lib/ChatAvatar.d.ts.map +1 -1
  28. package/lib/ChatAvatar.js +11 -17
  29. package/lib/ChatAvatar.js.map +1 -1
  30. package/lib/ChatContext.d.ts +29 -1
  31. package/lib/ChatContext.d.ts.map +1 -1
  32. package/lib/ChatContext.js +3 -0
  33. package/lib/ChatContext.js.map +1 -1
  34. package/lib/Color.d.ts.map +1 -1
  35. package/lib/Color.js +6 -2
  36. package/lib/Color.js.map +1 -1
  37. package/lib/Composer.d.ts +14 -1
  38. package/lib/Composer.d.ts.map +1 -1
  39. package/lib/Composer.js +63 -50
  40. package/lib/Composer.js.map +1 -1
  41. package/lib/Day/index.d.ts.map +1 -1
  42. package/lib/Day/index.js +7 -3
  43. package/lib/Day/index.js.map +1 -1
  44. package/lib/Day/styles.d.ts +6 -7
  45. package/lib/Day/styles.d.ts.map +1 -1
  46. package/lib/Day/styles.js +11 -13
  47. package/lib/Day/styles.js.map +1 -1
  48. package/lib/Icons.d.ts +24 -0
  49. package/lib/Icons.d.ts.map +1 -0
  50. package/lib/Icons.js +2 -0
  51. package/lib/Icons.js.map +1 -0
  52. package/lib/InputToolbar.d.ts +18 -5
  53. package/lib/InputToolbar.d.ts.map +1 -1
  54. package/lib/InputToolbar.js +223 -19
  55. package/lib/InputToolbar.js.map +1 -1
  56. package/lib/LoadEarlierMessages.d.ts.map +1 -1
  57. package/lib/LoadEarlierMessages.js +12 -7
  58. package/lib/LoadEarlierMessages.js.map +1 -1
  59. package/lib/Message/index.d.ts.map +1 -1
  60. package/lib/Message/index.js +10 -9
  61. package/lib/Message/index.js.map +1 -1
  62. package/lib/Message/styles.js +2 -2
  63. package/lib/Message/styles.js.map +1 -1
  64. package/lib/MessageAudio.d.ts +2 -1
  65. package/lib/MessageAudio.d.ts.map +1 -1
  66. package/lib/MessageAudio.js +121 -19
  67. package/lib/MessageAudio.js.map +1 -1
  68. package/lib/MessageLocation.d.ts +9 -0
  69. package/lib/MessageLocation.d.ts.map +1 -0
  70. package/lib/MessageLocation.js +85 -0
  71. package/lib/MessageLocation.js.map +1 -0
  72. package/lib/MessageText.d.ts +12 -1
  73. package/lib/MessageText.d.ts.map +1 -1
  74. package/lib/MessageText.js +38 -11
  75. package/lib/MessageText.js.map +1 -1
  76. package/lib/MessageVideo.d.ts +2 -1
  77. package/lib/MessageVideo.d.ts.map +1 -1
  78. package/lib/MessageVideo.js +156 -18
  79. package/lib/MessageVideo.js.map +1 -1
  80. package/lib/MessagesContainer/components/Item/index.d.ts +2 -1
  81. package/lib/MessagesContainer/components/Item/index.d.ts.map +1 -1
  82. package/lib/MessagesContainer/components/Item/index.js +23 -1
  83. package/lib/MessagesContainer/components/Item/index.js.map +1 -1
  84. package/lib/MessagesContainer/index.d.ts.map +1 -1
  85. package/lib/MessagesContainer/index.js +24 -11
  86. package/lib/MessagesContainer/index.js.map +1 -1
  87. package/lib/MessagesContainer/styles.d.ts +23 -3
  88. package/lib/MessagesContainer/styles.d.ts.map +1 -1
  89. package/lib/MessagesContainer/styles.js +25 -5
  90. package/lib/MessagesContainer/styles.js.map +1 -1
  91. package/lib/Models.d.ts +72 -0
  92. package/lib/Models.d.ts.map +1 -1
  93. package/lib/QuickReplies.d.ts +1 -1
  94. package/lib/QuickReplies.d.ts.map +1 -1
  95. package/lib/QuickReplies.js +13 -7
  96. package/lib/QuickReplies.js.map +1 -1
  97. package/lib/Reactions/MessageReactions.d.ts.map +1 -1
  98. package/lib/Reactions/MessageReactions.js +11 -10
  99. package/lib/Reactions/MessageReactions.js.map +1 -1
  100. package/lib/Reactions/ReactionPicker.d.ts.map +1 -1
  101. package/lib/Reactions/ReactionPicker.js +5 -3
  102. package/lib/Reactions/ReactionPicker.js.map +1 -1
  103. package/lib/Send.d.ts +2 -2
  104. package/lib/Send.d.ts.map +1 -1
  105. package/lib/Send.js +37 -37
  106. package/lib/Send.js.map +1 -1
  107. package/lib/SystemMessage.d.ts.map +1 -1
  108. package/lib/SystemMessage.js +8 -5
  109. package/lib/SystemMessage.js.map +1 -1
  110. package/lib/Theme.d.ts +148 -0
  111. package/lib/Theme.d.ts.map +1 -0
  112. package/lib/Theme.js +142 -0
  113. package/lib/Theme.js.map +1 -0
  114. package/lib/Time.d.ts.map +1 -1
  115. package/lib/Time.js +7 -5
  116. package/lib/Time.js.map +1 -1
  117. package/lib/TypingIndicator/index.d.ts.map +1 -1
  118. package/lib/TypingIndicator/index.js +4 -1
  119. package/lib/TypingIndicator/index.js.map +1 -1
  120. package/lib/TypingIndicator/styles.d.ts +2 -2
  121. package/lib/TypingIndicator/styles.d.ts.map +1 -1
  122. package/lib/TypingIndicator/styles.js +4 -5
  123. package/lib/TypingIndicator/styles.js.map +1 -1
  124. package/lib/components/AttachmentSheet.d.ts +28 -0
  125. package/lib/components/AttachmentSheet.d.ts.map +1 -0
  126. package/lib/components/AttachmentSheet.js +177 -0
  127. package/lib/components/AttachmentSheet.js.map +1 -0
  128. package/lib/components/BasicMarkdown.d.ts +12 -0
  129. package/lib/components/BasicMarkdown.d.ts.map +1 -0
  130. package/lib/components/BasicMarkdown.js +220 -0
  131. package/lib/components/BasicMarkdown.js.map +1 -0
  132. package/lib/components/ContextMenu.d.ts +25 -0
  133. package/lib/components/ContextMenu.d.ts.map +1 -0
  134. package/lib/components/ContextMenu.js +122 -0
  135. package/lib/components/ContextMenu.js.map +1 -0
  136. package/lib/components/Icon.d.ts +17 -0
  137. package/lib/components/Icon.d.ts.map +1 -0
  138. package/lib/components/Icon.js +19 -0
  139. package/lib/components/Icon.js.map +1 -0
  140. package/lib/components/LucideIcon.d.ts +10 -0
  141. package/lib/components/LucideIcon.d.ts.map +1 -0
  142. package/lib/components/LucideIcon.js +118 -0
  143. package/lib/components/LucideIcon.js.map +1 -0
  144. package/lib/components/MarkdownMessageText.d.ts +19 -0
  145. package/lib/components/MarkdownMessageText.d.ts.map +1 -0
  146. package/lib/components/MarkdownMessageText.js +35 -0
  147. package/lib/components/MarkdownMessageText.js.map +1 -0
  148. package/lib/components/MediaCard.d.ts +19 -0
  149. package/lib/components/MediaCard.d.ts.map +1 -0
  150. package/lib/components/MediaCard.js +102 -0
  151. package/lib/components/MediaCard.js.map +1 -0
  152. package/lib/components/MediaControls.d.ts +41 -0
  153. package/lib/components/MediaControls.d.ts.map +1 -0
  154. package/lib/components/MediaControls.js +523 -0
  155. package/lib/components/MediaControls.js.map +1 -0
  156. package/lib/components/MessageReply.d.ts.map +1 -1
  157. package/lib/components/MessageReply.js +11 -9
  158. package/lib/components/MessageReply.js.map +1 -1
  159. package/lib/components/ReplyPreview.d.ts +3 -1
  160. package/lib/components/ReplyPreview.d.ts.map +1 -1
  161. package/lib/components/ReplyPreview.js +36 -36
  162. package/lib/components/ReplyPreview.js.map +1 -1
  163. package/lib/components/SendIcon.d.ts +13 -0
  164. package/lib/components/SendIcon.d.ts.map +1 -0
  165. package/lib/components/SendIcon.js +37 -0
  166. package/lib/components/SendIcon.js.map +1 -0
  167. package/lib/components/Ticks.d.ts +25 -0
  168. package/lib/components/Ticks.d.ts.map +1 -0
  169. package/lib/components/Ticks.js +102 -0
  170. package/lib/components/Ticks.js.map +1 -0
  171. package/lib/components/VideoNoteOverlay.d.ts +25 -0
  172. package/lib/components/VideoNoteOverlay.d.ts.map +1 -0
  173. package/lib/components/VideoNoteOverlay.js +151 -0
  174. package/lib/components/VideoNoteOverlay.js.map +1 -0
  175. package/lib/components/VideoNoteRecorder.d.ts +19 -0
  176. package/lib/components/VideoNoteRecorder.d.ts.map +1 -0
  177. package/lib/components/VideoNoteRecorder.js +634 -0
  178. package/lib/components/VideoNoteRecorder.js.map +1 -0
  179. package/lib/components/VideoRecordButton.d.ts +29 -0
  180. package/lib/components/VideoRecordButton.d.ts.map +1 -0
  181. package/lib/components/VideoRecordButton.js +117 -0
  182. package/lib/components/VideoRecordButton.js.map +1 -0
  183. package/lib/components/VoiceMessageInput.d.ts +33 -0
  184. package/lib/components/VoiceMessageInput.d.ts.map +1 -0
  185. package/lib/components/VoiceMessageInput.js +396 -0
  186. package/lib/components/VoiceMessageInput.js.map +1 -0
  187. package/lib/components/WaveformPlayer.d.ts +19 -0
  188. package/lib/components/WaveformPlayer.d.ts.map +1 -0
  189. package/lib/components/WaveformPlayer.js +367 -0
  190. package/lib/components/WaveformPlayer.js.map +1 -0
  191. package/lib/components/mediaPalette.d.ts +23 -0
  192. package/lib/components/mediaPalette.d.ts.map +1 -0
  193. package/lib/components/mediaPalette.js +16 -0
  194. package/lib/components/mediaPalette.js.map +1 -0
  195. package/lib/components/mediaPlayback.d.ts +22 -0
  196. package/lib/components/mediaPlayback.d.ts.map +1 -0
  197. package/lib/components/mediaPlayback.js +34 -0
  198. package/lib/components/mediaPlayback.js.map +1 -0
  199. package/lib/hooks/useColorScheme.d.ts +9 -2
  200. package/lib/hooks/useColorScheme.d.ts.map +1 -1
  201. package/lib/hooks/useColorScheme.js +9 -3
  202. package/lib/hooks/useColorScheme.js.map +1 -1
  203. package/lib/hooks/useIcons.d.ts +4 -0
  204. package/lib/hooks/useIcons.d.ts.map +1 -0
  205. package/lib/hooks/useIcons.js +8 -0
  206. package/lib/hooks/useIcons.js.map +1 -0
  207. package/lib/hooks/useKeyboardVerticalOffset.d.ts +17 -8
  208. package/lib/hooks/useKeyboardVerticalOffset.d.ts.map +1 -1
  209. package/lib/hooks/useKeyboardVerticalOffset.js +29 -8
  210. package/lib/hooks/useKeyboardVerticalOffset.js.map +1 -1
  211. package/lib/hooks/useLabels.d.ts +4 -0
  212. package/lib/hooks/useLabels.d.ts.map +1 -0
  213. package/lib/hooks/useLabels.js +8 -0
  214. package/lib/hooks/useLabels.js.map +1 -0
  215. package/lib/hooks/useTheme.d.ts +21 -0
  216. package/lib/hooks/useTheme.d.ts.map +1 -0
  217. package/lib/hooks/useTheme.js +32 -0
  218. package/lib/hooks/useTheme.js.map +1 -0
  219. package/lib/i18n.d.ts +59 -0
  220. package/lib/i18n.d.ts.map +1 -0
  221. package/lib/i18n.js +122 -0
  222. package/lib/i18n.js.map +1 -0
  223. package/lib/index.d.ts +17 -0
  224. package/lib/index.d.ts.map +1 -1
  225. package/lib/index.js +17 -0
  226. package/lib/index.js.map +1 -1
  227. package/lib/types.d.ts +2 -1
  228. package/lib/types.d.ts.map +1 -1
  229. package/package.json +99 -44
  230. package/lib/MessageReply.d.ts +0 -15
  231. package/lib/MessageReply.d.ts.map +0 -1
  232. package/lib/MessageReply.js +0 -102
  233. package/lib/MessageReply.js.map +0 -1
  234. package/lib/ReplyPreview.d.ts +0 -14
  235. package/lib/ReplyPreview.d.ts.map +0 -1
  236. package/lib/ReplyPreview.js +0 -94
  237. package/lib/ReplyPreview.js.map +0 -1
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;AAGpD,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,qBAuSnC"}
@@ -1,24 +1,33 @@
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 { useLabels } from './hooks/useLabels';
13
+ import { useThemedStyles } from './hooks/useTheme';
8
14
  import { Send } from './Send';
9
15
  import { renderComponentOrElement } from './utils';
10
16
  export function InputToolbar(props) {
11
17
  const { renderActions, onPressActionButton, renderComposer, renderSend, renderAccessory, actions, actionSheetOptionTintColor, icon, wrapperStyle, containerStyle, replyMessage, onClearReply, renderReplyPreview: renderReplyPreviewProp, replyPreviewContainerStyle, replyPreviewTextStyle, } = props;
12
- const colorScheme = useColorScheme();
18
+ const styles = useThemedStyles(createStyles);
19
+ const insets = useSafeAreaInsets();
13
20
  const containerStyles = useMemo(() => [
14
21
  styles.container,
15
- colorScheme === 'dark' && styles.container_dark,
22
+ // Pad for the home indicator so the field doesn't kiss it (no-op when the
23
+ // keyboard covers the inset).
24
+ { paddingBottom: insets.bottom },
16
25
  containerStyle,
17
- ], [colorScheme, containerStyle]);
26
+ ], [styles, insets.bottom, containerStyle]);
18
27
  const primaryStyles = useMemo(() => [
19
28
  styles.primary,
20
29
  props.primaryStyle,
21
- ], [props.primaryStyle]);
30
+ ], [styles, props.primaryStyle]);
22
31
  const actionsFragment = useMemo(() => {
23
32
  const actionsProps = {
24
33
  onPressActionButton,
@@ -30,7 +39,7 @@ export function InputToolbar(props) {
30
39
  };
31
40
  if (renderActions)
32
41
  return renderComponentOrElement(renderActions, actionsProps);
33
- if (onPressActionButton)
42
+ if (onPressActionButton || actions?.length)
34
43
  return <Actions {...actionsProps}/>;
35
44
  return null;
36
45
  }, [
@@ -42,6 +51,14 @@ export function InputToolbar(props) {
42
51
  wrapperStyle,
43
52
  containerStyle,
44
53
  ]);
54
+ const emojiFragment = useMemo(() => {
55
+ if (!props.onPressEmoji)
56
+ return null;
57
+ const size = styles.insetColor.fontSize;
58
+ return (<Pressable onPress={props.onPressEmoji} hitSlop={8} accessibilityRole='button' accessibilityLabel='emoji' style={styles.inset}>
59
+ <Icon name='emoji' color={styles.insetColor.color} size={size} fallback={<EmojiIcon color={styles.insetColor.color} size={size}/>}/>
60
+ </Pressable>);
61
+ }, [props.onPressEmoji, styles]);
45
62
  const composerFragment = useMemo(() => {
46
63
  const composerProps = props;
47
64
  if (renderComposer)
@@ -53,6 +70,72 @@ export function InputToolbar(props) {
53
70
  return renderComponentOrElement(renderSend, props);
54
71
  return <Send {...props}/>;
55
72
  }, [renderSend, props]);
73
+ // onSend is forwarded from Chat at runtime; it isn't part of the public
74
+ // InputToolbarProps surface, so read it through a typed cast.
75
+ const onSend = props.onSend;
76
+ const labels = useLabels();
77
+ // Recording state is owned by VoiceMessageInput (it holds the recorder + the
78
+ // gesture); it reports up here so the bar - timer on the left, pulsating
79
+ // "slide to cancel" hint across the field - can span the full input row.
80
+ const [voiceState, setVoiceState] = useState({
81
+ active: false, locked: false, elapsed: 0, cancelArmed: false, levels: [],
82
+ });
83
+ const voiceRef = useRef(null);
84
+ const recPulse = useSharedValue(0);
85
+ useEffect(() => {
86
+ if (voiceState.active) {
87
+ recPulse.value = withRepeat(withTiming(1, { duration: 750, easing: Easing.inOut(Easing.quad), reduceMotion: ReduceMotion.System }), -1, true);
88
+ }
89
+ else {
90
+ cancelAnimation(recPulse);
91
+ recPulse.value = 0;
92
+ }
93
+ }, [voiceState.active, recPulse]);
94
+ const recDotStyle = useAnimatedStyle(() => ({
95
+ opacity: interpolate(recPulse.value, [0, 1], [1, 0.25]),
96
+ }));
97
+ const recHintStyle = useAnimatedStyle(() => ({
98
+ opacity: interpolate(recPulse.value, [0, 1], [1, 0.5]),
99
+ }));
100
+ // Telegram-style swap: mic when the composer is empty and voice recording is
101
+ // enabled/available, otherwise the send button.
102
+ const hasText = !!props.text?.trim();
103
+ const showVoice = !!props.audioRecording?.isEnabled &&
104
+ isVoiceRecordingAvailable &&
105
+ !hasText &&
106
+ !props.isSendButtonAlwaysVisible;
107
+ const showVideo = !!props.videoRecording?.isEnabled && isVideoRecordingAvailable;
108
+ // Telegram shares one right-slot control between voice and video: a single tap
109
+ // switches which one it is, a hold records. Only offered when both are
110
+ // available - with just one, that control has nothing to toggle to.
111
+ const [recordMode, setRecordMode] = useState('voice');
112
+ const canToggleMode = showVoice && showVideo;
113
+ const toggleRecordMode = useCallback(() => {
114
+ setRecordMode(current => (current === 'voice' ? 'video' : 'voice'));
115
+ }, []);
116
+ const rightControl = useMemo(() => {
117
+ if (showVoice && !(canToggleMode && recordMode === 'video'))
118
+ return (<VoiceMessageInput ref={voiceRef} config={props.audioRecording} onSend={onSend} onStateChange={setVoiceState} onTap={canToggleMode ? toggleRecordMode : undefined}/>);
119
+ if (canToggleMode && recordMode === 'video')
120
+ return (<VideoRecordButton config={props.videoRecording} onSend={onSend} onTap={toggleRecordMode} variant='round'/>);
121
+ return sendFragment;
122
+ }, [
123
+ showVoice,
124
+ canToggleMode,
125
+ recordMode,
126
+ toggleRecordMode,
127
+ props.audioRecording,
128
+ props.videoRecording,
129
+ onSend,
130
+ sendFragment,
131
+ ]);
132
+ // Inset camera button inside the field. Dropped once the right-slot control
133
+ // can toggle to video, so there is only ever one camera entry point.
134
+ const videoFragment = useMemo(() => {
135
+ if (!showVideo || canToggleMode)
136
+ return null;
137
+ return <VideoRecordButton config={props.videoRecording} onSend={onSend}/>;
138
+ }, [showVideo, canToggleMode, props.videoRecording, onSend]);
56
139
  const accessoryFragment = useMemo(() => {
57
140
  if (!renderAccessory)
58
141
  return null;
@@ -83,26 +166,147 @@ export function InputToolbar(props) {
83
166
  return (<View style={containerStyles}>
84
167
  {replyPreviewFragment}
85
168
  <View style={primaryStyles}>
86
- {actionsFragment}
87
- {composerFragment}
88
- {sendFragment}
169
+ {voiceState.active
170
+ ? (<View style={styles.recordingBar}>
171
+ <Animated.View style={[styles.recDot, recDotStyle]}/>
172
+ <Text style={styles.recTimer}>{formatElapsed(voiceState.elapsed)}</Text>
173
+ {voiceState.locked
174
+ ? (
175
+ // Locked: Telegram shows a trash target and a live waveform in
176
+ // place of the slide-to-cancel hint, with send on the right.
177
+ <>
178
+ <Pressable style={styles.recTrash} hitSlop={8} onPress={() => voiceRef.current?.cancel()} accessibilityRole='button' accessibilityLabel='delete recording'>
179
+ <Icon name='trash' color={styles.recTrashColor.color} size={20} fallback={<TrashIcon color={styles.recTrashColor.color} size={20}/>}/>
180
+ </Pressable>
181
+ <View style={styles.recLevels}>
182
+ {voiceState.levels.map((level, index) => (<View key={index} style={[
183
+ styles.recLevelBar,
184
+ // Per-sample runtime height, so it stays inline.
185
+ { height: 2 + level * 18 },
186
+ ]}/>))}
187
+ </View>
188
+ </>)
189
+ : (<Animated.View style={[styles.recHintWrap, recHintStyle]} pointerEvents='none'>
190
+ <ChevronIcon color={styles.recHintColor.color} size={14} direction='left'/>
191
+ <Text style={[styles.recHint, voiceState.cancelArmed && styles.recHintArmed]}>
192
+ {labels.slideToCancel}
193
+ </Text>
194
+ </Animated.View>)}
195
+ </View>)
196
+ : (<View style={styles.fieldGroup}>
197
+ {emojiFragment}
198
+ {composerFragment}
199
+ {actionsFragment}
200
+ {videoFragment}
201
+ </View>)}
202
+ {rightControl}
89
203
  </View>
90
204
  {accessoryFragment}
91
205
  </View>);
92
206
  }
93
- const styles = StyleSheet.create({
207
+ const createStyles = (theme) => StyleSheet.create({
94
208
  container: {
95
209
  borderTopWidth: StyleSheet.hairlineWidth,
96
- borderTopColor: Color.defaultColor,
97
- backgroundColor: Color.white,
98
- },
99
- container_dark: {
100
- backgroundColor: '#1a1a1a',
101
- borderTopColor: '#444',
210
+ backgroundColor: theme.colors.inputBarBackground,
211
+ borderTopColor: theme.colors.separator,
102
212
  },
103
213
  primary: {
104
214
  flexDirection: 'row',
105
215
  alignItems: 'flex-end',
216
+ paddingVertical: 8,
217
+ paddingHorizontal: theme.spacing.screenEdge,
218
+ gap: theme.spacing.screenEdge,
219
+ // positioned parent for the voice recorder's overlay bar
220
+ position: 'relative',
221
+ },
222
+ // While recording, the field is replaced by a bar: a blinking red dot and the
223
+ // timer on the left, then the pulsating "slide to cancel" hint (or a Cancel
224
+ // button once locked). Sized like the field so the row height does not jump.
225
+ recordingBar: {
226
+ flex: 1,
227
+ flexDirection: 'row',
228
+ alignItems: 'center',
229
+ minHeight: theme.composer.minHeight,
230
+ paddingHorizontal: theme.composer.fieldPaddingH,
231
+ },
232
+ recDot: {
233
+ width: 9,
234
+ height: 9,
235
+ borderRadius: 5,
236
+ backgroundColor: theme.colors.error,
237
+ },
238
+ recTimer: {
239
+ marginLeft: 8,
240
+ fontSize: 15,
241
+ color: theme.colors.inputText,
242
+ fontVariant: ['tabular-nums'],
243
+ minWidth: 44,
244
+ },
245
+ recHintWrap: {
246
+ flex: 1,
247
+ flexDirection: 'row',
248
+ alignItems: 'center',
249
+ justifyContent: 'center',
250
+ gap: 4,
251
+ },
252
+ recHint: {
253
+ fontSize: 14,
254
+ color: theme.colors.placeholder,
255
+ },
256
+ recHintArmed: {
257
+ color: theme.colors.error,
258
+ },
259
+ // Carries the chevron color through the StyleSheet so it stays themed.
260
+ recHintColor: {
261
+ color: theme.colors.placeholder,
262
+ },
263
+ // Locked state: a real delete target (44pt) instead of a text link.
264
+ recTrash: {
265
+ width: 44,
266
+ height: 44,
267
+ alignItems: 'center',
268
+ justifyContent: 'center',
269
+ },
270
+ recTrashColor: {
271
+ color: theme.colors.error,
272
+ },
273
+ // Live mic amplitudes, newest on the right - Telegram's locked-state waveform.
274
+ recLevels: {
275
+ flex: 1,
276
+ flexDirection: 'row',
277
+ alignItems: 'center',
278
+ justifyContent: 'flex-end',
279
+ height: 22,
280
+ gap: 1,
281
+ },
282
+ recLevelBar: {
283
+ width: 2,
284
+ borderRadius: 1,
285
+ backgroundColor: theme.colors.accent,
286
+ },
287
+ // The field is the bar: one rounded pill holding the inset controls + the
288
+ // text field. Only the send/mic button lives outside it.
289
+ fieldGroup: {
290
+ flex: 1,
291
+ flexDirection: 'row',
292
+ alignItems: 'flex-end',
293
+ minHeight: theme.composer.minHeight,
294
+ paddingHorizontal: theme.composer.fieldPaddingH,
295
+ gap: 6,
296
+ borderRadius: theme.radii.inputField,
297
+ backgroundColor: theme.colors.inputBackground,
298
+ borderWidth: StyleSheet.hairlineWidth,
299
+ borderColor: theme.colors.inputFieldBorder,
300
+ },
301
+ inset: {
302
+ alignItems: 'center',
303
+ justifyContent: 'center',
304
+ paddingBottom: 8,
305
+ },
306
+ // Carries inset icon color + size (kept out of JSX).
307
+ insetColor: {
308
+ color: theme.colors.incomingMeta,
309
+ fontSize: theme.composer.insetIconSize,
106
310
  },
107
311
  });
108
312
  //# 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":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAmC,MAAM,cAAc,CAAA;AACjG,OAAO,QAAQ,EAAE,EACf,MAAM,EACN,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,UAAU,GACX,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAElE,OAAO,EAAE,OAAO,EAAgB,MAAM,WAAW,CAAA;AAEjD,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,YAAY,EAAqB,MAAM,2BAA2B,CAAA;AAC3E,OAAO,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAC7F,OAAO,EACL,iBAAiB,EAIjB,aAAa,EACb,yBAAyB,GAC1B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAA;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD,OAAO,EAAE,IAAI,EAAa,MAAM,QAAQ,CAAA;AAExC,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAA;AAgDlD,MAAM,UAAU,YAAY,CAC1B,KAAkC;IAElC,MAAM,EACJ,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,UAAU,EACV,eAAe,EACf,OAAO,EACP,0BAA0B,EAC1B,IAAI,EACJ,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAAE,sBAAsB,EAC1C,0BAA0B,EAC1B,qBAAqB,GACtB,GAAG,KAAK,CAAA;IAET,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;IAC5C,MAAM,MAAM,GAAG,iBAAiB,EAAE,CAAA;IAElC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACpC,MAAM,CAAC,SAAS;QAChB,0EAA0E;QAC1E,8BAA8B;QAC9B,EAAE,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAChC,cAAc;KACf,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAA;IAE3C,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAClC,MAAM,CAAC,OAAO;QACd,KAAK,CAAC,YAAY;KACnB,EAAE,CAAC,MAAM,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAA;IAEhC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,MAAM,YAAY,GAAG;YACnB,mBAAmB;YACnB,OAAO;YACP,0BAA0B;YAC1B,IAAI;YACJ,YAAY;YACZ,cAAc;SACf,CAAA;QAED,IAAI,aAAa;YACf,OAAO,wBAAwB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAA;QAE9D,IAAI,mBAAmB,IAAI,OAAO,EAAE,MAAM;YACxC,OAAO,CAAC,OAAO,CAAC,IAAI,YAAY,CAAC,EAAG,CAAA;QAEtC,OAAO,IAAI,CAAA;IACb,CAAC,EAAE;QACD,aAAa;QACb,mBAAmB;QACnB,OAAO;QACP,0BAA0B;QAC1B,IAAI;QACJ,YAAY;QACZ,cAAc;KACf,CAAC,CAAA;IAEF,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,CAAC,KAAK,CAAC,YAAY;YACrB,OAAO,IAAI,CAAA;QAEb,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAA;QACvC,OAAO,CACL,CAAC,SAAS,CACR,OAAO,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAC5B,OAAO,CAAC,CAAC,CAAC,CAAC,CACX,iBAAiB,CAAC,QAAQ,CAC1B,kBAAkB,CAAC,OAAO,CAC1B,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAEpB;QAAA,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAG,CAAC,EACrI;MAAA,EAAE,SAAS,CAAC,CACb,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAA;IAEhC,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE;QACpC,MAAM,aAAa,GAAG,KAAsB,CAAA;QAE5C,IAAI,cAAc;YAChB,OAAO,wBAAwB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;QAEhE,OAAO,CAAC,QAAQ,CAAC,IAAI,aAAa,CAAC,EAAG,CAAA;IACxC,CAAC,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAA;IAE3B,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,IAAI,UAAU;YACZ,OAAO,wBAAwB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAEpD,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;IAC5B,CAAC,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAA;IAEvB,wEAAwE;IACxE,8DAA8D;IAC9D,MAAM,MAAM,GAAI,KAAuC,CAAC,MAAM,CAAA;IAE9D,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAE1B,6EAA6E;IAC7E,yEAAyE;IACzE,yEAAyE;IACzE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAsB;QAChE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;KACzE,CAAC,CAAA;IACF,MAAM,QAAQ,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAA;IACtD,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IAElC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACtB,QAAQ,CAAC,KAAK,GAAG,UAAU,CACzB,UAAU,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,EACtG,CAAC,CAAC,EACF,IAAI,CACL,CAAA;QACH,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,QAAQ,CAAC,CAAA;YACzB,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAA;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEjC,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;QAC1C,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;KACxD,CAAC,CAAC,CAAA;IACH,MAAM,YAAY,GAAG,gBAAgB,CAAC,GAAG,EAAE,CAAC,CAAC;QAC3C,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;KACvD,CAAC,CAAC,CAAA;IAEH,6EAA6E;IAC7E,gDAAgD;IAChD,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAA;IACpC,MAAM,SAAS,GACb,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS;QACjC,yBAAyB;QACzB,CAAC,OAAO;QACR,CAAC,KAAK,CAAC,yBAAyB,CAAA;IAElC,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,cAAc,EAAE,SAAS,IAAI,yBAAyB,CAAA;IAEhF,+EAA+E;IAC/E,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAoB,OAAO,CAAC,CAAA;IACxE,MAAM,aAAa,GAAG,SAAS,IAAI,SAAS,CAAA;IAE5C,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;IACrE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,IAAI,SAAS,IAAI,CAAC,CAAC,aAAa,IAAI,UAAU,KAAK,OAAO,CAAC;YACzD,OAAO,CACL,CAAC,iBAAiB,CAChB,GAAG,CAAC,CAAC,QAAQ,CAAC,CACd,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAC7B,MAAM,CAAC,CAAC,MAA0C,CAAC,CACnD,aAAa,CAAC,CAAC,aAAa,CAAC,CAC7B,KAAK,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,EACpD,CACH,CAAA;QAEH,IAAI,aAAa,IAAI,UAAU,KAAK,OAAO;YACzC,OAAO,CACL,CAAC,iBAAiB,CAChB,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAC7B,MAAM,CAAC,CAAC,MAAM,CAAC,CACf,KAAK,CAAC,CAAC,gBAAgB,CAAC,CACxB,OAAO,CAAC,OAAO,EACf,CACH,CAAA;QAEH,OAAO,YAAY,CAAA;IACrB,CAAC,EAAE;QACD,SAAS;QACT,aAAa;QACb,UAAU;QACV,gBAAgB;QAChB,KAAK,CAAC,cAAc;QACpB,KAAK,CAAC,cAAc;QACpB,MAAM;QACN,YAAY;KACb,CAAC,CAAA;IAEF,4EAA4E;IAC5E,qEAAqE;IACrE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE;QACjC,IAAI,CAAC,SAAS,IAAI,aAAa;YAC7B,OAAO,IAAI,CAAA;QAEb,OAAO,CAAC,iBAAiB,CAAW,MAAM,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,EAAG,CAAA;IACtF,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAA;IAE5D,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,EAAE;QACrC,IAAI,CAAC,eAAe;YAClB,OAAO,IAAI,CAAA;QAEb,OAAO,wBAAwB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAA;IACzD,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAA;IAE5B,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,EAAE;QACxC,YAAY,EAAE,EAAE,CAAA;IAClB,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAA;IAElB,MAAM,oBAAoB,GAAG,OAAO,CAAC,GAAG,EAAE;QACxC,IAAI,CAAC,YAAY;YACf,OAAO,IAAI,CAAA;QAEb,MAAM,iBAAiB,GAAsB;YAC3C,YAAY;YACZ,YAAY,EAAE,gBAAgB;YAC9B,cAAc,EAAE,0BAA0B;YAC1C,SAAS,EAAE,qBAAqB;SACjC,CAAA;QAED,IAAI,sBAAsB;YACxB,OAAO,wBAAwB,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAA;QAE5E,OAAO,CAAC,YAAY,CAAC,IAAI,iBAAiB,CAAC,EAAG,CAAA;IAChD,CAAC,EAAE;QACD,YAAY;QACZ,gBAAgB;QAChB,sBAAsB;QACtB,0BAA0B;QAC1B,qBAAqB;KACtB,CAAC,CAAA;IAEF,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAC3B;MAAA,CAAC,oBAAoB,CACrB;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,aAAa,CAAC,CACzB;QAAA,CAAC,UAAU,CAAC,MAAM;YAChB,CAAC,CAAC,CACA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAC/B;cAAA,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,EACnD;cAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CACvE;cAAA,CAAC,UAAU,CAAC,MAAM;oBAChB,CAAC,CAAC;oBACA,+DAA+D;oBAC/D,6DAA6D;oBAC7D,EACE;oBAAA,CAAC,SAAS,CACR,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CACvB,OAAO,CAAC,CAAC,CAAC,CAAC,CACX,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,CAC1C,iBAAiB,CAAC,QAAQ,CAC1B,kBAAkB,CAAC,kBAAkB,CAErC;sBAAA,CAAC,IAAI,CACH,IAAI,CAAC,OAAO,CACZ,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAClC,IAAI,CAAC,CAAC,EAAE,CAAC,CACT,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,EAEzE;oBAAA,EAAE,SAAS,CACX;oBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC5B;sBAAA,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACvC,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,CAAC,CACX,KAAK,CAAC,CAAC;gCACL,MAAM,CAAC,WAAW;gCAClB,iDAAiD;gCACjD,EAAE,MAAM,EAAE,CAAC,GAAG,KAAK,GAAG,EAAE,EAAE;6BAC3B,CAAC,EACF,CACH,CAAC,CACJ;oBAAA,EAAE,IAAI,CACR;kBAAA,GAAG,CACJ;oBACD,CAAC,CAAC,CACA,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAC5E;oBAAA,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,EACzE;oBAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,CAAC,CAAC,CAC3E;sBAAA,CAAC,MAAM,CAAC,aAAa,CACvB;oBAAA,EAAE,IAAI,CACR;kBAAA,EAAE,QAAQ,CAAC,IAAI,CAAC,CACjB,CACL;YAAA,EAAE,IAAI,CAAC,CACR;YACD,CAAC,CAAC,CACA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAC7B;cAAA,CAAC,aAAa,CACd;cAAA,CAAC,gBAAgB,CACjB;cAAA,CAAC,eAAe,CAChB;cAAA,CAAC,aAAa,CAChB;YAAA,EAAE,IAAI,CAAC,CACR,CACH;QAAA,CAAC,YAAY,CACf;MAAA,EAAE,IAAI,CACN;MAAA,CAAC,iBAAiB,CACpB;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC;AAED,MAAM,YAAY,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;IAC3D,SAAS,EAAE;QACT,cAAc,EAAE,UAAU,CAAC,aAAa;QACxC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,kBAAkB;QAChD,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS;KACvC;IACD,OAAO,EAAE;QACP,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,UAAU;QACtB,eAAe,EAAE,CAAC;QAClB,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;QAC3C,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,UAAU;QAC7B,yDAAyD;QACzD,QAAQ,EAAE,UAAU;KACrB;IACD,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,YAAY,EAAE;QACZ,IAAI,EAAE,CAAC;QACP,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS;QACnC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa;KAChD;IACD,MAAM,EAAE;QACN,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;KACpC;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,CAAC;QACb,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS;QAC7B,WAAW,EAAE,CAAC,cAAc,CAAC;QAC7B,QAAQ,EAAE,EAAE;KACb;IACD,WAAW,EAAE;QACX,IAAI,EAAE,CAAC;QACP,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,GAAG,EAAE,CAAC;KACP;IACD,OAAO,EAAE;QACP,QAAQ,EAAE,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;KAChC;IACD,YAAY,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;KAC1B;IACD,uEAAuE;IACvE,YAAY,EAAE;QACZ,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,WAAW;KAChC;IACD,oEAAoE;IACpE,QAAQ,EAAE;QACR,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;KACzB;IACD,aAAa,EAAE;QACb,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK;KAC1B;IACD,+EAA+E;IAC/E,SAAS,EAAE;QACT,IAAI,EAAE,CAAC;QACP,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,UAAU;QAC1B,MAAM,EAAE,EAAE;QACV,GAAG,EAAE,CAAC;KACP;IACD,WAAW,EAAE;QACX,KAAK,EAAE,CAAC;QACR,YAAY,EAAE,CAAC;QACf,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;KACrC;IACD,0EAA0E;IAC1E,yDAAyD;IACzD,UAAU,EAAE;QACV,IAAI,EAAE,CAAC;QACP,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,UAAU;QACtB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS;QACnC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa;QAC/C,GAAG,EAAE,CAAC;QACN,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU;QACpC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,eAAe;QAC7C,WAAW,EAAE,UAAU,CAAC,aAAa;QACrC,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC,gBAAgB;KAC3C;IACD,KAAK,EAAE;QACL,UAAU,EAAE,QAAQ;QACpB,cAAc,EAAE,QAAQ;QACxB,aAAa,EAAE,CAAC;KACjB;IACD,qDAAqD;IACrD,UAAU,EAAE;QACV,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;QAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,aAAa;KACvC;CACF,CAAC,CAAA"}
@@ -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;AAQ3D,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAOpC,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,6BA2K1F,CAAA"}
@@ -4,13 +4,14 @@ import ReanimatedSwipeable from 'react-native-gesture-handler/ReanimatedSwipeabl
4
4
  import Animated, { useAnimatedStyle } from 'react-native-reanimated';
5
5
  import { Avatar } from '../Avatar';
6
6
  import { Bubble } from '../Bubble';
7
- import { Color } from '../Color';
7
+ import { useTheme, useThemedStyles } from '../hooks/useTheme';
8
8
  import { getStyleWithPosition } from '../styles';
9
9
  import { SystemMessage } from '../SystemMessage';
10
10
  import { isSameUser, renderComponentOrElement } from '../utils';
11
11
  import styles from './styles';
12
12
  export * from './types';
13
13
  const ReplyIcon = ({ progress, direction, position, style }) => {
14
+ const localStyles = useThemedStyles(createLocalStyles);
14
15
  const animatedStyle = useAnimatedStyle(() => {
15
16
  'worklet';
16
17
  const scale = Math.min(progress.value, 1);
@@ -42,6 +43,7 @@ export const Message = (props) => {
42
43
  const onSwipeToReply = swipeToReply?.onSwipe;
43
44
  const renderSwipeToReplyActionProp = swipeToReply?.renderAction;
44
45
  const swipeToReplyActionContainerStyle = swipeToReply?.actionContainerStyle;
46
+ const theme = useTheme();
45
47
  const swipeableRef = useRef(null);
46
48
  const renderBubble = useCallback(() => {
47
49
  const {
@@ -101,8 +103,7 @@ export const Message = (props) => {
101
103
  return renderSystemMessage();
102
104
  return (<View style={[
103
105
  getStyleWithPosition(styles, 'container', position),
104
- { marginBottom: sameUser ? 2 : 10 },
105
- !props.isInverted && { marginBottom: 2 },
106
+ { marginBottom: sameUser ? theme.spacing.withinGroup : theme.spacing.betweenGroups },
106
107
  containerStyle?.[position],
107
108
  ]}>
108
109
  {position === 'left' && renderAvatar()}
@@ -114,7 +115,7 @@ export const Message = (props) => {
114
115
  renderSystemMessage,
115
116
  position,
116
117
  sameUser,
117
- props.isInverted,
118
+ theme,
118
119
  containerStyle,
119
120
  renderAvatar,
120
121
  renderBubble,
@@ -132,7 +133,7 @@ export const Message = (props) => {
132
133
  </ReanimatedSwipeable>
133
134
  </View>);
134
135
  };
135
- const localStyles = StyleSheet.create({
136
+ const createLocalStyles = (theme) => StyleSheet.create({
136
137
  swipeActionContainer: {
137
138
  width: 40,
138
139
  justifyContent: 'center',
@@ -142,7 +143,7 @@ const localStyles = StyleSheet.create({
142
143
  width: 28,
143
144
  height: 28,
144
145
  borderRadius: 14,
145
- backgroundColor: Color.defaultBlue,
146
+ backgroundColor: theme.colors.accent,
146
147
  justifyContent: 'center',
147
148
  alignItems: 'center',
148
149
  },
@@ -162,7 +163,7 @@ const localStyles = StyleSheet.create({
162
163
  borderBottomWidth: 5,
163
164
  borderBottomColor: 'transparent',
164
165
  borderRightWidth: 6,
165
- borderRightColor: Color.white,
166
+ borderRightColor: '#fff',
166
167
  },
167
168
  replyIconLine: {
168
169
  position: 'absolute',
@@ -172,8 +173,8 @@ const localStyles = StyleSheet.create({
172
173
  height: 4,
173
174
  borderTopWidth: 2,
174
175
  borderRightWidth: 2,
175
- borderTopColor: Color.white,
176
- borderRightColor: Color.white,
176
+ borderTopColor: '#fff',
177
+ borderRightColor: '#fff',
177
178
  borderTopRightRadius: 4,
178
179
  },
179
180
  });