stream-chat-angular 6.0.0-beta.5 → 6.0.0-rc.2
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.
- package/README.md +2 -2
- package/assets/i18n/en.d.ts +0 -1
- package/assets/version.d.ts +1 -1
- package/{esm2022 → esm2020}/assets/i18n/en.mjs +1 -2
- package/{esm2022 → esm2020}/assets/version.mjs +2 -2
- package/esm2020/lib/attachment-configuration.service.mjs +182 -0
- package/esm2020/lib/attachment-list/attachment-list.component.mjs +232 -0
- package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +55 -0
- package/esm2020/lib/attachment.service.mjs +481 -0
- package/esm2020/lib/avatar/avatar.component.mjs +160 -0
- package/esm2020/lib/avatar-placeholder/avatar-placeholder.component.mjs +66 -0
- package/esm2020/lib/channel/channel.component.mjs +45 -0
- package/esm2020/lib/channel-header/channel-header.component.mjs +72 -0
- package/esm2020/lib/channel-list/channel-list.component.mjs +47 -0
- package/esm2020/lib/channel-preview/channel-preview.component.mjs +155 -0
- package/esm2020/lib/channel-query.mjs +77 -0
- package/esm2020/lib/channel.service.mjs +1561 -0
- package/esm2020/lib/chat-client.service.mjs +233 -0
- package/esm2020/lib/custom-templates.service.mjs +244 -0
- package/{esm2022 → esm2020}/lib/date-parser.service.mjs +5 -5
- package/esm2020/lib/file-utils.mjs +35 -0
- package/{esm2022 → esm2020}/lib/get-channel-display-text.mjs +1 -1
- package/esm2020/lib/get-message-translation.mjs +12 -0
- package/esm2020/lib/icon/icon-placeholder/icon-placeholder.component.mjs +28 -0
- package/{esm2022 → esm2020}/lib/icon/icon.component.mjs +5 -5
- package/{esm2022 → esm2020}/lib/icon/icon.module.mjs +11 -11
- package/{esm2022 → esm2020}/lib/icon/loading-indicator/loading-indicator.component.mjs +5 -5
- package/esm2020/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.mjs +20 -0
- package/{esm2022 → esm2020}/lib/list-users.mjs +1 -1
- package/esm2020/lib/message/message.component.mjs +486 -0
- package/esm2020/lib/message-actions-box/message-actions-box.component.mjs +123 -0
- package/esm2020/lib/message-actions.service.mjs +187 -0
- package/esm2020/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +71 -0
- package/esm2020/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.mjs +333 -0
- package/{esm2022 → esm2020}/lib/message-input/emoji-input.service.mjs +7 -7
- package/esm2020/lib/message-input/message-input-config.service.mjs +50 -0
- package/esm2020/lib/message-input/message-input.component.mjs +507 -0
- package/{esm2022 → esm2020}/lib/message-input/textarea/textarea.component.mjs +6 -6
- package/{esm2022 → esm2020}/lib/message-input/textarea.directive.mjs +5 -5
- package/{esm2022 → esm2020}/lib/message-input/voice-recorder.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/message-list/group-styles.mjs +1 -1
- package/esm2020/lib/message-list/message-list.component.mjs +717 -0
- package/esm2020/lib/message-preview.mjs +21 -0
- package/esm2020/lib/message-reactions/message-reactions.component.mjs +168 -0
- package/esm2020/lib/message-reactions-selector/message-reactions-selector.component.mjs +61 -0
- package/{esm2022 → esm2020}/lib/message-reactions.service.mjs +6 -6
- package/esm2020/lib/message-text/message-text.component.mjs +143 -0
- package/esm2020/lib/message.service.mjs +43 -0
- package/{esm2022 → esm2020}/lib/modal/modal.component.mjs +6 -6
- package/esm2020/lib/notification/notification.component.mjs +20 -0
- package/esm2020/lib/notification-list/notification-list.component.mjs +36 -0
- package/{esm2022 → esm2020}/lib/notification.service.mjs +6 -6
- package/esm2020/lib/paginated-list/paginated-list.component.mjs +94 -0
- package/{esm2022 → esm2020}/lib/parse-date.mjs +1 -1
- package/esm2020/lib/read-by.mjs +12 -0
- package/esm2020/lib/stream-autocomplete-textarea.module.mjs +33 -0
- package/{esm2022 → esm2020}/lib/stream-avatar.module.mjs +5 -5
- package/{esm2022 → esm2020}/lib/stream-chat.module.mjs +59 -59
- package/{esm2022 → esm2020}/lib/stream-i18n.service.mjs +6 -6
- package/esm2020/lib/stream-textarea.module.mjs +31 -0
- package/{esm2022 → esm2020}/lib/theme.service.mjs +6 -6
- package/esm2020/lib/thread/thread.component.mjs +51 -0
- package/{esm2022 → esm2020}/lib/transliteration.service.mjs +5 -5
- package/esm2020/lib/types-custom.mjs +2 -0
- package/esm2020/lib/types.mjs +2 -0
- package/esm2020/lib/user-list/user-list.component.mjs +47 -0
- package/esm2020/lib/virtualized-list.service.mjs +271 -0
- package/{esm2022 → esm2020}/lib/virtualized-message-list.service.mjs +1 -1
- package/{esm2022 → esm2020}/lib/voice-recorder/amplitude-recorder.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/voice-recorder/audio-recorder.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/voice-recorder/media-recorder.mjs +1 -1
- package/esm2020/lib/voice-recorder/mp3-transcoder.mjs +61 -0
- package/esm2020/lib/voice-recorder/transcoder.service.mjs +121 -0
- package/esm2020/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +35 -0
- package/esm2020/lib/voice-recorder/voice-recorder.component.mjs +80 -0
- package/{esm2022 → esm2020}/lib/voice-recorder/voice-recorder.module.mjs +9 -9
- package/esm2020/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +112 -0
- package/esm2020/lib/voice-recording/voice-recording.component.mjs +91 -0
- package/{esm2022 → esm2020}/lib/voice-recording/voice-recording.module.mjs +5 -5
- package/{esm2022 → esm2020}/lib/wave-form-sampler.mjs +1 -1
- package/esm2020/public-api.mjs +86 -0
- package/esm2020/stream-chat.mjs +2 -0
- package/fesm2015/stream-chat-angular.mjs +9171 -0
- package/fesm2015/stream-chat-angular.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/stream-chat-angular.mjs +1251 -961
- package/fesm2020/stream-chat-angular.mjs.map +1 -0
- package/lib/attachment-configuration.service.d.ts +12 -12
- package/lib/attachment-list/attachment-list.component.d.ts +15 -10
- package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +1 -1
- package/lib/attachment.service.d.ts +12 -10
- package/lib/avatar/avatar.component.d.ts +7 -7
- package/lib/avatar-placeholder/avatar-placeholder.component.d.ts +5 -5
- package/lib/channel/channel.component.d.ts +1 -1
- package/lib/channel-header/channel-header.component.d.ts +2 -2
- package/lib/channel-list/channel-list.component.d.ts +3 -4
- package/lib/channel-preview/channel-preview.component.d.ts +6 -6
- package/lib/channel-query.d.ts +26 -0
- package/lib/channel.service.d.ts +146 -154
- package/lib/chat-client.service.d.ts +17 -15
- package/lib/custom-templates.service.d.ts +50 -50
- package/lib/get-channel-display-text.d.ts +1 -2
- package/lib/get-message-translation.d.ts +3 -3
- package/lib/icon/icon-placeholder/icon-placeholder.component.d.ts +2 -2
- package/lib/icon/icon.component.d.ts +2 -2
- package/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.d.ts +1 -1
- package/lib/message/message.component.d.ts +6 -6
- package/lib/message-actions-box/message-actions-box.component.d.ts +5 -4
- package/lib/message-actions.service.d.ts +10 -10
- package/lib/message-bounce-prompt/message-bounce-prompt.component.d.ts +1 -1
- package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +5 -5
- package/lib/message-input/emoji-input.service.d.ts +2 -2
- package/lib/message-input/message-input-config.service.d.ts +3 -3
- package/lib/message-input/message-input.component.d.ts +10 -33
- package/lib/message-input/textarea/textarea.component.d.ts +3 -3
- package/lib/message-input/textarea.directive.d.ts +1 -1
- package/lib/message-list/group-styles.d.ts +1 -1
- package/lib/message-list/message-list.component.d.ts +3 -2
- package/lib/message-preview.d.ts +2 -3
- package/lib/message-reactions/message-reactions.component.d.ts +9 -8
- package/lib/message-reactions-selector/message-reactions-selector.component.d.ts +6 -5
- package/lib/message-reactions.service.d.ts +4 -4
- package/lib/message-text/message-text.component.d.ts +5 -5
- package/lib/message.service.d.ts +6 -7
- package/lib/modal/modal.component.d.ts +1 -1
- package/lib/notification/notification.component.d.ts +2 -2
- package/lib/notification-list/notification-list.component.d.ts +1 -0
- package/lib/notification.service.d.ts +1 -1
- package/lib/paginated-list/paginated-list.component.d.ts +2 -5
- package/lib/read-by.d.ts +1 -2
- package/lib/stream-i18n.service.d.ts +1 -1
- package/lib/theme.service.d.ts +1 -1
- package/lib/thread/thread.component.d.ts +3 -3
- package/lib/types-custom.d.ts +15 -0
- package/lib/types.d.ts +116 -155
- package/lib/user-list/user-list.component.d.ts +2 -3
- package/lib/virtualized-message-list.service.d.ts +1 -1
- package/lib/voice-recorder/amplitude-recorder.service.d.ts +2 -2
- package/lib/voice-recorder/media-recorder.d.ts +2 -2
- package/lib/voice-recorder/transcoder.service.d.ts +4 -4
- package/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.d.ts +1 -0
- package/lib/voice-recorder/voice-recorder.component.d.ts +2 -2
- package/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.d.ts +3 -3
- package/lib/voice-recording/voice-recording.component.d.ts +2 -3
- package/package.json +21 -15
- package/public-api.d.ts +3 -0
- package/src/assets/i18n/en.ts +0 -1
- package/src/assets/version.ts +1 -1
- package/esm2022/lib/attachment-configuration.service.mjs +0 -185
- package/esm2022/lib/attachment-list/attachment-list.component.mjs +0 -212
- package/esm2022/lib/attachment-preview-list/attachment-preview-list.component.mjs +0 -55
- package/esm2022/lib/attachment.service.mjs +0 -479
- package/esm2022/lib/avatar/avatar.component.mjs +0 -157
- package/esm2022/lib/avatar-placeholder/avatar-placeholder.component.mjs +0 -66
- package/esm2022/lib/channel/channel.component.mjs +0 -45
- package/esm2022/lib/channel-header/channel-header.component.mjs +0 -72
- package/esm2022/lib/channel-list/channel-list.component.mjs +0 -50
- package/esm2022/lib/channel-preview/channel-preview.component.mjs +0 -150
- package/esm2022/lib/channel.service.mjs +0 -1393
- package/esm2022/lib/chat-client.service.mjs +0 -227
- package/esm2022/lib/custom-templates.service.mjs +0 -244
- package/esm2022/lib/file-utils.mjs +0 -35
- package/esm2022/lib/get-message-translation.mjs +0 -12
- package/esm2022/lib/icon/icon-placeholder/icon-placeholder.component.mjs +0 -28
- package/esm2022/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.mjs +0 -20
- package/esm2022/lib/message/message.component.mjs +0 -486
- package/esm2022/lib/message-actions-box/message-actions-box.component.mjs +0 -120
- package/esm2022/lib/message-actions.service.mjs +0 -187
- package/esm2022/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +0 -71
- package/esm2022/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.mjs +0 -333
- package/esm2022/lib/message-input/message-input-config.service.mjs +0 -50
- package/esm2022/lib/message-input/message-input.component.mjs +0 -507
- package/esm2022/lib/message-list/message-list.component.mjs +0 -715
- package/esm2022/lib/message-preview.mjs +0 -21
- package/esm2022/lib/message-reactions/message-reactions.component.mjs +0 -165
- package/esm2022/lib/message-reactions-selector/message-reactions-selector.component.mjs +0 -57
- package/esm2022/lib/message-text/message-text.component.mjs +0 -143
- package/esm2022/lib/message.service.mjs +0 -43
- package/esm2022/lib/notification/notification.component.mjs +0 -20
- package/esm2022/lib/notification-list/notification-list.component.mjs +0 -33
- package/esm2022/lib/paginated-list/paginated-list.component.mjs +0 -94
- package/esm2022/lib/read-by.mjs +0 -12
- package/esm2022/lib/stream-autocomplete-textarea.module.mjs +0 -33
- package/esm2022/lib/stream-textarea.module.mjs +0 -31
- package/esm2022/lib/thread/thread.component.mjs +0 -51
- package/esm2022/lib/types.mjs +0 -2
- package/esm2022/lib/user-list/user-list.component.mjs +0 -47
- package/esm2022/lib/virtualized-list.service.mjs +0 -273
- package/esm2022/lib/voice-recorder/mp3-transcoder.mjs +0 -61
- package/esm2022/lib/voice-recorder/transcoder.service.mjs +0 -121
- package/esm2022/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +0 -32
- package/esm2022/lib/voice-recorder/voice-recorder.component.mjs +0 -80
- package/esm2022/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +0 -112
- package/esm2022/lib/voice-recording/voice-recording.component.mjs +0 -91
- package/esm2022/public-api.mjs +0 -82
- package/fesm2022/stream-chat-angular.mjs.map +0 -1
- /package/{esm2022 → esm2020}/lib/format-duration.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/injection-tokens.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/is-image-attachment.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/is-on-separate-date.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/is-safari.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/message-input/textarea.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/stream-chat-angular.mjs +0 -0
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { Component, Input, } from '@angular/core';
|
|
2
|
-
import { MediaRecordingState } from './media-recorder';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./audio-recorder.service";
|
|
5
|
-
import * as i2 from "../voice-recording/voice-recording.component";
|
|
6
|
-
import * as i3 from "../icon/icon-placeholder/icon-placeholder.component";
|
|
7
|
-
import * as i4 from "../icon/loading-indicator/loading-indicator.component";
|
|
8
|
-
import * as i5 from "./voice-recorder-wavebar/voice-recorder-wavebar.component";
|
|
9
|
-
import * as i6 from "@angular/common";
|
|
10
|
-
/**
|
|
11
|
-
* The `VoiceRecorderComponent` makes it possible to record audio, and then upload it as a voice recording attachment
|
|
12
|
-
*/
|
|
13
|
-
export class VoiceRecorderComponent {
|
|
14
|
-
constructor(recorder) {
|
|
15
|
-
this.recorder = recorder;
|
|
16
|
-
this.recordState = MediaRecordingState.STOPPED;
|
|
17
|
-
this.isLoading = false;
|
|
18
|
-
this.MediaRecordingState = MediaRecordingState;
|
|
19
|
-
this.subscriptions = [];
|
|
20
|
-
}
|
|
21
|
-
ngOnChanges(changes) {
|
|
22
|
-
if (changes.voiceRecorderService && this.voiceRecorderService) {
|
|
23
|
-
this.isVisibleSubscription =
|
|
24
|
-
this.voiceRecorderService.isRecorderVisible$.subscribe((isVisible) => {
|
|
25
|
-
if (!isVisible) {
|
|
26
|
-
this.recording = undefined;
|
|
27
|
-
this.isLoading = false;
|
|
28
|
-
}
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
this.isVisibleSubscription?.unsubscribe();
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
ngOnInit() {
|
|
36
|
-
this.subscriptions.push(this.recorder.recordingState$.subscribe((s) => {
|
|
37
|
-
this.recordState = s;
|
|
38
|
-
if (this.recordState === MediaRecordingState.ERROR) {
|
|
39
|
-
this.voiceRecorderService?.isRecorderVisible$.next(false);
|
|
40
|
-
}
|
|
41
|
-
}));
|
|
42
|
-
}
|
|
43
|
-
ngOnDestroy() {
|
|
44
|
-
this.subscriptions.forEach((s) => s.unsubscribe());
|
|
45
|
-
}
|
|
46
|
-
cancel() {
|
|
47
|
-
if (this.recording) {
|
|
48
|
-
this.recording = undefined;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
void this.recorder.stop({ cancel: true });
|
|
52
|
-
}
|
|
53
|
-
this.voiceRecorderService?.isRecorderVisible$.next(false);
|
|
54
|
-
}
|
|
55
|
-
async stop() {
|
|
56
|
-
this.recording = await this.recorder.stop();
|
|
57
|
-
}
|
|
58
|
-
pause() {
|
|
59
|
-
this.recorder.pause();
|
|
60
|
-
}
|
|
61
|
-
resume() {
|
|
62
|
-
this.recorder.resume();
|
|
63
|
-
}
|
|
64
|
-
uploadRecording() {
|
|
65
|
-
if (!this.recording) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
this.isLoading = true;
|
|
69
|
-
this.voiceRecorderService?.recording$.next(this.recording);
|
|
70
|
-
}
|
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecorderComponent, deps: [{ token: i1.AudioRecorderService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
72
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: VoiceRecorderComponent, selector: "stream-voice-recorder", inputs: { voiceRecorderService: "voiceRecorderService" }, providers: [], usesOnChanges: true, ngImport: i0, template: "@if (voiceRecorderService?.isRecorderVisible$ | async) {\n <div class=\"str-chat__audio_recorder-container\">\n <div class=\"str-chat__audio_recorder\" data-testid=\"audio-recorder\">\n <button\n class=\"str-chat__audio_recorder__cancel-button\"\n data-testid=\"cancel-recording-audio-button\"\n [disabled]=\"isLoading\"\n (click)=\"cancel()\"\n (keyup.enter)=\"cancel()\"\n >\n <stream-icon-placeholder icon=\"bin\" />\n </button>\n @if (\n (recordState === MediaRecordingState.RECORDING ||\n recordState === MediaRecordingState.PAUSED) &&\n !recording\n ) {\n <stream-voice-recorder-wavebar />\n }\n <!-- eslint-disable @angular-eslint/template/no-any -->\n @if (!!recording) {\n <stream-voice-recording [attachment]=\"$any(recording)\" />\n }\n <!-- eslint-enable @angular-eslint/template/no-any -->\n @if (recordState === MediaRecordingState.PAUSED && !recording) {\n <button\n class=\"str-chat__audio_recorder__resume-recording-button\"\n (click)=\"resume()\"\n (keyup.enter)=\"resume()\"\n >\n <stream-icon-placeholder icon=\"mic\" />\n </button>\n }\n @if (recordState === MediaRecordingState.RECORDING && !recording) {\n <button\n class=\"str-chat__audio_recorder__pause-recording-button\"\n data-testid=\"pause-recording-audio-button\"\n (click)=\"pause()\"\n (keyup.enter)=\"pause()\"\n >\n <stream-icon-placeholder icon=\"pause\" />\n </button>\n }\n @if (recordState === MediaRecordingState.STOPPED) {\n <button\n class=\"str-chat__audio_recorder__complete-button\"\n data-testid=\"audio-recorder-complete-button\"\n [disabled]=\"!recording\"\n (click)=\"uploadRecording()\"\n (keyup.enter)=\"uploadRecording()\"\n >\n @if (isLoading) {\n <stream-loading-indicator />\n } @else {\n <stream-icon-placeholder icon=\"send\" />\n }\n </button>\n } @else {\n <button\n class=\"str-chat__audio_recorder__stop-button\"\n data-testid=\"audio-recorder-stop-button\"\n (click)=\"stop()\"\n (keyup.enter)=\"stop()\"\n >\n <stream-icon-placeholder icon=\"delivered\" />\n </button>\n }\n </div>\n </div>\n}\n", dependencies: [{ kind: "component", type: i2.VoiceRecordingComponent, selector: "stream-voice-recording", inputs: ["attachment"] }, { kind: "component", type: i3.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon"] }, { kind: "component", type: i4.LoadingIndicatorComponent, selector: "stream-loading-indicator" }, { kind: "component", type: i5.VoiceRecorderWavebarComponent, selector: "stream-voice-recorder-wavebar" }, { kind: "pipe", type: i6.AsyncPipe, name: "async" }] }); }
|
|
73
|
-
}
|
|
74
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: VoiceRecorderComponent, decorators: [{
|
|
75
|
-
type: Component,
|
|
76
|
-
args: [{ selector: 'stream-voice-recorder', providers: [], template: "@if (voiceRecorderService?.isRecorderVisible$ | async) {\n <div class=\"str-chat__audio_recorder-container\">\n <div class=\"str-chat__audio_recorder\" data-testid=\"audio-recorder\">\n <button\n class=\"str-chat__audio_recorder__cancel-button\"\n data-testid=\"cancel-recording-audio-button\"\n [disabled]=\"isLoading\"\n (click)=\"cancel()\"\n (keyup.enter)=\"cancel()\"\n >\n <stream-icon-placeholder icon=\"bin\" />\n </button>\n @if (\n (recordState === MediaRecordingState.RECORDING ||\n recordState === MediaRecordingState.PAUSED) &&\n !recording\n ) {\n <stream-voice-recorder-wavebar />\n }\n <!-- eslint-disable @angular-eslint/template/no-any -->\n @if (!!recording) {\n <stream-voice-recording [attachment]=\"$any(recording)\" />\n }\n <!-- eslint-enable @angular-eslint/template/no-any -->\n @if (recordState === MediaRecordingState.PAUSED && !recording) {\n <button\n class=\"str-chat__audio_recorder__resume-recording-button\"\n (click)=\"resume()\"\n (keyup.enter)=\"resume()\"\n >\n <stream-icon-placeholder icon=\"mic\" />\n </button>\n }\n @if (recordState === MediaRecordingState.RECORDING && !recording) {\n <button\n class=\"str-chat__audio_recorder__pause-recording-button\"\n data-testid=\"pause-recording-audio-button\"\n (click)=\"pause()\"\n (keyup.enter)=\"pause()\"\n >\n <stream-icon-placeholder icon=\"pause\" />\n </button>\n }\n @if (recordState === MediaRecordingState.STOPPED) {\n <button\n class=\"str-chat__audio_recorder__complete-button\"\n data-testid=\"audio-recorder-complete-button\"\n [disabled]=\"!recording\"\n (click)=\"uploadRecording()\"\n (keyup.enter)=\"uploadRecording()\"\n >\n @if (isLoading) {\n <stream-loading-indicator />\n } @else {\n <stream-icon-placeholder icon=\"send\" />\n }\n </button>\n } @else {\n <button\n class=\"str-chat__audio_recorder__stop-button\"\n data-testid=\"audio-recorder-stop-button\"\n (click)=\"stop()\"\n (keyup.enter)=\"stop()\"\n >\n <stream-icon-placeholder icon=\"delivered\" />\n </button>\n }\n </div>\n </div>\n}\n" }]
|
|
77
|
-
}], ctorParameters: () => [{ type: i1.AudioRecorderService }], propDecorators: { voiceRecorderService: [{
|
|
78
|
-
type: Input
|
|
79
|
-
}] } });
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZvaWNlLXJlY29yZGVyL3ZvaWNlLXJlY29yZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi92b2ljZS1yZWNvcmRlci92b2ljZS1yZWNvcmRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssR0FLTixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7QUFLdkQ7O0dBRUc7QUFPSCxNQUFNLE9BQU8sc0JBQXNCO0lBU2pDLFlBQTRCLFFBQThCO1FBQTlCLGFBQVEsR0FBUixRQUFRLENBQXNCO1FBUDFELGdCQUFXLEdBQXdCLG1CQUFtQixDQUFDLE9BQU8sQ0FBQztRQUMvRCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRVQsd0JBQW1CLEdBQUcsbUJBQW1CLENBQUM7UUFDM0Msa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBR2tCLENBQUM7SUFFOUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLG9CQUFvQixJQUFJLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUM3RCxJQUFJLENBQUMscUJBQXFCO2dCQUN4QixJQUFJLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQ25FLElBQUksQ0FBQyxTQUFTLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7d0JBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO3FCQUN4QjtnQkFDSCxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDTCxJQUFJLENBQUMscUJBQXFCLEVBQUUsV0FBVyxFQUFFLENBQUM7U0FDM0M7SUFDSCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUM1QyxJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsQ0FBQztZQUNyQixJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssbUJBQW1CLENBQUMsS0FBSyxFQUFFO2dCQUNsRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzNEO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1NBQzVCO2FBQU07WUFDTCxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDM0M7UUFDRCxJQUFJLENBQUMsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxLQUFLLENBQUMsSUFBSTtRQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPO1NBQ1I7UUFDRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDN0QsQ0FBQzs4R0FuRVUsc0JBQXNCO2tHQUF0QixzQkFBc0IsMEdBRnRCLEVBQUUsK0NDckJmLHM3RUFzRUE7OzJGRC9DYSxzQkFBc0I7a0JBTmxDLFNBQVM7K0JBQ0UsdUJBQXVCLGFBR3RCLEVBQUU7eUZBR0osb0JBQW9CO3NCQUE1QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdWRpb1JlY29yZGVyU2VydmljZSB9IGZyb20gJy4vYXVkaW8tcmVjb3JkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBNZWRpYVJlY29yZGluZ1N0YXRlIH0gZnJvbSAnLi9tZWRpYS1yZWNvcmRlcic7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEF1ZGlvUmVjb3JkaW5nIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgVm9pY2VSZWNvcmRlclNlcnZpY2UgfSBmcm9tICcuLi9tZXNzYWdlLWlucHV0L3ZvaWNlLXJlY29yZGVyLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRoZSBgVm9pY2VSZWNvcmRlckNvbXBvbmVudGAgbWFrZXMgaXQgcG9zc2libGUgdG8gcmVjb3JkIGF1ZGlvLCBhbmQgdGhlbiB1cGxvYWQgaXQgYXMgYSB2b2ljZSByZWNvcmRpbmcgYXR0YWNobWVudFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tdm9pY2UtcmVjb3JkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdm9pY2UtcmVjb3JkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxuICBwcm92aWRlcnM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZVJlY29yZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIHZvaWNlUmVjb3JkZXJTZXJ2aWNlPzogVm9pY2VSZWNvcmRlclNlcnZpY2U7XG4gIHJlY29yZFN0YXRlOiBNZWRpYVJlY29yZGluZ1N0YXRlID0gTWVkaWFSZWNvcmRpbmdTdGF0ZS5TVE9QUEVEO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcbiAgcmVjb3JkaW5nPzogQXVkaW9SZWNvcmRpbmc7XG4gIHJlYWRvbmx5IE1lZGlhUmVjb3JkaW5nU3RhdGUgPSBNZWRpYVJlY29yZGluZ1N0YXRlO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbnM6IFN1YnNjcmlwdGlvbltdID0gW107XG4gIHByaXZhdGUgaXNWaXNpYmxlU3Vic2NyaXB0aW9uPzogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSByZWNvcmRlcjogQXVkaW9SZWNvcmRlclNlcnZpY2UpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLnZvaWNlUmVjb3JkZXJTZXJ2aWNlICYmIHRoaXMudm9pY2VSZWNvcmRlclNlcnZpY2UpIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uID1cbiAgICAgICAgdGhpcy52b2ljZVJlY29yZGVyU2VydmljZS5pc1JlY29yZGVyVmlzaWJsZSQuc3Vic2NyaWJlKChpc1Zpc2libGUpID0+IHtcbiAgICAgICAgICBpZiAoIWlzVmlzaWJsZSkge1xuICAgICAgICAgICAgdGhpcy5yZWNvcmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaXNWaXNpYmxlU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5yZWNvcmRlci5yZWNvcmRpbmdTdGF0ZSQuc3Vic2NyaWJlKChzKSA9PiB7XG4gICAgICAgIHRoaXMucmVjb3JkU3RhdGUgPSBzO1xuICAgICAgICBpZiAodGhpcy5yZWNvcmRTdGF0ZSA9PT0gTWVkaWFSZWNvcmRpbmdTdGF0ZS5FUlJPUikge1xuICAgICAgICAgIHRoaXMudm9pY2VSZWNvcmRlclNlcnZpY2U/LmlzUmVjb3JkZXJWaXNpYmxlJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgY2FuY2VsKCkge1xuICAgIGlmICh0aGlzLnJlY29yZGluZykge1xuICAgICAgdGhpcy5yZWNvcmRpbmcgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZvaWQgdGhpcy5yZWNvcmRlci5zdG9wKHsgY2FuY2VsOiB0cnVlIH0pO1xuICAgIH1cbiAgICB0aGlzLnZvaWNlUmVjb3JkZXJTZXJ2aWNlPy5pc1JlY29yZGVyVmlzaWJsZSQubmV4dChmYWxzZSk7XG4gIH1cblxuICBhc3luYyBzdG9wKCkge1xuICAgIHRoaXMucmVjb3JkaW5nID0gYXdhaXQgdGhpcy5yZWNvcmRlci5zdG9wKCk7XG4gIH1cblxuICBwYXVzZSgpIHtcbiAgICB0aGlzLnJlY29yZGVyLnBhdXNlKCk7XG4gIH1cblxuICByZXN1bWUoKSB7XG4gICAgdGhpcy5yZWNvcmRlci5yZXN1bWUoKTtcbiAgfVxuXG4gIHVwbG9hZFJlY29yZGluZygpIHtcbiAgICBpZiAoIXRoaXMucmVjb3JkaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLnZvaWNlUmVjb3JkZXJTZXJ2aWNlPy5yZWNvcmRpbmckLm5leHQodGhpcy5yZWNvcmRpbmcpO1xuICB9XG59XG4iLCJAaWYgKHZvaWNlUmVjb3JkZXJTZXJ2aWNlPy5pc1JlY29yZGVyVmlzaWJsZSQgfCBhc3luYykge1xuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2F1ZGlvX3JlY29yZGVyLWNvbnRhaW5lclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fYXVkaW9fcmVjb3JkZXJcIiBkYXRhLXRlc3RpZD1cImF1ZGlvLXJlY29yZGVyXCI+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2F1ZGlvX3JlY29yZGVyX19jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjYW5jZWwtcmVjb3JkaW5nLWF1ZGlvLWJ1dHRvblwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJpc0xvYWRpbmdcIlxuICAgICAgICAoY2xpY2spPVwiY2FuY2VsKClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiY2FuY2VsKClcIlxuICAgICAgPlxuICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXIgaWNvbj1cImJpblwiIC8+XG4gICAgICA8L2J1dHRvbj5cbiAgICAgIEBpZiAoXG4gICAgICAgIChyZWNvcmRTdGF0ZSA9PT0gTWVkaWFSZWNvcmRpbmdTdGF0ZS5SRUNPUkRJTkcgfHxcbiAgICAgICAgICByZWNvcmRTdGF0ZSA9PT0gTWVkaWFSZWNvcmRpbmdTdGF0ZS5QQVVTRUQpICYmXG4gICAgICAgICFyZWNvcmRpbmdcbiAgICAgICkge1xuICAgICAgICA8c3RyZWFtLXZvaWNlLXJlY29yZGVyLXdhdmViYXIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS0gZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL25vLWFueSAtLT5cbiAgICAgIEBpZiAoISFyZWNvcmRpbmcpIHtcbiAgICAgICAgPHN0cmVhbS12b2ljZS1yZWNvcmRpbmcgW2F0dGFjaG1lbnRdPVwiJGFueShyZWNvcmRpbmcpXCIgLz5cbiAgICAgIH1cbiAgICAgIDwhLS0gZXNsaW50LWVuYWJsZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvbm8tYW55IC0tPlxuICAgICAgQGlmIChyZWNvcmRTdGF0ZSA9PT0gTWVkaWFSZWNvcmRpbmdTdGF0ZS5QQVVTRUQgJiYgIXJlY29yZGluZykge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fYXVkaW9fcmVjb3JkZXJfX3Jlc3VtZS1yZWNvcmRpbmctYnV0dG9uXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVzdW1lKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJyZXN1bWUoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXIgaWNvbj1cIm1pY1wiIC8+XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfVxuICAgICAgQGlmIChyZWNvcmRTdGF0ZSA9PT0gTWVkaWFSZWNvcmRpbmdTdGF0ZS5SRUNPUkRJTkcgJiYgIXJlY29yZGluZykge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fYXVkaW9fcmVjb3JkZXJfX3BhdXNlLXJlY29yZGluZy1idXR0b25cIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwicGF1c2UtcmVjb3JkaW5nLWF1ZGlvLWJ1dHRvblwiXG4gICAgICAgICAgKGNsaWNrKT1cInBhdXNlKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJwYXVzZSgpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlciBpY29uPVwicGF1c2VcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICAgIEBpZiAocmVjb3JkU3RhdGUgPT09IE1lZGlhUmVjb3JkaW5nU3RhdGUuU1RPUFBFRCkge1xuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fYXVkaW9fcmVjb3JkZXJfX2NvbXBsZXRlLWJ1dHRvblwiXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdWRpby1yZWNvcmRlci1jb21wbGV0ZS1idXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhcmVjb3JkaW5nXCJcbiAgICAgICAgICAoY2xpY2spPVwidXBsb2FkUmVjb3JkaW5nKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJ1cGxvYWRSZWNvcmRpbmcoKVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKGlzTG9hZGluZykge1xuICAgICAgICAgICAgPHN0cmVhbS1sb2FkaW5nLWluZGljYXRvciAvPlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJzZW5kXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19hdWRpb19yZWNvcmRlcl9fc3RvcC1idXR0b25cIlxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiYXVkaW8tcmVjb3JkZXItc3RvcC1idXR0b25cIlxuICAgICAgICAgIChjbGljayk9XCJzdG9wKClcIlxuICAgICAgICAgIChrZXl1cC5lbnRlcik9XCJzdG9wKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJkZWxpdmVyZWRcIiAvPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG59XG4iXX0=
|
package/esm2022/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZvaWNlLXJlY29yZGluZy92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdm9pY2UtcmVjb3JkaW5nL3ZvaWNlLXJlY29yZGluZy13YXZlYmFyL3ZvaWNlLXJlY29yZGluZy13YXZlYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRTNEOztHQUVHO0FBTUgsTUFBTSxPQUFPLDhCQUE4QjtJQXVCekMsWUFDVSxNQUFjLEVBQ2QsS0FBd0I7UUFEeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBbEJsQzs7V0FFRztRQUNNLGlCQUFZLEdBQWEsRUFBRSxDQUFDO1FBS3JDLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUNyQyxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDWCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBR3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSzFCLENBQUM7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxnQkFBZ0IsQ0FDM0MsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlc2FtcGxlV2F2ZUZvcm0gfSBmcm9tICcuLi8uLi93YXZlLWZvcm0tc2FtcGxlcic7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgY2FuIGJlIHVzZWQgdG8gdmlzdWFsaXplIHRoZSB3YXZlIGJhciBvZiBhIHZvaWNlIHJlY29yZGluZ1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tdm9pY2UtcmVjb3JkaW5nLXdhdmViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZVJlY29yZGluZ1dhdmViYXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogVGhlIGF1ZGlvIGVsZW1lbnQgdGhhdCBwbGF5cyB0aGUgdm9pY2UgcmVjb3JkaW5nXG4gICAqL1xuICBASW5wdXQoKSBhdWRpb0VsZW1lbnQ/OiBIVE1MQXVkaW9FbGVtZW50O1xuICAvKipcbiAgICogVGhlIHdhdmVmb3JtIGRhdGEgdG8gdmlzdWFsaXplXG4gICAqL1xuICBASW5wdXQoKSB3YXZlRm9ybURhdGE6IG51bWJlcltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgZHVyYXRpb24gb2YgdGhlIHZvaWNlIHJlY29yZGluZyBpbiBzZWNvbmRzXG4gICAqL1xuICBASW5wdXQoKSBkdXJhdGlvbj86IG51bWJlcjtcbiAgcmVzYW1wbGVkV2F2ZUZvcm1EYXRhOiBudW1iZXJbXSA9IFtdO1xuICBwcm9ncmVzczogbnVtYmVyID0gMDtcbiAgaXNEcmFnZ2luZyA9IGZhbHNlO1xuICBwcml2YXRlIHNhbXBsZVNpemU6IG51bWJlciA9IDQwO1xuICBAVmlld0NoaWxkKCdjb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICBwcml2YXRlIGNvbnRhaW5lcj86IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMud2F2ZUZvcm1EYXRhKSB7XG4gICAgICB0aGlzLnJlc2FtcGxlZFdhdmVGb3JtRGF0YSA9IHJlc2FtcGxlV2F2ZUZvcm0oXG4gICAgICAgIHRoaXMud2F2ZUZvcm1EYXRhLFxuICAgICAgICB0aGlzLnNhbXBsZVNpemUsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5hdWRpb0VsZW1lbnQpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgICAgdGhpcy5hdWRpb0VsZW1lbnQ/LmFkZEV2ZW50TGlzdGVuZXIoJ3RpbWV1cGRhdGUnLCAoKSA9PiB7XG4gICAgICAgICAgY29uc3QgcHJvZ3Jlc3MgPVxuICAgICAgICAgICAgKHRoaXMuYXVkaW9FbGVtZW50Py5jdXJyZW50VGltZSB8fCAwKSAvICh0aGlzLmR1cmF0aW9uIHx8IDApIHx8IDA7XG4gICAgICAgICAgaWYgKE1hdGguYWJzKHByb2dyZXNzIC0gdGhpcy5wcm9ncmVzcykgPj0gMC4wMikge1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRhaW5lclNpemVDaGFuZ2VkKCk7XG4gICAgaWYgKHRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICAgIG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jb250YWluZXJTaXplQ2hhbmdlZCgpO1xuICAgICAgICB9KS5vYnNlcnZlKHRoaXMuY29udGFpbmVyIS5uYXRpdmVFbGVtZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gIH1cblxuICBzZWVrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgY29uc3QgY29udGFpbmVyV2lkdGggPVxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoIHx8IDA7XG4gICAgY29uc3QgY29udGFpbmVyU3RhcnQgPVxuICAgICAgdGhpcy5jb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpPy54IHx8IDA7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtbWVtYmVyLWFjY2Vzc1xuICAgIGNvbnN0IHByb2dyZXNzID0gKGV2ZW50LnggLSBjb250YWluZXJTdGFydCkgLyBjb250YWluZXJXaWR0aDtcblxuICAgIGlmICghaXNOYU4ocHJvZ3Jlc3MpICYmIHRoaXMuYXVkaW9FbGVtZW50KSB7XG4gICAgICBjb25zdCBkdXJhdGlvbiA9IHRoaXMuZHVyYXRpb24gfHwgMDtcbiAgICAgIGNvbnN0IHRpbWUgPSBkdXJhdGlvbiAqIHByb2dyZXNzO1xuICAgICAgdGhpcy5hdWRpb0VsZW1lbnQuY3VycmVudFRpbWUgPSB0aW1lO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlJbmRleChpbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIGluZGV4O1xuICB9XG5cbiAgcHJpdmF0ZSBjb250YWluZXJTaXplQ2hhbmdlZCgpIHtcbiAgICBpZiAoIXRoaXMuY29udGFpbmVyPy5uYXRpdmVFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvbnRhaW5lcldpZHRoID0gdGhpcy5jb250YWluZXIubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICBpZiAoY29udGFpbmVyV2lkdGggPT09IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgYmFyV2lkdGggPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc3RyLWNoYXRfX3ZvaWNlLXJlY29yZGluZy1hbXBsaXR1ZGUtYmFyLXdpZHRoJylcbiAgICAgIC5yZXBsYWNlKCdweCcsICcnKTtcbiAgICBjb25zdCBiYXJHYXAgPSArZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmNvbnRhaW5lci5uYXRpdmVFbGVtZW50KVxuICAgICAgLmdldFByb3BlcnR5VmFsdWUoJy0tc3RyLWNoYXRfX3ZvaWNlLXJlY29yZGluZy1hbXBsaXR1ZGUtYmFyLWdhcC13aWR0aCcpXG4gICAgICAucmVwbGFjZSgncHgnLCAnJyk7XG4gICAgaWYgKCFpc05hTihiYXJXaWR0aCkgJiYgIWlzTmFOKGJhckdhcCkpIHtcbiAgICAgIGNvbnN0IHNhbXBsZVNpemUgPSBNYXRoLmZsb29yKGNvbnRhaW5lcldpZHRoIC8gKGJhcldpZHRoICsgYmFyR2FwKSk7XG4gICAgICBpZiAoXG4gICAgICAgIHNhbXBsZVNpemUgIT09IHRoaXMuc2FtcGxlU2l6ZSAmJlxuICAgICAgICAhaXNOYU4oc2FtcGxlU2l6ZSkgJiZcbiAgICAgICAgc2FtcGxlU2l6ZSAhPT0gSW5maW5pdHlcbiAgICAgICkge1xuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2FtcGxlU2l6ZSA9IHNhbXBsZVNpemU7XG4gICAgICAgICAgdGhpcy5yZXNhbXBsZWRXYXZlRm9ybURhdGEgPSByZXNhbXBsZVdhdmVGb3JtKFxuICAgICAgICAgICAgdGhpcy53YXZlRm9ybURhdGEsXG4gICAgICAgICAgICB0aGlzLnNhbXBsZVNpemUsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCI8IS0tZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMtLT5cbjxkaXZcbiAgI2NvbnRhaW5lclxuICBjbGFzcz1cInN0ci1jaGF0X193YXZlLXByb2dyZXNzLWJhcl9fdHJhY2tcIlxuICBkYXRhLXRlc3RpZD1cIndhdmUtcHJvZ3Jlc3MtYmFyLXRyYWNrXCJcbiAgcm9sZT1cInByb2dyZXNzYmFyXCJcbiAgKG1vdXNlZG93bik9XCJpc0RyYWdnaW5nID0gdHJ1ZVwiXG4gIChtb3VzZXVwKT1cImlzRHJhZ2dpbmcgPSBmYWxzZVwiXG4gIChtb3VzZWxlYXZlKT1cImlzRHJhZ2dpbmcgPSBmYWxzZVwiXG4gIChtb3VzZW1vdmUpPVwiaXNEcmFnZ2luZyA/IHNlZWsoJGV2ZW50KSA6IG51bGxcIlxuICAoY2xpY2spPVwic2VlaygkZXZlbnQpXCJcbj5cbiAgPCEtLWVzbGludC1lbmFibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMtLT5cbiAgQGZvciAoZGF0YVBvaW50IG9mIHJlc2FtcGxlZFdhdmVGb3JtRGF0YTsgdHJhY2sgZGF0YVBvaW50OyBsZXQgaSA9ICRpbmRleCkge1xuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3dhdmUtcHJvZ3Jlc3MtYmFyX19hbXBsaXR1ZGUtYmFyXCJcbiAgICAgIFtjbGFzcy5zdHItY2hhdF9fd2F2ZS1wcm9ncmVzcy1iYXJfX2FtcGxpdHVkZS1iYXItLWFjdGl2ZV09XCJcbiAgICAgICAgcHJvZ3Jlc3MgPiBpIC8gcmVzYW1wbGVkV2F2ZUZvcm1EYXRhLmxlbmd0aFxuICAgICAgXCJcbiAgICAgIFtzdHlsZS4tLXN0ci1jaGF0X193YXZlLXByb2dyZXNzLWJhcl9fYW1wbGl0dWRlLWJhci1oZWlnaHRdPVwiXG4gICAgICAgIGRhdGFQb2ludCA/IGRhdGFQb2ludCAqIDEwMCArICclJyA6ICcwJSdcbiAgICAgIFwiXG4gICAgPjwvZGl2PlxuICB9XG4gIDxkaXZcbiAgICBjbGFzcz1cInN0ci1jaGF0X193YXZlLXByb2dyZXNzLWJhcl9fcHJvZ3Jlc3MtaW5kaWNhdG9yXCJcbiAgICBkYXRhLXRlc3RpZD1cIndhdmUtcHJvZ3Jlc3MtYmFyLXByb2dyZXNzLWluZGljYXRvclwiXG4gICAgW25nU3R5bGVdPVwieyAnaW5zZXQtaW5saW5lLXN0YXJ0JzogcHJvZ3Jlc3MgKiAxMDAgKyAnJScgfVwiXG4gID48L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,91 +0,0 @@
|
|
|
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=
|
package/esm2022/public-api.mjs
DELETED
|
@@ -1,82 +0,0 @@
|
|
|
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==
|