stream-chat-angular 3.0.1 → 3.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/assets/version.d.ts +1 -1
  2. package/bundles/stream-chat-angular.umd.js +195 -113
  3. package/bundles/stream-chat-angular.umd.js.map +1 -1
  4. package/esm2015/assets/version.js +2 -2
  5. package/esm2015/lib/channel-header/channel-header.component.js +29 -9
  6. package/esm2015/lib/channel-preview/channel-preview.component.js +23 -11
  7. package/esm2015/lib/channel.service.js +3 -3
  8. package/esm2015/lib/get-channel-display-text.js +15 -0
  9. package/esm2015/lib/icon/icon.component.js +2 -2
  10. package/esm2015/lib/list-users.js +12 -0
  11. package/esm2015/lib/message/message.component.js +3 -3
  12. package/esm2015/lib/message-input/message-input.component.js +5 -1
  13. package/esm2015/lib/message-list/message-list.component.js +87 -43
  14. package/esm2015/public-api.js +2 -2
  15. package/fesm2015/stream-chat-angular.js +171 -99
  16. package/fesm2015/stream-chat-angular.js.map +1 -1
  17. package/lib/channel-header/channel-header.component.d.ts +5 -1
  18. package/lib/channel-preview/channel-preview.component.d.ts +3 -1
  19. package/lib/channel.service.d.ts +4 -2
  20. package/lib/get-channel-display-text.d.ts +3 -0
  21. package/lib/icon/icon.component.d.ts +1 -1
  22. package/lib/list-users.d.ts +2 -0
  23. package/lib/message/message.component.d.ts +3 -0
  24. package/lib/message-list/message-list.component.d.ts +9 -2
  25. package/package.json +1 -1
  26. package/public-api.d.ts +1 -1
  27. package/src/assets/styles/css/index.css +1 -1
  28. package/src/assets/styles/css/index.css.map +1 -1
  29. package/src/assets/styles/scss/Attachment.scss +1 -1
  30. package/src/assets/styles/scss/MessageNotification.scss +6 -18
  31. package/src/assets/styles/scss/Thread.scss +10 -3
  32. package/src/assets/version.ts +1 -1
  33. package/esm2015/lib/message/read-by-text.js +0 -29
  34. package/lib/message/read-by-text.d.ts +0 -2
@@ -1,2 +1,2 @@
1
- export const version = '3.0.1';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICczLjAuMSc7XG4iXX0=
1
+ export const version = '3.2.1';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2Fzc2V0cy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgdmVyc2lvbiA9ICczLjIuMSc7XG4iXX0=
@@ -1,21 +1,24 @@
1
1
  import { Component, } from '@angular/core';
2
+ import { getChannelDisplayText } from '../get-channel-display-text';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "../channel.service";
4
5
  import * as i2 from "../channel-list/channel-list-toggle.service";
5
6
  import * as i3 from "../custom-templates.service";
6
- import * as i4 from "../icon-placeholder/icon-placeholder.component";
7
- import * as i5 from "../avatar-placeholder/avatar-placeholder.component";
8
- import * as i6 from "@angular/common";
9
- import * as i7 from "@ngx-translate/core";
7
+ import * as i4 from "../chat-client.service";
8
+ import * as i5 from "../icon-placeholder/icon-placeholder.component";
9
+ import * as i6 from "../avatar-placeholder/avatar-placeholder.component";
10
+ import * as i7 from "@angular/common";
11
+ import * as i8 from "@ngx-translate/core";
10
12
  /**
11
13
  * The `ChannelHeader` component displays the avatar and name of the currently active channel along with member and watcher information. You can read about [the difference between members and watchers](https://getstream.io/chat/docs/javascript/watch_channel/?language=javascript#watchers-vs-members) in the platform documentation. Please note that number of watchers is only displayed if the user has [`connect-events` capability](https://getstream.io/chat/docs/javascript/channel_capabilities/?language=javascript)
12
14
  */
