stream-chat-react 11.14.0 → 11.15.1

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 (203) hide show
  1. package/dist/{Window-64e7e4c0.js → Window-847d5d88.js} +13829 -299
  2. package/dist/browser.full-bundle.js +48811 -35270
  3. package/dist/browser.full-bundle.js.map +1 -1
  4. package/dist/browser.full-bundle.min.js +4 -4
  5. package/dist/browser.full-bundle.min.js.map +1 -1
  6. package/dist/components/Attachment/Audio.d.ts.map +1 -1
  7. package/dist/components/Attachment/Audio.js +7 -4
  8. package/dist/components/Attachment/Card.d.ts +1 -1
  9. package/dist/components/Attachment/Card.d.ts.map +1 -1
  10. package/dist/components/Attachment/Card.js +4 -2
  11. package/dist/components/Attachment/VoiceRecording.d.ts.map +1 -1
  12. package/dist/components/Attachment/VoiceRecording.js +6 -4
  13. package/dist/components/Attachment/audioSampling.d.ts +10 -0
  14. package/dist/components/Attachment/audioSampling.d.ts.map +1 -0
  15. package/dist/components/Attachment/audioSampling.js +83 -0
  16. package/dist/components/Attachment/components/WaveProgressBar.d.ts +3 -10
  17. package/dist/components/Attachment/components/WaveProgressBar.d.ts.map +1 -1
  18. package/dist/components/Attachment/components/WaveProgressBar.js +23 -90
  19. package/dist/components/Attachment/hooks/useAudioController.d.ts +11 -3
  20. package/dist/components/Attachment/hooks/useAudioController.d.ts.map +1 -1
  21. package/dist/components/Attachment/hooks/useAudioController.js +89 -26
  22. package/dist/components/Attachment/index.d.ts +1 -0
  23. package/dist/components/Attachment/index.d.ts.map +1 -1
  24. package/dist/components/Attachment/index.js +1 -0
  25. package/dist/components/Attachment/utils.d.ts +5 -3
  26. package/dist/components/Attachment/utils.d.ts.map +1 -1
  27. package/dist/components/Attachment/utils.js +1 -0
  28. package/dist/components/Channel/Channel.d.ts +5 -1
  29. package/dist/components/Channel/Channel.d.ts.map +1 -1
  30. package/dist/components/Channel/Channel.js +2 -0
  31. package/dist/components/ChannelSearch/SearchResults.d.ts +2 -2
  32. package/dist/components/ChannelSearch/SearchResults.d.ts.map +1 -1
  33. package/dist/components/ChannelSearch/SearchResults.js +1 -1
  34. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts +1 -1
  35. package/dist/components/ChannelSearch/hooks/useChannelSearch.d.ts.map +1 -1
  36. package/dist/components/ChannelSearch/hooks/useChannelSearch.js +1 -1
  37. package/dist/components/Emojis/EmojiPicker.d.ts +2 -2
  38. package/dist/components/Emojis/index.cjs.js +2 -2
  39. package/dist/components/MediaRecorder/AudioRecorder/AudioRecorder.d.ts +3 -0
  40. package/dist/components/MediaRecorder/AudioRecorder/AudioRecorder.d.ts.map +1 -0
  41. package/dist/components/MediaRecorder/AudioRecorder/AudioRecorder.js +24 -0
  42. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingButtons.d.ts +4 -0
  43. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingButtons.d.ts.map +1 -0
  44. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingButtons.js +5 -0
  45. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.d.ts +3 -0
  46. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.d.ts.map +1 -0
  47. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingInProgress.js +47 -0
  48. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.d.ts +8 -0
  49. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.d.ts.map +1 -0
  50. package/dist/components/MediaRecorder/AudioRecorder/AudioRecordingPreview.js +21 -0
  51. package/dist/components/MediaRecorder/AudioRecorder/RecordingTimer.d.ts +6 -0
  52. package/dist/components/MediaRecorder/AudioRecorder/RecordingTimer.d.ts.map +1 -0
  53. package/dist/components/MediaRecorder/AudioRecorder/RecordingTimer.js +9 -0
  54. package/dist/components/MediaRecorder/AudioRecorder/index.d.ts +4 -0
  55. package/dist/components/MediaRecorder/AudioRecorder/index.d.ts.map +1 -0
  56. package/dist/components/MediaRecorder/AudioRecorder/index.js +3 -0
  57. package/dist/components/MediaRecorder/RecordingPermissionDeniedNotification.d.ts +8 -0
  58. package/dist/components/MediaRecorder/RecordingPermissionDeniedNotification.d.ts.map +1 -0
  59. package/dist/components/MediaRecorder/RecordingPermissionDeniedNotification.js +21 -0
  60. package/dist/components/MediaRecorder/classes/AmplitudeRecorder.d.ts +55 -0
  61. package/dist/components/MediaRecorder/classes/AmplitudeRecorder.d.ts.map +1 -0
  62. package/dist/components/MediaRecorder/classes/AmplitudeRecorder.js +93 -0
  63. package/dist/components/MediaRecorder/classes/BrowserPermission.d.ts +23 -0
  64. package/dist/components/MediaRecorder/classes/BrowserPermission.d.ts.map +1 -0
  65. package/dist/components/MediaRecorder/classes/BrowserPermission.js +98 -0
  66. package/dist/components/MediaRecorder/classes/MediaRecorderController.d.ts +83 -0
  67. package/dist/components/MediaRecorder/classes/MediaRecorderController.d.ts.map +1 -0
  68. package/dist/components/MediaRecorder/classes/MediaRecorderController.js +313 -0
  69. package/dist/components/MediaRecorder/classes/index.d.ts +4 -0
  70. package/dist/components/MediaRecorder/classes/index.d.ts.map +1 -0
  71. package/dist/components/MediaRecorder/classes/index.js +2 -0
  72. package/dist/components/MediaRecorder/hooks/index.d.ts +2 -0
  73. package/dist/components/MediaRecorder/hooks/index.d.ts.map +1 -0
  74. package/dist/components/MediaRecorder/hooks/index.js +1 -0
  75. package/dist/components/MediaRecorder/hooks/useMediaRecorder.d.ts +20 -0
  76. package/dist/components/MediaRecorder/hooks/useMediaRecorder.d.ts.map +1 -0
  77. package/dist/components/MediaRecorder/hooks/useMediaRecorder.js +73 -0
  78. package/dist/components/MediaRecorder/index.d.ts +6 -0
  79. package/dist/components/MediaRecorder/index.d.ts.map +1 -0
  80. package/dist/components/MediaRecorder/index.js +5 -0
  81. package/dist/components/MediaRecorder/observable/BehaviorSubject.d.ts +11 -0
  82. package/dist/components/MediaRecorder/observable/BehaviorSubject.d.ts.map +1 -0
  83. package/dist/components/MediaRecorder/observable/BehaviorSubject.js +34 -0
  84. package/dist/components/MediaRecorder/observable/Observable.d.ts +18 -0
  85. package/dist/components/MediaRecorder/observable/Observable.d.ts.map +1 -0
  86. package/dist/components/MediaRecorder/observable/Observable.js +29 -0
  87. package/dist/components/MediaRecorder/observable/Observer.d.ts +10 -0
  88. package/dist/components/MediaRecorder/observable/Observer.d.ts.map +1 -0
  89. package/dist/components/MediaRecorder/observable/Observer.js +3 -0
  90. package/dist/components/MediaRecorder/observable/Subject.d.ts +16 -0
  91. package/dist/components/MediaRecorder/observable/Subject.d.ts.map +1 -0
  92. package/dist/components/MediaRecorder/observable/Subject.js +70 -0
  93. package/dist/components/MediaRecorder/observable/Subscription.d.ts +11 -0
  94. package/dist/components/MediaRecorder/observable/Subscription.d.ts.map +1 -0
  95. package/dist/components/MediaRecorder/observable/Subscription.js +13 -0
  96. package/dist/components/MediaRecorder/observable/index.d.ts +6 -0
  97. package/dist/components/MediaRecorder/observable/index.d.ts.map +1 -0
  98. package/dist/components/MediaRecorder/observable/index.js +5 -0
  99. package/dist/components/MediaRecorder/transcode/audioProcessing.d.ts +16 -0
  100. package/dist/components/MediaRecorder/transcode/audioProcessing.d.ts.map +1 -0
  101. package/dist/components/MediaRecorder/transcode/audioProcessing.js +51 -0
  102. package/dist/components/MediaRecorder/transcode/index.d.ts +8 -0
  103. package/dist/components/MediaRecorder/transcode/index.d.ts.map +1 -0
  104. package/dist/components/MediaRecorder/transcode/index.js +18 -0
  105. package/dist/components/MediaRecorder/transcode/mp3.d.ts +2 -0
  106. package/dist/components/MediaRecorder/transcode/mp3.d.ts.map +1 -0
  107. package/dist/components/MediaRecorder/transcode/mp3.js +53 -0
  108. package/dist/components/MediaRecorder/transcode/wav.d.ts +8 -0
  109. package/dist/components/MediaRecorder/transcode/wav.d.ts.map +1 -0
  110. package/dist/components/MediaRecorder/transcode/wav.js +117 -0
  111. package/dist/components/MessageInput/AttachmentPreviewList.d.ts +2 -1
  112. package/dist/components/MessageInput/AttachmentPreviewList.d.ts.map +1 -1
  113. package/dist/components/MessageInput/AttachmentPreviewList.js +66 -20
  114. package/dist/components/MessageInput/CooldownTimer.d.ts.map +1 -1
  115. package/dist/components/MessageInput/CooldownTimer.js +4 -17
  116. package/dist/components/MessageInput/MessageInput.d.ts +10 -0
  117. package/dist/components/MessageInput/MessageInput.d.ts.map +1 -1
  118. package/dist/components/MessageInput/MessageInputFlat.d.ts.map +1 -1
  119. package/dist/components/MessageInput/MessageInputFlat.js +31 -9
  120. package/dist/components/MessageInput/MessageInputSmall.d.ts.map +1 -1
  121. package/dist/components/MessageInput/MessageInputSmall.js +3 -2
  122. package/dist/components/MessageInput/SendButton.d.ts +8 -0
  123. package/dist/components/MessageInput/SendButton.d.ts.map +1 -0
  124. package/dist/components/MessageInput/SendButton.js +9 -0
  125. package/dist/components/MessageInput/hooks/useAttachments.d.ts +5 -2
  126. package/dist/components/MessageInput/hooks/useAttachments.d.ts.map +1 -1
  127. package/dist/components/MessageInput/hooks/useAttachments.js +87 -3
  128. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.d.ts.map +1 -1
  129. package/dist/components/MessageInput/hooks/useCreateMessageInputContext.js +12 -2
  130. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts +22 -7
  131. package/dist/components/MessageInput/hooks/useMessageInputState.d.ts.map +1 -1
  132. package/dist/components/MessageInput/hooks/useMessageInputState.js +31 -5
  133. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts +2 -2
  134. package/dist/components/MessageInput/hooks/useSubmitHandler.d.ts.map +1 -1
  135. package/dist/components/MessageInput/hooks/useSubmitHandler.js +15 -6
  136. package/dist/components/MessageInput/hooks/useTimeElapsed.d.ts +10 -0
  137. package/dist/components/MessageInput/hooks/useTimeElapsed.d.ts.map +1 -0
  138. package/dist/components/MessageInput/hooks/useTimeElapsed.js +30 -0
  139. package/dist/components/MessageInput/hooks/useTimer.d.ts +4 -0
  140. package/dist/components/MessageInput/hooks/useTimer.d.ts.map +1 -0
  141. package/dist/components/MessageInput/hooks/useTimer.js +20 -0
  142. package/dist/components/MessageInput/icons.d.ts +5 -6
  143. package/dist/components/MessageInput/icons.d.ts.map +1 -1
  144. package/dist/components/MessageInput/icons.js +13 -10
  145. package/dist/components/MessageInput/index.d.ts +1 -0
  146. package/dist/components/MessageInput/index.d.ts.map +1 -1
  147. package/dist/components/MessageInput/index.js +1 -0
  148. package/dist/components/MessageInput/types.d.ts +36 -1
  149. package/dist/components/MessageInput/types.d.ts.map +1 -1
  150. package/dist/components/ReactFileUtilities/types.d.ts +1 -0
  151. package/dist/components/ReactFileUtilities/types.d.ts.map +1 -1
  152. package/dist/components/ReactFileUtilities/utils.d.ts +9 -1
  153. package/dist/components/ReactFileUtilities/utils.d.ts.map +1 -1
  154. package/dist/components/ReactFileUtilities/utils.js +25 -0
  155. package/dist/components/Reactions/utils/utils.d.ts +2 -1
  156. package/dist/components/Reactions/utils/utils.d.ts.map +1 -1
  157. package/dist/components/index.d.ts +1 -0
  158. package/dist/components/index.d.ts.map +1 -1
  159. package/dist/components/index.js +1 -0
  160. package/dist/context/ComponentContext.d.ts +7 -4
  161. package/dist/context/ComponentContext.d.ts.map +1 -1
  162. package/dist/context/MessageInputContext.d.ts +4 -1
  163. package/dist/context/MessageInputContext.d.ts.map +1 -1
  164. package/dist/css/v2/index.css +2 -2
  165. package/dist/css/v2/index.layout.css +2 -2
  166. package/dist/i18n/Streami18n.d.ts +13 -0
  167. package/dist/i18n/Streami18n.d.ts.map +1 -1
  168. package/dist/i18n/de.json +13 -0
  169. package/dist/i18n/en.json +13 -0
  170. package/dist/i18n/es.json +13 -0
  171. package/dist/i18n/fr.json +13 -0
  172. package/dist/i18n/hi.json +13 -0
  173. package/dist/i18n/it.json +13 -0
  174. package/dist/i18n/ja.json +13 -0
  175. package/dist/i18n/ko.json +13 -0
  176. package/dist/i18n/nl.json +13 -0
  177. package/dist/i18n/pt.json +13 -0
  178. package/dist/i18n/ru.json +13 -0
  179. package/dist/i18n/tr.json +13 -0
  180. package/dist/index.cjs.js +22 -3
  181. package/dist/scss/v2/AttachmentList/AttachmentList-layout.scss +38 -13
  182. package/dist/scss/v2/AttachmentList/AttachmentList-theme.scss +44 -0
  183. package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-layout.scss +17 -10
  184. package/dist/scss/v2/AttachmentPreviewList/AttachmentPreviewList-theme.scss +16 -0
  185. package/dist/scss/v2/AudioRecorder/AudioRecorder-layout.scss +89 -0
  186. package/dist/scss/v2/AudioRecorder/AudioRecorder-theme.scss +51 -0
  187. package/dist/scss/v2/ChannelPreview/ChannelPreview-layout.scss +19 -2
  188. package/dist/scss/v2/ChannelPreview/ChannelPreview-theme.scss +21 -0
  189. package/dist/scss/v2/Message/Message-layout.scss +2 -2
  190. package/dist/scss/v2/MessageInput/MessageInput-layout.scss +30 -1
  191. package/dist/scss/v2/MessageInput/MessageInput-theme.scss +62 -2
  192. package/dist/scss/v2/_base.scss +2 -2
  193. package/dist/scss/v2/index.layout.scss +1 -0
  194. package/dist/scss/v2/index.scss +1 -0
  195. package/dist/utils/mergeDeep.d.ts +4 -0
  196. package/dist/utils/mergeDeep.d.ts.map +1 -0
  197. package/dist/utils/mergeDeep.js +5 -0
  198. package/dist/version.d.ts +1 -1
  199. package/dist/version.js +1 -1
  200. package/package.json +6 -2
  201. package/dist/components/MessageInput/hooks/useFileState.d.ts +0 -7
  202. package/dist/components/MessageInput/hooks/useFileState.d.ts.map +0 -1
  203. package/dist/components/MessageInput/hooks/useFileState.js +0 -8
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BehaviorSubject.d.ts","sourceRoot":"","sources":["../../../../src/components/MediaRecorder/observable/BehaviorSubject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,qBAAa,eAAe,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,CAAC;IAI7B,IAAI,KAAK,IAAI,CAAC,CAMb;IAED,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,YAAY;IAO1D,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;CAGrB"}
@@ -0,0 +1,34 @@
1
+ import { __extends } from "tslib";
2
+ import { Subject } from './Subject';
3
+ import { createObserver } from './Observer';
4
+ var BehaviorSubject = /** @class */ (function (_super) {
5
+ __extends(BehaviorSubject, _super);
6
+ function BehaviorSubject(_value) {
7
+ var _this = _super.call(this) || this;
8
+ _this._value = _value;
9
+ return _this;
10
+ }
11
+ Object.defineProperty(BehaviorSubject.prototype, "value", {
12
+ get: function () {
13
+ var _a = this, _value = _a._value, thrownError = _a.thrownError;
14
+ if (thrownError) {
15
+ throw thrownError;
16
+ }
17
+ return _value;
18
+ },
19
+ enumerable: false,
20
+ configurable: true
21
+ });
22
+ BehaviorSubject.prototype.subscribe = function (observerOrNext) {
23
+ var observer = createObserver(observerOrNext);
24
+ var subscription = _super.prototype.subscribe.call(this, observerOrNext);
25
+ if (!subscription.closed)
26
+ observer.next(this._value);
27
+ return subscription;
28
+ };
29
+ BehaviorSubject.prototype.next = function (value) {
30
+ _super.prototype.next.call(this, (this._value = value));
31
+ };
32
+ return BehaviorSubject;
33
+ }(Subject));
34
+ export { BehaviorSubject };
@@ -0,0 +1,18 @@
1
+ import { ObserverOrNext } from './Observer';
2
+ import { Subscription } from './Subscription';
3
+ export interface Unsubscribable {
4
+ unsubscribe(): void;
5
+ }
6
+ type Producer<T> = (observer: ObserverOrNext<T>) => Subscription;
7
+ export interface Subscribable<T> {
8
+ subscribe(observerOrNext: ObserverOrNext<T>): Unsubscribable;
9
+ }
10
+ export declare class Observable<T> implements Subscribable<T> {
11
+ protected _closed: boolean;
12
+ private _producer;
13
+ constructor(producer?: Producer<T>);
14
+ get closed(): boolean;
15
+ subscribe(observerOrNext: ObserverOrNext<T>): Subscription;
16
+ }
17
+ export {};
18
+ //# sourceMappingURL=Observable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Observable.d.ts","sourceRoot":"","sources":["../../../../src/components/MediaRecorder/observable/Observable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,WAAW,cAAc;IAC7B,WAAW,IAAI,IAAI,CAAC;CACrB;AAED,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC;AAEjE,MAAM,WAAW,YAAY,CAAC,CAAC;IAC7B,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC;CAC9D;AAED,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,YAAY,CAAC,CAAC,CAAC;IACnD,SAAS,CAAC,OAAO,UAAS;IAC1B,OAAO,CAAC,SAAS,CAA0B;gBAE/B,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAIlC,IAAI,MAAM,YAET;IAED,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,YAAY;CAS3D"}
@@ -0,0 +1,29 @@
1
+ import { createObserver } from './Observer';
2
+ import { Subscription } from './Subscription';
3
+ var Observable = /** @class */ (function () {
4
+ function Observable(producer) {
5
+ this._closed = false;
6
+ if (producer)
7
+ this._producer = producer;
8
+ }
9
+ Object.defineProperty(Observable.prototype, "closed", {
10
+ get: function () {
11
+ return this._closed;
12
+ },
13
+ enumerable: false,
14
+ configurable: true
15
+ });
16
+ Observable.prototype.subscribe = function (observerOrNext) {
17
+ var _this = this;
18
+ var _a;
19
+ var observer = createObserver(observerOrNext);
20
+ if (!this.closed) {
21
+ (_a = this._producer) === null || _a === void 0 ? void 0 : _a.call(this, observer);
22
+ }
23
+ return new Subscription(function () {
24
+ _this._closed = true;
25
+ });
26
+ };
27
+ return Observable;
28
+ }());
29
+ export { Observable };
@@ -0,0 +1,10 @@
1
+ type Next<T> = (value: T) => void;
2
+ export type Observer<T> = {
3
+ next(value: T): void;
4
+ complete?(): void;
5
+ error?(error: Error): void;
6
+ };
7
+ export type ObserverOrNext<T> = Next<T> | Observer<T>;
8
+ export declare function createObserver<T>(observerOrNext: ObserverOrNext<T>): Observer<T>;
9
+ export {};
10
+ //# sourceMappingURL=Observer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Observer.d.ts","sourceRoot":"","sources":["../../../../src/components/MediaRecorder/observable/Observer.ts"],"names":[],"mappings":"AAAA,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAClC,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;IACxB,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,IAAI,IAAI,CAAC;IAClB,KAAK,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CAC5B,CAAC;AACF,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAEtD,wBAAgB,cAAc,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAEhF"}
@@ -0,0 +1,3 @@
1
+ export function createObserver(observerOrNext) {
2
+ return typeof observerOrNext === 'function' ? { next: observerOrNext } : observerOrNext;
3
+ }
@@ -0,0 +1,16 @@
1
+ import { Observable } from './Observable';
2
+ import { Subscription, SubscriptionLike } from './Subscription';
3
+ import { Observer, ObserverOrNext } from './Observer';
4
+ export declare class Subject<T> extends Observable<T> implements SubscriptionLike {
5
+ private _observers;
6
+ private _observerCounter;
7
+ thrownError: Error | undefined;
8
+ constructor();
9
+ get observers(): Observer<T>[];
10
+ next(value: T): void;
11
+ error(err: Error): void;
12
+ complete(): void;
13
+ subscribe(observerOrNext: ObserverOrNext<T>): Subscription;
14
+ unsubscribe(): void;
15
+ }
16
+ //# sourceMappingURL=Subject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subject.d.ts","sourceRoot":"","sources":["../../../../src/components/MediaRecorder/observable/Subject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAkB,QAAQ,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEtE,qBAAa,OAAO,CAAC,CAAC,CAAE,SAAQ,UAAU,CAAC,CAAC,CAAE,YAAW,gBAAgB;IACvE,OAAO,CAAC,UAAU,CAAuC;IACzD,OAAO,CAAC,gBAAgB,CAAK;IAC7B,WAAW,EAAE,KAAK,GAAG,SAAS,CAAC;;IAM/B,IAAI,SAAS,kBAEZ;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;IAQb,KAAK,CAAC,GAAG,EAAE,KAAK;IAUhB,QAAQ;IAUR,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,YAAY;IAe1D,WAAW,IAAI,IAAI;CAIpB"}
@@ -0,0 +1,70 @@
1
+ import { __extends } from "tslib";
2
+ import { Observable } from './Observable';
3
+ import { Subscription } from './Subscription';
4
+ import { createObserver } from './Observer';
5
+ var Subject = /** @class */ (function (_super) {
6
+ __extends(Subject, _super);
7
+ function Subject() {
8
+ var _this = _super.call(this) || this;
9
+ _this._observers = new Map();
10
+ _this._observerCounter = 0;
11
+ return _this;
12
+ }
13
+ Object.defineProperty(Subject.prototype, "observers", {
14
+ get: function () {
15
+ return Array.from(this._observers.values());
16
+ },
17
+ enumerable: false,
18
+ configurable: true
19
+ });
20
+ Subject.prototype.next = function (value) {
21
+ if (this.closed)
22
+ return;
23
+ var observers = this.observers;
24
+ for (var i = 0; i < observers.length; i++) {
25
+ observers[i].next(value);
26
+ }
27
+ };
28
+ Subject.prototype.error = function (err) {
29
+ var _a, _b;
30
+ if (this.closed)
31
+ return;
32
+ this.thrownError = err;
33
+ var observers = this.observers;
34
+ for (var i = 0; i < observers.length; i++) {
35
+ (_b = (_a = observers[i]).error) === null || _b === void 0 ? void 0 : _b.call(_a, err);
36
+ }
37
+ this._observers.clear();
38
+ };
39
+ Subject.prototype.complete = function () {
40
+ var _a, _b;
41
+ if (this.closed)
42
+ return;
43
+ this._closed = true;
44
+ var observers = this.observers;
45
+ for (var i = 0; i < observers.length; i++) {
46
+ (_b = (_a = observers[i]).complete) === null || _b === void 0 ? void 0 : _b.call(_a);
47
+ }
48
+ this._observers.clear();
49
+ };
50
+ Subject.prototype.subscribe = function (observerOrNext) {
51
+ var _this = this;
52
+ var observer = createObserver(observerOrNext);
53
+ if (this.thrownError || this.closed) {
54
+ var subscription = new Subscription();
55
+ subscription.closed = true;
56
+ return subscription;
57
+ }
58
+ var observerId = this._observerCounter++;
59
+ this._observers.set(observerId, observer);
60
+ return new Subscription(function () {
61
+ _this._observers.delete(observerId);
62
+ });
63
+ };
64
+ Subject.prototype.unsubscribe = function () {
65
+ this._closed = true;
66
+ this._observers.clear();
67
+ };
68
+ return Subject;
69
+ }(Observable));
70
+ export { Subject };
@@ -0,0 +1,11 @@
1
+ export interface SubscriptionLike {
2
+ closed: boolean;
3
+ unsubscribe(): void;
4
+ }
5
+ export declare class Subscription implements SubscriptionLike {
6
+ closed: boolean;
7
+ private _unsubscribe;
8
+ constructor(unsubscribe?: () => void);
9
+ unsubscribe(): void;
10
+ }
11
+ //# sourceMappingURL=Subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Subscription.d.ts","sourceRoot":"","sources":["../../../../src/components/MediaRecorder/observable/Subscription.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC;IAEhB,WAAW,IAAI,IAAI,CAAC;CACrB;AAED,qBAAa,YAAa,YAAW,gBAAgB;IACnD,MAAM,UAAS;IACf,OAAO,CAAC,YAAY,CAA2B;gBAEnC,WAAW,CAAC,EAAE,MAAM,IAAI;IAIpC,WAAW;CAIZ"}
@@ -0,0 +1,13 @@
1
+ var Subscription = /** @class */ (function () {
2
+ function Subscription(unsubscribe) {
3
+ this.closed = false;
4
+ this._unsubscribe = unsubscribe;
5
+ }
6
+ Subscription.prototype.unsubscribe = function () {
7
+ var _a;
8
+ this.closed = true;
9
+ (_a = this._unsubscribe) === null || _a === void 0 ? void 0 : _a.call(this);
10
+ };
11
+ return Subscription;
12
+ }());
13
+ export { Subscription };
@@ -0,0 +1,6 @@
1
+ export * from './BehaviorSubject';
2
+ export * from './Observable';
3
+ export * from './Observer';
4
+ export * from './Subject';
5
+ export * from './Subscription';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/MediaRecorder/observable/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './BehaviorSubject';
2
+ export * from './Observable';
3
+ export * from './Observer';
4
+ export * from './Subject';
5
+ export * from './Subscription';
@@ -0,0 +1,16 @@
1
+ /**
2
+ * In the context of resampling audio data, AudioContext is used to decode the input audio file into an AudioBuffer,
3
+ * which is a fundamental data structure representing audio data.
4
+ * @param file
5
+ */
6
+ export declare const toAudioBuffer: (file: File) => Promise<AudioBuffer>;
7
+ /**
8
+ * OfflineAudioContext is a specialized type of AudioContext that does not render audio in real-time and is used for offline audio processing tasks.
9
+ * It allows performing audio processing and rendering without actually playing the audio through speakers or outputting it to a destination.
10
+ * In the context of resampling audio data, OfflineAudioContext is used to resample the decoded AudioBuffer from a file to the desired sample rate.
11
+ * It provides more flexibility and control over audio processing, as it can operate at different sample rates and durations compared to real-time audio contexts.
12
+ * @param audioBuffer
13
+ * @param sampleRate
14
+ */
15
+ export declare const renderAudio: (audioBuffer: AudioBuffer, sampleRate: number) => Promise<AudioBuffer>;
16
+ //# sourceMappingURL=audioProcessing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audioProcessing.d.ts","sourceRoot":"","sources":["../../../../src/components/MediaRecorder/transcode/audioProcessing.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,eAAO,MAAM,aAAa,SAAgB,IAAI,yBAO7C,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gBAAuB,WAAW,cAAc,MAAM,yBAY7E,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { readFileAsArrayBuffer } from '../../ReactFileUtilities';
3
+ /**
4
+ * In the context of resampling audio data, AudioContext is used to decode the input audio file into an AudioBuffer,
5
+ * which is a fundamental data structure representing audio data.
6
+ * @param file
7
+ */
8
+ export var toAudioBuffer = function (file) { return __awaiter(void 0, void 0, void 0, function () {
9
+ var audioCtx, arrayBuffer, decodedData;
10
+ return __generator(this, function (_a) {
11
+ switch (_a.label) {
12
+ case 0:
13
+ audioCtx = new AudioContext();
14
+ return [4 /*yield*/, readFileAsArrayBuffer(file)];
15
+ case 1:
16
+ arrayBuffer = _a.sent();
17
+ return [4 /*yield*/, audioCtx.decodeAudioData(arrayBuffer)];
18
+ case 2:
19
+ decodedData = _a.sent();
20
+ if (!(audioCtx.state !== 'closed')) return [3 /*break*/, 4];
21
+ return [4 /*yield*/, audioCtx.close()];
22
+ case 3:
23
+ _a.sent();
24
+ _a.label = 4;
25
+ case 4: return [2 /*return*/, decodedData];
26
+ }
27
+ });
28
+ }); };
29
+ /**
30
+ * OfflineAudioContext is a specialized type of AudioContext that does not render audio in real-time and is used for offline audio processing tasks.
31
+ * It allows performing audio processing and rendering without actually playing the audio through speakers or outputting it to a destination.
32
+ * In the context of resampling audio data, OfflineAudioContext is used to resample the decoded AudioBuffer from a file to the desired sample rate.
33
+ * It provides more flexibility and control over audio processing, as it can operate at different sample rates and durations compared to real-time audio contexts.
34
+ * @param audioBuffer
35
+ * @param sampleRate
36
+ */
37
+ export var renderAudio = function (audioBuffer, sampleRate) { return __awaiter(void 0, void 0, void 0, function () {
38
+ var offlineAudioCtx, source;
39
+ return __generator(this, function (_a) {
40
+ switch (_a.label) {
41
+ case 0:
42
+ offlineAudioCtx = new OfflineAudioContext(audioBuffer.numberOfChannels, audioBuffer.duration * sampleRate, sampleRate);
43
+ source = offlineAudioCtx.createBufferSource();
44
+ source.buffer = audioBuffer;
45
+ source.connect(offlineAudioCtx.destination);
46
+ source.start();
47
+ return [4 /*yield*/, offlineAudioCtx.startRendering()];
48
+ case 1: return [2 /*return*/, _a.sent()];
49
+ }
50
+ });
51
+ }); };
@@ -0,0 +1,8 @@
1
+ type TranscodeParams = {
2
+ blob: Blob;
3
+ sampleRate: number;
4
+ targetMimeType: string;
5
+ };
6
+ export declare const transcode: ({ blob, sampleRate, targetMimeType }: TranscodeParams) => Promise<Blob>;
7
+ export {};
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/MediaRecorder/transcode/index.ts"],"names":[],"mappings":"AAIA,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,IAAI,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC;AACF,eAAO,MAAM,SAAS,yCAA0C,eAAe,KAAG,QAAQ,IAAI,CAe7F,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { encodeToWaw } from './wav';
2
+ import { encodeToMp3 } from './mp3';
3
+ import { createFileFromBlobs, getExtensionFromMimeType } from '../../ReactFileUtilities';
4
+ export var transcode = function (_a) {
5
+ var blob = _a.blob, sampleRate = _a.sampleRate, targetMimeType = _a.targetMimeType;
6
+ var file = createFileFromBlobs({
7
+ blobsArray: [blob],
8
+ fileName: "audio_recording_".concat(new Date().toISOString(), ".").concat(getExtensionFromMimeType(blob.type)),
9
+ mimeType: blob.type,
10
+ });
11
+ if (targetMimeType.match('audio/wav')) {
12
+ return encodeToWaw(file, sampleRate);
13
+ }
14
+ if (targetMimeType.match('audio/mp3')) {
15
+ return encodeToMp3(file, sampleRate);
16
+ }
17
+ return Promise.resolve(blob);
18
+ };
@@ -0,0 +1,2 @@
1
+ export declare function encodeToMp3(file: File, sampleRate: number): Promise<Blob>;
2
+ //# sourceMappingURL=mp3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mp3.d.ts","sourceRoot":"","sources":["../../../../src/components/MediaRecorder/transcode/mp3.ts"],"names":[],"mappings":"AAuBA,wBAAsB,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,iBAuB/D"}
@@ -0,0 +1,53 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { Mp3Encoder } from '@breezystack/lamejs';
3
+ import { renderAudio, toAudioBuffer } from './audioProcessing';
4
+ var ENCODING_BIT_RATE = 128; // kbps;
5
+ var COUNT_SAMPLES_PER_ENCODED_BLOCK = 1152;
6
+ var float32ArrayToInt16Array = function (float32Arr) {
7
+ var int16Arr = new Int16Array(float32Arr.length);
8
+ for (var i = 0; i < float32Arr.length; i++) {
9
+ var float32Value = float32Arr[i];
10
+ // Clamp the float value between -1 and 1
11
+ var clampedValue = Math.max(-1, Math.min(1, float32Value));
12
+ // Convert the float value to a signed 16-bit integer
13
+ int16Arr[i] = Math.round(clampedValue * 32767);
14
+ }
15
+ return int16Arr;
16
+ };
17
+ var splitDataByChannel = function (audioBuffer) {
18
+ return Array.from({ length: audioBuffer.numberOfChannels }, function (_, i) { return audioBuffer.getChannelData(i); }).map(float32ArrayToInt16Array);
19
+ };
20
+ export function encodeToMp3(file, sampleRate) {
21
+ return __awaiter(this, void 0, void 0, function () {
22
+ var audioBuffer, _a, channelCount, dataByChannel, mp3Encoder, dataBuffer, remaining, _loop_1, i, lastBlock;
23
+ return __generator(this, function (_b) {
24
+ switch (_b.label) {
25
+ case 0:
26
+ _a = renderAudio;
27
+ return [4 /*yield*/, toAudioBuffer(file)];
28
+ case 1: return [4 /*yield*/, _a.apply(void 0, [_b.sent(), sampleRate])];
29
+ case 2:
30
+ audioBuffer = _b.sent();
31
+ channelCount = audioBuffer.numberOfChannels;
32
+ dataByChannel = splitDataByChannel(audioBuffer);
33
+ mp3Encoder = new Mp3Encoder(channelCount, sampleRate, ENCODING_BIT_RATE);
34
+ dataBuffer = [];
35
+ remaining = dataByChannel[0].length;
36
+ _loop_1 = function (i) {
37
+ var _c = dataByChannel.map(function (channel) {
38
+ return channel.subarray(i, i + COUNT_SAMPLES_PER_ENCODED_BLOCK);
39
+ }), leftChannelBlock = _c[0], rightChannelBlock = _c[1];
40
+ dataBuffer.push(new Int8Array(mp3Encoder.encodeBuffer(leftChannelBlock, rightChannelBlock)));
41
+ remaining -= COUNT_SAMPLES_PER_ENCODED_BLOCK;
42
+ };
43
+ for (i = 0; remaining >= COUNT_SAMPLES_PER_ENCODED_BLOCK; i += COUNT_SAMPLES_PER_ENCODED_BLOCK) {
44
+ _loop_1(i);
45
+ }
46
+ lastBlock = mp3Encoder.flush();
47
+ if (lastBlock.length)
48
+ dataBuffer.push(new Int8Array(lastBlock));
49
+ return [2 /*return*/, new Blob(dataBuffer, { type: 'audio/mp3;sbu_type=voice' })];
50
+ }
51
+ });
52
+ });
53
+ }
@@ -0,0 +1,8 @@
1
+ export declare const readWavHeader: (dataView: DataView) => {
2
+ audioDataSizeBytes: number;
3
+ audioDataStartOffset: 44;
4
+ channelCount: number;
5
+ sampleRate: number;
6
+ } | undefined;
7
+ export declare const encodeToWaw: (file: File, sampleRate: number) => Promise<Blob>;
8
+ //# sourceMappingURL=wav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wav.d.ts","sourceRoot":"","sources":["../../../../src/components/MediaRecorder/transcode/wav.ts"],"names":[],"mappings":"AAyEA,eAAO,MAAM,aAAa,aAAc,QAAQ;;;;;aAqB/C,CAAC;AAkCF,eAAO,MAAM,WAAW,SAAgB,IAAI,cAAc,MAAM,kBAU/D,CAAC"}
@@ -0,0 +1,117 @@
1
+ import { __awaiter, __generator } from "tslib";
2
+ import { renderAudio, toAudioBuffer } from './audioProcessing';
3
+ var WAV_HEADER_LENGTH_BYTES = 44;
4
+ var BYTES_PER_SAMPLE = 2;
5
+ var RIFF_FILE_MAX_BYTES = 4294967295;
6
+ var HEADER = {
7
+ AUDIO_FORMAT: { offset: 20, value: 1 },
8
+ BITS_PER_SAMPLE: { offset: 34, value: BYTES_PER_SAMPLE * 8 },
9
+ BLOCK_ALIGN: { offset: 32 },
10
+ BYTE_RATE: { offset: 28 },
11
+ CHANNEL_COUNT: { offset: 22 },
12
+ CHUNK_ID: { offset: 0, value: 0x52494646 },
13
+ CHUNK_SIZE: { offset: 4 },
14
+ FILE_FORMAT: { offset: 8, value: 0x57415645 },
15
+ SAMPLE_RATE: { offset: 24 },
16
+ SUBCHUNK1_ID: { offset: 12, value: 0x666d7420 },
17
+ SUBCHUNK1_SIZE: { offset: 16, value: 16 },
18
+ SUBCHUNK2_ID: { offset: 36, value: 0x64617461 },
19
+ SUBCHUNK2_SIZE: { offset: 40 }, // actual audio data size
20
+ };
21
+ var fourCharsToInt = function (chars) {
22
+ return (chars.charCodeAt(0) << 24) |
23
+ (chars.charCodeAt(1) << 16) |
24
+ (chars.charCodeAt(2) << 8) |
25
+ chars.charCodeAt(3);
26
+ };
27
+ var WAV_HEADER_FLAGS = {
28
+ data: fourCharsToInt('data'),
29
+ fmt: fourCharsToInt('fmt '),
30
+ RIFF: fourCharsToInt('RIFF'),
31
+ WAVE: fourCharsToInt('WAVE'),
32
+ };
33
+ var writeWavHeader = function (_a) {
34
+ var arrayBuffer = _a.arrayBuffer, channelCount = _a.channelCount, sampleRate = _a.sampleRate;
35
+ var byteRate = sampleRate * channelCount * BYTES_PER_SAMPLE; // bytes/sec
36
+ var blockAlign = channelCount * BYTES_PER_SAMPLE;
37
+ var dataView = new DataView(arrayBuffer);
38
+ /*
39
+ * The maximum size of a RIFF file is 4294967295 bytes and since the header takes up 44 bytes there are 4294967251 bytes left for the
40
+ * data chunk.
41
+ */
42
+ var dataChunkSize = Math.min(dataView.byteLength - WAV_HEADER_LENGTH_BYTES, RIFF_FILE_MAX_BYTES - WAV_HEADER_LENGTH_BYTES);
43
+ dataView.setUint32(HEADER.CHUNK_ID.offset, HEADER.CHUNK_ID.value); // "RIFF"
44
+ dataView.setUint32(HEADER.CHUNK_SIZE.offset, arrayBuffer.byteLength - 8, true); // adjustment for the first two headers - chunk id + file size
45
+ dataView.setUint32(HEADER.FILE_FORMAT.offset, HEADER.FILE_FORMAT.value); // "WAVE"
46
+ dataView.setUint32(HEADER.SUBCHUNK1_ID.offset, HEADER.SUBCHUNK1_ID.value); // "fmt "
47
+ dataView.setUint32(HEADER.SUBCHUNK1_SIZE.offset, HEADER.SUBCHUNK1_SIZE.value, true);
48
+ dataView.setUint16(HEADER.AUDIO_FORMAT.offset, HEADER.AUDIO_FORMAT.value, true);
49
+ dataView.setUint16(HEADER.CHANNEL_COUNT.offset, channelCount, true);
50
+ dataView.setUint32(HEADER.SAMPLE_RATE.offset, sampleRate, true);
51
+ dataView.setUint32(HEADER.BYTE_RATE.offset, byteRate, true);
52
+ dataView.setUint16(HEADER.BLOCK_ALIGN.offset, blockAlign, true);
53
+ dataView.setUint16(HEADER.BITS_PER_SAMPLE.offset, HEADER.BITS_PER_SAMPLE.value, true);
54
+ dataView.setUint32(HEADER.SUBCHUNK2_ID.offset, HEADER.SUBCHUNK2_ID.value); // "data"
55
+ dataView.setUint32(HEADER.SUBCHUNK2_SIZE.offset, dataChunkSize, true);
56
+ };
57
+ export var readWavHeader = function (dataView) {
58
+ var header = dataView.getUint32(0, false);
59
+ if (WAV_HEADER_FLAGS.RIFF !== header) {
60
+ console.error('Missing RIFF header in WAVE file');
61
+ return;
62
+ }
63
+ if (WAV_HEADER_FLAGS.WAVE !== dataView.getUint32(HEADER.FILE_FORMAT.offset, false)) {
64
+ console.error('Missing WAVE header in WAVE file');
65
+ return;
66
+ }
67
+ if (WAV_HEADER_FLAGS.fmt !== dataView.getUint32(HEADER.SUBCHUNK1_ID.offset, false)) {
68
+ console.error('Missing fmt header in WAVE file');
69
+ return;
70
+ }
71
+ return {
72
+ audioDataSizeBytes: dataView.getUint32(HEADER.SUBCHUNK2_SIZE.offset, true),
73
+ audioDataStartOffset: WAV_HEADER_LENGTH_BYTES,
74
+ channelCount: dataView.getUint16(HEADER.CHANNEL_COUNT.offset, true),
75
+ sampleRate: dataView.getUint32(HEADER.SAMPLE_RATE.offset, true),
76
+ };
77
+ };
78
+ var splitDataByChannel = function (audioBuffer) {
79
+ return Array.from({ length: audioBuffer.numberOfChannels }, function (_, i) { return audioBuffer.getChannelData(i); });
80
+ };
81
+ /**
82
+ * In a WAV file, samples for each channel are usually interleaved, meaning samples from each channel are grouped together sequentially.
83
+ * For example, in a stereo audio file (2 channels), samples alternate between the left and right channels.
84
+ * @param arrayBuffer
85
+ * @param dataByChannel
86
+ */
87
+ var writeWavAudioData = function (_a) {
88
+ var arrayBuffer = _a.arrayBuffer, dataByChannel = _a.dataByChannel;
89
+ var dataView = new DataView(arrayBuffer);
90
+ var channelCount = dataByChannel.length;
91
+ dataByChannel.forEach(function (channelData, channelIndex) {
92
+ var writeOffset = WAV_HEADER_LENGTH_BYTES + channelCount * channelIndex;
93
+ channelData.forEach(function (float32Value) {
94
+ dataView.setInt16(writeOffset, float32Value < 0 ? Math.max(-1, float32Value) * 32768 : Math.min(1, float32Value) * 32767, true);
95
+ writeOffset += channelCount * BYTES_PER_SAMPLE;
96
+ });
97
+ });
98
+ };
99
+ export var encodeToWaw = function (file, sampleRate) { return __awaiter(void 0, void 0, void 0, function () {
100
+ var audioBuffer, _a, numberOfSamples, fileSizeBytes, arrayBuffer;
101
+ return __generator(this, function (_b) {
102
+ switch (_b.label) {
103
+ case 0:
104
+ _a = renderAudio;
105
+ return [4 /*yield*/, toAudioBuffer(file)];
106
+ case 1: return [4 /*yield*/, _a.apply(void 0, [_b.sent(), sampleRate])];
107
+ case 2:
108
+ audioBuffer = _b.sent();
109
+ numberOfSamples = audioBuffer.duration * sampleRate;
110
+ fileSizeBytes = numberOfSamples * audioBuffer.numberOfChannels * BYTES_PER_SAMPLE + WAV_HEADER_LENGTH_BYTES;
111
+ arrayBuffer = new ArrayBuffer(fileSizeBytes);
112
+ writeWavHeader({ arrayBuffer: arrayBuffer, channelCount: audioBuffer.numberOfChannels, sampleRate: sampleRate });
113
+ writeWavAudioData({ arrayBuffer: arrayBuffer, dataByChannel: splitDataByChannel(audioBuffer) });
114
+ return [2 /*return*/, new Blob([arrayBuffer], { type: 'audio/wav' })];
115
+ }
116
+ });
117
+ }); };
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- export declare const AttachmentPreviewList: () => React.JSX.Element;
2
+ import type { DefaultStreamChatGenerics } from '../../types';
3
+ export declare const AttachmentPreviewList: <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>() => React.JSX.Element;
3
4
  type PreviewItemProps = {
4
5
  id: string;
5
6
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AttachmentPreviewList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/AttachmentPreviewList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAC;AASrD,eAAO,MAAM,qBAAqB,yBAkBjC,CAAC;AAEF,KAAK,gBAAgB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,eAAO,MAAM,gBAAgB,WAAY,gBAAgB,6BA+DxD,CAAC"}
1
+ {"version":3,"file":"AttachmentPreviewList.d.ts","sourceRoot":"","sources":["../../../src/components/MessageInput/AttachmentPreviewList.tsx"],"names":[],"mappings":"AACA,OAAO,KAAgC,MAAM,OAAO,CAAC;AAgBrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAE7D,eAAO,MAAM,qBAAqB,2GAmDjC,CAAC;AA2GF,KAAK,gBAAgB,GAAG;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,eAAO,MAAM,gBAAgB,WAAY,gBAAgB,6BA+DxD,CAAC"}