@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceMessageInput.js","sourceRoot":"","sources":["../../src/components/VoiceMessageInput.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ export declare const isWaveformAvailable: boolean;
3
+ export interface WaveformPlayerProps {
4
+ uri: string;
5
+ position?: 'left' | 'right';
6
+ /**
7
+ * Length in seconds from the message, shown before the file has decoded so a
8
+ * note is labelled immediately instead of reading 0:00.
9
+ */
10
+ duration?: number;
11
+ }
12
+ /**
13
+ * Telegram-style voice note: a decoded waveform with a play/pause control, a
14
+ * progress cursor, drag-to-scrub and a playback-speed pill. Powered by
15
+ * react-native-audio-api (decode + playback). Falls back to a tappable MediaCard
16
+ * if decoding fails. Only mounted when audio-api is available.
17
+ */
18
+ export declare function WaveformPlayer({ uri, position, duration: durationProp }: WaveformPlayerProps): React.JSX.Element;
19
+ //# sourceMappingURL=WaveformPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaveformPlayer.d.ts","sourceRoot":"","sources":["../../src/components/WaveformPlayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmE,MAAM,OAAO,CAAA;AAsBvF,eAAO,MAAM,mBAAmB,SAA2B,CAAA;AAa3D,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AA0BD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAE,EAAE,GAAG,EAAE,QAAiB,EAAE,QAAQ,EAAE,YAAY,EAAE,EAAE,mBAAmB,qBA0StG"}
@@ -0,0 +1,367 @@
1
+ import React, { useCallback, useEffect, useId, useMemo, useRef, useState } from 'react';
2
+ import { Pressable, StyleSheet, Text, View } from 'react-native';
3
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler';
4
+ import { runOnJS } from 'react-native-reanimated';
5
+ import { useThemedStyles } from '../hooks/useTheme';
6
+ import { Icon } from './Icon';
7
+ import { MediaCard } from './MediaCard';
8
+ import { PauseIcon, PlayIcon } from './MediaControls';
9
+ import { getMediaPalette } from './mediaPalette';
10
+ import { claimPlayback, releasePlayback } from './mediaPlayback';
11
+ // Optional waveform engine. Resolved through a try/catch require so the bundle
12
+ // works whether or not the consumer installed `react-native-audio-api`.
13
+ let audioApi = null;
14
+ try {
15
+ audioApi = require('react-native-audio-api');
16
+ }
17
+ catch {
18
+ audioApi = null;
19
+ }
20
+ export const isWaveformAvailable = !!audioApi?.AudioContext;
21
+ // Bar geometry. The count is derived from the measured track width so the bars
22
+ // always fit: a fixed count with a min bar width overflowed its row and pushed
23
+ // the bubble past its max width.
24
+ const BAR_WIDTH = 2;
25
+ const BAR_GAP = 1;
26
+ const BAR_MIN_HEIGHT = 3;
27
+ const BAR_MAX_HEIGHT = 22;
28
+ const FALLBACK_BAR_COUNT = 32;
29
+ /** Telegram cycles through these on the speed pill. */
30
+ const SPEED_STEPS = [1, 1.5, 2];
31
+ const formatTime = (seconds) => {
32
+ if (!Number.isFinite(seconds) || seconds < 0)
33
+ seconds = 0;
34
+ const mins = Math.floor(seconds / 60);
35
+ const secs = Math.floor(seconds % 60);
36
+ return `${mins}:${secs.toString().padStart(2, '0')}`;
37
+ };
38
+ const downsample = (data, buckets) => {
39
+ const block = Math.floor(data.length / buckets) || 1;
40
+ const out = [];
41
+ for (let i = 0; i < buckets; i++) {
42
+ let sum = 0;
43
+ for (let j = 0; j < block; j++) {
44
+ const v = data[i * block + j] || 0;
45
+ sum += v * v;
46
+ }
47
+ out.push(Math.sqrt(sum / block));
48
+ }
49
+ const max = Math.max(...out, 0.0001);
50
+ return out.map(v => Math.max(0.08, v / max));
51
+ };
52
+ /**
53
+ * Telegram-style voice note: a decoded waveform with a play/pause control, a
54
+ * progress cursor, drag-to-scrub and a playback-speed pill. Powered by
55
+ * react-native-audio-api (decode + playback). Falls back to a tappable MediaCard
56
+ * if decoding fails. Only mounted when audio-api is available.
57
+ */
58
+ export function WaveformPlayer({ uri, position = 'left', duration: durationProp }) {
59
+ const styles = useThemedStyles(position === 'right' ? createRightStyles : createLeftStyles);
60
+ const playerId = useId();
61
+ const [bars, setBars] = useState([]);
62
+ const [failed, setFailed] = useState(false);
63
+ const [isLoading, setIsLoading] = useState(true);
64
+ const [isPlaying, setIsPlaying] = useState(false);
65
+ const [progress, setProgress] = useState(0);
66
+ const [rate, setRate] = useState(1);
67
+ const [trackWidth, setTrackWidth] = useState(0);
68
+ const ctxRef = useRef(null);
69
+ const bufferRef = useRef(null);
70
+ const sourceRef = useRef(null);
71
+ const startedAtRef = useRef(0);
72
+ const rafRef = useRef(null);
73
+ const durationRef = useRef(durationProp ?? 0);
74
+ const rateRef = useRef(1);
75
+ // Latest progress, readable from callbacks that must not re-subscribe on
76
+ // every frame (the scrub gesture and the resume offset).
77
+ const progressRef = useRef(0);
78
+ progressRef.current = progress;
79
+ const barCount = trackWidth > 0
80
+ ? Math.max(8, Math.floor(trackWidth / (BAR_WIDTH + BAR_GAP)))
81
+ : FALLBACK_BAR_COUNT;
82
+ const stopRaf = useCallback(() => {
83
+ if (rafRef.current != null) {
84
+ cancelAnimationFrame(rafRef.current);
85
+ rafRef.current = null;
86
+ }
87
+ }, []);
88
+ useEffect(() => {
89
+ let cancelled = false;
90
+ const ctx = new audioApi.AudioContext();
91
+ ctxRef.current = ctx;
92
+ (async () => {
93
+ try {
94
+ // `decodeAudioData(uri)` is the current API; `decodeAudioDataSource` was
95
+ // its name in older react-native-audio-api releases and no longer exists
96
+ // in 0.13+, where calling it silently degraded every voice note to the
97
+ // MediaCard fallback. Support both so either version works.
98
+ const decode = typeof ctx.decodeAudioData === 'function'
99
+ ? (source) => ctx.decodeAudioData(source)
100
+ : (source) => ctx.decodeAudioDataSource(source);
101
+ const buffer = await decode(uri);
102
+ if (cancelled)
103
+ return;
104
+ bufferRef.current = buffer;
105
+ durationRef.current = buffer.duration ?? durationProp ?? 0;
106
+ setBars(downsample(buffer.getChannelData(0), barCount));
107
+ setIsLoading(false);
108
+ }
109
+ catch {
110
+ if (!cancelled) {
111
+ setFailed(true);
112
+ setIsLoading(false);
113
+ }
114
+ }
115
+ })();
116
+ return () => {
117
+ cancelled = true;
118
+ stopRaf();
119
+ releasePlayback(playerId);
120
+ try {
121
+ sourceRef.current?.stop?.();
122
+ }
123
+ catch {
124
+ // already stopped
125
+ }
126
+ try {
127
+ ctx.close?.();
128
+ }
129
+ catch {
130
+ // noop
131
+ }
132
+ };
133
+ // `barCount` intentionally omitted: it settles on first layout, and
134
+ // re-decoding the file on a width change would be wasteful. The bar list is
135
+ // re-bucketed separately below.
136
+ // eslint-disable-next-line react-hooks/exhaustive-deps
137
+ }, [uri, stopRaf, playerId, durationProp]);
138
+ // Re-bucket an already-decoded waveform when the measured width changes.
139
+ useEffect(() => {
140
+ const buffer = bufferRef.current;
141
+ if (!buffer || trackWidth <= 0)
142
+ return;
143
+ setBars(downsample(buffer.getChannelData(0), barCount));
144
+ }, [barCount, trackWidth]);
145
+ const tick = useCallback(() => {
146
+ const ctx = ctxRef.current;
147
+ const duration = durationRef.current;
148
+ if (!ctx || duration <= 0)
149
+ return;
150
+ const elapsed = (ctx.currentTime - startedAtRef.current) * rateRef.current;
151
+ const next = Math.min(1, elapsed / duration);
152
+ setProgress(next);
153
+ if (next >= 1) {
154
+ setIsPlaying(false);
155
+ setProgress(0);
156
+ stopRaf();
157
+ return;
158
+ }
159
+ rafRef.current = requestAnimationFrame(tick);
160
+ }, [stopRaf]);
161
+ const stopSource = useCallback(() => {
162
+ try {
163
+ sourceRef.current?.stop?.();
164
+ }
165
+ catch {
166
+ // already stopped
167
+ }
168
+ sourceRef.current = null;
169
+ stopRaf();
170
+ setIsPlaying(false);
171
+ }, [stopRaf]);
172
+ const playFrom = useCallback((fraction) => {
173
+ const ctx = ctxRef.current;
174
+ const buffer = bufferRef.current;
175
+ if (!ctx || !buffer)
176
+ return;
177
+ try {
178
+ // Replace any source already running (a scrub mid-playback).
179
+ try {
180
+ sourceRef.current?.stop?.();
181
+ }
182
+ catch {
183
+ // already stopped
184
+ }
185
+ sourceRef.current = null;
186
+ const source = ctx.createBufferSource();
187
+ source.buffer = buffer;
188
+ if (source.playbackRate)
189
+ source.playbackRate.value = rateRef.current;
190
+ source.connect(ctx.destination);
191
+ // `stop()` also fires `ended`, so a pause or a scrub would otherwise run
192
+ // the completion handler and rewind the note. Only the source still owning
193
+ // playback may reset the cursor.
194
+ source.onended = () => {
195
+ if (sourceRef.current !== source)
196
+ return;
197
+ sourceRef.current = null;
198
+ releasePlayback(playerId);
199
+ setIsPlaying(false);
200
+ setProgress(0);
201
+ stopRaf();
202
+ };
203
+ const offset = fraction > 0 && fraction < 1 ? fraction * durationRef.current : 0;
204
+ startedAtRef.current = ctx.currentTime - offset / rateRef.current;
205
+ source.start(0, offset);
206
+ sourceRef.current = source;
207
+ setIsPlaying(true);
208
+ // Starting stops whatever else was playing, the way Telegram does.
209
+ claimPlayback(playerId, stopSource);
210
+ stopRaf();
211
+ rafRef.current = requestAnimationFrame(tick);
212
+ }
213
+ catch {
214
+ setFailed(true);
215
+ }
216
+ }, [tick, stopRaf, playerId, stopSource]);
217
+ const pause = useCallback(() => {
218
+ stopSource();
219
+ releasePlayback(playerId);
220
+ }, [stopSource, playerId]);
221
+ const togglePlayback = useCallback(() => {
222
+ if (isPlaying)
223
+ pause();
224
+ else
225
+ playFrom(progressRef.current);
226
+ }, [isPlaying, pause, playFrom]);
227
+ const cycleRate = useCallback(() => {
228
+ const next = SPEED_STEPS[(SPEED_STEPS.indexOf(rateRef.current) + 1) % SPEED_STEPS.length];
229
+ rateRef.current = next;
230
+ setRate(next);
231
+ // Re-seat a running source so the new rate takes effect immediately.
232
+ if (sourceRef.current)
233
+ playFrom(progressRef.current);
234
+ }, [playFrom]);
235
+ // Tap or drag anywhere on the waveform to seek, like Telegram's scrubber.
236
+ const seekTo = useCallback((x) => {
237
+ if (trackWidth <= 0 || durationRef.current <= 0)
238
+ return;
239
+ const fraction = Math.max(0, Math.min(1, x / trackWidth));
240
+ setProgress(fraction);
241
+ progressRef.current = fraction;
242
+ if (sourceRef.current)
243
+ playFrom(fraction);
244
+ }, [trackWidth, playFrom]);
245
+ // A tap seeks; a horizontal drag scrubs. The pan must only claim horizontal
246
+ // movement, or it fights the message list: without these offsets a vertical
247
+ // drag over a voice note either scrolled *and* scrubbed, or was swallowed
248
+ // entirely and left the note seeking to wherever the finger went down.
249
+ const scrubGesture = useMemo(() => Gesture.Race(Gesture.Tap().onEnd(event => {
250
+ runOnJS(seekTo)(event.x);
251
+ }), Gesture.Pan()
252
+ .activeOffsetX([-6, 6])
253
+ .failOffsetY([-12, 12])
254
+ .onUpdate(event => {
255
+ runOnJS(seekTo)(event.x);
256
+ })), [seekTo]);
257
+ const onTrackLayout = useCallback((event) => {
258
+ setTrackWidth(event.nativeEvent.layout.width);
259
+ }, []);
260
+ if (failed)
261
+ return <MediaCard kind='audio' uri={uri} position={position}/>;
262
+ const displayBars = bars.length ? bars : new Array(barCount).fill(0).map((_, i) => 0.25 + 0.15 * Math.sin(i));
263
+ const playedBars = Math.round(progress * displayBars.length);
264
+ const elapsedTime = isPlaying || progress > 0
265
+ ? progress * durationRef.current
266
+ : (durationRef.current || durationProp || 0);
267
+ return (<View style={styles.row}>
268
+ <Pressable onPress={togglePlayback} disabled={isLoading} accessibilityRole='button' accessibilityState={{ disabled: isLoading, busy: isLoading }} accessibilityLabel={isPlaying ? 'pause' : 'play'} hitSlop={{ top: 8, bottom: 8, left: 8, right: 8 }} style={[styles.playCircle, isLoading && styles.playCircleLoading]}>
269
+ {isPlaying
270
+ ? <Icon name='pause' color={styles.glyphColor.color} size={14} fallback={<PauseIcon color={styles.glyphColor.color} size={14}/>}/>
271
+ : <Icon name='play' color={styles.glyphColor.color} size={14} fallback={<PlayIcon color={styles.glyphColor.color} size={14}/>}/>}
272
+ </Pressable>
273
+
274
+ <GestureDetector gesture={scrubGesture}>
275
+ <View style={styles.waveform} onLayout={onTrackLayout} accessibilityRole='adjustable' accessibilityLabel='seek' accessibilityValue={{ min: 0, max: 100, now: Math.round(progress * 100) }}>
276
+ {displayBars.map((value, index) => (<View key={index} style={[
277
+ styles.bar,
278
+ // Heights are per-sample runtime values, so they stay inline.
279
+ { height: BAR_MIN_HEIGHT + value * (BAR_MAX_HEIGHT - BAR_MIN_HEIGHT) },
280
+ index < playedBars ? styles.barPlayed : styles.barUnplayed,
281
+ isLoading && styles.barLoading,
282
+ ]}/>))}
283
+ </View>
284
+ </GestureDetector>
285
+
286
+ <View style={styles.metaColumn}>
287
+ <Text style={styles.time}>{formatTime(elapsedTime)}</Text>
288
+ {(isPlaying || progress > 0) && (<Pressable onPress={cycleRate} accessibilityRole='button' accessibilityLabel={`playback speed ${rate}x`} hitSlop={{ top: 6, bottom: 6, left: 6, right: 6 }} style={styles.speedPill}>
289
+ <Text style={styles.speedText}>{rate}x</Text>
290
+ </Pressable>)}
291
+ </View>
292
+ </View>);
293
+ }
294
+ const makeStyles = (theme, position) => {
295
+ const palette = getMediaPalette(theme, position);
296
+ return StyleSheet.create({
297
+ // Carries the glyph color out of JSX and into the stylesheet.
298
+ glyphColor: {
299
+ color: palette.glyph,
300
+ },
301
+ row: {
302
+ flexDirection: 'row',
303
+ alignItems: 'center',
304
+ paddingVertical: 6,
305
+ paddingHorizontal: 8,
306
+ gap: 10,
307
+ minWidth: 200,
308
+ },
309
+ playCircle: {
310
+ width: 36,
311
+ height: 36,
312
+ borderRadius: 18,
313
+ backgroundColor: palette.control,
314
+ alignItems: 'center',
315
+ justifyContent: 'center',
316
+ },
317
+ playCircleLoading: {
318
+ opacity: 0.5,
319
+ },
320
+ waveform: {
321
+ flex: 1,
322
+ flexDirection: 'row',
323
+ alignItems: 'center',
324
+ height: BAR_MAX_HEIGHT + 4,
325
+ gap: BAR_GAP,
326
+ },
327
+ bar: {
328
+ width: BAR_WIDTH,
329
+ borderRadius: BAR_WIDTH / 2,
330
+ },
331
+ barPlayed: {
332
+ backgroundColor: palette.progress,
333
+ },
334
+ barUnplayed: {
335
+ backgroundColor: palette.track,
336
+ },
337
+ // Decoding: the placeholder comb reads as inert rather than as real data.
338
+ barLoading: {
339
+ opacity: 0.4,
340
+ },
341
+ metaColumn: {
342
+ alignItems: 'flex-end',
343
+ gap: 3,
344
+ },
345
+ time: {
346
+ fontSize: 12,
347
+ color: palette.meta,
348
+ minWidth: 34,
349
+ textAlign: 'right',
350
+ fontVariant: ['tabular-nums'],
351
+ },
352
+ speedPill: {
353
+ paddingHorizontal: 5,
354
+ paddingVertical: 1,
355
+ borderRadius: 8,
356
+ backgroundColor: palette.track,
357
+ },
358
+ speedText: {
359
+ fontSize: 10,
360
+ fontWeight: '600',
361
+ color: palette.meta,
362
+ },
363
+ });
364
+ };
365
+ const createLeftStyles = (theme) => makeStyles(theme, 'left');
366
+ const createRightStyles = (theme) => makeStyles(theme, 'right');
367
+ //# sourceMappingURL=WaveformPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WaveformPlayer.js","sourceRoot":"","sources":["../../src/components/WaveformPlayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvF,OAAO,EAAqB,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnF,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAChD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEhE,+EAA+E;AAC/E,wEAAwE;AACxE,IAAI,QAAQ,GAAQ,IAAI,CAAA;AACxB,IAAI,CAAC;IACH,QAAQ,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAA;AAC9C,CAAC;AAAC,MAAM,CAAC;IACP,QAAQ,GAAG,IAAI,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAA;AAE3D,+EAA+E;AAC/E,+EAA+E;AAC/E,iCAAiC;AACjC,MAAM,SAAS,GAAG,CAAC,CAAA;AACnB,MAAM,OAAO,GAAG,CAAC,CAAA;AACjB,MAAM,cAAc,GAAG,CAAC,CAAA;AACxB,MAAM,cAAc,GAAG,EAAE,CAAA;AACzB,MAAM,kBAAkB,GAAG,EAAE,CAAA;AAC7B,uDAAuD;AACvD,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAU,CAAA;AAYxC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE;IACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAC1C,OAAO,GAAG,CAAC,CAAA;IAEb,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IACrC,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AACtD,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,IAAkB,EAAE,OAAe,EAAE,EAAE;IACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpD,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;QACjC,IAAI,GAAG,GAAG,CAAC,CAAA;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA;YAClC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAA;IAClC,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAA;IACpC,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAA;AAC9C,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAE,EAAE,GAAG,EAAE,QAAQ,GAAG,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAuB;IACrG,MAAM,MAAM,GAAG,eAAe,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAA;IAC3F,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAA;IAExB,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAA;IAC9C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAA;IAChD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAC3C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACnC,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAE/C,MAAM,MAAM,GAAG,MAAM,CAAM,IAAI,CAAC,CAAA;IAChC,MAAM,SAAS,GAAG,MAAM,CAAM,IAAI,CAAC,CAAA;IACnC,MAAM,SAAS,GAAG,MAAM,CAAM,IAAI,CAAC,CAAA;IACnC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAkD,IAAI,CAAC,CAAA;IAC5E,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,IAAI,CAAC,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IACzB,yEAAyE;IACzE,yDAAyD;IACzD,MAAM,WAAW,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7B,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAA;IAE9B,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC;QAC7B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,kBAAkB,CAAA;IAEtB,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE;QAC/B,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAC3B,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YACpC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAA;QACvB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAA;QACvC,MAAM,CAAC,OAAO,GAAG,GAAG,CAEnB;QAAA,CAAC,KAAK,IAAI,EAAE;YACX,IAAI,CAAC;gBACH,yEAAyE;gBACzE,yEAAyE;gBACzE,uEAAuE;gBACvE,4DAA4D;gBAC5D,MAAM,MAAM,GAAG,OAAO,GAAG,CAAC,eAAe,KAAK,UAAU;oBACtD,CAAC,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC;oBACjD,CAAC,CAAC,CAAC,MAAc,EAAE,EAAE,CAAC,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAA;gBAEzD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,CAAA;gBAChC,IAAI,SAAS;oBACX,OAAM;gBAER,SAAS,CAAC,OAAO,GAAG,MAAM,CAAA;gBAC1B,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,IAAI,YAAY,IAAI,CAAC,CAAA;gBAC1D,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;gBACvD,YAAY,CAAC,KAAK,CAAC,CAAA;YACrB,CAAC;YAAC,MAAM,CAAC;gBACP,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,SAAS,CAAC,IAAI,CAAC,CAAA;oBACf,YAAY,CAAC,KAAK,CAAC,CAAA;gBACrB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QAEJ,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAA;YAChB,OAAO,EAAE,CAAA;YACT,eAAe,CAAC,QAAQ,CAAC,CAAA;YACzB,IAAI,CAAC;gBACH,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAA;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;YACD,IAAI,CAAC;gBACH,GAAG,CAAC,KAAK,EAAE,EAAE,CAAA;YACf,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO;YACT,CAAC;QACH,CAAC,CAAA;QACD,oEAAoE;QACpE,4EAA4E;QAC5E,gCAAgC;QAChC,uDAAuD;IACzD,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAA;IAE1C,yEAAyE;IACzE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,MAAM,IAAI,UAAU,IAAI,CAAC;YAC5B,OAAM;QAER,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;IACzD,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IAE1B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAA;QAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAA;QACpC,IAAI,CAAC,GAAG,IAAI,QAAQ,IAAI,CAAC;YACvB,OAAM;QAER,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAA;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAA;QAC5C,WAAW,CAAC,IAAI,CAAC,CAAA;QAEjB,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,WAAW,CAAC,CAAC,CAAC,CAAA;YACd,OAAO,EAAE,CAAA;YACT,OAAM;QACR,CAAC;QAED,MAAM,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAC9C,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,CAAC;YACH,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAA;QAC7B,CAAC;QAAC,MAAM,CAAC;YACP,kBAAkB;QACpB,CAAC;QACD,SAAS,CAAC,OAAO,GAAG,IAAI,CAAA;QACxB,OAAO,EAAE,CAAA;QACT,YAAY,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAEb,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,QAAgB,EAAE,EAAE;QAChD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAA;QAC1B,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAA;QAChC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM;YACjB,OAAM;QAER,IAAI,CAAC;YACH,6DAA6D;YAC7D,IAAI,CAAC;gBACH,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAA;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,kBAAkB;YACpB,CAAC;YACD,SAAS,CAAC,OAAO,GAAG,IAAI,CAAA;YAExB,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAA;YACvC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;YACtB,IAAI,MAAM,CAAC,YAAY;gBACrB,MAAM,CAAC,YAAY,CAAC,KAAK,GAAG,OAAO,CAAC,OAAO,CAAA;YAC7C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YAC/B,yEAAyE;YACzE,2EAA2E;YAC3E,iCAAiC;YACjC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE;gBACpB,IAAI,SAAS,CAAC,OAAO,KAAK,MAAM;oBAC9B,OAAM;gBAER,SAAS,CAAC,OAAO,GAAG,IAAI,CAAA;gBACxB,eAAe,CAAC,QAAQ,CAAC,CAAA;gBACzB,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,WAAW,CAAC,CAAC,CAAC,CAAA;gBACd,OAAO,EAAE,CAAA;YACX,CAAC,CAAA;YAED,MAAM,MAAM,GAAG,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;YAChF,YAAY,CAAC,OAAO,GAAG,GAAG,CAAC,WAAW,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAA;YACjE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;YACvB,SAAS,CAAC,OAAO,GAAG,MAAM,CAAA;YAC1B,YAAY,CAAC,IAAI,CAAC,CAAA;YAClB,mEAAmE;YACnE,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;YACnC,OAAO,EAAE,CAAA;YACT,MAAM,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAA;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,CAAC,IAAI,CAAC,CAAA;QACjB,CAAC;IACH,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAA;IAEzC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,UAAU,EAAE,CAAA;QACZ,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC3B,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE1B,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACtC,IAAI,SAAS;YACX,KAAK,EAAE,CAAA;;YAEP,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAEhC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QACjC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,OAAY,CAAC,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;QAC9F,OAAO,CAAC,OAAO,GAAG,IAAI,CAAA;QACtB,OAAO,CAAC,IAAI,CAAC,CAAA;QAEb,qEAAqE;QACrE,IAAI,SAAS,CAAC,OAAO;YACnB,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;IAEd,0EAA0E;IAC1E,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAS,EAAE,EAAE;QACvC,IAAI,UAAU,IAAI,CAAC,IAAI,WAAW,CAAC,OAAO,IAAI,CAAC;YAC7C,OAAM;QAER,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,CAAA;QACzD,WAAW,CAAC,QAAQ,CAAC,CAAA;QACrB,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAA;QAE9B,IAAI,SAAS,CAAC,OAAO;YACnB,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACtB,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE1B,4EAA4E;IAC5E,4EAA4E;IAC5E,0EAA0E;IAC1E,uEAAuE;IACvE,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CACH,OAAO,CAAC,IAAI,CACV,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC1B,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC,CAAC,EACF,OAAO,CAAC,GAAG,EAAE;SACV,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACtB,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;SACtB,QAAQ,CAAC,KAAK,CAAC,EAAE;QAChB,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC,CAAC,CACL,EACH,CAAC,MAAM,CAAC,CACT,CAAA;IAED,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,KAAwB,EAAE,EAAE;QAC7D,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC/C,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAI,MAAM;QACR,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAA;IAEjE,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7G,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5D,MAAM,WAAW,GAAG,SAAS,IAAI,QAAQ,GAAG,CAAC;QAC3C,CAAC,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO;QAChC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,IAAI,YAAY,IAAI,CAAC,CAAC,CAAA;IAE9C,OAAO,CACL,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CACtB;MAAA,CAAC,SAAS,CACR,OAAO,CAAC,CAAC,cAAc,CAAC,CACxB,QAAQ,CAAC,CAAC,SAAS,CAAC,CACpB,iBAAiB,CAAC,QAAQ,CAC1B,kBAAkB,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAC7D,kBAAkB,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CACjD,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAClD,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,IAAI,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAElE;QAAA,CAAC,SAAS;YACR,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG;YACpI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAG,CAAC,EAAG,CACtI;MAAA,EAAE,SAAS,CAEX;;MAAA,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CACrC;QAAA,CAAC,IAAI,CACH,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CACvB,QAAQ,CAAC,CAAC,aAAa,CAAC,CACxB,iBAAiB,CAAC,YAAY,CAC9B,kBAAkB,CAAC,MAAM,CACzB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,EAAE,CAAC,CAE1E;UAAA,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACjC,CAAC,IAAI,CACH,GAAG,CAAC,CAAC,KAAK,CAAC,CACX,KAAK,CAAC,CAAC;gBACL,MAAM,CAAC,GAAG;gBACV,8DAA8D;gBAC9D,EAAE,MAAM,EAAE,cAAc,GAAG,KAAK,GAAG,CAAC,cAAc,GAAG,cAAc,CAAC,EAAE;gBACtE,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW;gBAC1D,SAAS,IAAI,MAAM,CAAC,UAAU;aAC/B,CAAC,EACF,CACH,CAAC,CACJ;QAAA,EAAE,IAAI,CACR;MAAA,EAAE,eAAe,CAEjB;;MAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAC7B;QAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CACzD;QAAA,CAAC,CAAC,SAAS,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAC9B,CAAC,SAAS,CACR,OAAO,CAAC,CAAC,SAAS,CAAC,CACnB,iBAAiB,CAAC,QAAQ,CAC1B,kBAAkB,CAAC,CAAC,kBAAkB,IAAI,GAAG,CAAC,CAC9C,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAClD,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAExB;YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAC9C;UAAA,EAAE,SAAS,CAAC,CACb,CACH;MAAA,EAAE,IAAI,CACR;IAAA,EAAE,IAAI,CAAC,CACR,CAAA;AACH,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,KAAgB,EAAE,QAA0B,EAAE,EAAE;IAClE,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAEhD,OAAO,UAAU,CAAC,MAAM,CAAC;QACvB,8DAA8D;QAC9D,UAAU,EAAE;YACV,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB;QACD,GAAG,EAAE;YACH,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,QAAQ;YACpB,eAAe,EAAE,CAAC;YAClB,iBAAiB,EAAE,CAAC;YACpB,GAAG,EAAE,EAAE;YACP,QAAQ,EAAE,GAAG;SACd;QACD,UAAU,EAAE;YACV,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;YACV,YAAY,EAAE,EAAE;YAChB,eAAe,EAAE,OAAO,CAAC,OAAO;YAChC,UAAU,EAAE,QAAQ;YACpB,cAAc,EAAE,QAAQ;SACzB;QACD,iBAAiB,EAAE;YACjB,OAAO,EAAE,GAAG;SACb;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,CAAC;YACP,aAAa,EAAE,KAAK;YACpB,UAAU,EAAE,QAAQ;YACpB,MAAM,EAAE,cAAc,GAAG,CAAC;YAC1B,GAAG,EAAE,OAAO;SACb;QACD,GAAG,EAAE;YACH,KAAK,EAAE,SAAS;YAChB,YAAY,EAAE,SAAS,GAAG,CAAC;SAC5B;QACD,SAAS,EAAE;YACT,eAAe,EAAE,OAAO,CAAC,QAAQ;SAClC;QACD,WAAW,EAAE;YACX,eAAe,EAAE,OAAO,CAAC,KAAK;SAC/B;QACD,0EAA0E;QAC1E,UAAU,EAAE;YACV,OAAO,EAAE,GAAG;SACb;QACD,UAAU,EAAE;YACV,UAAU,EAAE,UAAU;YACtB,GAAG,EAAE,CAAC;SACP;QACD,IAAI,EAAE;YACJ,QAAQ,EAAE,EAAE;YACZ,KAAK,EAAE,OAAO,CAAC,IAAI;YACnB,QAAQ,EAAE,EAAE;YACZ,SAAS,EAAE,OAAO;YAClB,WAAW,EAAE,CAAC,cAAc,CAAC;SAC9B;QACD,SAAS,EAAE;YACT,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;YAClB,YAAY,EAAE,CAAC;YACf,eAAe,EAAE,OAAO,CAAC,KAAK;SAC/B;QACD,SAAS,EAAE;YACT,QAAQ,EAAE,EAAE;YACZ,UAAU,EAAE,KAAK;YACjB,KAAK,EAAE,OAAO,CAAC,IAAI;SACpB;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;AACxE,MAAM,iBAAiB,GAAG,CAAC,KAAgB,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA"}
@@ -0,0 +1,23 @@
1
+ import { ChatTheme } from '../Theme';
2
+ /**
3
+ * Colors for the play/pause control and progress track inside a media bubble.
4
+ *
5
+ * The accent cannot be used for both positions: in the default light theme
6
+ * `colors.accent` and `colors.outgoingBubble` are the same azure, so an accent
7
+ * circle on an outgoing bubble is invisible (1:1 contrast). Telegram solves this
8
+ * the same way - the control inverts on the sender's side.
9
+ */
10
+ export interface MediaPalette {
11
+ /** Filled circle behind the play/pause glyph. */
12
+ control: string;
13
+ /** The glyph itself. */
14
+ glyph: string;
15
+ /** Played portion of the waveform / progress track. */
16
+ progress: string;
17
+ /** Unplayed portion. */
18
+ track: string;
19
+ /** Duration and other meta text. */
20
+ meta: string;
21
+ }
22
+ export declare const getMediaPalette: (theme: ChatTheme, position: "left" | "right") => MediaPalette;
23
+ //# sourceMappingURL=mediaPalette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaPalette.d.ts","sourceRoot":"","sources":["../../src/components/mediaPalette.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAA;IACf,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAA;IAChB,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAA;CACb;AAED,eAAO,MAAM,eAAe,GAC1B,OAAO,SAAS,EAChB,UAAU,MAAM,GAAG,OAAO,KACzB,YAeE,CAAA"}
@@ -0,0 +1,16 @@
1
+ export const getMediaPalette = (theme, position) => position === 'right'
2
+ ? {
3
+ control: theme.colors.outgoingText,
4
+ glyph: theme.colors.outgoingBubble,
5
+ progress: theme.colors.outgoingText,
6
+ track: 'rgba(255, 255, 255, 0.45)',
7
+ meta: theme.colors.outgoingText,
8
+ }
9
+ : {
10
+ control: theme.colors.accent,
11
+ glyph: '#FFFFFF',
12
+ progress: theme.colors.accent,
13
+ track: 'rgba(0, 0, 0, 0.20)',
14
+ meta: theme.colors.incomingMeta,
15
+ };
16
+ //# sourceMappingURL=mediaPalette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaPalette.js","sourceRoot":"","sources":["../../src/components/mediaPalette.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,KAAgB,EAChB,QAA0B,EACZ,EAAE,CAChB,QAAQ,KAAK,OAAO;IAClB,CAAC,CAAC;QACA,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;QAClC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,cAAc;QAClC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;QACnC,KAAK,EAAE,2BAA2B;QAClC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;KAChC;IACD,CAAC,CAAC;QACA,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QAC5B,KAAK,EAAE,SAAS;QAChB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;QAC7B,KAAK,EAAE,qBAAqB;QAC5B,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,YAAY;KAChC,CAAA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Module-level registry so only one piece of media plays at a time.
3
+ *
4
+ * Every voice note and round video note owns its own player, and nothing
5
+ * coordinated them: starting a second note left the first one playing, and a
6
+ * chat with several round notes played all of them at once. Telegram always
7
+ * stops the current one when a new one starts.
8
+ *
9
+ * Deliberately not React context - bubbles are recycled by the list, and the
10
+ * registry has to outlive individual mounts to stop a player whose row has
11
+ * already scrolled away.
12
+ */
13
+ type StopHandler = () => void;
14
+ /**
15
+ * Claim playback for `id`, stopping whatever else was playing.
16
+ * Call when a player actually starts.
17
+ */
18
+ export declare const claimPlayback: (id: string, stop: StopHandler) => void;
19
+ /** Give up the claim (on pause, completion or unmount). */
20
+ export declare const releasePlayback: (id: string) => void;
21
+ export {};
22
+ //# sourceMappingURL=mediaPlayback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaPlayback.d.ts","sourceRoot":"","sources":["../../src/components/mediaPlayback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,KAAK,WAAW,GAAG,MAAM,IAAI,CAAA;AAI7B;;;GAGG;AACH,eAAO,MAAM,aAAa,GAAI,IAAI,MAAM,EAAE,MAAM,WAAW,SAW1D,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,eAAe,GAAI,IAAI,MAAM,SAEzC,CAAA"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Module-level registry so only one piece of media plays at a time.
3
+ *
4
+ * Every voice note and round video note owns its own player, and nothing
5
+ * coordinated them: starting a second note left the first one playing, and a
6
+ * chat with several round notes played all of them at once. Telegram always
7
+ * stops the current one when a new one starts.
8
+ *
9
+ * Deliberately not React context - bubbles are recycled by the list, and the
10
+ * registry has to outlive individual mounts to stop a player whose row has
11
+ * already scrolled away.
12
+ */
13
+ const players = new Map();
14
+ /**
15
+ * Claim playback for `id`, stopping whatever else was playing.
16
+ * Call when a player actually starts.
17
+ */
18
+ export const claimPlayback = (id, stop) => {
19
+ for (const [otherId, stopOther] of players)
20
+ if (otherId !== id)
21
+ try {
22
+ stopOther();
23
+ }
24
+ catch {
25
+ // a player that fails to stop must not block the new one
26
+ }
27
+ players.clear();
28
+ players.set(id, stop);
29
+ };
30
+ /** Give up the claim (on pause, completion or unmount). */
31
+ export const releasePlayback = (id) => {
32
+ players.delete(id);
33
+ };
34
+ //# sourceMappingURL=mediaPlayback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mediaPlayback.js","sourceRoot":"","sources":["../../src/components/mediaPlayback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAuB,CAAA;AAE9C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAU,EAAE,IAAiB,EAAE,EAAE;IAC7D,KAAK,MAAM,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,OAAO;QACxC,IAAI,OAAO,KAAK,EAAE;YAChB,IAAI,CAAC;gBACH,SAAS,EAAE,CAAA;YACb,CAAC;YAAC,MAAM,CAAC;gBACP,yDAAyD;YAC3D,CAAC;IAEL,OAAO,CAAC,KAAK,EAAE,CAAA;IACf,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;AACvB,CAAC,CAAA;AAED,2DAA2D;AAC3D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAU,EAAE,EAAE;IAC5C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AACpB,CAAC,CAAA"}
@@ -0,0 +1,18 @@
1
+ import 'dayjs/locale/es';
2
+ import 'dayjs/locale/fr';
3
+ import 'dayjs/locale/de';
4
+ import 'dayjs/locale/ru';
5
+ import 'dayjs/locale/zh';
6
+ import 'dayjs/locale/ar';
7
+ import 'dayjs/locale/pt';
8
+ import 'dayjs/locale/ja';
9
+ import 'dayjs/locale/ko';
10
+ import 'dayjs/locale/it';
11
+ import 'dayjs/locale/tr';
12
+ import 'dayjs/locale/hi';
13
+ import 'dayjs/locale/nl';
14
+ import 'dayjs/locale/pl';
15
+ import 'dayjs/locale/id';
16
+ import { SupportedLocale } from './locales';
17
+ export declare const BUNDLED_DAYJS_LOCALES: SupportedLocale[];
18
+ //# sourceMappingURL=dayjsLocales.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dayjsLocales.d.ts","sourceRoot":"","sources":["../src/dayjsLocales.ts"],"names":[],"mappings":"AAWA,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAW3C,eAAO,MAAM,qBAAqB,EAA2B,eAAe,EAAE,CAAA"}
@@ -0,0 +1,36 @@
1
+ // Registers dayjs's locale data (month/day names, calendar formats) on THIS library's own
2
+ // dayjs module instance, for every language src/locales/ ships UI translations for.
3
+ //
4
+ // Day and Time format dates via `dayjs(...).locale(getLocale()).format(...)`, which silently
5
+ // falls back to English month/day names unless the *exact* dayjs module instance doing the
6
+ // formatting has already had `dayjs/locale/<code>` imported into it. A host app importing that
7
+ // locale file for its own `dayjs` does NOT help here whenever more than one physical copy of
8
+ // dayjs ends up installed (any yarn/npm workspace, or just a host app + this library resolving
9
+ // slightly different dayjs semver ranges) - each copy keeps its own locale registry. Importing
10
+ // the locale files here, once, guarantees this library formats dates correctly regardless of
11
+ // what the host app does.
12
+ import 'dayjs/locale/es';
13
+ import 'dayjs/locale/fr';
14
+ import 'dayjs/locale/de';
15
+ import 'dayjs/locale/ru';
16
+ import 'dayjs/locale/zh';
17
+ import 'dayjs/locale/ar';
18
+ import 'dayjs/locale/pt';
19
+ import 'dayjs/locale/ja';
20
+ import 'dayjs/locale/ko';
21
+ import 'dayjs/locale/it';
22
+ import 'dayjs/locale/tr';
23
+ import 'dayjs/locale/hi';
24
+ import 'dayjs/locale/nl';
25
+ import 'dayjs/locale/pl';
26
+ import 'dayjs/locale/id';
27
+ // Exhaustiveness check: `SupportedLocale` comes from the single source of truth in
28
+ // ./locales/index.ts. If a new locale is added there without a matching `dayjs/locale/<code>`
29
+ // import and entry here, this object literal fails to typecheck (missing property) - catching
30
+ // the drift at compile time. dayjsLocales.test.ts re-asserts the same invariant at runtime.
31
+ const bundled = {
32
+ es: true, fr: true, de: true, ru: true, zh: true, ar: true, pt: true, ja: true,
33
+ ko: true, it: true, tr: true, hi: true, nl: true, pl: true, id: true,
34
+ };
35
+ export const BUNDLED_DAYJS_LOCALES = Object.keys(bundled);
36
+ //# sourceMappingURL=dayjsLocales.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dayjsLocales.js","sourceRoot":"","sources":["../src/dayjsLocales.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,oFAAoF;AACpF,EAAE;AACF,6FAA6F;AAC7F,2FAA2F;AAC3F,+FAA+F;AAC/F,6FAA6F;AAC7F,+FAA+F;AAC/F,+FAA+F;AAC/F,6FAA6F;AAC7F,0BAA0B;AAC1B,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AACxB,OAAO,iBAAiB,CAAA;AAIxB,mFAAmF;AACnF,8FAA8F;AAC9F,8FAA8F;AAC9F,4FAA4F;AAC5F,MAAM,OAAO,GAAkC;IAC7C,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI;IAC9E,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI;CACrE,CAAA;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAsB,CAAA"}