stream-chat-angular 6.4.1 → 7.0.0
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 +12 -18
- package/assets/version.d.ts +1 -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 +232 -0
- package/esm2022/lib/attachment-preview-list/attachment-preview-list.component.mjs +55 -0
- package/{esm2020 → esm2022}/lib/attachment.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/avatar/avatar.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/avatar-placeholder/avatar-placeholder.component.mjs +6 -6
- package/esm2022/lib/channel/channel.component.mjs +45 -0
- package/{esm2020 → esm2022}/lib/channel-header/channel-header.component.mjs +6 -6
- package/esm2022/lib/channel-list/channel-list.component.mjs +47 -0
- package/{esm2020 → esm2022}/lib/channel-preview/channel-preview.component.mjs +6 -6
- package/esm2022/lib/channel.service.mjs +1575 -0
- package/{esm2020 → esm2022}/lib/chat-client.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/custom-templates.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/date-parser.service.mjs +5 -5
- 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/esm2022/lib/message/message.component.mjs +501 -0
- package/{esm2020 → esm2022}/lib/message-actions-box/message-actions-box.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/message-actions.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-blocked/message-blocked.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +6 -6
- 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/{esm2020 → esm2022}/lib/message-input/message-input.component.mjs +7 -7
- 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/esm2022/lib/message-list/message-list.component.mjs +717 -0
- package/{esm2020 → esm2022}/lib/message-reactions/message-reactions.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/message-reactions-selector/message-reactions-selector.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-reactions.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-text/message-text.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/message.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/modal/modal.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/modal/stream-modal.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/notification/notification.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/notification-list/notification-list.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/notification-list/stream-notification.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/notification.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/paginated-list/paginated-list.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/paginated-list/stream-paginated-list.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/polls/base-poll.component.mjs +5 -5
- package/esm2022/lib/polls/poll/poll.component.mjs +34 -0
- package/{esm2020 → esm2022}/lib/polls/poll-actions/add-option/add-option.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/polls/poll-actions/poll-actions.component.mjs +6 -6
- package/esm2022/lib/polls/poll-actions/poll-answers-list/poll-answers-list.component.mjs +82 -0
- package/esm2022/lib/polls/poll-actions/poll-results/poll-results-list/poll-results-list.component.mjs +63 -0
- package/{esm2020 → esm2022}/lib/polls/poll-actions/poll-results/poll-vote/poll-vote.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/polls/poll-actions/poll-results/poll-vote-results-list/poll-vote-results-list.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/polls/poll-actions/upsert-answer/upsert-answer.component.mjs +4 -4
- package/esm2022/lib/polls/poll-composer/poll-composer.component.mjs +134 -0
- package/{esm2020 → esm2022}/lib/polls/poll-header/poll-header.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/polls/poll-option-selector/poll-option-selector.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/polls/poll-options-list/poll-options-list.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/polls/poll-preview/poll-preview.component.mjs +4 -4
- package/{esm2020 → esm2022}/lib/polls/stream-polls.module.mjs +41 -41
- 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 +67 -67
- package/esm2022/lib/stream-i18n.service.mjs +34 -0
- 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/{esm2020 → esm2022}/lib/types.mjs +1 -1
- package/{esm2020 → esm2022}/lib/user-list/user-list.component.mjs +5 -5
- 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/transcoder.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/voice-recorder/voice-recorder.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/voice-recorder/voice-recorder.module.mjs +9 -9
- package/{esm2020 → esm2022}/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/voice-recording/voice-recording.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/voice-recording/voice-recording.module.mjs +5 -5
- package/{fesm2020 → fesm2022}/stream-chat-angular.mjs +463 -470
- package/fesm2022/stream-chat-angular.mjs.map +1 -0
- package/lib/attachment-list/attachment-list.component.d.ts +1 -1
- package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +1 -1
- package/lib/avatar/avatar.component.d.ts +1 -1
- package/lib/avatar-placeholder/avatar-placeholder.component.d.ts +1 -1
- package/lib/channel-preview/channel-preview.component.d.ts +1 -1
- package/lib/chat-client.service.d.ts +1 -1
- package/lib/custom-templates.service.d.ts +1 -0
- 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 +1 -1
- package/lib/message-actions-box/message-actions-box.component.d.ts +1 -1
- package/lib/message-blocked/message-blocked.component.d.ts +1 -1
- package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +1 -1
- package/lib/message-input/message-input.component.d.ts +1 -1
- package/lib/message-input/textarea/textarea.component.d.ts +1 -1
- 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 +1 -1
- package/lib/message-reactions/message-reactions.component.d.ts +1 -1
- package/lib/message-reactions-selector/message-reactions-selector.component.d.ts +1 -1
- 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/paginated-list/paginated-list.component.d.ts +5 -2
- package/lib/polls/base-poll.component.d.ts +1 -1
- package/lib/polls/poll-actions/add-option/add-option.component.d.ts +1 -1
- package/lib/polls/poll-actions/poll-actions.component.d.ts +2 -2
- package/lib/polls/poll-actions/poll-answers-list/poll-answers-list.component.d.ts +1 -1
- package/lib/polls/poll-actions/poll-results/poll-vote/poll-vote.component.d.ts +1 -1
- package/lib/polls/poll-actions/poll-results/poll-vote-results-list/poll-vote-results-list.component.d.ts +1 -1
- package/lib/polls/poll-actions/upsert-answer/upsert-answer.component.d.ts +1 -1
- package/lib/polls/poll-composer/poll-composer.component.d.ts +2 -2
- package/lib/polls/poll-header/poll-header.component.d.ts +1 -1
- package/lib/polls/poll-option-selector/poll-option-selector.component.d.ts +1 -1
- package/lib/polls/poll-options-list/poll-options-list.component.d.ts +1 -1
- package/lib/types.d.ts +79 -79
- 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.component.d.ts +1 -1
- package/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.d.ts +1 -1
- package/lib/voice-recording/voice-recording.component.d.ts +1 -1
- package/package.json +11 -17
- package/src/assets/version.ts +1 -1
- package/esm2020/lib/attachment-list/attachment-list.component.mjs +0 -232
- package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +0 -55
- package/esm2020/lib/channel/channel.component.mjs +0 -45
- package/esm2020/lib/channel-list/channel-list.component.mjs +0 -47
- package/esm2020/lib/channel.service.mjs +0 -1575
- package/esm2020/lib/message/message.component.mjs +0 -501
- package/esm2020/lib/message-list/message-list.component.mjs +0 -717
- package/esm2020/lib/polls/poll/poll.component.mjs +0 -34
- package/esm2020/lib/polls/poll-actions/poll-answers-list/poll-answers-list.component.mjs +0 -82
- package/esm2020/lib/polls/poll-actions/poll-results/poll-results-list/poll-results-list.component.mjs +0 -63
- package/esm2020/lib/polls/poll-composer/poll-composer.component.mjs +0 -134
- package/esm2020/lib/stream-autocomplete-textarea.module.mjs +0 -33
- package/esm2020/lib/stream-i18n.service.mjs +0 -41
- package/esm2020/lib/stream-textarea.module.mjs +0 -31
- package/fesm2015/stream-chat-angular.mjs +0 -10596
- package/fesm2015/stream-chat-angular.mjs.map +0 -1
- package/fesm2020/stream-chat-angular.mjs.map +0 -1
- /package/{esm2020 → esm2022}/assets/i18n/en.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/channel-query.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/file-utils.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/format-duration.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/get-channel-display-text.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/get-message-translation.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/list-users.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/message-input/textarea.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/message-list/group-styles.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/message-preview.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/parse-date.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/polls/poll-composer/validators.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/polls/unique.validator.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/read-by.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/types-custom.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/virtualized-list.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/virtualized-message-list.service.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/voice-recorder/media-recorder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/voice-recorder/mp3-transcoder.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/wave-form-sampler.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
- /package/{esm2020 → esm2022}/stream-chat-angular.mjs +0 -0
- /package/{esm2020 → esm2022}/stream-chat.mjs +0 -0
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
|
-
import { BasePollComponent } from '../base-poll.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "../poll-header/poll-header.component";
|
|
6
|
-
import * as i3 from "../poll-options-list/poll-options-list.component";
|
|
7
|
-
import * as i4 from "../poll-actions/poll-actions.component";
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
*/
|
|
11
|
-
export class PollComponent extends BasePollComponent {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments);
|
|
14
|
-
this.isClosed = false;
|
|
15
|
-
}
|
|
16
|
-
stateStoreSelector(poll, markForCheck) {
|
|
17
|
-
const unsubscribe = poll.state.subscribeWithSelector((state) => {
|
|
18
|
-
return {
|
|
19
|
-
is_closed: state.is_closed,
|
|
20
|
-
};
|
|
21
|
-
}, (state) => {
|
|
22
|
-
this.isClosed = state.is_closed ?? false;
|
|
23
|
-
markForCheck();
|
|
24
|
-
});
|
|
25
|
-
return unsubscribe;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
PollComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
29
|
-
PollComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollComponent, selector: "stream-poll", usesInheritance: true, ngImport: i0, template: "<div class=\"str-chat__poll\" [class.str-chat__poll--closed]=\"isClosed\">\n <div #header><ng-content select=\"[poll-header]\"></ng-content></div>\n <ng-container *ngIf=\"!header.hasChildNodes()\">\n <stream-poll-header [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-header>\n </ng-container>\n <div #options><ng-content select=\"[poll-options-list]\"></ng-content></div>\n <ng-container *ngIf=\"!options.hasChildNodes()\">\n <stream-poll-options-list [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-options-list>\n </ng-container>\n <div #actions><ng-content select=\"[poll-actions]\"></ng-content></div>\n <ng-container *ngIf=\"!actions.hasChildNodes()\">\n <stream-poll-actions [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-actions>\n </ng-container>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.PollHeaderComponent, selector: "stream-poll-header" }, { kind: "component", type: i3.PollOptionsListComponent, selector: "stream-poll-options-list", inputs: ["maxOptionsDisplayed"] }, { kind: "component", type: i4.PollActionsComponent, selector: "stream-poll-actions", inputs: ["maxOptionsDisplayed", "maxPollOptions"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollComponent, decorators: [{
|
|
31
|
-
type: Component,
|
|
32
|
-
args: [{ selector: 'stream-poll', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__poll\" [class.str-chat__poll--closed]=\"isClosed\">\n <div #header><ng-content select=\"[poll-header]\"></ng-content></div>\n <ng-container *ngIf=\"!header.hasChildNodes()\">\n <stream-poll-header [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-header>\n </ng-container>\n <div #options><ng-content select=\"[poll-options-list]\"></ng-content></div>\n <ng-container *ngIf=\"!options.hasChildNodes()\">\n <stream-poll-options-list [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-options-list>\n </ng-container>\n <div #actions><ng-content select=\"[poll-actions]\"></ng-content></div>\n <ng-container *ngIf=\"!actions.hasChildNodes()\">\n <stream-poll-actions [pollId]=\"pollId\" [messageId]=\"messageId\">\n </stream-poll-actions>\n </ng-container>\n</div>\n" }]
|
|
33
|
-
}] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC9wb2xsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsL3BvbGwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7O0FBRzNEOztHQUVHO0FBT0gsTUFBTSxPQUFPLGFBQWMsU0FBUSxpQkFBaUI7SUFOcEQ7O1FBT0UsYUFBUSxHQUFHLEtBQUssQ0FBQztLQW9CbEI7SUFsQlcsa0JBQWtCLENBQzFCLElBQVUsRUFDVixZQUF3QjtRQUV4QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUNsRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsT0FBTztnQkFDTCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7YUFDM0IsQ0FBQztRQUNKLENBQUMsRUFDRCxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztZQUN6QyxZQUFZLEVBQUUsQ0FBQztRQUNqQixDQUFDLENBQ0YsQ0FBQztRQUVGLE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7OzBHQXBCVSxhQUFhOzhGQUFiLGFBQWEsMEVDYjFCLHcwQkFpQkE7MkZESmEsYUFBYTtrQkFOekIsU0FBUzsrQkFDRSxhQUFhLG1CQUdOLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlUG9sbENvbXBvbmVudCB9IGZyb20gJy4uL2Jhc2UtcG9sbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9sbCB9IGZyb20gJ3N0cmVhbS1jaGF0JztcblxuLyoqXG4gKlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tcG9sbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb2xsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxDb21wb25lbnQgZXh0ZW5kcyBCYXNlUG9sbENvbXBvbmVudCB7XG4gIGlzQ2xvc2VkID0gZmFsc2U7XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHBvbGwuc3RhdGUuc3Vic2NyaWJlV2l0aFNlbGVjdG9yKFxuICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaXNfY2xvc2VkOiBzdGF0ZS5pc19jbG9zZWQsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMuaXNDbG9zZWQgPSBzdGF0ZS5pc19jbG9zZWQgPz8gZmFsc2U7XG4gICAgICAgIG1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbFwiIFtjbGFzcy5zdHItY2hhdF9fcG9sbC0tY2xvc2VkXT1cImlzQ2xvc2VkXCI+XG4gIDxkaXYgI2hlYWRlcj48bmctY29udGVudCBzZWxlY3Q9XCJbcG9sbC1oZWFkZXJdXCI+PC9uZy1jb250ZW50PjwvZGl2PlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWhlYWRlci5oYXNDaGlsZE5vZGVzKClcIj5cbiAgICA8c3RyZWFtLXBvbGwtaGVhZGVyIFtwb2xsSWRdPVwicG9sbElkXCIgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIj5cbiAgICA8L3N0cmVhbS1wb2xsLWhlYWRlcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxkaXYgI29wdGlvbnM+PG5nLWNvbnRlbnQgc2VsZWN0PVwiW3BvbGwtb3B0aW9ucy1saXN0XVwiPjwvbmctY29udGVudD48L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFvcHRpb25zLmhhc0NoaWxkTm9kZXMoKVwiPlxuICAgIDxzdHJlYW0tcG9sbC1vcHRpb25zLWxpc3QgW3BvbGxJZF09XCJwb2xsSWRcIiBbbWVzc2FnZUlkXT1cIm1lc3NhZ2VJZFwiPlxuICAgIDwvc3RyZWFtLXBvbGwtb3B0aW9ucy1saXN0PlxuICA8L25nLWNvbnRhaW5lcj5cbiAgPGRpdiAjYWN0aW9ucz48bmctY29udGVudCBzZWxlY3Q9XCJbcG9sbC1hY3Rpb25zXVwiPjwvbmctY29udGVudD48L2Rpdj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhY3Rpb25zLmhhc0NoaWxkTm9kZXMoKVwiPlxuICAgIDxzdHJlYW0tcG9sbC1hY3Rpb25zIFtwb2xsSWRdPVwicG9sbElkXCIgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIj5cbiAgICA8L3N0cmVhbS1wb2xsLWFjdGlvbnM+XG4gIDwvbmctY29udGFpbmVyPlxuPC9kaXY+XG4iXX0=
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Output, } from '@angular/core';
|
|
2
|
-
import { BasePollComponent } from '../../base-poll.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "@ngx-translate/core";
|
|
6
|
-
import * as i3 from "../../../paginated-list/paginated-list.component";
|
|
7
|
-
import * as i4 from "../poll-results/poll-vote/poll-vote.component";
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
*/
|
|
11
|
-
export class PollAnswersListComponent extends BasePollComponent {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments);
|
|
14
|
-
this.class = 'str-chat__modal__poll-answer-list';
|
|
15
|
-
/**
|
|
16
|
-
* The even that's emitted when the update/add comment button is clicked
|
|
17
|
-
*/
|
|
18
|
-
this.upsertOwnAnswer = new EventEmitter();
|
|
19
|
-
this.isLoading = false;
|
|
20
|
-
this.answers = [];
|
|
21
|
-
this.isClosed = false;
|
|
22
|
-
}
|
|
23
|
-
ngOnChanges(changes) {
|
|
24
|
-
super.ngOnChanges(changes);
|
|
25
|
-
if (changes['pollId']) {
|
|
26
|
-
void this.queryAnswers();
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
async queryAnswers() {
|
|
30
|
-
if (!this.poll) {
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
try {
|
|
34
|
-
this.isLoading = true;
|
|
35
|
-
const response = await this.poll.queryAnswers({
|
|
36
|
-
filter: {},
|
|
37
|
-
sort: { created_at: -1 },
|
|
38
|
-
options: {
|
|
39
|
-
next: this.next,
|
|
40
|
-
},
|
|
41
|
-
});
|
|
42
|
-
this.next = response.next;
|
|
43
|
-
this.answers = [...this.answers, ...response.votes];
|
|
44
|
-
this.markForCheck();
|
|
45
|
-
}
|
|
46
|
-
catch (error) {
|
|
47
|
-
this.notificationService.addTemporaryNotification('streamChat.Error loading answers');
|
|
48
|
-
this.markForCheck();
|
|
49
|
-
throw error;
|
|
50
|
-
}
|
|
51
|
-
finally {
|
|
52
|
-
this.isLoading = false;
|
|
53
|
-
this.markForCheck();
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
trackByAnswerId(_, answer) {
|
|
57
|
-
return answer.id;
|
|
58
|
-
}
|
|
59
|
-
stateStoreSelector(poll, markForCheck) {
|
|
60
|
-
const unsubscribe = poll.state.subscribeWithSelector((state) => ({
|
|
61
|
-
is_closed: state.is_closed,
|
|
62
|
-
own_answer: state.ownAnswer,
|
|
63
|
-
}), (state) => {
|
|
64
|
-
this.isClosed = state.is_closed ?? false;
|
|
65
|
-
this.ownAnswer = state.own_answer ?? undefined;
|
|
66
|
-
markForCheck();
|
|
67
|
-
});
|
|
68
|
-
return unsubscribe;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
PollAnswersListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollAnswersListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
72
|
-
PollAnswersListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollAnswersListComponent, selector: "stream-poll-answers-list", outputs: { upsertOwnAnswer: "upsertOwnAnswer" }, host: { properties: { "class": "this.class" } }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"str-chat__modal__poll-answer-list\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll comments\n </div>\n </div>\n <div class=\"str-chat__modal__poll-answer-list__body\">\n <div class=\"str-chat__poll-answer-list\">\n <stream-paginated-list\n class=\"str-chat__poll-answer-list\"\n [items]=\"answers\"\n [hasMore]=\"next !== undefined\"\n [isLoading]=\"isLoading\"\n [trackBy]=\"trackByAnswerId\"\n (loadMore)=\"queryAnswers()\"\n >\n <ng-template let-answer=\"item\">\n <div class=\"str-chat__poll-answer\">\n <p *ngIf=\"answer.answer_text\" class=\"str-chat__poll-answer__text\">\n {{ answer.answer_text }}\n </p>\n <stream-poll-vote [vote]=\"answer\"></stream-poll-vote>\n </div>\n </ng-template>\n </stream-paginated-list>\n <button\n *ngIf=\"!isClosed\"\n class=\"str-chat__poll-action\"\n (click)=\"upsertOwnAnswer.emit()\"\n >\n {{\n (ownAnswer\n ? \"streamChat.Update your comment\"\n : \"streamChat.Add a comment\"\n ) | translate\n }}\n </button>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.PaginatedListComponent, selector: "stream-paginated-list", inputs: ["items", "isLoading", "hasMore", "trackBy"], outputs: ["loadMore"] }, { kind: "component", type: i4.PollVoteComponent, selector: "stream-poll-vote", inputs: ["vote"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
73
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollAnswersListComponent, decorators: [{
|
|
74
|
-
type: Component,
|
|
75
|
-
args: [{ selector: 'stream-poll-answers-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"str-chat__modal__poll-answer-list\">\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll comments\n </div>\n </div>\n <div class=\"str-chat__modal__poll-answer-list__body\">\n <div class=\"str-chat__poll-answer-list\">\n <stream-paginated-list\n class=\"str-chat__poll-answer-list\"\n [items]=\"answers\"\n [hasMore]=\"next !== undefined\"\n [isLoading]=\"isLoading\"\n [trackBy]=\"trackByAnswerId\"\n (loadMore)=\"queryAnswers()\"\n >\n <ng-template let-answer=\"item\">\n <div class=\"str-chat__poll-answer\">\n <p *ngIf=\"answer.answer_text\" class=\"str-chat__poll-answer__text\">\n {{ answer.answer_text }}\n </p>\n <stream-poll-vote [vote]=\"answer\"></stream-poll-vote>\n </div>\n </ng-template>\n </stream-paginated-list>\n <button\n *ngIf=\"!isClosed\"\n class=\"str-chat__poll-action\"\n (click)=\"upsertOwnAnswer.emit()\"\n >\n {{\n (ownAnswer\n ? \"streamChat.Update your comment\"\n : \"streamChat.Add a comment\"\n ) | translate\n }}\n </button>\n </div>\n </div>\n</div>\n" }]
|
|
76
|
-
}], propDecorators: { class: [{
|
|
77
|
-
type: HostBinding,
|
|
78
|
-
args: ['class']
|
|
79
|
-
}], upsertOwnAnswer: [{
|
|
80
|
-
type: Output
|
|
81
|
-
}] } });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1hbnN3ZXJzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3BvbGxzL3BvbGwtYWN0aW9ucy9wb2xsLWFuc3dlcnMtbGlzdC9wb2xsLWFuc3dlcnMtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1hY3Rpb25zL3BvbGwtYW5zd2Vycy1saXN0L3BvbGwtYW5zd2Vycy1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBRVgsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7QUFHOUQ7O0dBRUc7QUFPSCxNQUFNLE9BQU8sd0JBQ1gsU0FBUSxpQkFBaUI7SUFQM0I7O1FBVXdCLFVBQUssR0FBRyxtQ0FBbUMsQ0FBQztRQUNsRTs7V0FFRztRQUNPLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUNyRCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBRWxCLFlBQU8sR0FBaUIsRUFBRSxDQUFDO1FBQzNCLGFBQVEsR0FBRyxLQUFLLENBQUM7S0E2RGxCO0lBMURDLFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQ3JCLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzFCO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxZQUFZO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2QsT0FBTztTQUNSO1FBQ0QsSUFBSTtZQUNGLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7Z0JBQzVDLE1BQU0sRUFBRSxFQUFFO2dCQUNWLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsRUFBRTtnQkFDeEIsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtpQkFDaEI7YUFDRixDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7WUFDMUIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDckI7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FDL0Msa0NBQWtDLENBQ25DLENBQUM7WUFDRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsTUFBTSxLQUFLLENBQUM7U0FDYjtnQkFBUztZQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUNyQjtJQUNILENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBUyxFQUFFLE1BQWtCO1FBQzNDLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRVMsa0JBQWtCLENBQzFCLElBQVUsRUFDVixZQUF3QjtRQUV4QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUNsRCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNWLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixVQUFVLEVBQUUsS0FBSyxDQUFDLFNBQVM7U0FDNUIsQ0FBQyxFQUNGLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLFVBQVUsSUFBSSxTQUFTLENBQUM7WUFDL0MsWUFBWSxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDOztxSEF4RVUsd0JBQXdCO3lHQUF4Qix3QkFBd0IsOE1DckJyQyxpeUNBd0NBOzJGRG5CYSx3QkFBd0I7a0JBTnBDLFNBQVM7K0JBQ0UsMEJBQTBCLG1CQUduQix1QkFBdUIsQ0FBQyxNQUFNOzhCQU16QixLQUFLO3NCQUExQixXQUFXO3VCQUFDLE9BQU87Z0JBSVYsZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSG9zdEJpbmRpbmcsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJhc2VQb2xsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1wb2xsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQb2xsLCBQb2xsQW5zd2VyIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuXG4vKipcbiAqXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1wb2xsLWFuc3dlcnMtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9wb2xsLWFuc3dlcnMtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBQb2xsQW5zd2Vyc0xpc3RDb21wb25lbnRcbiAgZXh0ZW5kcyBCYXNlUG9sbENvbXBvbmVudFxuICBpbXBsZW1lbnRzIE9uQ2hhbmdlc1xue1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgY2xhc3MgPSAnc3RyLWNoYXRfX21vZGFsX19wb2xsLWFuc3dlci1saXN0JztcbiAgLyoqXG4gICAqIFRoZSBldmVuIHRoYXQncyBlbWl0dGVkIHdoZW4gdGhlIHVwZGF0ZS9hZGQgY29tbWVudCBidXR0b24gaXMgY2xpY2tlZFxuICAgKi9cbiAgQE91dHB1dCgpIHVwc2VydE93bkFuc3dlciA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgaXNMb2FkaW5nID0gZmFsc2U7XG4gIG5leHQ/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIGFuc3dlcnM6IFBvbGxBbnN3ZXJbXSA9IFtdO1xuICBpc0Nsb3NlZCA9IGZhbHNlO1xuICBvd25BbnN3ZXI6IFBvbGxBbnN3ZXIgfCB1bmRlZmluZWQ7XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuICAgIGlmIChjaGFuZ2VzWydwb2xsSWQnXSkge1xuICAgICAgdm9pZCB0aGlzLnF1ZXJ5QW5zd2VycygpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHF1ZXJ5QW5zd2VycygpIHtcbiAgICBpZiAoIXRoaXMucG9sbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLnBvbGwucXVlcnlBbnN3ZXJzKHtcbiAgICAgICAgZmlsdGVyOiB7fSxcbiAgICAgICAgc29ydDogeyBjcmVhdGVkX2F0OiAtMSB9LFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgbmV4dDogdGhpcy5uZXh0LFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMubmV4dCA9IHJlc3BvbnNlLm5leHQ7XG4gICAgICB0aGlzLmFuc3dlcnMgPSBbLi4udGhpcy5hbnN3ZXJzLCAuLi5yZXNwb25zZS52b3Rlc107XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAnc3RyZWFtQ2hhdC5FcnJvciBsb2FkaW5nIGFuc3dlcnMnXG4gICAgICApO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICB0cmFja0J5QW5zd2VySWQoXzogbnVtYmVyLCBhbnN3ZXI6IFBvbGxBbnN3ZXIpIHtcbiAgICByZXR1cm4gYW5zd2VyLmlkO1xuICB9XG5cbiAgcHJvdGVjdGVkIHN0YXRlU3RvcmVTZWxlY3RvcihcbiAgICBwb2xsOiBQb2xsLFxuICAgIG1hcmtGb3JDaGVjazogKCkgPT4gdm9pZFxuICApOiAoKSA9PiB2b2lkIHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHBvbGwuc3RhdGUuc3Vic2NyaWJlV2l0aFNlbGVjdG9yKFxuICAgICAgKHN0YXRlKSA9PiAoe1xuICAgICAgICBpc19jbG9zZWQ6IHN0YXRlLmlzX2Nsb3NlZCxcbiAgICAgICAgb3duX2Fuc3dlcjogc3RhdGUub3duQW5zd2VyLFxuICAgICAgfSksXG4gICAgICAoc3RhdGUpID0+IHtcbiAgICAgICAgdGhpcy5pc0Nsb3NlZCA9IHN0YXRlLmlzX2Nsb3NlZCA/PyBmYWxzZTtcbiAgICAgICAgdGhpcy5vd25BbnN3ZXIgPSBzdGF0ZS5vd25fYW5zd2VyID8/IHVuZGVmaW5lZDtcbiAgICAgICAgbWFya0ZvckNoZWNrKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiB1bnN1YnNjcmliZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tb2RhbF9fcG9sbC1hbnN3ZXItbGlzdFwiPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsLWhlYWRlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWwtaGVhZGVyX190aXRsZVwiIHRyYW5zbGF0ZT5cbiAgICAgIHN0cmVhbUNoYXQuUG9sbCBjb21tZW50c1xuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tb2RhbF9fcG9sbC1hbnN3ZXItbGlzdF9fYm9keVwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hbnN3ZXItbGlzdFwiPlxuICAgICAgPHN0cmVhbS1wYWdpbmF0ZWQtbGlzdFxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFuc3dlci1saXN0XCJcbiAgICAgICAgW2l0ZW1zXT1cImFuc3dlcnNcIlxuICAgICAgICBbaGFzTW9yZV09XCJuZXh0ICE9PSB1bmRlZmluZWRcIlxuICAgICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAgIFt0cmFja0J5XT1cInRyYWNrQnlBbnN3ZXJJZFwiXG4gICAgICAgIChsb2FkTW9yZSk9XCJxdWVyeUFuc3dlcnMoKVwiXG4gICAgICA+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtYW5zd2VyPVwiaXRlbVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hbnN3ZXJcIj5cbiAgICAgICAgICAgIDxwICpuZ0lmPVwiYW5zd2VyLmFuc3dlcl90ZXh0XCIgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1hbnN3ZXJfX3RleHRcIj5cbiAgICAgICAgICAgICAge3sgYW5zd2VyLmFuc3dlcl90ZXh0IH19XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICA8c3RyZWFtLXBvbGwtdm90ZSBbdm90ZV09XCJhbnN3ZXJcIj48L3N0cmVhbS1wb2xsLXZvdGU+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L3N0cmVhbS1wYWdpbmF0ZWQtbGlzdD5cbiAgICAgIDxidXR0b25cbiAgICAgICAgKm5nSWY9XCIhaXNDbG9zZWRcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19wb2xsLWFjdGlvblwiXG4gICAgICAgIChjbGljayk9XCJ1cHNlcnRPd25BbnN3ZXIuZW1pdCgpXCJcbiAgICAgID5cbiAgICAgICAge3tcbiAgICAgICAgICAob3duQW5zd2VyXG4gICAgICAgICAgICA/IFwic3RyZWFtQ2hhdC5VcGRhdGUgeW91ciBjb21tZW50XCJcbiAgICAgICAgICAgIDogXCJzdHJlYW1DaGF0LkFkZCBhIGNvbW1lbnRcIlxuICAgICAgICAgICkgfCB0cmFuc2xhdGVcbiAgICAgICAgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core';
|
|
2
|
-
import { BasePollComponent } from '../../../base-poll.component';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@angular/common";
|
|
5
|
-
import * as i2 from "@ngx-translate/core";
|
|
6
|
-
import * as i3 from "../poll-vote-results-list/poll-vote-results-list.component";
|
|
7
|
-
import * as i4 from "../poll-vote/poll-vote.component";
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
*/
|
|
11
|
-
export class PollResultsListComponent extends BasePollComponent {
|
|
12
|
-
constructor() {
|
|
13
|
-
super(...arguments);
|
|
14
|
-
this.class = 'str-chat__modal__poll-results';
|
|
15
|
-
this.name = '';
|
|
16
|
-
this.options = [];
|
|
17
|
-
this.votePreviewCount = 5;
|
|
18
|
-
this.maxVotedOptionIds = [];
|
|
19
|
-
this.voteCountsByOption = {};
|
|
20
|
-
this.latestVotesByOption = {};
|
|
21
|
-
}
|
|
22
|
-
stateStoreSelector(poll, markForCheck) {
|
|
23
|
-
const unsubscribe = poll.state.subscribeWithSelector((state) => ({
|
|
24
|
-
name: state.name,
|
|
25
|
-
options: state.options,
|
|
26
|
-
maxVotedOptionIds: state.maxVotedOptionIds,
|
|
27
|
-
vote_counts_by_option: state.vote_counts_by_option,
|
|
28
|
-
latest_votes_by_option: state.latest_votes_by_option,
|
|
29
|
-
}), (state) => {
|
|
30
|
-
this.name = state.name;
|
|
31
|
-
this.options = [...state.options];
|
|
32
|
-
this.options.sort((a, b) => {
|
|
33
|
-
return ((state.vote_counts_by_option[b.id] ?? 0) -
|
|
34
|
-
(state.vote_counts_by_option[a.id] ?? 0));
|
|
35
|
-
});
|
|
36
|
-
this.maxVotedOptionIds = state.maxVotedOptionIds;
|
|
37
|
-
this.voteCountsByOption = state.vote_counts_by_option;
|
|
38
|
-
this.latestVotesByOption = state.latest_votes_by_option;
|
|
39
|
-
markForCheck();
|
|
40
|
-
});
|
|
41
|
-
return unsubscribe;
|
|
42
|
-
}
|
|
43
|
-
isWinner(optionId) {
|
|
44
|
-
return (this.maxVotedOptionIds.length === 1 &&
|
|
45
|
-
this.maxVotedOptionIds[0] === optionId);
|
|
46
|
-
}
|
|
47
|
-
trackByOptionId(_, option) {
|
|
48
|
-
return option.id;
|
|
49
|
-
}
|
|
50
|
-
trackByVoteId(_, vote) {
|
|
51
|
-
return vote.id;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
PollResultsListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollResultsListComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
55
|
-
PollResultsListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollResultsListComponent, selector: "stream-poll-results-list", host: { properties: { "class": "this.class" } }, usesInheritance: true, ngImport: i0, template: "<div\n class=\"str-chat__modal__poll-results\"\n [class.str-chat__modal__poll-results--option-detail]=\"optionToView\"\n>\n <div class=\"str-chat__modal-header\">\n <!-- eslint-disable-next-line @angular-eslint/template/accessibility-elements-content -->\n <button\n *ngIf=\"optionToView\"\n class=\"str-chat__modal-header__go-back-button\"\n (click)=\"optionToView = undefined\"\n ></button>\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll results\n </div>\n </div>\n <ng-container *ngIf=\"optionToView; else allOptions\">\n <div class=\"str-chat__modal__poll-results__body\">\n <stream-poll-vote-results-list\n [option]=\"optionToView\"\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n ></stream-poll-vote-results-list>\n </div>\n </ng-container>\n <ng-template #allOptions>\n <div class=\"str-chat__modal__poll-results__body\">\n <div class=\"str-chat__modal__poll-results__title\">{{ name }}</div>\n <div class=\"str-chat__modal__poll-results__option-list\">\n <div\n *ngFor=\"let option of options; trackBy: trackByOptionId\"\n class=\"str-chat__poll-option\"\n >\n <div class=\"str-chat__poll-option__header\">\n <div class=\"str-chat__poll-option__option-text\">\n {{ option.text }}\n </div>\n <div class=\"str-chat__poll-result-option-vote-counter\">\n <div\n *ngIf=\"isWinner(option.id)\"\n class=\"str-chat__poll-result-winning-option-icon\"\n ></div>\n <span class=\"str-chat__poll-result-option-vote-count\">\n {{ 'streamChat.{{ count }} votes' | translate:{count:\n voteCountsByOption[option.id] ?? 0} }}\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"latestVotesByOption[option?.id ?? '']\">\n <div class=\"str-chat__poll-vote-listing\">\n <ng-container\n *ngFor=\"\n let vote of latestVotesByOption[option?.id ?? '']\n | slice : 0 : votePreviewCount;\n trackBy: trackByVoteId\n \"\n >\n <stream-poll-vote [vote]=\"vote\"></stream-poll-vote>\n </ng-container>\n </div>\n </ng-container>\n <button\n *ngIf=\"\n voteCountsByOption[option?.id ?? ''] > votePreviewCount &&\n canQueryVotes\n \"\n class=\"str-chat__poll-option__show-all-votes-button\"\n translate\n (click)=\"optionToView = option\"\n >\n streamChat.Show all\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i3.PollVoteResultsListComponent, selector: "stream-poll-vote-results-list", inputs: ["option"] }, { kind: "component", type: i4.PollVoteComponent, selector: "stream-poll-vote", inputs: ["vote"] }, { kind: "pipe", type: i1.SlicePipe, name: "slice" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollResultsListComponent, decorators: [{
|
|
57
|
-
type: Component,
|
|
58
|
-
args: [{ selector: 'stream-poll-results-list', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"str-chat__modal__poll-results\"\n [class.str-chat__modal__poll-results--option-detail]=\"optionToView\"\n>\n <div class=\"str-chat__modal-header\">\n <!-- eslint-disable-next-line @angular-eslint/template/accessibility-elements-content -->\n <button\n *ngIf=\"optionToView\"\n class=\"str-chat__modal-header__go-back-button\"\n (click)=\"optionToView = undefined\"\n ></button>\n <div class=\"str-chat__modal-header__title\" translate>\n streamChat.Poll results\n </div>\n </div>\n <ng-container *ngIf=\"optionToView; else allOptions\">\n <div class=\"str-chat__modal__poll-results__body\">\n <stream-poll-vote-results-list\n [option]=\"optionToView\"\n [messageId]=\"messageId\"\n [pollId]=\"pollId\"\n ></stream-poll-vote-results-list>\n </div>\n </ng-container>\n <ng-template #allOptions>\n <div class=\"str-chat__modal__poll-results__body\">\n <div class=\"str-chat__modal__poll-results__title\">{{ name }}</div>\n <div class=\"str-chat__modal__poll-results__option-list\">\n <div\n *ngFor=\"let option of options; trackBy: trackByOptionId\"\n class=\"str-chat__poll-option\"\n >\n <div class=\"str-chat__poll-option__header\">\n <div class=\"str-chat__poll-option__option-text\">\n {{ option.text }}\n </div>\n <div class=\"str-chat__poll-result-option-vote-counter\">\n <div\n *ngIf=\"isWinner(option.id)\"\n class=\"str-chat__poll-result-winning-option-icon\"\n ></div>\n <span class=\"str-chat__poll-result-option-vote-count\">\n {{ 'streamChat.{{ count }} votes' | translate:{count:\n voteCountsByOption[option.id] ?? 0} }}\n </span>\n </div>\n </div>\n <ng-container *ngIf=\"latestVotesByOption[option?.id ?? '']\">\n <div class=\"str-chat__poll-vote-listing\">\n <ng-container\n *ngFor=\"\n let vote of latestVotesByOption[option?.id ?? '']\n | slice : 0 : votePreviewCount;\n trackBy: trackByVoteId\n \"\n >\n <stream-poll-vote [vote]=\"vote\"></stream-poll-vote>\n </ng-container>\n </div>\n </ng-container>\n <button\n *ngIf=\"\n voteCountsByOption[option?.id ?? ''] > votePreviewCount &&\n canQueryVotes\n \"\n class=\"str-chat__poll-option__show-all-votes-button\"\n translate\n (click)=\"optionToView = option\"\n >\n streamChat.Show all\n </button>\n </div>\n </div>\n </div>\n </ng-template>\n</div>\n" }]
|
|
59
|
-
}], propDecorators: { class: [{
|
|
60
|
-
type: HostBinding,
|
|
61
|
-
args: ['class']
|
|
62
|
-
}] } });
|
|
63
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1yZXN1bHRzLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3BvbGxzL3BvbGwtYWN0aW9ucy9wb2xsLXJlc3VsdHMvcG9sbC1yZXN1bHRzLWxpc3QvcG9sbC1yZXN1bHRzLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL3BvbGxzL3BvbGwtYWN0aW9ucy9wb2xsLXJlc3VsdHMvcG9sbC1yZXN1bHRzLWxpc3QvcG9sbC1yZXN1bHRzLWxpc3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7Ozs7OztBQUdqRTs7R0FFRztBQU9ILE1BQU0sT0FBTyx3QkFBeUIsU0FBUSxpQkFBaUI7SUFOL0Q7O1FBT3dCLFVBQUssR0FBRywrQkFBK0IsQ0FBQztRQUM5RCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ1YsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFFM0IscUJBQWdCLEdBQUcsQ0FBQyxDQUFDO1FBQ3JCLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUNqQyx1QkFBa0IsR0FBMkIsRUFBRSxDQUFDO1FBQ2hELHdCQUFtQixHQUErQixFQUFFLENBQUM7S0ErQ3REO0lBN0NXLGtCQUFrQixDQUMxQixJQUFVLEVBQ1YsWUFBd0I7UUFFeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FDbEQsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7WUFDMUMscUJBQXFCLEVBQUUsS0FBSyxDQUFDLHFCQUFxQjtZQUNsRCxzQkFBc0IsRUFBRSxLQUFLLENBQUMsc0JBQXNCO1NBQ3JELENBQUMsRUFDRixDQUFDLEtBQUssRUFBRSxFQUFFO1lBQ1IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtnQkFDekIsT0FBTyxDQUNMLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ3hDLENBQUMsS0FBSyxDQUFDLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekMsQ0FBQztZQUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQztZQUNqRCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsS0FBSyxDQUFDLHFCQUFxQixDQUFDO1lBQ3RELElBQUksQ0FBQyxtQkFBbUIsR0FBRyxLQUFLLENBQUMsc0JBQXNCLENBQUM7WUFDeEQsWUFBWSxFQUFFLENBQUM7UUFDakIsQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQWdCO1FBQ3ZCLE9BQU8sQ0FDTCxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLFFBQVEsQ0FDdkMsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBUyxFQUFFLE1BQWtCO1FBQzNDLE9BQU8sTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQsYUFBYSxDQUFDLENBQVMsRUFBRSxJQUFjO1FBQ3JDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNqQixDQUFDOztxSEF0RFUsd0JBQXdCO3lHQUF4Qix3QkFBd0Isd0lDYnJDLDZ5RkE0RUE7MkZEL0RhLHdCQUF3QjtrQkFOcEMsU0FBUzsrQkFDRSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU07OEJBR3pCLEtBQUs7c0JBQTFCLFdBQVc7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEhvc3RCaW5kaW5nIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCYXNlUG9sbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2Jhc2UtcG9sbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUG9sbCwgUG9sbE9wdGlvbiwgUG9sbFZvdGUgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5cbi8qKlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLXBvbGwtcmVzdWx0cy1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvbGwtcmVzdWx0cy1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxSZXN1bHRzTGlzdENvbXBvbmVudCBleHRlbmRzIEJhc2VQb2xsQ29tcG9uZW50IHtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIGNsYXNzID0gJ3N0ci1jaGF0X19tb2RhbF9fcG9sbC1yZXN1bHRzJztcbiAgbmFtZSA9ICcnO1xuICBvcHRpb25zOiBQb2xsT3B0aW9uW10gPSBbXTtcbiAgb3B0aW9uVG9WaWV3OiBQb2xsT3B0aW9uIHwgdW5kZWZpbmVkO1xuICB2b3RlUHJldmlld0NvdW50ID0gNTtcbiAgbWF4Vm90ZWRPcHRpb25JZHM6IHN0cmluZ1tdID0gW107XG4gIHZvdGVDb3VudHNCeU9wdGlvbjogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICBsYXRlc3RWb3Rlc0J5T3B0aW9uOiBSZWNvcmQ8c3RyaW5nLCBQb2xsVm90ZVtdPiA9IHt9O1xuXG4gIHByb3RlY3RlZCBzdGF0ZVN0b3JlU2VsZWN0b3IoXG4gICAgcG9sbDogUG9sbCxcbiAgICBtYXJrRm9yQ2hlY2s6ICgpID0+IHZvaWRcbiAgKTogKCkgPT4gdm9pZCB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBwb2xsLnN0YXRlLnN1YnNjcmliZVdpdGhTZWxlY3RvcihcbiAgICAgIChzdGF0ZSkgPT4gKHtcbiAgICAgICAgbmFtZTogc3RhdGUubmFtZSxcbiAgICAgICAgb3B0aW9uczogc3RhdGUub3B0aW9ucyxcbiAgICAgICAgbWF4Vm90ZWRPcHRpb25JZHM6IHN0YXRlLm1heFZvdGVkT3B0aW9uSWRzLFxuICAgICAgICB2b3RlX2NvdW50c19ieV9vcHRpb246IHN0YXRlLnZvdGVfY291bnRzX2J5X29wdGlvbixcbiAgICAgICAgbGF0ZXN0X3ZvdGVzX2J5X29wdGlvbjogc3RhdGUubGF0ZXN0X3ZvdGVzX2J5X29wdGlvbixcbiAgICAgIH0pLFxuICAgICAgKHN0YXRlKSA9PiB7XG4gICAgICAgIHRoaXMubmFtZSA9IHN0YXRlLm5hbWU7XG4gICAgICAgIHRoaXMub3B0aW9ucyA9IFsuLi5zdGF0ZS5vcHRpb25zXTtcbiAgICAgICAgdGhpcy5vcHRpb25zLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHN0YXRlLnZvdGVfY291bnRzX2J5X29wdGlvbltiLmlkXSA/PyAwKSAtXG4gICAgICAgICAgICAoc3RhdGUudm90ZV9jb3VudHNfYnlfb3B0aW9uW2EuaWRdID8/IDApXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubWF4Vm90ZWRPcHRpb25JZHMgPSBzdGF0ZS5tYXhWb3RlZE9wdGlvbklkcztcbiAgICAgICAgdGhpcy52b3RlQ291bnRzQnlPcHRpb24gPSBzdGF0ZS52b3RlX2NvdW50c19ieV9vcHRpb247XG4gICAgICAgIHRoaXMubGF0ZXN0Vm90ZXNCeU9wdGlvbiA9IHN0YXRlLmxhdGVzdF92b3Rlc19ieV9vcHRpb247XG4gICAgICAgIG1hcmtGb3JDaGVjaygpO1xuICAgICAgfVxuICAgICk7XG5cbiAgICByZXR1cm4gdW5zdWJzY3JpYmU7XG4gIH1cblxuICBpc1dpbm5lcihvcHRpb25JZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMubWF4Vm90ZWRPcHRpb25JZHMubGVuZ3RoID09PSAxICYmXG4gICAgICB0aGlzLm1heFZvdGVkT3B0aW9uSWRzWzBdID09PSBvcHRpb25JZFxuICAgICk7XG4gIH1cblxuICB0cmFja0J5T3B0aW9uSWQoXzogbnVtYmVyLCBvcHRpb246IFBvbGxPcHRpb24pIHtcbiAgICByZXR1cm4gb3B0aW9uLmlkO1xuICB9XG5cbiAgdHJhY2tCeVZvdGVJZChfOiBudW1iZXIsIHZvdGU6IFBvbGxWb3RlKSB7XG4gICAgcmV0dXJuIHZvdGUuaWQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX3BvbGwtcmVzdWx0c1wiXG4gIFtjbGFzcy5zdHItY2hhdF9fbW9kYWxfX3BvbGwtcmVzdWx0cy0tb3B0aW9uLWRldGFpbF09XCJvcHRpb25Ub1ZpZXdcIlxuPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsLWhlYWRlclwiPlxuICAgIDwhLS0gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS9hY2Nlc3NpYmlsaXR5LWVsZW1lbnRzLWNvbnRlbnQgLS0+XG4gICAgPGJ1dHRvblxuICAgICAgKm5nSWY9XCJvcHRpb25Ub1ZpZXdcIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWwtaGVhZGVyX19nby1iYWNrLWJ1dHRvblwiXG4gICAgICAoY2xpY2spPVwib3B0aW9uVG9WaWV3ID0gdW5kZWZpbmVkXCJcbiAgICA+PC9idXR0b24+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tb2RhbC1oZWFkZXJfX3RpdGxlXCIgdHJhbnNsYXRlPlxuICAgICAgc3RyZWFtQ2hhdC5Qb2xsIHJlc3VsdHNcbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJvcHRpb25Ub1ZpZXc7IGVsc2UgYWxsT3B0aW9uc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX3BvbGwtcmVzdWx0c19fYm9keVwiPlxuICAgICAgPHN0cmVhbS1wb2xsLXZvdGUtcmVzdWx0cy1saXN0XG4gICAgICAgIFtvcHRpb25dPVwib3B0aW9uVG9WaWV3XCJcbiAgICAgICAgW21lc3NhZ2VJZF09XCJtZXNzYWdlSWRcIlxuICAgICAgICBbcG9sbElkXT1cInBvbGxJZFwiXG4gICAgICA+PC9zdHJlYW0tcG9sbC12b3RlLXJlc3VsdHMtbGlzdD5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjYWxsT3B0aW9ucz5cbiAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLXJlc3VsdHNfX2JvZHlcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX3BvbGwtcmVzdWx0c19fdGl0bGVcIj57eyBuYW1lIH19PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX21vZGFsX19wb2xsLXJlc3VsdHNfX29wdGlvbi1saXN0XCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnM7IHRyYWNrQnk6IHRyYWNrQnlPcHRpb25JZFwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1vcHRpb25cIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19wb2xsLW9wdGlvbl9faGVhZGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtb3B0aW9uX19vcHRpb24tdGV4dFwiPlxuICAgICAgICAgICAgICB7eyBvcHRpb24udGV4dCB9fVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtcmVzdWx0LW9wdGlvbi12b3RlLWNvdW50ZXJcIj5cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNXaW5uZXIob3B0aW9uLmlkKVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1yZXN1bHQtd2lubmluZy1vcHRpb24taWNvblwiXG4gICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzdHItY2hhdF9fcG9sbC1yZXN1bHQtb3B0aW9uLXZvdGUtY291bnRcIj5cbiAgICAgICAgICAgICAgICB7eyAnc3RyZWFtQ2hhdC57eyBjb3VudCB9fSB2b3RlcycgfCB0cmFuc2xhdGU6e2NvdW50OlxuICAgICAgICAgICAgICAgIHZvdGVDb3VudHNCeU9wdGlvbltvcHRpb24uaWRdID8/IDB9IH19XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsYXRlc3RWb3Rlc0J5T3B0aW9uW29wdGlvbj8uaWQgPz8gJyddXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtdm90ZS1saXN0aW5nXCI+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJcbiAgICAgICAgICAgICAgICAgIGxldCB2b3RlIG9mIGxhdGVzdFZvdGVzQnlPcHRpb25bb3B0aW9uPy5pZCA/PyAnJ11cbiAgICAgICAgICAgICAgICAgICAgfCBzbGljZSA6IDAgOiB2b3RlUHJldmlld0NvdW50O1xuICAgICAgICAgICAgICAgICAgdHJhY2tCeTogdHJhY2tCeVZvdGVJZFxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8c3RyZWFtLXBvbGwtdm90ZSBbdm90ZV09XCJ2b3RlXCI+PC9zdHJlYW0tcG9sbC12b3RlPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgICAgIHZvdGVDb3VudHNCeU9wdGlvbltvcHRpb24/LmlkID8/ICcnXSA+IHZvdGVQcmV2aWV3Q291bnQgJiZcbiAgICAgICAgICAgICAgY2FuUXVlcnlWb3Rlc1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX3BvbGwtb3B0aW9uX19zaG93LWFsbC12b3Rlcy1idXR0b25cIlxuICAgICAgICAgICAgdHJhbnNsYXRlXG4gICAgICAgICAgICAoY2xpY2spPVwib3B0aW9uVG9WaWV3ID0gb3B0aW9uXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBzdHJlYW1DaGF0LlNob3cgYWxsXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
import { Component, EventEmitter, Output, ViewChild, } from '@angular/core';
|
|
2
|
-
import { FormArray, FormControl, FormGroup, Validators } from '@angular/forms';
|
|
3
|
-
import { VotingVisibility } from 'stream-chat';
|
|
4
|
-
import { atLeastOneOption, maximumNumberOfVotes } from './validators';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "../../custom-templates.service";
|
|
7
|
-
import * as i2 from "../../chat-client.service";
|
|
8
|
-
import * as i3 from "../../notification.service";
|
|
9
|
-
import * as i4 from "@angular/common";
|
|
10
|
-
import * as i5 from "../../modal/modal.component";
|
|
11
|
-
import * as i6 from "../../notification-list/notification-list.component";
|
|
12
|
-
import * as i7 from "@angular/forms";
|
|
13
|
-
import * as i8 from "@ngx-translate/core";
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
*/
|
|
17
|
-
export class PollComposerComponent {
|
|
18
|
-
constructor(customTemplatesService, chatService, notificationService) {
|
|
19
|
-
this.customTemplatesService = customTemplatesService;
|
|
20
|
-
this.chatService = chatService;
|
|
21
|
-
this.notificationService = notificationService;
|
|
22
|
-
/**
|
|
23
|
-
* Emitted when a poll is created, the poll id is emitted
|
|
24
|
-
*/
|
|
25
|
-
this.pollCompose = new EventEmitter();
|
|
26
|
-
/**
|
|
27
|
-
* Emitted when the poll composing is cancelled
|
|
28
|
-
*/
|
|
29
|
-
this.cancel = new EventEmitter();
|
|
30
|
-
this.formGroup = new FormGroup({
|
|
31
|
-
name: new FormControl('', [Validators.required]),
|
|
32
|
-
options: new FormArray([new FormControl('')], [atLeastOneOption()]),
|
|
33
|
-
multiple_answers: new FormControl(false),
|
|
34
|
-
maximum_number_of_votes: new FormControl(null, [
|
|
35
|
-
Validators.min(2),
|
|
36
|
-
Validators.max(10),
|
|
37
|
-
]),
|
|
38
|
-
is_anonymous: new FormControl(false),
|
|
39
|
-
allow_user_suggested_options: new FormControl(false),
|
|
40
|
-
allow_answers: new FormControl(false),
|
|
41
|
-
});
|
|
42
|
-
this.isModalOpen = true;
|
|
43
|
-
this.formGroup
|
|
44
|
-
.get('maximum_number_of_votes')
|
|
45
|
-
?.addValidators([
|
|
46
|
-
maximumNumberOfVotes(this.formGroup.get('multiple_answers')),
|
|
47
|
-
]);
|
|
48
|
-
this.formGroup.get('maximum_number_of_votes')?.disable();
|
|
49
|
-
this.formGroup.valueChanges.subscribe((value) => {
|
|
50
|
-
if (value.multiple_answers &&
|
|
51
|
-
this.formGroup.get('maximum_number_of_votes')?.disabled) {
|
|
52
|
-
this.formGroup.get('maximum_number_of_votes')?.enable();
|
|
53
|
-
}
|
|
54
|
-
else if (!value.multiple_answers &&
|
|
55
|
-
this.formGroup.get('maximum_number_of_votes')?.enabled) {
|
|
56
|
-
this.formGroup.get('maximum_number_of_votes')?.disable();
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
optionChanged(index) {
|
|
61
|
-
const control = this.options.at(index);
|
|
62
|
-
const penultimateIndex = this.options.length - 2;
|
|
63
|
-
if (index === this.options.length - 1) {
|
|
64
|
-
this.addOption();
|
|
65
|
-
}
|
|
66
|
-
else if (index === penultimateIndex &&
|
|
67
|
-
control.value?.length === 0 &&
|
|
68
|
-
this.options.at(this.options.length - 1).value?.length === 0) {
|
|
69
|
-
this.removeLastOption();
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
get options() {
|
|
73
|
-
return this.formGroup.get('options');
|
|
74
|
-
}
|
|
75
|
-
addOption() {
|
|
76
|
-
const control = new FormControl('', []);
|
|
77
|
-
this.options.push(control);
|
|
78
|
-
}
|
|
79
|
-
removeLastOption() {
|
|
80
|
-
this.options.removeAt(this.options.length - 1);
|
|
81
|
-
}
|
|
82
|
-
getModalContext() {
|
|
83
|
-
return {
|
|
84
|
-
isOpen: this.isModalOpen,
|
|
85
|
-
isOpenChangeHandler: (isOpen) => {
|
|
86
|
-
if (!isOpen) {
|
|
87
|
-
this.cancel.emit();
|
|
88
|
-
}
|
|
89
|
-
this.isModalOpen = isOpen;
|
|
90
|
-
},
|
|
91
|
-
content: this.formContent,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
async createPoll() {
|
|
95
|
-
try {
|
|
96
|
-
const maxVotesControl = this.formGroup.get('maximum_number_of_votes');
|
|
97
|
-
const response = await this.chatService.chatClient.polls.createPoll({
|
|
98
|
-
name: this.formGroup.get('name').value,
|
|
99
|
-
options: this.formGroup
|
|
100
|
-
.get('options')
|
|
101
|
-
.value.filter((v) => !!v)
|
|
102
|
-
.map((v) => ({ text: v })),
|
|
103
|
-
enforce_unique_vote: !this.formGroup.get('multiple_answers')?.value,
|
|
104
|
-
max_votes_allowed: maxVotesControl?.value
|
|
105
|
-
? +maxVotesControl.value
|
|
106
|
-
: undefined,
|
|
107
|
-
voting_visibility: this.formGroup.get('is_anonymous')?.value
|
|
108
|
-
? VotingVisibility.anonymous
|
|
109
|
-
: VotingVisibility.public,
|
|
110
|
-
allow_user_suggested_options: !!this.formGroup.get('allow_user_suggested_options')?.value,
|
|
111
|
-
allow_answers: !!this.formGroup.get('allow_answers')?.value,
|
|
112
|
-
});
|
|
113
|
-
this.pollCompose.emit(response?.id);
|
|
114
|
-
}
|
|
115
|
-
catch (error) {
|
|
116
|
-
this.notificationService.addTemporaryNotification('streamChat.Failed to create poll');
|
|
117
|
-
throw error;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
PollComposerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollComposerComponent, deps: [{ token: i1.CustomTemplatesService }, { token: i2.ChatClientService }, { token: i3.NotificationService }], target: i0.ɵɵFactoryTarget.Component });
|
|
122
|
-
PollComposerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PollComposerComponent, selector: "stream-poll-composer", outputs: { pollCompose: "pollCompose", cancel: "cancel" }, viewQueries: [{ propertyName: "formContent", first: true, predicate: ["formContent"], descendants: true }], ngImport: i0, template: "<ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat-angular__create-poll-modal str-chat__create-poll-modal\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #formContent>\n <div\n class=\"str-chat__dialog str-chat__poll-creation-dialog\"\n data-testid=\"poll-creation-dialog\"\n >\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\">\n {{ \"streamChat.Create poll\" | translate }}\n </div>\n </div>\n <div class=\"str-chat__dialog__body\">\n <form [formGroup]=\"formGroup\" autocomplete=\"off\">\n <div\n class=\"str-chat__form__field str-chat__form__input-field str-chat__form__input-field--with-label\"\n [class.str-chat__form__input-field--has-error]=\"\n formGroup.get('name')?.errors && formGroup.get('name')?.touched\n \"\n >\n <label class=\"str-chat__form__field-label\" htmlFor=\"name\">\n {{ \"streamChat.Question\" | translate }}\n </label>\n <div class=\"str-chat__form__input-field__value\">\n <div\n class=\"str-chat__form-field-error str-chat__form__input-field__error\"\n >\n {{\n (formGroup.get(\"name\")?.errors?.required &&\n formGroup.get(\"name\")?.touched\n ? \"streamChat.Question is required\"\n : \"\"\n ) | translate\n }}\n </div>\n <input\n id=\"name\"\n type=\"text\"\n formControlName=\"name\"\n placeholder=\"{{ 'streamChat.Ask a question' | translate }}\"\n />\n </div>\n </div>\n <fieldset class=\"str-chat__form__field str-chat__form__input-fieldset\">\n <legend class=\"str-chat__form__field-label\">\n {{ \"streamChat.Options\" | translate }}\n </legend>\n <div\n class=\"str-chat__form-field-error str-chat__form__input-field__error\"\n >\n {{\n (formGroup.get(\"options\")?.errors?.atLeastOne &&\n formGroup.get(\"options\")?.touched\n ? \"streamChat.Provide at least one option\"\n : \"\"\n ) | translate\n }}\n </div>\n <ng-container formArrayName=\"options\">\n <div class=\"str-chat__form__input-fieldset__values\">\n <!-- eslint-disable @angular-eslint/template/use-track-by-function -->\n <ng-container\n *ngFor=\"let option of options.controls; let i = index\"\n >\n <!-- eslint-enable @angular-eslint/template/use-track-by-function -->\n <div class=\"str-chat__drag-and-drop-container__item\">\n <div class=\"str-chat__form__input-field\">\n <div class=\"str-chat__form__input-field__value\">\n <input\n id=\"option{{ i }}\"\n name=\"option{{ i }}\"\n type=\"text\"\n [formControl]=\"option\"\n (input)=\"optionChanged(i)\"\n placeholder=\"{{\n 'streamChat.Add an option' | translate\n }}\"\n />\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </fieldset>\n <ng-container\n *ngTemplateOutlet=\"\n switch;\n context: {\n name: 'multiple_answers',\n control: formGroup.get('multiple_answers'),\n label: 'streamChat.Multiple answers' | translate\n }\n \"\n ></ng-container>\n <div\n *ngIf=\"formGroup.get('multiple_answers')?.value\"\n class=\"str-chat__form__field str-chat__form__input-field str-chat__form__input-field--with-label\"\n [class.str-chat__form__input-field--has-error]=\"\n formGroup.get('maximum_number_of_votes')?.errors &&\n formGroup.get('maximum_number_of_votes')?.touched\n \"\n >\n <label class=\"str-chat__form__field-label\" htmlFor=\"name\">\n {{ \"streamChat.Maximum number of votes\" | translate }}\n </label>\n <div class=\"str-chat__form__input-field__value\">\n <div\n class=\"str-chat__form-field-error str-chat__form__input-field__error\"\n >\n {{\n (formGroup.get(\"maximum_number_of_votes\")?.errors &&\n formGroup.get(\"maximum_number_of_votes\")?.touched\n ? \"streamChat.Provide a value between {{ min }}\n and {{ max }}\" : \"\" ) | translate: { min: 2, max: 10 } }}\n </div>\n <input\n id=\"maximum_number_of_votes\"\n type=\"text\"\n formControlName=\"maximum_number_of_votes\"\n placeholder=\"{{ 'streamChat.Provide a value between ' \n + '{{ min }} and {{ max }}' | translate: { min: 2, max: 10 } }}\"\n />\n </div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n switch;\n context: {\n name: 'is_anonymous',\n control: formGroup.get('is_anonymous'),\n label: 'streamChat.Anonymous poll' | translate\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n switch;\n context: {\n name: 'allow_user_suggested_options',\n control: formGroup.get('allow_user_suggested_options'),\n label: 'streamChat.Allow option suggestions' | translate\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n switch;\n context: {\n name: 'allow_answers',\n control: formGroup.get('allow_answers'),\n label: 'streamChat.Allow comments' | translate\n }\n \"\n ></ng-container>\n </form>\n </div>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--cancel\"\n (click)=\"cancel.emit()\"\n type=\"button\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--submit\"\n (click)=\"createPoll()\"\n [disabled]=\"formGroup.invalid\"\n type=\"submit\"\n >\n {{ \"streamChat.Create\" | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #switch let-control=\"control\" let-label=\"label\" let-name=\"name\">\n <div class=\"str-chat__form__field str-chat__form__switch-field\">\n <label>\n <div class=\"str-chat__form__field str-chat__form__switch-field-content\">\n <div class=\"str-chat__form__field str-chat__form__switch-field__text\">\n {{ label | translate }}\n </div>\n </div>\n <input\n type=\"checkbox\"\n [checked]=\"control.value\"\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n />\n <div\n class=\"str-chat__form__switch-field__switch\"\n [class.str-chat__form__switch-field__switch--on]=\"control.value\"\n (click)=\"control.setValue(!control.value, { emitEvent: true })\"\n (keyup.enter)=\"control.setValue(!control.value, { emitEvent: true })\"\n >\n <div class=\"str-chat__form__switch-field__switch-handle\"></div>\n </div>\n </label>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { kind: "component", type: i6.NotificationListComponent, selector: "stream-notification-list" }, { kind: "directive", type: i7.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i7.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] });
|
|
123
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PollComposerComponent, decorators: [{
|
|
124
|
-
type: Component,
|
|
125
|
-
args: [{ selector: 'stream-poll-composer', template: "<ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: getModalContext()\n \"\n ></ng-container>\n</ng-container>\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat-angular__create-poll-modal str-chat__create-poll-modal\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n >\n </stream-modal>\n</ng-template>\n\n<ng-template #formContent>\n <div\n class=\"str-chat__dialog str-chat__poll-creation-dialog\"\n data-testid=\"poll-creation-dialog\"\n >\n <div class=\"str-chat__modal-header\">\n <div class=\"str-chat__modal-header__title\">\n {{ \"streamChat.Create poll\" | translate }}\n </div>\n </div>\n <div class=\"str-chat__dialog__body\">\n <form [formGroup]=\"formGroup\" autocomplete=\"off\">\n <div\n class=\"str-chat__form__field str-chat__form__input-field str-chat__form__input-field--with-label\"\n [class.str-chat__form__input-field--has-error]=\"\n formGroup.get('name')?.errors && formGroup.get('name')?.touched\n \"\n >\n <label class=\"str-chat__form__field-label\" htmlFor=\"name\">\n {{ \"streamChat.Question\" | translate }}\n </label>\n <div class=\"str-chat__form__input-field__value\">\n <div\n class=\"str-chat__form-field-error str-chat__form__input-field__error\"\n >\n {{\n (formGroup.get(\"name\")?.errors?.required &&\n formGroup.get(\"name\")?.touched\n ? \"streamChat.Question is required\"\n : \"\"\n ) | translate\n }}\n </div>\n <input\n id=\"name\"\n type=\"text\"\n formControlName=\"name\"\n placeholder=\"{{ 'streamChat.Ask a question' | translate }}\"\n />\n </div>\n </div>\n <fieldset class=\"str-chat__form__field str-chat__form__input-fieldset\">\n <legend class=\"str-chat__form__field-label\">\n {{ \"streamChat.Options\" | translate }}\n </legend>\n <div\n class=\"str-chat__form-field-error str-chat__form__input-field__error\"\n >\n {{\n (formGroup.get(\"options\")?.errors?.atLeastOne &&\n formGroup.get(\"options\")?.touched\n ? \"streamChat.Provide at least one option\"\n : \"\"\n ) | translate\n }}\n </div>\n <ng-container formArrayName=\"options\">\n <div class=\"str-chat__form__input-fieldset__values\">\n <!-- eslint-disable @angular-eslint/template/use-track-by-function -->\n <ng-container\n *ngFor=\"let option of options.controls; let i = index\"\n >\n <!-- eslint-enable @angular-eslint/template/use-track-by-function -->\n <div class=\"str-chat__drag-and-drop-container__item\">\n <div class=\"str-chat__form__input-field\">\n <div class=\"str-chat__form__input-field__value\">\n <input\n id=\"option{{ i }}\"\n name=\"option{{ i }}\"\n type=\"text\"\n [formControl]=\"option\"\n (input)=\"optionChanged(i)\"\n placeholder=\"{{\n 'streamChat.Add an option' | translate\n }}\"\n />\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </fieldset>\n <ng-container\n *ngTemplateOutlet=\"\n switch;\n context: {\n name: 'multiple_answers',\n control: formGroup.get('multiple_answers'),\n label: 'streamChat.Multiple answers' | translate\n }\n \"\n ></ng-container>\n <div\n *ngIf=\"formGroup.get('multiple_answers')?.value\"\n class=\"str-chat__form__field str-chat__form__input-field str-chat__form__input-field--with-label\"\n [class.str-chat__form__input-field--has-error]=\"\n formGroup.get('maximum_number_of_votes')?.errors &&\n formGroup.get('maximum_number_of_votes')?.touched\n \"\n >\n <label class=\"str-chat__form__field-label\" htmlFor=\"name\">\n {{ \"streamChat.Maximum number of votes\" | translate }}\n </label>\n <div class=\"str-chat__form__input-field__value\">\n <div\n class=\"str-chat__form-field-error str-chat__form__input-field__error\"\n >\n {{\n (formGroup.get(\"maximum_number_of_votes\")?.errors &&\n formGroup.get(\"maximum_number_of_votes\")?.touched\n ? \"streamChat.Provide a value between {{ min }}\n and {{ max }}\" : \"\" ) | translate: { min: 2, max: 10 } }}\n </div>\n <input\n id=\"maximum_number_of_votes\"\n type=\"text\"\n formControlName=\"maximum_number_of_votes\"\n placeholder=\"{{ 'streamChat.Provide a value between ' \n + '{{ min }} and {{ max }}' | translate: { min: 2, max: 10 } }}\"\n />\n </div>\n </div>\n <ng-container\n *ngTemplateOutlet=\"\n switch;\n context: {\n name: 'is_anonymous',\n control: formGroup.get('is_anonymous'),\n label: 'streamChat.Anonymous poll' | translate\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n switch;\n context: {\n name: 'allow_user_suggested_options',\n control: formGroup.get('allow_user_suggested_options'),\n label: 'streamChat.Allow option suggestions' | translate\n }\n \"\n ></ng-container>\n <ng-container\n *ngTemplateOutlet=\"\n switch;\n context: {\n name: 'allow_answers',\n control: formGroup.get('allow_answers'),\n label: 'streamChat.Allow comments' | translate\n }\n \"\n ></ng-container>\n </form>\n </div>\n <stream-notification-list></stream-notification-list>\n <div class=\"str-chat__dialog__controls\">\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--cancel\"\n (click)=\"cancel.emit()\"\n type=\"button\"\n >\n {{ \"streamChat.Cancel\" | translate }}\n </button>\n <button\n class=\"str-chat__dialog__controls-button str-chat__dialog__controls-button--submit\"\n (click)=\"createPoll()\"\n [disabled]=\"formGroup.invalid\"\n type=\"submit\"\n >\n {{ \"streamChat.Create\" | translate }}\n </button>\n </div>\n </div>\n</ng-template>\n\n<ng-template #switch let-control=\"control\" let-label=\"label\" let-name=\"name\">\n <div class=\"str-chat__form__field str-chat__form__switch-field\">\n <label>\n <div class=\"str-chat__form__field str-chat__form__switch-field-content\">\n <div class=\"str-chat__form__field str-chat__form__switch-field__text\">\n {{ label | translate }}\n </div>\n </div>\n <input\n type=\"checkbox\"\n [checked]=\"control.value\"\n id=\"{{ name }}\"\n name=\"{{ name }}\"\n />\n <div\n class=\"str-chat__form__switch-field__switch\"\n [class.str-chat__form__switch-field__switch--on]=\"control.value\"\n (click)=\"control.setValue(!control.value, { emitEvent: true })\"\n (keyup.enter)=\"control.setValue(!control.value, { emitEvent: true })\"\n >\n <div class=\"str-chat__form__switch-field__switch-handle\"></div>\n </div>\n </label>\n </div>\n</ng-template>\n" }]
|
|
126
|
-
}], ctorParameters: function () { return [{ type: i1.CustomTemplatesService }, { type: i2.ChatClientService }, { type: i3.NotificationService }]; }, propDecorators: { pollCompose: [{
|
|
127
|
-
type: Output
|
|
128
|
-
}], cancel: [{
|
|
129
|
-
type: Output
|
|
130
|
-
}], formContent: [{
|
|
131
|
-
type: ViewChild,
|
|
132
|
-
args: ['formContent']
|
|
133
|
-
}] } });
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9sbC1jb21wb3Nlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvcG9sbHMvcG9sbC1jb21wb3Nlci9wb2xsLWNvbXBvc2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9wb2xscy9wb2xsLWNvbXBvc2VyL3BvbGwtY29tcG9zZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBSy9DLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxvQkFBb0IsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7Ozs7OztBQUV0RTs7R0FFRztBQU1ILE1BQU0sT0FBTyxxQkFBcUI7SUEyQmhDLFlBQ1csc0JBQThDLEVBQy9DLFdBQThCLEVBQzlCLG1CQUF3QztRQUZ2QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQy9DLGdCQUFXLEdBQVgsV0FBVyxDQUFtQjtRQUM5Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBN0JsRDs7V0FFRztRQUNPLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNuRDs7V0FFRztRQUNPLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQzVDLGNBQVMsR0FBRyxJQUFJLFNBQVMsQ0FBQztZQUN4QixJQUFJLEVBQUUsSUFBSSxXQUFXLENBQUMsRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELE9BQU8sRUFBRSxJQUFJLFNBQVMsQ0FDcEIsQ0FBQyxJQUFJLFdBQVcsQ0FBZ0IsRUFBRSxDQUFDLENBQUMsRUFDcEMsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQ3JCO1lBQ0QsZ0JBQWdCLEVBQUUsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3hDLHVCQUF1QixFQUFFLElBQUksV0FBVyxDQUFDLElBQUksRUFBRTtnQkFDN0MsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2FBQ25CLENBQUM7WUFDRixZQUFZLEVBQUUsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3BDLDRCQUE0QixFQUFFLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQztZQUNwRCxhQUFhLEVBQUUsSUFBSSxXQUFXLENBQUMsS0FBSyxDQUFDO1NBQ3RDLENBQUMsQ0FBQztRQUNILGdCQUFXLEdBQUcsSUFBSSxDQUFDO1FBUWpCLElBQUksQ0FBQyxTQUFTO2FBQ1gsR0FBRyxDQUFDLHlCQUF5QixDQUFDO1lBQy9CLEVBQUUsYUFBYSxDQUFDO1lBQ2Qsb0JBQW9CLENBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUF5QixDQUMvRDtTQUNGLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDOUMsSUFDRSxLQUFLLENBQUMsZ0JBQWdCO2dCQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLFFBQVEsRUFDdkQ7Z0JBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQzthQUN6RDtpQkFBTSxJQUNMLENBQUMsS0FBSyxDQUFDLGdCQUFnQjtnQkFDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMseUJBQXlCLENBQUMsRUFBRSxPQUFPLEVBQ3REO2dCQUNBLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLHlCQUF5QixDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUM7YUFDMUQ7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsS0FBYTtRQUN6QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNqRCxJQUFJLEtBQUssS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO2FBQU0sSUFDTCxLQUFLLEtBQUssZ0JBQWdCO1lBQzFCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLEVBQzVEO1lBQ0EsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBRWxDLENBQUM7SUFDSixDQUFDO0lBRUQsU0FBUztRQUNQLE1BQU0sT0FBTyxHQUFHLElBQUksV0FBVyxDQUFnQixFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRCxlQUFlO1FBQ2IsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVztZQUN4QixtQkFBbUIsRUFBRSxDQUFDLE1BQWUsRUFBRSxFQUFFO2dCQUN2QyxJQUFJLENBQUMsTUFBTSxFQUFFO29CQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7aUJBQ3BCO2dCQUNELElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO1lBQzVCLENBQUM7WUFDRCxPQUFPLEVBQUUsSUFBSSxDQUFDLFdBQVc7U0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLLENBQUMsVUFBVTtRQUNkLElBQUk7WUFDRixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1lBQ3RFLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztnQkFDbEUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBRSxDQUFDLEtBQU07Z0JBQ3hDLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUztxQkFDcEIsR0FBRyxDQUFDLFNBQVMsQ0FBRTtxQkFDZixLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN4QixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBRSxFQUFFLENBQUMsQ0FBQztnQkFDN0IsbUJBQW1CLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLEtBQUs7Z0JBQ25FLGlCQUFpQixFQUFFLGVBQWUsRUFBRSxLQUFLO29CQUN2QyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsS0FBSztvQkFDeEIsQ0FBQyxDQUFDLFNBQVM7Z0JBQ2IsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLEVBQUUsS0FBSztvQkFDMUQsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLFNBQVM7b0JBQzVCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNO2dCQUMzQiw0QkFBNEIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQ2hELDhCQUE4QixDQUMvQixFQUFFLEtBQUs7Z0JBQ1IsYUFBYSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLO2FBQzVELENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztTQUNyQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLG1CQUFtQixDQUFDLHdCQUF3QixDQUMvQyxrQ0FBa0MsQ0FDbkMsQ0FBQztZQUNGLE1BQU0sS0FBSyxDQUFDO1NBQ2I7SUFDSCxDQUFDOztrSEE3SFUscUJBQXFCO3NHQUFyQixxQkFBcUIsbU9DdkJsQyx1dFFBaU9BOzJGRDFNYSxxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0Usc0JBQXNCOytLQVF0QixXQUFXO3NCQUFwQixNQUFNO2dCQUlHLE1BQU07c0JBQWYsTUFBTTtnQkFpQjJCLFdBQVc7c0JBQTVDLFNBQVM7dUJBQUMsYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgVm90aW5nVmlzaWJpbGl0eSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTW9kYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBhdExlYXN0T25lT3B0aW9uLCBtYXhpbXVtTnVtYmVyT2ZWb3RlcyB9IGZyb20gJy4vdmFsaWRhdG9ycyc7XG5cbi8qKlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLXBvbGwtY29tcG9zZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcG9sbC1jb21wb3Nlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIFBvbGxDb21wb3NlckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYSBwb2xsIGlzIGNyZWF0ZWQsIHRoZSBwb2xsIGlkIGlzIGVtaXR0ZWRcbiAgICovXG4gIEBPdXRwdXQoKSBwb2xsQ29tcG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBwb2xsIGNvbXBvc2luZyBpcyBjYW5jZWxsZWRcbiAgICovXG4gIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gIGZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbCgnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdKSxcbiAgICBvcHRpb25zOiBuZXcgRm9ybUFycmF5PEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+PihcbiAgICAgIFtuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4oJycpXSxcbiAgICAgIFthdExlYXN0T25lT3B0aW9uKCldXG4gICAgKSxcbiAgICBtdWx0aXBsZV9hbnN3ZXJzOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxuICAgIG1heGltdW1fbnVtYmVyX29mX3ZvdGVzOiBuZXcgRm9ybUNvbnRyb2wobnVsbCwgW1xuICAgICAgVmFsaWRhdG9ycy5taW4oMiksXG4gICAgICBWYWxpZGF0b3JzLm1heCgxMCksXG4gICAgXSksXG4gICAgaXNfYW5vbnltb3VzOiBuZXcgRm9ybUNvbnRyb2woZmFsc2UpLFxuICAgIGFsbG93X3VzZXJfc3VnZ2VzdGVkX29wdGlvbnM6IG5ldyBGb3JtQ29udHJvbChmYWxzZSksXG4gICAgYWxsb3dfYW5zd2VyczogbmV3IEZvcm1Db250cm9sKGZhbHNlKSxcbiAgfSk7XG4gIGlzTW9kYWxPcGVuID0gdHJ1ZTtcbiAgQFZpZXdDaGlsZCgnZm9ybUNvbnRlbnQnKSBwcml2YXRlIGZvcm1Db250ZW50ITogVGVtcGxhdGVSZWY8dm9pZD47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcmVhZG9ubHkgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICBwcml2YXRlIGNoYXRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5mb3JtR3JvdXBcbiAgICAgIC5nZXQoJ21heGltdW1fbnVtYmVyX29mX3ZvdGVzJylcbiAgICAgID8uYWRkVmFsaWRhdG9ycyhbXG4gICAgICAgIG1heGltdW1OdW1iZXJPZlZvdGVzKFxuICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnbXVsdGlwbGVfYW5zd2VycycpIGFzIEZvcm1Db250cm9sPGJvb2xlYW4+XG4gICAgICAgICksXG4gICAgICBdKTtcbiAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ21heGltdW1fbnVtYmVyX29mX3ZvdGVzJyk/LmRpc2FibGUoKTtcbiAgICB0aGlzLmZvcm1Hcm91cC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICB2YWx1ZS5tdWx0aXBsZV9hbnN3ZXJzICYmXG4gICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldCgnbWF4aW11bV9udW1iZXJfb2Zfdm90ZXMnKT8uZGlzYWJsZWRcbiAgICAgICkge1xuICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoJ21heGltdW1fbnVtYmVyX29mX3ZvdGVzJyk/LmVuYWJsZSgpO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgIXZhbHVlLm11bHRpcGxlX2Fuc3dlcnMgJiZcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdtYXhpbXVtX251bWJlcl9vZl92b3RlcycpPy5lbmFibGVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5mb3JtR3JvdXAuZ2V0KCdtYXhpbXVtX251bWJlcl9vZl92b3RlcycpPy5kaXNhYmxlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvcHRpb25DaGFuZ2VkKGluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5vcHRpb25zLmF0KGluZGV4KTtcbiAgICBjb25zdCBwZW51bHRpbWF0ZUluZGV4ID0gdGhpcy5vcHRpb25zLmxlbmd0aCAtIDI7XG4gICAgaWYgKGluZGV4ID09PSB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5hZGRPcHRpb24oKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgaW5kZXggPT09IHBlbnVsdGltYXRlSW5kZXggJiZcbiAgICAgIGNvbnRyb2wudmFsdWU/Lmxlbmd0aCA9PT0gMCAmJlxuICAgICAgdGhpcy5vcHRpb25zLmF0KHRoaXMub3B0aW9ucy5sZW5ndGggLSAxKS52YWx1ZT8ubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aGlzLnJlbW92ZUxhc3RPcHRpb24oKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3B0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXAuZ2V0KCdvcHRpb25zJykgYXMgRm9ybUFycmF5PFxuICAgICAgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD5cbiAgICA+O1xuICB9XG5cbiAgYWRkT3B0aW9uKCkge1xuICAgIGNvbnN0IGNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4oJycsIFtdKTtcbiAgICB0aGlzLm9wdGlvbnMucHVzaChjb250cm9sKTtcbiAgfVxuXG4gIHJlbW92ZUxhc3RPcHRpb24oKSB7XG4gICAgdGhpcy5vcHRpb25zLnJlbW92ZUF0KHRoaXMub3B0aW9ucy5sZW5ndGggLSAxKTtcbiAgfVxuXG4gIGdldE1vZGFsQ29udGV4dCgpOiBNb2RhbENvbnRleHQge1xuICAgIHJldHVybiB7XG4gICAgICBpc09wZW46IHRoaXMuaXNNb2RhbE9wZW4sXG4gICAgICBpc09wZW5DaGFuZ2VIYW5kbGVyOiAoaXNPcGVuOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmICghaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuaXNNb2RhbE9wZW4gPSBpc09wZW47XG4gICAgICB9LFxuICAgICAgY29udGVudDogdGhpcy5mb3JtQ29udGVudCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgY3JlYXRlUG9sbCgpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgbWF4Vm90ZXNDb250cm9sID0gdGhpcy5mb3JtR3JvdXAuZ2V0KCdtYXhpbXVtX251bWJlcl9vZl92b3RlcycpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNoYXRTZXJ2aWNlLmNoYXRDbGllbnQucG9sbHMuY3JlYXRlUG9sbCh7XG4gICAgICAgIG5hbWU6IHRoaXMuZm9ybUdyb3VwLmdldCgnbmFtZScpIS52YWx1ZSEsXG4gICAgICAgIG9wdGlvbnM6IHRoaXMuZm9ybUdyb3VwXG4gICAgICAgICAgLmdldCgnb3B0aW9ucycpIVxuICAgICAgICAgIC52YWx1ZS5maWx0ZXIoKHYpID0+ICEhdilcbiAgICAgICAgICAubWFwKCh2KSA9PiAoeyB0ZXh0OiB2ISB9KSksXG4gICAgICAgIGVuZm9yY2VfdW5pcXVlX3ZvdGU6ICF0aGlzLmZvcm1Hcm91cC5nZXQoJ211bHRpcGxlX2Fuc3dlcnMnKT8udmFsdWUsXG4gICAgICAgIG1heF92b3Rlc19hbGxvd2VkOiBtYXhWb3Rlc0NvbnRyb2w/LnZhbHVlXG4gICAgICAgICAgPyArbWF4Vm90ZXNDb250cm9sLnZhbHVlXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIHZvdGluZ192aXNpYmlsaXR5OiB0aGlzLmZvcm1Hcm91cC5nZXQoJ2lzX2Fub255bW91cycpPy52YWx1ZVxuICAgICAgICAgID8gVm90aW5nVmlzaWJpbGl0eS5hbm9ueW1vdXNcbiAgICAgICAgICA6IFZvdGluZ1Zpc2liaWxpdHkucHVibGljLFxuICAgICAgICBhbGxvd191c2VyX3N1Z2dlc3RlZF9vcHRpb25zOiAhIXRoaXMuZm9ybUdyb3VwLmdldChcbiAgICAgICAgICAnYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9ucydcbiAgICAgICAgKT8udmFsdWUsXG4gICAgICAgIGFsbG93X2Fuc3dlcnM6ICEhdGhpcy5mb3JtR3JvdXAuZ2V0KCdhbGxvd19hbnN3ZXJzJyk/LnZhbHVlLFxuICAgICAgfSk7XG4gICAgICB0aGlzLnBvbGxDb21wb3NlLmVtaXQocmVzcG9uc2U/LmlkKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmFkZFRlbXBvcmFyeU5vdGlmaWNhdGlvbihcbiAgICAgICAgJ3N0cmVhbUNoYXQuRmFpbGVkIHRvIGNyZWF0ZSBwb2xsJ1xuICAgICAgKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufVxuIiwiPG5nLWNvbnRhaW5lcj5cbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tb2RhbFRlbXBsYXRlJCB8IGFzeW5jKSB8fCBkZWZhdWx0TW9kYWw7XG4gICAgICBjb250ZXh0OiBnZXRNb2RhbENvbnRleHQoKVxuICAgIFwiXG4gID48L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGVcbiAgI2RlZmF1bHRNb2RhbFxuICBsZXQtaXNPcGVuPVwiaXNPcGVuXCJcbiAgbGV0LWlzT3BlbkNoYW5nZUhhbmRsZXI9XCJpc09wZW5DaGFuZ2VIYW5kbGVyXCJcbiAgbGV0LWNvbnRlbnQ9XCJjb250ZW50XCJcbj5cbiAgPHN0cmVhbS1tb2RhbFxuICAgIGNsYXNzPVwic3RyLWNoYXQtYW5ndWxhcl9fY3JlYXRlLXBvbGwtbW9kYWwgc3RyLWNoYXRfX2NyZWF0ZS1wb2xsLW1vZGFsXCJcbiAgICBbaXNPcGVuXT1cImlzT3BlblwiXG4gICAgW2NvbnRlbnRdPVwiY29udGVudFwiXG4gICAgKGlzT3BlbkNoYW5nZSk9XCJpc09wZW5DaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICA+XG4gIDwvc3RyZWFtLW1vZGFsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmb3JtQ29udGVudD5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZyBzdHItY2hhdF9fcG9sbC1jcmVhdGlvbi1kaWFsb2dcIlxuICAgIGRhdGEtdGVzdGlkPVwicG9sbC1jcmVhdGlvbi1kaWFsb2dcIlxuICA+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19tb2RhbC1oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWwtaGVhZGVyX190aXRsZVwiPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuQ3JlYXRlIHBvbGxcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2JvZHlcIj5cbiAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19mb3JtX19maWVsZCBzdHItY2hhdF9fZm9ybV9faW5wdXQtZmllbGQgc3RyLWNoYXRfX2Zvcm1fX2lucHV0LWZpZWxkLS13aXRoLWxhYmVsXCJcbiAgICAgICAgICBbY2xhc3Muc3RyLWNoYXRfX2Zvcm1fX2lucHV0LWZpZWxkLS1oYXMtZXJyb3JdPVwiXG4gICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCduYW1lJyk/LmVycm9ycyAmJiBmb3JtR3JvdXAuZ2V0KCduYW1lJyk/LnRvdWNoZWRcbiAgICAgICAgICBcIlxuICAgICAgICA+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3RyLWNoYXRfX2Zvcm1fX2ZpZWxkLWxhYmVsXCIgaHRtbEZvcj1cIm5hbWVcIj5cbiAgICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5RdWVzdGlvblwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2Zvcm1fX2lucHV0LWZpZWxkX192YWx1ZVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19mb3JtLWZpZWxkLWVycm9yIHN0ci1jaGF0X19mb3JtX19pbnB1dC1maWVsZF9fZXJyb3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIChmb3JtR3JvdXAuZ2V0KFwibmFtZVwiKT8uZXJyb3JzPy5yZXF1aXJlZCAmJlxuICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoXCJuYW1lXCIpPy50b3VjaGVkXG4gICAgICAgICAgICAgICAgICA/IFwic3RyZWFtQ2hhdC5RdWVzdGlvbiBpcyByZXF1aXJlZFwiXG4gICAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgICApIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICBpZD1cIm5hbWVcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cInt7ICdzdHJlYW1DaGF0LkFzayBhIHF1ZXN0aW9uJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPVwic3RyLWNoYXRfX2Zvcm1fX2ZpZWxkIHN0ci1jaGF0X19mb3JtX19pbnB1dC1maWVsZHNldFwiPlxuICAgICAgICAgIDxsZWdlbmQgY2xhc3M9XCJzdHItY2hhdF9fZm9ybV9fZmllbGQtbGFiZWxcIj5cbiAgICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5PcHRpb25zXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICA8L2xlZ2VuZD5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19mb3JtLWZpZWxkLWVycm9yIHN0ci1jaGF0X19mb3JtX19pbnB1dC1maWVsZF9fZXJyb3JcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7XG4gICAgICAgICAgICAgIChmb3JtR3JvdXAuZ2V0KFwib3B0aW9uc1wiKT8uZXJyb3JzPy5hdExlYXN0T25lICYmXG4gICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoXCJvcHRpb25zXCIpPy50b3VjaGVkXG4gICAgICAgICAgICAgICAgPyBcInN0cmVhbUNoYXQuUHJvdmlkZSBhdCBsZWFzdCBvbmUgb3B0aW9uXCJcbiAgICAgICAgICAgICAgICA6IFwiXCJcbiAgICAgICAgICAgICAgKSB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJvcHRpb25zXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2Zvcm1fX2lucHV0LWZpZWxkc2V0X192YWx1ZXNcIj5cbiAgICAgICAgICAgICAgPCEtLSBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvdXNlLXRyYWNrLWJ5LWZ1bmN0aW9uIC0tPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBvcHRpb25zLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDwhLS0gZXNsaW50LWVuYWJsZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvdXNlLXRyYWNrLWJ5LWZ1bmN0aW9uIC0tPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZHJhZy1hbmQtZHJvcC1jb250YWluZXJfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZm9ybV9faW5wdXQtZmllbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19mb3JtX19pbnB1dC1maWVsZF9fdmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwib3B0aW9ue3sgaSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lPVwib3B0aW9ue3sgaSB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvcHRpb25DaGFuZ2VkKGkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwie3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmVhbUNoYXQuQWRkIGFuIG9wdGlvbicgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIHN3aXRjaDtcbiAgICAgICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICAgbmFtZTogJ211bHRpcGxlX2Fuc3dlcnMnLFxuICAgICAgICAgICAgICBjb250cm9sOiBmb3JtR3JvdXAuZ2V0KCdtdWx0aXBsZV9hbnN3ZXJzJyksXG4gICAgICAgICAgICAgIGxhYmVsOiAnc3RyZWFtQ2hhdC5NdWx0aXBsZSBhbnN3ZXJzJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICpuZ0lmPVwiZm9ybUdyb3VwLmdldCgnbXVsdGlwbGVfYW5zd2VycycpPy52YWx1ZVwiXG4gICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fZm9ybV9fZmllbGQgc3RyLWNoYXRfX2Zvcm1fX2lucHV0LWZpZWxkIHN0ci1jaGF0X19mb3JtX19pbnB1dC1maWVsZC0td2l0aC1sYWJlbFwiXG4gICAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19mb3JtX19pbnB1dC1maWVsZC0taGFzLWVycm9yXT1cIlxuICAgICAgICAgICAgZm9ybUdyb3VwLmdldCgnbWF4aW11bV9udW1iZXJfb2Zfdm90ZXMnKT8uZXJyb3JzICYmXG4gICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KCdtYXhpbXVtX251bWJlcl9vZl92b3RlcycpPy50b3VjaGVkXG4gICAgICAgICAgXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN0ci1jaGF0X19mb3JtX19maWVsZC1sYWJlbFwiIGh0bWxGb3I9XCJuYW1lXCI+XG4gICAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuTWF4aW11bSBudW1iZXIgb2Ygdm90ZXNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19mb3JtX19pbnB1dC1maWVsZF9fdmFsdWVcIj5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fZm9ybS1maWVsZC1lcnJvciBzdHItY2hhdF9fZm9ybV9faW5wdXQtZmllbGRfX2Vycm9yXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICAoZm9ybUdyb3VwLmdldChcIm1heGltdW1fbnVtYmVyX29mX3ZvdGVzXCIpPy5lcnJvcnMgJiZcbiAgICAgICAgICAgICAgICBmb3JtR3JvdXAuZ2V0KFwibWF4aW11bV9udW1iZXJfb2Zfdm90ZXNcIik/LnRvdWNoZWRcbiAgICAgICAgICAgICAgICAgID8gXCJzdHJlYW1DaGF0LlByb3ZpZGUgYSB2YWx1ZSBiZXR3ZWVuIHt7IG1pbiB9fVxuICAgICAgICAgICAgICBhbmQge3sgbWF4IH19XCIgOiBcIlwiICkgfCB0cmFuc2xhdGU6IHsgbWluOiAyLCBtYXg6IDEwIH0gfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgIGlkPVwibWF4aW11bV9udW1iZXJfb2Zfdm90ZXNcIlxuICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1heGltdW1fbnVtYmVyX29mX3ZvdGVzXCJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJ7eyAnc3RyZWFtQ2hhdC5Qcm92aWRlIGEgdmFsdWUgYmV0d2VlbiAnIFxuICAgICAgICAgICAgICArICd7eyBtaW4gfX0gYW5kIHt7IG1heCB9fScgfCB0cmFuc2xhdGU6IHsgbWluOiAyLCBtYXg6IDEwIH0gfX1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgc3dpdGNoO1xuICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICBuYW1lOiAnaXNfYW5vbnltb3VzJyxcbiAgICAgICAgICAgICAgY29udHJvbDogZm9ybUdyb3VwLmdldCgnaXNfYW5vbnltb3VzJyksXG4gICAgICAgICAgICAgIGxhYmVsOiAnc3RyZWFtQ2hhdC5Bbm9ueW1vdXMgcG9sbCcgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgc3dpdGNoO1xuICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICBuYW1lOiAnYWxsb3dfdXNlcl9zdWdnZXN0ZWRfb3B0aW9ucycsXG4gICAgICAgICAgICAgIGNvbnRyb2w6IGZvcm1Hcm91cC5nZXQoJ2FsbG93X3VzZXJfc3VnZ2VzdGVkX29wdGlvbnMnKSxcbiAgICAgICAgICAgICAgbGFiZWw6ICdzdHJlYW1DaGF0LkFsbG93IG9wdGlvbiBzdWdnZXN0aW9ucycgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBcIlxuICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgc3dpdGNoO1xuICAgICAgICAgICAgY29udGV4dDoge1xuICAgICAgICAgICAgICBuYW1lOiAnYWxsb3dfYW5zd2VycycsXG4gICAgICAgICAgICAgIGNvbnRyb2w6IGZvcm1Hcm91cC5nZXQoJ2FsbG93X2Fuc3dlcnMnKSxcbiAgICAgICAgICAgICAgbGFiZWw6ICdzdHJlYW1DaGF0LkFsbG93IGNvbW1lbnRzJyB8IHRyYW5zbGF0ZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZm9ybT5cbiAgICA8L2Rpdj5cbiAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0Pjwvc3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0PlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZGlhbG9nX19jb250cm9sc1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzLWJ1dHRvbiBzdHItY2hhdF9fZGlhbG9nX19jb250cm9scy1idXR0b24tLWNhbmNlbFwiXG4gICAgICAgIChjbGljayk9XCJjYW5jZWwuZW1pdCgpXCJcbiAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICA+XG4gICAgICAgIHt7IFwic3RyZWFtQ2hhdC5DYW5jZWxcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgPC9idXR0b24+XG4gICAgICA8YnV0dG9uXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2RpYWxvZ19fY29udHJvbHMtYnV0dG9uIHN0ci1jaGF0X19kaWFsb2dfX2NvbnRyb2xzLWJ1dHRvbi0tc3VibWl0XCJcbiAgICAgICAgKGNsaWNrKT1cImNyZWF0ZVBvbGwoKVwiXG4gICAgICAgIFtkaXNhYmxlZF09XCJmb3JtR3JvdXAuaW52YWxpZFwiXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgPlxuICAgICAgICB7eyBcInN0cmVhbUNoYXQuQ3JlYXRlXCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgIDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjc3dpdGNoIGxldC1jb250cm9sPVwiY29udHJvbFwiIGxldC1sYWJlbD1cImxhYmVsXCIgbGV0LW5hbWU9XCJuYW1lXCI+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZm9ybV9fZmllbGQgc3RyLWNoYXRfX2Zvcm1fX3N3aXRjaC1maWVsZFwiPlxuICAgIDxsYWJlbD5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZm9ybV9fZmllbGQgc3RyLWNoYXRfX2Zvcm1fX3N3aXRjaC1maWVsZC1jb250ZW50XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZm9ybV9fZmllbGQgc3RyLWNoYXRfX2Zvcm1fX3N3aXRjaC1maWVsZF9fdGV4dFwiPlxuICAgICAgICAgIHt7IGxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXRcbiAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgW2NoZWNrZWRdPVwiY29udHJvbC52YWx1ZVwiXG4gICAgICAgIGlkPVwie3sgbmFtZSB9fVwiXG4gICAgICAgIG5hbWU9XCJ7eyBuYW1lIH19XCJcbiAgICAgIC8+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2Zvcm1fX3N3aXRjaC1maWVsZF9fc3dpdGNoXCJcbiAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19mb3JtX19zd2l0Y2gtZmllbGRfX3N3aXRjaC0tb25dPVwiY29udHJvbC52YWx1ZVwiXG4gICAgICAgIChjbGljayk9XCJjb250cm9sLnNldFZhbHVlKCFjb250cm9sLnZhbHVlLCB7IGVtaXRFdmVudDogdHJ1ZSB9KVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJjb250cm9sLnNldFZhbHVlKCFjb250cm9sLnZhbHVlLCB7IGVtaXRFdmVudDogdHJ1ZSB9KVwiXG4gICAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fZm9ybV9fc3dpdGNoLWZpZWxkX19zd2l0Y2gtaGFuZGxlXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { AutocompleteTextareaComponent } from './message-input/autocomplete-textarea/autocomplete-textarea.component';
|
|
4
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
5
|
-
import { MentionModule } from 'angular-mentions';
|
|
6
|
-
import { StreamAvatarModule } from './stream-avatar.module';
|
|
7
|
-
import { textareaInjectionToken } from './injection-tokens';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
export class StreamAutocompleteTextareaModule {
|
|
10
|
-
}
|
|
11
|
-
StreamAutocompleteTextareaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamAutocompleteTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
12
|
-
StreamAutocompleteTextareaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: StreamAutocompleteTextareaModule, declarations: [AutocompleteTextareaComponent], imports: [CommonModule, TranslateModule, MentionModule, StreamAvatarModule], exports: [AutocompleteTextareaComponent] });
|
|
13
|
-
StreamAutocompleteTextareaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamAutocompleteTextareaModule, providers: [
|
|
14
|
-
{
|
|
15
|
-
provide: textareaInjectionToken,
|
|
16
|
-
useValue: AutocompleteTextareaComponent,
|
|
17
|
-
},
|
|
18
|
-
], imports: [CommonModule, TranslateModule, MentionModule, StreamAvatarModule] });
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamAutocompleteTextareaModule, decorators: [{
|
|
20
|
-
type: NgModule,
|
|
21
|
-
args: [{
|
|
22
|
-
declarations: [AutocompleteTextareaComponent],
|
|
23
|
-
imports: [CommonModule, TranslateModule, MentionModule, StreamAvatarModule],
|
|
24
|
-
exports: [AutocompleteTextareaComponent],
|
|
25
|
-
providers: [
|
|
26
|
-
{
|
|
27
|
-
provide: textareaInjectionToken,
|
|
28
|
-
useValue: AutocompleteTextareaComponent,
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
}]
|
|
32
|
-
}] });
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWF1dG9jb21wbGV0ZS10ZXh0YXJlYS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvc3RyZWFtLWF1dG9jb21wbGV0ZS10ZXh0YXJlYS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sdUVBQXVFLENBQUM7QUFDdEgsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFhNUQsTUFBTSxPQUFPLGdDQUFnQzs7NkhBQWhDLGdDQUFnQzs4SEFBaEMsZ0NBQWdDLGlCQVY1Qiw2QkFBNkIsYUFDbEMsWUFBWSxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLGFBQ2hFLDZCQUE2Qjs4SEFRNUIsZ0NBQWdDLGFBUGhDO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsc0JBQXNCO1lBQy9CLFFBQVEsRUFBRSw2QkFBNkI7U0FDeEM7S0FDRixZQVBTLFlBQVksRUFBRSxlQUFlLEVBQUUsYUFBYSxFQUFFLGtCQUFrQjsyRkFTL0QsZ0NBQWdDO2tCQVg1QyxRQUFRO21CQUFDO29CQUNSLFlBQVksRUFBRSxDQUFDLDZCQUE2QixDQUFDO29CQUM3QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQztvQkFDM0UsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQ3hDLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsc0JBQXNCOzRCQUMvQixRQUFRLEVBQUUsNkJBQTZCO3lCQUN4QztxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgQXV0b2NvbXBsZXRlVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuL21lc3NhZ2UtaW5wdXQvYXV0b2NvbXBsZXRlLXRleHRhcmVhL2F1dG9jb21wbGV0ZS10ZXh0YXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNZW50aW9uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1tZW50aW9ucyc7XG5pbXBvcnQgeyBTdHJlYW1BdmF0YXJNb2R1bGUgfSBmcm9tICcuL3N0cmVhbS1hdmF0YXIubW9kdWxlJztcbmltcG9ydCB7IHRleHRhcmVhSW5qZWN0aW9uVG9rZW4gfSBmcm9tICcuL2luamVjdGlvbi10b2tlbnMnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtBdXRvY29tcGxldGVUZXh0YXJlYUNvbXBvbmVudF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIFRyYW5zbGF0ZU1vZHVsZSwgTWVudGlvbk1vZHVsZSwgU3RyZWFtQXZhdGFyTW9kdWxlXSxcbiAgZXhwb3J0czogW0F1dG9jb21wbGV0ZVRleHRhcmVhQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogdGV4dGFyZWFJbmplY3Rpb25Ub2tlbixcbiAgICAgIHVzZVZhbHVlOiBBdXRvY29tcGxldGVUZXh0YXJlYUNvbXBvbmVudCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTdHJlYW1BdXRvY29tcGxldGVUZXh0YXJlYU1vZHVsZSB7fVxuIl19
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { en } from '../assets/i18n/en';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "@ngx-translate/core";
|
|
5
|
-
/**
|
|
6
|
-
* The `StreamI18nService` can be used to customize the labels of the chat UI. Our [translation guide](/chat/docs/sdk/angular/concepts/translation/) covers this topic in detail.
|
|
7
|
-
*/
|
|
8
|
-
export class StreamI18nService {
|
|
9
|
-
constructor(translateService) {
|
|
10
|
-
this.translateService = translateService;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Registers the translation to the [ngx-translate](https://github.com/ngx-translate/core) TranslateService.
|
|
14
|
-
* @param lang The language key to register the translation to
|
|
15
|
-
* @param overrides An object which keys are translation keys, and the values are custom translations
|
|
16
|
-
*/
|
|
17
|
-
setTranslation(lang = 'en', overrides) {
|
|
18
|
-
const translateService = this.translateService;
|
|
19
|
-
const defaultLang = 'getFallbackLang' in translateService
|
|
20
|
-
? translateService.getFallbackLang?.()
|
|
21
|
-
: translateService.defaultLang;
|
|
22
|
-
if (!defaultLang) {
|
|
23
|
-
if (typeof translateService.setDefaultLang !== 'undefined') {
|
|
24
|
-
translateService.setDefaultLang(lang);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
translateService.defaultLang = lang;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
this.translateService.setTranslation(lang, { streamChat: { ...en.streamChat, ...overrides } }, true);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
StreamI18nService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamI18nService, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
34
|
-
StreamI18nService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamI18nService, providedIn: 'root' });
|
|
35
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamI18nService, decorators: [{
|
|
36
|
-
type: Injectable,
|
|
37
|
-
args: [{
|
|
38
|
-
providedIn: 'root',
|
|
39
|
-
}]
|
|
40
|
-
}], ctorParameters: function () { return [{ type: i1.TranslateService }]; } });
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLWkxOG4uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9zdHJlYW0taTE4bi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOzs7QUFFdkM7O0dBRUc7QUFJSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFlBQW9CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO0lBQUcsQ0FBQztJQUUxRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsU0FBcUM7UUFDL0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBRzdCLENBQUM7UUFFRixNQUFNLFdBQVcsR0FDZixpQkFBaUIsSUFBSSxnQkFBZ0I7WUFDbkMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxFQUFFO1lBQ3RDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7UUFDbkMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNoQixJQUFJLE9BQU8sZ0JBQWdCLENBQUMsY0FBYyxLQUFLLFdBQVcsRUFBRTtnQkFDMUQsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLGdCQUFnQixDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDckM7U0FDRjtRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQ2xDLElBQUksRUFDSixFQUFFLFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLFVBQVUsRUFBRSxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQ2xELElBQUksQ0FDTCxDQUFDO0lBQ0osQ0FBQzs7OEdBOUJVLGlCQUFpQjtrSEFBakIsaUJBQWlCLGNBRmhCLE1BQU07MkZBRVAsaUJBQWlCO2tCQUg3QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGVuIH0gZnJvbSAnLi4vYXNzZXRzL2kxOG4vZW4nO1xuXG4vKipcbiAqIFRoZSBgU3RyZWFtSTE4blNlcnZpY2VgIGNhbiBiZSB1c2VkIHRvIGN1c3RvbWl6ZSB0aGUgbGFiZWxzIG9mIHRoZSBjaGF0IFVJLiBPdXIgW3RyYW5zbGF0aW9uIGd1aWRlXSgvY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbmNlcHRzL3RyYW5zbGF0aW9uLykgY292ZXJzIHRoaXMgdG9waWMgaW4gZGV0YWlsLlxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgU3RyZWFtSTE4blNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UpIHt9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyB0aGUgdHJhbnNsYXRpb24gdG8gdGhlIFtuZ3gtdHJhbnNsYXRlXShodHRwczovL2dpdGh1Yi5jb20vbmd4LXRyYW5zbGF0ZS9jb3JlKSBUcmFuc2xhdGVTZXJ2aWNlLlxuICAgKiBAcGFyYW0gbGFuZyBUaGUgbGFuZ3VhZ2Uga2V5IHRvIHJlZ2lzdGVyIHRoZSB0cmFuc2xhdGlvbiB0b1xuICAgKiBAcGFyYW0gb3ZlcnJpZGVzIEFuIG9iamVjdCB3aGljaCBrZXlzIGFyZSB0cmFuc2xhdGlvbiBrZXlzLCBhbmQgdGhlIHZhbHVlcyBhcmUgY3VzdG9tIHRyYW5zbGF0aW9uc1xuICAgKi9cbiAgc2V0VHJhbnNsYXRpb24obGFuZyA9ICdlbicsIG92ZXJyaWRlcz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pIHtcbiAgICBjb25zdCB0cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy50cmFuc2xhdGVTZXJ2aWNlIGFzIFRyYW5zbGF0ZVNlcnZpY2UgJiB7XG4gICAgICBnZXRGYWxsYmFja0xhbmc/OiAoKSA9PiBzdHJpbmc7XG4gICAgICBzZXREZWZhdWx0TGFuZz86IChsYW5nOiBzdHJpbmcpID0+IHZvaWQ7XG4gICAgfTtcblxuICAgIGNvbnN0IGRlZmF1bHRMYW5nID1cbiAgICAgICdnZXRGYWxsYmFja0xhbmcnIGluIHRyYW5zbGF0ZVNlcnZpY2VcbiAgICAgICAgPyB0cmFuc2xhdGVTZXJ2aWNlLmdldEZhbGxiYWNrTGFuZz8uKClcbiAgICAgICAgOiB0cmFuc2xhdGVTZXJ2aWNlLmRlZmF1bHRMYW5nO1xuICAgIGlmICghZGVmYXVsdExhbmcpIHtcbiAgICAgIGlmICh0eXBlb2YgdHJhbnNsYXRlU2VydmljZS5zZXREZWZhdWx0TGFuZyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdHJhbnNsYXRlU2VydmljZS5zZXREZWZhdWx0TGFuZyhsYW5nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zbGF0ZVNlcnZpY2UuZGVmYXVsdExhbmcgPSBsYW5nO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc2V0VHJhbnNsYXRpb24oXG4gICAgICBsYW5nLFxuICAgICAgeyBzdHJlYW1DaGF0OiB7IC4uLmVuLnN0cmVhbUNoYXQsIC4uLm92ZXJyaWRlcyB9IH0sXG4gICAgICB0cnVlXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
4
|
-
import { TextareaComponent } from './message-input/textarea/textarea.component';
|
|
5
|
-
import { textareaInjectionToken } from './injection-tokens';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class StreamTextareaModule {
|
|
8
|
-
}
|
|
9
|
-
StreamTextareaModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamTextareaModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
-
StreamTextareaModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.0.4", ngImport: i0, type: StreamTextareaModule, declarations: [TextareaComponent], imports: [CommonModule, TranslateModule], exports: [TextareaComponent] });
|
|
11
|
-
StreamTextareaModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamTextareaModule, providers: [
|
|
12
|
-
{
|
|
13
|
-
provide: textareaInjectionToken,
|
|
14
|
-
useValue: TextareaComponent,
|
|
15
|
-
},
|
|
16
|
-
], imports: [CommonModule, TranslateModule] });
|
|
17
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: StreamTextareaModule, decorators: [{
|
|
18
|
-
type: NgModule,
|
|
19
|
-
args: [{
|
|
20
|
-
declarations: [TextareaComponent],
|
|
21
|
-
imports: [CommonModule, TranslateModule],
|
|
22
|
-
exports: [TextareaComponent],
|
|
23
|
-
providers: [
|
|
24
|
-
{
|
|
25
|
-
provide: textareaInjectionToken,
|
|
26
|
-
useValue: TextareaComponent,
|
|
27
|
-
},
|
|
28
|
-
],
|
|
29
|
-
}]
|
|
30
|
-
}] });
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyZWFtLXRleHRhcmVhLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9zdHJlYW0tdGV4dGFyZWEubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw2Q0FBNkMsQ0FBQztBQUNoRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFhNUQsTUFBTSxPQUFPLG9CQUFvQjs7aUhBQXBCLG9CQUFvQjtrSEFBcEIsb0JBQW9CLGlCQVZoQixpQkFBaUIsYUFDdEIsWUFBWSxFQUFFLGVBQWUsYUFDN0IsaUJBQWlCO2tIQVFoQixvQkFBb0IsYUFQcEI7UUFDVDtZQUNFLE9BQU8sRUFBRSxzQkFBc0I7WUFDL0IsUUFBUSxFQUFFLGlCQUFpQjtTQUM1QjtLQUNGLFlBUFMsWUFBWSxFQUFFLGVBQWU7MkZBUzVCLG9CQUFvQjtrQkFYaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztvQkFDakMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGVBQWUsQ0FBQztvQkFDeEMsT0FBTyxFQUFFLENBQUMsaUJBQWlCLENBQUM7b0JBQzVCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsc0JBQXNCOzRCQUMvQixRQUFRLEVBQUUsaUJBQWlCO3lCQUM1QjtxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4vbWVzc2FnZS1pbnB1dC90ZXh0YXJlYS90ZXh0YXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgdGV4dGFyZWFJbmplY3Rpb25Ub2tlbiB9IGZyb20gJy4vaW5qZWN0aW9uLXRva2Vucyc7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1RleHRhcmVhQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgVHJhbnNsYXRlTW9kdWxlXSxcbiAgZXhwb3J0czogW1RleHRhcmVhQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogdGV4dGFyZWFJbmplY3Rpb25Ub2tlbixcbiAgICAgIHVzZVZhbHVlOiBUZXh0YXJlYUNvbXBvbmVudCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBTdHJlYW1UZXh0YXJlYU1vZHVsZSB7fVxuIl19
|