@ion299/sdk-react-native 0.1.0-beta.5 → 0.1.0-beta.6

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 (40) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/android/src/main/java/com/chatplatform/sdk/ChatSdkAudioPlayerModule.kt +201 -0
  3. package/android/src/main/java/com/chatplatform/sdk/ChatSdkPackage.kt +1 -0
  4. package/ios/ChatSdkAudioPlayer.m +25 -0
  5. package/ios/ChatSdkAudioPlayer.swift +193 -0
  6. package/lib/commonjs/audio/audioController.js +145 -0
  7. package/lib/commonjs/audio/audioController.js.map +1 -0
  8. package/lib/commonjs/components/AudioMessage.js +198 -0
  9. package/lib/commonjs/components/AudioMessage.js.map +1 -0
  10. package/lib/commonjs/components/MessageBubble.js +9 -0
  11. package/lib/commonjs/components/MessageBubble.js.map +1 -1
  12. package/lib/commonjs/native/NativeChatSdkAudioPlayer.js +28 -0
  13. package/lib/commonjs/native/NativeChatSdkAudioPlayer.js.map +1 -0
  14. package/lib/module/audio/audioController.js +140 -0
  15. package/lib/module/audio/audioController.js.map +1 -0
  16. package/lib/module/components/AudioMessage.js +193 -0
  17. package/lib/module/components/AudioMessage.js.map +1 -0
  18. package/lib/module/components/MessageBubble.js +9 -0
  19. package/lib/module/components/MessageBubble.js.map +1 -1
  20. package/lib/module/native/NativeChatSdkAudioPlayer.js +23 -0
  21. package/lib/module/native/NativeChatSdkAudioPlayer.js.map +1 -0
  22. package/lib/typescript/commonjs/audio/audioController.d.ts +25 -0
  23. package/lib/typescript/commonjs/audio/audioController.d.ts.map +1 -0
  24. package/lib/typescript/commonjs/components/AudioMessage.d.ts +11 -0
  25. package/lib/typescript/commonjs/components/AudioMessage.d.ts.map +1 -0
  26. package/lib/typescript/commonjs/components/MessageBubble.d.ts.map +1 -1
  27. package/lib/typescript/commonjs/native/NativeChatSdkAudioPlayer.d.ts +20 -0
  28. package/lib/typescript/commonjs/native/NativeChatSdkAudioPlayer.d.ts.map +1 -0
  29. package/lib/typescript/module/audio/audioController.d.ts +25 -0
  30. package/lib/typescript/module/audio/audioController.d.ts.map +1 -0
  31. package/lib/typescript/module/components/AudioMessage.d.ts +11 -0
  32. package/lib/typescript/module/components/AudioMessage.d.ts.map +1 -0
  33. package/lib/typescript/module/components/MessageBubble.d.ts.map +1 -1
  34. package/lib/typescript/module/native/NativeChatSdkAudioPlayer.d.ts +20 -0
  35. package/lib/typescript/module/native/NativeChatSdkAudioPlayer.d.ts.map +1 -0
  36. package/package.json +1 -1
  37. package/src/audio/audioController.ts +144 -0
  38. package/src/components/AudioMessage.tsx +198 -0
  39. package/src/components/MessageBubble.tsx +6 -0
  40. package/src/native/NativeChatSdkAudioPlayer.ts +54 -0
