stream-chat-angular 2.12.1 → 2.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- export const version = '2.12.1';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICcyLjEyLjEnO1xuIl19
1
+ export const version = '2.12.2';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICcyLjEyLjInO1xuIl19
@@ -104,7 +104,7 @@ export class MessageReactionsComponent {
104
104
  }
105
105
  }
106
106
  MessageReactionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.ChannelService }], target: i0.ɵɵFactoryTarget.Component });
107
- MessageReactionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageReactionsComponent, selector: "stream-message-reactions", inputs: { messageId: "messageId", messageReactionCounts: "messageReactionCounts", isSelectorOpen: "isSelectorOpen", latestReactions: "latestReactions", ownReactions: "ownReactions" }, outputs: { isSelectorOpenChange: "isSelectorOpenChange" }, viewQueries: [{ propertyName: "selectorContainer", first: true, predicate: ["selectorContainer"], descendants: true }, { propertyName: "selectorTooltip", first: true, predicate: ["selectorTooltip"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"existingReactions.length > 0 && !isSelectorOpen\"\n class=\"str-chat__reaction-list\"\n [class.str-chat__reaction-list--reverse]=\"true\"\n data-testid=\"reaction-list\"\n>\n <ul>\n <li\n *ngFor=\"\n let reactionType of existingReactions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji\"\n >\n <span class=\"emoji\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n &nbsp;\n </li>\n <li>\n <span\n data-testid=\"reactions-count\"\n class=\"str-chat__reaction-list--counter\"\n >{{ reactionsCount }}</span\n >\n </li>\n </ul>\n</div>\n\n<div\n #selectorContainer\n class=\"str-chat__reaction-selector\"\n *ngIf=\"isSelectorOpen\"\n data-testid=\"reaction-selector\"\n>\n <div\n *ngIf=\"tooltipText\"\n data-testid=\"tooltip\"\n #selectorTooltip\n class=\"str-chat__reaction-selector-tooltip\"\n [ngStyle]=\"{\n left: tooltipPositions?.tooltip + 'px',\n visibility: tooltipPositions ? 'visible' : 'hidden'\n }\"\n >\n <div\n class=\"arrow\"\n [ngStyle]=\"{ left: tooltipPositions?.arrow + 'px' }\"\n ></div>\n <span class=\"latest-user-username\">\n {{ tooltipText }}\n </span>\n </div>\n <ul class=\"str-chat__message-reactions-list\">\n <li\n class=\"str-chat__message-reactions-list-item\"\n *ngFor=\"\n let reactionType of reactionOptions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji-option\"\n (click)=\"react(reactionType)\"\n (keyup.enter)=\"react(reactionType)\"\n >\n <div\n *ngIf=\"getLatestUserByReaction(reactionType) as user\"\n class=\"latest-user\"\n (click)=\"hideTooltip()\"\n (keyup.enter)=\"hideTooltip()\"\n (mouseenter)=\"showTooltip($event, reactionType)\"\n (mouseleave)=\"hideTooltip()\"\n attr.data-testid=\"{{ reactionType }}-last-user\"\n >\n <stream-avatar\n attr.data-testid=\"{{ reactionType }}-avatar\"\n [imageUrl]=\"user.image\"\n [name]=\"user.name || user.id\"\n [size]=\"20\"\n ></stream-avatar>\n </div>\n <span class=\"emoji\" style=\"width: 20px; height: 20px; top: 10px\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n <span\n *ngIf=\"\n messageReactionCounts[reactionType] &&\n messageReactionCounts[reactionType]! > 0\n \"\n class=\"str-chat__message-reactions-list-item__count\"\n attr.data-testid=\"{{ reactionType }}-reaction-count\"\n >\n {{ messageReactionCounts[reactionType] }}\n </span>\n </li>\n </ul>\n</div>\n", styles: [".emoji {position: relative; display: inline-block; }"], components: [{ type: i2.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
107
+ MessageReactionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageReactionsComponent, selector: "stream-message-reactions", inputs: { messageId: "messageId", messageReactionCounts: "messageReactionCounts", isSelectorOpen: "isSelectorOpen", latestReactions: "latestReactions", ownReactions: "ownReactions" }, outputs: { isSelectorOpenChange: "isSelectorOpenChange" }, viewQueries: [{ propertyName: "selectorContainer", first: true, predicate: ["selectorContainer"], descendants: true }, { propertyName: "selectorTooltip", first: true, predicate: ["selectorTooltip"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"existingReactions.length > 0 && !isSelectorOpen\"\n class=\"str-chat__reaction-list\"\n [class.str-chat__reaction-list--reverse]=\"true\"\n data-testid=\"reaction-list\"\n>\n <ul>\n <li\n *ngFor=\"\n let reactionType of existingReactions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji\"\n >\n <span class=\"emoji\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n &nbsp;\n </li>\n <li>\n <span\n data-testid=\"reactions-count\"\n class=\"str-chat__reaction-list--counter\"\n >{{ reactionsCount }}</span\n >\n </li>\n </ul>\n</div>\n\n<div\n #selectorContainer\n class=\"str-chat__reaction-selector\"\n *ngIf=\"isSelectorOpen\"\n data-testid=\"reaction-selector\"\n>\n <div\n *ngIf=\"tooltipText\"\n data-testid=\"tooltip\"\n #selectorTooltip\n class=\"str-chat__reaction-selector-tooltip\"\n [ngStyle]=\"{\n left: tooltipPositions?.tooltip + 'px',\n visibility: tooltipPositions ? 'visible' : 'hidden'\n }\"\n >\n <div\n class=\"arrow\"\n [ngStyle]=\"{ left: tooltipPositions?.arrow + 'px' }\"\n ></div>\n <span class=\"latest-user-username\">\n {{ tooltipText }}\n </span>\n </div>\n <ul class=\"str-chat__message-reactions-list\">\n <li\n class=\"str-chat__message-reactions-list-item emoji-mart-emoji\"\n *ngFor=\"\n let reactionType of reactionOptions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji-option\"\n (click)=\"react(reactionType)\"\n (keyup.enter)=\"react(reactionType)\"\n >\n <div\n *ngIf=\"getLatestUserByReaction(reactionType) as user\"\n class=\"latest-user\"\n (click)=\"hideTooltip()\"\n (keyup.enter)=\"hideTooltip()\"\n (mouseenter)=\"showTooltip($event, reactionType)\"\n (mouseleave)=\"hideTooltip()\"\n attr.data-testid=\"{{ reactionType }}-last-user\"\n >\n <stream-avatar\n attr.data-testid=\"{{ reactionType }}-avatar\"\n [imageUrl]=\"user.image\"\n [name]=\"user.name || user.id\"\n [size]=\"20\"\n ></stream-avatar>\n </div>\n <span class=\"emoji\" style=\"width: 20px; height: 20px; top: 10px\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n <span\n *ngIf=\"\n messageReactionCounts[reactionType] &&\n messageReactionCounts[reactionType]! > 0\n \"\n class=\"str-chat__message-reactions-list-item__count\"\n attr.data-testid=\"{{ reactionType }}-reaction-count\"\n >\n {{ messageReactionCounts[reactionType] }}\n </span>\n </li>\n </ul>\n</div>\n", styles: [".emoji {position: relative; display: inline-block; }"], components: [{ type: i2.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
108
108
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsComponent, decorators: [{
109
109
  type: Component,
110
110
  args: [{
@@ -131,4 +131,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
131
131
  type: ViewChild,
132
132
  args: ['selectorTooltip']
133
133
  }] } });
134
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXJlYWN0aW9ucy9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFhdkIsTUFBTSxxQkFBcUIsR0FBNkM7SUFDdEUsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtJQUNYLElBQUksRUFBRSxJQUFJO0lBQ1YsSUFBSSxFQUFFLElBQUk7SUFDVixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0NBQ1YsQ0FBQztBQU1GLE1BQU0sT0FBTyx5QkFBeUI7SUF3QnBDLFlBQ1UsS0FBd0IsRUFDeEIsY0FBOEI7UUFEOUIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBeEIvQiwwQkFBcUIsR0FDNUIsRUFBRSxDQUFDO1FBQ0ksbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDdEIseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3RCxvQkFBZSxHQUdsQixFQUFFLENBQUM7UUFDQSxpQkFBWSxHQUdmLEVBQUUsQ0FBQztRQXNGRCxpQkFBWSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7O1lBQ3RDLElBQUksQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxhQUFhLENB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U0FBUyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUUxRSxNQUFNLGFBQWEsR0FDakIsTUFBTSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQztRQUU1RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsT0FBTyxFQUFFLGVBQWU7WUFDeEIsS0FBSyxFQUFFLGFBQWE7U0FDckIsQ0FBQztJQUNKLENBQUM7O3NIQXRJVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixxaUJDckN0Qyx3ckZBZ0dBOzJGRDNEYSx5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsTUFBTSxFQUFFLENBQUMsc0RBQXNELENBQUM7aUJBQ2pFO3FJQUVVLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ2Esb0JBQW9CO3NCQUF0QyxNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFNa0MsaUJBQWlCO3NCQUF4RCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFHUSxlQUFlO3NCQUFwRCxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3Rpb25SZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IERlZmF1bHRSZWFjdGlvblR5cGUsIERlZmF1bHRVc2VyVHlwZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uVHlwZSA9XG4gIHwgJ2FuZ3J5J1xuICB8ICdoYWhhJ1xuICB8ICdsaWtlJ1xuICB8ICdsb3ZlJ1xuICB8ICdzYWQnXG4gIHwgJ3dvdyc7XG5cbmNvbnN0IGVtb2ppUmVhY3Rpb25zTWFwcGluZzogeyBba2V5IGluIE1lc3NhZ2VSZWFjdGlvblR5cGVdOiBzdHJpbmcgfSA9IHtcbiAgbGlrZTogJ/CfkY0nLFxuICBhbmdyeTogJ/CfmKAnLFxuICBsb3ZlOiAn4p2k77iPJyxcbiAgaGFoYTogJ/CfmIInLFxuICB3b3c6ICfwn5iuJyxcbiAgc2FkOiAn8J+YnicsXG59O1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtcmVhY3Rpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbJy5lbW9qaSB7cG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0nXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVJlYWN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXT86IG51bWJlciB9ID1cbiAgICB7fTtcbiAgQElucHV0KCkgaXNTZWxlY3Rvck9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGlzU2VsZWN0b3JPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBASW5wdXQoKSBsYXRlc3RSZWFjdGlvbnM6IFJlYWN0aW9uUmVzcG9uc2U8XG4gICAgRGVmYXVsdFJlYWN0aW9uVHlwZSxcbiAgICBEZWZhdWx0VXNlclR5cGVcbiAgPltdID0gW107XG4gIEBJbnB1dCgpIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxcbiAgICBEZWZhdWx0UmVhY3Rpb25UeXBlLFxuICAgIERlZmF1bHRVc2VyVHlwZVxuICA+W10gPSBbXTtcbiAgdG9vbHRpcFBvc2l0aW9uczogeyBhcnJvdzogbnVtYmVyOyB0b29sdGlwOiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0b3JDb250YWluZXInKSBwcml2YXRlIHNlbGVjdG9yQ29udGFpbmVyOlxuICAgIHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0b3JUb29sdGlwJykgcHJpdmF0ZSBzZWxlY3RvclRvb2x0aXA6XG4gICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuICBjdXJyZW50VG9vbHRpcFRhcmdldDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5pc1NlbGVjdG9yT3Blbikge1xuICAgICAgdGhpcy5pc1NlbGVjdG9yT3BlblxuICAgICAgICA/IHNldFRpbWVvdXQoKCkgPT4gdGhpcy53YXRjaEZvck91dHNpZGVDbGlja3MoKSkgLy8gc2V0VGltZW91dDogd2FpdCBmb3IgY3VycmVudCBjbGljayB0byBidWJibGUgdXAsIGFuZCBvbmx5IHdhdGNoIGZvciBjbGlja3MgYWZ0ZXIgdGhhdFxuICAgICAgICA6IHRoaXMuc3RvcFdhdGNoRm9yT3V0c2lkZUNsaWNrcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b29sdGlwVGV4dCAmJiAhdGhpcy50b29sdGlwUG9zaXRpb25zKSB7XG4gICAgICB0aGlzLnNldFRvb2x0aXBQb3NpdGlvbigpO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGV4aXN0aW5nUmVhY3Rpb25zKCk6IE1lc3NhZ2VSZWFjdGlvblR5cGVbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVzc2FnZVJlYWN0aW9uQ291bnRzKS5maWx0ZXIoXG4gICAgICAoaykgPT4gdGhpcy5tZXNzYWdlUmVhY3Rpb25Db3VudHNbayBhcyBNZXNzYWdlUmVhY3Rpb25UeXBlXSEgPiAwXG4gICAgKSBhcyBNZXNzYWdlUmVhY3Rpb25UeXBlW107XG4gIH1cblxuICBnZXQgcmVhY3Rpb25zQ291bnQoKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5tZXNzYWdlUmVhY3Rpb25Db3VudHMpLnJlZHVjZShcbiAgICAgICh0b3RhbCwgY291bnQpID0+IHRvdGFsICsgY291bnQsXG4gICAgICAwXG4gICAgKTtcbiAgfVxuXG4gIGdldCByZWFjdGlvbk9wdGlvbnMoKTogTWVzc2FnZVJlYWN0aW9uVHlwZVtdIHtcbiAgICByZXR1cm4gWydsaWtlJywgJ2xvdmUnLCAnaGFoYScsICd3b3cnLCAnc2FkJywgJ2FuZ3J5J107XG4gIH1cblxuICBnZXRMYXRlc3RVc2VyQnlSZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5sYXRlc3RSZWFjdGlvbnMuZmluZCgocikgPT4gci50eXBlID09PSByZWFjdGlvblR5cGUgJiYgci51c2VyKVxuICAgICAgPy51c2VyO1xuICB9XG5cbiAgZ2V0RW1vamlCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZTogTWVzc2FnZVJlYWN0aW9uVHlwZSkge1xuICAgIHJldHVybiBlbW9qaVJlYWN0aW9uc01hcHBpbmdbcmVhY3Rpb25UeXBlXTtcbiAgfVxuXG4gIGdldFVzZXJzQnlSZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5sYXRlc3RSZWFjdGlvbnNcbiAgICAgIC5maWx0ZXIoKHIpID0+IHIudHlwZSA9PT0gcmVhY3Rpb25UeXBlKVxuICAgICAgLm1hcCgocikgPT4gci51c2VyPy5uYW1lIHx8IHIudXNlcj8uaWQpXG4gICAgICAuZmlsdGVyKChpKSA9PiAhIWkpXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxuXG4gIHNob3dUb29sdGlwKGV2ZW50OiBFdmVudCwgcmVhY3Rpb25UeXBlOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcFRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdGhpcy5nZXRVc2Vyc0J5UmVhY3Rpb24ocmVhY3Rpb25UeXBlKTtcbiAgfVxuXG4gIGhpZGVUb29sdGlwKCkge1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcFRhcmdldCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRvb2x0aXBQb3NpdGlvbnMgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0cmFja0J5TWVzc2FnZVJlYWN0aW9uKGluZGV4OiBudW1iZXIsIGl0ZW06IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHJlYWN0KHR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICB0aGlzLm93blJlYWN0aW9ucy5maW5kKChyKSA9PiByLnR5cGUgPT09IHR5cGUpXG4gICAgICA/IHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5yZW1vdmVSZWFjdGlvbih0aGlzLm1lc3NhZ2VJZCEsIHR5cGUpXG4gICAgICA6IHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5hZGRSZWFjdGlvbih0aGlzLm1lc3NhZ2VJZCEsIHR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBldmVudEhhbmRsZXIgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdG9yQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgdGhpcy5pc1NlbGVjdG9yT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSB3YXRjaEZvck91dHNpZGVDbGlja3MoKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5ldmVudEhhbmRsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wV2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZXZlbnRIYW5kbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VG9vbHRpcFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLnNlbGVjdG9yVG9vbHRpcD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmN1cnJlbnRUb29sdGlwVGFyZ2V0Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9XG4gICAgICB0aGlzLnNlbGVjdG9yQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKCF0b29sdGlwIHx8ICF0YXJnZXQgfHwgIWNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgY29uc3QgdG9vbHRpcFBvc2l0aW9uID1cbiAgICAgIHRvb2x0aXAud2lkdGggPT09IGNvbnRhaW5lci53aWR0aCB8fCB0b29sdGlwLnggPCBjb250YWluZXIueFxuICAgICAgICA/IDBcbiAgICAgICAgOiB0YXJnZXQubGVmdCArIHRhcmdldC53aWR0aCAvIDIgLSBjb250YWluZXIubGVmdCAtIHRvb2x0aXAud2lkdGggLyAyO1xuXG4gICAgY29uc3QgYXJyb3dQb3NpdGlvbiA9XG4gICAgICB0YXJnZXQueCAtIHRvb2x0aXAueCArIHRhcmdldC53aWR0aCAvIDIgLSB0b29sdGlwUG9zaXRpb247XG5cbiAgICB0aGlzLnRvb2x0aXBQb3NpdGlvbnMgPSB7XG4gICAgICB0b29sdGlwOiB0b29sdGlwUG9zaXRpb24sXG4gICAgICBhcnJvdzogYXJyb3dQb3NpdGlvbixcbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiZXhpc3RpbmdSZWFjdGlvbnMubGVuZ3RoID4gMCAmJiAhaXNTZWxlY3Rvck9wZW5cIlxuICBjbGFzcz1cInN0ci1jaGF0X19yZWFjdGlvbi1saXN0XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19yZWFjdGlvbi1saXN0LS1yZXZlcnNlXT1cInRydWVcIlxuICBkYXRhLXRlc3RpZD1cInJlYWN0aW9uLWxpc3RcIlxuPlxuICA8dWw+XG4gICAgPGxpXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IHJlYWN0aW9uVHlwZSBvZiBleGlzdGluZ1JlYWN0aW9ucztcbiAgICAgICAgdHJhY2tCeTogdHJhY2tCeU1lc3NhZ2VSZWFjdGlvblxuICAgICAgXCJcbiAgICAgIGRhdGEtdGVzdGNsYXNzPVwiZW1vamlcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZW1vamlcIj5cbiAgICAgICAge3sgZ2V0RW1vamlCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgICZuYnNwO1xuICAgIDwvbGk+XG4gICAgPGxpPlxuICAgICAgPHNwYW5cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWFjdGlvbnMtY291bnRcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19yZWFjdGlvbi1saXN0LS1jb3VudGVyXCJcbiAgICAgICAgPnt7IHJlYWN0aW9uc0NvdW50IH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuXG48ZGl2XG4gICNzZWxlY3RvckNvbnRhaW5lclxuICBjbGFzcz1cInN0ci1jaGF0X19yZWFjdGlvbi1zZWxlY3RvclwiXG4gICpuZ0lmPVwiaXNTZWxlY3Rvck9wZW5cIlxuICBkYXRhLXRlc3RpZD1cInJlYWN0aW9uLXNlbGVjdG9yXCJcbj5cbiAgPGRpdlxuICAgICpuZ0lmPVwidG9vbHRpcFRleHRcIlxuICAgIGRhdGEtdGVzdGlkPVwidG9vbHRpcFwiXG4gICAgI3NlbGVjdG9yVG9vbHRpcFxuICAgIGNsYXNzPVwic3RyLWNoYXRfX3JlYWN0aW9uLXNlbGVjdG9yLXRvb2x0aXBcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGxlZnQ6IHRvb2x0aXBQb3NpdGlvbnM/LnRvb2x0aXAgKyAncHgnLFxuICAgICAgdmlzaWJpbGl0eTogdG9vbHRpcFBvc2l0aW9ucyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXG4gICAgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImFycm93XCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgbGVmdDogdG9vbHRpcFBvc2l0aW9ucz8uYXJyb3cgKyAncHgnIH1cIlxuICAgID48L2Rpdj5cbiAgICA8c3BhbiBjbGFzcz1cImxhdGVzdC11c2VyLXVzZXJuYW1lXCI+XG4gICAgICB7eyB0b29sdGlwVGV4dCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDx1bCBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1saXN0XCI+XG4gICAgPGxpXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1saXN0LWl0ZW1cIlxuICAgICAgKm5nRm9yPVwiXG4gICAgICAgIGxldCByZWFjdGlvblR5cGUgb2YgcmVhY3Rpb25PcHRpb25zO1xuICAgICAgICB0cmFja0J5OiB0cmFja0J5TWVzc2FnZVJlYWN0aW9uXG4gICAgICBcIlxuICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJlbW9qaS1vcHRpb25cIlxuICAgICAgKGNsaWNrKT1cInJlYWN0KHJlYWN0aW9uVHlwZSlcIlxuICAgICAgKGtleXVwLmVudGVyKT1cInJlYWN0KHJlYWN0aW9uVHlwZSlcIlxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJnZXRMYXRlc3RVc2VyQnlSZWFjdGlvbihyZWFjdGlvblR5cGUpIGFzIHVzZXJcIlxuICAgICAgICBjbGFzcz1cImxhdGVzdC11c2VyXCJcbiAgICAgICAgKGNsaWNrKT1cImhpZGVUb29sdGlwKClcIlxuICAgICAgICAoa2V5dXAuZW50ZXIpPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgICAgIChtb3VzZWVudGVyKT1cInNob3dUb29sdGlwKCRldmVudCwgcmVhY3Rpb25UeXBlKVwiXG4gICAgICAgIChtb3VzZWxlYXZlKT1cImhpZGVUb29sdGlwKClcIlxuICAgICAgICBhdHRyLmRhdGEtdGVzdGlkPVwie3sgcmVhY3Rpb25UeXBlIH19LWxhc3QtdXNlclwiXG4gICAgICA+XG4gICAgICAgIDxzdHJlYW0tYXZhdGFyXG4gICAgICAgICAgYXR0ci5kYXRhLXRlc3RpZD1cInt7IHJlYWN0aW9uVHlwZSB9fS1hdmF0YXJcIlxuICAgICAgICAgIFtpbWFnZVVybF09XCJ1c2VyLmltYWdlXCJcbiAgICAgICAgICBbbmFtZV09XCJ1c2VyLm5hbWUgfHwgdXNlci5pZFwiXG4gICAgICAgICAgW3NpemVdPVwiMjBcIlxuICAgICAgICA+PC9zdHJlYW0tYXZhdGFyPlxuICAgICAgPC9kaXY+XG4gICAgICA8c3BhbiBjbGFzcz1cImVtb2ppXCIgc3R5bGU9XCJ3aWR0aDogMjBweDsgaGVpZ2h0OiAyMHB4OyB0b3A6IDEwcHhcIj5cbiAgICAgICAge3sgZ2V0RW1vamlCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgbWVzc2FnZVJlYWN0aW9uQ291bnRzW3JlYWN0aW9uVHlwZV0gJiZcbiAgICAgICAgICBtZXNzYWdlUmVhY3Rpb25Db3VudHNbcmVhY3Rpb25UeXBlXSEgPiAwXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWxpc3QtaXRlbV9fY291bnRcIlxuICAgICAgICBhdHRyLmRhdGEtdGVzdGlkPVwie3sgcmVhY3Rpb25UeXBlIH19LXJlYWN0aW9uLWNvdW50XCJcbiAgICAgID5cbiAgICAgICAge3sgbWVzc2FnZVJlYWN0aW9uQ291bnRzW3JlYWN0aW9uVHlwZV0gfX1cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2xpPlxuICA8L3VsPlxuPC9kaXY+XG4iXX0=
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXJlYWN0aW9ucy9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFhdkIsTUFBTSxxQkFBcUIsR0FBNkM7SUFDdEUsSUFBSSxFQUFFLElBQUk7SUFDVixLQUFLLEVBQUUsSUFBSTtJQUNYLElBQUksRUFBRSxJQUFJO0lBQ1YsSUFBSSxFQUFFLElBQUk7SUFDVixHQUFHLEVBQUUsSUFBSTtJQUNULEdBQUcsRUFBRSxJQUFJO0NBQ1YsQ0FBQztBQU1GLE1BQU0sT0FBTyx5QkFBeUI7SUF3QnBDLFlBQ1UsS0FBd0IsRUFDeEIsY0FBOEI7UUFEOUIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBeEIvQiwwQkFBcUIsR0FDNUIsRUFBRSxDQUFDO1FBQ0ksbUJBQWMsR0FBWSxLQUFLLENBQUM7UUFDdEIseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUM3RCxvQkFBZSxHQUdsQixFQUFFLENBQUM7UUFDQSxpQkFBWSxHQUdmLEVBQUUsQ0FBQztRQXNGRCxpQkFBWSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7O1lBQ3RDLElBQUksQ0FBQyxDQUFBLE1BQUEsSUFBSSxDQUFDLGlCQUFpQiwwQ0FBRSxhQUFhLENB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U0FBUyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1lBQzFELENBQUMsQ0FBQyxDQUFDO1lBQ0gsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUUxRSxNQUFNLGFBQWEsR0FDakIsTUFBTSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLGVBQWUsQ0FBQztRQUU1RCxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDdEIsT0FBTyxFQUFFLGVBQWU7WUFDeEIsS0FBSyxFQUFFLGFBQWE7U0FDckIsQ0FBQztJQUNKLENBQUM7O3NIQXRJVSx5QkFBeUI7MEdBQXpCLHlCQUF5QixxaUJDckN0Qyx5c0ZBZ0dBOzJGRDNEYSx5QkFBeUI7a0JBTHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDBCQUEwQjtvQkFDcEMsV0FBVyxFQUFFLG9DQUFvQztvQkFDakQsTUFBTSxFQUFFLENBQUMsc0RBQXNELENBQUM7aUJBQ2pFO3FJQUVVLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0cscUJBQXFCO3NCQUE3QixLQUFLO2dCQUVHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ2Esb0JBQW9CO3NCQUF0QyxNQUFNO2dCQUNFLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFNa0MsaUJBQWlCO3NCQUF4RCxTQUFTO3VCQUFDLG1CQUFtQjtnQkFHUSxlQUFlO3NCQUFwRCxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3Rpb25SZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IERlZmF1bHRSZWFjdGlvblR5cGUsIERlZmF1bHRVc2VyVHlwZSB9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgTWVzc2FnZVJlYWN0aW9uVHlwZSA9XG4gIHwgJ2FuZ3J5J1xuICB8ICdoYWhhJ1xuICB8ICdsaWtlJ1xuICB8ICdsb3ZlJ1xuICB8ICdzYWQnXG4gIHwgJ3dvdyc7XG5cbmNvbnN0IGVtb2ppUmVhY3Rpb25zTWFwcGluZzogeyBba2V5IGluIE1lc3NhZ2VSZWFjdGlvblR5cGVdOiBzdHJpbmcgfSA9IHtcbiAgbGlrZTogJ/CfkY0nLFxuICBhbmdyeTogJ/CfmKAnLFxuICBsb3ZlOiAn4p2k77iPJyxcbiAgaGFoYTogJ/CfmIInLFxuICB3b3c6ICfwn5iuJyxcbiAgc2FkOiAn8J+YnicsXG59O1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLW1lc3NhZ2UtcmVhY3Rpb25zJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbJy5lbW9qaSB7cG9zaXRpb246IHJlbGF0aXZlOyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0nXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVJlYWN0aW9uc0NvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0NoZWNrZWQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBASW5wdXQoKSBtZXNzYWdlUmVhY3Rpb25Db3VudHM6IHsgW2tleSBpbiBNZXNzYWdlUmVhY3Rpb25UeXBlXT86IG51bWJlciB9ID1cbiAgICB7fTtcbiAgQElucHV0KCkgaXNTZWxlY3Rvck9wZW46IGJvb2xlYW4gPSBmYWxzZTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGlzU2VsZWN0b3JPcGVuQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBASW5wdXQoKSBsYXRlc3RSZWFjdGlvbnM6IFJlYWN0aW9uUmVzcG9uc2U8XG4gICAgRGVmYXVsdFJlYWN0aW9uVHlwZSxcbiAgICBEZWZhdWx0VXNlclR5cGVcbiAgPltdID0gW107XG4gIEBJbnB1dCgpIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxcbiAgICBEZWZhdWx0UmVhY3Rpb25UeXBlLFxuICAgIERlZmF1bHRVc2VyVHlwZVxuICA+W10gPSBbXTtcbiAgdG9vbHRpcFBvc2l0aW9uczogeyBhcnJvdzogbnVtYmVyOyB0b29sdGlwOiBudW1iZXIgfSB8IHVuZGVmaW5lZDtcbiAgdG9vbHRpcFRleHQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0b3JDb250YWluZXInKSBwcml2YXRlIHNlbGVjdG9yQ29udGFpbmVyOlxuICAgIHwgRWxlbWVudFJlZjxIVE1MRWxlbWVudD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgnc2VsZWN0b3JUb29sdGlwJykgcHJpdmF0ZSBzZWxlY3RvclRvb2x0aXA6XG4gICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuICBjdXJyZW50VG9vbHRpcFRhcmdldDogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5pc1NlbGVjdG9yT3Blbikge1xuICAgICAgdGhpcy5pc1NlbGVjdG9yT3BlblxuICAgICAgICA/IHNldFRpbWVvdXQoKCkgPT4gdGhpcy53YXRjaEZvck91dHNpZGVDbGlja3MoKSkgLy8gc2V0VGltZW91dDogd2FpdCBmb3IgY3VycmVudCBjbGljayB0byBidWJibGUgdXAsIGFuZCBvbmx5IHdhdGNoIGZvciBjbGlja3MgYWZ0ZXIgdGhhdFxuICAgICAgICA6IHRoaXMuc3RvcFdhdGNoRm9yT3V0c2lkZUNsaWNrcygpO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy50b29sdGlwVGV4dCAmJiAhdGhpcy50b29sdGlwUG9zaXRpb25zKSB7XG4gICAgICB0aGlzLnNldFRvb2x0aXBQb3NpdGlvbigpO1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGV4aXN0aW5nUmVhY3Rpb25zKCk6IE1lc3NhZ2VSZWFjdGlvblR5cGVbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMubWVzc2FnZVJlYWN0aW9uQ291bnRzKS5maWx0ZXIoXG4gICAgICAoaykgPT4gdGhpcy5tZXNzYWdlUmVhY3Rpb25Db3VudHNbayBhcyBNZXNzYWdlUmVhY3Rpb25UeXBlXSEgPiAwXG4gICAgKSBhcyBNZXNzYWdlUmVhY3Rpb25UeXBlW107XG4gIH1cblxuICBnZXQgcmVhY3Rpb25zQ291bnQoKSB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5tZXNzYWdlUmVhY3Rpb25Db3VudHMpLnJlZHVjZShcbiAgICAgICh0b3RhbCwgY291bnQpID0+IHRvdGFsICsgY291bnQsXG4gICAgICAwXG4gICAgKTtcbiAgfVxuXG4gIGdldCByZWFjdGlvbk9wdGlvbnMoKTogTWVzc2FnZVJlYWN0aW9uVHlwZVtdIHtcbiAgICByZXR1cm4gWydsaWtlJywgJ2xvdmUnLCAnaGFoYScsICd3b3cnLCAnc2FkJywgJ2FuZ3J5J107XG4gIH1cblxuICBnZXRMYXRlc3RVc2VyQnlSZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5sYXRlc3RSZWFjdGlvbnMuZmluZCgocikgPT4gci50eXBlID09PSByZWFjdGlvblR5cGUgJiYgci51c2VyKVxuICAgICAgPy51c2VyO1xuICB9XG5cbiAgZ2V0RW1vamlCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZTogTWVzc2FnZVJlYWN0aW9uVHlwZSkge1xuICAgIHJldHVybiBlbW9qaVJlYWN0aW9uc01hcHBpbmdbcmVhY3Rpb25UeXBlXTtcbiAgfVxuXG4gIGdldFVzZXJzQnlSZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5sYXRlc3RSZWFjdGlvbnNcbiAgICAgIC5maWx0ZXIoKHIpID0+IHIudHlwZSA9PT0gcmVhY3Rpb25UeXBlKVxuICAgICAgLm1hcCgocikgPT4gci51c2VyPy5uYW1lIHx8IHIudXNlcj8uaWQpXG4gICAgICAuZmlsdGVyKChpKSA9PiAhIWkpXG4gICAgICAuam9pbignLCAnKTtcbiAgfVxuXG4gIHNob3dUb29sdGlwKGV2ZW50OiBFdmVudCwgcmVhY3Rpb25UeXBlOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcFRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnRvb2x0aXBUZXh0ID0gdGhpcy5nZXRVc2Vyc0J5UmVhY3Rpb24ocmVhY3Rpb25UeXBlKTtcbiAgfVxuXG4gIGhpZGVUb29sdGlwKCkge1xuICAgIHRoaXMudG9vbHRpcFRleHQgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5jdXJyZW50VG9vbHRpcFRhcmdldCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLnRvb2x0aXBQb3NpdGlvbnMgPSB1bmRlZmluZWQ7XG4gIH1cblxuICB0cmFja0J5TWVzc2FnZVJlYWN0aW9uKGluZGV4OiBudW1iZXIsIGl0ZW06IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHJlYWN0KHR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICB0aGlzLm93blJlYWN0aW9ucy5maW5kKChyKSA9PiByLnR5cGUgPT09IHR5cGUpXG4gICAgICA/IHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5yZW1vdmVSZWFjdGlvbih0aGlzLm1lc3NhZ2VJZCEsIHR5cGUpXG4gICAgICA6IHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5hZGRSZWFjdGlvbih0aGlzLm1lc3NhZ2VJZCEsIHR5cGUpO1xuICB9XG5cbiAgcHJpdmF0ZSBldmVudEhhbmRsZXIgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLnNlbGVjdG9yQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgdGhpcy5pc1NlbGVjdG9yT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgcHJpdmF0ZSB3YXRjaEZvck91dHNpZGVDbGlja3MoKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5ldmVudEhhbmRsZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdG9wV2F0Y2hGb3JPdXRzaWRlQ2xpY2tzKCkge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMuZXZlbnRIYW5kbGVyKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0VG9vbHRpcFBvc2l0aW9uKCkge1xuICAgIGNvbnN0IHRvb2x0aXAgPSB0aGlzLnNlbGVjdG9yVG9vbHRpcD8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBjb25zdCB0YXJnZXQgPSB0aGlzLmN1cnJlbnRUb29sdGlwVGFyZ2V0Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9XG4gICAgICB0aGlzLnNlbGVjdG9yQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgaWYgKCF0b29sdGlwIHx8ICF0YXJnZXQgfHwgIWNvbnRhaW5lcikgcmV0dXJuO1xuXG4gICAgY29uc3QgdG9vbHRpcFBvc2l0aW9uID1cbiAgICAgIHRvb2x0aXAud2lkdGggPT09IGNvbnRhaW5lci53aWR0aCB8fCB0b29sdGlwLnggPCBjb250YWluZXIueFxuICAgICAgICA/IDBcbiAgICAgICAgOiB0YXJnZXQubGVmdCArIHRhcmdldC53aWR0aCAvIDIgLSBjb250YWluZXIubGVmdCAtIHRvb2x0aXAud2lkdGggLyAyO1xuXG4gICAgY29uc3QgYXJyb3dQb3NpdGlvbiA9XG4gICAgICB0YXJnZXQueCAtIHRvb2x0aXAueCArIHRhcmdldC53aWR0aCAvIDIgLSB0b29sdGlwUG9zaXRpb247XG5cbiAgICB0aGlzLnRvb2x0aXBQb3NpdGlvbnMgPSB7XG4gICAgICB0b29sdGlwOiB0b29sdGlwUG9zaXRpb24sXG4gICAgICBhcnJvdzogYXJyb3dQb3NpdGlvbixcbiAgICB9O1xuICB9XG59XG4iLCI8ZGl2XG4gICpuZ0lmPVwiZXhpc3RpbmdSZWFjdGlvbnMubGVuZ3RoID4gMCAmJiAhaXNTZWxlY3Rvck9wZW5cIlxuICBjbGFzcz1cInN0ci1jaGF0X19yZWFjdGlvbi1saXN0XCJcbiAgW2NsYXNzLnN0ci1jaGF0X19yZWFjdGlvbi1saXN0LS1yZXZlcnNlXT1cInRydWVcIlxuICBkYXRhLXRlc3RpZD1cInJlYWN0aW9uLWxpc3RcIlxuPlxuICA8dWw+XG4gICAgPGxpXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IHJlYWN0aW9uVHlwZSBvZiBleGlzdGluZ1JlYWN0aW9ucztcbiAgICAgICAgdHJhY2tCeTogdHJhY2tCeU1lc3NhZ2VSZWFjdGlvblxuICAgICAgXCJcbiAgICAgIGRhdGEtdGVzdGNsYXNzPVwiZW1vamlcIlxuICAgID5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZW1vamlcIj5cbiAgICAgICAge3sgZ2V0RW1vamlCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSkgfX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgICZuYnNwO1xuICAgIDwvbGk+XG4gICAgPGxpPlxuICAgICAgPHNwYW5cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWFjdGlvbnMtY291bnRcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19yZWFjdGlvbi1saXN0LS1jb3VudGVyXCJcbiAgICAgICAgPnt7IHJlYWN0aW9uc0NvdW50IH19PC9zcGFuXG4gICAgICA+XG4gICAgPC9saT5cbiAgPC91bD5cbjwvZGl2PlxuXG48ZGl2XG4gICNzZWxlY3RvckNvbnRhaW5lclxuICBjbGFzcz1cInN0ci1jaGF0X19yZWFjdGlvbi1zZWxlY3RvclwiXG4gICpuZ0lmPVwiaXNTZWxlY3Rvck9wZW5cIlxuICBkYXRhLXRlc3RpZD1cInJlYWN0aW9uLXNlbGVjdG9yXCJcbj5cbiAgPGRpdlxuICAgICpuZ0lmPVwidG9vbHRpcFRleHRcIlxuICAgIGRhdGEtdGVzdGlkPVwidG9vbHRpcFwiXG4gICAgI3NlbGVjdG9yVG9vbHRpcFxuICAgIGNsYXNzPVwic3RyLWNoYXRfX3JlYWN0aW9uLXNlbGVjdG9yLXRvb2x0aXBcIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgIGxlZnQ6IHRvb2x0aXBQb3NpdGlvbnM/LnRvb2x0aXAgKyAncHgnLFxuICAgICAgdmlzaWJpbGl0eTogdG9vbHRpcFBvc2l0aW9ucyA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nXG4gICAgfVwiXG4gID5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImFycm93XCJcbiAgICAgIFtuZ1N0eWxlXT1cInsgbGVmdDogdG9vbHRpcFBvc2l0aW9ucz8uYXJyb3cgKyAncHgnIH1cIlxuICAgID48L2Rpdj5cbiAgICA8c3BhbiBjbGFzcz1cImxhdGVzdC11c2VyLXVzZXJuYW1lXCI+XG4gICAgICB7eyB0b29sdGlwVGV4dCB9fVxuICAgIDwvc3Bhbj5cbiAgPC9kaXY+XG4gIDx1bCBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1saXN0XCI+XG4gICAgPGxpXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1saXN0LWl0ZW0gZW1vamktbWFydC1lbW9qaVwiXG4gICAgICAqbmdGb3I9XCJcbiAgICAgICAgbGV0IHJlYWN0aW9uVHlwZSBvZiByZWFjdGlvbk9wdGlvbnM7XG4gICAgICAgIHRyYWNrQnk6IHRyYWNrQnlNZXNzYWdlUmVhY3Rpb25cbiAgICAgIFwiXG4gICAgICBkYXRhLXRlc3RjbGFzcz1cImVtb2ppLW9wdGlvblwiXG4gICAgICAoY2xpY2spPVwicmVhY3QocmVhY3Rpb25UeXBlKVwiXG4gICAgICAoa2V5dXAuZW50ZXIpPVwicmVhY3QocmVhY3Rpb25UeXBlKVwiXG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICAqbmdJZj1cImdldExhdGVzdFVzZXJCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSkgYXMgdXNlclwiXG4gICAgICAgIGNsYXNzPVwibGF0ZXN0LXVzZXJcIlxuICAgICAgICAoY2xpY2spPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgICAgIChrZXl1cC5lbnRlcik9XCJoaWRlVG9vbHRpcCgpXCJcbiAgICAgICAgKG1vdXNlZW50ZXIpPVwic2hvd1Rvb2x0aXAoJGV2ZW50LCByZWFjdGlvblR5cGUpXCJcbiAgICAgICAgKG1vdXNlbGVhdmUpPVwiaGlkZVRvb2x0aXAoKVwiXG4gICAgICAgIGF0dHIuZGF0YS10ZXN0aWQ9XCJ7eyByZWFjdGlvblR5cGUgfX0tbGFzdC11c2VyXCJcbiAgICAgID5cbiAgICAgICAgPHN0cmVhbS1hdmF0YXJcbiAgICAgICAgICBhdHRyLmRhdGEtdGVzdGlkPVwie3sgcmVhY3Rpb25UeXBlIH19LWF2YXRhclwiXG4gICAgICAgICAgW2ltYWdlVXJsXT1cInVzZXIuaW1hZ2VcIlxuICAgICAgICAgIFtuYW1lXT1cInVzZXIubmFtZSB8fCB1c2VyLmlkXCJcbiAgICAgICAgICBbc2l6ZV09XCIyMFwiXG4gICAgICAgID48L3N0cmVhbS1hdmF0YXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZW1vamlcIiBzdHlsZT1cIndpZHRoOiAyMHB4OyBoZWlnaHQ6IDIwcHg7IHRvcDogMTBweFwiPlxuICAgICAgICB7eyBnZXRFbW9qaUJ5UmVhY3Rpb24ocmVhY3Rpb25UeXBlKSB9fVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBtZXNzYWdlUmVhY3Rpb25Db3VudHNbcmVhY3Rpb25UeXBlXSAmJlxuICAgICAgICAgIG1lc3NhZ2VSZWFjdGlvbkNvdW50c1tyZWFjdGlvblR5cGVdISA+IDBcbiAgICAgICAgXCJcbiAgICAgICAgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtbGlzdC1pdGVtX19jb3VudFwiXG4gICAgICAgIGF0dHIuZGF0YS10ZXN0aWQ9XCJ7eyByZWFjdGlvblR5cGUgfX0tcmVhY3Rpb24tY291bnRcIlxuICAgICAgPlxuICAgICAgICB7eyBtZXNzYWdlUmVhY3Rpb25Db3VudHNbcmVhY3Rpb25UeXBlXSB9fVxuICAgICAgPC9zcGFuPlxuICAgIDwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
@@ -16,7 +16,7 @@ import transliterate from '@stream-io/transliterate';
16
16
  import * as i5 from 'angular-mentions';
17
17
  import { MentionModule } from 'angular-mentions';
18
18
 
19
- const version = '2.12.1';
19
+ const version = '2.12.2';
20
20
 
21
21
  class NotificationService {
22
22
  constructor() {
@@ -2427,7 +2427,7 @@ class MessageReactionsComponent {
2427
2427
  }
2428
2428
  }
2429
2429
  MessageReactionsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: ChannelService }], target: i0.ɵɵFactoryTarget.Component });
2430
- MessageReactionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageReactionsComponent, selector: "stream-message-reactions", inputs: { messageId: "messageId", messageReactionCounts: "messageReactionCounts", isSelectorOpen: "isSelectorOpen", latestReactions: "latestReactions", ownReactions: "ownReactions" }, outputs: { isSelectorOpenChange: "isSelectorOpenChange" }, viewQueries: [{ propertyName: "selectorContainer", first: true, predicate: ["selectorContainer"], descendants: true }, { propertyName: "selectorTooltip", first: true, predicate: ["selectorTooltip"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"existingReactions.length > 0 && !isSelectorOpen\"\n class=\"str-chat__reaction-list\"\n [class.str-chat__reaction-list--reverse]=\"true\"\n data-testid=\"reaction-list\"\n>\n <ul>\n <li\n *ngFor=\"\n let reactionType of existingReactions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji\"\n >\n <span class=\"emoji\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n &nbsp;\n </li>\n <li>\n <span\n data-testid=\"reactions-count\"\n class=\"str-chat__reaction-list--counter\"\n >{{ reactionsCount }}</span\n >\n </li>\n </ul>\n</div>\n\n<div\n #selectorContainer\n class=\"str-chat__reaction-selector\"\n *ngIf=\"isSelectorOpen\"\n data-testid=\"reaction-selector\"\n>\n <div\n *ngIf=\"tooltipText\"\n data-testid=\"tooltip\"\n #selectorTooltip\n class=\"str-chat__reaction-selector-tooltip\"\n [ngStyle]=\"{\n left: tooltipPositions?.tooltip + 'px',\n visibility: tooltipPositions ? 'visible' : 'hidden'\n }\"\n >\n <div\n class=\"arrow\"\n [ngStyle]=\"{ left: tooltipPositions?.arrow + 'px' }\"\n ></div>\n <span class=\"latest-user-username\">\n {{ tooltipText }}\n </span>\n </div>\n <ul class=\"str-chat__message-reactions-list\">\n <li\n class=\"str-chat__message-reactions-list-item\"\n *ngFor=\"\n let reactionType of reactionOptions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji-option\"\n (click)=\"react(reactionType)\"\n (keyup.enter)=\"react(reactionType)\"\n >\n <div\n *ngIf=\"getLatestUserByReaction(reactionType) as user\"\n class=\"latest-user\"\n (click)=\"hideTooltip()\"\n (keyup.enter)=\"hideTooltip()\"\n (mouseenter)=\"showTooltip($event, reactionType)\"\n (mouseleave)=\"hideTooltip()\"\n attr.data-testid=\"{{ reactionType }}-last-user\"\n >\n <stream-avatar\n attr.data-testid=\"{{ reactionType }}-avatar\"\n [imageUrl]=\"user.image\"\n [name]=\"user.name || user.id\"\n [size]=\"20\"\n ></stream-avatar>\n </div>\n <span class=\"emoji\" style=\"width: 20px; height: 20px; top: 10px\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n <span\n *ngIf=\"\n messageReactionCounts[reactionType] &&\n messageReactionCounts[reactionType]! > 0\n \"\n class=\"str-chat__message-reactions-list-item__count\"\n attr.data-testid=\"{{ reactionType }}-reaction-count\"\n >\n {{ messageReactionCounts[reactionType] }}\n </span>\n </li>\n </ul>\n</div>\n", styles: [".emoji {position: relative; display: inline-block; }"], components: [{ type: AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
2430
+ MessageReactionsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: MessageReactionsComponent, selector: "stream-message-reactions", inputs: { messageId: "messageId", messageReactionCounts: "messageReactionCounts", isSelectorOpen: "isSelectorOpen", latestReactions: "latestReactions", ownReactions: "ownReactions" }, outputs: { isSelectorOpenChange: "isSelectorOpenChange" }, viewQueries: [{ propertyName: "selectorContainer", first: true, predicate: ["selectorContainer"], descendants: true }, { propertyName: "selectorTooltip", first: true, predicate: ["selectorTooltip"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n *ngIf=\"existingReactions.length > 0 && !isSelectorOpen\"\n class=\"str-chat__reaction-list\"\n [class.str-chat__reaction-list--reverse]=\"true\"\n data-testid=\"reaction-list\"\n>\n <ul>\n <li\n *ngFor=\"\n let reactionType of existingReactions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji\"\n >\n <span class=\"emoji\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n &nbsp;\n </li>\n <li>\n <span\n data-testid=\"reactions-count\"\n class=\"str-chat__reaction-list--counter\"\n >{{ reactionsCount }}</span\n >\n </li>\n </ul>\n</div>\n\n<div\n #selectorContainer\n class=\"str-chat__reaction-selector\"\n *ngIf=\"isSelectorOpen\"\n data-testid=\"reaction-selector\"\n>\n <div\n *ngIf=\"tooltipText\"\n data-testid=\"tooltip\"\n #selectorTooltip\n class=\"str-chat__reaction-selector-tooltip\"\n [ngStyle]=\"{\n left: tooltipPositions?.tooltip + 'px',\n visibility: tooltipPositions ? 'visible' : 'hidden'\n }\"\n >\n <div\n class=\"arrow\"\n [ngStyle]=\"{ left: tooltipPositions?.arrow + 'px' }\"\n ></div>\n <span class=\"latest-user-username\">\n {{ tooltipText }}\n </span>\n </div>\n <ul class=\"str-chat__message-reactions-list\">\n <li\n class=\"str-chat__message-reactions-list-item emoji-mart-emoji\"\n *ngFor=\"\n let reactionType of reactionOptions;\n trackBy: trackByMessageReaction\n \"\n data-testclass=\"emoji-option\"\n (click)=\"react(reactionType)\"\n (keyup.enter)=\"react(reactionType)\"\n >\n <div\n *ngIf=\"getLatestUserByReaction(reactionType) as user\"\n class=\"latest-user\"\n (click)=\"hideTooltip()\"\n (keyup.enter)=\"hideTooltip()\"\n (mouseenter)=\"showTooltip($event, reactionType)\"\n (mouseleave)=\"hideTooltip()\"\n attr.data-testid=\"{{ reactionType }}-last-user\"\n >\n <stream-avatar\n attr.data-testid=\"{{ reactionType }}-avatar\"\n [imageUrl]=\"user.image\"\n [name]=\"user.name || user.id\"\n [size]=\"20\"\n ></stream-avatar>\n </div>\n <span class=\"emoji\" style=\"width: 20px; height: 20px; top: 10px\">\n {{ getEmojiByReaction(reactionType) }}\n </span>\n <span\n *ngIf=\"\n messageReactionCounts[reactionType] &&\n messageReactionCounts[reactionType]! > 0\n \"\n class=\"str-chat__message-reactions-list-item__count\"\n attr.data-testid=\"{{ reactionType }}-reaction-count\"\n >\n {{ messageReactionCounts[reactionType] }}\n </span>\n </li>\n </ul>\n</div>\n", styles: [".emoji {position: relative; display: inline-block; }"], components: [{ type: AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i6.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
2431
2431
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: MessageReactionsComponent, decorators: [{
2432
2432
  type: Component,
2433
2433
  args: [{