stream-chat-angular 5.13.0 → 6.0.0-beta.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 (165) hide show
  1. package/assets/i18n/en.d.ts +1 -0
  2. package/assets/version.d.ts +1 -1
  3. package/{esm2020 → esm2022}/assets/i18n/en.mjs +2 -1
  4. package/{esm2020 → esm2022}/assets/version.mjs +2 -2
  5. package/{esm2020 → esm2022}/lib/attachment-configuration.service.mjs +4 -4
  6. package/esm2022/lib/attachment-list/attachment-list.component.mjs +212 -0
  7. package/esm2022/lib/attachment-preview-list/attachment-preview-list.component.mjs +55 -0
  8. package/{esm2020 → esm2022}/lib/attachment.service.mjs +5 -5
  9. package/esm2022/lib/avatar/avatar.component.mjs +157 -0
  10. package/{esm2020 → esm2022}/lib/avatar-placeholder/avatar-placeholder.component.mjs +6 -6
  11. package/esm2022/lib/channel/channel.component.mjs +45 -0
  12. package/esm2022/lib/channel-header/channel-header.component.mjs +72 -0
  13. package/esm2022/lib/channel-list/channel-list.component.mjs +50 -0
  14. package/esm2022/lib/channel-preview/channel-preview.component.mjs +150 -0
  15. package/esm2022/lib/channel.service.mjs +1381 -0
  16. package/esm2022/lib/chat-client.service.mjs +227 -0
  17. package/{esm2020 → esm2022}/lib/custom-templates.service.mjs +5 -5
  18. package/{esm2020 → esm2022}/lib/date-parser.service.mjs +5 -5
  19. package/esm2022/lib/file-utils.mjs +35 -0
  20. package/{esm2020 → esm2022}/lib/get-channel-display-text.mjs +1 -1
  21. package/{esm2020 → esm2022}/lib/get-message-translation.mjs +1 -1
  22. package/{esm2020 → esm2022}/lib/icon/icon-placeholder/icon-placeholder.component.mjs +6 -6
  23. package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +5 -5
  24. package/{esm2020 → esm2022}/lib/icon/icon.module.mjs +11 -11
  25. package/{esm2020 → esm2022}/lib/icon/loading-indicator/loading-indicator.component.mjs +5 -5
  26. package/{esm2020 → esm2022}/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.mjs +6 -6
  27. package/{esm2020 → esm2022}/lib/list-users.mjs +1 -1
  28. package/esm2022/lib/message/message.component.mjs +486 -0
  29. package/esm2022/lib/message-actions-box/message-actions-box.component.mjs +120 -0
  30. package/{esm2020 → esm2022}/lib/message-actions.service.mjs +5 -5
  31. package/esm2022/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +71 -0
  32. package/{esm2020 → esm2022}/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.mjs +6 -6
  33. package/{esm2020 → esm2022}/lib/message-input/emoji-input.service.mjs +5 -5
  34. package/{esm2020 → esm2022}/lib/message-input/message-input-config.service.mjs +5 -5
  35. package/esm2022/lib/message-input/message-input.component.mjs +507 -0
  36. package/{esm2020 → esm2022}/lib/message-input/textarea/textarea.component.mjs +5 -5
  37. package/{esm2020 → esm2022}/lib/message-input/textarea.directive.mjs +5 -5
  38. package/{esm2020 → esm2022}/lib/message-input/voice-recorder.service.mjs +5 -5
  39. package/{esm2020 → esm2022}/lib/message-list/group-styles.mjs +1 -1
  40. package/esm2022/lib/message-list/message-list.component.mjs +715 -0
  41. package/{esm2020 → esm2022}/lib/message-preview.mjs +1 -1
  42. package/esm2022/lib/message-reactions/message-reactions.component.mjs +165 -0
  43. package/esm2022/lib/message-reactions-selector/message-reactions-selector.component.mjs +57 -0
  44. package/{esm2020 → esm2022}/lib/message-reactions.service.mjs +5 -5
  45. package/{esm2020 → esm2022}/lib/message-text/message-text.component.mjs +6 -6
  46. package/esm2022/lib/message.service.mjs +43 -0
  47. package/{esm2020 → esm2022}/lib/modal/modal.component.mjs +6 -6
  48. package/{esm2020 → esm2022}/lib/notification/notification.component.mjs +6 -6
  49. package/esm2022/lib/notification-list/notification-list.component.mjs +33 -0
  50. package/{esm2020 → esm2022}/lib/notification.service.mjs +5 -5
  51. package/esm2022/lib/paginated-list/paginated-list.component.mjs +94 -0
  52. package/{esm2020 → esm2022}/lib/parse-date.mjs +1 -1
  53. package/{esm2020 → esm2022}/lib/read-by.mjs +1 -1
  54. package/esm2022/lib/stream-autocomplete-textarea.module.mjs +33 -0
  55. package/{esm2020 → esm2022}/lib/stream-avatar.module.mjs +5 -5
  56. package/{esm2020 → esm2022}/lib/stream-chat.module.mjs +59 -59
  57. package/{esm2020 → esm2022}/lib/stream-i18n.service.mjs +5 -5
  58. package/esm2022/lib/stream-textarea.module.mjs +31 -0
  59. package/{esm2020 → esm2022}/lib/theme.service.mjs +5 -5
  60. package/{esm2020 → esm2022}/lib/thread/thread.component.mjs +6 -6
  61. package/{esm2020 → esm2022}/lib/transliteration.service.mjs +5 -5
  62. package/esm2022/lib/types.mjs +2 -0
  63. package/{esm2020 → esm2022}/lib/user-list/user-list.component.mjs +5 -5
  64. package/esm2022/lib/virtualized-list.service.mjs +273 -0
  65. package/{esm2020 → esm2022}/lib/virtualized-message-list.service.mjs +1 -1
  66. package/{esm2020 → esm2022}/lib/voice-recorder/amplitude-recorder.service.mjs +5 -5
  67. package/{esm2020 → esm2022}/lib/voice-recorder/audio-recorder.service.mjs +5 -5
  68. package/{esm2020 → esm2022}/lib/voice-recorder/media-recorder.mjs +1 -1
  69. package/esm2022/lib/voice-recorder/mp3-transcoder.mjs +61 -0
  70. package/esm2022/lib/voice-recorder/transcoder.service.mjs +121 -0
  71. package/esm2022/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +32 -0
  72. package/esm2022/lib/voice-recorder/voice-recorder.component.mjs +80 -0
  73. package/{esm2020 → esm2022}/lib/voice-recorder/voice-recorder.module.mjs +9 -9
  74. package/esm2022/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +112 -0
  75. package/esm2022/lib/voice-recording/voice-recording.component.mjs +91 -0
  76. package/{esm2020 → esm2022}/lib/voice-recording/voice-recording.module.mjs +5 -5
  77. package/{esm2020 → esm2022}/lib/wave-form-sampler.mjs +1 -1
  78. package/esm2022/public-api.mjs +82 -0
  79. package/{fesm2020 → fesm2022}/stream-chat-angular.mjs +857 -1140
  80. package/fesm2022/stream-chat-angular.mjs.map +1 -0
  81. package/lib/attachment-list/attachment-list.component.d.ts +2 -5
  82. package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +2 -2
  83. package/lib/attachment.service.d.ts +1 -1
  84. package/lib/avatar/avatar.component.d.ts +4 -4
  85. package/lib/avatar-placeholder/avatar-placeholder.component.d.ts +1 -1
  86. package/lib/channel-list/channel-list.component.d.ts +1 -0
  87. package/lib/channel-preview/channel-preview.component.d.ts +3 -4
  88. package/lib/channel.service.d.ts +40 -106
  89. package/lib/chat-client.service.d.ts +1 -4
  90. package/lib/custom-templates.service.d.ts +10 -10
  91. package/lib/icon/icon-placeholder/icon-placeholder.component.d.ts +1 -1
  92. package/lib/icon/icon.component.d.ts +2 -2
  93. package/lib/message/message.component.d.ts +2 -2
  94. package/lib/message-actions-box/message-actions-box.component.d.ts +2 -3
  95. package/lib/message-actions.service.d.ts +1 -1
  96. package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +2 -2
  97. package/lib/message-input/message-input.component.d.ts +2 -2
  98. package/lib/message-input/textarea/textarea.component.d.ts +1 -1
  99. package/lib/message-input/textarea.directive.d.ts +2 -2
  100. package/lib/message-list/group-styles.d.ts +1 -1
  101. package/lib/message-list/message-list.component.d.ts +2 -3
  102. package/lib/message-reactions/message-reactions.component.d.ts +2 -3
  103. package/lib/message-reactions-selector/message-reactions-selector.component.d.ts +1 -2
  104. package/lib/message-text/message-text.component.d.ts +2 -2
  105. package/lib/modal/modal.component.d.ts +1 -1
  106. package/lib/notification/notification.component.d.ts +1 -1
  107. package/lib/notification-list/notification-list.component.d.ts +0 -1
  108. package/lib/paginated-list/paginated-list.component.d.ts +5 -2
  109. package/lib/read-by.d.ts +1 -1
  110. package/lib/types.d.ts +98 -84
  111. package/lib/user-list/user-list.component.d.ts +1 -1
  112. package/lib/voice-recorder/amplitude-recorder.service.d.ts +2 -2
  113. package/lib/voice-recorder/media-recorder.d.ts +2 -2
  114. package/lib/voice-recorder/transcoder.service.d.ts +4 -4
  115. package/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.d.ts +0 -1
  116. package/lib/voice-recorder/voice-recorder.component.d.ts +2 -2
  117. package/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.d.ts +3 -3
  118. package/lib/voice-recording/voice-recording.component.d.ts +1 -1
  119. package/package.json +15 -21
  120. package/public-api.d.ts +0 -1
  121. package/src/assets/i18n/en.ts +1 -0
  122. package/src/assets/version.ts +1 -1
  123. package/esm2020/lib/attachment-list/attachment-list.component.mjs +0 -224
  124. package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +0 -55
  125. package/esm2020/lib/avatar/avatar.component.mjs +0 -160
  126. package/esm2020/lib/channel/channel.component.mjs +0 -45
  127. package/esm2020/lib/channel-header/channel-header.component.mjs +0 -72
  128. package/esm2020/lib/channel-list/channel-list.component.mjs +0 -47
  129. package/esm2020/lib/channel-preview/channel-preview.component.mjs +0 -155
  130. package/esm2020/lib/channel-query.mjs +0 -77
  131. package/esm2020/lib/channel.service.mjs +0 -1546
  132. package/esm2020/lib/chat-client.service.mjs +0 -238
  133. package/esm2020/lib/file-utils.mjs +0 -35
  134. package/esm2020/lib/message/message.component.mjs +0 -486
  135. package/esm2020/lib/message-actions-box/message-actions-box.component.mjs +0 -123
  136. package/esm2020/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +0 -71
  137. package/esm2020/lib/message-input/message-input.component.mjs +0 -507
  138. package/esm2020/lib/message-list/message-list.component.mjs +0 -717
  139. package/esm2020/lib/message-reactions/message-reactions.component.mjs +0 -168
  140. package/esm2020/lib/message-reactions-selector/message-reactions-selector.component.mjs +0 -61
  141. package/esm2020/lib/message.service.mjs +0 -43
  142. package/esm2020/lib/notification-list/notification-list.component.mjs +0 -36
  143. package/esm2020/lib/paginated-list/paginated-list.component.mjs +0 -94
  144. package/esm2020/lib/stream-autocomplete-textarea.module.mjs +0 -33
  145. package/esm2020/lib/stream-textarea.module.mjs +0 -31
  146. package/esm2020/lib/types.mjs +0 -2
  147. package/esm2020/lib/virtualized-list.service.mjs +0 -271
  148. package/esm2020/lib/voice-recorder/mp3-transcoder.mjs +0 -61
  149. package/esm2020/lib/voice-recorder/transcoder.service.mjs +0 -121
  150. package/esm2020/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +0 -35
  151. package/esm2020/lib/voice-recorder/voice-recorder.component.mjs +0 -80
  152. package/esm2020/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +0 -112
  153. package/esm2020/lib/voice-recording/voice-recording.component.mjs +0 -91
  154. package/esm2020/public-api.mjs +0 -83
  155. package/fesm2015/stream-chat-angular.mjs +0 -9152
  156. package/fesm2015/stream-chat-angular.mjs.map +0 -1
  157. package/fesm2020/stream-chat-angular.mjs.map +0 -1
  158. package/lib/channel-query.d.ts +0 -26
  159. /package/{esm2020 → esm2022}/lib/format-duration.mjs +0 -0
  160. /package/{esm2020 → esm2022}/lib/injection-tokens.mjs +0 -0
  161. /package/{esm2020 → esm2022}/lib/is-image-attachment.mjs +0 -0
  162. /package/{esm2020 → esm2022}/lib/is-on-separate-date.mjs +0 -0
  163. /package/{esm2020 → esm2022}/lib/is-safari.mjs +0 -0
  164. /package/{esm2020 → esm2022}/lib/message-input/textarea.interface.mjs +0 -0
  165. /package/{esm2020 → esm2022}/stream-chat-angular.mjs +0 -0
