stream-chat-angular 2.1.0 → 2.4.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 +1 -1
- package/assets/i18n/en.d.ts +2 -0
- package/assets/version.d.ts +1 -1
- package/bundles/stream-chat-angular.umd.js +115 -36
- package/bundles/stream-chat-angular.umd.js.map +1 -1
- package/esm2015/assets/i18n/en.js +3 -1
- package/esm2015/assets/version.js +2 -2
- package/esm2015/lib/channel-header/channel-header.component.js +12 -3
- package/esm2015/lib/channel-preview/channel-preview.component.js +9 -5
- package/esm2015/lib/channel.service.js +18 -5
- package/esm2015/lib/message/message.component.js +8 -4
- package/esm2015/lib/message-actions-box/message-actions-box.component.js +9 -7
- package/esm2015/lib/message-input/message-input.component.js +41 -18
- package/esm2015/lib/message-input/textarea.directive.js +12 -2
- package/esm2015/lib/message-list/message-list.component.js +5 -2
- package/fesm2015/stream-chat-angular.js +106 -36
- package/fesm2015/stream-chat-angular.js.map +1 -1
- package/lib/channel-header/channel-header.component.d.ts +1 -0
- package/lib/channel-preview/channel-preview.component.d.ts +1 -0
- package/lib/channel.service.d.ts +1 -0
- package/lib/message/message.component.d.ts +4 -1
- package/lib/message-actions-box/message-actions-box.component.d.ts +4 -3
- package/lib/message-input/message-input.component.d.ts +10 -4
- package/lib/message-input/textarea.directive.d.ts +1 -0
- package/lib/message-list/message-list.component.d.ts +3 -1
- package/package.json +11 -2
- package/src/assets/i18n/en.ts +4 -0
- package/src/assets/version.ts +1 -1
|
@@ -9,8 +9,10 @@ export class TextareaDirective {
|
|
|
9
9
|
this.send = new EventEmitter();
|
|
10
10
|
this.userMentions = new EventEmitter();
|
|
11
11
|
this.subscriptions = [];
|
|
12
|
+
this.unpropagatedChanges = [];
|
|
12
13
|
}
|
|
13
14
|
ngOnChanges(changes) {
|
|
15
|
+
this.unpropagatedChanges.push(changes);
|
|
14
16
|
if (!this.componentRef) {
|
|
15
17
|
return;
|
|
16
18
|
}
|
|
@@ -22,6 +24,11 @@ export class TextareaDirective {
|
|
|
22
24
|
if (this.componentRef.instance.userMentions) {
|
|
23
25
|
this.subscriptions.push(this.componentRef.instance.userMentions.subscribe((value) => this.userMentions.next(value)));
|
|
24
26
|
}
|
|
27
|
+
this.componentRef.instance.areMentionsEnabled = this.areMentionsEnabled;
|
|
28
|
+
this.componentRef.instance.mentionAutocompleteItemTemplate =
|
|
29
|
+
this.mentionAutocompleteItemTemplate;
|
|
30
|
+
this.componentRef.instance.mentionScope = this.mentionScope;
|
|
31
|
+
this.componentRef.instance.value = this.value;
|
|
25
32
|
}
|
|
26
33
|
}
|
|
27
34
|
if (changes.areMentionsEnabled) {
|
|
@@ -38,8 +45,11 @@ export class TextareaDirective {
|
|
|
38
45
|
this.componentRef.instance.value = this.value;
|
|
39
46
|
}
|
|
40
47
|
// ngOnChanges not called for dynamic components since we don't use template binding
|
|
48
|
+
let changesToPropagate = {};
|
|
49
|
+
this.unpropagatedChanges.forEach((c) => (changesToPropagate = Object.assign(Object.assign({}, changesToPropagate), c)));
|
|
41
50
|
// eslint-disable-next-line @angular-eslint/no-lifecycle-call
|
|
42
|
-
this.componentRef.instance.ngOnChanges(
|
|
51
|
+
this.componentRef.instance.ngOnChanges(changesToPropagate);
|
|
52
|
+
this.unpropagatedChanges = [];
|
|
43
53
|
}
|
|
44
54
|
}
|
|
45
55
|
TextareaDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: TextareaDirective, deps: [{ token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
|
|
@@ -66,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
66
76
|
}], userMentions: [{
|
|
67
77
|
type: Output
|
|
68
78
|
}] } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGFyZWEuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtaW5wdXQvdGV4dGFyZWEuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FJUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVMxQyxNQUFNLE9BQU8saUJBQWlCO0lBYTVCLFlBQW1CLGdCQUFrQztRQUFsQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBTjVDLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDRCxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDekMsU0FBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7UUFDaEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUM3RCxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFDbkMsd0JBQW1CLEdBQW9CLEVBQUUsQ0FBQztJQUNNLENBQUM7SUFFekQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztZQUNuRCxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsWUFBWSxDQUFD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bnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDb250YWluZXJSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dCB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IFRleHRhcmVhSW50ZXJmYWNlIH0gZnJvbSAnLi90ZXh0YXJlYS5pbnRlcmZhY2UnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbc3RyZWFtVGV4dGFyZWFdJyxcbn0pXG5leHBvcnQgY2xhc3MgVGV4dGFyZWFEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKSBjb21wb25lbnRSZWY6IENvbXBvbmVudFJlZjxUZXh0YXJlYUludGVyZmFjZT4gfCB1bmRlZmluZWQ7XG4gIEBJbnB1dCgpIGFyZU1lbnRpb25zRW5hYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTpcbiAgICB8IFRlbXBsYXRlUmVmPE1lbnRpb25BdXRjb21wbGV0ZUxpc3RJdGVtQ29udGV4dD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgbWVudGlvblNjb3BlPzogJ2NoYW5uZWwnIHwgJ2FwcGxpY2F0aW9uJztcbiAgQElucHV0KCkgdmFsdWUgPSAnJztcbiAgQE91dHB1dCgpIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gIEBPdXRwdXQoKSByZWFkb25seSBzZW5kID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgcmVhZG9ubHkgdXNlck1lbnRpb25zID0gbmV3IEV2ZW50RW1pdHRlcjxVc2VyUmVzcG9uc2VbXT4oKTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIHVucHJvcGFnYXRlZENoYW5nZXM6IFNpbXBsZUNoYW5nZXNbXSA9IFtdO1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgdGhpcy51bnByb3BhZ2F0ZWRDaGFuZ2VzLnB1c2goY2hhbmdlcyk7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy5jb21wb25lbnRSZWYpIHtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICAgICAgaWYgKHRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlQ2hhbmdlLnN1YnNjcmliZSgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLm5leHQodmFsdWUpXG4gICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5zZW5kLnN1YnNjcmliZSgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLnNlbmQubmV4dCh2YWx1ZSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICAgIGlmICh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS51c2VyTWVudGlvbnMpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnVzZXJNZW50aW9ucy5zdWJzY3JpYmUoKHZhbHVlKSA9PlxuICAgICAgICAgICAgICB0aGlzLnVzZXJNZW50aW9ucy5uZXh0KHZhbHVlKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UuYXJlTWVudGlvbnNFbmFibGVkID0gdGhpcy5hcmVNZW50aW9uc0VuYWJsZWQ7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm1lbnRpb25BdXRvY29tcGxldGVJdGVtVGVtcGxhdGUgPVxuICAgICAgICAgIHRoaXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubWVudGlvblNjb3BlID0gdGhpcy5tZW50aW9uU2NvcGU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNoYW5nZXMuYXJlTWVudGlvbnNFbmFibGVkKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5hcmVNZW50aW9uc0VuYWJsZWQgPSB0aGlzLmFyZU1lbnRpb25zRW5hYmxlZDtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2UubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZSA9XG4gICAgICAgIHRoaXMubWVudGlvbkF1dG9jb21wbGV0ZUl0ZW1UZW1wbGF0ZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMubWVudGlvblNjb3BlKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5tZW50aW9uU2NvcGUgPSB0aGlzLm1lbnRpb25TY29wZTtcbiAgICB9XG4gICAgaWYgKGNoYW5nZXMudmFsdWUpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB9XG4gICAgLy8gbmdPbkNoYW5nZXMgbm90IGNhbGxlZCBmb3IgZHluYW1pYyBjb21wb25lbnRzIHNpbmNlIHdlIGRvbid0IHVzZSB0ZW1wbGF0ZSBiaW5kaW5nXG4gICAgbGV0IGNoYW5nZXNUb1Byb3BhZ2F0ZSA9IHt9O1xuICAgIHRoaXMudW5wcm9wYWdhdGVkQ2hhbmdlcy5mb3JFYWNoKFxuICAgICAgKGMpID0+IChjaGFuZ2VzVG9Qcm9wYWdhdGUgPSB7IC4uLmNoYW5nZXNUb1Byb3BhZ2F0ZSwgLi4uYyB9KVxuICAgICk7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1saWZlY3ljbGUtY2FsbFxuICAgIHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm5nT25DaGFuZ2VzKGNoYW5nZXNUb1Byb3BhZ2F0ZSk7XG4gICAgdGhpcy51bnByb3BhZ2F0ZWRDaGFuZ2VzID0gW107XG4gIH1cbn1cbiJdfQ==
|
|
@@ -34,6 +34,7 @@ export class MessageListComponent {
|
|
|
34
34
|
const capabilites = (_a = channel === null || channel === void 0 ? void 0 : channel.data) === null || _a === void 0 ? void 0 : _a.own_capabilities;
|
|
35
35
|
if (capabilites) {
|
|
36
36
|
this.canReactToMessage = capabilites.indexOf('send-reaction') !== -1;
|
|
37
|
+
this.canReceiveReadEvents = capabilites.indexOf('read-events') !== -1;
|
|
37
38
|
this.authorizedMessageActions = [];
|
|
38
39
|
if (capabilites.indexOf('flag-message') !== -1) {
|
|
39
40
|
this.authorizedMessageActions.push('flag');
|
|
@@ -164,7 +165,7 @@ export class MessageListComponent {
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
MessageListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageListComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChatClientService }, { token: i3.ImageLoadService }], target: i0.ɵɵFactoryTarget.Component });
|
|
167
|
-
MessageListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageListComponent, selector: "stream-message-list", inputs: { messageTemplate: "messageTemplate", areReactionsEnabled: "areReactionsEnabled", enabledMessageActionsInput: ["enabledMessageActions", "enabledMessageActionsInput"] }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #scrollContainer\n data-testid=\"scroll-container\"\n class=\"str-chat__list\"\n (scroll)=\"scrolled()\"\n>\n <div class=\"str-chat__reverse-infinite-scroll\">\n <ul class=\"str-chat__ul\">\n <li\n data-testclass=\"message\"\n *ngFor=\"\n let message of messages$ | async;\n let i = index;\n trackBy: trackByMessageId\n \"\n class=\"str-chat__li str-chat__li--{{ groupStyles[i] }}\"\n >\n <ng-container *ngIf=\"messageTemplate; else defaultMessageTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplate;\n context: {\n message: message,\n areReactionsEnabled: areReactionsEnabled,\n canReactToMessage: canReactToMessage,\n lastSentMessageId: !!(\n lastSentMessageId && message?.id === lastSentMessageId\n )\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultMessageTemplate>\n <stream-message\n [message]=\"message\"\n [areReactionsEnabled]=\"areReactionsEnabled\"\n [canReactToMessage]=\"canReactToMessage\"\n [isLastSentMessage]=\"\n !!(lastSentMessageId && message?.id === lastSentMessageId)\n \"\n [enabledMessageActions]=\"enabledMessageActions\"\n ></stream-message>\n </ng-template>\n </li>\n </ul>\n </div>\n</div>\n<div class=\"str-chat__list-notifications\">\n <button\n data-testid=\"scroll-to-bottom\"\n *ngIf=\"isUserScrolledUp\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-right\n str-chat__message-notification-scroll-down\n \"\n (keyup.enter)=\"scrollToBottom()\"\n (click)=\"scrollToBottom()\"\n >\n <div\n *ngIf=\"unreadMessageCount > 0\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-scroll-down-unread-count\n \"\n >\n {{ unreadMessageCount }}\n </div>\n </button>\n</div>\n", components: [{ type: i4.MessageComponent, selector: "stream-message", inputs: ["message", "enabledMessageActions", "areReactionsEnabled", "canReactToMessage", "isLastSentMessage"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i5.AsyncPipe } });
|
|
168
|
+
MessageListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageListComponent, selector: "stream-message-list", inputs: { messageTemplate: "messageTemplate", messageInputTemplate: "messageInputTemplate", areReactionsEnabled: "areReactionsEnabled", enabledMessageActionsInput: ["enabledMessageActions", "enabledMessageActionsInput"] }, host: { properties: { "class": "this.class" } }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n #scrollContainer\n data-testid=\"scroll-container\"\n class=\"str-chat__list\"\n (scroll)=\"scrolled()\"\n>\n <div class=\"str-chat__reverse-infinite-scroll\">\n <ul class=\"str-chat__ul\">\n <li\n data-testclass=\"message\"\n *ngFor=\"\n let message of messages$ | async;\n let i = index;\n trackBy: trackByMessageId\n \"\n class=\"str-chat__li str-chat__li--{{ groupStyles[i] }}\"\n >\n <ng-container *ngIf=\"messageTemplate; else defaultMessageTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n messageTemplate;\n context: {\n message: message,\n areReactionsEnabled: areReactionsEnabled,\n canReactToMessage: canReactToMessage,\n lastSentMessageId: !!(\n lastSentMessageId && message?.id === lastSentMessageId\n ),\n canReceiveReadEvents: canReceiveReadEvents,\n messageInputTemplate: messageInputTemplate\n }\n \"\n ></ng-container>\n </ng-container>\n <ng-template #defaultMessageTemplate>\n <stream-message\n [message]=\"message\"\n [areReactionsEnabled]=\"areReactionsEnabled\"\n [canReactToMessage]=\"canReactToMessage\"\n [isLastSentMessage]=\"\n !!(lastSentMessageId && message?.id === lastSentMessageId)\n \"\n [enabledMessageActions]=\"enabledMessageActions\"\n [canReceiveReadEvents]=\"canReceiveReadEvents\"\n [messageInputTemplate]=\"messageInputTemplate\"\n ></stream-message>\n </ng-template>\n </li>\n </ul>\n </div>\n</div>\n<div class=\"str-chat__list-notifications\">\n <button\n data-testid=\"scroll-to-bottom\"\n *ngIf=\"isUserScrolledUp\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-right\n str-chat__message-notification-scroll-down\n \"\n (keyup.enter)=\"scrollToBottom()\"\n (click)=\"scrollToBottom()\"\n >\n <div\n *ngIf=\"unreadMessageCount > 0\"\n class=\"\n str-chat__message-notification\n str-chat__message-notification-scroll-down-unread-count\n \"\n >\n {{ unreadMessageCount }}\n </div>\n </button>\n</div>\n", components: [{ type: i4.MessageComponent, selector: "stream-message", inputs: ["messageInputTemplate", "message", "enabledMessageActions", "areReactionsEnabled", "canReactToMessage", "isLastSentMessage", "canReceiveReadEvents"] }], directives: [{ type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "async": i5.AsyncPipe } });
|
|
168
169
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageListComponent, decorators: [{
|
|
169
170
|
type: Component,
|
|
170
171
|
args: [{
|
|
@@ -174,6 +175,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
174
175
|
}]
|
|
175
176
|
}], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i2.ChatClientService }, { type: i3.ImageLoadService }]; }, propDecorators: { messageTemplate: [{
|
|
176
177
|
type: Input
|
|
178
|
+
}], messageInputTemplate: [{
|
|
179
|
+
type: Input
|
|
177
180
|
}], areReactionsEnabled: [{
|
|
178
181
|
type: Input
|
|
179
182
|
}], enabledMessageActionsInput: [{
|
|
@@ -186,4 +189,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
|
|
|
186
189
|
type: ViewChild,
|
|
187
190
|
args: ['scrollContainer']
|
|
188
191
|
}] } });
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVE1RCxNQUFNLE9BQU8sb0JBQW9CO0lBMEIvQixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxnQkFBa0M7UUFGbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTNCbkMsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLDhEQUE4RDtRQUM5QiwrQkFBMEIsR0FDeEQsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFHdkQsMEJBQXFCLEdBQXFCLEVBQUUsQ0FBQztRQUNmLFVBQUssR0FDakMsd0VBQXdFLENBQUM7UUFDM0UsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBRXZCLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQVV2Qiw2QkFBd0IsR0FBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3Qyw4QkFBeUIsR0FBRyxH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RWxlbWVudFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgU3RyZWFtTWVzc2FnZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IENoYXRDbGllbnRTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBnZXRHcm91cFN0eWxlcywgR3JvdXBTdHlsZSB9IGZyb20gJy4vZ3JvdXAtc3R5bGVzJztcbmltcG9ydCB7IEltYWdlTG9hZFNlcnZpY2UgfSBmcm9tICcuL2ltYWdlLWxvYWQuc2VydmljZSc7XG5pbXBvcnQgeyBNZXNzYWdlQWN0aW9ucyB9IGZyb20gJy4uL21lc3NhZ2UtYWN0aW9ucy1ib3gvbWVzc2FnZS1hY3Rpb25zLWJveC5jb21wb25lbnQnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtbGlzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIG1lc3NhZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYXJlUmVhY3Rpb25zRW5hYmxlZCA9IHRydWU7XG4gIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lICovXG4gIEBJbnB1dCgnZW5hYmxlZE1lc3NhZ2VBY3Rpb25zJykgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQ6IE1lc3NhZ2VBY3Rpb25zW10gPVxuICAgIFsnZmxhZycsICdlZGl0JywgJ2VkaXQtYW55JywgJ2RlbGV0ZScsICdkZWxldGUtYW55J107XG4gIG1lc3NhZ2VzJCE6IE9ic2VydmFibGU8U3RyZWFtTWVzc2FnZVtdPjtcbiAgY2FuUmVhY3RUb01lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGVuYWJsZWRNZXNzYWdlQWN0aW9uczogTWVzc2FnZUFjdGlvbnNbXSA9IFtdO1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzJykgcHJpdmF0ZSBjbGFzcyA9XG4gICAgJ3N0ci1jaGF0LWFuZ3VsYXJfX21haW4tcGFuZWwtaW5uZXIgc3RyLWNoYXQtYW5ndWxhcl9fbWVzc2FnZS1saXN0LWhvc3QnO1xuICB1bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICBpc1VzZXJTY3JvbGxlZFVwOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBncm91cFN0eWxlczogR3JvdXBTdHlsZVtdID0gW107XG4gIGxhc3RTZW50TWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoJ3Njcm9sbENvbnRhaW5lcicpXG4gIHByaXZhdGUgc2Nyb2xsQ29udGFpbmVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIHByaXZhdGUgbGF0ZXN0TWVzc2FnZURhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaGFzTmV3TWVzc2FnZXM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgY29udGFpbmVySGVpZ2h0OiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb2xkZXN0TWVzc2FnZURhdGU6IERhdGUgfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgb2xkZXJNYXNzYWdlc0xvYWRlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBpc05ld01lc3NhZ2VTZW50QnlVc2VyOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGF1dGhvcml6ZWRNZXNzYWdlQWN0aW9uczogTWVzc2FnZUFjdGlvbnNbXSA9IFsnZmxhZyddO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzVXNlclNjcm9sbGVkVXBUaHJlc2hvbGQgPSAzMDA7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBpbWFnZUxvYWRTZXJ2aWNlOiBJbWFnZUxvYWRTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQuc3Vic2NyaWJlKChjaGFubmVsKSA9PiB7XG4gICAgICB0aGlzLmxhdGVzdE1lc3NhZ2VEYXRlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5oYXNOZXdNZXNzYWdlcyA9IHRydWU7XG4gICAgICB0aGlzLmlzVXNlclNjcm9sbGVkVXAgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkID0gZmFsc2U7XG4gICAgICB0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy51bnJlYWRNZXNzYWdlQ291bnQgPSAwO1xuICAgICAgdGhpcy5pc05ld01lc3NhZ2VTZW50QnlVc2VyID0gdW5kZWZpbmVkO1xuICAgICAgY29uc3QgY2FwYWJpbGl0ZXMgPSBjaGFubmVsPy5kYXRhPy5vd25fY2FwYWJpbGl0aWVzIGFzIHN0cmluZ1tdO1xuICAgICAgaWYgKGNhcGFiaWxpdGVzKSB7XG4gICAgICAgIHRoaXMuY2FuUmVhY3RUb01lc3NhZ2UgPSBjYXBhYmlsaXRlcy5pbmRleE9mKCdzZW5kLXJlYWN0aW9uJykgIT09IC0xO1xuICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucyA9IFtdO1xuICAgICAgICBpZiAoY2FwYWJpbGl0ZXMuaW5kZXhPZignZmxhZy1tZXNzYWdlJykgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnZmxhZycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXBhYmlsaXRlcy5pbmRleE9mKCd1cGRhdGUtb3duLW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdlZGl0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhcGFiaWxpdGVzLmluZGV4T2YoJ3VwZGF0ZS1hbnktbWVzc2FnZScpICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2VkaXQnKTtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdlZGl0LWFueScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXBhYmlsaXRlcy5pbmRleE9mKCdkZWxldGUtb3duLW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdkZWxldGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FwYWJpbGl0ZXMuaW5kZXhPZignZGVsZXRlLWFueS1tZXNzYWdlJykgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnZGVsZXRlJyk7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnZGVsZXRlLWFueScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RW5hYmxlZEFjdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm1lc3NhZ2VzJCA9IHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzJC5waXBlKFxuICAgICAgdGFwKChtZXNzYWdlcykgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRMYXRlc3RNZXNzYWdlRGF0ZSA9XG4gICAgICAgICAgbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV0uY3JlYXRlZF9hdDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICF0aGlzLmxhdGVzdE1lc3NhZ2VEYXRlIHx8XG4gICAgICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlRGF0ZT8uZ2V0VGltZSgpIDwgY3VycmVudExhdGVzdE1lc3NhZ2VEYXRlLmdldFRpbWUoKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmxhdGVzdE1lc3NhZ2VEYXRlID0gY3VycmVudExhdGVzdE1lc3NhZ2VEYXRlO1xuICAgICAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlciA9XG4gICAgICAgICAgICBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXS51c2VyPy5pZCA9PT1cbiAgICAgICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8udXNlcj8uaWQ7XG4gICAgICAgICAgaWYgKHRoaXMuaXNVc2VyU2Nyb2xsZWRVcCkge1xuICAgICAgICAgICAgdGhpcy51bnJlYWRNZXNzYWdlQ291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudE9sZGVzdE1lc3NhZ2VEYXRlID0gbWVzc2FnZXNbMF0uY3JlYXRlZF9hdDtcbiAgICAgICAgaWYgKCF0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlKSB7XG4gICAgICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlRGF0ZSA9IGN1cnJlbnRPbGRlc3RNZXNzYWdlRGF0ZTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICB0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlPy5nZXRUaW1lKCkgPiBjdXJyZW50T2xkZXN0TWVzc2FnZURhdGUuZ2V0VGltZSgpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZURhdGUgPSBjdXJyZW50T2xkZXN0TWVzc2FnZURhdGU7XG4gICAgICAgICAgdGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JvdXBTdHlsZXMgPSBtZXNzYWdlcy5tYXAoKG0sIGkpID0+XG4gICAgICAgICAgZ2V0R3JvdXBTdHlsZXMobSwgbWVzc2FnZXNbaSAtIDFdLCBtZXNzYWdlc1tpICsgMV0pXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIHRhcChcbiAgICAgICAgKG1lc3NhZ2VzKSA9PlxuICAgICAgICAgICh0aGlzLmxhc3RTZW50TWVzc2FnZUlkID0gWy4uLm1lc3NhZ2VzXVxuICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgLmZpbmQoXG4gICAgICAgICAgICAgIChtKSA9PlxuICAgICAgICAgICAgICAgIG0udXNlcj8uaWQgPT09IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8udXNlcj8uaWQgJiZcbiAgICAgICAgICAgICAgICBtLnN0YXR1cyAhPT0gJ3NlbmRpbmcnXG4gICAgICAgICAgICApPy5pZClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuaW1hZ2VMb2FkU2VydmljZS5pbWFnZUxvYWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgIC8vIEhhY2t5IGFuZCB1bnJlbGlhYmxlIHdvcmthcm91bmQgdG8gc2Nyb2xsIGRvd24gYWZ0ZXIgbG9hZGVkIGltYWdlcyBtb3ZlIHRoZSBzY3JvbGxiYXJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9uc0lucHV0KSB7XG4gICAgICB0aGlzLnNldEVuYWJsZWRBY3Rpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmICh0aGlzLmhhc05ld01lc3NhZ2VzKSB7XG4gICAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCB8fCB0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICAvLyBIYWNreSBhbmQgdW5yZWxpYWJsZSB3b3JrYXJvdW5kIHRvIHNjcm9sbCBkb3duIGFmdGVyIGxvYWRlZCBpbWFnZXMgbW92ZSB0aGUgc2Nyb2xsYmFyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQpIHtcbiAgICAgIHRoaXMucHJlc2VydmVTY3JvbGxiYXJQb3NpdGlvbigpO1xuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlNZXNzYWdlSWQoaW5kZXg6IG51bWJlciwgaXRlbTogU3RyZWFtTWVzc2FnZSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gIH1cblxuICBzY3JvbGxlZCgpIHtcbiAgICB0aGlzLmlzVXNlclNjcm9sbGVkVXAgPVxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLVxuICAgICAgICAodGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgK1xuICAgICAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KSA+XG4gICAgICB0aGlzLmlzVXNlclNjcm9sbGVkVXBUaHJlc2hvbGQ7XG4gICAgaWYgKCF0aGlzLmlzVXNlclNjcm9sbGVkVXApIHtcbiAgICAgIHRoaXMudW5yZWFkTWVzc2FnZUNvdW50ID0gMDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID09PSAwKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmxvYWRNb3JlTWVzc2FnZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByZXNlcnZlU2Nyb2xsYmFyUG9zaXRpb24oKSB7XG4gICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLmNvbnRhaW5lckhlaWdodCE7XG4gIH1cblxuICBwcml2YXRlIHNldEVuYWJsZWRBY3Rpb25zKCkge1xuICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zID0gW107XG4gICAgaWYgKCF0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9uc0lucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBpc0F1dGhvcml6ZWQgPSB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKGFjdGlvbikgIT09IC0xO1xuICAgICAgaWYgKGlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI3Njcm9sbENvbnRhaW5lclxuICBkYXRhLXRlc3RpZD1cInNjcm9sbC1jb250YWluZXJcIlxuICBjbGFzcz1cInN0ci1jaGF0X19saXN0XCJcbiAgKHNjcm9sbCk9XCJzY3JvbGxlZCgpXCJcbj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19yZXZlcnNlLWluZmluaXRlLXNjcm9sbFwiPlxuICAgIDx1bCBjbGFzcz1cInN0ci1jaGF0X191bFwiPlxuICAgICAgPGxpXG4gICAgICAgIGRhdGEtdGVzdGNsYXNzPVwibWVzc2FnZVwiXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzJCB8IGFzeW5jO1xuICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeU1lc3NhZ2VJZFxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19saSBzdHItY2hhdF9fbGktLXt7IGdyb3VwU3R5bGVzW2ldIH19XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0TWVzc2FnZVRlbXBsYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgbWVzc2FnZVRlbXBsYXRlO1xuICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBhcmVSZWFjdGlvbnNFbmFibGVkOiBhcmVSZWFjdGlvbnNFbmFibGVkLFxuICAgICAgICAgICAgICAgIGNhblJlYWN0VG9NZXNzYWdlOiBjYW5SZWFjdFRvTWVzc2FnZSxcbiAgICAgICAgICAgICAgICBsYXN0U2VudE1lc3NhZ2VJZDogISEoXG4gICAgICAgICAgICAgICAgICBsYXN0U2VudE1lc3NhZ2VJZCAmJiBtZXNzYWdlPy5pZCA9PT0gbGFzdFNlbnRNZXNzYWdlSWRcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TWVzc2FnZVRlbXBsYXRlPlxuICAgICAgICAgIDxzdHJlYW0tbWVzc2FnZVxuICAgICAgICAgICAgW21lc3NhZ2VdPVwibWVzc2FnZVwiXG4gICAgICAgICAgICBbYXJlUmVhY3Rpb25zRW5hYmxlZF09XCJhcmVSZWFjdGlvbnNFbmFibGVkXCJcbiAgICAgICAgICAgIFtjYW5SZWFjdFRvTWVzc2FnZV09XCJjYW5SZWFjdFRvTWVzc2FnZVwiXG4gICAgICAgICAgICBbaXNMYXN0U2VudE1lc3NhZ2VdPVwiXG4gICAgICAgICAgICAgICEhKGxhc3RTZW50TWVzc2FnZUlkICYmIG1lc3NhZ2U/LmlkID09PSBsYXN0U2VudE1lc3NhZ2VJZClcbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICBbZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXT1cImVuYWJsZWRNZXNzYWdlQWN0aW9uc1wiXG4gICAgICAgICAgPjwvc3RyZWFtLW1lc3NhZ2U+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L2xpPlxuICAgIDwvdWw+XG4gIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xpc3Qtbm90aWZpY2F0aW9uc1wiPlxuICA8YnV0dG9uXG4gICAgZGF0YS10ZXN0aWQ9XCJzY3JvbGwtdG8tYm90dG9tXCJcbiAgICAqbmdJZj1cImlzVXNlclNjcm9sbGVkVXBcIlxuICAgIGNsYXNzPVwiXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb25cbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvbi1yaWdodFxuICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC1kb3duXG4gICAgXCJcbiAgICAoa2V5dXAuZW50ZXIpPVwic2Nyb2xsVG9Cb3R0b20oKVwiXG4gICAgKGNsaWNrKT1cInNjcm9sbFRvQm90dG9tKClcIlxuICA+XG4gICAgPGRpdlxuICAgICAgKm5nSWY9XCJ1bnJlYWRNZXNzYWdlQ291bnQgPiAwXCJcbiAgICAgIGNsYXNzPVwiXG4gICAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvblxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb24tc2Nyb2xsLWRvd24tdW5yZWFkLWNvdW50XG4gICAgICBcIlxuICAgID5cbiAgICAgIHt7IHVucmVhZE1lc3NhZ2VDb3VudCB9fVxuICAgIDwvZGl2PlxuICA8L2J1dHRvbj5cbjwvZGl2PlxuIl19
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLWxpc3QvbWVzc2FnZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxTQUFTLEVBRVQsV0FBVyxFQUNYLEtBQUssRUFJTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR3JDLE9BQU8sRUFBRSxjQUFjLEVBQWMsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQVE1RCxNQUFNLE9BQU8sb0JBQW9CO0lBNEIvQixZQUNVLGNBQThCLEVBQzlCLGlCQUFvQyxFQUNwQyxnQkFBa0M7UUFGbEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFDcEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTVCbkMsd0JBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLDhEQUE4RDtRQUM5QiwrQkFBMEIsR0FDeEQsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFJdkQsMEJBQXFCLEdBQXFCLEVBQUUsQ0FBQztRQUNmLFVBQUssR0FDakMsd0VBQXdFLENBQUM7UUFDM0UsdUJBQWtCLEdBQUcsQ0FBQyxDQUFDO1FBRXZCLGdCQUFXLEdBQWlCLEVBQUUsQ0FBQztRQVV2Qiw2QkFBd0IsR0FBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3Qyw4QkFBeUIsR0FBRyxH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O2dCQU9aLGVBQWU7c0JBRHRCLFNBQVM7dUJBQUMsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3Q2hlY2tlZCxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBTdHJlYW1NZXNzYWdlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldEdyb3VwU3R5bGVzLCBHcm91cFN0eWxlIH0gZnJvbSAnLi9ncm91cC1zdHlsZXMnO1xuaW1wb3J0IHsgSW1hZ2VMb2FkU2VydmljZSB9IGZyb20gJy4vaW1hZ2UtbG9hZC5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VBY3Rpb25zIH0gZnJvbSAnLi4vbWVzc2FnZS1hY3Rpb25zLWJveC9tZXNzYWdlLWFjdGlvbnMtYm94LmNvbXBvbmVudCc7XG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25DaGFuZ2VzIHtcbiAgQElucHV0KCkgbWVzc2FnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+IHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZXNzYWdlSW5wdXRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgYXJlUmVhY3Rpb25zRW5hYmxlZCA9IHRydWU7XG4gIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lICovXG4gIEBJbnB1dCgnZW5hYmxlZE1lc3NhZ2VBY3Rpb25zJykgZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQ6IE1lc3NhZ2VBY3Rpb25zW10gPVxuICAgIFsnZmxhZycsICdlZGl0JywgJ2VkaXQtYW55JywgJ2RlbGV0ZScsICdkZWxldGUtYW55J107XG4gIG1lc3NhZ2VzJCE6IE9ic2VydmFibGU8U3RyZWFtTWVzc2FnZVtdPjtcbiAgY2FuUmVhY3RUb01lc3NhZ2U6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIGNhblJlY2VpdmVSZWFkRXZlbnRzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBlbmFibGVkTWVzc2FnZUFjdGlvbnM6IE1lc3NhZ2VBY3Rpb25zW10gPSBbXTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpIHByaXZhdGUgY2xhc3MgPVxuICAgICdzdHItY2hhdC1hbmd1bGFyX19tYWluLXBhbmVsLWlubmVyIHN0ci1jaGF0LWFuZ3VsYXJfX21lc3NhZ2UtbGlzdC1ob3N0JztcbiAgdW5yZWFkTWVzc2FnZUNvdW50ID0gMDtcbiAgaXNVc2VyU2Nyb2xsZWRVcDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgZ3JvdXBTdHlsZXM6IEdyb3VwU3R5bGVbXSA9IFtdO1xuICBsYXN0U2VudE1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInKVxuICBwcml2YXRlIHNjcm9sbENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuICBwcml2YXRlIGxhdGVzdE1lc3NhZ2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGhhc05ld01lc3NhZ2VzOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIGNvbnRhaW5lckhlaWdodDogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9sZGVzdE1lc3NhZ2VEYXRlOiBEYXRlIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIG9sZGVyTWFzc2FnZXNMb2FkZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgaXNOZXdNZXNzYWdlU2VudEJ5VXNlcjogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBhdXRob3JpemVkTWVzc2FnZUFjdGlvbnM6IE1lc3NhZ2VBY3Rpb25zW10gPSBbJ2ZsYWcnXTtcbiAgcHJpdmF0ZSByZWFkb25seSBpc1VzZXJTY3JvbGxlZFVwVGhyZXNob2xkID0gMzAwO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgaW1hZ2VMb2FkU2VydmljZTogSW1hZ2VMb2FkU2VydmljZVxuICApIHtcbiAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoY2hhbm5lbCkgPT4ge1xuICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlRGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSB0cnVlO1xuICAgICAgdGhpcy5pc1VzZXJTY3JvbGxlZFVwID0gZmFsc2U7XG4gICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlRGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMudW5yZWFkTWVzc2FnZUNvdW50ID0gMDtcbiAgICAgIHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlciA9IHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IGNhcGFiaWxpdGVzID0gY2hhbm5lbD8uZGF0YT8ub3duX2NhcGFiaWxpdGllcyBhcyBzdHJpbmdbXTtcbiAgICAgIGlmIChjYXBhYmlsaXRlcykge1xuICAgICAgICB0aGlzLmNhblJlYWN0VG9NZXNzYWdlID0gY2FwYWJpbGl0ZXMuaW5kZXhPZignc2VuZC1yZWFjdGlvbicpICE9PSAtMTtcbiAgICAgICAgdGhpcy5jYW5SZWNlaXZlUmVhZEV2ZW50cyA9IGNhcGFiaWxpdGVzLmluZGV4T2YoJ3JlYWQtZXZlbnRzJykgIT09IC0xO1xuICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucyA9IFtdO1xuICAgICAgICBpZiAoY2FwYWJpbGl0ZXMuaW5kZXhPZignZmxhZy1tZXNzYWdlJykgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnZmxhZycpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXBhYmlsaXRlcy5pbmRleE9mKCd1cGRhdGUtb3duLW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdlZGl0Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhcGFiaWxpdGVzLmluZGV4T2YoJ3VwZGF0ZS1hbnktbWVzc2FnZScpICE9PSAtMSkge1xuICAgICAgICAgIHRoaXMuYXV0aG9yaXplZE1lc3NhZ2VBY3Rpb25zLnB1c2goJ2VkaXQnKTtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdlZGl0LWFueScpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYXBhYmlsaXRlcy5pbmRleE9mKCdkZWxldGUtb3duLW1lc3NhZ2UnKSAhPT0gLTEpIHtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5wdXNoKCdkZWxldGUnKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2FwYWJpbGl0ZXMuaW5kZXhPZignZGVsZXRlLWFueS1tZXNzYWdlJykgIT09IC0xKSB7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnZGVsZXRlJyk7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemVkTWVzc2FnZUFjdGlvbnMucHVzaCgnZGVsZXRlLWFueScpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2V0RW5hYmxlZEFjdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm1lc3NhZ2VzJCA9IHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbE1lc3NhZ2VzJC5waXBlKFxuICAgICAgdGFwKChtZXNzYWdlcykgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJlbnRMYXRlc3RNZXNzYWdlRGF0ZSA9XG4gICAgICAgICAgbWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV0uY3JlYXRlZF9hdDtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICF0aGlzLmxhdGVzdE1lc3NhZ2VEYXRlIHx8XG4gICAgICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlRGF0ZT8uZ2V0VGltZSgpIDwgY3VycmVudExhdGVzdE1lc3NhZ2VEYXRlLmdldFRpbWUoKVxuICAgICAgICApIHtcbiAgICAgICAgICB0aGlzLmxhdGVzdE1lc3NhZ2VEYXRlID0gY3VycmVudExhdGVzdE1lc3NhZ2VEYXRlO1xuICAgICAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuaXNOZXdNZXNzYWdlU2VudEJ5VXNlciA9XG4gICAgICAgICAgICBtZXNzYWdlc1ttZXNzYWdlcy5sZW5ndGggLSAxXS51c2VyPy5pZCA9PT1cbiAgICAgICAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8udXNlcj8uaWQ7XG4gICAgICAgICAgaWYgKHRoaXMuaXNVc2VyU2Nyb2xsZWRVcCkge1xuICAgICAgICAgICAgdGhpcy51bnJlYWRNZXNzYWdlQ291bnQrKztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VycmVudE9sZGVzdE1lc3NhZ2VEYXRlID0gbWVzc2FnZXNbMF0uY3JlYXRlZF9hdDtcbiAgICAgICAgaWYgKCF0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlKSB7XG4gICAgICAgICAgdGhpcy5vbGRlc3RNZXNzYWdlRGF0ZSA9IGN1cnJlbnRPbGRlc3RNZXNzYWdlRGF0ZTtcbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICB0aGlzLm9sZGVzdE1lc3NhZ2VEYXRlPy5nZXRUaW1lKCkgPiBjdXJyZW50T2xkZXN0TWVzc2FnZURhdGUuZ2V0VGltZSgpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMub2xkZXN0TWVzc2FnZURhdGUgPSBjdXJyZW50T2xkZXN0TWVzc2FnZURhdGU7XG4gICAgICAgICAgdGhpcy5vbGRlck1hc3NhZ2VzTG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgICB0YXAoKG1lc3NhZ2VzKSA9PiB7XG4gICAgICAgIHRoaXMuZ3JvdXBTdHlsZXMgPSBtZXNzYWdlcy5tYXAoKG0sIGkpID0+XG4gICAgICAgICAgZ2V0R3JvdXBTdHlsZXMobSwgbWVzc2FnZXNbaSAtIDFdLCBtZXNzYWdlc1tpICsgMV0pXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICAgIHRhcChcbiAgICAgICAgKG1lc3NhZ2VzKSA9PlxuICAgICAgICAgICh0aGlzLmxhc3RTZW50TWVzc2FnZUlkID0gWy4uLm1lc3NhZ2VzXVxuICAgICAgICAgICAgLnJldmVyc2UoKVxuICAgICAgICAgICAgLmZpbmQoXG4gICAgICAgICAgICAgIChtKSA9PlxuICAgICAgICAgICAgICAgIG0udXNlcj8uaWQgPT09IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudD8udXNlcj8uaWQgJiZcbiAgICAgICAgICAgICAgICBtLnN0YXR1cyAhPT0gJ3NlbmRpbmcnXG4gICAgICAgICAgICApPy5pZClcbiAgICAgIClcbiAgICApO1xuICAgIHRoaXMuaW1hZ2VMb2FkU2VydmljZS5pbWFnZUxvYWQkLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCkge1xuICAgICAgICB0aGlzLnNjcm9sbFRvQm90dG9tKCk7XG4gICAgICAgIC8vIEhhY2t5IGFuZCB1bnJlbGlhYmxlIHdvcmthcm91bmQgdG8gc2Nyb2xsIGRvd24gYWZ0ZXIgbG9hZGVkIGltYWdlcyBtb3ZlIHRoZSBzY3JvbGxiYXJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmVuYWJsZWRNZXNzYWdlQWN0aW9uc0lucHV0KSB7XG4gICAgICB0aGlzLnNldEVuYWJsZWRBY3Rpb25zKCk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgIGlmICh0aGlzLmhhc05ld01lc3NhZ2VzKSB7XG4gICAgICBpZiAoIXRoaXMuaXNVc2VyU2Nyb2xsZWRVcCB8fCB0aGlzLmlzTmV3TWVzc2FnZVNlbnRCeVVzZXIpIHtcbiAgICAgICAgdGhpcy5zY3JvbGxUb0JvdHRvbSgpO1xuICAgICAgICAvLyBIYWNreSBhbmQgdW5yZWxpYWJsZSB3b3JrYXJvdW5kIHRvIHNjcm9sbCBkb3duIGFmdGVyIGxvYWRlZCBpbWFnZXMgbW92ZSB0aGUgc2Nyb2xsYmFyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2Nyb2xsVG9Cb3R0b20oKTtcbiAgICAgICAgfSwgMzAwKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuaGFzTmV3TWVzc2FnZXMgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29udGFpbmVySGVpZ2h0ID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9sZGVyTWFzc2FnZXNMb2FkZWQpIHtcbiAgICAgIHRoaXMucHJlc2VydmVTY3JvbGxiYXJQb3NpdGlvbigpO1xuICAgICAgdGhpcy5jb250YWluZXJIZWlnaHQgPSB0aGlzLnNjcm9sbENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnNjcm9sbEhlaWdodDtcbiAgICAgIHRoaXMub2xkZXJNYXNzYWdlc0xvYWRlZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHRyYWNrQnlNZXNzYWdlSWQoaW5kZXg6IG51bWJlciwgaXRlbTogU3RyZWFtTWVzc2FnZSkge1xuICAgIHJldHVybiBpdGVtLmlkO1xuICB9XG5cbiAgc2Nyb2xsVG9Cb3R0b20oKTogdm9pZCB7XG4gICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQ7XG4gIH1cblxuICBzY3JvbGxlZCgpIHtcbiAgICB0aGlzLmlzVXNlclNjcm9sbGVkVXAgPVxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLVxuICAgICAgICAodGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgK1xuICAgICAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuY2xpZW50SGVpZ2h0KSA+XG4gICAgICB0aGlzLmlzVXNlclNjcm9sbGVkVXBUaHJlc2hvbGQ7XG4gICAgaWYgKCF0aGlzLmlzVXNlclNjcm9sbGVkVXApIHtcbiAgICAgIHRoaXMudW5yZWFkTWVzc2FnZUNvdW50ID0gMDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID09PSAwKSB7XG4gICAgICB0aGlzLmNvbnRhaW5lckhlaWdodCA9IHRoaXMuc2Nyb2xsQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLmxvYWRNb3JlTWVzc2FnZXMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHByZXNlcnZlU2Nyb2xsYmFyUG9zaXRpb24oKSB7XG4gICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxUb3AgPVxuICAgICAgdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudC5zY3JvbGxIZWlnaHQgLSB0aGlzLmNvbnRhaW5lckhlaWdodCE7XG4gIH1cblxuICBwcml2YXRlIHNldEVuYWJsZWRBY3Rpb25zKCkge1xuICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zID0gW107XG4gICAgaWYgKCF0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9uc0lucHV0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZW5hYmxlZE1lc3NhZ2VBY3Rpb25zSW5wdXQuZm9yRWFjaCgoYWN0aW9uKSA9PiB7XG4gICAgICBjb25zdCBpc0F1dGhvcml6ZWQgPSB0aGlzLmF1dGhvcml6ZWRNZXNzYWdlQWN0aW9ucy5pbmRleE9mKGFjdGlvbikgIT09IC0xO1xuICAgICAgaWYgKGlzQXV0aG9yaXplZCkge1xuICAgICAgICB0aGlzLmVuYWJsZWRNZXNzYWdlQWN0aW9ucy5wdXNoKGFjdGlvbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgI3Njcm9sbENvbnRhaW5lclxuICBkYXRhLXRlc3RpZD1cInNjcm9sbC1jb250YWluZXJcIlxuICBjbGFzcz1cInN0ci1jaGF0X19saXN0XCJcbiAgKHNjcm9sbCk9XCJzY3JvbGxlZCgpXCJcbj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19yZXZlcnNlLWluZmluaXRlLXNjcm9sbFwiPlxuICAgIDx1bCBjbGFzcz1cInN0ci1jaGF0X191bFwiPlxuICAgICAgPGxpXG4gICAgICAgIGRhdGEtdGVzdGNsYXNzPVwibWVzc2FnZVwiXG4gICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgIGxldCBtZXNzYWdlIG9mIG1lc3NhZ2VzJCB8IGFzeW5jO1xuICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgdHJhY2tCeTogdHJhY2tCeU1lc3NhZ2VJZFxuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19saSBzdHItY2hhdF9fbGktLXt7IGdyb3VwU3R5bGVzW2ldIH19XCJcbiAgICAgID5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0TWVzc2FnZVRlbXBsYXRlXCI+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgbWVzc2FnZVRlbXBsYXRlO1xuICAgICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZSxcbiAgICAgICAgICAgICAgICBhcmVSZWFjdGlvbnNFbmFibGVkOiBhcmVSZWFjdGlvbnNFbmFibGVkLFxuICAgICAgICAgICAgICAgIGNhblJlYWN0VG9NZXNzYWdlOiBjYW5SZWFjdFRvTWVzc2FnZSxcbiAgICAgICAgICAgICAgICBsYXN0U2VudE1lc3NhZ2VJZDogISEoXG4gICAgICAgICAgICAgICAgICBsYXN0U2VudE1lc3NhZ2VJZCAmJiBtZXNzYWdlPy5pZCA9PT0gbGFzdFNlbnRNZXNzYWdlSWRcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGNhblJlY2VpdmVSZWFkRXZlbnRzOiBjYW5SZWNlaXZlUmVhZEV2ZW50cyxcbiAgICAgICAgICAgICAgICBtZXNzYWdlSW5wdXRUZW1wbGF0ZTogbWVzc2FnZUlucHV0VGVtcGxhdGVcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNZXNzYWdlVGVtcGxhdGU+XG4gICAgICAgICAgPHN0cmVhbS1tZXNzYWdlXG4gICAgICAgICAgICBbbWVzc2FnZV09XCJtZXNzYWdlXCJcbiAgICAgICAgICAgIFthcmVSZWFjdGlvbnNFbmFibGVkXT1cImFyZVJlYWN0aW9uc0VuYWJsZWRcIlxuICAgICAgICAgICAgW2NhblJlYWN0VG9NZXNzYWdlXT1cImNhblJlYWN0VG9NZXNzYWdlXCJcbiAgICAgICAgICAgIFtpc0xhc3RTZW50TWVzc2FnZV09XCJcbiAgICAgICAgICAgICAgISEobGFzdFNlbnRNZXNzYWdlSWQgJiYgbWVzc2FnZT8uaWQgPT09IGxhc3RTZW50TWVzc2FnZUlkKVxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtlbmFibGVkTWVzc2FnZUFjdGlvbnNdPVwiZW5hYmxlZE1lc3NhZ2VBY3Rpb25zXCJcbiAgICAgICAgICAgIFtjYW5SZWNlaXZlUmVhZEV2ZW50c109XCJjYW5SZWNlaXZlUmVhZEV2ZW50c1wiXG4gICAgICAgICAgICBbbWVzc2FnZUlucHV0VGVtcGxhdGVdPVwibWVzc2FnZUlucHV0VGVtcGxhdGVcIlxuICAgICAgICAgID48L3N0cmVhbS1tZXNzYWdlPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9saT5cbiAgICA8L3VsPlxuICA8L2Rpdj5cbjwvZGl2PlxuPGRpdiBjbGFzcz1cInN0ci1jaGF0X19saXN0LW5vdGlmaWNhdGlvbnNcIj5cbiAgPGJ1dHRvblxuICAgIGRhdGEtdGVzdGlkPVwic2Nyb2xsLXRvLWJvdHRvbVwiXG4gICAgKm5nSWY9XCJpc1VzZXJTY3JvbGxlZFVwXCJcbiAgICBjbGFzcz1cIlxuICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uXG4gICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb24tcmlnaHRcbiAgICAgIHN0ci1jaGF0X19tZXNzYWdlLW5vdGlmaWNhdGlvbi1zY3JvbGwtZG93blxuICAgIFwiXG4gICAgKGtleXVwLmVudGVyKT1cInNjcm9sbFRvQm90dG9tKClcIlxuICAgIChjbGljayk9XCJzY3JvbGxUb0JvdHRvbSgpXCJcbiAgPlxuICAgIDxkaXZcbiAgICAgICpuZ0lmPVwidW5yZWFkTWVzc2FnZUNvdW50ID4gMFwiXG4gICAgICBjbGFzcz1cIlxuICAgICAgICBzdHItY2hhdF9fbWVzc2FnZS1ub3RpZmljYXRpb25cbiAgICAgICAgc3RyLWNoYXRfX21lc3NhZ2Utbm90aWZpY2F0aW9uLXNjcm9sbC1kb3duLXVucmVhZC1jb3VudFxuICAgICAgXCJcbiAgICA+XG4gICAgICB7eyB1bnJlYWRNZXNzYWdlQ291bnQgfX1cbiAgICA8L2Rpdj5cbiAgPC9idXR0b24+XG48L2Rpdj5cbiJdfQ==
|