13
15
  export class ChannelHeaderComponent {
14
- constructor(channelService, channelListToggleService, customTemplatesService, cdRef) {
16
+ constructor(channelService, channelListToggleService, customTemplatesService, cdRef, chatClientService) {
15
17
  this.channelService = channelService;
16
18
  this.channelListToggleService = channelListToggleService;
17
19
  this.customTemplatesService = customTemplatesService;
18
20
  this.cdRef = cdRef;
21
+ this.chatClientService = chatClientService;
19
22
  this.subscriptions = [];
20
23
  this.channelService.activeChannel$.subscribe((c) => {
21
24
  var _a, _b;
@@ -52,9 +55,26 @@ export class ChannelHeaderComponent {
52
55
  var _a, _b;
53
56
  return { watcherCount: ((_b = (_a = this.activeChannel) === null || _a === void 0 ? void 0 : _a.state) === null || _b === void 0 ? void 0 : _b.watcher_count) || 0 };
54
57
  }
58
+ get displayText() {
59
+ if (!this.activeChannel) {
60
+ return '';
61
+ }
62
+ return getChannelDisplayText(this.activeChannel, this.chatClientService.chatClient.user);
63
+ }
64
+ get avatarName() {
65
+ var _a, _b, _c, _d, _e, _f, _g;
66
+ if ((_b = (_a = this.activeChannel) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.name) {
67
+ return (_d = (_c = this.activeChannel) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.name;
68
+ }
69
+ const otherMembers = Object.values(((_e = this.activeChannel) === null || _e === void 0 ? void 0 : _e.state.members) || {}).filter((m) => m.user_id !== this.chatClientService.chatClient.user.id);
70
+ if (otherMembers.length === 1) {
71
+ return ((_f = otherMembers[0].user) === null || _f === void 0 ? void 0 : _f.name) || ((_g = otherMembers[0].user) === null || _g === void 0 ? void 0 : _g.name);
72
+ }
73
+ return '#';
74
+ }
55
75
  }
56
- ChannelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelHeaderComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChannelListToggleService }, { token: i3.CustomTemplatesService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
57
- ChannelHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelHeaderComponent, selector: "stream-channel-header", ngImport: i0, template: "<div class=\"str-chat__header-livestream\">\n <div\n class=\"str-chat__header-hamburger\"\n (click)=\"toggleMenu($event)\"\n (keyup.enter)=\"toggleMenu($event)\"\n >\n <stream-icon-placeholder icon=\"menu\"></stream-icon-placeholder>\n </div>\n <stream-avatar-placeholder\n imageUrl=\"{{ activeChannel?.data?.image }}\"\n name=\"{{ activeChannel?.data?.name }}\"\n ></stream-avatar-placeholder>\n <div class=\"str-chat__header-livestream-left\">\n <p data-testid=\"name\" class=\"str-chat__header-livestream-left--title\">\n {{ activeChannel?.data?.name }}\n </p>\n <p data-testid=\"info\" class=\"str-chat__header-livestream-left--members\">\n {{'streamChat.{{ memberCount }} members' | translate:memberCountParam}}\n {{canReceiveConnectEvents ? ('streamChat.{{ watcherCount }} online' |\n translate:watcherCountParam) : ''}}\n </p>\n </div>\n <ng-container *ngIf=\"channelActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n channelActionsTemplate;\n context: getChannelActionsContext()\n \"\n ></ng-container>\n </ng-container>\n</div>\n", components: [{ type: i4.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon", "size"] }, { type: i5.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i6.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i7.TranslatePipe } });
76
+ ChannelHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelHeaderComponent, deps: [{ token: i1.ChannelService }, { token: i2.ChannelListToggleService }, { token: i3.CustomTemplatesService }, { token: i0.ChangeDetectorRef }, { token: i4.ChatClientService }], target: i0.ɵɵFactoryTarget.Component });
77
+ ChannelHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelHeaderComponent, selector: "stream-channel-header", ngImport: i0, template: "<div class=\"str-chat__header-livestream\">\n <div\n class=\"str-chat__header-hamburger\"\n (click)=\"toggleMenu($event)\"\n (keyup.enter)=\"toggleMenu($event)\"\n >\n <stream-icon-placeholder icon=\"menu\"></stream-icon-placeholder>\n </div>\n <stream-avatar-placeholder\n imageUrl=\"{{ activeChannel?.data?.image }}\"\n name=\"{{ avatarName }}\"\n ></stream-avatar-placeholder>\n <div class=\"str-chat__header-livestream-left\">\n <p data-testid=\"name\" class=\"str-chat__header-livestream-left--title\">\n {{ displayText }}\n </p>\n <p data-testid=\"info\" class=\"str-chat__header-livestream-left--members\">\n {{'streamChat.{{ memberCount }} members' | translate:memberCountParam}}\n {{canReceiveConnectEvents ? ('streamChat.{{ watcherCount }} online' |\n translate:watcherCountParam) : ''}}\n </p>\n </div>\n <ng-container *ngIf=\"channelActionsTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n channelActionsTemplate;\n context: getChannelActionsContext()\n \"\n ></ng-container>\n </ng-container>\n</div>\n", components: [{ type: i5.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon", "size"] }, { type: i6.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size"] }], directives: [{ type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i7.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "translate": i8.TranslatePipe } });
58
78
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelHeaderComponent, decorators: [{
59
79
  type: Component,
60
80
  args: [{
@@ -62,5 +82,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
62
82
  templateUrl: './channel-header.component.html',
63
83
  styles: [],
64
84
  }]
65
- }], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i2.ChannelListToggleService }, { type: i3.CustomTemplatesService }, { type: i0.ChangeDetectorRef }]; } });
66
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL2NoYW5uZWwtaGVhZGVyL2NoYW5uZWwtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLWhlYWRlci9jaGFubmVsLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxHQUlWLE1BQU0sZUFBZSxDQUFDOzs7Ozs7Ozs7QUFRdkI7O0dBRUc7QUFNSCxNQUFNLE9BQU8sc0JBQXNCO0lBTWpDLFlBQ1UsY0FBOEIsRUFDOUIsd0JBQWtELEVBQ2xELHNCQUE4QyxFQUM5QyxLQUF3QjtRQUh4QixtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBTjFCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQVF6QyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTs7WUFDakQsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUM7WUFDdkIsTUFBTSxZQUFZLEdBQUcsTUFBQSxNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLElBQUksMENBQ3pDLGdCQUE0QixDQUFDO1lBQ2pDLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ2pCLE9BQU87YUFDUjtZQUNELElBQUksQ0FBQyx1QkFBdUI7Z0JBQzFCLFlBQVksQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUNsRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxTQUFTLENBQzNELENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDWCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsUUFBUSxDQUFDO1lBQ3ZDLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDN0IsQ0FBQyxDQUNGLENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxVQUFVLENBQUMsS0FBWTtRQUNyQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCx3QkFBd0I7UUFDdEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYyxFQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVELElBQUksZ0JBQWdCOztRQUNsQixPQUFPLEVBQUUsV0FBVyxFQUFFLENBQUEsTUFBQSxNQUFBLElBQUksQ0FBQyxhQUFhLDBDQUFFLElBQUksMENBQUUsWUFBWSxLQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RFLENBQUM7SUFFRCxJQUFJLGlCQUFpQjs7UUFDbkIsT0FBTyxFQUFFLFlBQVksRUFBRSxDQUFBLE1BQUEsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxLQUFLLDBDQUFFLGFBQWEsS0FBSSxDQUFDLEVBQUUsQ0FBQztJQUN6RSxDQUFDOzttSEFyRFUsc0JBQXNCO3VHQUF0QixzQkFBc0IsNkRDdEJuQyxrbkNBK0JBOzJGRFRhLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxXQUFXLEVBQUUsaUNBQWlDO29CQUM5QyxNQUFNLEVBQUUsRUFBRTtpQkFDWCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoYW5uZWwgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGFubmVsTGlzdFRvZ2dsZVNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLWxpc3QvY2hhbm5lbC1saXN0LXRvZ2dsZS5zZXJ2aWNlJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbEFjdGlvbnNDb250ZXh0LCBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIFRoZSBgQ2hhbm5lbEhlYWRlcmAgY29tcG9uZW50IGRpc3BsYXlzIHRoZSBhdmF0YXIgYW5kIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgY2hhbm5lbCBhbG9uZyB3aXRoIG1lbWJlciBhbmQgd2F0Y2hlciBpbmZvcm1hdGlvbi4gWW91IGNhbiByZWFkIGFib3V0IFt0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG1lbWJlcnMgYW5kIHdhdGNoZXJzXShodHRwczovL2dldHN0cmVhbS5pby9jaGF0L2RvY3MvamF2YXNjcmlwdC93YXRjaF9jaGFubmVsLz9sYW5ndWFnZT1qYXZhc2NyaXB0I3dhdGNoZXJzLXZzLW1lbWJlcnMpIGluIHRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uLiBQbGVhc2Ugbm90ZSB0aGF0IG51bWJlciBvZiB3YXRjaGVycyBpcyBvbmx5IGRpc3BsYXllZCBpZiB0aGUgdXNlciBoYXMgW2Bjb25uZWN0LWV2ZW50c2AgY2FwYWJpbGl0eV0oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvY2hhbm5lbF9jYXBhYmlsaXRpZXMvP2xhbmd1YWdlPWphdmFzY3JpcHQpXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1jaGFubmVsLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFubmVsLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIENoYW5uZWxIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGNoYW5uZWxBY3Rpb25zVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxDaGFubmVsQWN0aW9uc0NvbnRleHQ+O1xuICBhY3RpdmVDaGFubmVsOiBDaGFubmVsPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+IHwgdW5kZWZpbmVkO1xuICBjYW5SZWNlaXZlQ29ubmVjdEV2ZW50czogYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2hhbm5lbExpc3RUb2dnbGVTZXJ2aWNlOiBDaGFubmVsTGlzdFRvZ2dsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmXG4gICkge1xuICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICB0aGlzLmFjdGl2ZUNoYW5uZWwgPSBjO1xuICAgICAgY29uc3QgY2FwYWJpbGl0aWVzID0gdGhpcy5hY3RpdmVDaGFubmVsPy5kYXRhXG4gICAgICAgID8ub3duX2NhcGFiaWxpdGllcyBhcyBzdHJpbmdbXTtcbiAgICAgIGlmICghY2FwYWJpbGl0aWVzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2FuUmVjZWl2ZUNvbm5lY3RFdmVudHMgPVxuICAgICAgICBjYXBhYmlsaXRpZXMuaW5kZXhPZignY29ubmVjdC1ldmVudHMnKSAhPT0gLTE7XG4gICAgfSk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuY2hhbm5lbEFjdGlvbnNUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLmNoYW5uZWxBY3Rpb25zVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIHRvZ2dsZU1lbnUoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5jaGFubmVsTGlzdFRvZ2dsZVNlcnZpY2UudG9nZ2xlKCk7XG4gIH1cblxuICBnZXRDaGFubmVsQWN0aW9uc0NvbnRleHQoKTogQ2hhbm5lbEFjdGlvbnNDb250ZXh0IHtcbiAgICByZXR1cm4geyBjaGFubmVsOiB0aGlzLmFjdGl2ZUNoYW5uZWwhIH07XG4gIH1cblxuICBnZXQgbWVtYmVyQ291bnRQYXJhbSgpIHtcbiAgICByZXR1cm4geyBtZW1iZXJDb3VudDogdGhpcy5hY3RpdmVDaGFubmVsPy5kYXRhPy5tZW1iZXJfY291bnQgfHwgMCB9O1xuICB9XG5cbiAgZ2V0IHdhdGNoZXJDb3VudFBhcmFtKCkge1xuICAgIHJldHVybiB7IHdhdGNoZXJDb3VudDogdGhpcy5hY3RpdmVDaGFubmVsPy5zdGF0ZT8ud2F0Y2hlcl9jb3VudCB8fCAwIH07XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJzdHItY2hhdF9faGVhZGVyLWxpdmVzdHJlYW1cIj5cbiAgPGRpdlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX2hlYWRlci1oYW1idXJnZXJcIlxuICAgIChjbGljayk9XCJ0b2dnbGVNZW51KCRldmVudClcIlxuICAgIChrZXl1cC5lbnRlcik9XCJ0b2dnbGVNZW51KCRldmVudClcIlxuICA+XG4gICAgPHN0cmVhbS1pY29uLXBsYWNlaG9sZGVyIGljb249XCJtZW51XCI+PC9zdHJlYW0taWNvbi1wbGFjZWhvbGRlcj5cbiAgPC9kaXY+XG4gIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgaW1hZ2VVcmw9XCJ7eyBhY3RpdmVDaGFubmVsPy5kYXRhPy5pbWFnZSB9fVwiXG4gICAgbmFtZT1cInt7IGFjdGl2ZUNoYW5uZWw/LmRhdGE/Lm5hbWUgfX1cIlxuICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2hlYWRlci1saXZlc3RyZWFtLWxlZnRcIj5cbiAgICA8cCBkYXRhLXRlc3RpZD1cIm5hbWVcIiBjbGFzcz1cInN0ci1jaGF0X19oZWFkZXItbGl2ZXN0cmVhbS1sZWZ0LS10aXRsZVwiPlxuICAgICAge3sgYWN0aXZlQ2hhbm5lbD8uZGF0YT8ubmFtZSB9fVxuICAgIDwvcD5cbiAgICA8cCBkYXRhLXRlc3RpZD1cImluZm9cIiBjbGFzcz1cInN0ci1jaGF0X19oZWFkZXItbGl2ZXN0cmVhbS1sZWZ0LS1tZW1iZXJzXCI+XG4gICAgICB7eydzdHJlYW1DaGF0Lnt7IG1lbWJlckNvdW50IH19IG1lbWJlcnMnIHwgdHJhbnNsYXRlOm1lbWJlckNvdW50UGFyYW19fVxuICAgICAge3tjYW5SZWNlaXZlQ29ubmVjdEV2ZW50cyA/ICgnc3RyZWFtQ2hhdC57eyB3YXRjaGVyQ291bnQgfX0gb25saW5lJyB8XG4gICAgICB0cmFuc2xhdGU6d2F0Y2hlckNvdW50UGFyYW0pIDogJyd9fVxuICAgIDwvcD5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGFubmVsQWN0aW9uc1RlbXBsYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgY2hhbm5lbEFjdGlvbnNUZW1wbGF0ZTtcbiAgICAgICAgY29udGV4dDogZ2V0Q2hhbm5lbEFjdGlvbnNDb250ZXh0KClcbiAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
85
+ }], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i2.ChannelListToggleService }, { type: i3.CustomTemplatesService }, { type: i0.ChangeDetectorRef }, { type: i4.ChatClientService }]; } });
86
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL2NoYW5uZWwtaGVhZGVyL2NoYW5uZWwtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLWhlYWRlci9jaGFubmVsLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxHQUlWLE1BQU0sZUFBZSxDQUFDO0FBT3ZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7Ozs7O0FBR3BFOztHQUVHO0FBTUgsTUFBTSxPQUFPLHNCQUFzQjtJQU1qQyxZQUNVLGNBQThCLEVBQzlCLHdCQUFrRCxFQUNsRCxzQkFBOEMsRUFDOUMsS0FBd0IsRUFDeEIsaUJBQW9DO1FBSnBDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5Qiw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQTBCO1FBQ2xELDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQVB0QyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFTekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7O1lBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sWUFBWSxHQUFHLE1BQUEsTUFBQSxJQUFJLENBQUMsYUFBYSwwQ0FBRSxJQUFJLDBDQUN6QyxnQkFBNEIsQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNqQixPQUFPO2FBQ1I7WUFDRCxJ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biAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ2hhbm5lbCB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxMaXN0VG9nZ2xlU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwtbGlzdC9jaGFubmVsLWxpc3QtdG9nZ2xlLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0Q2hhbm5lbERpc3BsYXlUZXh0IH0gZnJvbSAnLi4vZ2V0LWNoYW5uZWwtZGlzcGxheS10ZXh0JztcbmltcG9ydCB7IENoYW5uZWxBY3Rpb25zQ29udGV4dCwgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgYENoYW5uZWxIZWFkZXJgIGNvbXBvbmVudCBkaXNwbGF5cyB0aGUgYXZhdGFyIGFuZCBuYW1lIG9mIHRoZSBjdXJyZW50bHkgYWN0aXZlIGNoYW5uZWwgYWxvbmcgd2l0aCBtZW1iZXIgYW5kIHdhdGNoZXIgaW5mb3JtYXRpb24uIFlvdSBjYW4gcmVhZCBhYm91dCBbdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBtZW1iZXJzIGFuZCB3YXRjaGVyc10oaHR0cHM6Ly9nZXRzdHJlYW0uaW8vY2hhdC9kb2NzL2phdmFzY3JpcHQvd2F0Y2hfY2hhbm5lbC8/bGFuZ3VhZ2U9amF2YXNjcmlwdCN3YXRjaGVycy12cy1tZW1iZXJzKSBpbiB0aGUgcGxhdGZvcm0gZG9jdW1lbnRhdGlvbi4gUGxlYXNlIG5vdGUgdGhhdCBudW1iZXIgb2Ygd2F0Y2hlcnMgaXMgb25seSBkaXNwbGF5ZWQgaWYgdGhlIHVzZXIgaGFzIFtgY29ubmVjdC1ldmVudHNgIGNhcGFiaWxpdHldKGh0dHBzOi8vZ2V0c3RyZWFtLmlvL2NoYXQvZG9jcy9qYXZhc2NyaXB0L2NoYW5uZWxfY2FwYWJpbGl0aWVzLz9sYW5ndWFnZT1qYXZhc2NyaXB0KVxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tY2hhbm5lbC1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vY2hhbm5lbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFubmVsSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBjaGFubmVsQWN0aW9uc1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8Q2hhbm5lbEFjdGlvbnNDb250ZXh0PjtcbiAgYWN0aXZlQ2hhbm5lbDogQ2hhbm5lbDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPiB8IHVuZGVmaW5lZDtcbiAgY2FuUmVjZWl2ZUNvbm5lY3RFdmVudHM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIGNoYW5uZWxMaXN0VG9nZ2xlU2VydmljZTogQ2hhbm5lbExpc3RUb2dnbGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZVxuICApIHtcbiAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLnN1YnNjcmliZSgoYykgPT4ge1xuICAgICAgdGhpcy5hY3RpdmVDaGFubmVsID0gYztcbiAgICAgIGNvbnN0IGNhcGFiaWxpdGllcyA9IHRoaXMuYWN0aXZlQ2hhbm5lbD8uZGF0YVxuICAgICAgICA/Lm93bl9jYXBhYmlsaXRpZXMgYXMgc3RyaW5nW107XG4gICAgICBpZiAoIWNhcGFiaWxpdGllcykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmNhblJlY2VpdmVDb25uZWN0RXZlbnRzID1cbiAgICAgICAgY2FwYWJpbGl0aWVzLmluZGV4T2YoJ2Nvbm5lY3QtZXZlbnRzJykgIT09IC0xO1xuICAgIH0pO1xuICB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmNoYW5uZWxBY3Rpb25zVGVtcGxhdGUkLnN1YnNjcmliZShcbiAgICAgICAgKHRlbXBsYXRlKSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGFubmVsQWN0aW9uc1RlbXBsYXRlID0gdGVtcGxhdGU7XG4gICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICB0b2dnbGVNZW51KGV2ZW50OiBFdmVudCkge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuY2hhbm5lbExpc3RUb2dnbGVTZXJ2aWNlLnRvZ2dsZSgpO1xuICB9XG5cbiAgZ2V0Q2hhbm5lbEFjdGlvbnNDb250ZXh0KCk6IENoYW5uZWxBY3Rpb25zQ29udGV4dCB7XG4gICAgcmV0dXJuIHsgY2hhbm5lbDogdGhpcy5hY3RpdmVDaGFubmVsISB9O1xuICB9XG5cbiAgZ2V0IG1lbWJlckNvdW50UGFyYW0oKSB7XG4gICAgcmV0dXJuIHsgbWVtYmVyQ291bnQ6IHRoaXMuYWN0aXZlQ2hhbm5lbD8uZGF0YT8ubWVtYmVyX2NvdW50IHx8IDAgfTtcbiAgfVxuXG4gIGdldCB3YXRjaGVyQ291bnRQYXJhbSgpIHtcbiAgICByZXR1cm4geyB3YXRjaGVyQ291bnQ6IHRoaXMuYWN0aXZlQ2hhbm5lbD8uc3RhdGU/LndhdGNoZXJfY291bnQgfHwgMCB9O1xuICB9XG5cbiAgZ2V0IGRpc3BsYXlUZXh0KCkge1xuICAgIGlmICghdGhpcy5hY3RpdmVDaGFubmVsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBnZXRDaGFubmVsRGlzcGxheVRleHQoXG4gICAgICB0aGlzLmFjdGl2ZUNoYW5uZWwsXG4gICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQudXNlciFcbiAgICApO1xuICB9XG5cbiAgZ2V0IGF2YXRhck5hbWUoKSB7XG4gICAgaWYgKHRoaXMuYWN0aXZlQ2hhbm5lbD8uZGF0YT8ubmFtZSkge1xuICAgICAgcmV0dXJuIHRoaXMuYWN0aXZlQ2hhbm5lbD8uZGF0YT8ubmFtZTtcbiAgICB9XG4gICAgY29uc3Qgb3RoZXJNZW1iZXJzID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbD8uc3RhdGUubWVtYmVycyB8fCB7fVxuICAgICkuZmlsdGVyKChtKSA9PiBtLnVzZXJfaWQgIT09IHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VyIS5pZCk7XG4gICAgaWYgKG90aGVyTWVtYmVycy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiBvdGhlck1lbWJlcnNbMF0udXNlcj8ubmFtZSB8fCBvdGhlck1lbWJlcnNbMF0udXNlcj8ubmFtZTtcbiAgICB9XG4gICAgcmV0dXJuICcjJztcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInN0ci1jaGF0X19oZWFkZXItbGl2ZXN0cmVhbVwiPlxuICA8ZGl2XG4gICAgY2xhc3M9XCJzdHItY2hhdF9faGVhZGVyLWhhbWJ1cmdlclwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZU1lbnUoJGV2ZW50KVwiXG4gICAgKGtleXVwLmVudGVyKT1cInRvZ2dsZU1lbnUoJGV2ZW50KVwiXG4gID5cbiAgICA8c3RyZWFtLWljb24tcGxhY2Vob2xkZXIgaWNvbj1cIm1lbnVcIj48L3N0cmVhbS1pY29uLXBsYWNlaG9sZGVyPlxuICA8L2Rpdj5cbiAgPHN0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXJcbiAgICBpbWFnZVVybD1cInt7IGFjdGl2ZUNoYW5uZWw/LmRhdGE/LmltYWdlIH19XCJcbiAgICBuYW1lPVwie3sgYXZhdGFyTmFtZSB9fVwiXG4gID48L3N0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXI+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9faGVhZGVyLWxpdmVzdHJlYW0tbGVmdFwiPlxuICAgIDxwIGRhdGEtdGVzdGlkPVwibmFtZVwiIGNsYXNzPVwic3RyLWNoYXRfX2hlYWRlci1saXZlc3RyZWFtLWxlZnQtLXRpdGxlXCI+XG4gICAgICB7eyBkaXNwbGF5VGV4dCB9fVxuICAgIDwvcD5cbiAgICA8cCBkYXRhLXRlc3RpZD1cImluZm9cIiBjbGFzcz1cInN0ci1jaGF0X19oZWFkZXItbGl2ZXN0cmVhbS1sZWZ0LS1tZW1iZXJzXCI+XG4gICAgICB7eydzdHJlYW1DaGF0Lnt7IG1lbWJlckNvdW50IH19IG1lbWJlcnMnIHwgdHJhbnNsYXRlOm1lbWJlckNvdW50UGFyYW19fVxuICAgICAge3tjYW5SZWNlaXZlQ29ubmVjdEV2ZW50cyA/ICgnc3RyZWFtQ2hhdC57eyB3YXRjaGVyQ291bnQgfX0gb25saW5lJyB8XG4gICAgICB0cmFuc2xhdGU6d2F0Y2hlckNvdW50UGFyYW0pIDogJyd9fVxuICAgIDwvcD5cbiAgPC9kaXY+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJjaGFubmVsQWN0aW9uc1RlbXBsYXRlXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgY2hhbm5lbEFjdGlvbnNUZW1wbGF0ZTtcbiAgICAgICAgY29udGV4dDogZ2V0Q2hhbm5lbEFjdGlvbnNDb250ZXh0KClcbiAgICAgIFwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuIl19
@@ -1,15 +1,18 @@
1
1
  import { Component, Input } from '@angular/core';