@@ -0,0 +1,198 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AudioMessage = AudioMessage;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _audioController = require("../audio/audioController.js");
10
+ var _jsxRuntime = require("react/jsx-runtime");
11
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
12
+ function attachmentKey(attachment) {
13
+ return attachment.id > 0 ? `a${attachment.id}` : `t${attachment.url}`;
14
+ }
15
+ function formatTime(millis) {
16
+ if (!Number.isFinite(millis) || millis <= 0) return '0:00';
17
+ const totalSeconds = Math.floor(millis / 1000);
18
+ const minutes = Math.floor(totalSeconds / 60);
19
+ const seconds = totalSeconds % 60;
20
+ return `${minutes}:${seconds.toString().padStart(2, '0')}`;
21
+ }
22
+ function AudioMessage({
23
+ attachment,
24
+ isOutbound,
25
+ theme
26
+ }) {
27
+ const key = attachmentKey(attachment);
28
+ const [pb, setPb] = (0, _react.useState)(() => _audioController.audioController.getState(key));
29
+ const [trackWidth, setTrackWidth] = (0, _react.useState)(0);
30
+ (0, _react.useEffect)(() => _audioController.audioController.subscribe(key, setPb), [key]);
31
+ const isPlaying = pb.state === 'playing';
32
+ const isLoading = pb.state === 'loading';
33
+ const isError = pb.state === 'error';
34
+ const duration = pb.durationMillis;
35
+ const position = pb.positionMillis;
36
+ const progress = duration > 0 ? Math.min(1, position / duration) : 0;
37
+ const accent = isOutbound ? '#ffffff' : theme.primaryColor;
38
+ const trackBg = isOutbound ? 'rgba(255,255,255,0.30)' : 'rgba(0,0,0,0.12)';
39
+ const timeColor = isOutbound ? 'rgba(255,255,255,0.75)' : theme.systemText;
40
+ const iconColor = isOutbound ? theme.primaryColor : '#ffffff';
41
+ const onToggle = () => {
42
+ if (isPlaying) {
43
+ void _audioController.audioController.pause(key);
44
+ } else {
45
+ void _audioController.audioController.play(key, attachment.url);
46
+ }
47
+ };
48
+ const onSeek = e => {
49
+ if (duration <= 0 || trackWidth <= 0) return;
50
+ const ratio = Math.max(0, Math.min(1, e.nativeEvent.locationX / trackWidth));
51
+ void _audioController.audioController.seek(key, ratio * duration);
52
+ };
53
+ const onTrackLayout = e => {
54
+ setTrackWidth(e.nativeEvent.layout.width);
55
+ };
56
+ const timeLabel = duration > 0 ? `${formatTime(position)} / ${formatTime(duration)}` : isError ? 'Не удалось воспроизвести' : formatTime(position);
57
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
58
+ style: styles.root,
59
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
60
+ style: [styles.button, {
61
+ backgroundColor: accent
62
+ }],
63
+ onPress: onToggle,
64
+ activeOpacity: 0.8,
65
+ disabled: isLoading,
66
+ children: isLoading ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
67
+ size: "small",
68
+ color: iconColor
69
+ }) : isPlaying ? /*#__PURE__*/(0, _jsxRuntime.jsx)(PauseIcon, {
70
+ color: iconColor
71
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(PlayIcon, {
72
+ color: iconColor
73
+ })
74
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
75
+ style: styles.body,
76
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
77
+ activeOpacity: 1,
78
+ onPress: onSeek,
79
+ onLayout: onTrackLayout,
80
+ style: styles.trackWrap,
81
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
82
+ style: [styles.track, {
83
+ backgroundColor: trackBg
84
+ }],
85
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
86
+ style: [styles.trackFill, {
87
+ backgroundColor: accent,
88
+ width: `${progress * 100}%`
89
+ }]
90
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
91
+ style: [styles.thumb, {
92
+ backgroundColor: accent,
93
+ left: `${progress * 100}%`
94
+ }]
95
+ })]
96
+ })
97
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
98
+ style: [styles.time, {
99
+ color: timeColor
100
+ }],
101
+ children: timeLabel
102
+ })]
103
+ })]
104
+ });
105
+ }
106
+ function PlayIcon({
107
+ color
108
+ }) {
109
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
110
+ style: [styles.playTriangle, {
111
+ borderLeftColor: color
112
+ }]
113
+ });
114
+ }
115
+ function PauseIcon({
116
+ color
117
+ }) {
118
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
119
+ style: styles.pauseWrap,
120
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
121
+ style: [styles.pauseBar, {
122
+ backgroundColor: color
123
+ }]
124
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
125
+ style: [styles.pauseBar, {
126
+ backgroundColor: color
127
+ }]
128
+ })]
129
+ });
130
+ }
131
+ const BUTTON_SIZE = 40;
132
+ const styles = _reactNative.StyleSheet.create({
133
+ root: {
134
+ flexDirection: 'row',
135
+ alignItems: 'center',
136
+ gap: 10,
137
+ minWidth: 200,
138
+ paddingVertical: 2
139
+ },
140
+ button: {
141
+ width: BUTTON_SIZE,
142
+ height: BUTTON_SIZE,
143
+ borderRadius: BUTTON_SIZE / 2,
144
+ alignItems: 'center',
145
+ justifyContent: 'center',
146
+ flexShrink: 0
147
+ },
148
+ body: {
149
+ flex: 1,
150
+ gap: 4
151
+ },
152
+ trackWrap: {
153
+ paddingVertical: 8,
154
+ justifyContent: 'center'
155
+ },
156
+ track: {
157
+ height: 4,
158
+ borderRadius: 2
159
+ },
160
+ trackFill: {
161
+ height: 4,
162
+ borderRadius: 2
163
+ },
164
+ thumb: {
165
+ position: 'absolute',
166
+ top: -3,
167
+ width: 10,
168
+ height: 10,
169
+ borderRadius: 5,
170
+ marginLeft: -5
171
+ },
172
+ time: {
173
+ fontSize: 11,
174
+ lineHeight: 14
175
+ },
176
+ playTriangle: {
177
+ width: 0,
178
+ height: 0,
179
+ backgroundColor: 'transparent',
180
+ borderStyle: 'solid',
181
+ borderTopWidth: 7,
182
+ borderBottomWidth: 7,
183
+ borderLeftWidth: 12,
184
+ borderTopColor: 'transparent',
185
+ borderBottomColor: 'transparent',
186
+ marginLeft: 3
187
+ },
188
+ pauseWrap: {
189
+ flexDirection: 'row',
190
+ gap: 4
191
+ },
192
+ pauseBar: {
193
+ width: 4,
194
+ height: 14,
195
+ borderRadius: 1
196
+ }
197
+ });
198
+ //# sourceMappingURL=AudioMessage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_audioController","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","attachmentKey","attachment","id","url","formatTime","millis","Number","isFinite","totalSeconds","Math","floor","minutes","seconds","toString","padStart","AudioMessage","isOutbound","theme","key","pb","setPb","useState","audioController","getState","trackWidth","setTrackWidth","useEffect","subscribe","isPlaying","state","isLoading","isError","duration","durationMillis","position","positionMillis","progress","min","accent","primaryColor","trackBg","timeColor","systemText","iconColor","onToggle","pause","play","onSeek","ratio","max","nativeEvent","locationX","seek","onTrackLayout","layout","width","timeLabel","jsxs","View","style","styles","root","children","jsx","TouchableOpacity","button","backgroundColor","onPress","activeOpacity","disabled","ActivityIndicator","size","color","PauseIcon","PlayIcon","body","onLayout","trackWrap","track","trackFill","thumb","left","Text","time","playTriangle","borderLeftColor","pauseWrap","pauseBar","BUTTON_SIZE","StyleSheet","create","flexDirection","alignItems","gap","minWidth","paddingVertical","height","borderRadius","justifyContent","flexShrink","flex","top","marginLeft","fontSize","lineHeight","borderStyle","borderTopWidth","borderBottomWidth","borderLeftWidth","borderTopColor","borderBottomColor"],"sourceRoot":"..\\..\\..\\src","sources":["components/AudioMessage.tsx"],"mappings":"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","ignoreList":[]}
@@ -7,6 +7,8 @@ exports.MessageBubble = MessageBubble;
7
7
  var _react = _interopRequireDefault(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _attachmentUtils = require("../attachmentUtils.js");
10
+ var _audioController = require("../audio/audioController.js");
11
+ var _AudioMessage = require("./AudioMessage.js");
10
12
  var _jsxRuntime = require("react/jsx-runtime");
11
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
14
  function MessageBubble({
@@ -95,6 +97,13 @@ function AttachmentView({
95
97
  })
96
98
  });
97
99
  }
