stream-chat-angular 5.13.0 → 6.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/i18n/en.d.ts +1 -0
- package/assets/version.d.ts +1 -1
- package/{esm2020 → esm2022}/assets/i18n/en.mjs +2 -1
- package/{esm2020 → esm2022}/assets/version.mjs +2 -2
- package/{esm2020 → esm2022}/lib/attachment-configuration.service.mjs +4 -4
- package/esm2022/lib/attachment-list/attachment-list.component.mjs +212 -0
- package/esm2022/lib/attachment-preview-list/attachment-preview-list.component.mjs +55 -0
- package/{esm2020 → esm2022}/lib/attachment.service.mjs +5 -5
- package/esm2022/lib/avatar/avatar.component.mjs +157 -0
- package/{esm2020 → esm2022}/lib/avatar-placeholder/avatar-placeholder.component.mjs +6 -6
- package/esm2022/lib/channel/channel.component.mjs +45 -0
- package/esm2022/lib/channel-header/channel-header.component.mjs +72 -0
- package/esm2022/lib/channel-list/channel-list.component.mjs +50 -0
- package/esm2022/lib/channel-preview/channel-preview.component.mjs +150 -0
- package/esm2022/lib/channel.service.mjs +1381 -0
- package/esm2022/lib/chat-client.service.mjs +227 -0
- package/{esm2020 → esm2022}/lib/custom-templates.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/date-parser.service.mjs +5 -5
- package/esm2022/lib/file-utils.mjs +35 -0
- package/{esm2020 → esm2022}/lib/get-channel-display-text.mjs +1 -1
- package/{esm2020 → esm2022}/lib/get-message-translation.mjs +1 -1
- package/{esm2020 → esm2022}/lib/icon/icon-placeholder/icon-placeholder.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/icon/icon.module.mjs +11 -11
- package/{esm2020 → esm2022}/lib/icon/loading-indicator/loading-indicator.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/icon/loading-indicator-placeholder/loading-indicator-placeholder.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/list-users.mjs +1 -1
- package/esm2022/lib/message/message.component.mjs +486 -0
- package/esm2022/lib/message-actions-box/message-actions-box.component.mjs +120 -0
- package/{esm2020 → esm2022}/lib/message-actions.service.mjs +5 -5
- package/esm2022/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +71 -0
- package/{esm2020 → esm2022}/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/message-input/emoji-input.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-input/message-input-config.service.mjs +5 -5
- package/esm2022/lib/message-input/message-input.component.mjs +507 -0
- package/{esm2020 → esm2022}/lib/message-input/textarea/textarea.component.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-input/textarea.directive.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-input/voice-recorder.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-list/group-styles.mjs +1 -1
- package/esm2022/lib/message-list/message-list.component.mjs +715 -0
- package/{esm2020 → esm2022}/lib/message-preview.mjs +1 -1
- package/esm2022/lib/message-reactions/message-reactions.component.mjs +165 -0
- package/esm2022/lib/message-reactions-selector/message-reactions-selector.component.mjs +57 -0
- package/{esm2020 → esm2022}/lib/message-reactions.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/message-text/message-text.component.mjs +6 -6
- package/esm2022/lib/message.service.mjs +43 -0
- package/{esm2020 → esm2022}/lib/modal/modal.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/notification/notification.component.mjs +6 -6
- package/esm2022/lib/notification-list/notification-list.component.mjs +33 -0
- package/{esm2020 → esm2022}/lib/notification.service.mjs +5 -5
- package/esm2022/lib/paginated-list/paginated-list.component.mjs +94 -0
- package/{esm2020 → esm2022}/lib/parse-date.mjs +1 -1
- package/{esm2020 → esm2022}/lib/read-by.mjs +1 -1
- package/esm2022/lib/stream-autocomplete-textarea.module.mjs +33 -0
- package/{esm2020 → esm2022}/lib/stream-avatar.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/stream-chat.module.mjs +59 -59
- package/{esm2020 → esm2022}/lib/stream-i18n.service.mjs +5 -5
- package/esm2022/lib/stream-textarea.module.mjs +31 -0
- package/{esm2020 → esm2022}/lib/theme.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/thread/thread.component.mjs +6 -6
- package/{esm2020 → esm2022}/lib/transliteration.service.mjs +5 -5
- package/esm2022/lib/types.mjs +2 -0
- package/{esm2020 → esm2022}/lib/user-list/user-list.component.mjs +5 -5
- package/esm2022/lib/virtualized-list.service.mjs +273 -0
- package/{esm2020 → esm2022}/lib/virtualized-message-list.service.mjs +1 -1
- package/{esm2020 → esm2022}/lib/voice-recorder/amplitude-recorder.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/voice-recorder/audio-recorder.service.mjs +5 -5
- package/{esm2020 → esm2022}/lib/voice-recorder/media-recorder.mjs +1 -1
- package/esm2022/lib/voice-recorder/mp3-transcoder.mjs +61 -0
- package/esm2022/lib/voice-recorder/transcoder.service.mjs +121 -0
- package/esm2022/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +32 -0
- package/esm2022/lib/voice-recorder/voice-recorder.component.mjs +80 -0
- package/{esm2020 → esm2022}/lib/voice-recorder/voice-recorder.module.mjs +9 -9
- package/esm2022/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +112 -0
- package/esm2022/lib/voice-recording/voice-recording.component.mjs +91 -0
- package/{esm2020 → esm2022}/lib/voice-recording/voice-recording.module.mjs +5 -5
- package/{esm2020 → esm2022}/lib/wave-form-sampler.mjs +1 -1
- package/esm2022/public-api.mjs +82 -0
- package/{fesm2020 → fesm2022}/stream-chat-angular.mjs +857 -1140
- package/fesm2022/stream-chat-angular.mjs.map +1 -0
- package/lib/attachment-list/attachment-list.component.d.ts +2 -5
- package/lib/attachment-preview-list/attachment-preview-list.component.d.ts +2 -2
- package/lib/attachment.service.d.ts +1 -1
- package/lib/avatar/avatar.component.d.ts +4 -4
- package/lib/avatar-placeholder/avatar-placeholder.component.d.ts +1 -1
- package/lib/channel-list/channel-list.component.d.ts +1 -0
- package/lib/channel-preview/channel-preview.component.d.ts +3 -4
- package/lib/channel.service.d.ts +40 -106
- package/lib/chat-client.service.d.ts +1 -4
- package/lib/custom-templates.service.d.ts +10 -10
- package/lib/icon/icon-placeholder/icon-placeholder.component.d.ts +1 -1
- package/lib/icon/icon.component.d.ts +2 -2
- package/lib/message/message.component.d.ts +2 -2
- package/lib/message-actions-box/message-actions-box.component.d.ts +2 -3
- package/lib/message-actions.service.d.ts +1 -1
- package/lib/message-input/autocomplete-textarea/autocomplete-textarea.component.d.ts +2 -2
- package/lib/message-input/message-input.component.d.ts +2 -2
- package/lib/message-input/textarea/textarea.component.d.ts +1 -1
- package/lib/message-input/textarea.directive.d.ts +2 -2
- package/lib/message-list/group-styles.d.ts +1 -1
- package/lib/message-list/message-list.component.d.ts +2 -3
- package/lib/message-reactions/message-reactions.component.d.ts +2 -3
- package/lib/message-reactions-selector/message-reactions-selector.component.d.ts +1 -2
- package/lib/message-text/message-text.component.d.ts +2 -2
- package/lib/modal/modal.component.d.ts +1 -1
- package/lib/notification/notification.component.d.ts +1 -1
- package/lib/notification-list/notification-list.component.d.ts +0 -1
- package/lib/paginated-list/paginated-list.component.d.ts +5 -2
- package/lib/read-by.d.ts +1 -1
- package/lib/types.d.ts +98 -84
- package/lib/user-list/user-list.component.d.ts +1 -1
- package/lib/voice-recorder/amplitude-recorder.service.d.ts +2 -2
- package/lib/voice-recorder/media-recorder.d.ts +2 -2
- package/lib/voice-recorder/transcoder.service.d.ts +4 -4
- package/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.d.ts +0 -1
- 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 +1 -1
- package/package.json +15 -21
- package/public-api.d.ts +0 -1
- package/src/assets/i18n/en.ts +1 -0
- package/src/assets/version.ts +1 -1
- package/esm2020/lib/attachment-list/attachment-list.component.mjs +0 -224
- package/esm2020/lib/attachment-preview-list/attachment-preview-list.component.mjs +0 -55
- package/esm2020/lib/avatar/avatar.component.mjs +0 -160
- package/esm2020/lib/channel/channel.component.mjs +0 -45
- package/esm2020/lib/channel-header/channel-header.component.mjs +0 -72
- package/esm2020/lib/channel-list/channel-list.component.mjs +0 -47
- package/esm2020/lib/channel-preview/channel-preview.component.mjs +0 -155
- package/esm2020/lib/channel-query.mjs +0 -77
- package/esm2020/lib/channel.service.mjs +0 -1546
- package/esm2020/lib/chat-client.service.mjs +0 -238
- package/esm2020/lib/file-utils.mjs +0 -35
- package/esm2020/lib/message/message.component.mjs +0 -486
- package/esm2020/lib/message-actions-box/message-actions-box.component.mjs +0 -123
- package/esm2020/lib/message-bounce-prompt/message-bounce-prompt.component.mjs +0 -71
- package/esm2020/lib/message-input/message-input.component.mjs +0 -507
- package/esm2020/lib/message-list/message-list.component.mjs +0 -717
- package/esm2020/lib/message-reactions/message-reactions.component.mjs +0 -168
- package/esm2020/lib/message-reactions-selector/message-reactions-selector.component.mjs +0 -61
- package/esm2020/lib/message.service.mjs +0 -43
- package/esm2020/lib/notification-list/notification-list.component.mjs +0 -36
- package/esm2020/lib/paginated-list/paginated-list.component.mjs +0 -94
- package/esm2020/lib/stream-autocomplete-textarea.module.mjs +0 -33
- package/esm2020/lib/stream-textarea.module.mjs +0 -31
- package/esm2020/lib/types.mjs +0 -2
- package/esm2020/lib/virtualized-list.service.mjs +0 -271
- package/esm2020/lib/voice-recorder/mp3-transcoder.mjs +0 -61
- package/esm2020/lib/voice-recorder/transcoder.service.mjs +0 -121
- package/esm2020/lib/voice-recorder/voice-recorder-wavebar/voice-recorder-wavebar.component.mjs +0 -35
- package/esm2020/lib/voice-recorder/voice-recorder.component.mjs +0 -80
- package/esm2020/lib/voice-recording/voice-recording-wavebar/voice-recording-wavebar.component.mjs +0 -112
- package/esm2020/lib/voice-recording/voice-recording.component.mjs +0 -91
- package/esm2020/public-api.mjs +0 -83
- package/fesm2015/stream-chat-angular.mjs +0 -9152
- package/fesm2015/stream-chat-angular.mjs.map +0 -1
- package/fesm2020/stream-chat-angular.mjs.map +0 -1
- package/lib/channel-query.d.ts +0 -26
- /package/{esm2020 → esm2022}/lib/format-duration.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/injection-tokens.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/is-image-attachment.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/is-on-separate-date.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/is-safari.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/message-input/textarea.interface.mjs +0 -0
- /package/{esm2020 → esm2022}/stream-chat-angular.mjs +0 -0
|
@@ -18,4 +18,4 @@ export const createMessagePreview = (user, text, attachments = [], mentionedUser
|
|
|
18
18
|
...customData,
|
|
19
19
|
};
|
|
20
20
|
};
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1wcmV2aWV3LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcHJldmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUdwQyxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUdsQyxJQUFrQixFQUNsQixJQUFZLEVBQ1osY0FBK0IsRUFBRSxFQUNqQyxpQkFBb0MsRUFBRSxFQUN0QyxXQUErQixTQUFTLEVBQ3hDLGtCQUFzQyxTQUFTLEVBQy9DLFVBQWlELEVBQ2pELEVBQUU7SUFDRixNQUFNLFlBQVksR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxFQUFFLEVBQUUsQ0FBQztJQUU5QyxPQUFPO1FBQ0wsTUFBTSxFQUFFLElBQUk7UUFDWixVQUFVLEVBQUUsSUFBSSxJQUFJLEVBQUU7UUFDdEIsSUFBSSxFQUFFLElBQUk7UUFDVixFQUFFLEVBQUUsWUFBWTtRQUNoQixTQUFTLEVBQUUsRUFBRTtRQUNiLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLElBQUk7UUFDSixJQUFJLEVBQUUsU0FBUztRQUNmLElBQUk7UUFDSixXQUFXO1FBQ1gsZUFBZSxFQUFFLGNBQWM7UUFDL0IsU0FBUyxFQUFFLFFBQVE7UUFDbkIsaUJBQWlCLEVBQUUsZUFBZTtRQUNsQyxHQUFHLFVBQVU7S0FDbUIsQ0FBQztBQUNyQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRhY2htZW50LCBNZXNzYWdlUmVzcG9uc2UsIFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IHY0IGFzIHV1aWR2NCB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgY3JlYXRlTWVzc2FnZVByZXZpZXcgPSA8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyxcbj4oXG4gIHVzZXI6IFVzZXJSZXNwb25zZSxcbiAgdGV4dDogc3RyaW5nLFxuICBhdHRhY2htZW50czogQXR0YWNobWVudDxUPltdID0gW10sXG4gIG1lbnRpb25lZFVzZXJzOiBVc2VyUmVzcG9uc2U8VD5bXSA9IFtdLFxuICBwYXJlbnRJZDogdW5kZWZpbmVkIHwgc3RyaW5nID0gdW5kZWZpbmVkLFxuICBxdW90ZWRNZXNzYWdlSWQ6IHVuZGVmaW5lZCB8IHN0cmluZyA9IHVuZGVmaW5lZCxcbiAgY3VzdG9tRGF0YTogdW5kZWZpbmVkIHwgUGFydGlhbDxUWydtZXNzYWdlVHlwZSddPixcbikgPT4ge1xuICBjb25zdCBjbGllbnRTaWRlSWQgPSBgJHt1c2VyLmlkfS0ke3V1aWR2NCgpfWA7XG5cbiAgcmV0dXJuIHtcbiAgICBfX2h0bWw6IHRleHQsXG4gICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKSxcbiAgICBodG1sOiB0ZXh0LFxuICAgIGlkOiBjbGllbnRTaWRlSWQsXG4gICAgcmVhY3Rpb25zOiBbXSxcbiAgICBzdGF0dXM6ICdzZW5kaW5nJyxcbiAgICB0ZXh0LFxuICAgIHR5cGU6ICdyZWd1bGFyJyxcbiAgICB1c2VyLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIG1lbnRpb25lZF91c2VyczogbWVudGlvbmVkVXNlcnMsXG4gICAgcGFyZW50X2lkOiBwYXJlbnRJZCxcbiAgICBxdW90ZWRfbWVzc2FnZV9pZDogcXVvdGVkTWVzc2FnZUlkLFxuICAgIC4uLmN1c3RvbURhdGEsXG4gIH0gYXMgdW5rbm93biBhcyBNZXNzYWdlUmVzcG9uc2U8VD47XG59O1xuIl19
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { Component, Input, ViewChild, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../message-reactions.service";
|
|
4
|
+
import * as i2 from "../custom-templates.service";
|
|
5
|
+
import * as i3 from "@angular/common";
|
|
6
|
+
import * as i4 from "../modal/modal.component";
|
|
7
|
+
import * as i5 from "../user-list/user-list.component";
|
|
8
|
+
/**
|
|
9
|
+
* The `MessageReactions` component displays the reactions of a message. You can read more about [message reactions](/chat/docs/javascript/send_reaction/) in the platform documentation.
|
|
10
|
+
*/
|
|
11
|
+
export class MessageReactionsComponent {
|
|
12
|
+
constructor(cdRef, messageReactionsService, customTemplatesService) {
|
|
13
|
+
this.cdRef = cdRef;
|
|
14
|
+
this.messageReactionsService = messageReactionsService;
|
|
15
|
+
this.customTemplatesService = customTemplatesService;
|
|
16
|
+
/**
|
|
17
|
+
* The number of reactions grouped by [reaction types](https://github.com/GetStream/stream-chat-angular/tree/master/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts)
|
|
18
|
+
*/
|
|
19
|
+
this.messageReactionGroups = undefined;
|
|
20
|
+
/**
|
|
21
|
+
* The number of reactions grouped by [reaction types](https://github.com/GetStream/stream-chat-angular/tree/master/projects/stream-chat-angular/src/lib/message-reactions/message-reactions.component.ts)
|
|
22
|
+
* @deprecated use `messageReactionGroups`
|
|
23
|
+
*/
|
|
24
|
+
this.messageReactionCounts = {};
|
|
25
|
+
/**
|
|
26
|
+
* List of reactions of a [message](/chat/docs/sdk/angular/types/stream-message/), used to display the users of a reaction type.
|
|
27
|
+
* @deprecated you can fetch the reactions using [`messageReactionsService.queryReactions()`](/chat/docs/sdk/angular/services/MessageReactionsService/#queryreactions)
|
|
28
|
+
*/
|
|
29
|
+
this.latestReactions = [];
|
|
30
|
+
/**
|
|
31
|
+
* List of the user's own reactions of a [message](/chat/docs/sdk/angular/types/stream-message/), used to display the users of a reaction type.
|
|
32
|
+
*/
|
|
33
|
+
this.ownReactions = [];
|
|
34
|
+
this.isLoading = true;
|
|
35
|
+
this.reactions = [];
|
|
36
|
+
this.shouldHandleReactionClick = true;
|
|
37
|
+
this.existingReactions = [];
|
|
38
|
+
this.reactionOptions = [];
|
|
39
|
+
this.usersByReactions = {};
|
|
40
|
+
this.subscriptions = [];
|
|
41
|
+
this.isViewInited = false;
|
|
42
|
+
this.isOpenChange = (isOpen) => {
|
|
43
|
+
this.selectedReactionType = isOpen ? this.selectedReactionType : undefined;
|
|
44
|
+
if (!isOpen) {
|
|
45
|
+
this.usersByReactions = {};
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
ngOnChanges(changes) {
|
|
50
|
+
if (changes.messageReactionCounts || changes.messageReactionGroups) {
|
|
51
|
+
if (this.messageReactionCounts && !this.messageReactionGroups) {
|
|
52
|
+
this.messageReactionGroups = {};
|
|
53
|
+
Object.keys(this.messageReactionCounts).forEach((k) => {
|
|
54
|
+
this.messageReactionGroups[k] = {
|
|
55
|
+
count: this.messageReactionCounts?.[k] ?? 0,
|
|
56
|
+
sum_scores: this.messageReactionCounts?.[k] ?? 0,
|
|
57
|
+
first_reaction_at: undefined,
|
|
58
|
+
last_reaction_at: undefined,
|
|
59
|
+
};
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
this.setExistingReactions();
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
ngOnInit() {
|
|
66
|
+
this.subscriptions.push(this.messageReactionsService.reactions$.subscribe((reactions) => {
|
|
67
|
+
this.reactionOptions = Object.keys(reactions);
|
|
68
|
+
this.setExistingReactions();
|
|
69
|
+
if (this.isViewInited) {
|
|
70
|
+
this.cdRef.detectChanges();
|
|
71
|
+
}
|
|
72
|
+
}));
|
|
73
|
+
}
|
|
74
|
+
ngAfterViewInit() {
|
|
75
|
+
this.isViewInited = true;
|
|
76
|
+
}
|
|
77
|
+
ngOnDestroy() {
|
|
78
|
+
this.subscriptions.forEach((s) => s.unsubscribe());
|
|
79
|
+
}
|
|
80
|
+
getEmojiByReaction(reactionType) {
|
|
81
|
+
return this.messageReactionsService.reactions[reactionType];
|
|
82
|
+
}
|
|
83
|
+
async reactionSelected(reactionType) {
|
|
84
|
+
if (!this.messageId) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
if (this.messageReactionsService.customReactionClickHandler) {
|
|
88
|
+
this.messageReactionsService.customReactionClickHandler({
|
|
89
|
+
messageId: this.messageId,
|
|
90
|
+
reactionType: reactionType,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
this.selectedReactionType = reactionType;
|
|
95
|
+
if (!this.usersByReactions[this.selectedReactionType]) {
|
|
96
|
+
this.usersByReactions[this.selectedReactionType] = {
|
|
97
|
+
users: [],
|
|
98
|
+
};
|
|
99
|
+
await this.loadNextPageOfReactions();
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
async loadNextPageOfReactions() {
|
|
104
|
+
if (!this.messageId || !this.selectedReactionType) {
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
this.isLoading = true;
|
|
108
|
+
try {
|
|
109
|
+
const response = await this.messageReactionsService.queryReactions(this.messageId, this.selectedReactionType, this.usersByReactions[this.selectedReactionType].next);
|
|
110
|
+
this.usersByReactions[this.selectedReactionType].users = [
|
|
111
|
+
...this.usersByReactions[this.selectedReactionType].users,
|
|
112
|
+
...response.reactions
|
|
113
|
+
.map((r) => r.user)
|
|
114
|
+
.filter((u) => !!u),
|
|
115
|
+
];
|
|
116
|
+
this.usersByReactions[this.selectedReactionType].next = response.next;
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
this.selectedReactionType = undefined;
|
|
120
|
+
}
|
|
121
|
+
finally {
|
|
122
|
+
this.isLoading = false;
|
|
123
|
+
}
|
|
124
|
+
if (this.isViewInited) {
|
|
125
|
+
this.cdRef.detectChanges();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
isOwnReaction(reactionType) {
|
|
129
|
+
return !!this.ownReactions.find((r) => r.type === reactionType);
|
|
130
|
+
}
|
|
131
|
+
setExistingReactions() {
|
|
132
|
+
this.existingReactions = Object.keys(this.messageReactionGroups ?? {})
|
|
133
|
+
.filter((k) => this.reactionOptions.indexOf(k) !== -1)
|
|
134
|
+
.filter((k) => this.messageReactionGroups[k].count > 0)
|
|
135
|
+
.sort((r1, r2) => {
|
|
136
|
+
const date1 = this.messageReactionGroups[r1].first_reaction_at
|
|
137
|
+
? new Date(this.messageReactionGroups[r1].first_reaction_at)
|
|
138
|
+
: new Date();
|
|
139
|
+
const date2 = this.messageReactionGroups[r2].first_reaction_at
|
|
140
|
+
? new Date(this.messageReactionGroups[r2].first_reaction_at)
|
|
141
|
+
: new Date();
|
|
142
|
+
return date1.getTime() - date2.getTime();
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageReactionsComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.MessageReactionsService }, { token: i2.CustomTemplatesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
146
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: MessageReactionsComponent, selector: "stream-message-reactions", inputs: { messageId: "messageId", messageReactionGroups: "messageReactionGroups", messageReactionCounts: "messageReactionCounts", latestReactions: "latestReactions", ownReactions: "ownReactions" }, viewQueries: [{ propertyName: "selectorContainer", first: true, predicate: ["selectorContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "@if (existingReactions.length > 0) {\n <div\n data-testid=\"reaction-list\"\n class=\"str-chat__reaction-list str-chat__message-reactions-container\"\n [class.str-chat__reaction-list--reverse]=\"true\"\n >\n <ul class=\"str-chat__message-reactions\">\n @for (reactionType of existingReactions; track reactionType) {\n <li\n class=\"str-chat__message-reaction\"\n data-testclass=\"emoji\"\n [class.str-chat__message-reaction-own]=\"isOwnReaction(reactionType)\"\n (click)=\"reactionSelected(reactionType)\"\n (keyup.enter)=\"reactionSelected(reactionType)\"\n >\n <span class=\"emoji str-chat__message-reaction-emoji\">\n {{ getEmojiByReaction(reactionType) }} \n </span>\n <span\n data-testclass=\"reaction-list-reaction-count\"\n class=\"str-chat__message-reaction-count\"\n >\n {{ messageReactionGroups?.[reactionType]?.count ?? 0 }}\n </span>\n </li>\n }\n </ul>\n </div>\n}\n\n@if (selectedReactionType) {\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: {\n isOpen: !!selectedReactionType,\n messageId: messageId,\n reactionType: selectedReactionType,\n isOpenChangeHandler: isOpenChange,\n content: modalContent,\n }\n \"\n />\n}\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-messageId=\"messageId\"\n let-reactionType=\"reactionType\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__message-reactions-details-modal\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n />\n</ng-template>\n\n<ng-template #modalContent>\n <div class=\"str-chat__message-reactions-details\">\n <div class=\"str-chat__message-reactions-details-reaction-types\">\n @for (reactionType of existingReactions; track reactionType) {\n <div\n class=\"str-chat__message-reactions-details-reaction-type\"\n attr.data-testid=\"reaction-details-selector-{{ reactionType }}\"\n [class.str-chat__message-reactions-details-reaction-type--selected]=\"\n reactionType === selectedReactionType\n \"\n (click)=\"reactionSelected(reactionType)\"\n (keyup.enter)=\"reactionSelected(reactionType)\"\n >\n <span class=\"emoji str-chat__message-reaction-emoji\">\n {{ getEmojiByReaction(reactionType) }} \n </span>\n <span class=\"str-chat__message-reaction-count\">\n {{ messageReactionGroups?.[reactionType]?.count ?? 0 }}\n </span>\n </div>\n }\n </div>\n <div\n class=\"emoji str-chat__message-reaction-emoji str-chat__message-reaction-emoji-big\"\n >\n {{ getEmojiByReaction(selectedReactionType!) }}\n </div>\n <div\n data-testid=\"all-reacting-users\"\n class=\"str-chat__message-reactions-details-reacting-users\"\n >\n @for (reactionType of existingReactions; track reactionType) {\n <stream-user-list\n attr.data-testid=\"{{ reactionType }}-user-list\"\n [style.display]=\"\n selectedReactionType === reactionType ? 'block' : 'none'\n \"\n [users]=\"usersByReactions[reactionType]?.users || []\"\n [isLoading]=\"isLoading\"\n [hasMore]=\"!!usersByReactions[reactionType]?.next || false\"\n (loadMore)=\"loadNextPageOfReactions()\"\n />\n }\n </div>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i4.ModalComponent, selector: "stream-modal", inputs: ["isOpen", "content"], outputs: ["isOpenChange"] }, { kind: "component", type: i5.UserListComponent, selector: "stream-user-list", inputs: ["users", "isLoading", "hasMore"], outputs: ["loadMore"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
147
|
+
}
|
|
148
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageReactionsComponent, decorators: [{
|
|
149
|
+
type: Component,
|
|
150
|
+
args: [{ selector: 'stream-message-reactions', template: "@if (existingReactions.length > 0) {\n <div\n data-testid=\"reaction-list\"\n class=\"str-chat__reaction-list str-chat__message-reactions-container\"\n [class.str-chat__reaction-list--reverse]=\"true\"\n >\n <ul class=\"str-chat__message-reactions\">\n @for (reactionType of existingReactions; track reactionType) {\n <li\n class=\"str-chat__message-reaction\"\n data-testclass=\"emoji\"\n [class.str-chat__message-reaction-own]=\"isOwnReaction(reactionType)\"\n (click)=\"reactionSelected(reactionType)\"\n (keyup.enter)=\"reactionSelected(reactionType)\"\n >\n <span class=\"emoji str-chat__message-reaction-emoji\">\n {{ getEmojiByReaction(reactionType) }} \n </span>\n <span\n data-testclass=\"reaction-list-reaction-count\"\n class=\"str-chat__message-reaction-count\"\n >\n {{ messageReactionGroups?.[reactionType]?.count ?? 0 }}\n </span>\n </li>\n }\n </ul>\n </div>\n}\n\n@if (selectedReactionType) {\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.modalTemplate$ | async) || defaultModal;\n context: {\n isOpen: !!selectedReactionType,\n messageId: messageId,\n reactionType: selectedReactionType,\n isOpenChangeHandler: isOpenChange,\n content: modalContent,\n }\n \"\n />\n}\n\n<ng-template\n #defaultModal\n let-isOpen=\"isOpen\"\n let-messageId=\"messageId\"\n let-reactionType=\"reactionType\"\n let-isOpenChangeHandler=\"isOpenChangeHandler\"\n let-content=\"content\"\n>\n <stream-modal\n class=\"str-chat__message-reactions-details-modal\"\n [isOpen]=\"isOpen\"\n [content]=\"content\"\n (isOpenChange)=\"isOpenChangeHandler($event)\"\n />\n</ng-template>\n\n<ng-template #modalContent>\n <div class=\"str-chat__message-reactions-details\">\n <div class=\"str-chat__message-reactions-details-reaction-types\">\n @for (reactionType of existingReactions; track reactionType) {\n <div\n class=\"str-chat__message-reactions-details-reaction-type\"\n attr.data-testid=\"reaction-details-selector-{{ reactionType }}\"\n [class.str-chat__message-reactions-details-reaction-type--selected]=\"\n reactionType === selectedReactionType\n \"\n (click)=\"reactionSelected(reactionType)\"\n (keyup.enter)=\"reactionSelected(reactionType)\"\n >\n <span class=\"emoji str-chat__message-reaction-emoji\">\n {{ getEmojiByReaction(reactionType) }} \n </span>\n <span class=\"str-chat__message-reaction-count\">\n {{ messageReactionGroups?.[reactionType]?.count ?? 0 }}\n </span>\n </div>\n }\n </div>\n <div\n class=\"emoji str-chat__message-reaction-emoji str-chat__message-reaction-emoji-big\"\n >\n {{ getEmojiByReaction(selectedReactionType!) }}\n </div>\n <div\n data-testid=\"all-reacting-users\"\n class=\"str-chat__message-reactions-details-reacting-users\"\n >\n @for (reactionType of existingReactions; track reactionType) {\n <stream-user-list\n attr.data-testid=\"{{ reactionType }}-user-list\"\n [style.display]=\"\n selectedReactionType === reactionType ? 'block' : 'none'\n \"\n [users]=\"usersByReactions[reactionType]?.users || []\"\n [isLoading]=\"isLoading\"\n [hasMore]=\"!!usersByReactions[reactionType]?.next || false\"\n (loadMore)=\"loadNextPageOfReactions()\"\n />\n }\n </div>\n </div>\n</ng-template>\n" }]
|
|
151
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.MessageReactionsService }, { type: i2.CustomTemplatesService }], propDecorators: { messageId: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], messageReactionGroups: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], messageReactionCounts: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}], latestReactions: [{
|
|
158
|
+
type: Input
|
|
159
|
+
}], ownReactions: [{
|
|
160
|
+
type: Input
|
|
161
|
+
}], selectorContainer: [{
|
|
162
|
+
type: ViewChild,
|
|
163
|
+
args: ['selectorContainer']
|
|
164
|
+
}] } });
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcmVhY3Rpb25zL21lc3NhZ2UtcmVhY3Rpb25zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXJlYWN0aW9ucy9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUVULEtBQUssRUFLTCxTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7Ozs7Ozs7QUFXdkI7O0dBRUc7QUFLSCxNQUFNLE9BQU8seUJBQXlCO0lBMkNwQyxZQUNVLEtBQXdCLEVBQ3hCLHVCQUFnRCxFQUNqRCxzQkFBOEM7UUFGN0MsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtRQUNqRCwyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBdkN2RDs7V0FFRztRQUNNLDBCQUFxQixHQUVkLFNBQVMsQ0FBQztRQUMxQjs7O1dBR0c7UUFDTSwwQkFBcUIsR0FDNUIsRUFBRSxDQUFDO1FBQ0w7OztXQUdHO1FBQ00sb0JBQWUsR0FBa0QsRUFBRSxDQUFDO1FBQzdFOztXQUVHO1FBQ00saUJBQVksR0FBa0QsRUFBRSxDQUFDO1FBSzFFLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsY0FBUyxHQUF1QixFQUFFLENBQUM7UUFDbkMsOEJBQXlCLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUNqQyxvQkFBZSxHQUFhLEVBQUUsQ0FBQztRQUMvQixxQkFBZ0IsR0FFWixFQUFFLENBQUM7UUFDQyxrQkFBYSxHQUFtQixFQUFFLENBQUM7UUFD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QUFDLElBQUksSUFBSSxFQUFFLENBQUM7WUFFZixPQUFPLEtBQUssQ0FBQyxPQUFPLEVBQUUsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzhHQXBLVSx5QkFBeUI7a0dBQXpCLHlCQUF5QixtWkM3QnRDLG9vSEEyR0E7OzJGRDlFYSx5QkFBeUI7a0JBSnJDLFNBQVM7K0JBQ0UsMEJBQTBCO2lLQVMzQixTQUFTO3NCQUFqQixLQUFLO2dCQUlHLHFCQUFxQjtzQkFBN0IsS0FBSztnQkFPRyxxQkFBcUI7c0JBQTdCLEtBQUs7Z0JBTUcsZUFBZTtzQkFBdkIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNrQyxpQkFBaUI7c0JBQXhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBSZWFjdGlvbkdyb3VwUmVzcG9uc2UsXG4gIFJlYWN0aW9uUmVzcG9uc2UsXG4gIFVzZXJSZXNwb25zZSxcbn0gZnJvbSAnc3RyZWFtLWNoYXQnO1xuaW1wb3J0IHsgTWVzc2FnZVJlYWN0aW9uVHlwZSwgRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vbWVzc2FnZS1yZWFjdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlIH0gZnJvbSAnLi4vY3VzdG9tLXRlbXBsYXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIFRoZSBgTWVzc2FnZVJlYWN0aW9uc2AgY29tcG9uZW50IGRpc3BsYXlzIHRoZSByZWFjdGlvbnMgb2YgYSBtZXNzYWdlLiBZb3UgY2FuIHJlYWQgbW9yZSBhYm91dCBbbWVzc2FnZSByZWFjdGlvbnNdKC9jaGF0L2RvY3MvamF2YXNjcmlwdC9zZW5kX3JlYWN0aW9uLykgaW4gdGhlIHBsYXRmb3JtIGRvY3VtZW50YXRpb24uXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlLXJlYWN0aW9ucycsXG4gIHRlbXBsYXRlVXJsOiAnLi9tZXNzYWdlLXJlYWN0aW9ucy5jb21wb25lbnQuaHRtbCcsXG59KVxuZXhwb3J0IGNsYXNzIE1lc3NhZ2VSZWFjdGlvbnNDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95XG57XG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIG1lc3NhZ2UgdGhlIHJlYWN0aW9ucyBiZWxvbmcgdG9cbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByZWFjdGlvbnMgZ3JvdXBlZCBieSBbcmVhY3Rpb24gdHlwZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtYW5ndWxhci90cmVlL21hc3Rlci9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1yZWFjdGlvbnMvbWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50LnRzKVxuICAgKi9cbiAgQElucHV0KCkgbWVzc2FnZVJlYWN0aW9uR3JvdXBzOlxuICAgIHwgeyBba2V5OiBzdHJpbmddOiBSZWFjdGlvbkdyb3VwUmVzcG9uc2UgfVxuICAgIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByZWFjdGlvbnMgZ3JvdXBlZCBieSBbcmVhY3Rpb24gdHlwZXNdKGh0dHBzOi8vZ2l0aHViLmNvbS9HZXRTdHJlYW0vc3RyZWFtLWNoYXQtYW5ndWxhci90cmVlL21hc3Rlci9wcm9qZWN0cy9zdHJlYW0tY2hhdC1hbmd1bGFyL3NyYy9saWIvbWVzc2FnZS1yZWFjdGlvbnMvbWVzc2FnZS1yZWFjdGlvbnMuY29tcG9uZW50LnRzKVxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYG1lc3NhZ2VSZWFjdGlvbkdyb3Vwc2BcbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2VSZWFjdGlvbkNvdW50czogeyBba2V5IGluIE1lc3NhZ2VSZWFjdGlvblR5cGVdPzogbnVtYmVyIH0gPVxuICAgIHt9O1xuICAvKipcbiAgICogTGlzdCBvZiByZWFjdGlvbnMgb2YgYSBbbWVzc2FnZV0oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci90eXBlcy9zdHJlYW0tbWVzc2FnZS8pLCB1c2VkIHRvIGRpc3BsYXkgdGhlIHVzZXJzIG9mIGEgcmVhY3Rpb24gdHlwZS5cbiAgICogQGRlcHJlY2F0ZWQgeW91IGNhbiBmZXRjaCB0aGUgcmVhY3Rpb25zIHVzaW5nIFtgbWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UucXVlcnlSZWFjdGlvbnMoKWBdKC9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvc2VydmljZXMvTWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UvI3F1ZXJ5cmVhY3Rpb25zKVxuICAgKi9cbiAgQElucHV0KCkgbGF0ZXN0UmVhY3Rpb25zOiBSZWFjdGlvblJlc3BvbnNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+W10gPSBbXTtcbiAgLyoqXG4gICAqIExpc3Qgb2YgdGhlIHVzZXIncyBvd24gcmVhY3Rpb25zIG9mIGEgW21lc3NhZ2VdKC9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvdHlwZXMvc3RyZWFtLW1lc3NhZ2UvKSwgdXNlZCB0byBkaXNwbGF5IHRoZSB1c2VycyBvZiBhIHJlYWN0aW9uIHR5cGUuXG4gICAqL1xuICBASW5wdXQoKSBvd25SZWFjdGlvbnM6IFJlYWN0aW9uUmVzcG9uc2U8RGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcz5bXSA9IFtdO1xuICBAVmlld0NoaWxkKCdzZWxlY3RvckNvbnRhaW5lcicpIHByaXZhdGUgc2VsZWN0b3JDb250YWluZXI6XG4gICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuICBzZWxlY3RlZFJlYWN0aW9uVHlwZTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICBpc0xvYWRpbmcgPSB0cnVlO1xuICByZWFjdGlvbnM6IFJlYWN0aW9uUmVzcG9uc2VbXSA9IFtdO1xuICBzaG91bGRIYW5kbGVSZWFjdGlvbkNsaWNrID0gdHJ1ZTtcbiAgZXhpc3RpbmdSZWFjdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIHJlYWN0aW9uT3B0aW9uczogc3RyaW5nW10gPSBbXTtcbiAgdXNlcnNCeVJlYWN0aW9uczoge1xuICAgIFtrZXk6IHN0cmluZ106IHsgdXNlcnM6IFVzZXJSZXNwb25zZVtdOyBuZXh0Pzogc3RyaW5nIH07XG4gIH0gPSB7fTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIGlzVmlld0luaXRlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgbWVzc2FnZVJlYWN0aW9uc1NlcnZpY2U6IE1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlLFxuICAgIHB1YmxpYyBjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlOiBDdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLFxuICApIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLm1lc3NhZ2VSZWFjdGlvbkNvdW50cyB8fCBjaGFuZ2VzLm1lc3NhZ2VSZWFjdGlvbkdyb3Vwcykge1xuICAgICAgaWYgKHRoaXMubWVzc2FnZVJlYWN0aW9uQ291bnRzICYmICF0aGlzLm1lc3NhZ2VSZWFjdGlvbkdyb3Vwcykge1xuICAgICAgICB0aGlzLm1lc3NhZ2VSZWFjdGlvbkdyb3VwcyA9IHt9O1xuICAgICAgICBPYmplY3Qua2V5cyh0aGlzLm1lc3NhZ2VSZWFjdGlvbkNvdW50cykuZm9yRWFjaCgoaykgPT4ge1xuICAgICAgICAgIHRoaXMubWVzc2FnZVJlYWN0aW9uR3JvdXBzIVtrXSA9IHtcbiAgICAgICAgICAgIGNvdW50OiB0aGlzLm1lc3NhZ2VSZWFjdGlvbkNvdW50cz8uW2tdID8/IDAsXG4gICAgICAgICAgICBzdW1fc2NvcmVzOiB0aGlzLm1lc3NhZ2VSZWFjdGlvbkNvdW50cz8uW2tdID8/IDAsXG4gICAgICAgICAgICBmaXJzdF9yZWFjdGlvbl9hdDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgbGFzdF9yZWFjdGlvbl9hdDogdW5kZWZpbmVkLFxuICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRFeGlzdGluZ1JlYWN0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKFxuICAgICAgdGhpcy5tZXNzYWdlUmVhY3Rpb25zU2VydmljZS5yZWFjdGlvbnMkLnN1YnNjcmliZSgocmVhY3Rpb25zKSA9PiB7XG4gICAgICAgIHRoaXMucmVhY3Rpb25PcHRpb25zID0gT2JqZWN0LmtleXMocmVhY3Rpb25zKTtcbiAgICAgICAgdGhpcy5zZXRFeGlzdGluZ1JlYWN0aW9ucygpO1xuICAgICAgICBpZiAodGhpcy5pc1ZpZXdJbml0ZWQpIHtcbiAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmlzVmlld0luaXRlZCA9IHRydWU7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuZm9yRWFjaCgocykgPT4gcy51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGdldEVtb2ppQnlSZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gdGhpcy5tZXNzYWdlUmVhY3Rpb25zU2VydmljZS5yZWFjdGlvbnNbcmVhY3Rpb25UeXBlXTtcbiAgfVxuXG4gIGFzeW5jIHJlYWN0aW9uU2VsZWN0ZWQocmVhY3Rpb25UeXBlOiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMubWVzc2FnZUlkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLm1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlLmN1c3RvbVJlYWN0aW9uQ2xpY2tIYW5kbGVyKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlLmN1c3RvbVJlYWN0aW9uQ2xpY2tIYW5kbGVyKHtcbiAgICAgICAgbWVzc2FnZUlkOiB0aGlzLm1lc3NhZ2VJZCxcbiAgICAgICAgcmVhY3Rpb25UeXBlOiByZWFjdGlvblR5cGUsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZFJlYWN0aW9uVHlwZSA9IHJlYWN0aW9uVHlwZTtcbiAgICAgIGlmICghdGhpcy51c2Vyc0J5UmVhY3Rpb25zW3RoaXMuc2VsZWN0ZWRSZWFjdGlvblR5cGVdKSB7XG4gICAgICAgIHRoaXMudXNlcnNCeVJlYWN0aW9uc1t0aGlzLnNlbGVjdGVkUmVhY3Rpb25UeXBlXSA9IHtcbiAgICAgICAgICB1c2VyczogW10sXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IHRoaXMubG9hZE5leHRQYWdlT2ZSZWFjdGlvbnMoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBsb2FkTmV4dFBhZ2VPZlJlYWN0aW9ucygpIHtcbiAgICBpZiAoIXRoaXMubWVzc2FnZUlkIHx8ICF0aGlzLnNlbGVjdGVkUmVhY3Rpb25UeXBlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMubWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UucXVlcnlSZWFjdGlvbnMoXG4gICAgICAgIHRoaXMubWVzc2FnZUlkLFxuICAgICAgICB0aGlzLnNlbGVjdGVkUmVhY3Rpb25UeXBlLFxuICAgICAgICB0aGlzLnVzZXJzQnlSZWFjdGlvbnNbdGhpcy5zZWxlY3RlZFJlYWN0aW9uVHlwZV0ubmV4dCxcbiAgICAgICk7XG4gICAgICB0aGlzLnVzZXJzQnlSZWFjdGlvbnNbdGhpcy5zZWxlY3RlZFJlYWN0aW9uVHlwZV0udXNlcnMgPSBbXG4gICAgICAgIC4uLnRoaXMudXNlcnNCeVJlYWN0aW9uc1t0aGlzLnNlbGVjdGVkUmVhY3Rpb25UeXBlXS51c2VycyxcbiAgICAgICAgLi4uKHJlc3BvbnNlLnJlYWN0aW9uc1xuICAgICAgICAgIC5tYXAoKHIpID0+IHIudXNlcilcbiAgICAgICAgICAuZmlsdGVyKCh1KSA9PiAhIXUpIGFzIFVzZXJSZXNwb25zZVtdKSxcbiAgICAgIF07XG4gICAgICB0aGlzLnVzZXJzQnlSZWFjdGlvbnNbdGhpcy5zZWxlY3RlZFJlYWN0aW9uVHlwZV0ubmV4dCA9IHJlc3BvbnNlLm5leHQ7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRSZWFjdGlvblR5cGUgPSB1bmRlZmluZWQ7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgaXNPd25SZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gISF0aGlzLm93blJlYWN0aW9ucy5maW5kKChyKSA9PiByLnR5cGUgPT09IHJlYWN0aW9uVHlwZSk7XG4gIH1cblxuICBpc09wZW5DaGFuZ2UgPSAoaXNPcGVuOiBib29sZWFuKSA9PiB7XG4gICAgdGhpcy5zZWxlY3RlZFJlYWN0aW9uVHlwZSA9IGlzT3BlbiA/IHRoaXMuc2VsZWN0ZWRSZWFjdGlvblR5cGUgOiB1bmRlZmluZWQ7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIHRoaXMudXNlcnNCeVJlYWN0aW9ucyA9IHt9O1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHNldEV4aXN0aW5nUmVhY3Rpb25zKCkge1xuICAgIHRoaXMuZXhpc3RpbmdSZWFjdGlvbnMgPSBPYmplY3Qua2V5cyh0aGlzLm1lc3NhZ2VSZWFjdGlvbkdyb3VwcyA/PyB7fSlcbiAgICAgIC5maWx0ZXIoKGspID0+IHRoaXMucmVhY3Rpb25PcHRpb25zLmluZGV4T2YoaykgIT09IC0xKVxuICAgICAgLmZpbHRlcigoaykgPT4gdGhpcy5tZXNzYWdlUmVhY3Rpb25Hcm91cHMhW2tdLmNvdW50ID4gMClcbiAgICAgIC5zb3J0KChyMSwgcjIpID0+IHtcbiAgICAgICAgY29uc3QgZGF0ZTEgPSB0aGlzLm1lc3NhZ2VSZWFjdGlvbkdyb3VwcyFbcjFdLmZpcnN0X3JlYWN0aW9uX2F0XG4gICAgICAgICAgPyBuZXcgRGF0ZSh0aGlzLm1lc3NhZ2VSZWFjdGlvbkdyb3VwcyFbcjFdLmZpcnN0X3JlYWN0aW9uX2F0ISlcbiAgICAgICAgICA6IG5ldyBEYXRlKCk7XG4gICAgICAgIGNvbnN0IGRhdGUyID0gdGhpcy5tZXNzYWdlUmVhY3Rpb25Hcm91cHMhW3IyXS5maXJzdF9yZWFjdGlvbl9hdFxuICAgICAgICAgID8gbmV3IERhdGUodGhpcy5tZXNzYWdlUmVhY3Rpb25Hcm91cHMhW3IyXS5maXJzdF9yZWFjdGlvbl9hdCEpXG4gICAgICAgICAgOiBuZXcgRGF0ZSgpO1xuXG4gICAgICAgIHJldHVybiBkYXRlMS5nZXRUaW1lKCkgLSBkYXRlMi5nZXRUaW1lKCk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiQGlmIChleGlzdGluZ1JlYWN0aW9ucy5sZW5ndGggPiAwKSB7XG4gIDxkaXZcbiAgICBkYXRhLXRlc3RpZD1cInJlYWN0aW9uLWxpc3RcIlxuICAgIGNsYXNzPVwic3RyLWNoYXRfX3JlYWN0aW9uLWxpc3Qgc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWNvbnRhaW5lclwiXG4gICAgW2NsYXNzLnN0ci1jaGF0X19yZWFjdGlvbi1saXN0LS1yZXZlcnNlXT1cInRydWVcIlxuICA+XG4gICAgPHVsIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zXCI+XG4gICAgICBAZm9yIChyZWFjdGlvblR5cGUgb2YgZXhpc3RpbmdSZWFjdGlvbnM7IHRyYWNrIHJlYWN0aW9uVHlwZSkge1xuICAgICAgICA8bGlcbiAgICAgICAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9uXCJcbiAgICAgICAgICBkYXRhLXRlc3RjbGFzcz1cImVtb2ppXCJcbiAgICAgICAgICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tb3duXT1cImlzT3duUmVhY3Rpb24ocmVhY3Rpb25UeXBlKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInJlYWN0aW9uU2VsZWN0ZWQocmVhY3Rpb25UeXBlKVwiXG4gICAgICAgICAgKGtleXVwLmVudGVyKT1cInJlYWN0aW9uU2VsZWN0ZWQocmVhY3Rpb25UeXBlKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImVtb2ppIHN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9uLWVtb2ppXCI+XG4gICAgICAgICAgICB7eyBnZXRFbW9qaUJ5UmVhY3Rpb24ocmVhY3Rpb25UeXBlKSB9fSZuYnNwO1xuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgZGF0YS10ZXN0Y2xhc3M9XCJyZWFjdGlvbi1saXN0LXJlYWN0aW9uLWNvdW50XCJcbiAgICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tY291bnRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt7IG1lc3NhZ2VSZWFjdGlvbkdyb3Vwcz8uW3JlYWN0aW9uVHlwZV0/LmNvdW50ID8/IDAgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGk+XG4gICAgICB9XG4gICAgPC91bD5cbiAgPC9kaXY+XG59XG5cbkBpZiAoc2VsZWN0ZWRSZWFjdGlvblR5cGUpIHtcbiAgPG5nLWNvbnRhaW5lclxuICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tb2RhbFRlbXBsYXRlJCB8IGFzeW5jKSB8fCBkZWZhdWx0TW9kYWw7XG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIGlzT3BlbjogISFzZWxlY3RlZFJlYWN0aW9uVHlwZSxcbiAgICAgICAgbWVzc2FnZUlkOiBtZXNzYWdlSWQsXG4gICAgICAgIHJlYWN0aW9uVHlwZTogc2VsZWN0ZWRSZWFjdGlvblR5cGUsXG4gICAgICAgIGlzT3BlbkNoYW5nZUhhbmRsZXI6IGlzT3BlbkNoYW5nZSxcbiAgICAgICAgY29udGVudDogbW9kYWxDb250ZW50LFxuICAgICAgfVxuICAgIFwiXG4gIC8+XG59XG5cbjxuZy10ZW1wbGF0ZVxuICAjZGVmYXVsdE1vZGFsXG4gIGxldC1pc09wZW49XCJpc09wZW5cIlxuICBsZXQtbWVzc2FnZUlkPVwibWVzc2FnZUlkXCJcbiAgbGV0LXJlYWN0aW9uVHlwZT1cInJlYWN0aW9uVHlwZVwiXG4gIGxldC1pc09wZW5DaGFuZ2VIYW5kbGVyPVwiaXNPcGVuQ2hhbmdlSGFuZGxlclwiXG4gIGxldC1jb250ZW50PVwiY29udGVudFwiXG4+XG4gIDxzdHJlYW0tbW9kYWxcbiAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1kZXRhaWxzLW1vZGFsXCJcbiAgICBbaXNPcGVuXT1cImlzT3BlblwiXG4gICAgW2NvbnRlbnRdPVwiY29udGVudFwiXG4gICAgKGlzT3BlbkNoYW5nZSk9XCJpc09wZW5DaGFuZ2VIYW5kbGVyKCRldmVudClcIlxuICAvPlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNtb2RhbENvbnRlbnQ+XG4gIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtZGV0YWlsc1wiPlxuICAgIDxkaXYgY2xhc3M9XCJzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtZGV0YWlscy1yZWFjdGlvbi10eXBlc1wiPlxuICAgICAgQGZvciAocmVhY3Rpb25UeXBlIG9mIGV4aXN0aW5nUmVhY3Rpb25zOyB0cmFjayByZWFjdGlvblR5cGUpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWRldGFpbHMtcmVhY3Rpb24tdHlwZVwiXG4gICAgICAgICAgYXR0ci5kYXRhLXRlc3RpZD1cInJlYWN0aW9uLWRldGFpbHMtc2VsZWN0b3Ite3sgcmVhY3Rpb25UeXBlIH19XCJcbiAgICAgICAgICBbY2xhc3Muc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWRldGFpbHMtcmVhY3Rpb24tdHlwZS0tc2VsZWN0ZWRdPVwiXG4gICAgICAgICAgICByZWFjdGlvblR5cGUgPT09IHNlbGVjdGVkUmVhY3Rpb25UeXBlXG4gICAgICAgICAgXCJcbiAgICAgICAgICAoY2xpY2spPVwicmVhY3Rpb25TZWxlY3RlZChyZWFjdGlvblR5cGUpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwicmVhY3Rpb25TZWxlY3RlZChyZWFjdGlvblR5cGUpXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1vamkgc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tZW1vamlcIj5cbiAgICAgICAgICAgIHt7IGdldEVtb2ppQnlSZWFjdGlvbihyZWFjdGlvblR5cGUpIH19Jm5ic3A7XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tY291bnRcIj5cbiAgICAgICAgICAgIHt7IG1lc3NhZ2VSZWFjdGlvbkdyb3Vwcz8uW3JlYWN0aW9uVHlwZV0/LmNvdW50ID8/IDAgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZW1vamkgc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tZW1vamkgc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tZW1vamktYmlnXCJcbiAgICA+XG4gICAgICB7eyBnZXRFbW9qaUJ5UmVhY3Rpb24oc2VsZWN0ZWRSZWFjdGlvblR5cGUhKSB9fVxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGRhdGEtdGVzdGlkPVwiYWxsLXJlYWN0aW5nLXVzZXJzXCJcbiAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLWRldGFpbHMtcmVhY3RpbmctdXNlcnNcIlxuICAgID5cbiAgICAgIEBmb3IgKHJlYWN0aW9uVHlwZSBvZiBleGlzdGluZ1JlYWN0aW9uczsgdHJhY2sgcmVhY3Rpb25UeXBlKSB7XG4gICAgICAgIDxzdHJlYW0tdXNlci1saXN0XG4gICAgICAgICAgYXR0ci5kYXRhLXRlc3RpZD1cInt7IHJlYWN0aW9uVHlwZSB9fS11c2VyLWxpc3RcIlxuICAgICAgICAgIFtzdHlsZS5kaXNwbGF5XT1cIlxuICAgICAgICAgICAgc2VsZWN0ZWRSZWFjdGlvblR5cGUgPT09IHJlYWN0aW9uVHlwZSA/ICdibG9jaycgOiAnbm9uZSdcbiAgICAgICAgICBcIlxuICAgICAgICAgIFt1c2Vyc109XCJ1c2Vyc0J5UmVhY3Rpb25zW3JlYWN0aW9uVHlwZV0/LnVzZXJzIHx8IFtdXCJcbiAgICAgICAgICBbaXNMb2FkaW5nXT1cImlzTG9hZGluZ1wiXG4gICAgICAgICAgW2hhc01vcmVdPVwiISF1c2Vyc0J5UmVhY3Rpb25zW3JlYWN0aW9uVHlwZV0/Lm5leHQgfHwgZmFsc2VcIlxuICAgICAgICAgIChsb2FkTW9yZSk9XCJsb2FkTmV4dFBhZ2VPZlJlYWN0aW9ucygpXCJcbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Component, Input, } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../channel.service";
|
|
4
|
+
import * as i2 from "../message-reactions.service";
|
|
5
|
+
/**
|
|
6
|
+
* The `MessageReactionsSelectorComponent` makes it possible for users to react to a message, the reaction options can be set using the [`MessageReactionsService`](/chat/docs/sdk/angular/services/MessageReactionsService/). You can read more about [message reactions](/chat/docs/javascript/send_reaction/) in the platform documentation.
|
|
7
|
+
*/
|
|
8
|
+
export class MessageReactionsSelectorComponent {
|
|
9
|
+
constructor(channelService, messageReactionsService, cdRef) {
|
|
10
|
+
this.channelService = channelService;
|
|
11
|
+
this.messageReactionsService = messageReactionsService;
|
|
12
|
+
this.cdRef = cdRef;
|
|
13
|
+
/**
|
|
14
|
+
* List of the user's own reactions of a [message](/chat/docs/sdk/angular/types/stream-message/), used to display the users of a reaction type.
|
|
15
|
+
*/
|
|
16
|
+
this.ownReactions = [];
|
|
17
|
+
this.reactionOptions = [];
|
|
18
|
+
this.subscriptions = [];
|
|
19
|
+
this.isViewInited = false;
|
|
20
|
+
}
|
|
21
|
+
ngOnInit() {
|
|
22
|
+
this.subscriptions.push(this.messageReactionsService.reactions$.subscribe((reactions) => {
|
|
23
|
+
this.reactionOptions = Object.keys(reactions);
|
|
24
|
+
if (this.isViewInited) {
|
|
25
|
+
this.cdRef.detectChanges();
|
|
26
|
+
}
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
ngAfterViewInit() {
|
|
30
|
+
this.isViewInited = true;
|
|
31
|
+
}
|
|
32
|
+
ngOnDestroy() {
|
|
33
|
+
this.subscriptions.forEach((s) => s.unsubscribe());
|
|
34
|
+
}
|
|
35
|
+
isOwnReaction(reactionType) {
|
|
36
|
+
return !!this.ownReactions.find((r) => r.type === reactionType);
|
|
37
|
+
}
|
|
38
|
+
getEmojiByReaction(reactionType) {
|
|
39
|
+
return this.messageReactionsService.reactions[reactionType];
|
|
40
|
+
}
|
|
41
|
+
async react(type) {
|
|
42
|
+
this.ownReactions.find((r) => r.type === type)
|
|
43
|
+
? await this.channelService.removeReaction(this.messageId, type)
|
|
44
|
+
: await this.channelService.addReaction(this.messageId, type);
|
|
45
|
+
}
|
|
46
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageReactionsSelectorComponent, deps: [{ token: i1.ChannelService }, { token: i2.MessageReactionsService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: MessageReactionsSelectorComponent, selector: "stream-message-reactions-selector", inputs: { ownReactions: "ownReactions", messageId: "messageId" }, ngImport: i0, template: "<div\n #selectorContainer\n data-testid=\"reaction-selector\"\n class=\"str-chat__reaction-selector str-chat-angular-v5__reaction-selector str-chat__message-reaction-selector\"\n>\n <ul\n class=\"str-chat__message-reactions-list str-chat__message-reactions-options\"\n >\n @for (reactionType of reactionOptions; track reactionType) {\n <li\n class=\"str-chat__message-reactions-option str-chat__message-reactions-list-item str-chat__emoji\"\n data-testclass=\"emoji-option\"\n [attr.data-testid]=\"reactionType\"\n [class.str-chat__message-reactions-option-selected]=\"\n isOwnReaction(reactionType)\n \"\n (click)=\"react(reactionType)\"\n (keyup.enter)=\"react(reactionType)\"\n >\n <span\n class=\"emoji str-chat__emoji-selector-emoji-angular str-chat__message-reaction-emoji\"\n >\n {{ getEmojiByReaction(reactionType) }}\n </span>\n </li>\n }\n </ul>\n</div>\n" }); }
|
|
48
|
+
}
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageReactionsSelectorComponent, decorators: [{
|
|
50
|
+
type: Component,
|
|
51
|
+
args: [{ selector: 'stream-message-reactions-selector', template: "<div\n #selectorContainer\n data-testid=\"reaction-selector\"\n class=\"str-chat__reaction-selector str-chat-angular-v5__reaction-selector str-chat__message-reaction-selector\"\n>\n <ul\n class=\"str-chat__message-reactions-list str-chat__message-reactions-options\"\n >\n @for (reactionType of reactionOptions; track reactionType) {\n <li\n class=\"str-chat__message-reactions-option str-chat__message-reactions-list-item str-chat__emoji\"\n data-testclass=\"emoji-option\"\n [attr.data-testid]=\"reactionType\"\n [class.str-chat__message-reactions-option-selected]=\"\n isOwnReaction(reactionType)\n \"\n (click)=\"react(reactionType)\"\n (keyup.enter)=\"react(reactionType)\"\n >\n <span\n class=\"emoji str-chat__emoji-selector-emoji-angular str-chat__message-reaction-emoji\"\n >\n {{ getEmojiByReaction(reactionType) }}\n </span>\n </li>\n }\n </ul>\n</div>\n" }]
|
|
52
|
+
}], ctorParameters: () => [{ type: i1.ChannelService }, { type: i2.MessageReactionsService }, { type: i0.ChangeDetectorRef }], propDecorators: { ownReactions: [{
|
|
53
|
+
type: Input
|
|
54
|
+
}], messageId: [{
|
|
55
|
+
type: Input
|
|
56
|
+
}] } });
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWFjdGlvbnMtc2VsZWN0b3IuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2UtcmVhY3Rpb25zLXNlbGVjdG9yL21lc3NhZ2UtcmVhY3Rpb25zLXNlbGVjdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXJlYWN0aW9ucy1zZWxlY3Rvci9tZXNzYWdlLXJlYWN0aW9ucy1zZWxlY3Rvci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULEtBQUssR0FHTixNQUFNLGVBQWUsQ0FBQzs7OztBQU92Qjs7R0FFRztBQU1ILE1BQU0sT0FBTyxpQ0FBaUM7SUFlNUMsWUFDVSxjQUE4QixFQUM5Qix1QkFBZ0QsRUFDaEQsS0FBd0I7UUFGeEIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzlCLDRCQUF1QixHQUF2Qix1QkFBdUIsQ0FBeUI7UUFDaEQsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFmbEM7O1dBRUc7UUFDTSxpQkFBWSxHQUFrRCxFQUFFLENBQUM7UUFLMUUsb0JBQWUsR0FBYSxFQUFFLENBQUM7UUFDdkIsa0JBQWEsR0FBbUIsRUFBRSxDQUFDO1FBQ25DLGlCQUFZLEdBQUcsS0FBSyxDQUFDO0lBTTFCLENBQUM7SUFDSixRQUFRO1FBQ04sSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQ3JCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7WUFDOUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzlDLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUM1QjtRQUNILENBQUMsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxhQUFhLENBQUMsWUFBaUM7UUFDN0MsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGtCQUFrQixDQUFDLFlBQWlDO1FBQ2xELE9BQU8sSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUF5QjtRQUNuQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7WUFDNUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVUsRUFBRSxJQUFJLENBQUM7WUFDakUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuRSxDQUFDOzhHQW5EVSxpQ0FBaUM7a0dBQWpDLGlDQUFpQywySUN0QjlDLGsrQkE0QkE7OzJGRE5hLGlDQUFpQztrQkFMN0MsU0FBUzsrQkFDRSxtQ0FBbUM7eUpBVXBDLFlBQVk7c0JBQXBCLEtBQUs7Z0JBSUcsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzLCBNZXNzYWdlUmVhY3Rpb25UeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgUmVhY3Rpb25SZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IENoYW5uZWxTZXJ2aWNlIH0gZnJvbSAnLi4vY2hhbm5lbC5zZXJ2aWNlJztcbmltcG9ydCB7IE1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vbWVzc2FnZS1yZWFjdGlvbnMuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBUaGUgYE1lc3NhZ2VSZWFjdGlvbnNTZWxlY3RvckNvbXBvbmVudGAgbWFrZXMgaXQgcG9zc2libGUgZm9yIHVzZXJzIHRvIHJlYWN0IHRvIGEgbWVzc2FnZSwgdGhlIHJlYWN0aW9uIG9wdGlvbnMgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BNZXNzYWdlUmVhY3Rpb25zU2VydmljZWBdKC9jaGF0L2RvY3Mvc2RrL2FuZ3VsYXIvc2VydmljZXMvTWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UvKS4gWW91IGNhbiByZWFkIG1vcmUgYWJvdXQgW21lc3NhZ2UgcmVhY3Rpb25zXSgvY2hhdC9kb2NzL2phdmFzY3JpcHQvc2VuZF9yZWFjdGlvbi8pIGluIHRoZSBwbGF0Zm9ybSBkb2N1bWVudGF0aW9uLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbWVzc2FnZS1yZWFjdGlvbnMtc2VsZWN0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS1yZWFjdGlvbnMtc2VsZWN0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlUmVhY3Rpb25zU2VsZWN0b3JDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdFxue1xuICAvKipcbiAgICogTGlzdCBvZiB0aGUgdXNlcidzIG93biByZWFjdGlvbnMgb2YgYSBbbWVzc2FnZV0oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci90eXBlcy9zdHJlYW0tbWVzc2FnZS8pLCB1c2VkIHRvIGRpc3BsYXkgdGhlIHVzZXJzIG9mIGEgcmVhY3Rpb24gdHlwZS5cbiAgICovXG4gIEBJbnB1dCgpIG93blJlYWN0aW9uczogUmVhY3Rpb25SZXNwb25zZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPltdID0gW107XG4gIC8qKlxuICAgKiBUaGUgaWQgb2YgdGhlIG1lc3NhZ2UgdGhlIHJlYWN0aW9ucyBiZWxvbmcgdG9cbiAgICovXG4gIEBJbnB1dCgpIG1lc3NhZ2VJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICByZWFjdGlvbk9wdGlvbnM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBpc1ZpZXdJbml0ZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYW5uZWxTZXJ2aWNlOiBDaGFubmVsU2VydmljZSxcbiAgICBwcml2YXRlIG1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlOiBNZXNzYWdlUmVhY3Rpb25zU2VydmljZSxcbiAgICBwcml2YXRlIGNkUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7fVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChcbiAgICAgIHRoaXMubWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UucmVhY3Rpb25zJC5zdWJzY3JpYmUoKHJlYWN0aW9ucykgPT4ge1xuICAgICAgICB0aGlzLnJlYWN0aW9uT3B0aW9ucyA9IE9iamVjdC5rZXlzKHJlYWN0aW9ucyk7XG4gICAgICAgIGlmICh0aGlzLmlzVmlld0luaXRlZCkge1xuICAgICAgICAgIHRoaXMuY2RSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICB9KSxcbiAgICApO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuaXNWaWV3SW5pdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5mb3JFYWNoKChzKSA9PiBzLnVuc3Vic2NyaWJlKCkpO1xuICB9XG5cbiAgaXNPd25SZWFjdGlvbihyZWFjdGlvblR5cGU6IE1lc3NhZ2VSZWFjdGlvblR5cGUpIHtcbiAgICByZXR1cm4gISF0aGlzLm93blJlYWN0aW9ucy5maW5kKChyKSA9PiByLnR5cGUgPT09IHJlYWN0aW9uVHlwZSk7XG4gIH1cblxuICBnZXRFbW9qaUJ5UmVhY3Rpb24ocmVhY3Rpb25UeXBlOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZVJlYWN0aW9uc1NlcnZpY2UucmVhY3Rpb25zW3JlYWN0aW9uVHlwZV07XG4gIH1cblxuICBhc3luYyByZWFjdCh0eXBlOiBNZXNzYWdlUmVhY3Rpb25UeXBlKSB7XG4gICAgdGhpcy5vd25SZWFjdGlvbnMuZmluZCgocikgPT4gci50eXBlID09PSB0eXBlKVxuICAgICAgPyBhd2FpdCB0aGlzLmNoYW5uZWxTZXJ2aWNlLnJlbW92ZVJlYWN0aW9uKHRoaXMubWVzc2FnZUlkISwgdHlwZSlcbiAgICAgIDogYXdhaXQgdGhpcy5jaGFubmVsU2VydmljZS5hZGRSZWFjdGlvbih0aGlzLm1lc3NhZ2VJZCEsIHR5cGUpO1xuICB9XG59XG4iLCI8ZGl2XG4gICNzZWxlY3RvckNvbnRhaW5lclxuICBkYXRhLXRlc3RpZD1cInJlYWN0aW9uLXNlbGVjdG9yXCJcbiAgY2xhc3M9XCJzdHItY2hhdF9fcmVhY3Rpb24tc2VsZWN0b3Igc3RyLWNoYXQtYW5ndWxhci12NV9fcmVhY3Rpb24tc2VsZWN0b3Igc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tc2VsZWN0b3JcIlxuPlxuICA8dWxcbiAgICBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1saXN0IHN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1vcHRpb25zXCJcbiAgPlxuICAgIEBmb3IgKHJlYWN0aW9uVHlwZSBvZiByZWFjdGlvbk9wdGlvbnM7IHRyYWNrIHJlYWN0aW9uVHlwZSkge1xuICAgICAgPGxpXG4gICAgICAgIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb25zLW9wdGlvbiBzdHItY2hhdF9fbWVzc2FnZS1yZWFjdGlvbnMtbGlzdC1pdGVtIHN0ci1jaGF0X19lbW9qaVwiXG4gICAgICAgIGRhdGEtdGVzdGNsYXNzPVwiZW1vamktb3B0aW9uXCJcbiAgICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwicmVhY3Rpb25UeXBlXCJcbiAgICAgICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXJlYWN0aW9ucy1vcHRpb24tc2VsZWN0ZWRdPVwiXG4gICAgICAgICAgaXNPd25SZWFjdGlvbihyZWFjdGlvblR5cGUpXG4gICAgICAgIFwiXG4gICAgICAgIChjbGljayk9XCJyZWFjdChyZWFjdGlvblR5cGUpXCJcbiAgICAgICAgKGtleXVwLmVudGVyKT1cInJlYWN0KHJlYWN0aW9uVHlwZSlcIlxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzPVwiZW1vamkgc3RyLWNoYXRfX2Vtb2ppLXNlbGVjdG9yLWVtb2ppLWFuZ3VsYXIgc3RyLWNoYXRfX21lc3NhZ2UtcmVhY3Rpb24tZW1vamlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0RW1vamlCeVJlYWN0aW9uKHJlYWN0aW9uVHlwZSkgfX1cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9saT5cbiAgICB9XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
|
|
@@ -58,13 +58,13 @@ export class MessageReactionsService {
|
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
61
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageReactionsService, deps: [{ token: i1.ChatClientService }, { token: i2.NotificationService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
62
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageReactionsService, providedIn: 'root' }); }
|
|
61
63
|
}
|
|
62
|
-
|
|
63
|
-
MessageReactionsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageReactionsService, providedIn: 'root' });
|
|
64
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageReactionsService, decorators: [{
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageReactionsService, decorators: [{
|
|
65
65
|
type: Injectable,
|
|
66
66
|
args: [{
|
|
67
67
|
providedIn: 'root',
|
|
68
68
|
}]
|
|
69
|
-
}], ctorParameters:
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
}], ctorParameters: () => [{ type: i1.ChatClientService }, { type: i2.NotificationService }] });
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS1yZWFjdGlvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXJlYWN0aW9ucy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7OztBQUl2Qzs7O0dBR0c7QUFJSCxNQUFNLE9BQU8sdUJBQXVCO0lBb0JsQyxZQUNVLGlCQUFvQyxFQUNwQyxtQkFBd0M7UUFEeEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXFCO1FBckJsRDs7OztXQUlHO1FBQ0gsZUFBVSxHQUFHLElBQUksZUFBZSxDQUEyQztZQUN6RSxJQUFJLEVBQUUsSUFBSTtZQUNWLElBQUksRUFBRSxJQUFJO1lBQ1YsSUFBSSxFQUFFLElBQUk7WUFDVixHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsRUFBRSxJQUFJO1NBQ1YsQ0FBQyxDQUFDO0lBV0EsQ0FBQztJQUVKOztPQUVHO0lBQ0gsSUFBSSxTQUFTLENBQUMsU0FBbUQ7UUFDL0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsY0FBYyxDQUFDLFNBQWlCLEVBQUUsSUFBWSxFQUFFLElBQWE7UUFDakUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUU7WUFDdEMsTUFBTSxJQUFJLEtBQUssQ0FDYiwyREFBMkQsQ0FDNUQsQ0FBQztTQUNIO2FBQU07WUFDTCxJQUFJO2dCQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQ3JFLFNBQVMsRUFDVCxFQUFFLElBQUksRUFBRSxFQUNSLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQ2xCLEVBQUUsSUFBSSxFQUFFLENBQ1QsQ0FBQztnQkFFRixPQUFPLFFBQVEsQ0FBQzthQUNqQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNkLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx3QkFBd0IsQ0FDL0Msb0NBQW9DLENBQ3JDLENBQUM7Z0JBQ0YsTUFBTSxLQUFLLENBQUM7YUFDYjtTQUNGO0lBQ0gsQ0FBQzs4R0FwRVUsdUJBQXVCO2tIQUF2Qix1QkFBdUIsY0FGdEIsTUFBTTs7MkZBRVAsdUJBQXVCO2tCQUhuQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lc3NhZ2VSZWFjdGlvbkNsaWNrRGV0YWlscywgTWVzc2FnZVJlYWN0aW9uVHlwZSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDaGF0Q2xpZW50U2VydmljZSB9IGZyb20gJy4vY2hhdC1jbGllbnQuc2VydmljZSc7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9ub3RpZmljYXRpb24uc2VydmljZSc7XG5cbi8qKlxuICogVGhlIGBNZXNzYWdlUmVhY3Rpb25zU2VydmljZWAgcHJvdmlkZXMgY3VzdG9taXphdGlvbiBvcHRpb25zIHRvIG1lc3NhZ2UgW3JlYWN0aW9uc10oL2NoYXQvZG9jcy9qYXZhc2NyaXB0L3NlbmRfcmVhY3Rpb24vKS5cbiAqXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxufSlcbmV4cG9ydCBjbGFzcyBNZXNzYWdlUmVhY3Rpb25zU2VydmljZSB7XG4gIC8qKlxuICAgKiBUaGUgZW5hYmxlZCBbcmVhY3Rpb25zXSgvY2hhdC9kb2NzL2phdmFzY3JpcHQvc2VuZF9yZWFjdGlvbi8pIGFuZCB0aGUgYXNzb2NpYXRlZCBlbW9qaVxuICAgKlxuICAgKiBZb3UgY2FuIHByb3ZpZGUgYW55IHN0cmluZyBhcyBhIHJlYWN0aW9uLiBUaGUgZW1vamkgY2FuIGJlIHByb3ZpZGVkIGFzIGEgc3RyaW5nLCBpZiB5b3Ugd2FudCB0byB1c2UgY3VzdG9tIGltYWdlcyBmb3IgcmVhY3Rpb25zIHlvdSBoYXZlIHRvIHByb3ZpZGUgYSBbY3VzdG9tIHJlYWN0aW9ucyBVSV0oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9zZXJ2aWNlcy9DdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLyNtZXNzYWdlcmVhY3Rpb25zdGVtcGxhdGUvKVxuICAgKi9cbiAgcmVhY3Rpb25zJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBba2V5IGluIE1lc3NhZ2VSZWFjdGlvblR5cGVdOiBzdHJpbmcgfT4oe1xuICAgIGhhaGE6ICfwn5iCJyxcbiAgICBsaWtlOiAn8J+RjScsXG4gICAgbG92ZTogJ+KdpO+4jycsXG4gICAgc2FkOiAn8J+YnicsXG4gICAgd293OiAn8J+YricsXG4gIH0pO1xuICAvKipcbiAgICogQnkgZGVmYXVsdCB0aGUgW2BNZXNzYWdlUmVhY3Rpb25zQ29tcG9uZW50YF0oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9jb21wb25lbnRzL01lc3NhZ2VSZWFjdGlvbnNDb21wb25lbnQvKSB3aWxsIGRpc3BsYXkgdGhlIHJlYWN0aW5nIHVzZXJzIHdoZW4gYSByZWFjdGlvbiBpcyBjbGlja2VkLiBZb3UgY2FuIG92ZXJyaWRlIHRoaXMgd2l0aCB5b3VyIG93biBVSSBieSBwcm92aWRpbmcgYSBjdXN0b20gZXZlbnQgaGFuZGxlci5cbiAgICpcbiAgICogVGhlIGV2ZW50IGhhbmRsZXIgY2FuIHJldHJpZXZlIGFsbCByZWFjdGlvbnMgb2YgYSBtZXNzYWdlIHVzaW5nIHRoZSBbYG1lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlLnF1ZXJ5UmVhY3Rpb25zKClgXSgvY2hhdC9kb2NzL3Nkay9hbmd1bGFyL3NlcnZpY2VzL01lc3NhZ2VSZWFjdGlvbnNTZXJ2aWNlLyNxdWVyeXJlYWN0aW9ucylcbiAgICovXG4gIGN1c3RvbVJlYWN0aW9uQ2xpY2tIYW5kbGVyPzogKGRldGFpbHM6IE1lc3NhZ2VSZWFjdGlvbkNsaWNrRGV0YWlscykgPT4gdm9pZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGNoYXRDbGllbnRTZXJ2aWNlOiBDaGF0Q2xpZW50U2VydmljZSxcbiAgICBwcml2YXRlIG5vdGlmaWNhdGlvblNlcnZpY2U6IE5vdGlmaWNhdGlvblNlcnZpY2UsXG4gICkge31cblxuICAvKipcbiAgICogU2V0cyB0aGUgZW5hYmxlZCByZWFjdGlvbnNcbiAgICovXG4gIHNldCByZWFjdGlvbnMocmVhY3Rpb25zOiB7IFtrZXkgaW4gTWVzc2FnZVJlYWN0aW9uVHlwZV06IHN0cmluZyB9KSB7XG4gICAgdGhpcy5yZWFjdGlvbnMkLm5leHQocmVhY3Rpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGN1cnJlbnRseSBlbmFibGVkIHJlYWN0aW9uc1xuICAgKi9cbiAgZ2V0IHJlYWN0aW9ucygpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFjdGlvbnMkLmdldFZhbHVlKCk7XG4gIH1cblxuICAvKipcbiAgICogUXVlcnkgcmVhY3Rpb25zIG9mIGEgc3BlY2lmaWMgbWVzc2FnZSwgbW9yZSBpbmZvIGluIHRoZSBbQVBJIGRvY3VtZW50YXRpb25dKC9jaGF0L2RvY3MvamF2YXNjcmlwdC9zZW5kX3JlYWN0aW9uLyNxdWVyeS1yZWFjdGlvbnMpXG4gICAqIEBwYXJhbSBtZXNzYWdlSWRcbiAgICogQHBhcmFtIHR5cGVcbiAgICogQHBhcmFtIG5leHRcbiAgICogQHJldHVybnMgdGhlIHJlYWN0aW9ucyBhbmQgdGhlIGN1cnNvciBmb3IgdGhlIG5leHQvcHJldiBwYWdlc1xuICAgKi9cbiAgYXN5bmMgcXVlcnlSZWFjdGlvbnMobWVzc2FnZUlkOiBzdHJpbmcsIHR5cGU6IHN0cmluZywgbmV4dD86IHN0cmluZykge1xuICAgIGlmICghdGhpcy5jaGF0Q2xpZW50U2VydmljZS5jaGF0Q2xpZW50KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdJbnRpYWxpemUgdGhlIENoYXRDbGllbnRTZXJ2aWNlIGJlZm9yZSBxdWVyeWluZyByZWFjdGlvbnMnLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmNoYXRDbGllbnRTZXJ2aWNlLmNoYXRDbGllbnQucXVlcnlSZWFjdGlvbnMoXG4gICAgICAgICAgbWVzc2FnZUlkLFxuICAgICAgICAgIHsgdHlwZSB9LFxuICAgICAgICAgIHsgY3JlYXRlZF9hdDogLTEgfSxcbiAgICAgICAgICB7IG5leHQgfSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gcmVzcG9uc2U7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuYWRkVGVtcG9yYXJ5Tm90aWZpY2F0aW9uKFxuICAgICAgICAgICdzdHJlYW1DaGF0LkVycm9yIGxvYWRpbmcgcmVhY3Rpb25zJyxcbiAgICAgICAgKTtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -127,17 +127,17 @@ export class MessageTextComponent {
|
|
|
127
127
|
});
|
|
128
128
|
return content;
|
|
129
129
|
}
|
|
130
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageTextComponent, deps: [{ token: i1.MessageService }, { token: i2.CustomTemplatesService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
131
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: MessageTextComponent, selector: "stream-message-text", inputs: { message: "message", isQuoted: "isQuoted", shouldTranslate: "shouldTranslate" }, usesOnChanges: true, ngImport: i0, template: "@if (message?.text) {\n <p\n [class.str-chat__quoted-message-text-value]=\"isQuoted\"\n [class.str-chat__message-text-value]=\"!isQuoted\"\n data-testid=\"text\"\n >\n @if (messageTextParts) {\n @for (part of messageTextParts; track part.content) {\n @if (part.type === \"text\") {\n <span [innerHTML]=\"part.content\"></span>\n } @else {\n <ng-template #defaultMention let-content=\"content\">\n <span class=\"str-chat__message-mention\">{{ content }}</span>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.mentionTemplate$ | async) ||\n defaultMention;\n context: getMentionContext(part)\n \"\n />\n }\n }\n } @else {\n @if (displayAs === \"text\") {\n {{ messageText || \"\" }}\n } @else {\n <span data-testid=\"html-content\" [innerHTML]=\"messageText\"></span>\n }\n }\n </p>\n}\n", dependencies: [{ kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] }); }
|
|
130
132
|
}
|
|
131
|
-
|
|
132
|
-
MessageTextComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: MessageTextComponent, selector: "stream-message-text", inputs: { message: "message", isQuoted: "isQuoted", shouldTranslate: "shouldTranslate" }, usesOnChanges: true, ngImport: i0, template: "<p\n [class.str-chat__quoted-message-text-value]=\"isQuoted\"\n [class.str-chat__message-text-value]=\"!isQuoted\"\n *ngIf=\"message?.text\"\n data-testid=\"text\"\n>\n <ng-container *ngIf=\"messageTextParts; else defaultContent\">\n <!-- eslint-disable-next-line @angular-eslint/template/use-track-by-function -->\n <ng-container *ngFor=\"let part of messageTextParts\">\n <span\n *ngIf=\"part.type === 'text'; else mention\"\n [innerHTML]=\"part.content\"\n ></span>\n <ng-template #mention>\n <ng-template #defaultMention let-content=\"content\">\n <span class=\"str-chat__message-mention\">{{ content }}</span>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.mentionTemplate$ | async) || defaultMention;\n context: getMentionContext(part)\n \"\n ></ng-container>\n </ng-template>\n </ng-container>\n </ng-container>\n <ng-template #defaultContent>\n <ng-container *ngIf=\"displayAs === 'text'; else asHTML\">\n {{ messageText || \"\" }}\n </ng-container>\n <ng-template #asHTML\n ><span data-testid=\"html-content\" [innerHTML]=\"messageText\"></span\n ></ng-template>\n </ng-template>\n</p>\n", dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
|
|
133
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: MessageTextComponent, decorators: [{
|
|
133
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageTextComponent, decorators: [{
|
|
134
134
|
type: Component,
|
|
135
|
-
args: [{ selector: 'stream-message-text', template: "<p\n
|
|
136
|
-
}], ctorParameters:
|
|
135
|
+
args: [{ selector: 'stream-message-text', template: "@if (message?.text) {\n <p\n [class.str-chat__quoted-message-text-value]=\"isQuoted\"\n [class.str-chat__message-text-value]=\"!isQuoted\"\n data-testid=\"text\"\n >\n @if (messageTextParts) {\n @for (part of messageTextParts; track part.content) {\n @if (part.type === \"text\") {\n <span [innerHTML]=\"part.content\"></span>\n } @else {\n <ng-template #defaultMention let-content=\"content\">\n <span class=\"str-chat__message-mention\">{{ content }}</span>\n </ng-template>\n <ng-container\n *ngTemplateOutlet=\"\n (customTemplatesService.mentionTemplate$ | async) ||\n defaultMention;\n context: getMentionContext(part)\n \"\n />\n }\n }\n } @else {\n @if (displayAs === \"text\") {\n {{ messageText || \"\" }}\n } @else {\n <span data-testid=\"html-content\" [innerHTML]=\"messageText\"></span>\n }\n }\n </p>\n}\n" }]
|
|
136
|
+
}], ctorParameters: () => [{ type: i1.MessageService }, { type: i2.CustomTemplatesService }], propDecorators: { message: [{
|
|
137
137
|
type: Input
|
|
138
138
|
}], isQuoted: [{
|
|
139
139
|
type: Input
|
|
140
140
|
}], shouldTranslate: [{
|
|
141
141
|
type: Input
|
|
142
142
|
}] } });
|
|
143
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXRleHQvbWVzc2FnZS10ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXRleHQvbWVzc2FnZS10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQU8zRSxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBVXJDOztHQUVHO0FBTUgsTUFBTSxPQUFPLG9CQUFvQjtJQXNCL0IsWUFDVSxjQUE4QixFQUM3QixzQkFBOEM7UUFEL0MsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFoQnpEOztXQUVHO1FBQ00sYUFBUSxHQUFZLEtBQUssQ0FBQztRQUNuQzs7V0FFRztRQUNNLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQzFDLHFCQUFnQixHQUE4QixFQUFFLENBQUM7UUFJekMsZ0JBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQU1sRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO1FBQy9DLElBQUk7WUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxDQUN6QixzS0FBc0ssRUFDdEssS0FBSyxDQUNOLENBQUM7U0FDSDtRQUFDLE1BQU07WUFDTixJQUFJLENBQUMsU0FBUztnQkFDWixnS0FBZ0ssQ0FBQztTQUNwSztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFB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QWtCLEVBQUU7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0RDtpQkFBTTtnQkFDTCxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2pCLElBQ0UsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQkFDeEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztvQkFDdkIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUN4QjtvQkFDQSxJQUFJLEdBQUcsV0FBVyxLQUFLLEVBQUUsQ0FBQztpQkFDM0I7Z0JBQ0QsT0FBTyxZQUFZLElBQUksb0NBQW9DLEtBQUssTUFBTSxDQUFDO2FBQ3hFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOztpSEF6SlUsb0JBQW9CO3FHQUFwQixvQkFBb0IsMEtDekJqQyxtd0NBbUNBOzJGRFZhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxxQkFBcUI7MElBUXRCLE9BQU87c0JBQWYsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIE1lbnRpb25UZW1wbGF0ZUNvbnRleHQsXG4gIFN0cmVhbU1lc3NhZ2UsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VSZXNwb25zZUJhc2UsIFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCBlbW9qaVJlZ2V4IGZyb20gJ2Vtb2ppLXJlZ2V4JztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuXG50eXBlIE1lc3NhZ2VQYXJ0ID0ge1xuICBjb250ZW50OiBzdHJpbmc7XG4gIHR5cGU6ICd0ZXh0JyB8ICdtZW50aW9uJztcbiAgdXNlcj86IFVzZXJSZXNwb25zZTtcbn07XG5cbi8qKlxuICogVGhlIGBNZXNzYWdlVGV4dENvbXBvbmVudGAgZGlzcGxheXMgdGhlIHRleHQgY29udGVudCBvZiBhIG1lc3NhZ2UuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlLXRleHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS10ZXh0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVRleHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogVGhlIG1lc3NhZ2Ugd2hpY2ggdGV4dCBzaG91bGQgYmUgZGlzcGxheWVkXG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlOlxuICAgIHwgU3RyZWFtTWVzc2FnZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPlxuICAgIHwgdW5kZWZpbmVkXG4gICAgfCBNZXNzYWdlUmVzcG9uc2VCYXNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICAvKipcbiAgICogYHRydWVgIGlmIHRoZSBjb21wb25lbnQgZGlzcGxheWVzIGEgbWVzc2FnZSBxdW90ZVxuICAgKi9cbiAgQElucHV0KCkgaXNRdW90ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIGB0cnVlYCBpZiB0aGVcbiAgICovXG4gIEBJbnB1dCgpIHNob3VsZFRyYW5zbGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBtZXNzYWdlVGV4dFBhcnRzOiBNZXNzYWdlUGFydFtdIHwgdW5kZWZpbmVkID0gW107XG4gIG1lc3NhZ2VUZXh0Pzogc3RyaW5nO1xuICBkaXNwbGF5QXM6ICd0ZXh0JyB8ICdodG1sJztcbiAgcHJpdmF0ZSByZWFkb25seSB1cmxSZWdleHA6IFJlZ0V4cDtcbiAgcHJpdmF0ZSBlbW9qaVJlZ2V4cCA9IG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAnZycpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHJlYWRvbmx5IGN1c3RvbVRlbXBsYXRlc1NlcnZpY2U6IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5kaXNwbGF5QXMgPSB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmRpc3BsYXlBcztcbiAgICB0cnkge1xuICAgICAgdGhpcy51cmxSZWdleHAgPSBuZXcgUmVnRXhwKFxuICAgICAgICAnKD86KD86aHR0cHM/fGZ0cHxmaWxlKTpcXFxcL1xcXFwvfHd3d1xcXFwufGZ0cFxcXFwufCg/OlthLXpBLVowLTktXStcXFxcLikrW2EtekEtWl17Mix9KSg/IVteXFxcXHNdKkBbXlxcXFxzXSopKD86W15cXFxccygpPD5dK3xcXFxcKFtcXFxcd1xcXFxkXStcXFxcKSkqKD88IUBbYS16QS1aMC05Li1dK1xcXFwuW2EtekEtWl17Mix9KScsXG4gICAgICAgICdnaW0nXG4gICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgdGhpcy51cmxSZWdleHAgPVxuICAgICAgICAvKD86KD86aHR0cHM/fGZ0cHxmaWxlKTpcXC9cXC98d3d3XFwufGZ0cFxcLikoPzpcXChbLUEtWjAtOSsmQCMvJT1+X3wkPyE6LC5dKlxcKXxbLUEtWjAtOSsmQCMvJT1+X3wkPyE6LC5dKSooPzpcXChbLUEtWjAtOSsmQCMvJT1+X3wkPyE6LC5dKlxcKXxbQS1aMC05KyZAIy8lPX5ffCRdKS9naW07XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLm1lc3NhZ2UgfHwgY2hhbmdlcy5zaG91bGRUcmFuc2xhdGUpIHtcbiAgICAgIHRoaXMuY3JlYXRlTWVzc2FnZVBhcnRzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TWVudGlvbkNvbnRleHQobWVzc2FnZVBhcnQ6IE1lc3NhZ2VQYXJ0KTogTWVudGlvblRlbXBsYXRlQ29udGV4dCB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbnRlbnQ6IG1lc3NhZ2VQYXJ0LmNvbnRlbnQsXG4gICAgICB1c2VyOiBtZXNzYWdlUGFydC51c2VyISxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVNZXNzYWdlUGFydHMoKSB7XG4gICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzID0gdW5kZWZpbmVkO1xuICAgIHRoaXMubWVzc2FnZVRleHQgPSB1bmRlZmluZWQ7XG4gICAgbGV0IGNvbnRlbnQgPSB0aGlzLmdldE1lc3NhZ2VDb250ZW50KCk7XG4gICAgaWYgKFxuICAgICAgKCF0aGlzLm1lc3NhZ2UhLm1lbnRpb25lZF91c2VycyB8fFxuICAgICAgICB0aGlzLm1lc3NhZ2UhLm1lbnRpb25lZF91c2Vycy5sZW5ndGggPT09IDApICYmXG4gICAgICAhY29udGVudD8ubWF0Y2godGhpcy5lbW9qaVJlZ2V4cCkgJiZcbiAgICAgICFjb250ZW50Py5tYXRjaCh0aGlzLnVybFJlZ2V4cClcbiAgICApIHtcbiAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cyA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMubWVzc2FnZVRleHQgPSBjb250ZW50O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIWNvbnRlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIXRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzIHx8XG4gICAgICB0aGlzLm1lc3NhZ2UhLm1lbnRpb25lZF91c2Vycy5sZW5ndGggPT09IDBcbiAgICApIHtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLmZpeEVtb2ppRGlzcGxheShjb250ZW50KTtcbiAgICAgIGNvbnRlbnQgPSB0aGlzLndyYXBMaW5rc1dpdGhBbmNob3JUYWcoY29udGVudCk7XG4gICAgICB0aGlzLm1lc3NhZ2VUZXh0UGFydHMgPSBbeyBjb250ZW50LCB0eXBlOiAndGV4dCcgfV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cyA9IFtdO1xuICAgICAgbGV0IHRleHQgPSBjb250ZW50O1xuICAgICAgdGhpcy5tZXNzYWdlIS5tZW50aW9uZWRfdXNlcnMuZm9yRWFjaCgodXNlcikgPT4ge1xuICAgICAgICBjb25zdCBtZW50aW9uID0gYEAke3VzZXIubmFtZSB8fCB1c2VyLmlkfWA7XG4gICAgICAgIGNvbnN0IHByZWNlZGluZ1RleHQgPSB0ZXh0LnN1YnN0cmluZygwLCB0ZXh0LmluZGV4T2YobWVudGlvbikpO1xuICAgICAgICBsZXQgZm9ybWF0dGVkUHJlY2VkaW5nVGV4dCA9IHRoaXMuZml4RW1vamlEaXNwbGF5KHByZWNlZGluZ1RleHQpO1xuICAgICAgICBmb3JtYXR0ZWRQcmVjZWRpbmdUZXh0ID0gdGhpcy53cmFwTGlua3NXaXRoQW5jaG9yVGFnKFxuICAgICAgICAgIGZvcm1hdHRlZFByZWNlZGluZ1RleHRcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzIS5wdXNoKHtcbiAgICAgICAgICBjb250ZW50OiBmb3JtYXR0ZWRQcmVjZWRpbmdUZXh0LFxuICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cyEucHVzaCh7XG4gICAgICAgICAgY29udGVudDogbWVudGlvbixcbiAgICAgICAgICB0eXBlOiAnbWVudGlvbicsXG4gICAgICAgICAgdXNlcixcbiAgICAgICAgfSk7XG4gICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UocHJlY2VkaW5nVGV4dCArIG1lbnRpb24sICcnKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgdGV4dCA9IHRoaXMuZml4RW1vamlEaXNwbGF5KHRleHQpO1xuICAgICAgICB0ZXh0ID0gdGhpcy53cmFwTGlua3NXaXRoQW5jaG9yVGFnKHRleHQpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VUZXh0UGFydHMucHVzaCh7IGNvbnRlbnQ6IHRleHQsIHR5cGU6ICd0ZXh0JyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE1lc3NhZ2VDb250ZW50KCkge1xuICAgIGNvbnN0IG9yaWdpbmFsQ29udGVudCA9IHRoaXMubWVzc2FnZT8udGV4dDtcbiAgICBpZiAodGhpcy5zaG91bGRUcmFuc2xhdGUpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy5tZXNzYWdlPy50cmFuc2xhdGlvbjtcbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbiB8fCBvcmlnaW5hbENvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcmlnaW5hbENvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaXhFbW9qaURpc3BsYXkoY29udGVudDogc3RyaW5nKSB7XG4gICAgLy8gV3JhcCBlbW9qaXMgaW4gc3BhbiB0byBkaXNwbGF5IGVtb2ppcyBjb3JyZWN0bHkgaW4gQ2hyb21lIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU5NjIyM1xuICAgIC8vIEJhc2VkIG9uIHRoaXM6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ1NjUxMTIvamF2YXNjcmlwdC1ob3ctdG8tZmluZC1vdXQtaWYtdGhlLXVzZXItYnJvd3Nlci1pcy1jaHJvbWVcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbiAgICBjb25zdCBpc0Nocm9tZSA9XG4gICAgICAhISh3aW5kb3cgYXMgYW55KS5jaHJvbWUgJiYgdHlwZW9mICh3aW5kb3cgYXMgYW55KS5vcHIgPT09ICd1bmRlZmluZWQnO1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4gICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShcbiAgICAgIHRoaXMuZW1vamlSZWdleHAsXG4gICAgICAobWF0Y2gpID0+XG4gICAgICAgIGA8c3BhbiAke1xuICAgICAgICAgIGlzQ2hyb21lID8gJ2NsYXNzPVwic3RyLWNoYXRfX2Vtb2ppLWRpc3BsYXktZml4XCInIDogJydcbiAgICAgICAgfT4ke21hdGNofTwvc3Bhbj5gXG4gICAgKTtcblxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgcHJpdmF0ZSB3cmFwTGlua3NXaXRoQW5jaG9yVGFnKGNvbnRlbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmRpc3BsYXlBcyA9PT0gJ2h0bWwnKSB7XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9XG4gICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZSh0aGlzLnVybFJlZ2V4cCwgKG1hdGNoKSA9PiB7XG4gICAgICBpZiAodGhpcy5tZXNzYWdlU2VydmljZS5jdXN0b21MaW5rUmVuZGVyZXIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubWVzc2FnZVNlcnZpY2UuY3VzdG9tTGlua1JlbmRlcmVyKG1hdGNoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBocmVmID0gbWF0Y2g7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaHJlZi5zdGFydHNXaXRoKCdodHRwJykgJiZcbiAgICAgICAgICAhaHJlZi5zdGFydHNXaXRoKCdmdHAnKSAmJlxuICAgICAgICAgICFocmVmLnN0YXJ0c1dpdGgoJ2ZpbGUnKVxuICAgICAgICApIHtcbiAgICAgICAgICBocmVmID0gYGh0dHBzOi8vJHttYXRjaH1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgPGEgaHJlZj1cIiR7aHJlZn1cIiB0YXJnZXQ9XCJfYmxhbmtcIiByZWw9XCJub2ZvbGxvd1wiPiR7bWF0Y2h9PC9hPmA7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxufVxuIiwiPHBcbiAgW2NsYXNzLnN0ci1jaGF0X19xdW90ZWQtbWVzc2FnZS10ZXh0LXZhbHVlXT1cImlzUXVvdGVkXCJcbiAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXRleHQtdmFsdWVdPVwiIWlzUXVvdGVkXCJcbiAgKm5nSWY9XCJtZXNzYWdlPy50ZXh0XCJcbiAgZGF0YS10ZXN0aWQ9XCJ0ZXh0XCJcbj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lc3NhZ2VUZXh0UGFydHM7IGVsc2UgZGVmYXVsdENvbnRlbnRcIj5cbiAgICA8IS0tIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvdGVtcGxhdGUvdXNlLXRyYWNrLWJ5LWZ1bmN0aW9uIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHBhcnQgb2YgbWVzc2FnZVRleHRQYXJ0c1wiPlxuICAgICAgPHNwYW5cbiAgICAgICAgKm5nSWY9XCJwYXJ0LnR5cGUgPT09ICd0ZXh0JzsgZWxzZSBtZW50aW9uXCJcbiAgICAgICAgW2lubmVySFRNTF09XCJwYXJ0LmNvbnRlbnRcIlxuICAgICAgPjwvc3Bhbj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbWVudGlvbj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TWVudGlvbiBsZXQtY29udGVudD1cImNvbnRlbnRcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInN0ci1jaGF0X19tZXNzYWdlLW1lbnRpb25cIj57eyBjb250ZW50IH19PC9zcGFuPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgICAgIChjdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLm1lbnRpb25UZW1wbGF0ZSQgfCBhc3luYykgfHwgZGVmYXVsdE1lbnRpb247XG4gICAgICAgICAgICBjb250ZXh0OiBnZXRNZW50aW9uQ29udGV4dChwYXJ0KVxuICAgICAgICAgIFwiXG4gICAgICAgID48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDb250ZW50PlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJkaXNwbGF5QXMgPT09ICd0ZXh0JzsgZWxzZSBhc0hUTUxcIj5cbiAgICAgIHt7IG1lc3NhZ2VUZXh0IHx8IFwiXCIgfX1cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2FzSFRNTFxuICAgICAgPjxzcGFuIGRhdGEtdGVzdGlkPVwiaHRtbC1jb250ZW50XCIgW2lubmVySFRNTF09XCJtZXNzYWdlVGV4dFwiPjwvc3BhblxuICAgID48L25nLXRlbXBsYXRlPlxuICA8L25nLXRlbXBsYXRlPlxuPC9wPlxuIl19
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS10ZXh0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXRleHQvbWVzc2FnZS10ZXh0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tZXNzYWdlLXRleHQvbWVzc2FnZS10ZXh0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQU8zRSxPQUFPLFVBQVUsTUFBTSxhQUFhLENBQUM7Ozs7O0FBVXJDOztHQUVHO0FBTUgsTUFBTSxPQUFPLG9CQUFvQjtJQXNCL0IsWUFDVSxjQUE4QixFQUM3QixzQkFBOEM7UUFEL0MsbUJBQWMsR0FBZCxjQUFjLENBQWdCO1FBQzdCLDJCQUFzQixHQUF0QixzQkFBc0IsQ0FBd0I7UUFoQnpEOztXQUVHO1FBQ00sYUFBUSxHQUFZLEtBQUssQ0FBQztRQUNuQzs7V0FFRztRQUNNLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQzFDLHFCQUFnQixHQUE4QixFQUFFLENBQUM7UUFJekMsZ0JBQVcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQU1sRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDO1FBQy9DLElBQUk7WUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksTUFBTSxDQUN6QixzS0FBc0ssRUFDdEssS0FBSyxDQUNOLENBQUM7U0FDSDtRQUFDLE1BQU07WUFDTixJQUFJLENBQUMsU0FBUztnQkFDWixnS0FBZ0ssQ0FBQztTQUNwSztJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFB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QWtCLEVBQUU7Z0JBQzFDLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQzthQUN0RDtpQkFBTTtnQkFDTCxJQUFJLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2pCLElBQ0UsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQztvQkFDeEIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQztvQkFDdkIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUN4QjtvQkFDQSxJQUFJLEdBQUcsV0FBVyxLQUFLLEVBQUUsQ0FBQztpQkFDM0I7Z0JBQ0QsT0FBTyxZQUFZLElBQUksb0NBQW9DLEtBQUssTUFBTSxDQUFDO2FBQ3hFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDOzhHQXpKVSxvQkFBb0I7a0dBQXBCLG9CQUFvQiwwS0N6QmpDLDYvQkFnQ0E7OzJGRFBhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxxQkFBcUI7d0hBUXRCLE9BQU87c0JBQWYsS0FBSztnQkFPRyxRQUFRO3NCQUFoQixLQUFLO2dCQUlHLGVBQWU7c0JBQXZCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPbkNoYW5nZXMsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MsXG4gIE1lbnRpb25UZW1wbGF0ZUNvbnRleHQsXG4gIFN0cmVhbU1lc3NhZ2UsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IE1lc3NhZ2VSZXNwb25zZUJhc2UsIFVzZXJSZXNwb25zZSB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCBlbW9qaVJlZ2V4IGZyb20gJ2Vtb2ppLXJlZ2V4JztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vbWVzc2FnZS5zZXJ2aWNlJztcbmltcG9ydCB7IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UgfSBmcm9tICcuLi9jdXN0b20tdGVtcGxhdGVzLnNlcnZpY2UnO1xuXG50eXBlIE1lc3NhZ2VQYXJ0ID0ge1xuICBjb250ZW50OiBzdHJpbmc7XG4gIHR5cGU6ICd0ZXh0JyB8ICdtZW50aW9uJztcbiAgdXNlcj86IFVzZXJSZXNwb25zZTtcbn07XG5cbi8qKlxuICogVGhlIGBNZXNzYWdlVGV4dENvbXBvbmVudGAgZGlzcGxheXMgdGhlIHRleHQgY29udGVudCBvZiBhIG1lc3NhZ2UuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3N0cmVhbS1tZXNzYWdlLXRleHQnLFxuICB0ZW1wbGF0ZVVybDogJy4vbWVzc2FnZS10ZXh0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVzOiBbXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVRleHRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvKipcbiAgICogVGhlIG1lc3NhZ2Ugd2hpY2ggdGV4dCBzaG91bGQgYmUgZGlzcGxheWVkXG4gICAqL1xuICBASW5wdXQoKSBtZXNzYWdlOlxuICAgIHwgU3RyZWFtTWVzc2FnZTxEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzPlxuICAgIHwgdW5kZWZpbmVkXG4gICAgfCBNZXNzYWdlUmVzcG9uc2VCYXNlPERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3M+O1xuICAvKipcbiAgICogYHRydWVgIGlmIHRoZSBjb21wb25lbnQgZGlzcGxheWVzIGEgbWVzc2FnZSBxdW90ZVxuICAgKi9cbiAgQElucHV0KCkgaXNRdW90ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIGB0cnVlYCBpZiB0aGVcbiAgICovXG4gIEBJbnB1dCgpIHNob3VsZFRyYW5zbGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xuICBtZXNzYWdlVGV4dFBhcnRzOiBNZXNzYWdlUGFydFtdIHwgdW5kZWZpbmVkID0gW107XG4gIG1lc3NhZ2VUZXh0Pzogc3RyaW5nO1xuICBkaXNwbGF5QXM6ICd0ZXh0JyB8ICdodG1sJztcbiAgcHJpdmF0ZSByZWFkb25seSB1cmxSZWdleHA6IFJlZ0V4cDtcbiAgcHJpdmF0ZSBlbW9qaVJlZ2V4cCA9IG5ldyBSZWdFeHAoZW1vamlSZWdleCgpLCAnZycpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IE1lc3NhZ2VTZXJ2aWNlLFxuICAgIHJlYWRvbmx5IGN1c3RvbVRlbXBsYXRlc1NlcnZpY2U6IEN1c3RvbVRlbXBsYXRlc1NlcnZpY2UsXG4gICkge1xuICAgIHRoaXMuZGlzcGxheUFzID0gdGhpcy5tZXNzYWdlU2VydmljZS5kaXNwbGF5QXM7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMudXJsUmVnZXhwID0gbmV3IFJlZ0V4cChcbiAgICAgICAgJyg/Oig/Omh0dHBzP3xmdHB8ZmlsZSk6XFxcXC9cXFxcL3x3d3dcXFxcLnxmdHBcXFxcLnwoPzpbYS16QS1aMC05LV0rXFxcXC4pK1thLXpBLVpdezIsfSkoPyFbXlxcXFxzXSpAW15cXFxcc10qKSg/OlteXFxcXHMoKTw+XSt8XFxcXChbXFxcXHdcXFxcZF0rXFxcXCkpKig/PCFAW2EtekEtWjAtOS4tXStcXFxcLlthLXpBLVpdezIsfSknLFxuICAgICAgICAnZ2ltJyxcbiAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aGlzLnVybFJlZ2V4cCA9XG4gICAgICAgIC8oPzooPzpodHRwcz98ZnRwfGZpbGUpOlxcL1xcL3x3d3dcXC58ZnRwXFwuKSg/OlxcKFstQS1aMC05KyZAIy8lPX5ffCQ/ITosLl0qXFwpfFstQS1aMC05KyZAIy8lPX5ffCQ/ITosLl0pKig/OlxcKFstQS1aMC05KyZAIy8lPX5ffCQ/ITosLl0qXFwpfFtBLVowLTkrJkAjLyU9fl98JF0pL2dpbTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMubWVzc2FnZSB8fCBjaGFuZ2VzLnNob3VsZFRyYW5zbGF0ZSkge1xuICAgICAgdGhpcy5jcmVhdGVNZXNzYWdlUGFydHMoKTtcbiAgICB9XG4gIH1cblxuICBnZXRNZW50aW9uQ29udGV4dChtZXNzYWdlUGFydDogTWVzc2FnZVBhcnQpOiBNZW50aW9uVGVtcGxhdGVDb250ZXh0IHtcbiAgICByZXR1cm4ge1xuICAgICAgY29udGVudDogbWVzc2FnZVBhcnQuY29udGVudCxcbiAgICAgIHVzZXI6IG1lc3NhZ2VQYXJ0LnVzZXIhLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU1lc3NhZ2VQYXJ0cygpIHtcbiAgICB0aGlzLm1lc3NhZ2VUZXh0UGFydHMgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5tZXNzYWdlVGV4dCA9IHVuZGVmaW5lZDtcbiAgICBsZXQgY29udGVudCA9IHRoaXMuZ2V0TWVzc2FnZUNvbnRlbnQoKTtcbiAgICBpZiAoXG4gICAgICAoIXRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzIHx8XG4gICAgICAgIHRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzLmxlbmd0aCA9PT0gMCkgJiZcbiAgICAgICFjb250ZW50Py5tYXRjaCh0aGlzLmVtb2ppUmVnZXhwKSAmJlxuICAgICAgIWNvbnRlbnQ/Lm1hdGNoKHRoaXMudXJsUmVnZXhwKVxuICAgICkge1xuICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5tZXNzYWdlVGV4dCA9IGNvbnRlbnQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghY29udGVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAhdGhpcy5tZXNzYWdlIS5tZW50aW9uZWRfdXNlcnMgfHxcbiAgICAgIHRoaXMubWVzc2FnZSEubWVudGlvbmVkX3VzZXJzLmxlbmd0aCA9PT0gMFxuICAgICkge1xuICAgICAgY29udGVudCA9IHRoaXMuZml4RW1vamlEaXNwbGF5KGNvbnRlbnQpO1xuICAgICAgY29udGVudCA9IHRoaXMud3JhcExpbmtzV2l0aEFuY2hvclRhZyhjb250ZW50KTtcbiAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cyA9IFt7IGNvbnRlbnQsIHR5cGU6ICd0ZXh0JyB9XTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzID0gW107XG4gICAgICBsZXQgdGV4dCA9IGNvbnRlbnQ7XG4gICAgICB0aGlzLm1lc3NhZ2UhLm1lbnRpb25lZF91c2Vycy5mb3JFYWNoKCh1c2VyKSA9PiB7XG4gICAgICAgIGNvbnN0IG1lbnRpb24gPSBgQCR7dXNlci5uYW1lIHx8IHVzZXIuaWR9YDtcbiAgICAgICAgY29uc3QgcHJlY2VkaW5nVGV4dCA9IHRleHQuc3Vic3RyaW5nKDAsIHRleHQuaW5kZXhPZihtZW50aW9uKSk7XG4gICAgICAgIGxldCBmb3JtYXR0ZWRQcmVjZWRpbmdUZXh0ID0gdGhpcy5maXhFbW9qaURpc3BsYXkocHJlY2VkaW5nVGV4dCk7XG4gICAgICAgIGZvcm1hdHRlZFByZWNlZGluZ1RleHQgPSB0aGlzLndyYXBMaW5rc1dpdGhBbmNob3JUYWcoXG4gICAgICAgICAgZm9ybWF0dGVkUHJlY2VkaW5nVGV4dCxcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5tZXNzYWdlVGV4dFBhcnRzIS5wdXNoKHtcbiAgICAgICAgICBjb250ZW50OiBmb3JtYXR0ZWRQcmVjZWRpbmdUZXh0LFxuICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMubWVzc2FnZVRleHRQYXJ0cyEucHVzaCh7XG4gICAgICAgICAgY29udGVudDogbWVudGlvbixcbiAgICAgICAgICB0eXBlOiAnbWVudGlvbicsXG4gICAgICAgICAgdXNlcixcbiAgICAgICAgfSk7XG4gICAgICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UocHJlY2VkaW5nVGV4dCArIG1lbnRpb24sICcnKTtcbiAgICAgIH0pO1xuICAgICAgaWYgKHRleHQpIHtcbiAgICAgICAgdGV4dCA9IHRoaXMuZml4RW1vamlEaXNwbGF5KHRleHQpO1xuICAgICAgICB0ZXh0ID0gdGhpcy53cmFwTGlua3NXaXRoQW5jaG9yVGFnKHRleHQpO1xuICAgICAgICB0aGlzLm1lc3NhZ2VUZXh0UGFydHMucHVzaCh7IGNvbnRlbnQ6IHRleHQsIHR5cGU6ICd0ZXh0JyB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldE1lc3NhZ2VDb250ZW50KCkge1xuICAgIGNvbnN0IG9yaWdpbmFsQ29udGVudCA9IHRoaXMubWVzc2FnZT8udGV4dDtcbiAgICBpZiAodGhpcy5zaG91bGRUcmFuc2xhdGUpIHtcbiAgICAgIGNvbnN0IHRyYW5zbGF0aW9uID0gdGhpcy5tZXNzYWdlPy50cmFuc2xhdGlvbjtcbiAgICAgIHJldHVybiB0cmFuc2xhdGlvbiB8fCBvcmlnaW5hbENvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcmlnaW5hbENvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmaXhFbW9qaURpc3BsYXkoY29udGVudDogc3RyaW5nKSB7XG4gICAgLy8gV3JhcCBlbW9qaXMgaW4gc3BhbiB0byBkaXNwbGF5IGVtb2ppcyBjb3JyZWN0bHkgaW4gQ2hyb21lIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTU5NjIyM1xuICAgIC8vIEJhc2VkIG9uIHRoaXM6IGh0dHBzOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzQ1NjUxMTIvamF2YXNjcmlwdC1ob3ctdG8tZmluZC1vdXQtaWYtdGhlLXVzZXItYnJvd3Nlci1pcy1jaHJvbWVcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbiAgICBjb25zdCBpc0Nocm9tZSA9XG4gICAgICAhISh3aW5kb3cgYXMgYW55KS5jaHJvbWUgJiYgdHlwZW9mICh3aW5kb3cgYXMgYW55KS5vcHIgPT09ICd1bmRlZmluZWQnO1xuICAgIC8qIGVzbGludC1lbmFibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4gICAgY29udGVudCA9IGNvbnRlbnQucmVwbGFjZShcbiAgICAgIHRoaXMuZW1vamlSZWdleHAsXG4gICAgICAobWF0Y2gpID0+XG4gICAgICAgIGA8c3BhbiAke1xuICAgICAgICAgIGlzQ2hyb21lID8gJ2NsYXNzPVwic3RyLWNoYXRfX2Vtb2ppLWRpc3BsYXktZml4XCInIDogJydcbiAgICAgICAgfT4ke21hdGNofTwvc3Bhbj5gLFxuICAgICk7XG5cbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIHByaXZhdGUgd3JhcExpbmtzV2l0aEFuY2hvclRhZyhjb250ZW50OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5kaXNwbGF5QXMgPT09ICdodG1sJykge1xuICAgICAgcmV0dXJuIGNvbnRlbnQ7XG4gICAgfVxuICAgIGNvbnRlbnQgPSBjb250ZW50LnJlcGxhY2UodGhpcy51cmxSZWdleHAsIChtYXRjaCkgPT4ge1xuICAgICAgaWYgKHRoaXMubWVzc2FnZVNlcnZpY2UuY3VzdG9tTGlua1JlbmRlcmVyKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmN1c3RvbUxpbmtSZW5kZXJlcihtYXRjaCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgaHJlZiA9IG1hdGNoO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWhyZWYuc3RhcnRzV2l0aCgnaHR0cCcpICYmXG4gICAgICAgICAgIWhyZWYuc3RhcnRzV2l0aCgnZnRwJykgJiZcbiAgICAgICAgICAhaHJlZi5zdGFydHNXaXRoKCdmaWxlJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgaHJlZiA9IGBodHRwczovLyR7bWF0Y2h9YDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYDxhIGhyZWY9XCIke2hyZWZ9XCIgdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9mb2xsb3dcIj4ke21hdGNofTwvYT5gO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbn1cbiIsIkBpZiAobWVzc2FnZT8udGV4dCkge1xuICA8cFxuICAgIFtjbGFzcy5zdHItY2hhdF9fcXVvdGVkLW1lc3NhZ2UtdGV4dC12YWx1ZV09XCJpc1F1b3RlZFwiXG4gICAgW2NsYXNzLnN0ci1jaGF0X19tZXNzYWdlLXRleHQtdmFsdWVdPVwiIWlzUXVvdGVkXCJcbiAgICBkYXRhLXRlc3RpZD1cInRleHRcIlxuICA+XG4gICAgQGlmIChtZXNzYWdlVGV4dFBhcnRzKSB7XG4gICAgICBAZm9yIChwYXJ0IG9mIG1lc3NhZ2VUZXh0UGFydHM7IHRyYWNrIHBhcnQuY29udGVudCkge1xuICAgICAgICBAaWYgKHBhcnQudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cInBhcnQuY29udGVudFwiPjwvc3Bhbj5cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TWVudGlvbiBsZXQtY29udGVudD1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3RyLWNoYXRfX21lc3NhZ2UtbWVudGlvblwiPnt7IGNvbnRlbnQgfX08L3NwYW4+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgICAgICAoY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZW50aW9uVGVtcGxhdGUkIHwgYXN5bmMpIHx8XG4gICAgICAgICAgICAgICAgZGVmYXVsdE1lbnRpb247XG4gICAgICAgICAgICAgIGNvbnRleHQ6IGdldE1lbnRpb25Db250ZXh0KHBhcnQpXG4gICAgICAgICAgICBcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBpZiAoZGlzcGxheUFzID09PSBcInRleHRcIikge1xuICAgICAgICB7eyBtZXNzYWdlVGV4dCB8fCBcIlwiIH19XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPHNwYW4gZGF0YS10ZXN0aWQ9XCJodG1sLWNvbnRlbnRcIiBbaW5uZXJIVE1MXT1cIm1lc3NhZ2VUZXh0XCI+PC9zcGFuPlxuICAgICAgfVxuICAgIH1cbiAgPC9wPlxufVxuIl19
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* The message service contains configuration options related to displaying the message content
|
|
5
|
+
*/
|
|
6
|
+
export class MessageService {
|
|
7
|
+
constructor() {
|
|
8
|
+
/**
|
|
9
|
+
* Decides if the message content should be formatted as text or HTML
|
|
10
|
+
*
|
|
11
|
+
* If you display messages as text the following parts are still be displayed as HTML:
|
|
12
|
+
* - user mentions -> you can customize this with your own template using the [`customTemplatesService.mentionTemplate$`](/chat/docs/sdk/angular/services/CustomTemplatesService/#mentiontemplate)
|
|
13
|
+
* - links -> you can customize this by providing you own [`customLinkRenderer`](#customlinkrenderer) method
|
|
14
|
+
*/
|
|
15
|
+
this.displayAs = 'text';
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Tells if an attachment is custom (you need to provide your own template to display them) or built-in (the SDK supports it out-of-the-box)
|
|
19
|
+
* @param attachment
|
|
20
|
+
* @returns `true` if the attachment is custom
|
|
21
|
+
*/
|
|
22
|
+
isCustomAttachment(attachment) {
|
|
23
|
+
if (this.filterCustomAttachment) {
|
|
24
|
+
return this.filterCustomAttachment(attachment);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
return (attachment.type !== 'image' &&
|
|
28
|
+
attachment.type !== 'file' &&
|
|
29
|
+
attachment.type !== 'video' &&
|
|
30
|
+
attachment.type !== 'voiceRecording' &&
|
|
31
|
+
attachment.type !== 'giphy');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
35
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageService, providedIn: 'root' }); }
|
|
36
|
+
}
|
|
37
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: MessageService, decorators: [{
|
|
38
|
+
type: Injectable,
|
|
39
|
+
args: [{
|
|
40
|
+
providedIn: 'root',
|
|
41
|
+
}]
|
|
42
|
+
}], ctorParameters: () => [] });
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21lc3NhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUkzQzs7R0FFRztBQUlILE1BQU0sT0FBTyxjQUFjO0lBMkJ6QjtRQXhCQTs7Ozs7O1dBTUc7UUFDSCxjQUFTLEdBQW9CLE1BQU0sQ0FBQztJQWlCckIsQ0FBQztJQUVoQjs7OztPQUlHO0lBQ0gsa0JBQWtCLENBQUMsVUFBeUI7UUFDMUMsSUFBSSxJQUFJLENBQUMsc0JBQXNCLEVBQUU7WUFDL0IsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQUM7U0FDaEQ7YUFBTTtZQUNMLE9BQU8sQ0FDTCxVQUFVLENBQUMsSUFBSSxLQUFLLE9BQU87Z0JBQzNCLFVBQVUsQ0FBQyxJQUFJLEtBQUssTUFBTTtnQkFDMUIsVUFBVSxDQUFDLElBQUksS0FBSyxPQUFPO2dCQUMzQixVQUFVLENBQUMsSUFBSSxLQUFLLGdCQUFnQjtnQkFDcEMsVUFBVSxDQUFDLElBQUksS0FBSyxPQUFPLENBQzVCLENBQUM7U0FDSDtJQUNILENBQUM7OEdBOUNVLGNBQWM7a0hBQWQsY0FBYyxjQUZiLE1BQU07OzJGQUVQLGNBQWM7a0JBSDFCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXR0YWNobWVudCB9IGZyb20gJ3N0cmVhbS1jaGF0JztcbmltcG9ydCB7IERlZmF1bHRTdHJlYW1DaGF0R2VuZXJpY3MgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBUaGUgbWVzc2FnZSBzZXJ2aWNlIGNvbnRhaW5zIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIGRpc3BsYXlpbmcgdGhlIG1lc3NhZ2UgY29udGVudFxuICovXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290Jyxcbn0pXG5leHBvcnQgY2xhc3MgTWVzc2FnZVNlcnZpY2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0U3RyZWFtQ2hhdEdlbmVyaWNzID0gRGVmYXVsdFN0cmVhbUNoYXRHZW5lcmljcyxcbj4ge1xuICAvKipcbiAgICogRGVjaWRlcyBpZiB0aGUgbWVzc2FnZSBjb250ZW50IHNob3VsZCBiZSBmb3JtYXR0ZWQgYXMgdGV4dCBvciBIVE1MXG4gICAqXG4gICAqIElmIHlvdSBkaXNwbGF5IG1lc3NhZ2VzIGFzIHRleHQgdGhlIGZvbGxvd2luZyBwYXJ0cyBhcmUgc3RpbGwgYmUgZGlzcGxheWVkIGFzIEhUTUw6XG4gICAqIC0gdXNlciBtZW50aW9ucyAtPiB5b3UgY2FuIGN1c3RvbWl6ZSB0aGlzIHdpdGggeW91ciBvd24gdGVtcGxhdGUgdXNpbmcgdGhlIFtgY3VzdG9tVGVtcGxhdGVzU2VydmljZS5tZW50aW9uVGVtcGxhdGUkYF0oL2NoYXQvZG9jcy9zZGsvYW5ndWxhci9zZXJ2aWNlcy9DdXN0b21UZW1wbGF0ZXNTZXJ2aWNlLyNtZW50aW9udGVtcGxhdGUpXG4gICAqIC0gbGlua3MgLT4geW91IGNhbiBjdXN0b21pemUgdGhpcyBieSBwcm92aWRpbmcgeW91IG93biBbYGN1c3RvbUxpbmtSZW5kZXJlcmBdKCNjdXN0b21saW5rcmVuZGVyZXIpIG1ldGhvZFxuICAgKi9cbiAgZGlzcGxheUFzOiAndGV4dCcgfCAnaHRtbCcgPSAndGV4dCc7XG5cbiAgLyoqXG4gICAqIFlvdSBjYW4gcHJvdmlkZSBhIGN1c3RvbSBtZXRob2QgdG8gZGlzcGxheSBsaW5rc1xuICAgKiBAcGFyYW0gdXJsIHRoZSB1cmwgdGhlIGxpbmsgc2hvdWxkIHJlZmVyIHRvXG4gICAqIEByZXR1cm5zIHRoZSBIVE1MIG1hcmt1cCBhcyBhIHN0cmluZyBmb3IgdGhlIGxpbmtcbiAgICovXG4gIGN1c3RvbUxpbmtSZW5kZXJlcj86ICh1cmw6IHN0cmluZykgPT4gc3RyaW5nO1xuICAvKipcbiAgICogVGhlIFNESyBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIGF0dGFjaG1lbnQgdHlwZXM6IGBpbWFnZWAsIGBmaWxlYCwgYGdpcGh5YCwgYHZpZGVvYCBhbmQgYHZvaWNlUmVjb3JkaW5nYCBhdHRhY2htZW50cy5cbiAgICpcbiAgICogQWxsIG90aGVyIHR5cGVzIGFyZSB0cmVhdGVkIGFzIGN1c3RvbSBhdHRhY2htZW50cywgaG93ZXZlciBpdCdzIHBvc3NpYmxlIHRvIG92ZXJyaWRlIHRoaXMgbG9naWMsIGFuZCBwcm92aWRlIGEgY3VzdG9tIGZpbHRlcmluZyBtZXRob2Qgd2hpY2ggY2FuIGJlIHVzZWQgdG8gdHJlYXQgc29tZSBidWlsdC1pbiBhdHRhY2htZW50cyBhcyBjdXN0b20uXG4gICAqXG4gICAqIFByb3ZpZGUgYSBtZXRob2Qgd2hpY2ggcmV0cnVucyBgdHJ1ZWAgaWYgYW4gYXR0YWNobWVudCBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyBjdXN0b20uXG4gICAqL1xuICBmaWx0ZXJDdXN0b21BdHRhY2htZW50PzogKGF0dGFjaG1lbnQ6IEF0dGFjaG1lbnQ8VD4pID0+IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBUZWxscyBpZiBhbiBhdHRhY2htZW50IGlzIGN1c3RvbSAoeW91IG5lZWQgdG8gcHJvdmlkZSB5b3VyIG93biB0ZW1wbGF0ZSB0byBkaXNwbGF5IHRoZW0pIG9yIGJ1aWx0LWluICh0aGUgU0RLIHN1cHBvcnRzIGl0IG91dC1vZi10aGUtYm94KVxuICAgKiBAcGFyYW0gYXR0YWNobWVudFxuICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGF0dGFjaG1lbnQgaXMgY3VzdG9tXG4gICAqL1xuICBpc0N1c3RvbUF0dGFjaG1lbnQoYXR0YWNobWVudDogQXR0YWNobWVudDxUPikge1xuICAgIGlmICh0aGlzLmZpbHRlckN1c3RvbUF0dGFjaG1lbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLmZpbHRlckN1c3RvbUF0dGFjaG1lbnQoYXR0YWNobWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGF0dGFjaG1lbnQudHlwZSAhPT0gJ2ltYWdlJyAmJlxuICAgICAgICBhdHRhY2htZW50LnR5cGUgIT09ICdmaWxlJyAmJlxuICAgICAgICBhdHRhY2htZW50LnR5cGUgIT09ICd2aWRlbycgJiZcbiAgICAgICAgYXR0YWNobWVudC50eXBlICE9PSAndm9pY2VSZWNvcmRpbmcnICYmXG4gICAgICAgIGF0dGFjaG1lbnQudHlwZSAhPT0gJ2dpcGh5J1xuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -50,13 +50,13 @@ export class ModalComponent {
|
|
|
50
50
|
stopWatchForOutsideClicks() {
|
|
51
51
|
window.removeEventListener('click', this.watchForOutsideClicks);
|
|
52
52
|
}
|
|
53
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
54
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.0.0", type: ModalComponent, selector: "stream-modal", inputs: { isOpen: "isOpen", content: "content" }, outputs: { isOpenChange: "isOpenChange" }, viewQueries: [{ propertyName: "innerContainer", first: true, predicate: ["modalInner"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n >\n <stream-icon-placeholder icon=\"close\" />\n </div>\n <div #modalInner class=\"str-chat__modal__inner\">\n @if (isOpen && content) {\n <ng-container *ngTemplateOutlet=\"content\" />\n }\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon"] }] }); }
|
|
53
55
|
}
|
|
54
|
-
|
|
55
|
-
ModalComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: ModalComponent, selector: "stream-modal", inputs: { isOpen: "isOpen", content: "content" }, outputs: { isOpenChange: "isOpenChange" }, viewQueries: [{ propertyName: "innerContainer", first: true, predicate: ["modalInner"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n >\n <stream-icon-placeholder icon=\"close\"></stream-icon-placeholder>\n </div>\n <div #modalInner class=\"str-chat__modal__inner\">\n <ng-container *ngIf=\"content; else elseContent\">\n <ng-container *ngTemplateOutlet=\"content\"></ng-container>\n </ng-container>\n <ng-template #elseContent>\n <ng-content></ng-content>\n </ng-template>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconPlaceholderComponent, selector: "stream-icon-placeholder", inputs: ["icon"] }] });
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: ModalComponent, decorators: [{
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0", ngImport: i0, type: ModalComponent, decorators: [{
|
|
57
57
|
type: Component,
|
|
58
|
-
args: [{ selector: 'stream-modal', template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n >\n <stream-icon-placeholder icon=\"close\"
|
|
59
|
-
}], ctorParameters:
|
|
58
|
+
args: [{ selector: 'stream-modal', template: "<div\n data-testid=\"modal\"\n class=\"str-chat__modal str-chat__modal--{{ isOpen ? 'open' : 'close' }}\"\n>\n <div\n data-testid=\"close\"\n class=\"str-chat__modal__close-button\"\n (click)=\"close()\"\n (keyup.enter)=\"close()\"\n >\n <stream-icon-placeholder icon=\"close\" />\n </div>\n <div #modalInner class=\"str-chat__modal__inner\">\n @if (isOpen && content) {\n <ng-container *ngTemplateOutlet=\"content\" />\n }\n </div>\n</div>\n" }]
|
|
59
|
+
}], ctorParameters: () => [], propDecorators: { isOpen: [{
|
|
60
60
|
type: Input
|
|
61
61
|
}], content: [{
|
|
62
62
|
type: Input
|
|
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
|
|
|
66
66
|
type: ViewChild,
|
|
67
67
|
args: ['modalInner']
|
|
68
68
|
}] } });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvc3RyZWFtLWNoYXQtYW5ndWxhci9zcmMvbGliL21vZGFsL21vZGFsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3N0cmVhbS1jaGF0LWFuZ3VsYXIvc3JjL2xpYi9tb2RhbC9tb2RhbC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUdOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQzs7OztBQUV2Qjs7R0FFRztBQU1ILE1BQU0sT0FBTyxjQUFjO0lBaUJ6QjtRQWhCQTs7V0FFRztRQUNNLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFLeEI7O1dBRUc7UUFDZ0IsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBNkJ0RCxxQkFBZ0IsR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNsRCxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUMxQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7YUFDZDtRQUNILENBQUMsQ0FBQztRQUVNLHlCQUFvQixHQUFHLEdBQUcsRUFBRTtZQUNsQyxNQUFNLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQztRQUVNLDBCQUFxQixHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDL0MsSUFBSSxDQUFDLElBQUksQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsTUFBYyxDQUFDLEVBQUU7Z0JBQ3RFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQzthQUNkO1FBQ0gsQ0FBQyxDQUFDO0lBdENhLENBQUM7SUFFaEIsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7Z0JBQ2YsTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztnQkFDeEQsVUFBVSxDQUNSLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEVBQ2xFLENBQUMsQ0FDRixDQUFDO2FBQ0g7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO2FBQzdCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFrQk8seUJBQXlCO1FBQy9CLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLENBQUM7SUFDbEUsQ0FBQzs4R0EzRFUsY0FBYztrR0FBZCxjQUFjLG9SQ3BCM0IsNmRBa0JBOzsyRkRFYSxjQUFjO2tCQUwxQixTQUFTOytCQUNFLGNBQWM7d0RBUWYsTUFBTTtzQkFBZCxLQUFLO2dCQUlHLE9BQU87c0JBQWYsS0FBSztnQkFJYSxZQUFZO3NCQUE5QixNQUFNO2dCQUMwQixjQUFjO3NCQUE5QyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuLyoqXG4gKiBUaGUgYE1vZGFsYCBjb21wb25lbnQgZGlzcGxheXMgaXRzIGNvbnRlbnQgaW4gYW4gb3ZlcmxheS4gVGhlIG1vZGFsIGNhbiBiZSBjbG9zZWQgd2l0aCBhIGNsb3NlIGJ1dHRvbiwgaWYgdGhlIHVzZXIgY2xpY2tzIG91dHNpZGUgb2YgdGhlIG1vZGFsIGNvbnRlbnQsIG9yIGlmIHRoZSBlc2NhcGUgYnV0dG9uIGlzIHByZXNzZWQuIFRoZSBtb2RhbCBjYW4gYWxzbyBiZSBjbG9zZWQgZnJvbSBvdXRzaWRlLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdzdHJlYW0tbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IFtdLFxufSlcbmV4cG9ydCBjbGFzcyBNb2RhbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgdGhlIG1vZGFsIHdpbGwgYmUgZGlzcGxheWVkLCBpZiBgZmFsc2VgIHRoZSBtb2RhbCB3aWxsIGJlIGhpZGRlblxuICAgKi9cbiAgQElucHV0KCkgaXNPcGVuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgbW9kYWwgIChjYW4gYWxzbyBiZSBwcm92aWRlZCB1c2luZyBgbmctY29udGVudGApXG4gICAqL1xuICBASW5wdXQoKSBjb250ZW50OiBUZW1wbGF0ZVJlZjx2b2lkPiB8IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEVtaXRzIGB0cnVlYCBpZiB0aGUgbW9kYWwgYmVjb21lcyB2aXNpYmxlLCBhbmQgYGZhbHNlYCBpZiB0aGUgbW9kYWwgaXMgY2xvc2VkLlxuICAgKi9cbiAgQE91dHB1dCgpIHJlYWRvbmx5IGlzT3BlbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQFZpZXdDaGlsZCgnbW9kYWxJbm5lcicpIHByaXZhdGUgaW5uZXJDb250YWluZXI6XG4gICAgfCBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXMuaXNPcGVuKSB7XG4gICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy53YXRjaEZvckVzY1ByZXNzKTtcbiAgICAgICAgc2V0VGltZW91dChcbiAgICAgICAgICAoKSA9PiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLndhdGNoRm9yT3V0c2lkZUNsaWNrcyksXG4gICAgICAgICAgMCxcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc3RvcFdhdGNoRm9yT3V0c2lkZUNsaWNrcygpO1xuICAgICAgICB0aGlzLnN0b3BXYXRjaEZvckVzY1ByZXNzKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmlzT3BlbkNoYW5nZS5lbWl0KGZhbHNlKTtcbiAgICB0aGlzLnN0b3BXYXRjaEZvck91dHNpZGVDbGlja3MoKTtcbiAgICB0aGlzLnN0b3BXYXRjaEZvckVzY1ByZXNzKCk7XG4gIH1cblxuICBwcml2YXRlIHdhdGNoRm9yRXNjUHJlc3MgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0b3BXYXRjaEZvckVzY1ByZXNzID0gKCkgPT4ge1xuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMud2F0Y2hGb3JFc2NQcmVzcyk7XG4gIH07XG5cbiAgcHJpdmF0ZSB3YXRjaEZvck91dHNpZGVDbGlja3MgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgaWYgKCF0aGlzLmlubmVyQ29udGFpbmVyPy5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKSkge1xuICAgICAgdGhpcy5jbG9zZSgpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0b3BXYXRjaEZvck91dHNpZGVDbGlja3MoKSB7XG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy53YXRjaEZvck91dHNpZGVDbGlja3MpO1xuICB9XG59XG4iLCI8ZGl2XG4gIGRhdGEtdGVzdGlkPVwibW9kYWxcIlxuICBjbGFzcz1cInN0ci1jaGF0X19tb2RhbCBzdHItY2hhdF9fbW9kYWwtLXt7IGlzT3BlbiA/ICdvcGVuJyA6ICdjbG9zZScgfX1cIlxuPlxuICA8ZGl2XG4gICAgZGF0YS10ZXN0aWQ9XCJjbG9zZVwiXG4gICAgY2xhc3M9XCJzdHItY2hhdF9fbW9kYWxfX2Nsb3NlLWJ1dHRvblwiXG4gICAgKGNsaWNrKT1cImNsb3NlKClcIlxuICAgIChrZXl1cC5lbnRlcik9XCJjbG9zZSgpXCJcbiAgPlxuICAgIDxzdHJlYW0taWNvbi1wbGFjZWhvbGRlciBpY29uPVwiY2xvc2VcIiAvPlxuICA8L2Rpdj5cbiAgPGRpdiAjbW9kYWxJbm5lciBjbGFzcz1cInN0ci1jaGF0X19tb2RhbF9faW5uZXJcIj5cbiAgICBAaWYgKGlzT3BlbiAmJiBjb250ZW50KSB7XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY29udGVudFwiIC8+XG4gICAgfVxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|