stream-chat-angular 6.0.0-beta.5 → 6.0.0-rc.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.
- package/README.md +2 -2
- package/assets/i18n/en.d.ts +0 -1
- package/assets/version.d.ts +1 -1
- package/{esm2022 → esm2020}/assets/i18n/en.mjs +1 -2
- package/{esm2022 → esm2020}/assets/version.mjs +2 -2
- package/esm2020/lib/attachment-configuration.service.mjs +182 -0
- package/esm2020/lib/attachment-list/attachment-list.component.mjs +232 -0
- package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +55 -0
- package/esm2020/lib/attachment.service.mjs +481 -0
- package/esm2020/lib/avatar/avatar.component.mjs +160 -0
- package/esm2020/lib/avatar-placeholder/avatar-placeholder.component.mjs +66 -0
- package/esm2020/lib/channel/channel.component.mjs +45 -0
- package/esm2020/lib/channel-header/channel-header.component.mjs +72 -0
- package/esm2020/lib/channel-list/channel-list.component.mjs +47 -0
- package/esm2020/lib/channel-preview/channel-preview.component.mjs +155 -0
- package/esm2020/lib/channel-query.mjs +77 -0
- package/esm2020/lib/channel.service.mjs +1561 -0
- package/esm2020/lib/chat-client.service.mjs +233 -0
- package/esm2020/lib/custom-templates.service.mjs +244 -0
- package/{esm2022 → esm2020}/lib/date-parser.service.mjs +5 -5
- package/esm2020/lib/file-utils.mjs +35 -0
- package/{esm2022 → esm2020}/lib/get-channel-display-text.mjs +1 -1
- package/esm2020/lib/get-message-translation.mjs +12 -0
- package/esm2020/lib/icon/icon-placeholder/icon-placeholder.component.mjs +28 -0
- package/{esm2022 → esm2020}/lib/icon/icon.component.mjs +5 -5
- package/{esm2022 → esm2020}/lib/icon/icon.module.mjs +11 -11
- package/{esm2022 → esm2020}/lib/icon/loading-indicator/loading-indicator.component.mjs +5 -5
- package/esm2020/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.mjs +20 -0
- package/{esm2022 → esm2020}/lib/list-users.mjs +1 -1
- package/esm2020/lib/message/message.component.mjs +486 -0
- package/esm2020/lib/message-actions-box/message-actions-box.component.mjs +123 -0
- package/esm2020/lib/message-actions.service.mjs +187 -0
- package/esm2020/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +71 -0
- package/esm2020/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.mjs +333 -0
- package/{esm2022 → esm2020}/lib/message-input/emoji-input.service.mjs +7 -7
- package/esm2020/lib/message-input/message-input-config.service.mjs +50 -0
- package/esm2020/lib/message-input/message-input.component.mjs +507 -0
- package/{esm2022 → esm2020}/lib/message-input/textarea/textarea.component.mjs +6 -6
- package/{esm2022 → esm2020}/lib/message-input/textarea.directive.mjs +5 -5
- package/{esm2022 → esm2020}/lib/message-input/voice-recorder.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/message-list/group-styles.mjs +1 -1
- package/esm2020/lib/message-list/message-list.component.mjs +717 -0
- package/esm2020/lib/message-preview.mjs +21 -0
- package/esm2020/lib/message-reactions/message-reactions.component.mjs +168 -0
- package/esm2020/lib/message-reactions-selector/message-reactions-selector.component.mjs +61 -0
- package/{esm2022 → esm2020}/lib/message-reactions.service.mjs +6 -6
- package/esm2020/lib/message-text/message-text.component.mjs +143 -0
- package/esm2020/lib/message.service.mjs +43 -0
- package/{esm2022 → esm2020}/lib/modal/modal.component.mjs +6 -6
- package/esm2020/lib/notification/notification.component.mjs +20 -0
- package/esm2020/lib/notification-list/notification-list.component.mjs +36 -0
- package/{esm2022 → esm2020}/lib/notification.service.mjs +6 -6
- package/esm2020/lib/paginated-list/paginated-list.component.mjs +94 -0
- package/{esm2022 → esm2020}/lib/parse-date.mjs +1 -1
- package/esm2020/lib/read-by.mjs +12 -0
- package/esm2020/lib/stream-autocomplete-textarea.module.mjs +33 -0
- package/{esm2022 → esm2020}/lib/stream-avatar.module.mjs +5 -5
- package/{esm2022 → esm2020}/lib/stream-chat.module.mjs +59 -59
- package/{esm2022 → esm2020}/lib/stream-i18n.service.mjs +6 -6
- package/esm2020/lib/stream-textarea.module.mjs +31 -0
- package/{esm2022 → esm2020}/lib/theme.service.mjs +6 -6
- package/esm2020/lib/thread/thread.component.mjs +51 -0
- package/{esm2022 → esm2020}/lib/transliteration.service.mjs +5 -5
- package/esm2020/lib/types-custom.mjs +2 -0
- package/esm2020/lib/types.mjs +2 -0
- package/esm2020/lib/user-list/user-list.component.mjs +47 -0
- package/esm2020/lib/virtualized-list.service.mjs +271 -0
- package/{esm2022 → esm2020}/lib/virtualized-message-list.service.mjs +1 -1
- package/{esm2022 → esm2020}/lib/voice-recorder/amplitude-recorder.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/voice-recorder/audio-recorder.service.mjs +5 -5
- package/{esm2022 → esm2020}/lib/voice-recorder/media-recorder.mjs +1 -1
- package/esm2020/lib/voice-recorder/mp3-transcoder.mjs +61 -0
- package/esm2020/lib/voice-recorder/transcoder.service.mjs +121 -0
- package/esm2020/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +35 -0
- package/esm2020/lib/voice-recorder/voice-recorder.component.mjs +80 -0
- package/{esm2022 → esm2020}/lib/voice-recorder/voice-recorder.module.mjs +9 -9
- package/esm2020/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +112 -0
- package/esm2020/lib/voice-recording/voice-recording.component.mjs +91 -0
- package/{esm2022 → esm2020}/lib/voice-recording/voice-recording.module.mjs +5 -5
- package/{esm2022 → esm2020}/lib/wave-form-sampler.mjs +1 -1
- package/esm2020/public-api.mjs +86 -0
- package/esm2020/stream-chat.mjs +2 -0
- package/fesm2015/stream-chat-angular.mjs +9171 -0
- package/fesm2015/stream-chat-angular.mjs.map +1 -0
- package/{fesm2022 → fesm2020}/stream-chat-angular.mjs +1251 -961
- package/fesm2020/stream-chat-angular.mjs.map +1 -0
- package/lib/attachment-configuration.service.d.ts +12 -12
- package/lib/attachment-list/attachment-list.component.d.ts +15 -10
- package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +1 -1
- package/lib/attachment.service.d.ts +12 -10
- package/lib/avatar/avatar.component.d.ts +7 -7
- package/lib/avatar-placeholder/avatar-placeholder.component.d.ts +5 -5
- package/lib/channel/channel.component.d.ts +1 -1
- package/lib/channel-header/channel-header.component.d.ts +2 -2
- package/lib/channel-list/channel-list.component.d.ts +3 -4
- package/lib/channel-preview/channel-preview.component.d.ts +6 -6
- package/lib/channel-query.d.ts +26 -0
- package/lib/channel.service.d.ts +146 -154
- package/lib/chat-client.service.d.ts +17 -15
- package/lib/custom-templates.service.d.ts +50 -50
- package/lib/get-channel-display-text.d.ts +1 -2
- package/lib/get-message-translation.d.ts +3 -3
- package/lib/icon/icon-placeholder/icon-placeholder.component.d.ts +2 -2
- package/lib/icon/icon.component.d.ts +2 -2
- package/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.d.ts +1 -1
- package/lib/message/message.component.d.ts +6 -6
- package/lib/message-actions-box/message-actions-box.component.d.ts +5 -4
- package/lib/message-actions.service.d.ts +10 -10
- package/lib/message-bounce-prompt/message-bounce-prompt.component.d.ts +1 -1
- package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +5 -5
- package/lib/message-input/emoji-input.service.d.ts +2 -2
- package/lib/message-input/message-input-config.service.d.ts +3 -3
- package/lib/message-input/message-input.component.d.ts +10 -33
- package/lib/message-input/textarea/textarea.component.d.ts +3 -3
- package/lib/message-input/textarea.directive.d.ts +1 -1
- package/lib/message-list/group-styles.d.ts +1 -1
- package/lib/message-list/message-list.component.d.ts +3 -2
- package/lib/message-preview.d.ts +2 -3
- package/lib/message-reactions/message-reactions.component.d.ts +9 -8
- package/lib/message-reactions-selector/message-reactions-selector.component.d.ts +6 -5
- package/lib/message-reactions.service.d.ts +4 -4
- package/lib/message-text/message-text.component.d.ts +5 -5
- package/lib/message.service.d.ts +6 -7
- package/lib/modal/modal.component.d.ts +1 -1
- package/lib/notification/notification.component.d.ts +2 -2
- package/lib/notification-list/notification-list.component.d.ts +1 -0
- package/lib/notification.service.d.ts +1 -1
- package/lib/paginated-list/paginated-list.component.d.ts +2 -5
- package/lib/read-by.d.ts +1 -2
- package/lib/stream-i18n.service.d.ts +1 -1
- package/lib/theme.service.d.ts +1 -1
- package/lib/thread/thread.component.d.ts +3 -3
- package/lib/types-custom.d.ts +15 -0
- package/lib/types.d.ts +116 -155
- package/lib/user-list/user-list.component.d.ts +2 -3
- package/lib/virtualized-message-list.service.d.ts +1 -1
- package/lib/voice-recorder/amplitude-recorder.service.d.ts +2 -2
- package/lib/voice-recorder/media-recorder.d.ts +2 -2
- package/lib/voice-recorder/transcoder.service.d.ts +4 -4
- package/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.d.ts +1 -0
- package/lib/voice-recorder/voice-recorder.component.d.ts +2 -2
- package/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.d.ts +3 -3
- package/lib/voice-recording/voice-recording.component.d.ts +2 -3
- package/package.json +21 -15
- package/public-api.d.ts +3 -0
- package/src/assets/i18n/en.ts +0 -1
- package/src/assets/version.ts +1 -1
- package/esm2022/lib/attachment-configuration.service.mjs +0 -185
- package/esm2022/lib/attachment-list/attachment-list.component.mjs +0 -212
- package/esm2022/lib/attachment-preview-list/attachment-preview-list.component.mjs +0 -55
- package/esm2022/lib/attachment.service.mjs +0 -479
- package/esm2022/lib/avatar/avatar.component.mjs +0 -157
- package/esm2022/lib/avatar-placeholder/avatar-placeholder.component.mjs +0 -66
- package/esm2022/lib/channel/channel.component.mjs +0 -45
- package/esm2022/lib/channel-header/channel-header.component.mjs +0 -72
- package/esm2022/lib/channel-list/channel-list.component.mjs +0 -50
- package/esm2022/lib/channel-preview/channel-preview.component.mjs +0 -150
- package/esm2022/lib/channel.service.mjs +0 -1393
- package/esm2022/lib/chat-client.service.mjs +0 -227
- package/esm2022/lib/custom-templates.service.mjs +0 -244
- package/esm2022/lib/file-utils.mjs +0 -35
- package/esm2022/lib/get-message-translation.mjs +0 -12
- package/esm2022/lib/icon/icon-placeholder/icon-placeholder.component.mjs +0 -28
- package/esm2022/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.mjs +0 -20
- package/esm2022/lib/message/message.component.mjs +0 -486
- package/esm2022/lib/message-actions-box/message-actions-box.component.mjs +0 -120
- package/esm2022/lib/message-actions.service.mjs +0 -187
- package/esm2022/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +0 -71
- package/esm2022/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.mjs +0 -333
- package/esm2022/lib/message-input/message-input-config.service.mjs +0 -50
- package/esm2022/lib/message-input/message-input.component.mjs +0 -507
- package/esm2022/lib/message-list/message-list.component.mjs +0 -715
- package/esm2022/lib/message-preview.mjs +0 -21
- package/esm2022/lib/message-reactions/message-reactions.component.mjs +0 -165
- package/esm2022/lib/message-reactions-selector/message-reactions-selector.component.mjs +0 -57
- package/esm2022/lib/message-text/message-text.component.mjs +0 -143
- package/esm2022/lib/message.service.mjs +0 -43
- package/esm2022/lib/notification/notification.component.mjs +0 -20
- package/esm2022/lib/notification-list/notification-list.component.mjs +0 -33
- package/esm2022/lib/paginated-list/paginated-list.component.mjs +0 -94
- package/esm2022/lib/read-by.mjs +0 -12
- package/esm2022/lib/stream-autocomplete-textarea.module.mjs +0 -33
- package/esm2022/lib/stream-textarea.module.mjs +0 -31
- package/esm2022/lib/thread/thread.component.mjs +0 -51
- package/esm2022/lib/types.mjs +0 -2
- package/esm2022/lib/user-list/user-list.component.mjs +0 -47
- package/esm2022/lib/virtualized-list.service.mjs +0 -273
- package/esm2022/lib/voice-recorder/mp3-transcoder.mjs +0 -61
- package/esm2022/lib/voice-recorder/transcoder.service.mjs +0 -121
- package/esm2022/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +0 -32
- package/esm2022/lib/voice-recorder/voice-recorder.component.mjs +0 -80
- package/esm2022/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +0 -112
- package/esm2022/lib/voice-recording/voice-recording.component.mjs +0 -91
- package/esm2022/public-api.mjs +0 -82
- package/fesm2022/stream-chat-angular.mjs.map +0 -1
- /package/{esm2022 → esm2020}/lib/format-duration.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/injection-tokens.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/is-image-attachment.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/is-on-separate-date.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/is-safari.mjs +0 -0
- /package/{esm2022 → esm2020}/lib/message-input/textarea.interface.mjs +0 -0
- /package/{esm2022 → esm2020}/stream-chat-angular.mjs +0 -0
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
import { Component, Input, } from '@angular/core';
|
|
2
|
-
import { filter } from 'rxjs/operators';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../chat-client.service";
|
|
5
|
-
/**
|
|
6
|
-
* The `Avatar` component displays the provided image, with fallback to the first letter of the optional name input.
|
|
7
|
-
*/
|
|
8
|
-
export class AvatarComponent {
|
|
9
|
-
constructor(chatClientService, ngZone, cdRef) {
|
|
10
|
-
this.chatClientService = chatClientService;
|
|
11
|
-
this.ngZone = ngZone;
|
|
12
|
-
this.cdRef = cdRef;
|
|
13
|
-
/**
|
|
14
|
-
* If a channel avatar is displayed, and if the channel has exactly two members a green dot is displayed if the other member is online. Set this flag to `false` to turn off this behavior.
|
|
15
|
-
*/
|
|
16
|
-
this.showOnlineIndicator = true;
|
|
17
|
-
/**
|
|
18
|
-
* If channel/user image isn't provided the initials of the name of the channel/user is shown instead, you can choose how the initals should be computed
|
|
19
|
-
*/
|
|
20
|
-
this.initialsType = 'first-letter-of-first-word';
|
|
21
|
-
this.isError = false;
|
|
22
|
-
this.isOnline = false;
|
|
23
|
-
this.initials = '';
|
|
24
|
-
this.isViewInited = false;
|
|
25
|
-
this.subscriptions = [];
|
|
26
|
-
}
|
|
27
|
-
ngOnChanges(changes) {
|
|
28
|
-
if (changes['channel']) {
|
|
29
|
-
this.updateIsOnlineSubscription();
|
|
30
|
-
}
|
|
31
|
-
if (changes.type || changes.name || changes.channel) {
|
|
32
|
-
this.setInitials();
|
|
33
|
-
}
|
|
34
|
-
if (changes.type || changes.channel) {
|
|
35
|
-
this.setFallbackChannelImage();
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
this.subscriptions.push(this.chatClientService.user$.subscribe((u) => {
|
|
40
|
-
if (u?.id !== this.userId) {
|
|
41
|
-
this.userId = u?.id;
|
|
42
|
-
if (this.type || this.channel || this.name) {
|
|
43
|
-
this.setInitials();
|
|
44
|
-
this.setFallbackChannelImage();
|
|
45
|
-
this.updateIsOnlineSubscription();
|
|
46
|
-
}
|
|
47
|
-
if (this.isViewInited) {
|
|
48
|
-
this.cdRef.detectChanges();
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}));
|
|
52
|
-
}
|
|
53
|
-
ngAfterViewInit() {
|
|
54
|
-
this.isViewInited = true;
|
|
55
|
-
}
|
|
56
|
-
ngOnDestroy() {
|
|
57
|
-
this.subscriptions.forEach((s) => s.unsubscribe());
|
|
58
|
-
}
|
|
59
|
-
setFallbackChannelImage() {
|
|
60
|
-
if (this.type !== 'channel') {
|
|
61
|
-
this.fallbackChannelImage = undefined;
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
const otherMember = this.getOtherMemberIfOneToOneChannel();
|
|
65
|
-
if (otherMember) {
|
|
66
|
-
this.fallbackChannelImage = otherMember.image;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
this.fallbackChannelImage = undefined;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
setInitials() {
|
|
74
|
-
let result = '';
|
|
75
|
-
if (this.type === 'user') {
|
|
76
|
-
result = this.name?.toString() || '';
|
|
77
|
-
}
|
|
78
|
-
else if (this.type === 'channel') {
|
|
79
|
-
if (this.channel?.data?.name) {
|
|
80
|
-
result = this.channel?.data?.name;
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
const otherMember = this.getOtherMemberIfOneToOneChannel();
|
|
84
|
-
if (otherMember) {
|
|
85
|
-
result = otherMember.name || otherMember.id || '';
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
result = '#';
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
const words = result.split(' ');
|
|
93
|
-
let initials;
|
|
94
|
-
if (this.initialsType === 'first-letter-of-each-word') {
|
|
95
|
-
initials = words.map((w) => w.charAt(0) || '').join('');
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
initials = words[0].charAt(0) || '';
|
|
99
|
-
}
|
|
100
|
-
this.initials = initials;
|
|
101
|
-
}
|
|
102
|
-
updateIsOnlineSubscription() {
|
|
103
|
-
if (this.channel) {
|
|
104
|
-
const otherMember = this.getOtherMemberIfOneToOneChannel();
|
|
105
|
-
if (otherMember) {
|
|
106
|
-
this.isOnline = otherMember.online || false;
|
|
107
|
-
this.isOnlineSubscription = this.chatClientService.events$
|
|
108
|
-
.pipe(filter((e) => e.eventType === 'user.presence.changed'))
|
|
109
|
-
.subscribe((event) => {
|
|
110
|
-
if (event.event.user?.id === otherMember.id) {
|
|
111
|
-
this.isOnline = event.event.user?.online || false;
|
|
112
|
-
}
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
this.isOnline = false;
|
|
117
|
-
this.isOnlineSubscription?.unsubscribe();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
this.isOnline = false;
|
|
122
|
-
this.isOnlineSubscription?.unsubscribe();
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
getOtherMemberIfOneToOneChannel() {
|
|
126
|
-
const otherMembers = Object.values(this.channel?.state?.members || {}).filter((m) => m.user_id !== this.userId);
|
|
127
|
-
if (otherMembers.length === 1) {
|
|
128
|
-
return otherMembers[0].user;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
return undefined;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: AvatarComponent, deps: [{ token: i1.ChatClientService }, { token: i0.NgZone }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
135
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: AvatarComponent, selector: "stream-avatar", inputs: { name: "name", imageUrl: "imageUrl", location: "location", channel: "channel", user: "user", type: "type", showOnlineIndicator: "showOnlineIndicator", initialsType: "initialsType" }, usesOnChanges: true, ngImport: i0, template: "<div\n class=\"str-chat__avatar str-chat-angular__avatar str-chat__avatar--circle stream-chat__avatar--{{\n location\n }} stream-chat__avatar--{{\n initialsType === 'first-letter-of-first-word'\n ? 'one-letter'\n : 'multiple-letters'\n }}\"\n title=\"{{ name }}\"\n>\n @if ((imageUrl || fallbackChannelImage) && !isError) {\n <img\n class=\"str-chat__avatar-image\"\n data-testid=\"avatar-img\"\n fetchpriority=\"high\"\n src=\"{{ imageUrl || fallbackChannelImage }}\"\n alt=\"{{ initials }}\"\n (error)=\"isError = true\"\n />\n } @else {\n <div data-testid=\"fallback-img\" class=\"str-chat__avatar-fallback\">\n {{ initials }}\n </div>\n }\n @if (isOnline && showOnlineIndicator) {\n <div\n data-testid=\"online-indicator\"\n class=\"str-chat__avatar--online-indicator\"\n ></div>\n }\n</div>\n", styles: [""] }); }
|
|
136
|
-
}
|
|
137
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: AvatarComponent, decorators: [{
|
|
138
|
-
type: Component,
|
|
139
|
-
args: [{ selector: 'stream-avatar', template: "<div\n class=\"str-chat__avatar str-chat-angular__avatar str-chat__avatar--circle stream-chat__avatar--{{\n location\n }} stream-chat__avatar--{{\n initialsType === 'first-letter-of-first-word'\n ? 'one-letter'\n : 'multiple-letters'\n }}\"\n title=\"{{ name }}\"\n>\n @if ((imageUrl || fallbackChannelImage) && !isError) {\n <img\n class=\"str-chat__avatar-image\"\n data-testid=\"avatar-img\"\n fetchpriority=\"high\"\n src=\"{{ imageUrl || fallbackChannelImage }}\"\n alt=\"{{ initials }}\"\n (error)=\"isError = true\"\n />\n } @else {\n <div data-testid=\"fallback-img\" class=\"str-chat__avatar-fallback\">\n {{ initials }}\n </div>\n }\n @if (isOnline && showOnlineIndicator) {\n <div\n data-testid=\"online-indicator\"\n class=\"str-chat__avatar--online-indicator\"\n ></div>\n }\n</div>\n" }]
|
|
140
|
-
}], ctorParameters: () => [{ type: i1.ChatClientService }, { type: i0.NgZone }, { type: i0.ChangeDetectorRef }], propDecorators: { name: [{
|
|
141
|
-
type: Input
|
|
142
|
-
}], imageUrl: [{
|
|
143
|
-
type: Input
|
|
144
|
-
}], location: [{
|
|
145
|
-
type: Input
|
|
146
|
-
}], channel: [{
|
|
147
|
-
type: Input
|
|
148
|
-
}], user: [{
|
|
149
|
-
type: Input
|
|
150
|
-
}], type: [{
|
|
151
|
-
type: Input
|
|
152
|
-
}], showOnlineIndicator: [{
|
|
153
|
-
type: Input
|
|
154
|
-
}], initialsType: [{
|
|
155
|
-
type: Input
|
|
156
|
-
}] } });
|
|
157
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXIvYXZhdGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFHTCxTQUFTLEVBQ1QsS0FBSyxHQU1OLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7O0FBU3hDOztHQUVHO0FBTUgsTUFBTSxPQUFPLGVBQWU7SUE4QzFCLFlBQ1UsaUJBQW9DLEVBQ3BDLE1BQWMsRUFDZCxLQUF3QjtRQUZ4QixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBQ3BDLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZCxVQUFLLEdBQUwsS0FBSyxDQUFtQjtRQXRCbEM7O1dBRUc7UUFDTSx3QkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDcEM7O1dBRUc7UUFDTSxpQkFBWSxHQUVhLDRCQUE0QixDQUFDO1FBQy9ELFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVqQixhQUFRLEdBQVcsRUFBRSxDQUFDO1FBR2QsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDckIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO0lBTXhDLENBQUM7SUFFSixXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7U0FDbkM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25ELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjtRQUVELElBQUksT0FBTyxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25DLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO1NBQ2hDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDekIsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUNwQixJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO29CQUMxQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ25CLElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFDO29CQUMvQixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztpQkFDbkM7Z0JBQ0QsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO29CQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO2lCQUM1QjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQzNCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUM7U0FDdkM7YUFBTTtZQUNMLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQzNELElBQUksV0FBVyxFQUFFO2dCQUNmLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO2FBQy9DO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxTQUFTLENBQUM7YUFDdkM7U0FDRjtJQUNILENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksTUFBTSxHQUFXLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssTUFBTSxFQUFFO1lBQ3hCLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQztTQUN0QzthQUFNLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDbEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7Z0JBQzVCLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUM7YUFDbkM7aUJBQU07Z0JBQ0wsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUM7Z0JBQzNELElBQUksV0FBVyxFQUFFO29CQUNmLE1BQU0sR0FBRyxXQUFXLENBQUMsSUFBSSxJQUFJLFdBQVcsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO2lCQUNuRDtxQkFBTTtvQkFDTCxNQUFNLEdBQUcsR0FBRyxDQUFDO2lCQUNkO2FBQ0Y7U0FDRjtRQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDaEMsSUFBSSxRQUFnQixDQUFDO1FBQ3JCLElBQUksSUFBSSxDQUFDLFlBQVksS0FBSywyQkFBMkIsRUFBRTtZQUNyRCxRQUFRLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDekQ7YUFBTTtZQUNMLFFBQVEsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUNyQztRQUNELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzNCLENBQUM7SUFFTywwQkFBMEI7UUFDaEMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDO1lBQzNELElBQUksV0FBVyxFQUFFO2dCQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUM7Z0JBQzVDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTztxQkFDdkQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsS0FBSyx1QkFBdUIsQ0FBQyxDQUFDO3FCQUM1RCxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDbkIsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssV0FBVyxDQUFDLEVBQUUsRUFBRTt3QkFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksS0FBSyxDQUFDO3FCQUNuRDtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNOO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUN0QixJQUFJLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLENBQUM7YUFDMUM7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDdEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxDQUFDO1NBQzFDO0lBQ0gsQ0FBQztJQUVPLCtCQUErQjtRQUNyQyxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUNoQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLElBQUksRUFBRSxDQUNuQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0MsSUFBSSxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtZQUM3QixPQUFPLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDN0I7YUFBTTtZQUNMLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQzs4R0FsS1UsZUFBZTtrR0FBZixlQUFlLDBRQzdCNUIsdTNCQStCQTs7MkZERmEsZUFBZTtrQkFMM0IsU0FBUzsrQkFDRSxlQUFlOzJJQVVoQixJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsUUFBUTtzQkFBaEIsS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsSUFBSTtzQkFBWixLQUFLO2dCQUlHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgU2ltcGxlQ2hhbmdlcyxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYW5uZWwsIFVzZXIgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4uL2NoYXQtY2xpZW50LnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgQXZhdGFyTG9jYXRpb24sXG4gIEF2YXRhclR5cGUsXG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG59IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgYEF2YXRhcmAgY29tcG9uZW50IGRpc3BsYXlzIHRoZSBwcm92aWRlZCBpbWFnZSwgd2l0aCBmYWxsYmFjayB0byB0aGUgZmlyc3QgbGV0dGVyIG9mIHRoZSBvcHRpb25hbCBuYW1lIGlucHV0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tYXZhdGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2F2YXRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hdmF0YXIuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBBdmF0YXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBBbiBvcHRpb25hbCBuYW1lIG9mIHRoZSBpbWFnZSwgdXNlZCBmb3IgZmFsbGJhY2sgaW1hZ2Ugb3IgaW1hZ2UgdGl0bGUgKGlmIGBpbWFnZVVybGAgaXMgcHJvdmlkZWQpXG4gICAqL1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgVVJMIG9mIHRoZSBpbWFnZSB0byBiZSBkaXNwbGF5ZWQuIElmIHRoZSBpbWFnZSBjYW4ndCBiZSBkaXNwbGF5ZWQgdGhlIGZpcnN0IGxldHRlciBvZiB0aGUgbmFtZSBpbnB1dCBpcyBkaXNwbGF5ZWQuXG4gICAqL1xuICBASW5wdXQoKSBpbWFnZVVybDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIGxvY2F0aW9uIHRoZSBhdmF0YXIgd2lsbCBiZSBkaXNwbGF5ZWQgaW5cbiAgICovXG4gIEBJbnB1dCgpIGxvY2F0aW9uOiBBdmF0YXJMb2NhdGlvbiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBjaGFubmVsIHRoZSBhdmF0YXIgYmVsb25ncyB0byAoaWYgYXZhdGFyIG9mIGEgY2hhbm5lbCBpcyBkaXNwbGF5ZWQpXG4gICAqL1xuICBASW5wdXQoKSBjaGFubmVsPzogQ2hhbm5lbDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgLyoqXG4gICAqIFRoZSB1c2VyIHRoZSBhdmF0YXIgYmVsb25ncyB0byAoaWYgYXZhdGFyIG9mIGEgdXNlciBpcyBkaXNwbGF5ZWQpXG4gICAqL1xuICBASW5wdXQoKSB1c2VyPzogVXNlcjxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPjtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBhdmF0YXI6IGNoYW5uZWwgaWYgY2hhbm5lbCBhdmF0YXIgaXMgZGlzcGxheWVkLCB1c2VyIGlmIHVzZXIgYXZhdGFyIGlzIGRpc3BsYXllZFxuICAgKi9cbiAgQElucHV0KCkgdHlwZTogQXZhdGFyVHlwZSB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIElmIGEgY2hhbm5lbCBhdmF0YXIgaXMgZGlzcGxheWVkLCBhbmQgaWYgdGhlIGNoYW5uZWwgaGFzIGV4YWN0bHkgdHdvIG1lbWJlcnMgYSBncmVlbiBkb3QgaXMgZGlzcGxheWVkIGlmIHRoZSBvdGhlciBtZW1iZXIgaXMgb25saW5lLiBTZXQgdGhpcyBmbGFnIHRvIGBmYWxzZWAgdG8gdHVybiBvZmYgdGhpcyBiZWhhdmlvci5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dPbmxpbmVJbmRpY2F0b3IgPSB0cnVlO1xuICAvKipcbiAgICogSWYgY2hhbm5lbC91c2VyIGltYWdlIGlzbid0IHByb3ZpZGVkIHRoZSBpbml0aWFscyBvZiB0aGUgbmFtZSBvZiB0aGUgY2hhbm5lbC91c2VyIGlzIHNob3duIGluc3RlYWQsIHlvdSBjYW4gY2hvb3NlIGhvdyB0aGUgaW5pdGFscyBzaG91bGQgYmUgY29tcHV0ZWRcbiAgICovXG4gIEBJbnB1dCgpIGluaXRpYWxzVHlwZTpcbiAgICB8ICdmaXJzdC1sZXR0ZXItb2YtZmlyc3Qtd29yZCdcbiAgICB8ICdmaXJzdC1sZXR0ZXItb2YtZWFjaC13b3JkJyA9ICdmaXJzdC1sZXR0ZXItb2YtZmlyc3Qtd29yZCc7XG4gIGlzRXJyb3IgPSBmYWxzZTtcbiAgaXNPbmxpbmUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBpc09ubGluZVN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcbiAgaW5pdGlhbHM6IHN0cmluZyA9ICcnO1xuICBmYWxsYmFja0NoYW5uZWxJbWFnZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBwcml2YXRlIHVzZXJJZD86IHN0cmluZztcbiAgcHJpdmF0ZSBpc1ZpZXdJbml0ZWQgPSBmYWxzZTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhdENsaWVudFNlcnZpY2U6IENoYXRDbGllbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgaWYgKGNoYW5nZXNbJ2NoYW5uZWwnXSkge1xuICAgICAgdGhpcy51cGRhdGVJc09ubGluZVN1YnNjcmlwdGlvbigpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlcy50eXBlIHx8IGNoYW5nZXMubmFtZSB8fCBjaGFuZ2VzLmNoYW5uZWwpIHtcbiAgICAgIHRoaXMuc2V0SW5pdGlhbHMoKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy50eXBlIHx8IGNoYW5nZXMuY2hhbm5lbCkge1xuICAgICAgdGhpcy5zZXRGYWxsYmFja0NoYW5uZWxJbWFnZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5jaGF0Q2xpZW50U2VydmljZS51c2VyJC5zdWJzY3JpYmUoKHUpID0+IHtcbiAgICAgICAgaWYgKHU/LmlkICE9PSB0aGlzLnVzZXJJZCkge1xuICAgICAgICAgIHRoaXMudXNlcklkID0gdT8uaWQ7XG4gICAgICAgICAgaWYgKHRoaXMudHlwZSB8fCB0aGlzLmNoYW5uZWwgfHwgdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLnNldEluaXRpYWxzKCk7XG4gICAgICAgICAgICB0aGlzLnNldEZhbGxiYWNrQ2hhbm5lbEltYWdlKCk7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUlzT25saW5lU3Vic2NyaXB0aW9uKCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaWV3SW5pdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRGYWxsYmFja0NoYW5uZWxJbWFnZSgpIHtcbiAgICBpZiAodGhpcy50eXBlICE9PSAnY2hhbm5lbCcpIHtcbiAgICAgIHRoaXMuZmFsbGJhY2tDaGFubmVsSW1hZ2UgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG90aGVyTWVtYmVyID0gdGhpcy5nZXRPdGhlck1lbWJlcklmT25lVG9PbmVDaGFubmVsKCk7XG4gICAgICBpZiAob3RoZXJNZW1iZXIpIHtcbiAgICAgICAgdGhpcy5mYWxsYmFja0NoYW5uZWxJbWFnZSA9IG90aGVyTWVtYmVyLmltYWdlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mYWxsYmFja0NoYW5uZWxJbWFnZSA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldEluaXRpYWxzKCkge1xuICAgIGxldCByZXN1bHQ6IHN0cmluZyA9ICcnO1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICd1c2VyJykge1xuICAgICAgcmVzdWx0ID0gdGhpcy5uYW1lPy50b1N0cmluZygpIHx8ICcnO1xuICAgIH0gZWxzZSBpZiAodGhpcy50eXBlID09PSAnY2hhbm5lbCcpIHtcbiAgICAgIGlmICh0aGlzLmNoYW5uZWw/LmRhdGE/Lm5hbWUpIHtcbiAgICAgICAgcmVzdWx0ID0gdGhpcy5jaGFubmVsPy5kYXRhPy5uYW1lO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgb3RoZXJNZW1iZXIgPSB0aGlzLmdldE90aGVyTWVtYmVySWZPbmVUb09uZUNoYW5uZWwoKTtcbiAgICAgICAgaWYgKG90aGVyTWVtYmVyKSB7XG4gICAgICAgICAgcmVzdWx0ID0gb3RoZXJNZW1iZXIubmFtZSB8fCBvdGhlck1lbWJlci5pZCB8fCAnJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXN1bHQgPSAnIyc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB3b3JkcyA9IHJlc3VsdC5zcGxpdCgnICcpO1xuICAgIGxldCBpbml0aWFsczogc3RyaW5nO1xuICAgIGlmICh0aGlzLmluaXRpYWxzVHlwZSA9PT0gJ2ZpcnN0LWxldHRlci1vZi1lYWNoLXdvcmQnKSB7XG4gICAgICBpbml0aWFscyA9IHdvcmRzLm1hcCgodykgPT4gdy5jaGFyQXQoMCkgfHwgJycpLmpvaW4oJycpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpbml0aWFscyA9IHdvcmRzWzBdLmNoYXJBdCgwKSB8fCAnJztcbiAgICB9XG4gICAgdGhpcy5pbml0aWFscyA9IGluaXRpYWxzO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJc09ubGluZVN1YnNjcmlwdGlvbigpIHtcbiAgICBpZiAodGhpcy5jaGFubmVsKSB7XG4gICAgICBjb25zdCBvdGhlck1lbWJlciA9IHRoaXMuZ2V0T3RoZXJNZW1iZXJJZk9uZVRvT25lQ2hhbm5lbCgpO1xuICAgICAgaWYgKG90aGVyTWVtYmVyKSB7XG4gICAgICAgIHRoaXMuaXNPbmxpbmUgPSBvdGhlck1lbWJlci5vbmxpbmUgfHwgZmFsc2U7XG4gICAgICAgIHRoaXMuaXNPbmxpbmVTdWJzY3JpcHRpb24gPSB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmV2ZW50cyRcbiAgICAgICAgICAucGlwZShmaWx0ZXIoKGUpID0+IGUuZXZlbnRUeXBlID09PSAndXNlci5wcmVzZW5jZS5jaGFuZ2VkJykpXG4gICAgICAgICAgLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcbiAgICAgICAgICAgIGlmIChldmVudC5ldmVudC51c2VyPy5pZCA9PT0gb3RoZXJNZW1iZXIuaWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5pc09ubGluZSA9IGV2ZW50LmV2ZW50LnVzZXI/Lm9ubGluZSB8fCBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaXNPbmxpbmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pc09ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc09ubGluZSA9IGZhbHNlO1xuICAgICAgdGhpcy5pc09ubGluZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE90aGVyTWVtYmVySWZPbmVUb09uZUNoYW5uZWwoKSB7XG4gICAgY29uc3Qgb3RoZXJNZW1iZXJzID0gT2JqZWN0LnZhbHVlcyhcbiAgICAgIHRoaXMuY2hhbm5lbD8uc3RhdGU/Lm1lbWJlcnMgfHwge30sXG4gICAgKS5maWx0ZXIoKG0pID0+IG0udXNlcl9pZCAhPT0gdGhpcy51c2VySWQpO1xuICAgIGlmIChvdGhlck1lbWJlcnMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gb3RoZXJNZW1iZXJzWzBdLnVzZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2XG4gIGNsYXNzPVwic3RyLWNoYXRfX2F2YXRhciBzdHItY2hhdC1hbmd1bGFyX19hdmF0YXIgc3RyLWNoYXRfX2F2YXRhci0tY2lyY2xlIHN0cmVhbS1jaGF0X19hdmF0YXItLXt7XG4gICAgbG9jYXRpb25cbiAgfX0gc3RyZWFtLWNoYXRfX2F2YXRhci0te3tcbiAgICBpbml0aWFsc1R5cGUgPT09ICdmaXJzdC1sZXR0ZXItb2YtZmlyc3Qtd29yZCdcbiAgICAgID8gJ29uZS1sZXR0ZXInXG4gICAgICA6ICdtdWx0aXBsZS1sZXR0ZXJzJ1xuICB9fVwiXG4gIHRpdGxlPVwie3sgbmFtZSB9fVwiXG4+XG4gIEBpZiAoKGltYWdlVXJsIHx8IGZhbGxiYWNrQ2hhbm5lbEltYWdlKSAmJiAhaXNFcnJvcikge1xuICAgIDxpbWdcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2F2YXRhci1pbWFnZVwiXG4gICAgICBkYXRhLXRlc3RpZD1cImF2YXRhci1pbWdcIlxuICAgICAgZmV0Y2hwcmlvcml0eT1cImhpZ2hcIlxuICAgICAgc3JjPVwie3sgaW1hZ2VVcmwgfHwgZmFsbGJhY2tDaGFubmVsSW1hZ2UgfX1cIlxuICAgICAgYWx0PVwie3sgaW5pdGlhbHMgfX1cIlxuICAgICAgKGVycm9yKT1cImlzRXJyb3IgPSB0cnVlXCJcbiAgICAvPlxuICB9IEBlbHNlIHtcbiAgICA8ZGl2IGRhdGEtdGVzdGlkPVwiZmFsbGJhY2staW1nXCIgY2xhc3M9XCJzdHItY2hhdF9fYXZhdGFyLWZhbGxiYWNrXCI+XG4gICAgICB7eyBpbml0aWFscyB9fVxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoaXNPbmxpbmUgJiYgc2hvd09ubGluZUluZGljYXRvcikge1xuICAgIDxkaXZcbiAgICAgIGRhdGEtdGVzdGlkPVwib25saW5lLWluZGljYXRvclwiXG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19hdmF0YXItLW9ubGluZS1pbmRpY2F0b3JcIlxuICAgID48L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
import * as i1 from "../custom-templates.service";
|
|
4
|
-
import * as i2 from "@angular/common";
|
|
5
|
-
import * as i3 from "../avatar/avatar.component";
|
|
6
|
-
/**
|
|
7
|
-
* The `AvatarPlaceholder` component displays the [default avatar](/chat/docs/sdk/angular/components/AvatarComponent/) unless a [custom template](/chat/docs/sdk/angular/services/CustomTemplatesService/) is provided. This component is used by the SDK internally, you likely won't need to use it.
|
|
8
|
-
*/
|
|
9
|
-
export class AvatarPlaceholderComponent {
|
|
10
|
-
constructor(customTemplatesService) {
|
|
11
|
-
this.customTemplatesService = customTemplatesService;
|
|
12
|
-
/**
|
|
13
|
-
* If channel/user image isn't provided the initials of the name of the channel/user is shown instead, you can choose how the initals should be computed
|
|
14
|
-
*/
|
|
15
|
-
this.initialsType = 'first-letter-of-first-word';
|
|
16
|
-
/**
|
|
17
|
-
* If a channel avatar is displayed, and if the channel has exactly two members a green dot is displayed if the other member is online. Set this flag to `false` to turn off this behavior.
|
|
18
|
-
*/
|
|
19
|
-
this.showOnlineIndicator = true;
|
|
20
|
-
this.context = {
|
|
21
|
-
name: undefined,
|
|
22
|
-
imageUrl: undefined,
|
|
23
|
-
location: undefined,
|
|
24
|
-
channel: undefined,
|
|
25
|
-
user: undefined,
|
|
26
|
-
type: undefined,
|
|
27
|
-
initialsType: undefined,
|
|
28
|
-
showOnlineIndicator: undefined,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
ngOnChanges() {
|
|
32
|
-
this.context = {
|
|
33
|
-
name: this.name,
|
|
34
|
-
imageUrl: this.imageUrl,
|
|
35
|
-
location: this.location,
|
|
36
|
-
type: this.type,
|
|
37
|
-
user: this.user,
|
|
38
|
-
channel: this.channel,
|
|
39
|
-
initialsType: this.initialsType,
|
|
40
|
-
showOnlineIndicator: this.showOnlineIndicator,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: AvatarPlaceholderComponent, deps: [{ token: i1.CustomTemplatesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0", type: AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: { name: "name", imageUrl: "imageUrl", location: "location", channel: "channel", user: "user", type: "type", initialsType: "initialsType", showOnlineIndicator: "showOnlineIndicator" }, usesOnChanges: true, ngImport: i0, template: "<ng-template\n #defaultAvatar\n let-name=\"name\"\n let-imageUrl=\"imageUrl\"\n let-type=\"type\"\n let-channel=\"channel\"\n let-user=\"user\"\n let-location=\"location\"\n let-initialsType=\"initialsType\"\n let-showOnlineIndicator=\"showOnlineIndicator\"\n>\n <stream-avatar\n [name]=\"name\"\n [imageUrl]=\"imageUrl\"\n [type]=\"type\"\n [channel]=\"channel\"\n [user]=\"user\"\n [location]=\"location\"\n [initialsType]=\"initialsType\"\n [showOnlineIndicator]=\"showOnlineIndicator\"\n />\n</ng-template>\n<ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.avatarTemplate$ | async) || defaultAvatar;\n context: context\n \"\n/>\n", dependencies: [{ kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i3.AvatarComponent, selector: "stream-avatar", inputs: ["name", "imageUrl", "location", "channel", "user", "type", "showOnlineIndicator", "initialsType"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }] }); }
|
|
45
|
-
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: AvatarPlaceholderComponent, decorators: [{
|
|
47
|
-
type: Component,
|
|
48
|
-
args: [{ selector: 'stream-avatar-placeholder', template: "<ng-template\n #defaultAvatar\n let-name=\"name\"\n let-imageUrl=\"imageUrl\"\n let-type=\"type\"\n let-channel=\"channel\"\n let-user=\"user\"\n let-location=\"location\"\n let-initialsType=\"initialsType\"\n let-showOnlineIndicator=\"showOnlineIndicator\"\n>\n <stream-avatar\n [name]=\"name\"\n [imageUrl]=\"imageUrl\"\n [type]=\"type\"\n [channel]=\"channel\"\n [user]=\"user\"\n [location]=\"location\"\n [initialsType]=\"initialsType\"\n [showOnlineIndicator]=\"showOnlineIndicator\"\n />\n</ng-template>\n<ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.avatarTemplate$ | async) || defaultAvatar;\n context: context\n \"\n/>\n" }]
|
|
49
|
-
}], ctorParameters: () => [{ type: i1.CustomTemplatesService }], propDecorators: { name: [{
|
|
50
|
-
type: Input
|
|
51
|
-
}], imageUrl: [{
|
|
52
|
-
type: Input
|
|
53
|
-
}], location: [{
|
|
54
|
-
type: Input
|
|
55
|
-
}], channel: [{
|
|
56
|
-
type: Input
|
|
57
|
-
}], user: [{
|
|
58
|
-
type: Input
|
|
59
|
-
}], type: [{
|
|
60
|
-
type: Input
|
|
61
|
-
}], initialsType: [{
|
|
62
|
-
type: Input
|
|
63
|
-
}], showOnlineIndicator: [{
|
|
64
|
-
type: Input
|
|
65
|
-
}] } });
|
|
66
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXZhdGFyLXBsYWNlaG9sZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXItcGxhY2Vob2xkZXIvYXZhdGFyLXBsYWNlaG9sZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9hdmF0YXItcGxhY2Vob2xkZXIvYXZhdGFyLXBsYWNlaG9sZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFhLE1BQU0sZUFBZSxDQUFDOzs7OztBQVU1RDs7R0FFRztBQU1ILE1BQU0sT0FBTywwQkFBMEI7SUE2Q3JDLFlBQW1CLHNCQUE4QztRQUE5QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBcEJqRTs7V0FFRztRQUNNLGlCQUFZLEdBRWEsNEJBQTRCLENBQUM7UUFDL0Q7O1dBRUc7UUFDTSx3QkFBbUIsR0FBRyxJQUFJLENBQUM7UUFDcEMsWUFBTyxHQUFrQjtZQUN2QixJQUFJLEVBQUUsU0FBUztZQUNmLFFBQVEsRUFBRSxTQUFTO1lBQ25CLFFBQVEsRUFBRSxTQUFTO1lBQ25CLE9BQU8sRUFBRSxTQUFTO1lBQ2xCLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFNBQVM7WUFDZixZQUFZLEVBQUUsU0FBUztZQUN2QixtQkFBbUIsRUFBRSxTQUFTO1NBQy9CLENBQUM7SUFDa0UsQ0FBQztJQUVyRSxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sR0FBRztZQUNiLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNmLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPO1lBQ3JCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWTtZQUMvQixtQkFBbUIsRUFBRSxJQUFJLENBQUMsbUJBQW1CO1NBQzlDLENBQUM7SUFDSixDQUFDOzhHQTFEVSwwQkFBMEI7a0dBQTFCLDBCQUEwQixzUkNsQnZDLG9yQkE0QkE7OzJGRFZhLDBCQUEwQjtrQkFMdEMsU0FBUzsrQkFDRSwyQkFBMkI7MkZBUTVCLElBQUk7c0JBQVosS0FBSztnQkFJRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBSUcsT0FBTztzQkFBZixLQUFLO2dCQUlHLElBQUk7c0JBQVosS0FBSztnQkFJRyxJQUFJO3NCQUFaLEtBQUs7Z0JBSUcsWUFBWTtzQkFBcEIsS0FBSztnQkFNRyxtQkFBbUI7c0JBQTNCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYW5uZWwsIFVzZXIgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIEF2YXRhckNvbnRleHQsXG4gIEF2YXRhckxvY2F0aW9uLFxuICBBdmF0YXJUeXBlLFxuICBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogVGhlIGBBdmF0YXJQbGFjZWhvbGRlcmAgY29tcG9uZW50IGRpc3BsYXlzIHRoZSBbZGVmYXVsdCBhdmF0YXJdKC9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvY29tcG9uZW50cy9BdmF0YXJDb21wb25lbnQvKSB1bmxlc3MgYSBbY3VzdG9tIHRlbXBsYXRlXSgvY2hhdC9kb2NzL3Nkay9hbmd1bGFyL3NlcnZpY2VzL0N1c3RvbVRlbXBsYXRlc1NlcnZpY2UvKSBpcyBwcm92aWRlZC4gVGhpcyBjb21wb25lbnQgaXMgdXNlZCBieSB0aGUgU0RLIGludGVybmFsbHksIHlvdSBsaWtlbHkgd29uJ3QgbmVlZCB0byB1c2UgaXQuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vYXZhdGFyLXBsYWNlaG9sZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQXZhdGFyUGxhY2Vob2xkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwgbmFtZSBvZiB0aGUgaW1hZ2UsIHVzZWQgZm9yIGZhbGxiYWNrIGltYWdlIG9yIGltYWdlIHRpdGxlIChpZiBgaW1hZ2VVcmxgIGlzIHByb3ZpZGVkKVxuICAgKi9cbiAgQElucHV0KCkgbmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIFVSTCBvZiB0aGUgaW1hZ2UgdG8gYmUgZGlzcGxheWVkLiBJZiB0aGUgaW1hZ2UgY2FuJ3QgYmUgZGlzcGxheWVkIHRoZSBmaXJzdCBsZXR0ZXIgb2YgdGhlIG5hbWUgaW5wdXQgaXMgZGlzcGxheWVkLlxuICAgKi9cbiAgQElucHV0KCkgaW1hZ2VVcmw6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIFRoZSBsb2NhdGlvbiB0aGUgYXZhdGFyIHdpbGwgYmUgZGlzcGxheWVkIGluXG4gICAqL1xuICBASW5wdXQoKSBsb2NhdGlvbjogQXZhdGFyTG9jYXRpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgY2hhbm5lbCB0aGUgYXZhdGFyIGJlbG9uZ3MgdG8gKGlmIGF2YXRhciBvZiBhIGNoYW5uZWwgaXMgZGlzcGxheWVkKVxuICAgKi9cbiAgQElucHV0KCkgY2hhbm5lbD86IENoYW5uZWw8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIC8qKlxuICAgKiBUaGUgdXNlciB0aGUgYXZhdGFyIGJlbG9uZ3MgdG8gKGlmIGF2YXRhciBvZiBhIHVzZXIgaXMgZGlzcGxheWVkKVxuICAgKi9cbiAgQElucHV0KCkgdXNlcj86IFVzZXI8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz47XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiB0aGUgYXZhdGFyOiBjaGFubmVsIGlmIGNoYW5uZWwgYXZhdGFyIGlzIGRpc3BsYXllZCwgdXNlciBpZiB1c2VyIGF2YXRhciBpcyBkaXNwbGF5ZWRcbiAgICovXG4gIEBJbnB1dCgpIHR5cGU6IEF2YXRhclR5cGUgfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBJZiBjaGFubmVsL3VzZXIgaW1hZ2UgaXNuJ3QgcHJvdmlkZWQgdGhlIGluaXRpYWxzIG9mIHRoZSBuYW1lIG9mIHRoZSBjaGFubmVsL3VzZXIgaXMgc2hvd24gaW5zdGVhZCwgeW91IGNhbiBjaG9vc2UgaG93IHRoZSBpbml0YWxzIHNob3VsZCBiZSBjb21wdXRlZFxuICAgKi9cbiAgQElucHV0KCkgaW5pdGlhbHNUeXBlOlxuICAgIHwgJ2ZpcnN0LWxldHRlci1vZi1maXJzdC13b3JkJ1xuICAgIHwgJ2ZpcnN0LWxldHRlci1vZi1lYWNoLXdvcmQnID0gJ2ZpcnN0LWxldHRlci1vZi1maXJzdC13b3JkJztcbiAgLyoqXG4gICAqIElmIGEgY2hhbm5lbCBhdmF0YXIgaXMgZGlzcGxheWVkLCBhbmQgaWYgdGhlIGNoYW5uZWwgaGFzIGV4YWN0bHkgdHdvIG1lbWJlcnMgYSBncmVlbiBkb3QgaXMgZGlzcGxheWVkIGlmIHRoZSBvdGhlciBtZW1iZXIgaXMgb25saW5lLiBTZXQgdGhpcyBmbGFnIHRvIGBmYWxzZWAgdG8gdHVybiBvZmYgdGhpcyBiZWhhdmlvci5cbiAgICovXG4gIEBJbnB1dCgpIHNob3dPbmxpbmVJbmRpY2F0b3IgPSB0cnVlO1xuICBjb250ZXh0OiBBdmF0YXJDb250ZXh0ID0ge1xuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICBpbWFnZVVybDogdW5kZWZpbmVkLFxuICAgIGxvY2F0aW9uOiB1bmRlZmluZWQsXG4gICAgY2hhbm5lbDogdW5kZWZpbmVkLFxuICAgIHVzZXI6IHVuZGVmaW5lZCxcbiAgICB0eXBlOiB1bmRlZmluZWQsXG4gICAgaW5pdGlhbHNUeXBlOiB1bmRlZmluZWQsXG4gICAgc2hvd09ubGluZUluZGljYXRvcjogdW5kZWZpbmVkLFxuICB9O1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgY3VzdG9tVGVtcGxhdGVzU2VydmljZTogQ3VzdG9tVGVtcGxhdGVzU2VydmljZSkge31cblxuICBuZ09uQ2hhbmdlcygpOiB2b2lkIHtcbiAgICB0aGlzLmNvbnRleHQgPSB7XG4gICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICBpbWFnZVVybDogdGhpcy5pbWFnZVVybCxcbiAgICAgIGxvY2F0aW9uOiB0aGlzLmxvY2F0aW9uLFxuICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgdXNlcjogdGhpcy51c2VyLFxuICAgICAgY2hhbm5lbDogdGhpcy5jaGFubmVsLFxuICAgICAgaW5pdGlhbHNUeXBlOiB0aGlzLmluaXRpYWxzVHlwZSxcbiAgICAgIHNob3dPbmxpbmVJbmRpY2F0b3I6IHRoaXMuc2hvd09ubGluZUluZGljYXRvcixcbiAgICB9O1xuICB9XG59XG4iLCI8bmctdGVtcGxhdGVcbiAgI2RlZmF1bHRBdmF0YXJcbiAgbGV0LW5hbWU9XCJuYW1lXCJcbiAgbGV0LWltYWdlVXJsPVwiaW1hZ2VVcmxcIlxuICBsZXQtdHlwZT1cInR5cGVcIlxuICBsZXQtY2hhbm5lbD1cImNoYW5uZWxcIlxuICBsZXQtdXNlcj1cInVzZXJcIlxuICBsZXQtbG9jYXRpb249XCJsb2NhdGlvblwiXG4gIGxldC1pbml0aWFsc1R5cGU9XCJpbml0aWFsc1R5cGVcIlxuICBsZXQtc2hvd09ubGluZUluZGljYXRvcj1cInNob3dPbmxpbmVJbmRpY2F0b3JcIlxuPlxuICA8c3RyZWFtLWF2YXRhclxuICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgIFtpbWFnZVVybF09XCJpbWFnZVVybFwiXG4gICAgW3R5cGVdPVwidHlwZVwiXG4gICAgW2NoYW5uZWxdPVwiY2hhbm5lbFwiXG4gICAgW3VzZXJdPVwidXNlclwiXG4gICAgW2xvY2F0aW9uXT1cImxvY2F0aW9uXCJcbiAgICBbaW5pdGlhbHNUeXBlXT1cImluaXRpYWxzVHlwZVwiXG4gICAgW3Nob3dPbmxpbmVJbmRpY2F0b3JdPVwic2hvd09ubGluZUluZGljYXRvclwiXG4gIC8+XG48L25nLXRlbXBsYXRlPlxuPG5nLWNvbnRhaW5lclxuICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLmF2YXRhclRlbXBsYXRlJCB8IGFzeW5jKSB8fCBkZWZhdWx0QXZhdGFyO1xuICAgIGNvbnRleHQ6IGNvbnRleHRcbiAgXCJcbi8+XG4iXX0=
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { combineLatest } from 'rxjs';
|
|
3
|
-
import { map } from 'rxjs/operators';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "../channel.service";
|
|
6
|
-
import * as i2 from "../theme.service";
|
|
7
|
-
import * as i3 from "../custom-templates.service";
|
|
8
|
-
import * as i4 from "@angular/common";
|
|
9
|
-
import * as i5 from "../icon/icon.component";
|
|
10
|
-
import * as i6 from "../notification-list/notification-list.component";
|
|
11
|
-
import * as i7 from "../message-bounce-prompt/message-bounce-prompt.component";
|
|
12
|
-
import * as i8 from "@ngx-translate/core";
|
|
13
|
-
/**
|
|
14
|
-
* The `Channel` component is a container component that displays the [`ChannelHeader`](/chat/docs/sdk/angular/components/ChannelHeaderComponent/), [`MessageList`](/chat/docs/sdk/angular/components/MessageListComponent), [`NotificationList`](/chat/docs/sdk/angular/components/NotificationListComponent/) and [`MessageInput`](/chat/docs/sdk/angular/components/MessageInputComponent/) components. You can also provide the [`Thread`](/chat/docs/sdk/angular/components/ThreadComponent/) component to use message [threads](/chat/docs/javascript/threads/).
|
|
15
|
-
*/
|
|
16
|
-
export class ChannelComponent {
|
|
17
|
-
constructor(channelService, themeService, customTemplatesService) {
|
|
18
|
-
this.channelService = channelService;
|
|
19
|
-
this.themeService = themeService;
|
|
20
|
-
this.customTemplatesService = customTemplatesService;
|
|
21
|
-
this.subscriptions = [];
|
|
22
|
-
this.isError$ = combineLatest([
|
|
23
|
-
this.channelService.channelQueryState$,
|
|
24
|
-
this.channelService.activeChannel$,
|
|
25
|
-
]).pipe(map(([state, activeChannel]) => {
|
|
26
|
-
return !activeChannel && state?.state === 'error';
|
|
27
|
-
}));
|
|
28
|
-
this.isInitializing$ = combineLatest([
|
|
29
|
-
this.channelService.channelQueryState$,
|
|
30
|
-
this.channelService.activeChannel$,
|
|
31
|
-
]).pipe(map(([state, activeChannel]) => {
|
|
32
|
-
return !activeChannel && state?.state === 'in-progress';
|
|
33
|
-
}));
|
|
34
|
-
this.isActiveThread$ = this.channelService.activeParentMessageId$.pipe(map((id) => !!id));
|
|
35
|
-
this.theme$ = this.themeService.theme$;
|
|
36
|
-
this.isActiveChannel$ = this.channelService.activeChannel$.pipe(map((c) => !!c));
|
|
37
|
-
}
|
|
38
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: ChannelComponent, deps: [{ token: i1.ChannelService }, { token: i2.ThemeService }, { token: i3.CustomTemplatesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
39
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: ChannelComponent, selector: "stream-channel", ngImport: i0, template: "<div\n class=\"str-chat str-chat-channel messaging str-chat__channel str-chat__theme-{{\n theme$ | async\n }}\"\n>\n @if (\n (isError$ | async) === false &&\n (isInitializing$ | async) === false &&\n (isActiveChannel$ | async) === true\n ) {\n <div class=\"str-chat__container\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.messageBouncePromptTemplate$ | async) ||\n defaultMessageBouncePrompt\n \"\n />\n <ng-template #defaultMessageBouncePrompt>\n <stream-message-bounce-prompt />\n </ng-template>\n <div class=\"str-chat__main-panel\">\n <ng-content />\n </div>\n @if (isActiveThread$ | async) {\n <ng-content select='[name=\"thread\"]' />\n }\n </div>\n } @else {\n @if (\n (isInitializing$ | async) === false &&\n ((isError$ | async) === true || (isActiveChannel$ | async) === false)\n ) {\n <div class=\"str-chat__empty-channel\">\n <stream-icon icon=\"chat-bubble\" />\n <p class=\"str-chat__empty-channel-text\">\n {{ \"streamChat.No chats here yet\u2026\" | translate }}\n </p>\n <div class=\"str-chat__empty-channel-notifications\">\n <stream-notification-list />\n </div>\n </div>\n }\n @if (\n (isInitializing$ | async) === true &&\n (isError$ | async) === false &&\n (isActiveChannel$ | async) === false\n ) {\n <div class=\"str-chat__loading-channel\">\n <div class=\"str-chat__loading-channel-header\">\n <div class=\"str-chat__loading-channel-header-avatar\"></div>\n <div class=\"str-chat__loading-channel-header-end\">\n <div class=\"str-chat__loading-channel-header-name\"></div>\n <div class=\"str-chat__loading-channel-header-info\"></div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-list\">\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-input-row\">\n <div class=\"str-chat__loading-channel-message-input\"></div>\n <div class=\"str-chat__loading-channel-message-send\"></div>\n </div>\n </div>\n }\n }\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IconComponent, selector: "stream-icon", inputs: ["icon"] }, { kind: "component", type: i6.NotificationListComponent, selector: "stream-notification-list" }, { kind: "component", type: i7.MessageBouncePromptComponent, selector: "stream-message-bounce-prompt" }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
|
|
40
|
-
}
|
|
41
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: ChannelComponent, decorators: [{
|
|
42
|
-
type: Component,
|
|
43
|
-
args: [{ selector: 'stream-channel', template: "<div\n class=\"str-chat str-chat-channel messaging str-chat__channel str-chat__theme-{{\n theme$ | async\n }}\"\n>\n @if (\n (isError$ | async) === false &&\n (isInitializing$ | async) === false &&\n (isActiveChannel$ | async) === true\n ) {\n <div class=\"str-chat__container\">\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.messageBouncePromptTemplate$ | async) ||\n defaultMessageBouncePrompt\n \"\n />\n <ng-template #defaultMessageBouncePrompt>\n <stream-message-bounce-prompt />\n </ng-template>\n <div class=\"str-chat__main-panel\">\n <ng-content />\n </div>\n @if (isActiveThread$ | async) {\n <ng-content select='[name=\"thread\"]' />\n }\n </div>\n } @else {\n @if (\n (isInitializing$ | async) === false &&\n ((isError$ | async) === true || (isActiveChannel$ | async) === false)\n ) {\n <div class=\"str-chat__empty-channel\">\n <stream-icon icon=\"chat-bubble\" />\n <p class=\"str-chat__empty-channel-text\">\n {{ \"streamChat.No chats here yet\u2026\" | translate }}\n </p>\n <div class=\"str-chat__empty-channel-notifications\">\n <stream-notification-list />\n </div>\n </div>\n }\n @if (\n (isInitializing$ | async) === true &&\n (isError$ | async) === false &&\n (isActiveChannel$ | async) === false\n ) {\n <div class=\"str-chat__loading-channel\">\n <div class=\"str-chat__loading-channel-header\">\n <div class=\"str-chat__loading-channel-header-avatar\"></div>\n <div class=\"str-chat__loading-channel-header-end\">\n <div class=\"str-chat__loading-channel-header-name\"></div>\n <div class=\"str-chat__loading-channel-header-info\"></div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-list\">\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message\">\n <div class=\"str-chat__loading-channel-message-avatar\"></div>\n <div class=\"str-chat__loading-channel-message-end\">\n <div class=\"str-chat__loading-channel-message-sender\"></div>\n <div class=\"str-chat__loading-channel-message-last-row\">\n <div class=\"str-chat__loading-channel-message-text\"></div>\n <div class=\"str-chat__loading-channel-message-date\"></div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"str-chat__loading-channel-message-input-row\">\n <div class=\"str-chat__loading-channel-message-input\"></div>\n <div class=\"str-chat__loading-channel-message-send\"></div>\n </div>\n </div>\n }\n }\n</div>\n" }]
|
|
44
|
-
}], ctorParameters: () => [{ type: i1.ChannelService }, { type: i2.ThemeService }, { type: i3.CustomTemplatesService }] });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvY2hhbm5lbC9jaGFubmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsL2NoYW5uZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxQyxPQUFPLEVBQUUsYUFBYSxFQUE0QixNQUFNLE1BQU0sQ0FBQztBQUMvRCxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFLckM7O0dBRUc7QUFNSCxNQUFNLE9BQU8sZ0JBQWdCO0lBUTNCLFlBQ1UsY0FBOEIsRUFDOUIsWUFBMEIsRUFDekIsc0JBQThDO1FBRi9DLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QixpQkFBWSxHQUFaLFlBQVksQ0FBYztRQUN6QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBTnpELGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQVFqQyxJQUFJLENBQUMsUUFBUSxHQUFHLGFBQWEsQ0FBQztZQUM1QixJQUFJLENBQUMsY0FBYyxDQUFDLGtCQUFrQjtZQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWM7U0FDbkMsQ0FBQyxDQUFDLElBQUksQ0FDTCxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxhQUFhLENBQUMsRUFBRSxFQUFFO1lBQzdCLE9BQU8sQ0FBQyxhQUFhLElBQUksS0FBSyxFQUFFLEtBQUssS0FBSyxPQUFPLENBQUM7UUFDcEQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLElBQUksQ0FBQyxlQUFlLEdBQUcsYUFBYSxDQUFDO1lBQ25DLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYztTQUNuQyxDQUFDLENBQUMsSUFBSSxDQUNMLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLEVBQUU7WUFDN0IsT0FBTyxDQUFDLGFBQWEsSUFBSSxLQUFLLEVBQUUsS0FBSyxLQUFLLGFBQWEsQ0FBQztRQUMxRCxDQUFDLENBQUMsQ0FDSCxDQUFDO1FBQ0YsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FDcEUsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ2xCLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQzdELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNoQixDQUFDO0lBQ0osQ0FBQzs4R0FwQ1UsZ0JBQWdCO2tHQUFoQixnQkFBZ0Isc0RDZjdCLDgySEErRkE7OzJGRGhGYSxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ3VzdG9tVGVtcGxhdGVzU2VydmljZSB9IGZyb20gJy4uL2N1c3RvbS10ZW1wbGF0ZXMuc2VydmljZSc7XG5cbi8qKlxuICogVGhlIGBDaGFubmVsYCBjb21wb25lbnQgaXMgYSBjb250YWluZXIgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgdGhlIFtgQ2hhbm5lbEhlYWRlcmBdKC9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvY29tcG9uZW50cy9DaGFubmVsSGVhZGVyQ29tcG9uZW50LyksIFtgTWVzc2FnZUxpc3RgXSgvY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbXBvbmVudHMvTWVzc2FnZUxpc3RDb21wb25lbnQpLCBbYE5vdGlmaWNhdGlvbkxpc3RgXSgvY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbXBvbmVudHMvTm90aWZpY2F0aW9uTGlzdENvbXBvbmVudC8pIGFuZCBbYE1lc3NhZ2VJbnB1dGBdKC9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvY29tcG9uZW50cy9NZXNzYWdlSW5wdXRDb21wb25lbnQvKSBjb21wb25lbnRzLiBZb3UgY2FuIGFsc28gcHJvdmlkZSB0aGUgW2BUaHJlYWRgXSgvY2hhdC9kb2NzL3Nkay9hbmd1bGFyL2NvbXBvbmVudHMvVGhyZWFkQ29tcG9uZW50LykgY29tcG9uZW50IHRvIHVzZSBtZXNzYWdlIFt0aHJlYWRzXSgvY2hhdC9kb2NzL2phdmFzY3JpcHQvdGhyZWFkcy8pLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tY2hhbm5lbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFubmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2hhbm5lbENvbXBvbmVudCB7XG4gIGlzRXJyb3IkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0luaXRpYWxpemluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGlzQWN0aXZlVGhyZWFkJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgaXNBY3RpdmVDaGFubmVsJDogT2JzZXJ2YWJsZTxib29sZWFuPjtcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgdGhlbWUkOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFubmVsU2VydmljZTogQ2hhbm5lbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcbiAgICByZWFkb25seSBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICApIHtcbiAgICB0aGlzLmlzRXJyb3IkID0gY29tYmluZUxhdGVzdChbXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmNoYW5uZWxRdWVyeVN0YXRlJCxcbiAgICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQsXG4gICAgXSkucGlwZShcbiAgICAgIG1hcCgoW3N0YXRlLCBhY3RpdmVDaGFubmVsXSkgPT4ge1xuICAgICAgICByZXR1cm4gIWFjdGl2ZUNoYW5uZWwgJiYgc3RhdGU/LnN0YXRlID09PSAnZXJyb3InO1xuICAgICAgfSksXG4gICAgKTtcbiAgICB0aGlzLmlzSW5pdGlhbGl6aW5nJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5jaGFubmVsU2VydmljZS5jaGFubmVsUXVlcnlTdGF0ZSQsXG4gICAgICB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZUNoYW5uZWwkLFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFtzdGF0ZSwgYWN0aXZlQ2hhbm5lbF0pID0+IHtcbiAgICAgICAgcmV0dXJuICFhY3RpdmVDaGFubmVsICYmIHN0YXRlPy5zdGF0ZSA9PT0gJ2luLXByb2dyZXNzJztcbiAgICAgIH0pLFxuICAgICk7XG4gICAgdGhpcy5pc0FjdGl2ZVRocmVhZCQgPSB0aGlzLmNoYW5uZWxTZXJ2aWNlLmFjdGl2ZVBhcmVudE1lc3NhZ2VJZCQucGlwZShcbiAgICAgIG1hcCgoaWQpID0+ICEhaWQpLFxuICAgICk7XG4gICAgdGhpcy50aGVtZSQgPSB0aGlzLnRoZW1lU2VydmljZS50aGVtZSQ7XG4gICAgdGhpcy5pc0FjdGl2ZUNoYW5uZWwkID0gdGhpcy5jaGFubmVsU2VydmljZS5hY3RpdmVDaGFubmVsJC5waXBlKFxuICAgICAgbWFwKChjKSA9PiAhIWMpLFxuICAgICk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgY2xhc3M9XCJzdHItY2hhdCBzdHItY2hhdC1jaGFubmVsIG1lc3NhZ2luZyBzdHItY2hhdF9fY2hhbm5lbCBzdHItY2hhdF9fdGhlbWUte3tcbiAgICB0aGVtZSQgfCBhc3luY1xuICB9fVwiXG4+XG4gIEBpZiAoXG4gICAgKGlzRXJyb3IkIHwgYXN5bmMpID09PSBmYWxzZSAmJlxuICAgIChpc0luaXRpYWxpemluZyQgfCBhc3luYykgPT09IGZhbHNlICYmXG4gICAgKGlzQWN0aXZlQ2hhbm5lbCQgfCBhc3luYykgPT09IHRydWVcbiAgKSB7XG4gICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19jb250YWluZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZXNzYWdlQm91bmNlUHJvbXB0VGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgZGVmYXVsdE1lc3NhZ2VCb3VuY2VQcm9tcHRcbiAgICAgICAgXCJcbiAgICAgIC8+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRNZXNzYWdlQm91bmNlUHJvbXB0PlxuICAgICAgICA8c3RyZWFtLW1lc3NhZ2UtYm91bmNlLXByb21wdCAvPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWFpbi1wYW5lbFwiPlxuICAgICAgICA8bmctY29udGVudCAvPlxuICAgICAgPC9kaXY+XG4gICAgICBAaWYgKGlzQWN0aXZlVGhyZWFkJCB8IGFzeW5jKSB7XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD0nW25hbWU9XCJ0aHJlYWRcIl0nIC8+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIH0gQGVsc2Uge1xuICAgIEBpZiAoXG4gICAgICAoaXNJbml0aWFsaXppbmckIHwgYXN5bmMpID09PSBmYWxzZSAmJlxuICAgICAgKChpc0Vycm9yJCB8IGFzeW5jKSA9PT0gdHJ1ZSB8fCAoaXNBY3RpdmVDaGFubmVsJCB8IGFzeW5jKSA9PT0gZmFsc2UpXG4gICAgKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2VtcHR5LWNoYW5uZWxcIj5cbiAgICAgICAgPHN0cmVhbS1pY29uIGljb249XCJjaGF0LWJ1YmJsZVwiIC8+XG4gICAgICAgIDxwIGNsYXNzPVwic3RyLWNoYXRfX2VtcHR5LWNoYW5uZWwtdGV4dFwiPlxuICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5ObyBjaGF0cyBoZXJlIHlldOKAplwiIHwgdHJhbnNsYXRlIH19XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19lbXB0eS1jaGFubmVsLW5vdGlmaWNhdGlvbnNcIj5cbiAgICAgICAgICA8c3RyZWFtLW5vdGlmaWNhdGlvbi1saXN0IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoXG4gICAgICAoaXNJbml0aWFsaXppbmckIHwgYXN5bmMpID09PSB0cnVlICYmXG4gICAgICAoaXNFcnJvciQgfCBhc3luYykgPT09IGZhbHNlICYmXG4gICAgICAoaXNBY3RpdmVDaGFubmVsJCB8IGFzeW5jKSA9PT0gZmFsc2VcbiAgICApIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLWhlYWRlci1hdmF0YXJcIj48L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1oZWFkZXItZW5kXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1oZWFkZXItbmFtZVwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtaGVhZGVyLWluZm9cIj48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtbGlzdFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2VcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtYXZhdGFyXCI+PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWVuZFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLXNlbmRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWxhc3Qtcm93XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS10ZXh0XCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1kYXRlXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1hdmF0YXJcIj48L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtZW5kXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2Utc2VuZGVyXCI+PC9kaXY+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtbGFzdC1yb3dcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLXRleHRcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWRhdGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWF2YXRhclwiPjwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1lbmRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1zZW5kZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1sYXN0LXJvd1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtdGV4dFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVsLW1lc3NhZ2UtZGF0ZVwiPjwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1pbnB1dC1yb3dcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbC1tZXNzYWdlLWlucHV0XCI+PC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWwtbWVzc2FnZS1zZW5kXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgfVxuICB9XG48L2Rpdj5cbiJdfQ==
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import { Component, } from '@angular/core';
|
|
2
|
-
import { getChannelDisplayText } from '../get-channel-display-text';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../channel.service";
|
|
5
|
-
import * as i2 from "../custom-templates.service";
|
|
6
|
-
import * as i3 from "../chat-client.service";
|
|
7
|
-
import * as i4 from "@angular/common";
|
|
8
|
-
import * as i5 from "../avatar-placeholder/avatar-placeholder.component";
|
|
9
|
-
import * as i6 from "@ngx-translate/core";
|
|
10
|
-
/**
|
|
11
|
-
* 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](/chat/docs/javascript/watch_channel/#watchers-vs-members) in the platform documentation. Please note that number of watchers is only displayed if the user has [`connect-events` capability](/chat/docs/javascript/channel_capabilities/)
|
|
12
|
-
*/
|
|
13
|
-
export class ChannelHeaderComponent {
|
|
14
|
-
constructor(channelService, customTemplatesService, cdRef, chatClientService) {
|
|
15
|
-
this.channelService = channelService;
|
|
16
|
-
this.customTemplatesService = customTemplatesService;
|
|
17
|
-
this.cdRef = cdRef;
|
|
18
|
-
this.chatClientService = chatClientService;
|
|
19
|
-
this.subscriptions = [];
|
|
20
|
-
this.channelService.activeChannel$.subscribe((c) => {
|
|
21
|
-
this.activeChannel = c;
|
|
22
|
-
const capabilities = this.activeChannel?.data
|
|
23
|
-
?.own_capabilities;
|
|
24
|
-
if (!capabilities) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
this.canReceiveConnectEvents =
|
|
28
|
-
capabilities.indexOf('connect-events') !== -1;
|
|
29
|
-
});
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
this.subscriptions.push(this.customTemplatesService.channelActionsTemplate$.subscribe((template) => {
|
|
33
|
-
this.channelActionsTemplate = template;
|
|
34
|
-
this.cdRef.detectChanges();
|
|
35
|
-
}));
|
|
36
|
-
this.subscriptions.push(this.customTemplatesService.channelHeaderInfoTemplate$.subscribe((template) => {
|
|
37
|
-
this.channelHeaderInfoTemplate = template;
|
|
38
|
-
this.cdRef.detectChanges();
|
|
39
|
-
}));
|
|
40
|
-
}
|
|
41
|
-
ngOnDestroy() {
|
|
42
|
-
this.subscriptions.forEach((s) => s.unsubscribe());
|
|
43
|
-
}
|
|
44
|
-
getChannelActionsContext() {
|
|
45
|
-
return { channel: this.activeChannel };
|
|
46
|
-
}
|
|
47
|
-
getChannelInfoContext() {
|
|
48
|
-
return { channel: this.activeChannel };
|
|
49
|
-
}
|
|
50
|
-
get memberCountParam() {
|
|
51
|
-
return { memberCount: this.activeChannel?.data?.member_count || 0 };
|
|
52
|
-
}
|
|
53
|
-
get watcherCountParam() {
|
|
54
|
-
return { watcherCount: this.activeChannel?.state?.watcher_count || 0 };
|
|
55
|
-
}
|
|
56
|
-
get displayText() {
|
|
57
|
-
if (!this.activeChannel) {
|
|
58
|
-
return '';
|
|
59
|
-
}
|
|
60
|
-
return getChannelDisplayText(this.activeChannel, this.chatClientService.chatClient.user);
|
|
61
|
-
}
|
|
62
|
-
get avatarName() {
|
|
63
|
-
return this.activeChannel?.data?.name;
|
|
64
|
-
}
|
|
65
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: ChannelHeaderComponent, deps: [{ token: i1.ChannelService }, { token: i2.CustomTemplatesService }, { token: i0.ChangeDetectorRef }, { token: i3.ChatClientService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
66
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: ChannelHeaderComponent, selector: "stream-channel-header", ngImport: i0, template: "<div class=\"str-chat__header-livestream str-chat__channel-header\">\n <ng-content />\n <stream-avatar-placeholder\n type=\"channel\"\n location=\"channel-header\"\n imageUrl=\"{{ activeChannel?.data?.image }}\"\n name=\"{{ avatarName }}\"\n [channel]=\"activeChannel\"\n />\n <div class=\"str-chat__header-livestream-left str-chat__channel-header-end\">\n <p\n data-testid=\"name\"\n class=\"str-chat__header-livestream-left--title str-chat__channel-header-title\"\n >\n {{ displayText }}\n </p>\n <ng-container\n *ngTemplateOutlet=\"\n channelHeaderInfoTemplate || defaultChannelInfo;\n context: getChannelInfoContext()\n \"\n />\n <ng-template #defaultChannelInfo>\n <p\n data-testid=\"info\"\n class=\"str-chat__header-livestream-left--members str-chat__channel-header-info\"\n >\n {{'streamChat.{{ memberCount }} members' | translate:memberCountParam}}\n {{canReceiveConnectEvents ? ('streamChat.{{ watcherCount }} online' |\n translate:watcherCountParam) : ''}}\n </p>\n </ng-template>\n </div>\n @if (channelActionsTemplate) {\n <ng-container\n *ngTemplateOutlet=\"\n channelActionsTemplate;\n context: getChannelActionsContext()\n \"\n />\n }\n</div>\n", dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.AvatarPlaceholderComponent, selector: "stream-avatar-placeholder", inputs: ["name", "imageUrl", "location", "channel", "user", "type", "initialsType", "showOnlineIndicator"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
|
|
67
|
-
}
|
|
68
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: ChannelHeaderComponent, decorators: [{
|
|
69
|
-
type: Component,
|
|
70
|
-
args: [{ selector: 'stream-channel-header', template: "<div class=\"str-chat__header-livestream str-chat__channel-header\">\n <ng-content />\n <stream-avatar-placeholder\n type=\"channel\"\n location=\"channel-header\"\n imageUrl=\"{{ activeChannel?.data?.image }}\"\n name=\"{{ avatarName }}\"\n [channel]=\"activeChannel\"\n />\n <div class=\"str-chat__header-livestream-left str-chat__channel-header-end\">\n <p\n data-testid=\"name\"\n class=\"str-chat__header-livestream-left--title str-chat__channel-header-title\"\n >\n {{ displayText }}\n </p>\n <ng-container\n *ngTemplateOutlet=\"\n channelHeaderInfoTemplate || defaultChannelInfo;\n context: getChannelInfoContext()\n \"\n />\n <ng-template #defaultChannelInfo>\n <p\n data-testid=\"info\"\n class=\"str-chat__header-livestream-left--members str-chat__channel-header-info\"\n >\n {{'streamChat.{{ memberCount }} members' | translate:memberCountParam}}\n {{canReceiveConnectEvents ? ('streamChat.{{ watcherCount }} online' |\n translate:watcherCountParam) : ''}}\n </p>\n </ng-template>\n </div>\n @if (channelActionsTemplate) {\n <ng-container\n *ngTemplateOutlet=\"\n channelActionsTemplate;\n context: getChannelActionsContext()\n \"\n />\n }\n</div>\n" }]
|
|
71
|
-
}], ctorParameters: () => [{ type: i1.ChannelService }, { type: i2.CustomTemplatesService }, { type: i0.ChangeDetectorRef }, { type: i3.ChatClientService }] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL2NoYW5uZWwtaGVhZGVyL2NoYW5uZWwtaGVhZGVyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLWhlYWRlci9jaGFubmVsLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxHQUlWLE1BQU0sZUFBZSxDQUFDO0FBTXZCLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7OztBQU9wRTs7R0FFRztBQU1ILE1BQU0sT0FBTyxzQkFBc0I7SUFPakMsWUFDVSxjQUE4QixFQUM5QixzQkFBOEMsRUFDOUMsS0FBd0IsRUFDeEIsaUJBQW9DO1FBSHBDLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUM5QiwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBQzlDLFVBQUssR0FBTCxLQUFLLENBQW1CO1FBQ3hCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBbUI7UUFOdEMsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBUXpDLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO1lBQ3ZCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSTtnQkFDM0MsRUFBRSxnQkFBNEIsQ0FBQztZQUNqQyxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNqQixPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsdUJBQXVCO2dCQUMxQixZQUFZLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsUUFBUTtRQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsc0JBQXNCLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUMzRCxDQUFDLFFBQVEsRUFBRSxFQUFFO1lBQ1gsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFFBQVEsQ0FBQztZQUN2QyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQzdCLENBQUMsQ0FDRixDQUNGLENBQUM7UUFDRixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDckIsSUFBSSxDQUFDLHNCQUFzQixDQUFDLDBCQUEwQixDQUFDLFNBQVMsQ0FDOUQsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNYLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxRQUFRLENBQUM7WUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDLENBQ0YsQ0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFjLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQscUJBQXFCO1FBQ25CLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWMsRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUN0RSxDQUFDO0lBRUQsSUFBSSxpQkFBaUI7UUFDbkIsT0FBTyxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFDRCxPQUFPLHFCQUFxQixDQUMxQixJQUFJLENBQUMsYUFBYSxFQUNsQixJQUFJLENBQUMsaUJBQWlCLENBQUMsVUFBVSxDQUFDLElBQUssQ0FDeEMsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQztJQUN4QyxDQUFDOzhHQTNFVSxzQkFBc0I7a0dBQXRCLHNCQUFzQiw2REMzQm5DLDR5Q0EwQ0E7OzJGRGZhLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDRSx1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGFubmVsIH0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlcnZpY2UgfSBmcm9tICcuLi9jaGFubmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhdENsaWVudFNlcnZpY2UgfSBmcm9tICcuLi9jaGF0LWNsaWVudC5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuaW1wb3J0IHsgZ2V0Q2hhbm5lbERpc3BsYXlUZXh0IH0gZnJvbSAnLi4vZ2V0LWNoYW5uZWwtZGlzcGxheS10ZXh0JztcbmltcG9ydCB7XG4gIENoYW5uZWxBY3Rpb25zQ29udGV4dCxcbiAgQ2hhbm5lbEhlYWRlckluZm9Db250ZXh0LFxuICBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzLFxufSBmcm9tICcuLi90eXBlcyc7XG5cbi8qKlxuICogVGhlIGBDaGFubmVsSGVhZGVyYCBjb21wb25lbnQgZGlzcGxheXMgdGhlIGF2YXRhciBhbmQgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBjaGFubmVsIGFsb25nIHdpdGggbWVtYmVyIGFuZCB3YXRjaGVyIGluZm9ybWF0aW9uLiBZb3UgY2FuIHJlYWQgYWJvdXQgW3RoZSBkaWZmZXJlbmNlIGJldHdlZW4gbWVtYmVycyBhbmQgd2F0Y2hlcnNdKC9jaGF0L2RvY3MvamF2YXNjcmlwdC93YXRjaF9jaGFubmVsLyN3YXRjaGVycy12cy1tZW1iZXJzKSBpbiB0aGUgcGxhdGZvcm0gZG9jdW1lbnRhdGlvbi4gUGxlYXNlIG5vdGUgdGhhdCBudW1iZXIgb2Ygd2F0Y2hlcnMgaXMgb25seSBkaXNwbGF5ZWQgaWYgdGhlIHVzZXIgaGFzIFtgY29ubmVjdC1ldmVudHNgIGNhcGFiaWxpdHldKC9jaGF0L2RvY3MvamF2YXNjcmlwdC9jaGFubmVsX2NhcGFiaWxpdGllcy8pXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1jaGFubmVsLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jaGFubmVsLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIENoYW5uZWxIZWFkZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIGNoYW5uZWxBY3Rpb25zVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjxDaGFubmVsQWN0aW9uc0NvbnRleHQ+O1xuICBjaGFubmVsSGVhZGVySW5mb1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8Q2hhbm5lbEhlYWRlckluZm9Db250ZXh0PjtcbiAgYWN0aXZlQ2hhbm5lbDogQ2hhbm5lbDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPiB8IHVuZGVmaW5lZDtcbiAgY2FuUmVjZWl2ZUNvbm5lY3RFdmVudHM6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIGN1c3RvbVRlbXBsYXRlc1NlcnZpY2U6IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBjaGF0Q2xpZW50U2VydmljZTogQ2hhdENsaWVudFNlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuY2hhbm5lbFNlcnZpY2UuYWN0aXZlQ2hhbm5lbCQuc3Vic2NyaWJlKChjKSA9PiB7XG4gICAgICB0aGlzLmFjdGl2ZUNoYW5uZWwgPSBjO1xuICAgICAgY29uc3QgY2FwYWJpbGl0aWVzID0gdGhpcy5hY3RpdmVDaGFubmVsPy5kYXRhXG4gICAgICAgID8ub3duX2NhcGFiaWxpdGllcyBhcyBzdHJpbmdbXTtcbiAgICAgIGlmICghY2FwYWJpbGl0aWVzKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2FuUmVjZWl2ZUNvbm5lY3RFdmVudHMgPVxuICAgICAgICBjYXBhYmlsaXRpZXMuaW5kZXhPZignY29ubmVjdC1ldmVudHMnKSAhPT0gLTE7XG4gICAgfSk7XG4gIH1cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goXG4gICAgICB0aGlzLmN1c3RvbVRlbXBsYXRlc1NlcnZpY2UuY2hhbm5lbEFjdGlvbnNUZW1wbGF0ZSQuc3Vic2NyaWJlKFxuICAgICAgICAodGVtcGxhdGUpID0+IHtcbiAgICAgICAgICB0aGlzLmNoYW5uZWxBY3Rpb25zVGVtcGxhdGUgPSB0ZW1wbGF0ZTtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5jaGFubmVsSGVhZGVySW5mb1RlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuY2hhbm5lbEhlYWRlckluZm9UZW1wbGF0ZSA9IHRlbXBsYXRlO1xuICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9LFxuICAgICAgKSxcbiAgICApO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goKHMpID0+IHMudW5zdWJzY3JpYmUoKSk7XG4gIH1cblxuICBnZXRDaGFubmVsQWN0aW9uc0NvbnRleHQoKTogQ2hhbm5lbEFjdGlvbnNDb250ZXh0IHtcbiAgICByZXR1cm4geyBjaGFubmVsOiB0aGlzLmFjdGl2ZUNoYW5uZWwhIH07XG4gIH1cblxuICBnZXRDaGFubmVsSW5mb0NvbnRleHQoKTogQ2hhbm5lbEhlYWRlckluZm9Db250ZXh0IHtcbiAgICByZXR1cm4geyBjaGFubmVsOiB0aGlzLmFjdGl2ZUNoYW5uZWwhIH07XG4gIH1cblxuICBnZXQgbWVtYmVyQ291bnRQYXJhbSgpIHtcbiAgICByZXR1cm4geyBtZW1iZXJDb3VudDogdGhpcy5hY3RpdmVDaGFubmVsPy5kYXRhPy5tZW1iZXJfY291bnQgfHwgMCB9O1xuICB9XG5cbiAgZ2V0IHdhdGNoZXJDb3VudFBhcmFtKCkge1xuICAgIHJldHVybiB7IHdhdGNoZXJDb3VudDogdGhpcy5hY3RpdmVDaGFubmVsPy5zdGF0ZT8ud2F0Y2hlcl9jb3VudCB8fCAwIH07XG4gIH1cblxuICBnZXQgZGlzcGxheVRleHQoKSB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZUNoYW5uZWwpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGdldENoYW5uZWxEaXNwbGF5VGV4dChcbiAgICAgIHRoaXMuYWN0aXZlQ2hhbm5lbCxcbiAgICAgIHRoaXMuY2hhdENsaWVudFNlcnZpY2UuY2hhdENsaWVudC51c2VyISxcbiAgICApO1xuICB9XG5cbiAgZ2V0IGF2YXRhck5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWN0aXZlQ2hhbm5lbD8uZGF0YT8ubmFtZTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cInN0ci1jaGF0X19oZWFkZXItbGl2ZXN0cmVhbSBzdHItY2hhdF9fY2hhbm5lbC1oZWFkZXJcIj5cbiAgPG5nLWNvbnRlbnQgLz5cbiAgPHN0cmVhbS1hdmF0YXItcGxhY2Vob2xkZXJcbiAgICB0eXBlPVwiY2hhbm5lbFwiXG4gICAgbG9jYXRpb249XCJjaGFubmVsLWhlYWRlclwiXG4gICAgaW1hZ2VVcmw9XCJ7eyBhY3RpdmVDaGFubmVsPy5kYXRhPy5pbWFnZSB9fVwiXG4gICAgbmFtZT1cInt7IGF2YXRhck5hbWUgfX1cIlxuICAgIFtjaGFubmVsXT1cImFjdGl2ZUNoYW5uZWxcIlxuICAvPlxuICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2hlYWRlci1saXZlc3RyZWFtLWxlZnQgc3RyLWNoYXRfX2NoYW5uZWwtaGVhZGVyLWVuZFwiPlxuICAgIDxwXG4gICAgICBkYXRhLXRlc3RpZD1cIm5hbWVcIlxuICAgICAgY2xhc3M9XCJzdHItY2hhdF9faGVhZGVyLWxpdmVzdHJlYW0tbGVmdC0tdGl0bGUgc3RyLWNoYXRfX2NoYW5uZWwtaGVhZGVyLXRpdGxlXCJcbiAgICA+XG4gICAgICB7eyBkaXNwbGF5VGV4dCB9fVxuICAgIDwvcD5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICBjaGFubmVsSGVhZGVySW5mb1RlbXBsYXRlIHx8IGRlZmF1bHRDaGFubmVsSW5mbztcbiAgICAgICAgY29udGV4dDogZ2V0Q2hhbm5lbEluZm9Db250ZXh0KClcbiAgICAgIFwiXG4gICAgLz5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDaGFubmVsSW5mbz5cbiAgICAgIDxwXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiaW5mb1wiXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX2hlYWRlci1saXZlc3RyZWFtLWxlZnQtLW1lbWJlcnMgc3RyLWNoYXRfX2NoYW5uZWwtaGVhZGVyLWluZm9cIlxuICAgICAgPlxuICAgICAgICB7eydzdHJlYW1DaGF0Lnt7IG1lbWJlckNvdW50IH19IG1lbWJlcnMnIHwgdHJhbnNsYXRlOm1lbWJlckNvdW50UGFyYW19fVxuICAgICAgICB7e2NhblJlY2VpdmVDb25uZWN0RXZlbnRzID8gKCdzdHJlYW1DaGF0Lnt7IHdhdGNoZXJDb3VudCB9fSBvbmxpbmUnIHxcbiAgICAgICAgdHJhbnNsYXRlOndhdGNoZXJDb3VudFBhcmFtKSA6ICcnfX1cbiAgICAgIDwvcD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgQGlmIChjaGFubmVsQWN0aW9uc1RlbXBsYXRlKSB7XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgY2hhbm5lbEFjdGlvbnNUZW1wbGF0ZTtcbiAgICAgICAgY29udGV4dDogZ2V0Q2hhbm5lbEFjdGlvbnNDb250ZXh0KClcbiAgICAgIFwiXG4gICAgLz5cbiAgfVxuPC9kaXY+XG4iXX0=
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { Component } from '@angular/core';
|
|
2
|
-
import { map } from 'rxjs/operators';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "../channel.service";
|
|
5
|
-
import * as i2 from "../custom-templates.service";
|
|
6
|
-
import * as i3 from "../theme.service";
|
|
7
|
-
import * as i4 from "@angular/common";
|
|
8
|
-
import * as i5 from "../icon/icon.component";
|
|
9
|
-
import * as i6 from "../channel-preview/channel-preview.component";
|
|
10
|
-
import * as i7 from "../paginated-list/paginated-list.component";
|
|
11
|
-
import * as i8 from "@ngx-translate/core";
|
|
12
|
-
/**
|
|
13
|
-
* The `ChannelList` component renders the list of channels.
|
|
14
|
-
*/
|
|
15
|
-
export class ChannelListComponent {
|
|
16
|
-
constructor(channelService, customTemplatesService, themeService) {
|
|
17
|
-
this.channelService = channelService;
|
|
18
|
-
this.customTemplatesService = customTemplatesService;
|
|
19
|
-
this.themeService = themeService;
|
|
20
|
-
this.isLoadingMoreChannels = false;
|
|
21
|
-
this.subscriptions = [];
|
|
22
|
-
this.theme$ = this.themeService.theme$;
|
|
23
|
-
this.channels$ = this.channelService.channels$;
|
|
24
|
-
this.hasMoreChannels$ = this.channelService.hasMoreChannels$;
|
|
25
|
-
this.isError$ = this.channelService.shouldRecoverState$;
|
|
26
|
-
this.isInitializing$ = this.channelService.channelQueryState$.pipe(map((s) => !this.isLoadingMoreChannels && s?.state === 'in-progress'));
|
|
27
|
-
this.subscriptions.push(this.customTemplatesService.channelPreviewTemplate$.subscribe((template) => (this.customChannelPreviewTemplate = template)));
|
|
28
|
-
}
|
|
29
|
-
ngOnDestroy() {
|
|
30
|
-
this.subscriptions.forEach((s) => s.unsubscribe());
|
|
31
|
-
}
|
|
32
|
-
async loadMoreChannels() {
|
|
33
|
-
this.isLoadingMoreChannels = true;
|
|
34
|
-
await this.channelService.loadMoreChannels();
|
|
35
|
-
this.isLoadingMoreChannels = false;
|
|
36
|
-
}
|
|
37
|
-
recoverState() {
|
|
38
|
-
void this.channelService.recoverState();
|
|
39
|
-
}
|
|
40
|
-
trackByChannelId(_, item) {
|
|
41
|
-
return item.cid;
|
|
42
|
-
}
|
|
43
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: ChannelListComponent, deps: [{ token: i1.ChannelService }, { token: i2.CustomTemplatesService }, { token: i3.ThemeService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
44
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: ChannelListComponent, selector: "stream-channel-list", ngImport: i0, template: "<div\n #container\n data-testid=\"channel-list-container\"\n class=\"str-chat str-chat-angular__channel-list str-chat__channel-list str-chat-channel-list messaging str-chat__theme-{{\n theme$ | async\n }}\"\n>\n @if ((isError$ | async) === false && (isInitializing$ | async) === false) {\n <div class=\"str-chat__channel-list-messenger\">\n <div class=\"str-chat__channel-list-messenger__main\">\n <ng-content select=\"[channel-list-top]\" />\n @if (!(channels$ | async)?.length) {\n <div class=\"str-chat__channel-list-empty\">\n <stream-icon icon=\"chat-bubble\" />\n <p data-testid=\"empty-channel-list-indicator\">\n {{ \"streamChat.You have no channels currently\" | translate }}\n </p>\n </div>\n }\n <stream-paginated-list\n [items]=\"(channels$ | async) ?? []\"\n [hasMore]=\"(hasMoreChannels$ | async) ?? false\"\n [isLoading]=\"isLoadingMoreChannels\"\n (loadMore)=\"loadMoreChannels()\"\n [trackBy]=\"trackByChannelId\"\n >\n <ng-template let-channel=\"item\">\n <ng-template #defaultTemplate let-channelInput=\"channel\">\n <stream-channel-preview\n data-testclass=\"channel-preview\"\n [channel]=\"channelInput\"\n />\n </ng-template>\n <div>\n <ng-container\n *ngTemplateOutlet=\"\n customChannelPreviewTemplate || defaultTemplate;\n context: { channel: channel }\n \"\n />\n </div>\n </ng-template>\n </stream-paginated-list>\n <ng-content select=\"[channel-list-bottom]\" />\n </div>\n </div>\n } @else {\n @if (isError$ | async) {\n <div\n data-testid=\"chatdown-container\"\n class=\"str-chat__dow str-chat__channel-list-empty\"\n >\n <button (click)=\"recoverState()\" class=\"str-chat__cta-button\">\n {{ \"streamChat.Reload channels\" | translate }}\n </button>\n </div>\n }\n @if (isInitializing$ | async) {\n <ng-container *ngTemplateOutlet=\"loadingChannels\" />\n }\n }\n</div>\n\n<ng-template #loadingChannels>\n <div\n data-testid=\"loading-indicator-full-size\"\n class=\"str-chat__loading-channels\"\n >\n <ng-container *ngTemplateOutlet=\"loadingChannel\" />\n <ng-container *ngTemplateOutlet=\"loadingChannel\" />\n <ng-container *ngTemplateOutlet=\"loadingChannel\" />\n </div>\n</ng-template>\n\n<ng-template #loadingChannel>\n <div\n class=\"str-chat__loading-channels-item str-chat__channel-preview-loading\"\n >\n <div class=\"str-chat__loading-channels-avatar\"></div>\n <div\n class=\"str-chat__loading-channels-meta str-chat__channel-preview-end-loading\"\n >\n <div class=\"str-chat__loading-channels-username\"></div>\n <div class=\"str-chat__loading-channels-status\"></div>\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i4.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i5.IconComponent, selector: "stream-icon", inputs: ["icon"] }, { kind: "component", type: i6.ChannelPreviewComponent, selector: "stream-channel-preview", inputs: ["channel"] }, { kind: "component", type: i7.PaginatedListComponent, selector: "stream-paginated-list", inputs: ["items", "isLoading", "hasMore", "trackBy"], outputs: ["loadMore"] }, { kind: "pipe", type: i4.AsyncPipe, name: "async" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }] }); }
|
|
45
|
-
}
|
|
46
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: ChannelListComponent, decorators: [{
|
|
47
|
-
type: Component,
|
|
48
|
-
args: [{ selector: 'stream-channel-list', template: "<div\n #container\n data-testid=\"channel-list-container\"\n class=\"str-chat str-chat-angular__channel-list str-chat__channel-list str-chat-channel-list messaging str-chat__theme-{{\n theme$ | async\n }}\"\n>\n @if ((isError$ | async) === false && (isInitializing$ | async) === false) {\n <div class=\"str-chat__channel-list-messenger\">\n <div class=\"str-chat__channel-list-messenger__main\">\n <ng-content select=\"[channel-list-top]\" />\n @if (!(channels$ | async)?.length) {\n <div class=\"str-chat__channel-list-empty\">\n <stream-icon icon=\"chat-bubble\" />\n <p data-testid=\"empty-channel-list-indicator\">\n {{ \"streamChat.You have no channels currently\" | translate }}\n </p>\n </div>\n }\n <stream-paginated-list\n [items]=\"(channels$ | async) ?? []\"\n [hasMore]=\"(hasMoreChannels$ | async) ?? false\"\n [isLoading]=\"isLoadingMoreChannels\"\n (loadMore)=\"loadMoreChannels()\"\n [trackBy]=\"trackByChannelId\"\n >\n <ng-template let-channel=\"item\">\n <ng-template #defaultTemplate let-channelInput=\"channel\">\n <stream-channel-preview\n data-testclass=\"channel-preview\"\n [channel]=\"channelInput\"\n />\n </ng-template>\n <div>\n <ng-container\n *ngTemplateOutlet=\"\n customChannelPreviewTemplate || defaultTemplate;\n context: { channel: channel }\n \"\n />\n </div>\n </ng-template>\n </stream-paginated-list>\n <ng-content select=\"[channel-list-bottom]\" />\n </div>\n </div>\n } @else {\n @if (isError$ | async) {\n <div\n data-testid=\"chatdown-container\"\n class=\"str-chat__dow str-chat__channel-list-empty\"\n >\n <button (click)=\"recoverState()\" class=\"str-chat__cta-button\">\n {{ \"streamChat.Reload channels\" | translate }}\n </button>\n </div>\n }\n @if (isInitializing$ | async) {\n <ng-container *ngTemplateOutlet=\"loadingChannels\" />\n }\n }\n</div>\n\n<ng-template #loadingChannels>\n <div\n data-testid=\"loading-indicator-full-size\"\n class=\"str-chat__loading-channels\"\n >\n <ng-container *ngTemplateOutlet=\"loadingChannel\" />\n <ng-container *ngTemplateOutlet=\"loadingChannel\" />\n <ng-container *ngTemplateOutlet=\"loadingChannel\" />\n </div>\n</ng-template>\n\n<ng-template #loadingChannel>\n <div\n class=\"str-chat__loading-channels-item str-chat__channel-preview-loading\"\n >\n <div class=\"str-chat__loading-channels-avatar\"></div>\n <div\n class=\"str-chat__loading-channels-meta str-chat__channel-preview-end-loading\"\n >\n <div class=\"str-chat__loading-channels-username\"></div>\n <div class=\"str-chat__loading-channels-status\"></div>\n </div>\n </div>\n</ng-template>\n" }]
|
|
49
|
-
}], ctorParameters: () => [{ type: i1.ChannelService }, { type: i2.CustomTemplatesService }, { type: i3.ThemeService }] });
|
|
50
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhbm5lbC1saXN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLWxpc3QvY2hhbm5lbC1saXN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9jaGFubmVsLWxpc3QvY2hhbm5lbC1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQTBCLE1BQU0sZUFBZSxDQUFDO0FBRWxFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7Ozs7OztBQU9yQzs7R0FFRztBQU1ILE1BQU0sT0FBTyxvQkFBb0I7SUFVL0IsWUFDVSxjQUE4QixFQUM5QixzQkFBOEMsRUFDOUMsWUFBMEI7UUFGMUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFDOUMsaUJBQVksR0FBWixZQUFZLENBQWM7UUFUcEMsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBSTlCLGtCQUFhLEdBQW1CLEVBQUUsQ0FBQztRQU9qQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUM7UUFDL0MsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLENBQUM7UUFDN0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDO1FBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQ2hFLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMscUJBQXFCLElBQUksQ0FBQyxFQUFFLEtBQUssS0FBSyxhQUFhLENBQUMsQ0FDdEUsQ0FBQztRQUNGLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUNyQixJQUFJLENBQUMsc0JBQXNCLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUMzRCxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEdBQUcsUUFBUSxDQUFDLENBQzdELENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxLQUFLLENBQUMsZ0JBQWdCO1FBQ3BCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUM7UUFDbEMsTUFBTSxJQUFJLENBQUMsY0FBYyxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDN0MsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBRUQsWUFBWTtRQUNWLEtBQUssSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsQ0FBUyxFQUFFLElBQXdDO1FBQ2xFLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDOzhHQTdDVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwyRENqQmpDLDAvRkF1RkE7OzJGRHRFYSxvQkFBb0I7a0JBTGhDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkRlc3Ryb3ksIFRlbXBsYXRlUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENoYW5uZWwgfSBmcm9tICdzdHJlYW0tY2hhdCc7XG5pbXBvcnQgeyBDaGFubmVsU2VydmljZSB9IGZyb20gJy4uL2NoYW5uZWwuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFRoZW1lU2VydmljZSB9IGZyb20gJy4uL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ2hhbm5lbFByZXZpZXdDb250ZXh0LCBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG4vKipcbiAqIFRoZSBgQ2hhbm5lbExpc3RgIGNvbXBvbmVudCByZW5kZXJzIHRoZSBsaXN0IG9mIGNoYW5uZWxzLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tY2hhbm5lbC1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NoYW5uZWwtbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlczogW10sXG59KVxuZXhwb3J0IGNsYXNzIENoYW5uZWxMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgY2hhbm5lbHMkOiBPYnNlcnZhYmxlPENoYW5uZWw8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXSB8IHVuZGVmaW5lZD47XG4gIGlzRXJyb3IkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBpc0luaXRpYWxpemluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gIGlzTG9hZGluZ01vcmVDaGFubmVscyA9IGZhbHNlO1xuICBoYXNNb3JlQ2hhbm5lbHMkOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuICBjdXN0b21DaGFubmVsUHJldmlld1RlbXBsYXRlOiBUZW1wbGF0ZVJlZjxDaGFubmVsUHJldmlld0NvbnRleHQ+IHwgdW5kZWZpbmVkO1xuICB0aGVtZSQ6IE9ic2VydmFibGU8c3RyaW5nPjtcbiAgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIGN1c3RvbVRlbXBsYXRlc1NlcnZpY2U6IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcbiAgKSB7XG4gICAgdGhpcy50aGVtZSQgPSB0aGlzLnRoZW1lU2VydmljZS50aGVtZSQ7XG4gICAgdGhpcy5jaGFubmVscyQgPSB0aGlzLmNoYW5uZWxTZXJ2aWNlLmNoYW5uZWxzJDtcbiAgICB0aGlzLmhhc01vcmVDaGFubmVscyQgPSB0aGlzLmNoYW5uZWxTZXJ2aWNlLmhhc01vcmVDaGFubmVscyQ7XG4gICAgdGhpcy5pc0Vycm9yJCA9IHRoaXMuY2hhbm5lbFNlcnZpY2Uuc2hvdWxkUmVjb3ZlclN0YXRlJDtcbiAgICB0aGlzLmlzSW5pdGlhbGl6aW5nJCA9IHRoaXMuY2hhbm5lbFNlcnZpY2UuY2hhbm5lbFF1ZXJ5U3RhdGUkLnBpcGUoXG4gICAgICBtYXAoKHMpID0+ICF0aGlzLmlzTG9hZGluZ01vcmVDaGFubmVscyAmJiBzPy5zdGF0ZSA9PT0gJ2luLXByb2dyZXNzJyksXG4gICAgKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMuY3VzdG9tVGVtcGxhdGVzU2VydmljZS5jaGFubmVsUHJldmlld1RlbXBsYXRlJC5zdWJzY3JpYmUoXG4gICAgICAgICh0ZW1wbGF0ZSkgPT4gKHRoaXMuY3VzdG9tQ2hhbm5lbFByZXZpZXdUZW1wbGF0ZSA9IHRlbXBsYXRlKSxcbiAgICAgICksXG4gICAgKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgYXN5bmMgbG9hZE1vcmVDaGFubmVscygpIHtcbiAgICB0aGlzLmlzTG9hZGluZ01vcmVDaGFubmVscyA9IHRydWU7XG4gICAgYXdhaXQgdGhpcy5jaGFubmVsU2VydmljZS5sb2FkTW9yZUNoYW5uZWxzKCk7XG4gICAgdGhpcy5pc0xvYWRpbmdNb3JlQ2hhbm5lbHMgPSBmYWxzZTtcbiAgfVxuXG4gIHJlY292ZXJTdGF0ZSgpIHtcbiAgICB2b2lkIHRoaXMuY2hhbm5lbFNlcnZpY2UucmVjb3ZlclN0YXRlKCk7XG4gIH1cblxuICB0cmFja0J5Q2hhbm5lbElkKF86IG51bWJlciwgaXRlbTogQ2hhbm5lbDxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPikge1xuICAgIHJldHVybiBpdGVtLmNpZDtcbiAgfVxufVxuIiwiPGRpdlxuICAjY29udGFpbmVyXG4gIGRhdGEtdGVzdGlkPVwiY2hhbm5lbC1saXN0LWNvbnRhaW5lclwiXG4gIGNsYXNzPVwic3RyLWNoYXQgc3RyLWNoYXQtYW5ndWxhcl9fY2hhbm5lbC1saXN0IHN0ci1jaGF0X19jaGFubmVsLWxpc3Qgc3RyLWNoYXQtY2hhbm5lbC1saXN0IG1lc3NhZ2luZyBzdHItY2hhdF9fdGhlbWUte3tcbiAgICB0aGVtZSQgfCBhc3luY1xuICB9fVwiXG4+XG4gIEBpZiAoKGlzRXJyb3IkIHwgYXN5bmMpID09PSBmYWxzZSAmJiAoaXNJbml0aWFsaXppbmckIHwgYXN5bmMpID09PSBmYWxzZSkge1xuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1saXN0LW1lc3NlbmdlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19jaGFubmVsLWxpc3QtbWVzc2VuZ2VyX19tYWluXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltjaGFubmVsLWxpc3QtdG9wXVwiIC8+XG4gICAgICAgIEBpZiAoIShjaGFubmVscyQgfCBhc3luYyk/Lmxlbmd0aCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fY2hhbm5lbC1saXN0LWVtcHR5XCI+XG4gICAgICAgICAgICA8c3RyZWFtLWljb24gaWNvbj1cImNoYXQtYnViYmxlXCIgLz5cbiAgICAgICAgICAgIDxwIGRhdGEtdGVzdGlkPVwiZW1wdHktY2hhbm5lbC1saXN0LWluZGljYXRvclwiPlxuICAgICAgICAgICAgICB7eyBcInN0cmVhbUNoYXQuWW91IGhhdmUgbm8gY2hhbm5lbHMgY3VycmVudGx5XCIgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgICA8c3RyZWFtLXBhZ2luYXRlZC1saXN0XG4gICAgICAgICAgW2l0ZW1zXT1cIihjaGFubmVscyQgfCBhc3luYykgPz8gW11cIlxuICAgICAgICAgIFtoYXNNb3JlXT1cIihoYXNNb3JlQ2hhbm5lbHMkIHwgYXN5bmMpID8/IGZhbHNlXCJcbiAgICAgICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ01vcmVDaGFubmVsc1wiXG4gICAgICAgICAgKGxvYWRNb3JlKT1cImxvYWRNb3JlQ2hhbm5lbHMoKVwiXG4gICAgICAgICAgW3RyYWNrQnldPVwidHJhY2tCeUNoYW5uZWxJZFwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWNoYW5uZWw9XCJpdGVtXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUZW1wbGF0ZSBsZXQtY2hhbm5lbElucHV0PVwiY2hhbm5lbFwiPlxuICAgICAgICAgICAgICA8c3RyZWFtLWNoYW5uZWwtcHJldmlld1xuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGNsYXNzPVwiY2hhbm5lbC1wcmV2aWV3XCJcbiAgICAgICAgICAgICAgICBbY2hhbm5lbF09XCJjaGFubmVsSW5wdXRcIlxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAgICAgY3VzdG9tQ2hhbm5lbFByZXZpZXdUZW1wbGF0ZSB8fCBkZWZhdWx0VGVtcGxhdGU7XG4gICAgICAgICAgICAgICAgICBjb250ZXh0OiB7IGNoYW5uZWw6IGNoYW5uZWwgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L3N0cmVhbS1wYWdpbmF0ZWQtbGlzdD5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2NoYW5uZWwtbGlzdC1ib3R0b21dXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICB9IEBlbHNlIHtcbiAgICBAaWYgKGlzRXJyb3IkIHwgYXN5bmMpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjaGF0ZG93bi1jb250YWluZXJcIlxuICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19kb3cgc3RyLWNoYXRfX2NoYW5uZWwtbGlzdC1lbXB0eVwiXG4gICAgICA+XG4gICAgICAgIDxidXR0b24gKGNsaWNrKT1cInJlY292ZXJTdGF0ZSgpXCIgY2xhc3M9XCJzdHItY2hhdF9fY3RhLWJ1dHRvblwiPlxuICAgICAgICAgIHt7IFwic3RyZWFtQ2hhdC5SZWxvYWQgY2hhbm5lbHNcIiB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgICBAaWYgKGlzSW5pdGlhbGl6aW5nJCB8IGFzeW5jKSB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ0NoYW5uZWxzXCIgLz5cbiAgICB9XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xvYWRpbmdDaGFubmVscz5cbiAgPGRpdlxuICAgIGRhdGEtdGVzdGlkPVwibG9hZGluZy1pbmRpY2F0b3ItZnVsbC1zaXplXCJcbiAgICBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWxzXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nQ2hhbm5lbFwiIC8+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxvYWRpbmdDaGFubmVsXCIgLz5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ0NoYW5uZWxcIiAvPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbG9hZGluZ0NoYW5uZWw+XG4gIDxkaXZcbiAgICBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWxzLWl0ZW0gc3RyLWNoYXRfX2NoYW5uZWwtcHJldmlldy1sb2FkaW5nXCJcbiAgPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbG9hZGluZy1jaGFubmVscy1hdmF0YXJcIj48L2Rpdj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWxzLW1ldGEgc3RyLWNoYXRfX2NoYW5uZWwtcHJldmlldy1lbmQtbG9hZGluZ1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cInN0ci1jaGF0X19sb2FkaW5nLWNoYW5uZWxzLXVzZXJuYW1lXCI+PC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RyLWNoYXRfX2xvYWRpbmctY2hhbm5lbHMtc3RhdHVzXCI+PC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|