2
+ import { getChannelDisplayText } from '../get-channel-display-text';
2
3
  import * as i0 from "@angular/core";
3
4
  import * as i1 from "../channel.service";
4
- import * as i2 from "../avatar-placeholder/avatar-placeholder.component";
5
- import * as i3 from "@ngx-translate/core";
5
+ import * as i2 from "../chat-client.service";
6
+ import * as i3 from "../avatar-placeholder/avatar-placeholder.component";
7
+ import * as i4 from "@ngx-translate/core";
6
8
  /**
7
9
  * The `ChannelPreview` component displays a channel preview in the channel list, it consists of the image, name and latest message of the channel.
8
10
  */
9
11
  export class ChannelPreviewComponent {
10
- constructor(channelService, ngZone) {
12
+ constructor(channelService, ngZone, chatClientService) {
11
13
  this.channelService = channelService;
12
14
  this.ngZone = ngZone;
15
+ this.chatClientService = chatClientService;
13
16
  this.isActive = false;
14
17
  this.isUnread = false;
15
18
  this.latestMessage = 'Nothing yet...';
@@ -43,12 +46,21 @@ export class ChannelPreviewComponent {
43
46
  return (_b = (_a = this.channel) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.image;
44
47
  }
45
48
  get avatarName() {
46
- var _a, _b;
47
- return (_b = (_a = this.channel) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.name;
49
+ var _a, _b, _c, _d, _e, _f, _g;
50
+ if ((_b = (_a = this.channel) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.name) {
51
+ return (_d = (_c = this.channel) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d.name;
52
+ }
53
+ const otherMembers = Object.values(((_e = this.channel) === null || _e === void 0 ? void 0 : _e.state.members) || {}).filter((m) => m.user_id !== this.chatClientService.chatClient.user.id);
54
+ if (otherMembers.length === 1) {
55
+ return ((_f = otherMembers[0].user) === null || _f === void 0 ? void 0 : _f.name) || ((_g = otherMembers[0].user) === null || _g === void 0 ? void 0 : _g.name);
56
+ }
57
+ return '#';
48
58
  }
49
59
  get title() {
50
- var _a, _b;
51
- return (_b = (_a = this.channel) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.name;
60
+ if (!this.channel) {
61
+ return '';
62
+ }
63
+ return getChannelDisplayText(this.channel, this.chatClientService.chatClient.user);
52
64
  }
53
65
  setAsActiveChannel() {
54
66
  void this.channelService.setAsActiveChannel(this.channel);
@@ -80,8 +92,8 @@ export class ChannelPreviewComponent {
80
92
  }
81
93
  }
82
94
  }
83
- ChannelPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelPreviewComponent, deps: [{ token: i1.ChannelService }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
84
- ChannelPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelPreviewComponent, selector: "stream-channel-preview", inputs: { channel: "channel" }, ngImport: i0, template: "<button\n class=\"str-chat__channel-preview-messenger\"\n [class.str-chat__channel-preview-messenger--active]=\"isActive\"\n [class.str-chat__channel-preview-messenger--unread]=\"isUnread\"\n (click)=\"setAsActiveChannel()\"\n data-testid=\"channel-preview-container\"\n>\n <div class=\"str-chat__channel-preview-messenger--left\">\n <stream-avatar-placeholder\n imageUrl=\"{{ avatarImage }}\"\n name=\"{{ avatarName }}\"\n [size]=\"40\"\n ></stream-avatar-placeholder>\n </div>\n <div class=\"str-chat__channel-preview-messenger--right\">\n <div class=\"str-chat__channel-preview-messenger--name\">\n <span data-testid=\"channel-preview-title\">{{ title }}</span>\n </div>\n <div\n data-testid=\"latest-message\"\n class=\"str-chat__channel-preview-messenger--last-message\"\n >\n {{ latestMessage | translate }}\n </div>\n </div>\n</button>\n", components: [{ type: i2.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size"] }], pipes: { "translate": i3.TranslatePipe } });
95
+ ChannelPreviewComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelPreviewComponent, deps: [{ token: i1.ChannelService }, { token: i0.NgZone }, { token: i2.ChatClientService }], target: i0.ɵɵFactoryTarget.Component });
96
+ ChannelPreviewComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.5", type: ChannelPreviewComponent, selector: "stream-channel-preview", inputs: { channel: "channel" }, ngImport: i0, template: "<button\n class=\"str-chat__channel-preview-messenger\"\n [class.str-chat__channel-preview-messenger--active]=\"isActive\"\n [class.str-chat__channel-preview-messenger--unread]=\"isUnread\"\n (click)=\"setAsActiveChannel()\"\n data-testid=\"channel-preview-container\"\n>\n <div class=\"str-chat__channel-preview-messenger--left\">\n <stream-avatar-placeholder\n imageUrl=\"{{ avatarImage }}\"\n name=\"{{ avatarName }}\"\n [size]=\"40\"\n ></stream-avatar-placeholder>\n </div>\n <div class=\"str-chat__channel-preview-messenger--right\">\n <div\n style=\"position: relative\"\n class=\"str-chat__channel-preview-messenger--name\"\n >\n <span data-testid=\"channel-preview-title\">{{ title }}</span>\n </div>\n <div\n data-testid=\"latest-message\"\n class=\"str-chat__channel-preview-messenger--last-message\"\n >\n {{ latestMessage | translate }}\n </div>\n </div>\n</button>\n", components: [{ type: i3.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "size"] }], pipes: { "translate": i4.TranslatePipe } });
85
97
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImport: i0, type: ChannelPreviewComponent, decorators: [{
86
98
  type: Component,
87
99
  args: [{
@@ -89,7 +101,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.5", ngImpor
89
101
  templateUrl: './channel-preview.component.html',
90
102
  styles: [],
91
103
  }]
92
- }], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i0.NgZone }]; }, propDecorators: { channel: [{
104
+ }], ctorParameters: function () { return [{ type: i1.ChannelService }, { type: i0.NgZone }, { type: i2.ChatClientService }]; }, propDecorators: { channel: [{
93
105
  type: Input
94
106
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLXByZXZpZXcvY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLXByZXZpZXcvY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE2QixNQUFNLGVBQWUsQ0FBQzs7Ozs7QUFXNUU7O0dBRUc7QUFNSCxNQUFNLE9BQU8sdUJBQXVCO0lBV2xDLFlBQW9CLGNBQThCLEVBQVUsTUFBYztRQUF0RCxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBTjFFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixrQkFBYSxHQUFXLGdCQUFnQixDQUFDO1FBQ2pDLGtCQUFhLEdBQW1ELEVBQUUsQ0FBQztRQUNuRSxzQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFFNEMsQ0FBQztJQUU5RSxRQUFROztRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQzFDLENBQUMsYUFBYSxFQUFFLEVBQUUsV0FDaEIsT0FBQSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQSxhQUFhLGFBQWIsYUFBYSx1QkFBYixhQUFhLENBQUUsRUFBRSxPQUFLLE1BQUEsSUFBSSxDQUFDLE9BQU8sMENBQUUsRUFBRSxDQUFBLENBQUMsQ0FBQSxFQUFBLENBQzNELENBQ0YsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLE1B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O3dHQUF2Qix1QkFBdUIsOEZDbkJwQywrNEJBMEJBOzJGRFBhLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxXQUFXLEVBQUUsa0NBQWtDO29CQUMvQyxNQUFNLEVBQUUsRUFBRTtpQkFDWDswSEFLVSxPQUFPO3NCQUFmLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIENoYW5uZWwsXG4gIEV2ZW50LFxuICBGb3JtYXRNZXNzYWdlUmVzcG9uc2UsXG4gIE1lc3NhZ2VSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgYENoYW5uZWxQcmV2aWV3YCBjb21wb25lbnQgZGlzcGxheXMgYSBjaGFubmVsIHByZXZpZXcgaW4gdGhlIGNoYW5uZWwgbGlzdCwgaXQgY29uc2lzdHMgb2YgdGhlIGltYWdlLCBuYW1lIGFuZCBsYXRlc3QgbWVzc2FnZSBvZiB0aGUgY2hhbm5lbC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLWNoYW5uZWwtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFubmVsLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFubmVsUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRoZSBjaGFubmVsIHRvIGJlIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgY2hhbm5lbDogQ2hhbm5lbDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPiB8IHVuZGVmaW5lZDtcbiAgaXNBY3RpdmUgPSBmYWxzZTtcbiAgaXNVbnJlYWQgPSBmYWxzZTtcbiAgbGF0ZXN0TWVzc2FnZTogc3RyaW5nID0gJ05vdGhpbmcgeWV0Li4uJztcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiAoU3Vic2NyaXB0aW9uIHwgeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9KVtdID0gW107XG4gIHByaXZhdGUgY2FuU2VuZFJlYWRFdmVudHMgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLCBwcml2YXRlIG5nWm9uZTogTmdab25lKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5zdWJzY3JpYmUoXG4gICAgICAgIChhY3RpdmVDaGFubmVsKSA9PlxuICAgICAgICAgICh0aGlzLmlzQWN0aXZlID0gYWN0aXZlQ2hhbm5lbD8uaWQgPT09IHRoaXMuY2hhbm5lbD8uaWQpXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMuY2hhbm5lbD8uc3RhdGU/Lm1lc3NhZ2VzO1xuICAgIGlmIChtZXNzYWdlcyAmJiBtZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNldExhdGVzdE1lc3NhZ2UobWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV0pO1xuICAgIH1cbiAgICB0aGlzLmlzVW5yZWFkID0gISF0aGlzLmNoYW5uZWwhLmNvdW50VW5yZWFkKCkgJiYgdGhpcy5jYW5TZW5kUmVhZEV2ZW50cztcbiAgICBjb25zdCBjYXBhYmlsaXRpZXMgPVxuICAgICAgKHRoaXMuY2hhbm5lbD8uZGF0YT8ub3duX2NhcGFiaWxpdGllcyBhcyBzdHJpbmdbXSkgfHwgW107XG4gICAgdGhpcy5jYW5TZW5kUmVhZEV2ZW50cyA9IGNhcGFiaWxpdGllcy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbCEub24oJ21lc3NhZ2UubmV3JywgdGhpcy5oYW5kbGVNZXNzYWdlRXZlbnQuYmluZCh0aGlzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsIS5vbignbWVzc2FnZS51cGRhdGVkJywgdGhpcy5oYW5kbGVNZXNzYWdlRXZlbnQuYmluZCh0aGlzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsIS5vbignbWVzc2FnZS5kZWxldGVkJywgdGhpcy5oYW5kbGVNZXNzYWdlRXZlbnQuYmluZCh0aGlzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsIS5vbignY2hhbm5lbC50cnVuY2F0ZWQnLCB0aGlzLmhhbmRsZU1lc3NhZ2VFdmVudC5iaW5kKHRoaXMpKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWwhLm9uKCdtZXNzYWdlLnJlYWQnLCAoKSA9PlxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNVbnJlYWQgPVxuICAgICAgICAgICAgISF0aGlzLmNoYW5uZWwhLmNvdW50VW5yZWFkKCkgJiYgdGhpcy5jYW5TZW5kUmVhZEV2ZW50cztcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBnZXQgYXZhdGFySW1hZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbm5lbD8uZGF0YT8uaW1hZ2U7XG4gIH1cblxuICBnZXQgYXZhdGFyTmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jaGFubmVsPy5kYXRhPy5uYW1lO1xuICB9XG5cbiAgZ2V0IHRpdGxlKCkge1xuICAgIHJldHVybiB0aGlzLmNoYW5uZWw/LmRhdGE/Lm5hbWU7XG4gIH1cblxuICBzZXRBc0FjdGl2ZUNoYW5uZWwoKTogdm9pZCB7XG4gICAgdm9pZCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnNldEFzQWN0aXZlQ2hhbm5lbCh0aGlzLmNoYW5uZWwhKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTWVzc2FnZUV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5jaGFubmVsPy5zdGF0ZS5tZXNzYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlID0gJ05vdGhpbmcgeWV0Li4uJztcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAhZXZlbnQubWVzc2FnZSB8fFxuICAgICAgICB0aGlzLmNoYW5uZWw/LnN0YXRlLm1lc3NhZ2VzW3RoaXMuY2hhbm5lbD8uc3RhdGUubWVzc2FnZXMubGVuZ3RoIC0gMV1cbiAgICAgICAgICAuaWQgIT09IGV2ZW50Lm1lc3NhZ2UuaWRcbiAgICAgICkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLnNldExhdGVzdE1lc3NhZ2UoZXZlbnQubWVzc2FnZSk7XG4gICAgICB0aGlzLmlzVW5yZWFkID0gISF0aGlzLmNoYW5uZWwuY291bnRVbnJlYWQoKSAmJiB0aGlzLmNhblNlbmRSZWFkRXZlbnRzO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMYXRlc3RNZXNzYWdlKG1lc3NhZ2U/OiBGb3JtYXRNZXNzYWdlUmVzcG9uc2UgfCBNZXNzYWdlUmVzcG9uc2UpIHtcbiAgICBpZiAobWVzc2FnZT8uZGVsZXRlZF9hdCkge1xuICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlID0gJ3N0cmVhbUNoYXQuTWVzc2FnZSBkZWxldGVkJztcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2U/LnRleHQpIHtcbiAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZSA9IG1lc3NhZ2UudGV4dDtcbiAgICB9IGVsc2UgaWYgKG1lc3NhZ2U/LmF0dGFjaG1lbnRzICYmIG1lc3NhZ2UuYXR0YWNobWVudHMubGVuZ3RoKSB7XG4gICAgICB0aGlzLmxhdGVzdE1lc3NhZ2UgPSAnc3RyZWFtQ2hhdC7wn4+ZIEF0dGFjaG1lbnQuLi4nO1xuICAgIH1cbiAgfVxufVxuIiwiPGJ1dHRvblxuICBjbGFzcz1cInN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyLS1hY3RpdmVdPVwiaXNBY3RpdmVcIlxuICBbY2xhc3Muc3RyLWNoYXRfX2NoYW5uZWwtcHJldmlldy1tZXNzZW5nZXItLXVucmVhZF09XCJpc1VucmVhZFwiXG4gIChjbGljayk9XCJzZXRBc0FjdGl2ZUNoYW5uZWwoKVwiXG4gIGRhdGEtdGVzdGlkPVwiY2hhbm5lbC1wcmV2aWV3LWNvbnRhaW5lclwiXG4+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1wcmV2aWV3LW1lc3Nlbmdlci0tbGVmdFwiPlxuICAgIDxzdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyXG4gICAgICBpbWFnZVVybD1cInt7IGF2YXRhckltYWdlIH19XCJcbiAgICAgIG5hbWU9XCJ7eyBhdmF0YXJOYW1lIH19XCJcbiAgICAgIFtzaXplXT1cIjQwXCJcbiAgICA+PC9zdHJlYW0tYXZhdGFyLXBsYWNlaG9sZGVyPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyLS1yaWdodFwiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1wcmV2aWV3LW1lc3Nlbmdlci0tbmFtZVwiPlxuICAgICAgPHNwYW4gZGF0YS10ZXN0aWQ9XCJjaGFubmVsLXByZXZpZXctdGl0bGVcIj57eyB0aXRsZSB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBkYXRhLXRlc3RpZD1cImxhdGVzdC1tZXNzYWdlXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2NoYW5uZWwtcHJldmlldy1tZXNzZW5nZXItLWxhc3QtbWVzc2FnZVwiXG4gICAgPlxuICAgICAge3sgbGF0ZXN0TWVzc2FnZSB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvYnV0dG9uPlxuIl19
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLXByZXZpZXcvY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLXByZXZpZXcvY2hhbm5lbC1wcmV2aWV3LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE2QixNQUFNLGVBQWUsQ0FBQztBQVM1RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7O0FBSXBFOztHQUVHO0FBTUgsTUFBTSxPQUFPLHVCQUF1QjtJQVdsQyxZQUNVLGNBQThCLEVBQzlCLE1BQWMsRUFDZCxpQkFBb0M7UUFGcEMsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBVDlDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixrQkFBYSxHQUFXLGdCQUFnQixDQUFDO1FBQ2pDLGtCQUFhLEdBQW1ELEVBQUUsQ0FBQztRQUNuRSxzQkFBaUIsR0FBRyxJQUFJLENBQUM7SUFNOUIsQ0FBQztJQUVKLFFBQVE7O1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FDMUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxXQUNoQixPQUFBLENBQUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFBLGFBQWEsYUFBYixhQUFhLHVCQUFiLGFBQWEsQ0FBRSxFQUFFLE9BQUss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Q0FBRSxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBRyxDQUFDLEVBQ2pFLEVBQUUsTUFBSyxLQUFLLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFDMUI7Z0JBQ0EsT0FBTzthQUNSO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUN6RSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxPQUFpRDtRQUN4RSxJQUFJLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxVQUFVLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsR0FBRyw0QkFBNEIsQ0FBQztTQUNuRDthQUFNLElBQUksT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLElBQUksRUFBRTtZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUM7U0FDbkM7YUFBTSxJQUFJLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFdBQVcsS0FBSSxPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRTtZQUM3RCxJQUFJLENBQUMsYUFBYSxHQUFHLDZCQUE2QixDQUFDO1NBQ3BEO0lBQ0gsQ0FBQzs7b0hBbkhVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCLDhGQ3JCcEMsZzhCQTZCQTsyRkRSYSx1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsV0FBVyxFQUFFLGtDQUFrQztvQkFDL0MsTUFBTSxFQUFFLEVBQUU7aUJBQ1g7MEpBS1UsT0FBTztzQkFBZixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgTmdab25lLCBPbkRlc3Ryb3ksIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBDaGFubmVsLFxuICBFdmVudCxcbiAgRm9ybWF0TWVzc2FnZVJlc3BvbnNlLFxuICBNZXNzYWdlUmVzcG9uc2UsXG59IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IGdldENoYW5uZWxEaXNwbGF5VGV4dCB9IGZyb20gJy4uL2dldC1jaGFubmVsLWRpc3BsYXktdGV4dCc7XG5pbXBvcnQgeyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcblxuLyoqXG4gKiBUaGUgYENoYW5uZWxQcmV2aWV3YCBjb21wb25lbnQgZGlzcGxheXMgYSBjaGFubmVsIHByZXZpZXcgaW4gdGhlIGNoYW5uZWwgbGlzdCwgaXQgY29uc2lzdHMgb2YgdGhlIGltYWdlLCBuYW1lIGFuZCBsYXRlc3QgbWVzc2FnZSBvZiB0aGUgY2hhbm5lbC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3RyZWFtLWNoYW5uZWwtcHJldmlldycsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFubmVsLXByZXZpZXcuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBDaGFubmVsUHJldmlld0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIFRoZSBjaGFubmVsIHRvIGJlIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgY2hhbm5lbDogQ2hhbm5lbDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPiB8IHVuZGVmaW5lZDtcbiAgaXNBY3RpdmUgPSBmYWxzZTtcbiAgaXNVbnJlYWQgPSBmYWxzZTtcbiAgbGF0ZXN0TWVzc2FnZTogc3RyaW5nID0gJ05vdGhpbmcgeWV0Li4uJztcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiAoU3Vic2NyaXB0aW9uIHwgeyB1bnN1YnNjcmliZTogKCkgPT4gdm9pZCB9KVtdID0gW107XG4gIHByaXZhdGUgY2FuU2VuZFJlYWRFdmVudHMgPSB0cnVlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbm5lbFNlcnZpY2U6IENoYW5uZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2VcbiAgKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5zdWJzY3JpYmUoXG4gICAgICAgIChhY3RpdmVDaGFubmVsKSA9PlxuICAgICAgICAgICh0aGlzLmlzQWN0aXZlID0gYWN0aXZlQ2hhbm5lbD8uaWQgPT09IHRoaXMuY2hhbm5lbD8uaWQpXG4gICAgICApXG4gICAgKTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IHRoaXMuY2hhbm5lbD8uc3RhdGU/Lm1lc3NhZ2VzO1xuICAgIGlmIChtZXNzYWdlcyAmJiBtZXNzYWdlcy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNldExhdGVzdE1lc3NhZ2UobWVzc2FnZXNbbWVzc2FnZXMubGVuZ3RoIC0gMV0pO1xuICAgIH1cbiAgICB0aGlzLmlzVW5yZWFkID0gISF0aGlzLmNoYW5uZWwhLmNvdW50VW5yZWFkKCkgJiYgdGhpcy5jYW5TZW5kUmVhZEV2ZW50cztcbiAgICBjb25zdCBjYXBhYmlsaXRpZXMgPVxuICAgICAgKHRoaXMuY2hhbm5lbD8uZGF0YT8ub3duX2NhcGFiaWxpdGllcyBhcyBzdHJpbmdbXSkgfHwgW107XG4gICAgdGhpcy5jYW5TZW5kUmVhZEV2ZW50cyA9IGNhcGFiaWxpdGllcy5pbmRleE9mKCdyZWFkLWV2ZW50cycpICE9PSAtMTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY2hhbm5lbCEub24oJ21lc3NhZ2UubmV3JywgdGhpcy5oYW5kbGVNZXNzYWdlRXZlbnQuYmluZCh0aGlzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsIS5vbignbWVzc2FnZS51cGRhdGVkJywgdGhpcy5oYW5kbGVNZXNzYWdlRXZlbnQuYmluZCh0aGlzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsIS5vbignbWVzc2FnZS5kZWxldGVkJywgdGhpcy5oYW5kbGVNZXNzYWdlRXZlbnQuYmluZCh0aGlzKSlcbiAgICApO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGFubmVsIS5vbignY2hhbm5lbC50cnVuY2F0ZWQnLCB0aGlzLmhhbmRsZU1lc3NhZ2VFdmVudC5iaW5kKHRoaXMpKVxuICAgICk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmNoYW5uZWwhLm9uKCdtZXNzYWdlLnJlYWQnLCAoKSA9PlxuICAgICAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaXNVbnJlYWQgPVxuICAgICAgICAgICAgISF0aGlzLmNoYW5uZWwhLmNvdW50VW5yZWFkKCkgJiYgdGhpcy5jYW5TZW5kUmVhZEV2ZW50cztcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBnZXQgYXZhdGFySW1hZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2hhbm5lbD8uZGF0YT8uaW1hZ2U7XG4gIH1cblxuICBnZXQgYXZhdGFyTmFtZSgpIHtcbiAgICBpZiAodGhpcy5jaGFubmVsPy5kYXRhPy5uYW1lKSB7XG4gICAgICByZXR1cm4gdGhpcy5jaGFubmVsPy5kYXRhPy5uYW1lO1xuICAgIH1cbiAgICBjb25zdCBvdGhlck1lbWJlcnMgPSBPYmplY3QudmFsdWVzKFxuICAgICAgdGhpcy5jaGFubmVsPy5zdGF0ZS5tZW1iZXJzIHx8IHt9XG4gICAgKS5maWx0ZXIoKG0pID0+IG0udXNlcl9pZCAhPT0gdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50LnVzZXIhLmlkKTtcbiAgICBpZiAob3RoZXJNZW1iZXJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIG90aGVyTWVtYmVyc1swXS51c2VyPy5uYW1lIHx8IG90aGVyTWVtYmVyc1swXS51c2VyPy5uYW1lO1xuICAgIH1cbiAgICByZXR1cm4gJyMnO1xuICB9XG5cbiAgZ2V0IHRpdGxlKCkge1xuICAgIGlmICghdGhpcy5jaGFubmVsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBnZXRDaGFubmVsRGlzcGxheVRleHQoXG4gICAgICB0aGlzLmNoYW5uZWwsXG4gICAgICB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQudXNlciFcbiAgICApO1xuICB9XG5cbiAgc2V0QXNBY3RpdmVDaGFubmVsKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5jaGFubmVsU2VydmljZS5zZXRBc0FjdGl2ZUNoYW5uZWwodGhpcy5jaGFubmVsISk7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU1lc3NhZ2VFdmVudChldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLm5nWm9uZS5ydW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuY2hhbm5lbD8uc3RhdGUubWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZSA9ICdOb3RoaW5nIHlldC4uLic7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgIWV2ZW50Lm1lc3NhZ2UgfHxcbiAgICAgICAgdGhpcy5jaGFubmVsPy5zdGF0ZS5tZXNzYWdlc1t0aGlzLmNoYW5uZWw/LnN0YXRlLm1lc3NhZ2VzLmxlbmd0aCAtIDFdXG4gICAgICAgICAgLmlkICE9PSBldmVudC5tZXNzYWdlLmlkXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRMYXRlc3RNZXNzYWdlKGV2ZW50Lm1lc3NhZ2UpO1xuICAgICAgdGhpcy5pc1VucmVhZCA9ICEhdGhpcy5jaGFubmVsLmNvdW50VW5yZWFkKCkgJiYgdGhpcy5jYW5TZW5kUmVhZEV2ZW50cztcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TGF0ZXN0TWVzc2FnZShtZXNzYWdlPzogRm9ybWF0TWVzc2FnZVJlc3BvbnNlIHwgTWVzc2FnZVJlc3BvbnNlKSB7XG4gICAgaWYgKG1lc3NhZ2U/LmRlbGV0ZWRfYXQpIHtcbiAgICAgIHRoaXMubGF0ZXN0TWVzc2FnZSA9ICdzdHJlYW1DaGF0Lk1lc3NhZ2UgZGVsZXRlZCc7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlPy50ZXh0KSB7XG4gICAgICB0aGlzLmxhdGVzdE1lc3NhZ2UgPSBtZXNzYWdlLnRleHQ7XG4gICAgfSBlbHNlIGlmIChtZXNzYWdlPy5hdHRhY2htZW50cyAmJiBtZXNzYWdlLmF0dGFjaG1lbnRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5sYXRlc3RNZXNzYWdlID0gJ3N0cmVhbUNoYXQu8J+PmSBBdHRhY2htZW50Li4uJztcbiAgICB9XG4gIH1cbn1cbiIsIjxidXR0b25cbiAgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1wcmV2aWV3LW1lc3NlbmdlclwiXG4gIFtjbGFzcy5zdHItY2hhdF9fY2hhbm5lbC1wcmV2aWV3LW1lc3Nlbmdlci0tYWN0aXZlXT1cImlzQWN0aXZlXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyLS11bnJlYWRdPVwiaXNVbnJlYWRcIlxuICAoY2xpY2spPVwic2V0QXNBY3RpdmVDaGFubmVsKClcIlxuICBkYXRhLXRlc3RpZD1cImNoYW5uZWwtcHJldmlldy1jb250YWluZXJcIlxuPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2NoYW5uZWwtcHJldmlldy1tZXNzZW5nZXItLWxlZnRcIj5cbiAgICA8c3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlclxuICAgICAgaW1hZ2VVcmw9XCJ7eyBhdmF0YXJJbWFnZSB9fVwiXG4gICAgICBuYW1lPVwie3sgYXZhdGFyTmFtZSB9fVwiXG4gICAgICBbc2l6ZV09XCI0MFwiXG4gICAgPjwvc3RyZWFtLWF2YXRhci1wbGFjZWhvbGRlcj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1wcmV2aWV3LW1lc3Nlbmdlci0tcmlnaHRcIj5cbiAgICA8ZGl2XG4gICAgICBzdHlsZT1cInBvc2l0aW9uOiByZWxhdGl2ZVwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19jaGFubmVsLXByZXZpZXctbWVzc2VuZ2VyLS1uYW1lXCJcbiAgICA+XG4gICAgICA8c3BhbiBkYXRhLXRlc3RpZD1cImNoYW5uZWwtcHJldmlldy10aXRsZVwiPnt7IHRpdGxlIH19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGRhdGEtdGVzdGlkPVwibGF0ZXN0LW1lc3NhZ2VcIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1wcmV2aWV3LW1lc3Nlbmdlci0tbGFzdC1tZXNzYWdlXCJcbiAgICA+XG4gICAgICB7eyBsYXRlc3RNZXNzYWdlIHwgdHJhbnNsYXRlIH19XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9idXR0b24+XG4iXX0=