100
+ if (attachment.type === 'audio' && _audioController.audioController.isAvailable) {
101
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_AudioMessage.AudioMessage, {
102
+ attachment: attachment,
103
+ isOutbound: isOutbound,
104
+ theme: theme
105
+ });
106
+ }
98
107
  const nameColor = isOutbound ? theme.outboundText : theme.inboundText;
99
108
  const sizeColor = isOutbound ? 'rgba(255,255,255,0.65)' : theme.systemText;
100
109
  const displayName = (0, _attachmentUtils.attachmentDisplayName)(attachment);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_attachmentUtils","_jsxRuntime","e","__esModule","default","MessageBubble","message","theme","onButtonPress","onAttachmentPress","type","jsx","View","style","styles","systemRow","children","Text","systemText","color","text","isOutbound","row","rowRight","rowLeft","jsxs","bubble","outbound","backgroundColor","outboundBg","inbound","inboundBg","sender","name","senderName","primaryColor","attachments","length","map","att","i","AttachmentView","attachment","onPress","id","undefined","outboundText","inboundText","buttons","btn","BotButton","button","callback_data","serverMessageId","time","formatBytes","bytes","toFixed","TouchableOpacity","disabled","activeOpacity","Image","source","uri","url","image","resizeMode","nameColor","sizeColor","displayName","attachmentDisplayName","fileBlock","fileName","numberOfLines","size","fileSize","botButton","borderColor","botButtonText","BUBBLE_MAX_WIDTH","Dimensions","get","width","StyleSheet","create","flexDirection","marginVertical","paddingHorizontal","justifyContent","maxWidth","minWidth","borderRadius","paddingTop","paddingBottom","borderBottomRightRadius","borderBottomLeftRadius","fontSize","fontWeight","marginBottom","lineHeight","alignSelf","marginTop","alignItems","textAlign","gap","height","borderWidth","paddingVertical"],"sourceRoot":"..\\..\\..\\src","sources":["components/MessageBubble.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_attachmentUtils","_audioController","_AudioMessage","_jsxRuntime","e","__esModule","default","MessageBubble","message","theme","onButtonPress","onAttachmentPress","type","jsx","View","style","styles","systemRow","children","Text","systemText","color","text","isOutbound","row","rowRight","rowLeft","jsxs","bubble","outbound","backgroundColor","outboundBg","inbound","inboundBg","sender","name","senderName","primaryColor","attachments","length","map","att","i","AttachmentView","attachment","onPress","id","undefined","outboundText","inboundText","buttons","btn","BotButton","button","callback_data","serverMessageId","time","formatBytes","bytes","toFixed","TouchableOpacity","disabled","activeOpacity","Image","source","uri","url","image","resizeMode","audioController","isAvailable","AudioMessage","nameColor","sizeColor","displayName","attachmentDisplayName","fileBlock","fileName","numberOfLines","size","fileSize","botButton","borderColor","botButtonText","BUBBLE_MAX_WIDTH","Dimensions","get","width","StyleSheet","create","flexDirection","marginVertical","paddingHorizontal","justifyContent","maxWidth","minWidth","borderRadius","paddingTop","paddingBottom","borderBottomRightRadius","borderBottomLeftRadius","fontSize","fontWeight","marginBottom","lineHeight","alignSelf","marginTop","alignItems","textAlign","gap","height","borderWidth","paddingVertical"],"sourceRoot":"..\\..\\..\\src","sources":["components/MessageBubble.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAF,OAAA;AACA,IAAAG,gBAAA,GAAAH,OAAA;AACA,IAAAI,aAAA,GAAAJ,OAAA;AAA6C,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAD,uBAAAO,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAWtC,SAASG,aAAaA,CAAC;EAAEC,OAAO;EAAEC,KAAK;EAAEC,aAAa;EAAEC;AAAyB,CAAC,EAAE;EACzF,IAAIH,OAAO,CAACI,IAAI,KAAK,QAAQ,IAAIJ,OAAO,CAACI,IAAI,KAAK,OAAO,EAAE;IACzD,oBACE,IAAAT,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAe,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACC,SAAU;MAAAC,QAAA,eAC5B,IAAAf,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAoB,IAAI;QAACJ,KAAK,EAAE,CAACC,MAAM,CAACI,UAAU,EAAE;UAAEC,KAAK,EAAEZ,KAAK,CAACW;QAAW,CAAC,CAAE;QAAAF,QAAA,EAC3DV,OAAO,CAACc;MAAI,CACT;IAAC,CACH,CAAC;EAEX;EAEA,MAAMC,UAAU,GAAGf,OAAO,CAACI,IAAI,KAAK,SAAS;EAE7C,oBACE,IAAAT,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAe,IAAI;IAACC,KAAK,EAAE,CAACC,MAAM,CAACQ,GAAG,EAAED,UAAU,GAAGP,MAAM,CAACS,QAAQ,GAAGT,MAAM,CAACU,OAAO,CAAE;IAAAR,QAAA,eACvE,IAAAf,WAAA,CAAAwB,IAAA,EAAC5B,YAAA,CAAAe,IAAI;MACHC,KAAK,EAAE,CACLC,MAAM,CAACY,MAAM,EACbL,UAAU,GACN,CAACP,MAAM,CAACa,QAAQ,EAAE;QAAEC,eAAe,EAAErB,KAAK,CAACsB;MAAW,CAAC,CAAC,GACxD,CAACf,MAAM,CAACgB,OAAO,EAAE;QAAEF,eAAe,EAAErB,KAAK,CAACwB;MAAU,CAAC,CAAC,CAC1D;MAAAf,QAAA,GAED,CAACK,UAAU,IAAIf,OAAO,CAAC0B,MAAM,EAAEC,IAAI,gBAClC,IAAAhC,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAoB,IAAI;QAACJ,KAAK,EAAE,CAACC,MAAM,CAACoB,UAAU,EAAE;UAAEf,KAAK,EAAEZ,KAAK,CAAC4B;QAAa,CAAC,CAAE;QAAAnB,QAAA,EAC7DV,OAAO,CAAC0B,MAAM,CAACC;MAAI,CAChB,CAAC,GACL,IAAI,EAEP3B,OAAO,CAAC8B,WAAW,IAAI9B,OAAO,CAAC8B,WAAW,CAACC,MAAM,GAAG,CAAC,iBACpD,IAAApC,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAe,IAAI;QAACC,KAAK,EAAEC,MAAM,CAACsB,WAAY;QAAApB,QAAA,EAC7BV,OAAO,CAAC8B,WAAW,CAACE,GAAG,CAAC,CAACC,GAAG,EAAEC,CAAC,kBAC9B,IAAAvC,WAAA,CAAAU,GAAA,EAAC8B,cAAc;UAEbC,UAAU,EAAEH,GAAI;UAChBlB,UAAU,EAAEA,UAAW;UACvBd,KAAK,EAAEA,KAAM;UACboC,OAAO,EAAEJ,GAAG,CAACK,EAAE,GAAG,CAAC,GAAG,MAAMnC,iBAAiB,GAAG8B,GAAG,CAAC,GAAGM;QAAU,GAJ5DN,GAAG,CAACK,EAAE,KAAK,CAAC,GAAGL,GAAG,CAACK,EAAE,GAAG,QAAQJ,CAAC,EAKvC,CACF;MAAC,CACE,CACP,EAEAlC,OAAO,CAACc,IAAI,gBACX,IAAAnB,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAoB,IAAI;QACHJ,KAAK,EAAE,CACLC,MAAM,CAACM,IAAI,EACX;UAAED,KAAK,EAAEE,UAAU,GAAGd,KAAK,CAACuC,YAAY,GAAGvC,KAAK,CAACwC;QAAY,CAAC,CAC9D;QAAA/B,QAAA,EAEDV,OAAO,CAACc;MAAI,CACT,CAAC,GACL,IAAI,EAEPd,OAAO,CAAC0C,OAAO,IAAI1C,OAAO,CAAC0C,OAAO,CAACX,MAAM,GAAG,CAAC,iBAC5C,IAAApC,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAe,IAAI;QAACC,KAAK,EAAEC,MAAM,CAACkC,OAAQ;QAAAhC,QAAA,EACzBV,OAAO,CAAC0C,OAAO,CAACV,GAAG,CAAC,CAACW,GAAG,EAAET,CAAC,kBAC1B,IAAAvC,WAAA,CAAAU,GAAA,EAACuC,SAAS;UAERC,MAAM,EAAEF,GAAI;UACZ1C,KAAK,EAAEA,KAAM;UACboC,OAAO,EAAEA,CAAA,KACPnC,aAAa,GAAGyC,GAAG,CAACG,aAAa,EAAE9C,OAAO,CAAC+C,eAAe,IAAI,CAAC;QAChE,GALIb,CAMN,CACF;MAAC,CACE,CACP,eAED,IAAAvC,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAoB,IAAI;QACHJ,KAAK,EAAE,CACLC,MAAM,CAACwC,IAAI,EACX;UAAEnC,KAAK,EAAEE,UAAU,GAAG,wBAAwB,GAAGd,KAAK,CAACW;QAAW,CAAC,CACnE;QAAAF,QAAA,EAEDV,OAAO,CAACgD;MAAI,CACT,CAAC;IAAA,CACH;EAAC,CACH,CAAC;AAEX;AAEA,SAASC,WAAWA,CAACC,KAAa,EAAU;EAC1C,IAAIA,KAAK,IAAI,CAAC,EAAE,OAAO,EAAE;EACzB,IAAIA,KAAK,GAAG,IAAI,EAAE,OAAO,GAAGA,KAAK,IAAI;EACrC,IAAIA,KAAK,GAAG,IAAI,GAAG,IAAI,EAAE,OAAO,GAAG,CAACA,KAAK,GAAG,IAAI,EAAEC,OAAO,CAAC,CAAC,CAAC,KAAK;EACjE,OAAO,GAAG,CAACD,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,EAAEC,OAAO,CAAC,CAAC,CAAC,KAAK;AACnD;AAEA,SAAShB,cAAcA,CAAC;EACtBC,UAAU;EACVrB,UAAU;EACVd,KAAK;EACLoC;AAMF,CAAC,EAAE;EACD,IAAID,UAAU,CAAChC,IAAI,KAAK,OAAO,EAAE;IAC/B,oBACE,IAAAT,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAA6D,gBAAgB;MAACf,OAAO,EAAEA,OAAQ;MAACgB,QAAQ,EAAE,CAAChB,OAAQ;MAACiB,aAAa,EAAE,IAAK;MAAA5C,QAAA,eAC1E,IAAAf,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAgE,KAAK;QACJC,MAAM,EAAE;UAAEC,GAAG,EAAErB,UAAU,CAACsB;QAAI,CAAE;QAChCnD,KAAK,EAAEC,MAAM,CAACmD,KAAM;QACpBC,UAAU,EAAC;MAAO,CACnB;IAAC,CACc,CAAC;EAEvB;EAEA,IAAIxB,UAAU,CAAChC,IAAI,KAAK,OAAO,IAAIyD,gCAAe,CAACC,WAAW,EAAE;IAC9D,oBAAO,IAAAnE,WAAA,CAAAU,GAAA,EAACX,aAAA,CAAAqE,YAAY;MAAC3B,UAAU,EAAEA,UAAW;MAACrB,UAAU,EAAEA,UAAW;MAACd,KAAK,EAAEA;IAAM,CAAE,CAAC;EACvF;EAEA,MAAM+D,SAAS,GAAGjD,UAAU,GAAGd,KAAK,CAACuC,YAAY,GAAGvC,KAAK,CAACwC,WAAW;EACrE,MAAMwB,SAAS,GAAGlD,UAAU,GAAG,wBAAwB,GAAGd,KAAK,CAACW,UAAU;EAC1E,MAAMsD,WAAW,GAAG,IAAAC,sCAAqB,EAAC/B,UAAU,CAAC;EAErD,oBACE,IAAAzC,WAAA,CAAAwB,IAAA,EAAC5B,YAAA,CAAA6D,gBAAgB;IACf7C,KAAK,EAAEC,MAAM,CAAC4D,SAAU;IACxB/B,OAAO,EAAEA,OAAQ;IACjBgB,QAAQ,EAAE,CAAChB,OAAQ;IACnBiB,aAAa,EAAE,IAAK;IAAA5C,QAAA,gBAEpB,IAAAf,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAoB,IAAI;MAACJ,KAAK,EAAE,CAACC,MAAM,CAAC6D,QAAQ,EAAE;QAAExD,KAAK,EAAEmD;MAAU,CAAC,CAAE;MAACM,aAAa,EAAE,CAAE;MAAA5D,QAAA,EACpEwD;IAAW,CACR,CAAC,EACN9B,UAAU,CAACmC,IAAI,GAAG,CAAC,iBAClB,IAAA5E,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAoB,IAAI;MAACJ,KAAK,EAAE,CAACC,MAAM,CAACgE,QAAQ,EAAE;QAAE3D,KAAK,EAAEoD;MAAU,CAAC,CAAE;MAAAvD,QAAA,EAClDuC,WAAW,CAACb,UAAU,CAACmC,IAAI;IAAC,CACzB,CACP;EAAA,CACe,CAAC;AAEvB;AAEA,SAAS3B,SAASA,CAAC;EACjBC,MAAM;EACN5C,KAAK;EACLoC;AAKF,CAAC,EAAE;EACD,oBACE,IAAA1C,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAA6D,gBAAgB;IACf7C,KAAK,EAAE,CAACC,MAAM,CAACiE,SAAS,EAAE;MAAEC,WAAW,EAAEzE,KAAK,CAAC4B;IAAa,CAAC,CAAE;IAC/DQ,OAAO,EAAEA,OAAQ;IAAA3B,QAAA,eAEjB,IAAAf,WAAA,CAAAU,GAAA,EAACd,YAAA,CAAAoB,IAAI;MAACJ,KAAK,EAAE,CAACC,MAAM,CAACmE,aAAa,EAAE;QAAE9D,KAAK,EAAEZ,KAAK,CAAC4B;MAAa,CAAC,CAAE;MAAAnB,QAAA,EAChEmC,MAAM,CAAC/B;IAAI,CACR;EAAC,CACS,CAAC;AAEvB;AAEA,MAAM8D,gBAAgB,GAAGC,uBAAU,CAACC,GAAG,CAAC,QAAQ,CAAC,CAACC,KAAK,GAAG,IAAI;AAE9D,MAAMvE,MAAM,GAAGwE,uBAAU,CAACC,MAAM,CAAC;EAC/BjE,GAAG,EAAW;IAAEkE,aAAa,EAAE,KAAK;IAAEC,cAAc,EAAE,CAAC;IAAEC,iBAAiB,EAAE;EAAG,CAAC;EAChFnE,QAAQ,EAAM;IAAEoE,cAAc,EAAE;EAAW,CAAC;EAC5CnE,OAAO,EAAO;IAAEmE,cAAc,EAAE;EAAa,CAAC;EAC9CjE,MAAM,EAAE;IACNkE,QAAQ,EAAUV,gBAAgB;IAClCW,QAAQ,EAAU,EAAE;IACpBC,YAAY,EAAM,EAAE;IACpBJ,iBAAiB,EAAE,EAAE;IACrBK,UAAU,EAAQ,EAAE;IACpBC,aAAa,EAAK;EACpB,CAAC;EACDrE,QAAQ,EAAM;IAAEsE,uBAAuB,EAAE;EAAE,CAAC;EAC5CnE,OAAO,EAAO;IAAEoE,sBAAsB,EAAE;EAAE,CAAC;EAC3ChE,UAAU,EAAI;IAAEiE,QAAQ,EAAE,EAAE;IAAEC,UAAU,EAAE,KAAK;IAAEC,YAAY,EAAE;EAAE,CAAC;EAClEjF,IAAI,EAAU;IAAE+E,QAAQ,EAAE,EAAE;IAAEG,UAAU,EAAE;EAAG,CAAC;EAC9ChD,IAAI,EAAU;IAAE6C,QAAQ,EAAE,EAAE;IAAEG,UAAU,EAAE,EAAE;IAAEC,SAAS,EAAE,UAAU;IAAEC,SAAS,EAAE;EAAE,CAAC;EACnFzF,SAAS,EAAK;IAAE0F,UAAU,EAAE,QAAQ;IAAEhB,cAAc,EAAE,CAAC;IAAEC,iBAAiB,EAAE;EAAG,CAAC;EAChFxE,UAAU,EAAI;IAAEiF,QAAQ,EAAE,EAAE;IAAEO,SAAS,EAAE;EAAS,CAAC;EACnDtE,WAAW,EAAG;IAAEuE,GAAG,EAAE,CAAC;IAAEN,YAAY,EAAE;EAAE,CAAC;EACzCpC,KAAK,EAAS;IAAEoB,KAAK,EAAE,GAAG;IAAEuB,MAAM,EAAE,GAAG;IAAEd,YAAY,EAAE;EAAE,CAAC;EAC1DpB,SAAS,EAAE;IACTiC,GAAG,EAAE,CAAC;IACNd,QAAQ,EAAE;EACZ,CAAC;EACDlB,QAAQ,EAAE;IAAEwB,QAAQ,EAAE,EAAE;IAAEC,UAAU,EAAE,KAAK;IAAEE,UAAU,EAAE;EAAG,CAAC;EAC7DxB,QAAQ,EAAE;IAAEqB,QAAQ,EAAE,EAAE;IAAEG,UAAU,EAAE;EAAG,CAAC;EAC1CtD,OAAO,EAAK;IAAE2D,GAAG,EAAE,CAAC;IAAEH,SAAS,EAAE;EAAE,CAAC;EACpCzB,SAAS,EAAE;IACT8B,WAAW,EAAK,GAAG;IACnBf,YAAY,EAAI,CAAC;IACjBgB,eAAe,EAAE,CAAC;IAClBpB,iBAAiB,EAAE,EAAE;IACrBe,UAAU,EAAM;EAClB,CAAC;EACDxB,aAAa,EAAE;IAAEkB,QAAQ,EAAE,EAAE;IAAEC,UAAU,EAAE;EAAM;AACnD,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ exports.onAudioState = onAudioState;