@@ -10,15 +10,15 @@ import { AmplitudeRecorderService } from './amplitude-recorder.service';
10
10
  import { VoiceRecorderWavebarComponent } from './voice-recorder-wavebar/voice-recorder-wavebar.component';
11
11
  import * as i0 from "@angular/core";
12
12
  export class VoiceRecorderModule {
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecorderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
14
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecorderModule, declarations: [VoiceRecorderComponent, VoiceRecorderWavebarComponent], imports: [CommonModule, VoiceRecordingModule, IconModule, TranslateModule], exports: [VoiceRecorderComponent, VoiceRecorderWavebarComponent] }); }
15
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecorderModule, providers: [
16
+ AudioRecorderService,
17
+ TranscoderService,
18
+ AmplitudeRecorderService,
19
+ ], imports: [CommonModule, VoiceRecordingModule, IconModule, TranslateModule] }); }
13
20
  }
14
- VoiceRecorderModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecorderModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- VoiceRecorderModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecorderModule, declarations: [VoiceRecorderComponent, VoiceRecorderWavebarComponent], imports: [CommonModule, VoiceRecordingModule, IconModule, TranslateModule], exports: [VoiceRecorderComponent, VoiceRecorderWavebarComponent] });
16
- VoiceRecorderModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecorderModule, providers: [
17
- AudioRecorderService,
18
- TranscoderService,
19
- AmplitudeRecorderService,
20
- ], imports: [CommonModule, VoiceRecordingModule, IconModule, TranslateModule] });
21
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecorderModule, decorators: [{
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecorderModule, decorators: [{
22
22
  type: NgModule,
23
23
  args: [{
24
24
  declarations: [VoiceRecorderComponent, VoiceRecorderWavebarComponent],
@@ -31,4 +31,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
31
31
  ],
32
32
  }]
33
33
  }] });
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZvaWNlLXJlY29yZGVyL3ZvaWNlLXJlY29yZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDOztBQVkxRyxNQUFNLE9BQU8sbUJBQW1COztnSEFBbkIsbUJBQW1CO2lIQUFuQixtQkFBbUIsaUJBVGYsc0JBQXNCLEVBQUUsNkJBQTZCLGFBQzFELFlBQVksRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsZUFBZSxhQUMvRCxzQkFBc0IsRUFBRSw2QkFBNkI7aUhBT3BELG1CQUFtQixhQU5uQjtRQUNULG9CQUFvQjtRQUNwQixpQkFBaUI7UUFDakIsd0JBQXdCO0tBQ3pCLFlBTlMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxlQUFlOzJGQVE5RCxtQkFBbUI7a0JBVi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsNkJBQTZCLENBQUM7b0JBQ3JFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDO29CQUMxRSxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSw2QkFBNkIsQ0FBQztvQkFDaEUsU0FBUyxFQUFFO3dCQUNULG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQix3QkFBd0I7cUJBQ3pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGVyQ29tcG9uZW50IH0gZnJvbSAnLi92b2ljZS1yZWNvcmRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVm9pY2VSZWNvcmRpbmdNb2R1bGUgfSBmcm9tICcuLi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEF1ZGlvUmVjb3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hdWRpby1yZWNvcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zY29kZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2NvZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW1wbGl0dWRlUmVjb3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hbXBsaXR1ZGUtcmVjb3JkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGVyV2F2ZWJhckNvbXBvbmVudCB9IGZyb20gJy4vdm9pY2UtcmVjb3JkZXItd2F2ZWJhci92b2ljZS1yZWNvcmRlci13YXZlYmFyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1ZvaWNlUmVjb3JkZXJDb21wb25lbnQsIFZvaWNlUmVjb3JkZXJXYXZlYmFyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVm9pY2VSZWNvcmRpbmdNb2R1bGUsIEljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIGV4cG9ydHM6IFtWb2ljZVJlY29yZGVyQ29tcG9uZW50LCBWb2ljZVJlY29yZGVyV2F2ZWJhckNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIEF1ZGlvUmVjb3JkZXJTZXJ2aWNlLFxuICAgIFRyYW5zY29kZXJTZXJ2aWNlLFxuICAgIEFtcGxpdHVkZVJlY29yZGVyU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VSZWNvcmRlck1vZHVsZSB7fVxuIl19
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZvaWNlLXJlY29yZGVyL3ZvaWNlLXJlY29yZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDOztBQVkxRyxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixpQkFUZixzQkFBc0IsRUFBRSw2QkFBNkIsYUFDMUQsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxlQUFlLGFBQy9ELHNCQUFzQixFQUFFLDZCQUE2QjsrR0FPcEQsbUJBQW1CLGFBTm5CO1lBQ1Qsb0JBQW9CO1lBQ3BCLGlCQUFpQjtZQUNqQix3QkFBd0I7U0FDekIsWUFOUyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGVBQWU7OzJGQVE5RCxtQkFBbUI7a0JBVi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsNkJBQTZCLENBQUM7b0JBQ3JFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDO29CQUMxRSxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSw2QkFBNkIsQ0FBQztvQkFDaEUsU0FBUyxFQUFFO3dCQUNULG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQix3QkFBd0I7cUJBQ3pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGVyQ29tcG9uZW50IH0gZnJvbSAnLi92b2ljZS1yZWNvcmRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVm9pY2VSZWNvcmRpbmdNb2R1bGUgfSBmcm9tICcuLi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEF1ZGlvUmVjb3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hdWRpby1yZWNvcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zY29kZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2NvZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW1wbGl0dWRlUmVjb3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hbXBsaXR1ZGUtcmVjb3JkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGVyV2F2ZWJhckNvbXBvbmVudCB9IGZyb20gJy4vdm9pY2UtcmVjb3JkZXItd2F2ZWJhci92b2ljZS1yZWNvcmRlci13YXZlYmFyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1ZvaWNlUmVjb3JkZXJDb21wb25lbnQsIFZvaWNlUmVjb3JkZXJXYXZlYmFyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVm9pY2VSZWNvcmRpbmdNb2R1bGUsIEljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIGV4cG9ydHM6IFtWb2ljZVJlY29yZGVyQ29tcG9uZW50LCBWb2ljZVJlY29yZGVyV2F2ZWJhckNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIEF1ZGlvUmVjb3JkZXJTZXJ2aWNlLFxuICAgIFRyYW5zY29kZXJTZXJ2aWNlLFxuICAgIEFtcGxpdHVkZVJlY29yZGVyU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VSZWNvcmRlck1vZHVsZSB7fVxuIl19
@@ -0,0 +1,112 @@
1
+ import { Component, Input, ViewChild, } from '@angular/core';
2
+ import { resampleWaveForm } from '../../wave-form-sampler';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ /**
6
+ * This component can be used to visualize the wave bar of a voice recording
7
+ */
8
+ export class VoiceRecordingWavebarComponent {
9
+ constructor(ngZone, cdRef) {
10
+ this.ngZone = ngZone;
11
+ this.cdRef = cdRef;
12
+ /**
13
+ * The waveform data to visualize
14
+ */
15
+ this.waveFormData = [];
16
+ this.resampledWaveFormData = [];
17
+ this.progress = 0;
18
+ this.isDragging = false;
19
+ this.sampleSize = 40;
20
+ this.isViewInited = false;
21
+ }
22
+ ngOnChanges(changes) {
23
+ if (changes.waveFormData) {
24
+ this.resampledWaveFormData = resampleWaveForm(this.waveFormData, this.sampleSize);
25
+ }
26
+ if (changes.audioElement) {
27
+ this.ngZone.runOutsideAngular(() => {
28
+ this.audioElement?.addEventListener('timeupdate', () => {
29
+ const progress = (this.audioElement?.currentTime || 0) / (this.duration || 0) || 0;
30
+ if (Math.abs(progress - this.progress) >= 0.02) {
31
+ this.ngZone.run(() => {
32
+ this.progress = progress;
33
+ this.cdRef.detectChanges();
34
+ });
35
+ }
36
+ });
37
+ });
38
+ }
39
+ }
40
+ ngOnInit() {
41
+ this.containerSizeChanged();
42
+ if (this.container?.nativeElement) {
43
+ this.ngZone.runOutsideAngular(() => {
44
+ new ResizeObserver(() => {
45
+ this.containerSizeChanged();
46
+ }).observe(this.container.nativeElement);
47
+ });
48
+ }
49
+ }
50
+ ngAfterViewInit() {
51
+ this.isViewInited = true;
52
+ }
53
+ seek(event) {
54
+ const containerWidth = this.container?.nativeElement?.getBoundingClientRect().width || 0;
55
+ const containerStart = this.container?.nativeElement?.getBoundingClientRect()?.x || 0;
56
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
57
+ const progress = (event.x - containerStart) / containerWidth;
58
+ if (!isNaN(progress) && this.audioElement) {
59
+ const duration = this.duration || 0;
60
+ const time = duration * progress;
61
+ this.audioElement.currentTime = time;
62
+ }
63
+ }
64
+ trackByIndex(index) {
65
+ return index;
66
+ }
67
+ containerSizeChanged() {
68
+ if (!this.container?.nativeElement) {
69
+ return;
70
+ }
71
+ const containerWidth = this.container.nativeElement.clientWidth;
72
+ if (containerWidth === 0) {
73
+ return;
74
+ }
75
+ const barWidth = +getComputedStyle(this.container.nativeElement)
76
+ .getPropertyValue('--str-chat__voice-recording-amplitude-bar-width')
77
+ .replace('px', '');
78
+ const barGap = +getComputedStyle(this.container.nativeElement)
79
+ .getPropertyValue('--str-chat__voice-recording-amplitude-bar-gap-width')
80
+ .replace('px', '');
81
+ if (!isNaN(barWidth) && !isNaN(barGap)) {
82
+ const sampleSize = Math.floor(containerWidth / (barWidth + barGap));
83
+ if (sampleSize !== this.sampleSize &&
84
+ !isNaN(sampleSize) &&
85
+ sampleSize !== Infinity) {
86
+ this.ngZone.run(() => {
87
+ this.sampleSize = sampleSize;
88
+ this.resampledWaveFormData = resampleWaveForm(this.waveFormData, this.sampleSize);
89
+ if (this.isViewInited) {
90
+ this.cdRef.detectChanges();
91
+ }
92
+ });
93
+ }
94
+ }
95
+ }
96
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecordingWavebarComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
97
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: VoiceRecordingWavebarComponent, selector: "stream-voice-recording-wavebar", inputs: { audioElement: "audioElement", waveFormData: "waveFormData", duration: "duration" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, static: true }], usesOnChanges: true, ngImport: i0, template: "<!--eslint-disable @angular-eslint/template/click-events-have-key-events-->\n<div\n #container\n class=\"str-chat__wave-progress-bar__track\"\n data-testid=\"wave-progress-bar-track\"\n role=\"progressbar\"\n (mousedown)=\"isDragging = true\"\n (mouseup)=\"isDragging = false\"\n (mouseleave)=\"isDragging = false\"\n (mousemove)=\"isDragging ? seek($event) : null\"\n (click)=\"seek($event)\"\n>\n <!--eslint-enable @angular-eslint/template/click-events-have-key-events-->\n @for (dataPoint of resampledWaveFormData; track dataPoint; let i = $index) {\n <div\n class=\"str-chat__wave-progress-bar__amplitude-bar\"\n [class.str-chat__wave-progress-bar__amplitude-bar--active]=\"\n progress > i / resampledWaveFormData.length\n \"\n [style.--str-chat__wave-progress-bar__amplitude-bar-height]=\"\n dataPoint ? dataPoint * 100 + '%' : '0%'\n \"\n ></div>\n }\n <div\n class=\"str-chat__wave-progress-bar__progress-indicator\"\n data-testid=\"wave-progress-bar-progress-indicator\"\n [ngStyle]=\"{ 'inset-inline-start': progress * 100 + '%' }\"\n ></div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
98
+ }
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecordingWavebarComponent, decorators: [{
100
+ type: Component,
101
+ args: [{ selector: 'stream-voice-recording-wavebar', template: "<!--eslint-disable @angular-eslint/template/click-events-have-key-events-->\n<div\n #container\n class=\"str-chat__wave-progress-bar__track\"\n data-testid=\"wave-progress-bar-track\"\n role=\"progressbar\"\n (mousedown)=\"isDragging = true\"\n (mouseup)=\"isDragging = false\"\n (mouseleave)=\"isDragging = false\"\n (mousemove)=\"isDragging ? seek($event) : null\"\n (click)=\"seek($event)\"\n>\n <!--eslint-enable @angular-eslint/template/click-events-have-key-events-->\n @for (dataPoint of resampledWaveFormData; track dataPoint; let i = $index) {\n <div\n class=\"str-chat__wave-progress-bar__amplitude-bar\"\n [class.str-chat__wave-progress-bar__amplitude-bar--active]=\"\n progress > i / resampledWaveFormData.length\n \"\n [style.--str-chat__wave-progress-bar__amplitude-bar-height]=\"\n dataPoint ? dataPoint * 100 + '%' : '0%'\n \"\n ></div>\n }\n <div\n class=\"str-chat__wave-progress-bar__progress-indicator\"\n data-testid=\"wave-progress-bar-progress-indicator\"\n [ngStyle]=\"{ 'inset-inline-start': progress * 100 + '%' }\"\n ></div>\n</div>\n" }]
102
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { audioElement: [{
103
+ type: Input
104
+ }], waveFormData: [{
105
+ type: Input
106
+ }], duration: [{
107
+ type: Input
108
+ }], container: [{
109
+ type: ViewChild,
110
+ args: ['container', { static: true }]
111
+ }] } });
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZvaWNlLXJlY29yZGluZy92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdm9pY2UtcmVjb3JkaW5nL3ZvaWNlLXJlY29yZGluZy13YXZlYmFyL3ZvaWNlLXJlY29yZGluZy13YXZlYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRTNEOztHQUVHO0FBTUgsTUFBTSxPQUFPLDhCQUE4QjtJQXVCekMsWUFDVSxNQUFjLEVBQ2QsS0FBd0I7UUFEeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBbEJsQzs7V0FFRztRQUNNLGlCQUFZLEdBQWEsRUFBRSxDQUFDO1FBS3JDLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUNyQyxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDWCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBR3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSzFCLENBQUM7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxnQkFBZ0IsQ0FDM0MsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFBSSxDQUFDLFVBQVUsQ0FDaEIsQ0FBQztTQUNIO1FBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO2dCQUNqQyxJQUFJLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDLFlBQVksRUFBRSxHQUFHLEVBQUU7b0JBQ3JELE1BQU0sUUFBUSxHQUNaLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEUsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFO3dCQUM5QyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7NEJBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDOzRCQUN6QixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO3dCQUM3QixDQUFDLENBQUMsQ0FBQztxQkFDSjtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUU7WUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pDLElBQUksY0FBYyxDQUFDLEdBQUcsRUFBRTtvQkFDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7Z0JBQzlCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzVDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLENBQUMsS0FBaUI7UUFDcEIsTUFBTSxjQUFjLEdBQ2xCLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFLHFCQUFxQixFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUNwRSxNQUFNLGNBQWMsR0FDbEIsSUFBSSxDQUFDLFNBQVMsRUFBRSxhQUFhLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pFLHNFQUFzRTtRQUN0RSxNQUFNLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUcsY0FBYyxDQUFDLEdBQUcsY0FBYyxDQUFDO1FBRTdELElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUN6QyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQztZQUNwQyxNQUFNLElBQUksR0FBRyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztTQUN0QztJQUNILENBQUM7SUFFRCxZQUFZLENBQUMsS0FBYTtRQUN4QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFFO1lBQ2xDLE9BQU87U0FDUjtRQUNELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztRQUNoRSxJQUFJLGNBQWMsS0FBSyxDQUFDLEVBQUU7WUFDeEIsT0FBTztTQUNSO1FBQ0QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQzthQUM3RCxnQkFBZ0IsQ0FBQyxpREFBaUQsQ0FBQzthQUNuRSxPQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JCLE1BQU0sTUFBTSxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUM7YUFDM0QsZ0JBQWdCLENBQUMscURBQXFELENBQUM7YUFDdkUsT0FBTyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ3RDLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxHQUFHLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDcEUsSUFDRSxVQUFVLEtBQUssSUFBSSxDQUFDLFVBQVU7Z0JBQzlCLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDbEIsVUFBVSxLQUFLLFFBQVEsRUFDdkI7Z0JBQ0EsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztvQkFDN0IsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGdCQUFnQixDQUMzQyxJQUFJLENBQUMsWUFBWSxFQUNqQixJQUFJLENBQUMsVUFBVSxDQUNoQixDQUFDO29CQUNGLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTt3QkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztxQkFDNUI7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQzs4R0F0SFUsOEJBQThCO2tHQUE5Qiw4QkFBOEIsK1NDdEIzQywybUNBOEJBOzsyRkRSYSw4QkFBOEI7a0JBTDFDLFNBQVM7K0JBQ0UsZ0NBQWdDOzJHQVVqQyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFNRSxTQUFTO3NCQURoQixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlc2FtcGxlV2F2ZUZvcm0gfSBmcm9tICcuLi8uLi93YXZlLWZvcm0tc2FtcGxlcic7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgY2FuIGJlIHVzZWQgdG8gdmlzdWFsaXplIHRoZSB3YXZlIGJhciBvZiBhIHZvaWNlIHJlY29yZGluZ1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tdm9pY2UtcmVjb3JkaW5nLXdhdmViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZVJlY29yZGluZ1dhdmViYXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogVGhlIGF1ZGlvIGVsZW1lbnQgdGhhdCBwbGF5cyB0aGUgdm9pY2UgcmVjb3JkaW5nXG4gICAqL1xuICBASW5wdXQoKSBhdWRpb0VsZW1lbnQ/OiBIVE1MQXVkaW9FbGVtZW50O1xuICAvKipcbiAgICogVGhlIHdhdmVmb3JtIGRhdGEgdG8gdmlzdWFsaXplXG4gICAqL1xuICBASW5wdXQoKSB3YXZlRm9ybURhdGE6IG51bWJlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gb2YgdGhlIHZvaWNlIHJlY29yZGluZyBpbiBzZWNvbmRzXG4gICAqL1xuICBASW5wdXQoKSBkdXJhdGlvbj86IG51bWJlcjtcbiAgcmVzYW1wbGVkV2F2ZUZvcm1EYXRhOiBudW1iZXJbXSA9IFtdO1xuICBwcm9ncmVzczogbnVtYmVyID0gMDtcbiAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBwcml2YXRlIHNhbXBsZVNpemU6IG51bWJlciA9IDQwO1xuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIGNvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMud2F2ZUZvcm1EYXRhKSB7XG4gICAgICB0aGlzLnJlc2FtcGxlZFdhdmVGb3JtRGF0YSA9IHJlc2FtcGxlV2F2ZUZvcm0oXG4gICAgICAgIHRoaXMud2F2ZUZvcm1EYXRhLFxuICAgICAgICB0aGlzLnNhbXBsZVNpemUsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hdWRpb0VsZW1lbnQpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5hdWRpb0VsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPVxuICAgICAgICAgICAgKHRoaXMuYXVkaW9FbGVtZW50Py5jdXJyZW50VGltZSB8fCAwKSAvICh0aGlzLmR1cmF0aW9uIHx8IDApIHx8IDA7XG4gICAgICAgICAgaWYgKE1hdGguYWJzKHByb2dyZXNzIC0gdGhpcy5wcm9ncmVzcykgPj0gMC4wMikge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRhaW5lclNpemVDaGFuZ2VkKCk7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXJTaXplQ2hhbmdlZCgpO1xuICAgICAgICB9KS5vYnNlcnZlKHRoaXMuY29udGFpbmVyIS5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gIH1cblxuICBzZWVrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPVxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHx8IDA7XG4gICAgY29uc3QgY29udGFpbmVyU3RhcnQgPVxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPy54IHx8IDA7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgIGNvbnN0IHByb2dyZXNzID0gKGV2ZW50LnggLSBjb250YWluZXJTdGFydCkgLyBjb250YWluZXJXaWR0aDtcblxuICAgIGlmICghaXNOYU4ocHJvZ3Jlc3MpICYmIHRoaXMuYXVkaW9FbGVtZW50KSB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuZHVyYXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IHRpbWUgPSBkdXJhdGlvbiAqIHByb2dyZXNzO1xuICAgICAgdGhpcy5hdWRpb0VsZW1lbnQuY3VycmVudFRpbWUgPSB0aW1lO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBjb250YWluZXJTaXplQ2hhbmdlZCgpIHtcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBpZiAoY29udGFpbmVyV2lkdGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYmFyV2lkdGggPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc3RyLWNoYXRfX3ZvaWNlLXJlY29yZGluZy1hbXBsaXR1ZGUtYmFyLXdpZHRoJylcbiAgICAgIC5yZXBsYWNlKCdweCcsICcnKTtcbiAgICBjb25zdCBiYXJHYXAgPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc3RyLWNoYXRfX3ZvaWNlLXJlY29yZGluZy1hbXBsaXR1ZGUtYmFyLWdhcC13aWR0aCcpXG4gICAgICAucmVwbGFjZSgncHgnLCAnJyk7XG4gICAgaWYgKCFpc05hTihiYXJXaWR0aCkgJiYgIWlzTmFOKGJhckdhcCkpIHtcbiAgICAgIGNvbnN0IHNhbXBsZVNpemUgPSBNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gKGJhcldpZHRoICsgYmFyR2FwKSk7XG4gICAgICBpZiAoXG4gICAgICAgIHNhbXBsZVNpemUgIT09IHRoaXMuc2FtcGxlU2l6ZSAmJlxuICAgICAgICAhaXNOYU4oc2FtcGxlU2l6ZSkgJiZcbiAgICAgICAgc2FtcGxlU2l6ZSAhPT0gSW5maW5pdHlcbiAgICAgICkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7XG4gICAgICAgICAgdGhpcy5yZXNhbXBsZWRXYXZlRm9ybURhdGEgPSByZXNhbXBsZVdhdmVGb3JtKFxuICAgICAgICAgICAgdGhpcy53YXZlRm9ybURhdGEsXG4gICAgICAgICAgICB0aGlzLnNhbXBsZVNpemUsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8IS0tZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMtLT5cbjxkaXZcbiAgI2NvbnRhaW5lclxuICBjbGFzcz1cInN0ci1jaGF0X193YXZlLXByb2dyZXNzLWJhcl9fdHJhY2tcIlxuICBkYXRhLXRlc3RpZD1cIndhdmUtcHJvZ3Jlc3MtYmFyLXRyYWNrXCJcbiAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgKG1vdXNlZG93bik9XCJpc0RyYWdnaW5nID0gdHJ1ZVwiXG4gIChtb3VzZXVwKT1cImlzRHJhZ2dpbmcgPSBmYWxzZVwiXG4gIChtb3VzZWxlYXZlKT1cImlzRHJhZ2dpbmcgPSBmYWxzZVwiXG4gIChtb3VzZW1vdmUpPVwiaXNEcmFnZ2luZyA/IHNlZWsoJGV2ZW50KSA6IG51bGxcIlxuICAoY2xpY2spPVwic2VlaygkZXZlbnQpXCJcbj5cbiAgPCEtLWVzbGludC1lbmFibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMtLT5cbiAgQGZvciAoZGF0YVBvaW50IG9mIHJlc2FtcGxlZFdhdmVGb3JtRGF0YTsgdHJhY2sgZGF0YVBvaW50OyBsZXQgaSA9ICRpbmRleCkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3dhdmUtcHJvZ3Jlc3MtYmFyX19hbXBsaXR1ZGUtYmFyXCJcbiAgICAgIFtjbGFzcy5zdHItY2hhdF9fd2F2ZS1wcm9ncmVzcy1iYXJfX2FtcGxpdHVkZS1iYXItLWFjdGl2ZV09XCJcbiAgICAgICAgcHJvZ3Jlc3MgPiBpIC8gcmVzYW1wbGVkV2F2ZUZvcm1EYXRhLmxlbmd0aFxuICAgICAgXCJcbiAgICAgIFtzdHlsZS4tLXN0ci1jaGF0X193YXZlLXByb2dyZXNzLWJhcl9fYW1wbGl0dWRlLWJhci1oZWlnaHRdPVwiXG4gICAgICAgIGRhdGFQb2ludCA/IGRhdGFQb2ludCAqIDEwMCArICclJyA6ICcwJSdcbiAgICAgIFwiXG4gICAgPjwvZGl2PlxuICB9XG4gIDxkaXZcbiAgICBjbGFzcz1cInN0ci1jaGF0X193YXZlLXByb2dyZXNzLWJhcl9fcHJvZ3Jlc3MtaW5kaWNhdG9yXCJcbiAgICBkYXRhLXRlc3RpZD1cIndhdmUtcHJvZ3Jlc3MtYmFyLXByb2dyZXNzLWluZGljYXRvclwiXG4gICAgW25nU3R5bGVdPVwieyAnaW5zZXQtaW5saW5lLXN0YXJ0JzogcHJvZ3Jlc3MgKiAxMDAgKyAnJScgfVwiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19
@@ -0,0 +1,91 @@
1
+ import { Component, Input, ViewChild, } from '@angular/core';
2
+ import prettybytes from 'pretty-bytes';
3
+ import { formatDuration } from '../format-duration';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../icon/icon-placeholder/icon-placeholder.component";
6
+ import * as i2 from "./voice-recording-wavebar/voice-recording-wavebar.component";
7
+ import * as i3 from "@angular/common";
8
+ import * as i4 from "@ngx-translate/core";
9
+ /**
10
+ * This component can be used to display an attachment with type `voiceRecording`. The component allows playing the attachment inside the browser.
11
+ */
12
+ export class VoiceRecordingComponent {
13
+ constructor(ngZone, cdRef) {
14
+ this.ngZone = ngZone;
15
+ this.cdRef = cdRef;
16
+ this.fileSize = '';
17
+ this.durationFormatted = '';
18
+ this.secondsElapsed = 0;
19
+ this.isError = false;
20
+ this.secondsElapsedFormatted = this.getFormattedDuration(this.secondsElapsed);
21
+ }
22
+ ngOnChanges(changes) {
23
+ if (changes.attachment) {
24
+ this.fileSize = this.getFileSize();
25
+ this.durationFormatted = this.getFormattedDuration(this.attachment?.duration);
26
+ }
27
+ }
28
+ ngAfterViewInit() {
29
+ // timeupdate fired frequntly so we optimize change detections
30
+ this.ngZone.runOutsideAngular(() => {
31
+ this.audioElement?.nativeElement.addEventListener('timeupdate', () => {
32
+ const secondsElapsed = this.audioElement?.nativeElement?.ended
33
+ ? this.attachment?.duration || 0
34
+ : Math.round(this.audioElement?.nativeElement?.currentTime || 0);
35
+ if (this.secondsElapsed !== secondsElapsed) {
36
+ this.ngZone.run(() => {
37
+ this.secondsElapsed = secondsElapsed;
38
+ this.secondsElapsedFormatted = this.getFormattedDuration(this.secondsElapsed);
39
+ this.cdRef.detectChanges();
40
+ });
41
+ }
42
+ });
43
+ });
44
+ }
45
+ async togglePlay() {
46
+ if (!this.audioElement || !this.attachment?.asset_url) {
47
+ return;
48
+ }
49
+ try {
50
+ this.audioElement?.nativeElement.paused
51
+ ? await this.audioElement.nativeElement.play()
52
+ : this.audioElement.nativeElement.pause();
53
+ this.isError = false;
54
+ }
55
+ catch (error) {
56
+ this.isError = true;
57
+ }
58
+ }
59
+ setPlaybackRate() {
60
+ if (!this.audioElement?.nativeElement) {
61
+ return;
62
+ }
63
+ let playbackRate = this.audioElement?.nativeElement?.playbackRate + 0.5;
64
+ if (playbackRate > 2) {
65
+ playbackRate = 1;
66
+ }
67
+ this.audioElement.nativeElement.playbackRate = playbackRate;
68
+ }
69
+ getFormattedDuration(duration) {
70
+ return formatDuration(duration);
71
+ }
72
+ getFileSize() {
73
+ if (this.attachment?.file_size === undefined ||
74
+ this.attachment?.file_size === null) {
75
+ return '';
76
+ }
77
+ return prettybytes(Number(this.attachment.file_size || 0));
78
+ }
79
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecordingComponent, deps: [{ token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
80
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: VoiceRecordingComponent, selector: "stream-voice-recording", inputs: { attachment: "attachment" }, viewQueries: [{ propertyName: "audioElement", first: true, predicate: ["audioElement"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"str-chat__message-attachment__voice-recording-widget\"\n data-testid=\"voice-recording-widget\"\n [class.str-chat__message-attachment__voice-recording-widget--error]=\"isError\"\n>\n <!-- Empty event handlers to trigger change detection -->\n <audio\n #audioElement\n (play)=\"(null)\"\n (pause)=\"(null)\"\n (ended)=\"(null)\"\n (error)=\"isError = true\"\n (abort)=\"isError = true\"\n >\n <source\n data-testid=\"audio-source\"\n [src]=\"attachment?.asset_url\"\n [type]=\"attachment?.mime_type\"\n />\n </audio>\n <button\n class=\"str-chat__message-attachment-audio-widget--play-button\"\n data-testid=\"play-button\"\n (click)=\"togglePlay()\"\n >\n <stream-icon-placeholder [icon]=\"audioElement?.paused ? 'play' : 'pause'\" />\n </button>\n <div class=\"str-chat__message-attachment__voice-recording-widget__metadata\">\n <div class=\"str-chat__message-attachment-voice-recording-widget--first-row\">\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__title\"\n data-testid=\"voice-recording-title\"\n [title]=\"attachment?.title\"\n >\n {{ attachment?.title }}\n </div>\n </div>\n\n @if (isError) {\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__error-message\"\n >\n <stream-icon-placeholder icon=\"error\" />\n <span data-testid=\"error-message\">{{\n \"streamChat.Error playing audio\" | translate\n }}</span>\n </div>\n } @else {\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__audio-state\"\n >\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__timer\"\n >\n @if (!!attachment?.duration) {\n <span data-testid=\"duration\">\n {{\n secondsElapsed > 0 || !audioElement.paused\n ? secondsElapsedFormatted\n : durationFormatted\n }}</span\n >\n } @else {\n <span\n class=\"str-chat__message-attachment-file--item-size\"\n data-testid=\"file-size-indicator\"\n >\n {{ fileSize }}\n </span>\n }\n </div>\n @if (attachment?.waveform_data && attachment?.duration) {\n <stream-voice-recording-wavebar\n [waveFormData]=\"attachment?.waveform_data || []\"\n [duration]=\"attachment?.duration\"\n [audioElement]=\"audioElement\"\n />\n }\n </div>\n }\n </div>\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__right-section\"\n >\n @if (!audioElement?.paused) {\n <button\n class=\"str-chat__message_attachment__playback-rate-button\"\n data-testid=\"playback-rate-button\"\n (click)=\"setPlaybackRate()\"\n >\n {{ audioElement?.playbackRate | number: \"1.1-1\" }}x\n </button>\n } @else {\n <stream-icon-placeholder\n class=\"str-chat__attachment-type-icon\"\n icon=\"audio-file\"\n />\n }\n </div>\n</div>\n", dependencies: [{ kind: "component", type: i1.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon"] }, { kind: "component", type: i2.VoiceRecordingWavebarComponent, selector: "stream-voice-recording-wavebar", inputs: ["audioElement", "waveFormData", "duration"] }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i4.TranslatePipe, name: "translate" }] }); }
81
+ }
82
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecordingComponent, decorators: [{
83
+ type: Component,
84
+ args: [{ selector: 'stream-voice-recording', template: "<div\n class=\"str-chat__message-attachment__voice-recording-widget\"\n data-testid=\"voice-recording-widget\"\n [class.str-chat__message-attachment__voice-recording-widget--error]=\"isError\"\n>\n <!-- Empty event handlers to trigger change detection -->\n <audio\n #audioElement\n (play)=\"(null)\"\n (pause)=\"(null)\"\n (ended)=\"(null)\"\n (error)=\"isError = true\"\n (abort)=\"isError = true\"\n >\n <source\n data-testid=\"audio-source\"\n [src]=\"attachment?.asset_url\"\n [type]=\"attachment?.mime_type\"\n />\n </audio>\n <button\n class=\"str-chat__message-attachment-audio-widget--play-button\"\n data-testid=\"play-button\"\n (click)=\"togglePlay()\"\n >\n <stream-icon-placeholder [icon]=\"audioElement?.paused ? 'play' : 'pause'\" />\n </button>\n <div class=\"str-chat__message-attachment__voice-recording-widget__metadata\">\n <div class=\"str-chat__message-attachment-voice-recording-widget--first-row\">\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__title\"\n data-testid=\"voice-recording-title\"\n [title]=\"attachment?.title\"\n >\n {{ attachment?.title }}\n </div>\n </div>\n\n @if (isError) {\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__error-message\"\n >\n <stream-icon-placeholder icon=\"error\" />\n <span data-testid=\"error-message\">{{\n \"streamChat.Error playing audio\" | translate\n }}</span>\n </div>\n } @else {\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__audio-state\"\n >\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__timer\"\n >\n @if (!!attachment?.duration) {\n <span data-testid=\"duration\">\n {{\n secondsElapsed > 0 || !audioElement.paused\n ? secondsElapsedFormatted\n : durationFormatted\n }}</span\n >\n } @else {\n <span\n class=\"str-chat__message-attachment-file--item-size\"\n data-testid=\"file-size-indicator\"\n >\n {{ fileSize }}\n </span>\n }\n </div>\n @if (attachment?.waveform_data && attachment?.duration) {\n <stream-voice-recording-wavebar\n [waveFormData]=\"attachment?.waveform_data || []\"\n [duration]=\"attachment?.duration\"\n [audioElement]=\"audioElement\"\n />\n }\n </div>\n }\n </div>\n <div\n class=\"str-chat__message-attachment__voice-recording-widget__right-section\"\n >\n @if (!audioElement?.paused) {\n <button\n class=\"str-chat__message_attachment__playback-rate-button\"\n data-testid=\"playback-rate-button\"\n (click)=\"setPlaybackRate()\"\n >\n {{ audioElement?.playbackRate | number: \"1.1-1\" }}x\n </button>\n } @else {\n <stream-icon-placeholder\n class=\"str-chat__attachment-type-icon\"\n icon=\"audio-file\"\n />\n }\n </div>\n</div>\n" }]
85
+ }], ctorParameters: () => [{ type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { attachment: [{
86
+ type: Input
87
+ }], audioElement: [{
88
+ type: ViewChild,
89
+ args: ['audioElement']
90
+ }] } });
91
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsS0FBSyxFQUlMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUd2QixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7QUFFcEQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8sdUJBQXVCO0lBYWxDLFlBQ1UsTUFBYyxFQUNkLEtBQXdCO1FBRHhCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQVZsQyxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBRXRCLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQixtQkFBYyxHQUFHLENBQUMsQ0FBQztRQUNuQixZQUFPLEdBQUcsS0FBSyxDQUFDO1FBUWQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FDdEQsSUFBSSxDQUFDLGNBQWMsQ0FDcEIsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQ2hE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QUMsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEF0dGFjaG1lbnQgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHByZXR0eWJ5dGVzIGZyb20gJ3ByZXR0eS1ieXRlcyc7XG5pbXBvcnQgeyBmb3JtYXREdXJhdGlvbiB9IGZyb20gJy4uL2Zvcm1hdC1kdXJhdGlvbic7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgY2FuIGJlIHVzZWQgdG8gZGlzcGxheSBhbiBhdHRhY2htZW50IHdpdGggdHlwZSBgdm9pY2VSZWNvcmRpbmdgLiBUaGUgY29tcG9uZW50IGFsbG93cyBwbGF5aW5nIHRoZSBhdHRhY2htZW50IGluc2lkZSB0aGUgYnJvd3Nlci5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLXZvaWNlLXJlY29yZGluZycsXG4gIHRlbXBsYXRlVXJsOiAnLi92b2ljZS1yZWNvcmRpbmcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZVJlY29yZGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKlxuICAgKiBUaGUgdm9pY2UgcmVjb3JkaW5nIGF0dGFjaG1lbnRcbiAgICovXG4gIEBJbnB1dCgpIGF0dGFjaG1lbnQ/OiBBdHRhY2htZW50PERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICBmaWxlU2l6ZTogc3RyaW5nID0gJyc7XG4gIHNlY29uZHNFbGFwc2VkRm9ybWF0dGVkOiBzdHJpbmc7XG4gIGR1cmF0aW9uRm9ybWF0dGVkOiBzdHJpbmcgPSAnJztcbiAgc2Vjb25kc0VsYXBzZWQgPSAwO1xuICBpc0Vycm9yID0gZmFsc2U7XG4gIEBWaWV3Q2hpbGQoJ2F1ZGlvRWxlbWVudCcpXG4gIHByaXZhdGUgYXVkaW9FbGVtZW50PzogRWxlbWVudFJlZjxIVE1MQXVkaW9FbGVtZW50PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIG5nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICB0aGlzLnNlY29uZHNFbGFwc2VkRm9ybWF0dGVkID0gdGhpcy5nZXRGb3JtYXR0ZWREdXJhdGlvbihcbiAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWQsXG4gICAgKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5hdHRhY2htZW50KSB7XG4gICAgICB0aGlzLmZpbGVTaXplID0gdGhpcy5nZXRGaWxlU2l6ZSgpO1xuICAgICAgdGhpcy5kdXJhdGlvbkZvcm1hdHRlZCA9IHRoaXMuZ2V0Rm9ybWF0dGVkRHVyYXRpb24oXG4gICAgICAgIHRoaXMuYXR0YWNobWVudD8uZHVyYXRpb24sXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAvLyB0aW1ldXBkYXRlIGZpcmVkIGZyZXF1bnRseSBzbyB3ZSBvcHRpbWl6ZSBjaGFuZ2UgZGV0ZWN0aW9uc1xuICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuYXVkaW9FbGVtZW50Py5uYXRpdmVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNlY29uZHNFbGFwc2VkID0gdGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmVuZGVkXG4gICAgICAgICAgPyB0aGlzLmF0dGFjaG1lbnQ/LmR1cmF0aW9uIHx8IDBcbiAgICAgICAgICA6IE1hdGgucm91bmQodGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LmN1cnJlbnRUaW1lIHx8IDApO1xuICAgICAgICBpZiAodGhpcy5zZWNvbmRzRWxhcHNlZCAhPT0gc2Vjb25kc0VsYXBzZWQpIHtcbiAgICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZWNvbmRzRWxhcHNlZCA9IHNlY29uZHNFbGFwc2VkO1xuICAgICAgICAgICAgdGhpcy5zZWNvbmRzRWxhcHNlZEZvcm1hdHRlZCA9IHRoaXMuZ2V0Rm9ybWF0dGVkRHVyYXRpb24oXG4gICAgICAgICAgICAgIHRoaXMuc2Vjb25kc0VsYXBzZWQsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgdG9nZ2xlUGxheSgpIHtcbiAgICBpZiAoIXRoaXMuYXVkaW9FbGVtZW50IHx8ICF0aGlzLmF0dGFjaG1lbnQ/LmFzc2V0X3VybCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQucGF1c2VkXG4gICAgICAgID8gYXdhaXQgdGhpcy5hdWRpb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5KClcbiAgICAgICAgOiB0aGlzLmF1ZGlvRWxlbWVudC5uYXRpdmVFbGVtZW50LnBhdXNlKCk7XG4gICAgICB0aGlzLmlzRXJyb3IgPSBmYWxzZTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5pc0Vycm9yID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBzZXRQbGF5YmFja1JhdGUoKSB7XG4gICAgaWYgKCF0aGlzLmF1ZGlvRWxlbWVudD8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsZXQgcGxheWJhY2tSYXRlID0gdGhpcy5hdWRpb0VsZW1lbnQ/Lm5hdGl2ZUVsZW1lbnQ/LnBsYXliYWNrUmF0ZSArIDAuNTtcbiAgICBpZiAocGxheWJhY2tSYXRlID4gMikge1xuICAgICAgcGxheWJhY2tSYXRlID0gMTtcbiAgICB9XG4gICAgdGhpcy5hdWRpb0VsZW1lbnQubmF0aXZlRWxlbWVudC5wbGF5YmFja1JhdGUgPSBwbGF5YmFja1JhdGU7XG4gIH1cblxuICBwcml2YXRlIGdldEZvcm1hdHRlZER1cmF0aW9uKGR1cmF0aW9uPzogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGZvcm1hdER1cmF0aW9uKGR1cmF0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RmlsZVNpemUoKSB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5hdHRhY2htZW50Py5maWxlX3NpemUgPT09IHVuZGVmaW5lZCB8fFxuICAgICAgdGhpcy5hdHRhY2htZW50Py5maWxlX3NpemUgPT09IG51bGxcbiAgICApIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIHByZXR0eWJ5dGVzKE51bWJlcih0aGlzLmF0dGFjaG1lbnQuZmlsZV9zaXplIHx8IDApKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRcIlxuICBkYXRhLXRlc3RpZD1cInZvaWNlLXJlY29yZGluZy13aWRnZXRcIlxuICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldC0tZXJyb3JdPVwiaXNFcnJvclwiXG4+XG4gIDwhLS0gRW1wdHkgZXZlbnQgaGFuZGxlcnMgdG8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIC0tPlxuICA8YXVkaW9cbiAgICAjYXVkaW9FbGVtZW50XG4gICAgKHBsYXkpPVwiKG51bGwpXCJcbiAgICAocGF1c2UpPVwiKG51bGwpXCJcbiAgICAoZW5kZWQpPVwiKG51bGwpXCJcbiAgICAoZXJyb3IpPVwiaXNFcnJvciA9IHRydWVcIlxuICAgIChhYm9ydCk9XCJpc0Vycm9yID0gdHJ1ZVwiXG4gID5cbiAgICA8c291cmNlXG4gICAgICBkYXRhLXRlc3RpZD1cImF1ZGlvLXNvdXJjZVwiXG4gICAgICBbc3JjXT1cImF0dGFjaG1lbnQ/LmFzc2V0X3VybFwiXG4gICAgICBbdHlwZV09XCJhdHRhY2htZW50Py5taW1lX3R5cGVcIlxuICAgIC8+XG4gIDwvYXVkaW8+XG4gIDxidXR0b25cbiAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnQtYXVkaW8td2lkZ2V0LS1wbGF5LWJ1dHRvblwiXG4gICAgZGF0YS10ZXN0aWQ9XCJwbGF5LWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZVBsYXkoKVwiXG4gID5cbiAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXIgW2ljb25dPVwiYXVkaW9FbGVtZW50Py5wYXVzZWQgPyAncGxheScgOiAncGF1c2UnXCIgLz5cbiAgPC9idXR0b24+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X19tZXRhZGF0YVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50LXZvaWNlLXJlY29yZGluZy13aWRnZXQtLWZpcnN0LXJvd1wiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRfX3RpdGxlXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJ2b2ljZS1yZWNvcmRpbmctdGl0bGVcIlxuICAgICAgICBbdGl0bGVdPVwiYXR0YWNobWVudD8udGl0bGVcIlxuICAgICAgPlxuICAgICAgICB7eyBhdHRhY2htZW50Py50aXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICBAaWYgKGlzRXJyb3IpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X19lcnJvci1tZXNzYWdlXCJcbiAgICAgID5cbiAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJlcnJvclwiIC8+XG4gICAgICAgIDxzcGFuIGRhdGEtdGVzdGlkPVwiZXJyb3ItbWVzc2FnZVwiPnt7XG4gICAgICAgICAgXCJzdHJlYW1DaGF0LkVycm9yIHBsYXlpbmcgYXVkaW9cIiB8IHRyYW5zbGF0ZVxuICAgICAgICB9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuICAgIH0gQGVsc2Uge1xuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnRfX3ZvaWNlLXJlY29yZGluZy13aWRnZXRfX2F1ZGlvLXN0YXRlXCJcbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtYXR0YWNobWVudF9fdm9pY2UtcmVjb3JkaW5nLXdpZGdldF9fdGltZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgQGlmICghIWF0dGFjaG1lbnQ/LmR1cmF0aW9uKSB7XG4gICAgICAgICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImR1cmF0aW9uXCI+XG4gICAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgICAgc2Vjb25kc0VsYXBzZWQgPiAwIHx8ICFhdWRpb0VsZW1lbnQucGF1c2VkXG4gICAgICAgICAgICAgICAgICA/IHNlY29uZHNFbGFwc2VkRm9ybWF0dGVkXG4gICAgICAgICAgICAgICAgICA6IGR1cmF0aW9uRm9ybWF0dGVkXG4gICAgICAgICAgICAgIH19PC9zcGFuXG4gICAgICAgICAgICA+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLWF0dGFjaG1lbnQtZmlsZS0taXRlbS1zaXplXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJmaWxlLXNpemUtaW5kaWNhdG9yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgZmlsZVNpemUgfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKGF0dGFjaG1lbnQ/LndhdmVmb3JtX2RhdGEgJiYgYXR0YWNobWVudD8uZHVyYXRpb24pIHtcbiAgICAgICAgICA8c3RyZWFtLXZvaWNlLXJlY29yZGluZy13YXZlYmFyXG4gICAgICAgICAgICBbd2F2ZUZvcm1EYXRhXT1cImF0dGFjaG1lbnQ/LndhdmVmb3JtX2RhdGEgfHwgW11cIlxuICAgICAgICAgICAgW2R1cmF0aW9uXT1cImF0dGFjaG1lbnQ/LmR1cmF0aW9uXCJcbiAgICAgICAgICAgIFthdWRpb0VsZW1lbnRdPVwiYXVkaW9FbGVtZW50XCJcbiAgICAgICAgICAvPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1hdHRhY2htZW50X192b2ljZS1yZWNvcmRpbmctd2lkZ2V0X19yaWdodC1zZWN0aW9uXCJcbiAgPlxuICAgIEBpZiAoIWF1ZGlvRWxlbWVudD8ucGF1c2VkKSB7XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2VfYXR0YWNobWVudF9fcGxheWJhY2stcmF0ZS1idXR0b25cIlxuICAgICAgICBkYXRhLXRlc3RpZD1cInBsYXliYWNrLXJhdGUtYnV0dG9uXCJcbiAgICAgICAgKGNsaWNrKT1cInNldFBsYXliYWNrUmF0ZSgpXCJcbiAgICAgID5cbiAgICAgICAge3sgYXVkaW9FbGVtZW50Py5wbGF5YmFja1JhdGUgfCBudW1iZXI6IFwiMS4xLTFcIiB9fXhcbiAgICAgIDwvYnV0dG9uPlxuICAgIH0gQGVsc2Uge1xuICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2F0dGFjaG1lbnQtdHlwZS1pY29uXCJcbiAgICAgICAgaWNvbj1cImF1ZGlvLWZpbGVcIlxuICAgICAgLz5cbiAgICB9XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -6,11 +6,11 @@ import { IconModule } from '../icon/icon.module';
6
6
  import { TranslateModule } from '@ngx-translate/core';
7
7
  import * as i0 from "@angular/core";
8
8
  export class VoiceRecordingModule {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecordingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecordingModule, declarations: [VoiceRecordingComponent, VoiceRecordingWavebarComponent], imports: [CommonModule, IconModule, TranslateModule], exports: [VoiceRecordingComponent, VoiceRecordingWavebarComponent] }); }
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecordingModule, imports: [CommonModule, IconModule, TranslateModule] }); }
9
12
  }
10
- VoiceRecordingModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecordingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- VoiceRecordingModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecordingModule, declarations: [VoiceRecordingComponent, VoiceRecordingWavebarComponent], imports: [CommonModule, IconModule, TranslateModule], exports: [VoiceRecordingComponent, VoiceRecordingWavebarComponent] });
12
- VoiceRecordingModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecordingModule, imports: [CommonModule, IconModule, TranslateModule] });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: VoiceRecordingModule, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecordingModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  declarations: [VoiceRecordingComponent, VoiceRecordingWavebarComponent],
@@ -18,4 +18,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
18
18
  exports: [VoiceRecordingComponent, VoiceRecordingWavebarComponent],
