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.
- package/assets/i18n/en.d.ts +1 -0
- package/assets/version.d.ts +1 -1
- package/{esm2020 → esm2022}/assets/i18n/en.mjs +2 -1
- package/{esm2020 → esm2022}/assets/version.mjs +2 -2
- package/{esm2020 → esm2022}/lib/attachment-configuration.service.mjs +4 -4
- package/esm2022/lib/attachment-list/attachment-list.component.mjs +212 -0
- package/esm2022/lib/attachment-preview-list/attachment-preview-list.component.mjs +55 -0
- package/{esm2020 → esm2022}/lib/attachment.service.mjs +5 -5
- package/esm2022/lib/avatar/avatar.component.mjs +157 -0
- package/{esm2020 → esm2022}/lib/avatar-placeholder/avatar-placeholder.component.mjs +6 -6
- package/esm2022/lib/channel/channel.component.mjs +45 -0
- package/esm2022/lib/channel-header/channel-header.component.mjs +72 -0
- package/esm2022/lib/channel-list/channel-list.component.mjs +50 -0
- package/esm2022/lib/channel-preview/channel-preview.component.mjs +150 -0
- package/esm2022/lib/channel.service.mjs +1381 -0
- package/esm2022/lib/chat-client.service.mjs +227 -0
- package/{esm2020 → esm2022}/lib/custom-templates.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/date-parser.service.mjs +5 -5
- package/esm2022/lib/file-utils.mjs +35 -0
- package/{esm2020 → esm2022}/lib/get-channel-display-text.mjs +1 -1
- package/{esm2020 → esm2022}/lib/get-message-translation.mjs +1 -1
- package/{esm2020 → esm2022}/lib/icon/icon-placeholder/icon-placeholder.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/icon/icon.module.mjs +11 -11
- package/{esm2020 → esm2022}/lib/icon/loading-indicator/loading-indicator.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/list-users.mjs +1 -1
- package/esm2022/lib/message/message.component.mjs +486 -0
- package/esm2022/lib/message-actions-box/message-actions-box.component.mjs +120 -0
- package/{esm2020 → esm2022}/lib/message-actions.service.mjs +5 -5
- package/esm2022/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +71 -0
- package/{esm2020 → esm2022}/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/message-input/emoji-input.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-input/message-input-config.service.mjs +5 -5
- package/esm2022/lib/message-input/message-input.component.mjs +507 -0
- package/{esm2020 → esm2022}/lib/message-input/textarea/textarea.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-input/textarea.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-input/voice-recorder.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-list/group-styles.mjs +1 -1
- package/esm2022/lib/message-list/message-list.component.mjs +715 -0
- package/{esm2020 → esm2022}/lib/message-preview.mjs +1 -1
- package/esm2022/lib/message-reactions/message-reactions.component.mjs +165 -0
- package/esm2022/lib/message-reactions-selector/message-reactions-selector.component.mjs +57 -0
- package/{esm2020 → esm2022}/lib/message-reactions.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-text/message-text.component.mjs +6 -6
- package/esm2022/lib/message.service.mjs +43 -0
- package/{esm2020 → esm2022}/lib/modal/modal.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/notification/notification.component.mjs +6 -6
- package/esm2022/lib/notification-list/notification-list.component.mjs +33 -0
- package/{esm2020 → esm2022}/lib/notification.service.mjs +5 -5
- package/esm2022/lib/paginated-list/paginated-list.component.mjs +94 -0
- package/{esm2020 → esm2022}/lib/parse-date.mjs +1 -1
- package/{esm2020 → esm2022}/lib/read-by.mjs +1 -1
- package/esm2022/lib/stream-autocomplete-textarea.module.mjs +33 -0
- package/{esm2020 → esm2022}/lib/stream-avatar.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/stream-chat.module.mjs +59 -59
- package/{esm2020 → esm2022}/lib/stream-i18n.service.mjs +5 -5
- package/esm2022/lib/stream-textarea.module.mjs +31 -0
- package/{esm2020 → esm2022}/lib/theme.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/thread/thread.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/transliteration.service.mjs +5 -5
- package/esm2022/lib/types.mjs +2 -0
- package/{esm2020 → esm2022}/lib/user-list/user-list.component.mjs +5 -5
- package/esm2022/lib/virtualized-list.service.mjs +273 -0
- package/{esm2020 → esm2022}/lib/virtualized-message-list.service.mjs +1 -1
- package/{esm2020 → esm2022}/lib/voice-recorder/amplitude-recorder.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/voice-recorder/audio-recorder.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/voice-recorder/media-recorder.mjs +1 -1
- package/esm2022/lib/voice-recorder/mp3-transcoder.mjs +61 -0
- package/esm2022/lib/voice-recorder/transcoder.service.mjs +121 -0
- package/esm2022/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +32 -0
- package/esm2022/lib/voice-recorder/voice-recorder.component.mjs +80 -0
- package/{esm2020 → esm2022}/lib/voice-recorder/voice-recorder.module.mjs +9 -9
- package/esm2022/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +112 -0
- package/esm2022/lib/voice-recording/voice-recording.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/voice-recording/voice-recording.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/wave-form-sampler.mjs +1 -1
- package/esm2022/public-api.mjs +82 -0
- package/{fesm2020 → fesm2022}/stream-chat-angular.mjs +857 -1140
- package/fesm2022/stream-chat-angular.mjs.map +1 -0
- package/lib/attachment-list/attachment-list.component.d.ts +2 -5
- package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +2 -2
- package/lib/attachment.service.d.ts +1 -1
- package/lib/avatar/avatar.component.d.ts +4 -4
- package/lib/avatar-placeholder/avatar-placeholder.component.d.ts +1 -1
- package/lib/channel-list/channel-list.component.d.ts +1 -0
- package/lib/channel-preview/channel-preview.component.d.ts +3 -4
- package/lib/channel.service.d.ts +40 -106
- package/lib/chat-client.service.d.ts +1 -4
- package/lib/custom-templates.service.d.ts +10 -10
- package/lib/icon/icon-placeholder/icon-placeholder.component.d.ts +1 -1
- package/lib/icon/icon.component.d.ts +2 -2
- package/lib/message/message.component.d.ts +2 -2
- package/lib/message-actions-box/message-actions-box.component.d.ts +2 -3
- package/lib/message-actions.service.d.ts +1 -1
- package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +2 -2
- package/lib/message-input/message-input.component.d.ts +2 -2
- package/lib/message-input/textarea/textarea.component.d.ts +1 -1
- package/lib/message-input/textarea.directive.d.ts +2 -2
- package/lib/message-list/group-styles.d.ts +1 -1
- package/lib/message-list/message-list.component.d.ts +2 -3
- package/lib/message-reactions/message-reactions.component.d.ts +2 -3
- package/lib/message-reactions-selector/message-reactions-selector.component.d.ts +1 -2
- package/lib/message-text/message-text.component.d.ts +2 -2
- package/lib/modal/modal.component.d.ts +1 -1
- package/lib/notification/notification.component.d.ts +1 -1
- package/lib/notification-list/notification-list.component.d.ts +0 -1
- package/lib/paginated-list/paginated-list.component.d.ts +5 -2
- package/lib/read-by.d.ts +1 -1
- package/lib/types.d.ts +98 -84
- package/lib/user-list/user-list.component.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 +0 -1
- 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 +1 -1
- package/package.json +15 -21
- package/public-api.d.ts +0 -1
- package/src/assets/i18n/en.ts +1 -0
- package/src/assets/version.ts +1 -1
- package/esm2020/lib/attachment-list/attachment-list.component.mjs +0 -224
- package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +0 -55
- package/esm2020/lib/avatar/avatar.component.mjs +0 -160
- package/esm2020/lib/channel/channel.component.mjs +0 -45
- package/esm2020/lib/channel-header/channel-header.component.mjs +0 -72
- package/esm2020/lib/channel-list/channel-list.component.mjs +0 -47
- package/esm2020/lib/channel-preview/channel-preview.component.mjs +0 -155
- package/esm2020/lib/channel-query.mjs +0 -77
- package/esm2020/lib/channel.service.mjs +0 -1546
- package/esm2020/lib/chat-client.service.mjs +0 -238
- package/esm2020/lib/file-utils.mjs +0 -35
- package/esm2020/lib/message/message.component.mjs +0 -486
- package/esm2020/lib/message-actions-box/message-actions-box.component.mjs +0 -123
- package/esm2020/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +0 -71
- package/esm2020/lib/message-input/message-input.component.mjs +0 -507
- package/esm2020/lib/message-list/message-list.component.mjs +0 -717
- package/esm2020/lib/message-reactions/message-reactions.component.mjs +0 -168
- package/esm2020/lib/message-reactions-selector/message-reactions-selector.component.mjs +0 -61
- package/esm2020/lib/message.service.mjs +0 -43
- package/esm2020/lib/notification-list/notification-list.component.mjs +0 -36
- package/esm2020/lib/paginated-list/paginated-list.component.mjs +0 -94
- package/esm2020/lib/stream-autocomplete-textarea.module.mjs +0 -33
- package/esm2020/lib/stream-textarea.module.mjs +0 -31
- package/esm2020/lib/types.mjs +0 -2
- package/esm2020/lib/virtualized-list.service.mjs +0 -271
- package/esm2020/lib/voice-recorder/mp3-transcoder.mjs +0 -61
- package/esm2020/lib/voice-recorder/transcoder.service.mjs +0 -121
- package/esm2020/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +0 -35
- package/esm2020/lib/voice-recorder/voice-recorder.component.mjs +0 -80
- package/esm2020/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +0 -112
- package/esm2020/lib/voice-recording/voice-recording.component.mjs +0 -91
- package/esm2020/public-api.mjs +0 -83
- package/fesm2015/stream-chat-angular.mjs +0 -9152
- package/fesm2015/stream-chat-angular.mjs.map +0 -1
- package/fesm2020/stream-chat-angular.mjs.map +0 -1
- package/lib/channel-query.d.ts +0 -26
- /package/{esm2020 → esm2022}/lib/format-duration.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/injection-tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/is-image-attachment.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/is-on-separate-date.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/is-safari.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/message-input/textarea.interface.mjs +0 -0
- /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
|
-
|
|
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,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkZXIubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZvaWNlLXJlY29yZGVyL3ZvaWNlLXJlY29yZGVyLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUNqRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ2hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3pELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ3hFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDOztBQVkxRyxNQUFNLE9BQU8sbUJBQW1COzhHQUFuQixtQkFBbUI7K0dBQW5CLG1CQUFtQixpQkFUZixzQkFBc0IsRUFBRSw2QkFBNkIsYUFDMUQsWUFBWSxFQUFFLG9CQUFvQixFQUFFLFVBQVUsRUFBRSxlQUFlLGFBQy9ELHNCQUFzQixFQUFFLDZCQUE2QjsrR0FPcEQsbUJBQW1CLGFBTm5CO1lBQ1Qsb0JBQW9CO1lBQ3BCLGlCQUFpQjtZQUNqQix3QkFBd0I7U0FDekIsWUFOUyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsVUFBVSxFQUFFLGVBQWU7OzJGQVE5RCxtQkFBbUI7a0JBVi9CLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsc0JBQXNCLEVBQUUsNkJBQTZCLENBQUM7b0JBQ3JFLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDO29CQUMxRSxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsRUFBRSw2QkFBNkIsQ0FBQztvQkFDaEUsU0FBUyxFQUFFO3dCQUNULG9CQUFvQjt3QkFDcEIsaUJBQWlCO3dCQUNqQix3QkFBd0I7cUJBQ3pCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGVyQ29tcG9uZW50IH0gZnJvbSAnLi92b2ljZS1yZWNvcmRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVm9pY2VSZWNvcmRpbmdNb2R1bGUgfSBmcm9tICcuLi92b2ljZS1yZWNvcmRpbmcvdm9pY2UtcmVjb3JkaW5nLm1vZHVsZSc7XG5pbXBvcnQgeyBJY29uTW9kdWxlIH0gZnJvbSAnLi4vaWNvbi9pY29uLm1vZHVsZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEF1ZGlvUmVjb3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hdWRpby1yZWNvcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zY29kZXJTZXJ2aWNlIH0gZnJvbSAnLi90cmFuc2NvZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgQW1wbGl0dWRlUmVjb3JkZXJTZXJ2aWNlIH0gZnJvbSAnLi9hbXBsaXR1ZGUtcmVjb3JkZXIuc2VydmljZSc7XG5pbXBvcnQgeyBWb2ljZVJlY29yZGVyV2F2ZWJhckNvbXBvbmVudCB9IGZyb20gJy4vdm9pY2UtcmVjb3JkZXItd2F2ZWJhci92b2ljZS1yZWNvcmRlci13YXZlYmFyLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1ZvaWNlUmVjb3JkZXJDb21wb25lbnQsIFZvaWNlUmVjb3JkZXJXYXZlYmFyQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVm9pY2VSZWNvcmRpbmdNb2R1bGUsIEljb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZV0sXG4gIGV4cG9ydHM6IFtWb2ljZVJlY29yZGVyQ29tcG9uZW50LCBWb2ljZVJlY29yZGVyV2F2ZWJhckNvbXBvbmVudF0sXG4gIHByb3ZpZGVyczogW1xuICAgIEF1ZGlvUmVjb3JkZXJTZXJ2aWNlLFxuICAgIFRyYW5zY29kZXJTZXJ2aWNlLFxuICAgIEFtcGxpdHVkZVJlY29yZGVyU2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgVm9pY2VSZWNvcmRlck1vZHVsZSB7fVxuIl19
|
package/esm2022/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs
ADDED
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3ZvaWNlLXJlY29yZGluZy92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci92b2ljZS1yZWNvcmRpbmctd2F2ZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvdm9pY2UtcmVjb3JkaW5nL3ZvaWNlLXJlY29yZGluZy13YXZlYmFyL3ZvaWNlLXJlY29yZGluZy13YXZlYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBRVQsS0FBSyxFQUtMLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7O0FBRTNEOztHQUVHO0FBTUgsTUFBTSxPQUFPLDhCQUE4QjtJQXVCekMsWUFDVSxNQUFjLEVBQ2QsS0FBd0I7UUFEeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBbEJsQzs7V0FFRztRQUNNLGlCQUFZLEdBQWEsRUFBRSxDQUFDO1FBS3JDLDBCQUFxQixHQUFhLEVBQUUsQ0FBQztRQUNyQyxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDWCxlQUFVLEdBQVcsRUFBRSxDQUFDO1FBR3hCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBSzFCLENBQUM7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxnQkFBZ0IsQ0FDM0MsSUFBSSxDQUFDLFlBQVksRUFDakIsSUFB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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHJlc2FtcGxlV2F2ZUZvcm0gfSBmcm9tICcuLi8uLi93YXZlLWZvcm0tc2FtcGxlcic7XG5cbi8qKlxuICogVGhpcyBjb21wb25lbnQgY2FuIGJlIHVzZWQgdG8gdmlzdWFsaXplIHRoZSB3YXZlIGJhciBvZiBhIHZvaWNlIHJlY29yZGluZ1xuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tdm9pY2UtcmVjb3JkaW5nLXdhdmViYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vdm9pY2UtcmVjb3JkaW5nLXdhdmViYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBWb2ljZVJlY29yZGluZ1dhdmViYXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogVGhlIGF1ZGlvIGVsZW1lbnQgdGhhdCBwbGF5cyB0aGUgdm9pY2UgcmVjb3JkaW5nXG4gICAqL1xuICBASW5wdXQoKSBhdWRpb0VsZW1lbnQ/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
|
-
|
|
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,
|
|
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==
|