8
+ var _reactNative = require("react-native");
9
+ const MODULE_NAME = 'ChatSdkAudioPlayer';
10
+ function loadModule() {
11
+ try {
12
+ return _reactNative.TurboModuleRegistry.get(MODULE_NAME);
13
+ } catch {
14
+ return _reactNative.NativeModules[MODULE_NAME] ?? null;
15
+ }
16
+ }
17
+ const moduleRef = loadModule();
18
+ var _default = exports.default = moduleRef;
19
+ let emitter = null;
20
+ function getEmitter() {
21
+ if (!moduleRef) return null;
22
+ if (!emitter) emitter = new _reactNative.NativeEventEmitter(moduleRef);
23
+ return emitter;
24
+ }
25
+ function onAudioState(handler) {
26
+ return getEmitter()?.addListener('ChatSdkAudioState', handler) ?? null;
27
+ }
28
+ //# sourceMappingURL=NativeChatSdkAudioPlayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","MODULE_NAME","loadModule","TurboModuleRegistry","get","NativeModules","moduleRef","_default","exports","default","emitter","getEmitter","NativeEventEmitter","onAudioState","handler","addListener"],"sourceRoot":"..\\..\\..\\src","sources":["native/NativeChatSdkAudioPlayer.ts"],"mappings":";;;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AA2BA,MAAMC,WAAW,GAAG,oBAAoB;AAExC,SAASC,UAAUA,CAAA,EAAgB;EACjC,IAAI;IACF,OAAOC,gCAAmB,CAACC,GAAG,CAAOH,WAAW,CAAC;EACnD,CAAC,CAAC,MAAM;IACN,OAAQI,0BAAa,CAACJ,WAAW,CAAC,IAAyB,IAAI;EACjE;AACF;AAEA,MAAMK,SAAS,GAAGJ,UAAU,CAAC,CAAC;AAAA,IAAAK,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEfH,SAAS;AAExB,IAAII,OAAkC,GAAG,IAAI;AAE7C,SAASC,UAAUA,CAAA,EAA8B;EAC/C,IAAI,CAACL,SAAS,EAAE,OAAO,IAAI;EAC3B,IAAI,CAACI,OAAO,EAAEA,OAAO,GAAG,IAAIE,+BAAkB,CAACN,SAA6B,CAAC;EAC7E,OAAOI,OAAO;AAChB;AAEO,SAASG,YAAYA,CAC1BC,OAAyC,EACf;EAC1B,OAAOH,UAAU,CAAC,CAAC,EAAEI,WAAW,CAAC,mBAAmB,EAAED,OAAO,CAAC,IAAI,IAAI;AACxE","ignoreList":[]}
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+
3
+ import AudioModule, { onAudioState } from "../native/NativeChatSdkAudioPlayer.js";
4
+ const IDLE = {
5
+ state: 'idle',
6
+ positionMillis: 0,
7
+ durationMillis: 0
8
+ };
9
+ class AudioController {
10
+ listeners = new Map();
11
+ states = new Map();
12
+ activeKey = null;
13
+ subscribed = false;
14
+ get isAvailable() {
15
+ return !!AudioModule;
16
+ }
17
+ ensureSubscribed() {
18
+ if (this.subscribed || !AudioModule) return;
19
+ this.subscribed = true;
20
+ onAudioState(event => this.handleEvent(event));
21
+ }
22
+ handleEvent(event) {
23
+ const prev = this.getState(event.key);
24
+ let next;
25
+ switch (event.state) {
26
+ case 'loading':
27
+ next = {
28
+ state: 'loading',
29
+ positionMillis: 0,
30
+ durationMillis: event.durationMillis
31
+ };
32
+ break;
33
+ case 'playing':
34
+ next = {
35
+ state: 'playing',
36
+ positionMillis: event.positionMillis,
37
+ durationMillis: event.durationMillis || prev.durationMillis
38
+ };
39
+ break;
40
+ case 'paused':
41
+ next = {
42
+ state: 'paused',
43
+ positionMillis: event.positionMillis,
44
+ durationMillis: event.durationMillis || prev.durationMillis
45
+ };
46
+ break;
47
+ case 'ended':
48
+ case 'stopped':
49
+ next = {
50
+ state: 'idle',
51
+ positionMillis: 0,
52
+ durationMillis: event.durationMillis || prev.durationMillis
53
+ };
54
+ if (this.activeKey === event.key) this.activeKey = null;
55
+ break;
56
+ case 'error':
57
+ default:
58
+ next = {
59
+ state: 'error',
60
+ positionMillis: 0,
61
+ durationMillis: 0
62
+ };
63
+ if (this.activeKey === event.key) this.activeKey = null;
64
+ break;
65
+ }
66
+ this.setState(event.key, next);
67
+ }
68
+ setState(key, state) {
69
+ this.states.set(key, state);
70
+ this.listeners.get(key)?.forEach(listener => listener(state));
71
+ }
72
+ getState(key) {
73
+ return this.states.get(key) ?? IDLE;
74
+ }
75
+ subscribe(key, listener) {
76
+ this.ensureSubscribed();
77
+ let set = this.listeners.get(key);
78
+ if (!set) {
79
+ set = new Set();
80
+ this.listeners.set(key, set);
81
+ }
82
+ set.add(listener);
83
+ listener(this.getState(key));
84
+ return () => {
85
+ set.delete(listener);
86
+ if (set.size === 0) this.listeners.delete(key);
87
+ };
88
+ }
89
+ async play(key, url, headers = {}) {
90
+ if (!AudioModule) return;
91
+ this.ensureSubscribed();
92
+ if (this.activeKey && this.activeKey !== key) {
93
+ const prevKey = this.activeKey;
94
+ const prev = this.getState(prevKey);
95
+ this.setState(prevKey, {
96
+ state: 'idle',
97
+ positionMillis: 0,
98
+ durationMillis: prev.durationMillis
99
+ });
100
+ }
101
+ this.activeKey = key;
102
+ const current = this.getState(key);
103
+ if (current.state === 'idle' || current.state === 'error') {
104
+ this.setState(key, {
105
+ ...current,
106
+ state: 'loading',
107
+ positionMillis: 0
108
+ });
109
+ }
110
+ try {
111
+ await AudioModule.play(key, url, headers);
112
+ } catch {
113
+ this.setState(key, {
114
+ state: 'error',
115
+ positionMillis: 0,
116
+ durationMillis: 0
117
+ });
118
+ }
119
+ }
120
+ async pause(key) {
121
+ if (!AudioModule) return;
122
+ try {
123
+ await AudioModule.pause(key);
124
+ } catch {}
125
+ }
126
+ async seek(key, positionMillis) {
127
+ if (!AudioModule) return;
128
+ try {
129
+ await AudioModule.seek(key, positionMillis);
130
+ } catch {}
131
+ }
132
+ async stop(key) {
133
+ if (!AudioModule) return;
134
+ try {
135
+ await AudioModule.stop(key);
136
+ } catch {}
137
+ }
138
+ }
139
+ export const audioController = new AudioController();
140
+ //# sourceMappingURL=audioController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AudioModule","onAudioState","IDLE","state","positionMillis","durationMillis","AudioController","listeners","Map","states","activeKey","subscribed","isAvailable","ensureSubscribed","event","handleEvent","prev","getState","key","next","setState","set","get","forEach","listener","subscribe","Set","add","delete","size","play","url","headers","prevKey","current","pause","seek","stop","audioController"],"sourceRoot":"..\\..\\..\\src","sources":["audio/audioController.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+
3
+ import React, { useEffect, useState } from 'react';
4
+ import { ActivityIndicator, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
5
+ import { audioController } from "../audio/audioController.js";
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ function attachmentKey(attachment) {
8
+ return attachment.id > 0 ? `a${attachment.id}` : `t${attachment.url}`;
9
+ }
10
+ function formatTime(millis) {
11
+ if (!Number.isFinite(millis) || millis <= 0) return '0:00';
12
+ const totalSeconds = Math.floor(millis / 1000);
13
+ const minutes = Math.floor(totalSeconds / 60);
14
+ const seconds = totalSeconds % 60;
15
+ return `${minutes}:${seconds.toString().padStart(2, '0')}`;
16
+ }
17
+ export function AudioMessage({
18
+ attachment,
19
+ isOutbound,
20
+ theme
21
+ }) {
22
+ const key = attachmentKey(attachment);
23
+ const [pb, setPb] = useState(() => audioController.getState(key));
24
+ const [trackWidth, setTrackWidth] = useState(0);
25
+ useEffect(() => audioController.subscribe(key, setPb), [key]);
26
+ const isPlaying = pb.state === 'playing';
27
+ const isLoading = pb.state === 'loading';
28
+ const isError = pb.state === 'error';
29
+ const duration = pb.durationMillis;
30
+ const position = pb.positionMillis;
31
+ const progress = duration > 0 ? Math.min(1, position / duration) : 0;
32
+ const accent = isOutbound ? '#ffffff' : theme.primaryColor;
33
+ const trackBg = isOutbound ? 'rgba(255,255,255,0.30)' : 'rgba(0,0,0,0.12)';
34
+ const timeColor = isOutbound ? 'rgba(255,255,255,0.75)' : theme.systemText;
35
+ const iconColor = isOutbound ? theme.primaryColor : '#ffffff';
36
+ const onToggle = () => {
37
+ if (isPlaying) {
38
+ void audioController.pause(key);
39
+ } else {
40
+ void audioController.play(key, attachment.url);
41
+ }
42
+ };
43
+ const onSeek = e => {
44
+ if (duration <= 0 || trackWidth <= 0) return;
45
+ const ratio = Math.max(0, Math.min(1, e.nativeEvent.locationX / trackWidth));
46
+ void audioController.seek(key, ratio * duration);
47
+ };
48
+ const onTrackLayout = e => {
49
+ setTrackWidth(e.nativeEvent.layout.width);
50
+ };
51
+ const timeLabel = duration > 0 ? `${formatTime(position)} / ${formatTime(duration)}` : isError ? 'Не удалось воспроизвести' : formatTime(position);
52
+ return /*#__PURE__*/_jsxs(View, {
53
+ style: styles.root,
54
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
55
+ style: [styles.button, {
56
+ backgroundColor: accent
57
+ }],
58
+ onPress: onToggle,
59
+ activeOpacity: 0.8,
60
+ disabled: isLoading,
61
+ children: isLoading ? /*#__PURE__*/_jsx(ActivityIndicator, {
62
+ size: "small",
63
+ color: iconColor
64
+ }) : isPlaying ? /*#__PURE__*/_jsx(PauseIcon, {
65
+ color: iconColor
66
+ }) : /*#__PURE__*/_jsx(PlayIcon, {
67
+ color: iconColor
68
+ })
69
+ }), /*#__PURE__*/_jsxs(View, {
70
+ style: styles.body,
71
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
72
+ activeOpacity: 1,
73
+ onPress: onSeek,
74
+ onLayout: onTrackLayout,
75
+ style: styles.trackWrap,
76
+ children: /*#__PURE__*/_jsxs(View, {
77
+ style: [styles.track, {
78
+ backgroundColor: trackBg
79
+ }],
80
+ children: [/*#__PURE__*/_jsx(View, {
81
+ style: [styles.trackFill, {
82
+ backgroundColor: accent,
83
+ width: `${progress * 100}%`
84
+ }]
85
+ }), /*#__PURE__*/_jsx(View, {
86
+ style: [styles.thumb, {
87
+ backgroundColor: accent,
88
+ left: `${progress * 100}%`
89
+ }]
90
+ })]
91
+ })
92
+ }), /*#__PURE__*/_jsx(Text, {
93
+ style: [styles.time, {
94
+ color: timeColor
95
+ }],
96
+ children: timeLabel
97
+ })]
98
+ })]
99
+ });
100
+ }
101
+ function PlayIcon({
102
+ color
103
+ }) {
104
+ return /*#__PURE__*/_jsx(View, {
105
+ style: [styles.playTriangle, {
106
+ borderLeftColor: color
107
+ }]
108
+ });
109
+ }
110
+ function PauseIcon({
111
+ color
112
+ }) {
113
+ return /*#__PURE__*/_jsxs(View, {
114
+ style: styles.pauseWrap,
115
+ children: [/*#__PURE__*/_jsx(View, {
116
+ style: [styles.pauseBar, {
117
+ backgroundColor: color
118
+ }]
119
+ }), /*#__PURE__*/_jsx(View, {
120
+ style: [styles.pauseBar, {
121
+ backgroundColor: color
122
+ }]
123
+ })]
124
+ });
125
+ }
126
+ const BUTTON_SIZE = 40;
127
+ const styles = StyleSheet.create({
128
+ root: {
129
+ flexDirection: 'row',
130
+ alignItems: 'center',
131
+ gap: 10,
132
+ minWidth: 200,
133
+ paddingVertical: 2
134
+ },
135
+ button: {
136
+ width: BUTTON_SIZE,
137
+ height: BUTTON_SIZE,
138
+ borderRadius: BUTTON_SIZE / 2,
139
+ alignItems: 'center',
140
+ justifyContent: 'center',
141
+ flexShrink: 0
142
+ },
143
+ body: {
144
+ flex: 1,
145
+ gap: 4
146
+ },
147
+ trackWrap: {
148
+ paddingVertical: 8,
149
+ justifyContent: 'center'
150
+ },
151
+ track: {
152
+ height: 4,
153
+ borderRadius: 2
154
+ },
155
+ trackFill: {
156
+ height: 4,
157
+ borderRadius: 2
158
+ },
159
+ thumb: {
160
+ position: 'absolute',
161
+ top: -3,
162
+ width: 10,
163
+ height: 10,
164
+ borderRadius: 5,
165
+ marginLeft: -5
166
+ },
167
+ time: {
168
+ fontSize: 11,
169
+ lineHeight: 14
170
+ },
171
+ playTriangle: {
172
+ width: 0,
173
+ height: 0,
174
+ backgroundColor: 'transparent',
175
+ borderStyle: 'solid',
176
+ borderTopWidth: 7,
177
+ borderBottomWidth: 7,
178
+ borderLeftWidth: 12,
179
+ borderTopColor: 'transparent',
180
+ borderBottomColor: 'transparent',
181
+ marginLeft: 3
182
+ },
183
+ pauseWrap: {
184
+ flexDirection: 'row',
185
+ gap: 4
186
+ },
187
+ pauseBar: {
188
+ width: 4,
189
+ height: 14,
190
+ borderRadius: 1
191
+ }
192
+ });
193
+ //# sourceMappingURL=AudioMessage.js.map