19
19
  }]
20
20
  }] });
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU90RCxNQUFNLE9BQU8sb0JBQW9COztpSEFBcEIsb0JBQW9CO2tIQUFwQixvQkFBb0IsaUJBSmhCLHVCQUF1QixFQUFFLDhCQUE4QixhQUM1RCxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsYUFDekMsdUJBQXVCLEVBQUUsOEJBQThCO2tIQUV0RCxvQkFBb0IsWUFIckIsWUFBWSxFQUFFLFVBQVUsRUFBRSxlQUFlOzJGQUd4QyxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsOEJBQThCLENBQUM7b0JBQ3ZFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDO29CQUNwRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSw4QkFBOEIsQ0FBQztpQkFDbkUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZvaWNlUmVjb3JkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi92b2ljZS1yZWNvcmRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IFZvaWNlUmVjb3JkaW5nV2F2ZWJhckNvbXBvbmVudCB9IGZyb20gJy4vdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIvdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kdWxlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtWb2ljZVJlY29yZGluZ0NvbXBvbmVudCwgVm9pY2VSZWNvcmRpbmdXYXZlYmFyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWNvbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgZXhwb3J0czogW1ZvaWNlUmVjb3JkaW5nQ29tcG9uZW50LCBWb2ljZVJlY29yZGluZ1dhdmViYXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZVJlY29yZGluZ01vZHVsZSB7fVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUM3RyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQU90RCxNQUFNLE9BQU8sb0JBQW9COzhHQUFwQixvQkFBb0I7K0dBQXBCLG9CQUFvQixpQkFKaEIsdUJBQXVCLEVBQUUsOEJBQThCLGFBQzVELFlBQVksRUFBRSxVQUFVLEVBQUUsZUFBZSxhQUN6Qyx1QkFBdUIsRUFBRSw4QkFBOEI7K0dBRXRELG9CQUFvQixZQUhyQixZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWU7OzJGQUd4QyxvQkFBb0I7a0JBTGhDLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsdUJBQXVCLEVBQUUsOEJBQThCLENBQUM7b0JBQ3ZFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDO29CQUNwRCxPQUFPLEVBQUUsQ0FBQyx1QkFBdUIsRUFBRSw4QkFBOEIsQ0FBQztpQkFDbkUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFZvaWNlUmVjb3JkaW5nQ29tcG9uZW50IH0gZnJvbSAnLi92b2ljZS1yZWNvcmRpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IFZvaWNlUmVjb3JkaW5nV2F2ZWJhckNvbXBvbmVudCB9IGZyb20gJy4vdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIvdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50JztcbmltcG9ydCB7IEljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kdWxlJztcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtWb2ljZVJlY29yZGluZ0NvbXBvbmVudCwgVm9pY2VSZWNvcmRpbmdXYXZlYmFyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWNvbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgZXhwb3J0czogW1ZvaWNlUmVjb3JkaW5nQ29tcG9uZW50LCBWb2ljZVJlY29yZGluZ1dhdmViYXJDb21wb25lbnRdLFxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZVJlY29yZGluZ01vZHVsZSB7fVxuIl19
@@ -69,4 +69,4 @@ const triangleBase = (a, b) => Math.sqrt(Math.pow(a, 2) + Math.pow(b, 2));
69
69
  const divMod = (num, divisor) => {
70
70
  return [Math.floor(num / divisor), num % divisor];
71
71
  };
72
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2ZS1mb3JtLXNhbXBsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvd2F2ZS1mb3JtLXNhbXBsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsWUFBc0IsRUFDdEIsVUFBa0IsRUFDbEIsRUFBRTtJQUNGLE9BQU8sWUFBWSxDQUFDLE1BQU0sR0FBRyxVQUFVO1FBQ3JDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQztRQUN0QyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLFlBQXNCLEVBQUUsVUFBa0IsRUFBRSxFQUFFO0lBQ2hFLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxVQUFVLEVBQUU7UUFDckMsT0FBTyxZQUFZLENBQUM7S0FDckI7SUFFRCxJQUFJLFVBQVUsS0FBSyxDQUFDO1FBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBRWxELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1Qiw0SEFBNEg7SUFDNUgsTUFBTSxVQUFVLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLElBQUksc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtJQUNoRixJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDO0lBRXhDLEtBQUssSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLFdBQVcsR0FBRyxVQUFV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R0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUU3QyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxPQUFlLEVBQUUsRUFBRTtJQUM5QyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCByZXNhbXBsZVdhdmVGb3JtID0gKFxuICB3YXZlRm9ybURhdGE6IG51bWJlcltdLFxuICBzYW1wbGVTaXplOiBudW1iZXJcbikgPT4ge1xuICByZXR1cm4gd2F2ZUZvcm1EYXRhLmxlbmd0aCA+IHNhbXBsZVNpemVcbiAgICA/IGRvd25zYW1wbGUod2F2ZUZvcm1EYXRhLCBzYW1wbGVTaXplKVxuICAgIDogdXBzYW1wbGUod2F2ZUZvcm1EYXRhLCBzYW1wbGVTaXplKTtcbn07XG5cbmNvbnN0IGRvd25zYW1wbGUgPSAod2F2ZUZvcm1EYXRhOiBudW1iZXJbXSwgc2FtcGxlU2l6ZTogbnVtYmVyKSA9PiB7XG4gIGlmICh3YXZlRm9ybURhdGEubGVuZ3RoIDw9IHNhbXBsZVNpemUpIHtcbiAgICByZXR1cm4gd2F2ZUZvcm1EYXRhO1xuICB9XG5cbiAgaWYgKHNhbXBsZVNpemUgPT09IDEpIHJldHVybiBbbWVhbih3YXZlRm9ybURhdGEpXTtcblxuICBjb25zdCByZXN1bHQ6IG51bWJlcltdID0gW107XG4gIC8vIGJ1Y2tldCBzaXplIGFkanVzdGVkIGR1ZSB0byB0aGUgZmFjdCB0aGF0IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgaXRlbSBpbiB0aGUgb3JpZ2luYWwgZGF0YSBhcnJheSBpcyBrZXB0IGluIHRhcmdldCBvdXRwdXRcbiAgY29uc3QgYnVja2V0U2l6ZSA9ICh3YXZlRm9ybURhdGEubGVuZ3RoIC0gMikgLyAoc2FtcGxlU2l6ZSAtIDIpO1xuICBsZXQgbGFzdFNlbGVjdGVkUG9pbnRJbmRleCA9IDA7XG4gIHJlc3VsdC5wdXNoKHdhdmVGb3JtRGF0YVtsYXN0U2VsZWN0ZWRQb2ludEluZGV4XSk7IC8vIEFsd2F5cyBhZGQgdGhlIGZpcnN0IHBvaW50XG4gIGxldCBtYXhBcmVhUG9pbnQsIG1heEFyZWEsIHRyaWFuZ2xlQXJlYTtcblxuICBmb3IgKGxldCBidWNrZXRJbmRleCA9IDE7IGJ1Y2tldEluZGV4IDwgc2FtcGxlU2l6ZSAtIDE7IGJ1Y2tldEluZGV4KyspIHtcbiAgICBjb25zdCBwcmV2aW91c0J1Y2tldFJlZlBvaW50ID0gd2F2ZUZvcm1EYXRhW2xhc3RTZWxlY3RlZFBvaW50SW5kZXhdO1xuICAgIGNvbnN0IG5leHRCdWNrZXRNZWFuID0gZ2V0TmV4dEJ1Y2tldE1lYW4oXG4gICAgICB3YXZlRm9ybURhdGEsXG4gICAgICBidWNrZXRJbmRleCxcbiAgICAgIGJ1Y2tldFNpemVcbiAgICApO1xuXG4gICAgY29uc3QgY3VycmVudEJ1Y2tldFN0YXJ0SW5kZXggPVxuICAgICAgTWF0aC5mbG9vcigoYnVja2V0SW5kZXggLSAxKSAqIGJ1Y2tldFNpemUpICsgMTtcbiAgICBjb25zdCBuZXh0QnVja2V0U3RhcnRJbmRleCA9IE1hdGguZmxvb3IoYnVja2V0SW5kZXggKiBidWNrZXRTaXplKSArIDE7XG4gICAgY29uc3QgY291bnRVbml0c0JldHdlZW5BdG9DID1cbiAgICAgIDEgKyBuZXh0QnVja2V0U3RhcnRJbmRleCAtIGN1cnJlbnRCdWNrZXRTdGFydEluZGV4O1xuXG4gICAgbWF4QXJlYSA9IHRyaWFuZ2xlQXJlYSA9IC0xO1xuXG4gICAgZm9yIChcbiAgICAgIGxldCBjdXJyZW50UG9pbnRJbmRleCA9IGN1cnJlbnRCdWNrZXRTdGFydEluZGV4O1xuICAgICAgY3VycmVudFBvaW50SW5kZXggPCBuZXh0QnVja2V0U3RhcnRJbmRleDtcbiAgICAgIGN1cnJlbnRQb2ludEluZGV4KytcbiAgICApIHtcbiAgICAgIGNvbnN0IGNvdW50VW5pdHNCZXR3ZWVuQXRvQiA9XG4gICAgICAgIE1hdGguYWJzKGN1cnJlbnRQb2ludEluZGV4IC0gY3VycmVudEJ1Y2tldFN0YXJ0SW5kZXgpICsgMTtcbiAgICAgIGNvbnN0IGNvdW50VW5pdHNCZXR3ZWVuQnRvQyA9XG4gICAgICAgIGNvdW50VW5pdHNCZXR3ZWVuQXRvQyAtIGNvdW50VW5pdHNCZXR3ZWVuQXRvQjtcbiAgICAgIGNvbnN0IGN1cnJlbnRQb2ludFZhbHVlID0gd2F2ZUZvcm1EYXRhW2N1cnJlbnRQb2ludEluZGV4XTtcblxuICAgICAgdHJpYW5nbGVBcmVhID0gdHJpYW5nbGVBcmVhSGVyb24oXG4gICAgICAgIHRyaWFuZ2xlQmFzZShcbiAgICAgICAgICBNYXRoLmFicyhwcmV2aW91c0J1Y2tldFJlZlBvaW50IC0gY3VycmVudFBvaW50VmFsdWUpLFxuICAgICAgICAgIGNvdW50VW5pdHNCZXR3ZWVuQXRvQlxuICAgICAgICApLFxuICAgICAgICB0cmlhbmdsZUJhc2UoXG4gICAgICAgICAgTWF0aC5hYnMoY3VycmVudFBvaW50VmFsdWUgLSBuZXh0QnVja2V0TWVhbiksXG4gICAgICAgICAgY291bnRVbml0c0JldHdlZW5CdG9DXG4gICAgICAgICksXG4gICAgICAgIHRyaWFuZ2xlQmFzZShcbiAgICAgICAgICBNYXRoLmFicyhwcmV2aW91c0J1Y2tldFJlZlBvaW50IC0gbmV4dEJ1Y2tldE1lYW4pLFxuICAgICAgICAgIGNvdW50VW5pdHNCZXR3ZWVuQXRvQ1xuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICBpZiAodHJpYW5nbGVBcmVhID4gbWF4QXJlYSkge1xuICAgICAgICBtYXhBcmVhID0gdHJpYW5nbGVBcmVhO1xuICAgICAgICBtYXhBcmVhUG9pbnQgPSB3YXZlRm9ybURhdGFbY3VycmVudFBvaW50SW5kZXhdO1xuICAgICAgICBsYXN0U2VsZWN0ZWRQb2ludEluZGV4ID0gY3VycmVudFBvaW50SW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtYXhBcmVhUG9pbnQgIT09ICd1bmRlZmluZWQnKSByZXN1bHQucHVzaChtYXhBcmVhUG9pbnQpO1xuICB9XG5cbiAgcmVzdWx0LnB1c2god2F2ZUZvcm1EYXRhW3dhdmVGb3JtRGF0YS5sZW5ndGggLSAxXSk7IC8vIEFsd2F5cyBhZGQgdGhlIGxhc3QgcG9pbnRcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgdXBzYW1wbGUgPSAod2F2ZUZvcm1EYXRhOiBudW1iZXJbXSwgc2FtcGxlU2l6ZTogbnVtYmVyKSA9PiB7XG4gIGlmIChzYW1wbGVTaXplID09PSB3YXZlRm9ybURhdGEubGVuZ3RoKSByZXR1cm4gd2F2ZUZvcm1EYXRhO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgcHJlZmVyLWNvbnN0XG4gIGxldCBbYnVja2V0U2l6ZSwgcmVtYWluZGVyXSA9IGRpdk1vZChzYW1wbGVTaXplLCB3YXZlRm9ybURhdGEubGVuZ3RoKTtcbiAgY29uc3QgcmVzdWx0OiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgd2F2ZUZvcm1EYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZXh0cmEgPSByZW1haW5kZXIgJiYgcmVtYWluZGVyLS0gPyAxIDogMDtcbiAgICByZXN1bHQucHVzaCguLi5BcnJheTxudW1iZXI+KGJ1Y2tldFNpemUgKyBleHRyYSkuZmlsbCh3YXZlRm9ybURhdGFbaV0pKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgZ2V0TmV4dEJ1Y2tldE1lYW4gPSAoXG4gIGRhdGE6IG51bWJlcltdLFxuICBjdXJyZW50QnVja2V0SW5kZXg6IG51bWJlcixcbiAgYnVja2V0U2l6ZTogbnVtYmVyXG4pID0+IHtcbiAgY29uc3QgbmV4dEJ1Y2tldFN0YXJ0SW5kZXggPSBNYXRoLmZsb29yKGN1cnJlbnRCdWNrZXRJbmRleCAqIGJ1Y2tldFNpemUpICsgMTtcbiAgbGV0IG5leHROZXh0QnVja2V0U3RhcnRJbmRleCA9XG4gICAgTWF0aC5mbG9vcigoY3VycmVudEJ1Y2tldEluZGV4ICsgMSkgKiBidWNrZXRTaXplKSArIDE7XG4gIG5leHROZXh0QnVja2V0U3RhcnRJbmRleCA9XG4gICAgbmV4dE5leHRCdWNrZXRTdGFydEluZGV4IDwgZGF0YS5sZW5ndGhcbiAgICAgID8gbmV4dE5leHRCdWNrZXRTdGFydEluZGV4XG4gICAgICA6IGRhdGEubGVuZ3RoO1xuXG4gIHJldHVybiBtZWFuKGRhdGEuc2xpY2UobmV4dEJ1Y2tldFN0YXJ0SW5kZXgsIG5leHROZXh0QnVja2V0U3RhcnRJbmRleCkpO1xufTtcblxuY29uc3QgbWVhbiA9ICh2YWx1ZXM6IG51bWJlcltdKSA9PlxuICB2YWx1ZXMucmVkdWNlKChhY2MsIHZhbHVlKSA9PiBhY2MgKyB2YWx1ZSwgMCkgLyB2YWx1ZXMubGVuZ3RoO1xuXG5jb25zdCB0cmlhbmdsZUFyZWFIZXJvbiA9IChhOiBudW1iZXIsIGI6IG51bWJlciwgYzogbnVtYmVyKSA9PiB7XG4gIGNvbnN0IHMgPSAoYSArIGIgKyBjKSAvIDI7XG4gIHJldHVybiBNYXRoLnNxcnQocyAqIChzIC0gYSkgKiAocyAtIGIpICogKHMgLSBjKSk7XG59O1xuXG5jb25zdCB0cmlhbmdsZUJhc2UgPSAoYTogbnVtYmVyLCBiOiBudW1iZXIpID0+XG4gIE1hdGguc3FydChNYXRoLnBvdyhhLCAyKSArIE1hdGgucG93KGIsIDIpKTtcblxuY29uc3QgZGl2TW9kID0gKG51bTogbnVtYmVyLCBkaXZpc29yOiBudW1iZXIpID0+IHtcbiAgcmV0dXJuIFtNYXRoLmZsb29yKG51bSAvIGRpdmlzb3IpLCBudW0gJSBkaXZpc29yXTtcbn07XG4iXX0=
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F2ZS1mb3JtLXNhbXBsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvd2F2ZS1mb3JtLXNhbXBsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FDOUIsWUFBc0IsRUFDdEIsVUFBa0IsRUFDbEIsRUFBRTtJQUNGLE9BQU8sWUFBWSxDQUFDLE1BQU0sR0FBRyxVQUFVO1FBQ3JDLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLFVBQVUsQ0FBQztRQUN0QyxDQUFDLENBQUMsUUFBUSxDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQztBQUN6QyxDQUFDLENBQUM7QUFFRixNQUFNLFVBQVUsR0FBRyxDQUFDLFlBQXNCLEVBQUUsVUFBa0IsRUFBRSxFQUFFO0lBQ2hFLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxVQUFVLEVBQUU7UUFDckMsT0FBTyxZQUFZLENBQUM7S0FDckI7SUFFRCxJQUFJLFVBQVUsS0FBSyxDQUFDO1FBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBRWxELE1BQU0sTUFBTSxHQUFhLEVBQUUsQ0FBQztJQUM1Qiw0SEFBNEg7SUFDNUgsTUFBTSxVQUFVLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2hFLElBQUksc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUMsQ0FBQyxDQUFDLDZCQUE2QjtJQUNoRixJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUUsWUFBWSxDQUFDO0lBRXhDLEtBQUssSUFBSSxXQUFXLEdBQUcsQ0FBQyxFQUFFLFdBQVcsR0FBRyxVQUFV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R0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQztBQUVGLE1BQU0sWUFBWSxHQUFHLENBQUMsQ0FBUyxFQUFFLENBQVMsRUFBRSxFQUFFLENBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUU3QyxNQUFNLE1BQU0sR0FBRyxDQUFDLEdBQVcsRUFBRSxPQUFlLEVBQUUsRUFBRTtJQUM5QyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDO0FBQ3BELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCByZXNhbXBsZVdhdmVGb3JtID0gKFxuICB3YXZlRm9ybURhdGE6IG51bWJlcltdLFxuICBzYW1wbGVTaXplOiBudW1iZXIsXG4pID0+IHtcbiAgcmV0dXJuIHdhdmVGb3JtRGF0YS5sZW5ndGggPiBzYW1wbGVTaXplXG4gICAgPyBkb3duc2FtcGxlKHdhdmVGb3JtRGF0YSwgc2FtcGxlU2l6ZSlcbiAgICA6IHVwc2FtcGxlKHdhdmVGb3JtRGF0YSwgc2FtcGxlU2l6ZSk7XG59O1xuXG5jb25zdCBkb3duc2FtcGxlID0gKHdhdmVGb3JtRGF0YTogbnVtYmVyW10sIHNhbXBsZVNpemU6IG51bWJlcikgPT4ge1xuICBpZiAod2F2ZUZvcm1EYXRhLmxlbmd0aCA8PSBzYW1wbGVTaXplKSB7XG4gICAgcmV0dXJuIHdhdmVGb3JtRGF0YTtcbiAgfVxuXG4gIGlmIChzYW1wbGVTaXplID09PSAxKSByZXR1cm4gW21lYW4od2F2ZUZvcm1EYXRhKV07XG5cbiAgY29uc3QgcmVzdWx0OiBudW1iZXJbXSA9IFtdO1xuICAvLyBidWNrZXQgc2l6ZSBhZGp1c3RlZCBkdWUgdG8gdGhlIGZhY3QgdGhhdCB0aGUgZmlyc3QgYW5kIHRoZSBsYXN0IGl0ZW0gaW4gdGhlIG9yaWdpbmFsIGRhdGEgYXJyYXkgaXMga2VwdCBpbiB0YXJnZXQgb3V0cHV0XG4gIGNvbnN0IGJ1Y2tldFNpemUgPSAod2F2ZUZvcm1EYXRhLmxlbmd0aCAtIDIpIC8gKHNhbXBsZVNpemUgLSAyKTtcbiAgbGV0IGxhc3RTZWxlY3RlZFBvaW50SW5kZXggPSAwO1xuICByZXN1bHQucHVzaCh3YXZlRm9ybURhdGFbbGFzdFNlbGVjdGVkUG9pbnRJbmRleF0pOyAvLyBBbHdheXMgYWRkIHRoZSBmaXJzdCBwb2ludFxuICBsZXQgbWF4QXJlYVBvaW50LCBtYXhBcmVhLCB0cmlhbmdsZUFyZWE7XG5cbiAgZm9yIChsZXQgYnVja2V0SW5kZXggPSAxOyBidWNrZXRJbmRleCA8IHNhbXBsZVNpemUgLSAxOyBidWNrZXRJbmRleCsrKSB7XG4gICAgY29uc3QgcHJldmlvdXNCdWNrZXRSZWZQb2ludCA9IHdhdmVGb3JtRGF0YVtsYXN0U2VsZWN0ZWRQb2ludEluZGV4XTtcbiAgICBjb25zdCBuZXh0QnVja2V0TWVhbiA9IGdldE5leHRCdWNrZXRNZWFuKFxuICAgICAgd2F2ZUZvcm1EYXRhLFxuICAgICAgYnVja2V0SW5kZXgsXG4gICAgICBidWNrZXRTaXplLFxuICAgICk7XG5cbiAgICBjb25zdCBjdXJyZW50QnVja2V0U3RhcnRJbmRleCA9XG4gICAgICBNYXRoLmZsb29yKChidWNrZXRJbmRleCAtIDEpICogYnVja2V0U2l6ZSkgKyAxO1xuICAgIGNvbnN0IG5leHRCdWNrZXRTdGFydEluZGV4ID0gTWF0aC5mbG9vcihidWNrZXRJbmRleCAqIGJ1Y2tldFNpemUpICsgMTtcbiAgICBjb25zdCBjb3VudFVuaXRzQmV0d2VlbkF0b0MgPVxuICAgICAgMSArIG5leHRCdWNrZXRTdGFydEluZGV4IC0gY3VycmVudEJ1Y2tldFN0YXJ0SW5kZXg7XG5cbiAgICBtYXhBcmVhID0gdHJpYW5nbGVBcmVhID0gLTE7XG5cbiAgICBmb3IgKFxuICAgICAgbGV0IGN1cnJlbnRQb2ludEluZGV4ID0gY3VycmVudEJ1Y2tldFN0YXJ0SW5kZXg7XG4gICAgICBjdXJyZW50UG9pbnRJbmRleCA8IG5leHRCdWNrZXRTdGFydEluZGV4O1xuICAgICAgY3VycmVudFBvaW50SW5kZXgrK1xuICAgICkge1xuICAgICAgY29uc3QgY291bnRVbml0c0JldHdlZW5BdG9CID1cbiAgICAgICAgTWF0aC5hYnMoY3VycmVudFBvaW50SW5kZXggLSBjdXJyZW50QnVja2V0U3RhcnRJbmRleCkgKyAxO1xuICAgICAgY29uc3QgY291bnRVbml0c0JldHdlZW5CdG9DID1cbiAgICAgICAgY291bnRVbml0c0JldHdlZW5BdG9DIC0gY291bnRVbml0c0JldHdlZW5BdG9CO1xuICAgICAgY29uc3QgY3VycmVudFBvaW50VmFsdWUgPSB3YXZlRm9ybURhdGFbY3VycmVudFBvaW50SW5kZXhdO1xuXG4gICAgICB0cmlhbmdsZUFyZWEgPSB0cmlhbmdsZUFyZWFIZXJvbihcbiAgICAgICAgdHJpYW5nbGVCYXNlKFxuICAgICAgICAgIE1hdGguYWJzKHByZXZpb3VzQnVja2V0UmVmUG9pbnQgLSBjdXJyZW50UG9pbnRWYWx1ZSksXG4gICAgICAgICAgY291bnRVbml0c0JldHdlZW5BdG9CLFxuICAgICAgICApLFxuICAgICAgICB0cmlhbmdsZUJhc2UoXG4gICAgICAgICAgTWF0aC5hYnMoY3VycmVudFBvaW50VmFsdWUgLSBuZXh0QnVja2V0TWVhbiksXG4gICAgICAgICAgY291bnRVbml0c0JldHdlZW5CdG9DLFxuICAgICAgICApLFxuICAgICAgICB0cmlhbmdsZUJhc2UoXG4gICAgICAgICAgTWF0aC5hYnMocHJldmlvdXNCdWNrZXRSZWZQb2ludCAtIG5leHRCdWNrZXRNZWFuKSxcbiAgICAgICAgICBjb3VudFVuaXRzQmV0d2VlbkF0b0MsXG4gICAgICAgICksXG4gICAgICApO1xuXG4gICAgICBpZiAodHJpYW5nbGVBcmVhID4gbWF4QXJlYSkge1xuICAgICAgICBtYXhBcmVhID0gdHJpYW5nbGVBcmVhO1xuICAgICAgICBtYXhBcmVhUG9pbnQgPSB3YXZlRm9ybURhdGFbY3VycmVudFBvaW50SW5kZXhdO1xuICAgICAgICBsYXN0U2VsZWN0ZWRQb2ludEluZGV4ID0gY3VycmVudFBvaW50SW5kZXg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBtYXhBcmVhUG9pbnQgIT09ICd1bmRlZmluZWQnKSByZXN1bHQucHVzaChtYXhBcmVhUG9pbnQpO1xuICB9XG5cbiAgcmVzdWx0LnB1c2god2F2ZUZvcm1EYXRhW3dhdmVGb3JtRGF0YS5sZW5ndGggLSAxXSk7IC8vIEFsd2F5cyBhZGQgdGhlIGxhc3QgcG9pbnRcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgdXBzYW1wbGUgPSAod2F2ZUZvcm1EYXRhOiBudW1iZXJbXSwgc2FtcGxlU2l6ZTogbnVtYmVyKSA9PiB7XG4gIGlmIChzYW1wbGVTaXplID09PSB3YXZlRm9ybURhdGEubGVuZ3RoKSByZXR1cm4gd2F2ZUZvcm1EYXRhO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgcHJlZmVyLWNvbnN0XG4gIGxldCBbYnVja2V0U2l6ZSwgcmVtYWluZGVyXSA9IGRpdk1vZChzYW1wbGVTaXplLCB3YXZlRm9ybURhdGEubGVuZ3RoKTtcbiAgY29uc3QgcmVzdWx0OiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgd2F2ZUZvcm1EYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgZXh0cmEgPSByZW1haW5kZXIgJiYgcmVtYWluZGVyLS0gPyAxIDogMDtcbiAgICByZXN1bHQucHVzaCguLi5BcnJheTxudW1iZXI+KGJ1Y2tldFNpemUgKyBleHRyYSkuZmlsbCh3YXZlRm9ybURhdGFbaV0pKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuY29uc3QgZ2V0TmV4dEJ1Y2tldE1lYW4gPSAoXG4gIGRhdGE6IG51bWJlcltdLFxuICBjdXJyZW50QnVja2V0SW5kZXg6IG51bWJlcixcbiAgYnVja2V0U2l6ZTogbnVtYmVyLFxuKSA9PiB7XG4gIGNvbnN0IG5leHRCdWNrZXRTdGFydEluZGV4ID0gTWF0aC5mbG9vcihjdXJyZW50QnVja2V0SW5kZXggKiBidWNrZXRTaXplKSArIDE7XG4gIGxldCBuZXh0TmV4dEJ1Y2tldFN0YXJ0SW5kZXggPVxuICAgIE1hdGguZmxvb3IoKGN1cnJlbnRCdWNrZXRJbmRleCArIDEpICogYnVja2V0U2l6ZSkgKyAxO1xuICBuZXh0TmV4dEJ1Y2tldFN0YXJ0SW5kZXggPVxuICAgIG5leHROZXh0QnVja2V0U3RhcnRJbmRleCA8IGRhdGEubGVuZ3RoXG4gICAgICA/IG5leHROZXh0QnVja2V0U3RhcnRJbmRleFxuICAgICAgOiBkYXRhLmxlbmd0aDtcblxuICByZXR1cm4gbWVhbihkYXRhLnNsaWNlKG5leHRCdWNrZXRTdGFydEluZGV4LCBuZXh0TmV4dEJ1Y2tldFN0YXJ0SW5kZXgpKTtcbn07XG5cbmNvbnN0IG1lYW4gPSAodmFsdWVzOiBudW1iZXJbXSkgPT5cbiAgdmFsdWVzLnJlZHVjZSgoYWNjLCB2YWx1ZSkgPT4gYWNjICsgdmFsdWUsIDApIC8gdmFsdWVzLmxlbmd0aDtcblxuY29uc3QgdHJpYW5nbGVBcmVhSGVyb24gPSAoYTogbnVtYmVyLCBiOiBudW1iZXIsIGM6IG51bWJlcikgPT4ge1xuICBjb25zdCBzID0gKGEgKyBiICsgYykgLyAyO1xuICByZXR1cm4gTWF0aC5zcXJ0KHMgKiAocyAtIGEpICogKHMgLSBiKSAqIChzIC0gYykpO1xufTtcblxuY29uc3QgdHJpYW5nbGVCYXNlID0gKGE6IG51bWJlciwgYjogbnVtYmVyKSA9PlxuICBNYXRoLnNxcnQoTWF0aC5wb3coYSwgMikgKyBNYXRoLnBvdyhiLCAyKSk7XG5cbmNvbnN0IGRpdk1vZCA9IChudW06IG51bWJlciwgZGl2aXNvcjogbnVtYmVyKSA9PiB7XG4gIHJldHVybiBbTWF0aC5mbG9vcihudW0gLyBkaXZpc29yKSwgbnVtICUgZGl2aXNvcl07XG59O1xuIl19
@@ -0,0 +1,82 @@
1
+ /*
2
+ * Public API Surface of stream-chat-angular
3
+ */
4
+ export * from './lib/chat-client.service';
5
+ export * from './lib/channel.service';
6
+ export * from './lib/theme.service';
7
+ export * from './lib/attachment.service';
8
+ export * from './lib/attachment-configuration.service';
9
+ export * from './lib/stream-i18n.service';
10
+ export * from './lib/avatar/avatar.component';
11
+ export * from './lib/avatar-placeholder/avatar-placeholder.component';
12
+ export * from './lib/icon/icon.component';
13
+ export * from './lib/icon/icon-placeholder/icon-placeholder.component';
14
+ export * from './lib/icon/loading-indicator/loading-indicator.component';
15
+ export * from './lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component';
16
+ export * from './lib/message-actions-box/message-actions-box.component';
17
+ export * from './lib/channel/channel.component';
18
+ export * from './lib/channel-header/channel-header.component';
19
+ export * from './lib/channel-preview/channel-preview.component';
20
+ export * from './lib/channel-list/channel-list.component';
21
+ export * from './lib/message/message.component';
22
+ export * from './lib/parse-date';
23
+ export * from './lib/list-users';
24
+ export * from './lib/message-input/message-input.component';
25
+ export * from './lib/message-bounce-prompt/message-bounce-prompt.component';
26
+ export * from './lib/message-input/textarea/textarea.component';
27
+ export * from './lib/message-input/autocomplete-textarea/autocomplete-textarea.component';
28
+ export * from './lib/message-input/message-input-config.service';
29
+ export * from './lib/message-input/textarea.directive';
30
+ export * from './lib/message-input/textarea.interface';
31
+ export * from './lib/message-input/emoji-input.service';
32
+ export * from './lib/message-list/message-list.component';
33
+ export * from './lib/message-list/group-styles';
34
+ export * from './lib/attachment-list/attachment-list.component';
35
+ export * from './lib/attachment-preview-list/attachment-preview-list.component';
36
+ export * from './lib/message-reactions/message-reactions.component';
37
+ export * from './lib/notification/notification.component';
38
+ export * from './lib/notification-list/notification-list.component';
39
+ export * from './lib/thread/thread.component';
40
+ export * from './lib/modal/modal.component';
41
+ export * from './lib/read-by';
42
+ export * from './lib/get-message-translation';
43
+ export * from './lib/get-channel-display-text';
44
+ export * from './lib/is-image-attachment';
45
+ export * from './lib/file-utils';
46
+ export * from './lib/message-preview';
47
+ export * from './lib/notification.service';
48
+ export * from './lib/transliteration.service';
49
+ export * from './lib/stream-chat.module';
50
+ export * from './lib/stream-avatar.module';
51
+ export * from './lib/stream-autocomplete-textarea.module';
52
+ export * from './lib/stream-textarea.module';
53
+ export * from './lib/injection-tokens';
54
+ export * from './lib/custom-templates.service';
55
+ export * from './lib/message-reactions.service';
56
+ export * from './lib/date-parser.service';
57
+ export * from './lib/types';
58
+ export * from './lib/message.service';
59
+ export * from './lib/message-actions.service';
60
+ export * from './lib/voice-recording/voice-recording.component';
61
+ export * from './lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component';
62
+ export * from './lib/is-on-separate-date';
63
+ export * from './lib/message-reactions-selector/message-reactions-selector.component';
64
+ export * from './lib/virtualized-list.service';
65
+ export * from './lib/virtualized-message-list.service';
66
+ export * from './lib/user-list/user-list.component';
67
+ export * from './lib/paginated-list/paginated-list.component';
68
+ export * from './lib/is-safari';
69
+ export * from './lib/voice-recorder/voice-recorder.module';
70
+ export * from './lib/voice-recorder/amplitude-recorder.service';
71
+ export * from './lib/voice-recorder/audio-recorder.service';
72
+ export * from './lib/voice-recorder/media-recorder';
73
+ export * from './lib/voice-recorder/transcoder.service';
74
+ export * from './lib/voice-recorder/voice-recorder.component';
75
+ export * from './lib/voice-recording/voice-recording.module';
76
+ export * from './lib/icon/icon.module';
77
+ export * from './lib/voice-recorder//voice-recorder-wavebar/voice-recorder-wavebar.component';
78
+ export * from './lib/format-duration';
79
+ export * from './lib/message-input/voice-recorder.service';
80
+ export * from './lib/voice-recorder/mp3-transcoder';
81
+ export * from './lib/message-text/message-text.component';
82
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsdURBQXVELENBQUM7QUFDdEUsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHdEQUF3RCxDQUFDO0FBQ3ZFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxrRkFBa0YsQ0FBQztBQUNqRyxjQUFjLHlEQUF5RCxDQUFDO0FBQ3hFLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLDZEQUE2RCxDQUFDO0FBQzVFLGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYywyRUFBMkUsQ0FBQztBQUMxRixjQUFjLGtEQUFrRCxDQUFDO0FBQ2pFLGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsaUVBQWlFLENBQUM7QUFDaEYsY0FBYyxxREFBcUQsQ0FBQztBQUNwRSxjQUFjLDJDQUEyQyxDQUFDO0FBQzFELGNBQWMscURBQXFELENBQUM7QUFDcEUsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsZUFBZSxDQUFDO0FBQzlCLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyx1QkFBdUIsQ0FBQztBQUN0QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsK0JBQStCLENBQUM7QUFDOUMsY0FBYywwQkFBMEIsQ0FBQztBQUN6QyxjQUFjLDRCQUE0QixDQUFDO0FBQzNDLGNBQWMsMkNBQTJDLENBQUM7QUFDMUQsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyxpQ0FBaUMsQ0FBQztBQUNoRCxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYywrQkFBK0IsQ0FBQztBQUM5QyxjQUFjLGlEQUFpRCxDQUFDO0FBQ2hFLGNBQWMsaUZBQWlGLENBQUM7QUFDaEcsY0FBYywyQkFBMkIsQ0FBQztBQUMxQyxjQUFjLHVFQUF1RSxDQUFDO0FBQ3RGLGNBQWMsZ0NBQWdDLENBQUM7QUFDL0MsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsK0NBQStDLENBQUM7QUFDOUQsY0FBYyxpQkFBaUIsQ0FBQztBQUNoQyxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsaURBQWlELENBQUM7QUFDaEUsY0FBYyw2Q0FBNkMsQ0FBQztBQUM1RCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLDhDQUE4QyxDQUFDO0FBQzdELGNBQWMsd0JBQXdCLENBQUM7QUFDdkMsY0FBYywrRUFBK0UsQ0FBQztBQUM5RixjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDJDQUEyQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBzdHJlYW0tY2hhdC1hbmd1bGFyXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhdC1jbGllbnQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jaGFubmVsLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGhlbWUuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdHRhY2htZW50LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXR0YWNobWVudC1jb25maWd1cmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RyZWFtLWkxOG4uc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9hdmF0YXItcGxhY2Vob2xkZXIvYXZhdGFyLXBsYWNlaG9sZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29uL2ljb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ljb24vaWNvbi1wbGFjZWhvbGRlci9pY29uLXBsYWNlaG9sZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29uL2xvYWRpbmctaW5kaWNhdG9yL2xvYWRpbmctaW5kaWNhdG9yLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9pY29uL2xvYWRpbmctaW5kaWNhdG9yLXBsYWNlaG9sZGVyL2xvYWRpbmctaW5kaWNhdG9yLXBsYWNlaG9sZGVyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWFjdGlvbnMtYm94L21lc3NhZ2UtYWN0aW9ucy1ib3guY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwvY2hhbm5lbC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY2hhbm5lbC1oZWFkZXIvY2hhbm5lbC1oZWFkZXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwtcHJldmlldy9jaGFubmVsLXByZXZpZXcuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NoYW5uZWwtbGlzdC9jaGFubmVsLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UvbWVzc2FnZS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFyc2UtZGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9saXN0LXVzZXJzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtaW5wdXQvbWVzc2FnZS1pbnB1dC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1ib3VuY2UtcHJvbXB0L21lc3NhZ2UtYm91bmNlLXByb21wdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC9hdXRvY29tcGxldGUtdGV4dGFyZWEvYXV0b2NvbXBsZXRlLXRleHRhcmVhLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWlucHV0L21lc3NhZ2UtaW5wdXQtY29uZmlnLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC90ZXh0YXJlYS5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC90ZXh0YXJlYS5pbnRlcmZhY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC9lbW9qaS1pbnB1dC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtbGlzdC9tZXNzYWdlLWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtbGlzdC9ncm91cC1zdHlsZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXR0YWNobWVudC1saXN0L2F0dGFjaG1lbnQtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvYXR0YWNobWVudC1wcmV2aWV3LWxpc3QvYXR0YWNobWVudC1wcmV2aWV3LWxpc3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24vbm90aWZpY2F0aW9uLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9ub3RpZmljYXRpb24tbGlzdC9ub3RpZmljYXRpb24tbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdGhyZWFkL3RocmVhZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbW9kYWwvbW9kYWwuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3JlYWQtYnknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2V0LW1lc3NhZ2UtdHJhbnNsYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ2V0LWNoYW5uZWwtZGlzcGxheS10ZXh0JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lzLWltYWdlLWF0dGFjaG1lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmlsZS11dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLXByZXZpZXcnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdHJhbnNsaXRlcmF0aW9uLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvc3RyZWFtLWNoYXQubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmVhbS1hdmF0YXIubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmVhbS1hdXRvY29tcGxldGUtdGV4dGFyZWEubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3N0cmVhbS10ZXh0YXJlYS5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW5qZWN0aW9uLXRva2Vucyc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1yZWFjdGlvbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9kYXRlLXBhcnNlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2Uuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tZXNzYWdlLWFjdGlvbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIvdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lzLW9uLXNlcGFyYXRlLWRhdGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1yZWFjdGlvbnMtc2VsZWN0b3IvbWVzc2FnZS1yZWFjdGlvbnMtc2VsZWN0b3IuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZpcnR1YWxpemVkLWxpc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92aXJ0dWFsaXplZC1tZXNzYWdlLWxpc3Quc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi91c2VyLWxpc3QvdXNlci1saXN0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9wYWdpbmF0ZWQtbGlzdC9wYWdpbmF0ZWQtbGlzdC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXMtc2FmYXJpJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZvaWNlLXJlY29yZGVyL3ZvaWNlLXJlY29yZGVyLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92b2ljZS1yZWNvcmRlci9hbXBsaXR1ZGUtcmVjb3JkZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92b2ljZS1yZWNvcmRlci9hdWRpby1yZWNvcmRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZvaWNlLXJlY29yZGVyL21lZGlhLXJlY29yZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZvaWNlLXJlY29yZGVyL3RyYW5zY29kZXIuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92b2ljZS1yZWNvcmRlci92b2ljZS1yZWNvcmRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvdm9pY2UtcmVjb3JkaW5nL3ZvaWNlLXJlY29yZGluZy5tb2R1bGUnO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaWNvbi9pY29uLm1vZHVsZSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi92b2ljZS1yZWNvcmRlci8vdm9pY2UtcmVjb3JkZXItd2F2ZWJhci92b2ljZS1yZWNvcmRlci13YXZlYmFyLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9mb3JtYXQtZHVyYXRpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvbWVzc2FnZS1pbnB1dC92b2ljZS1yZWNvcmRlci5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3ZvaWNlLXJlY29yZGVyL21wMy10cmFuc2NvZGVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL21lc3NhZ2UtdGV4dC9tZXNzYWdlLXRleHQuY29tcG9uZW50JztcbiJdfQ==