@cometchat/chat-uikit-angular 4.0.0-beta.1.4 → 4.0.0-beta.1.5
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/Calls/CallingExtension.d.ts +4 -3
- package/Calls/CallingExtensionDecorator.d.ts +0 -1
- package/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.d.ts +4 -3
- package/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.d.ts +4 -3
- package/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.d.ts +14 -6
- package/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.d.ts +0 -1
- package/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.d.ts +5 -5
- package/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.d.ts +6 -5
- package/CometChatContacts/cometchat-contacts/cometchat-contacts.component.d.ts +65 -0
- package/CometChatContacts/cometchat-contacts.module.d.ts +12 -0
- package/CometChatConversations/cometchat-conversations/cometchat-conversations.component.d.ts +21 -15
- package/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.d.ts +13 -4
- package/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.d.ts +2 -1
- package/CometChatDetails/cometchat-details/cometchat-details.component.d.ts +7 -7
- package/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.d.ts +14 -12
- package/CometChatGroups/cometchat-groups/cometchat-groups.component.d.ts +12 -6
- package/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.d.ts +6 -4
- package/CometChatList/cometchat-list.component.d.ts +2 -1
- package/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.d.ts +2 -2
- package/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.d.ts +23 -6
- package/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.d.ts +1 -1
- package/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.d.ts +95 -0
- package/CometChatMessageInformation/cometchat-message-information.module.d.ts +10 -0
- package/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.d.ts +45 -26
- package/CometChatMessageList/cometchat-message-list.module.d.ts +3 -1
- package/CometChatMessages/cometchat-messages/cometchat-messages.component.d.ts +5 -3
- package/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.d.ts +0 -1
- package/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.d.ts +3 -3
- package/CometChatUsers/cometchat-users/cometchat-users.component.d.ts +11 -5
- package/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.d.ts +2 -2
- package/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.d.ts +4 -8
- package/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.d.ts +1 -4
- package/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.d.ts +4 -8
- package/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.d.ts +1 -4
- package/Extensions/ImageModeration/ImageModerationExtension.d.ts +4 -4
- package/Extensions/LinkPreviewExtension/LinkPreviewExtension.d.ts +4 -4
- package/Extensions/MessageTranslation/MessageTranslationExtension.d.ts +4 -8
- package/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.d.ts +1 -4
- package/Extensions/PollsExtension/PollsExtension.d.ts +4 -4
- package/Extensions/PollsExtension/PollsExtensionDecorator.d.ts +0 -1
- package/Extensions/Reactions/ReactionExtension.d.ts +4 -4
- package/Extensions/Reactions/ReactionExtensionDecorator.d.ts +0 -1
- package/Extensions/SmartReplies/SmartRepliesExtension.d.ts +4 -8
- package/Extensions/SmartReplies/SmartRepliesExtensionDecorator.d.ts +2 -2
- package/Extensions/Stickers/StickersExtension.d.ts +4 -8
- package/Extensions/Stickers/StickersExtensionDecorator.d.ts +2 -2
- package/Extensions/TextModerator/TextModeratorExtension.d.ts +4 -3
- package/Extensions/TextModerator/TextModeratorExtensionDecorator.d.ts +0 -1
- package/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.d.ts +4 -4
- package/Shared/CometChatUIkit/CometChatUIKit.d.ts +10 -6
- package/Shared/Framework/DataSource.d.ts +0 -1
- package/Shared/Framework/DataSourceDecorator.d.ts +0 -1
- package/Shared/Utils/ComeChatException.d.ts +1 -2
- package/Shared/Utils/MessageUtils.d.ts +2 -1
- package/Shared/Views/CometChatTabs/cometchat-tabs/cometchat-tabs.component.d.ts +38 -9
- package/Shared/Views/CometChatTabs/cometchat-tabs.module.d.ts +1 -5
- package/esm2020/Calls/CallingExtension.mjs +7 -4
- package/esm2020/Calls/CallingExtensionDecorator.mjs +4 -4
- package/esm2020/Calls/CometChatCallButtons/cometchat-call-buttons/cometchat-call-buttons.component.mjs +58 -21
- package/esm2020/Calls/CometChatIncomingCall/cometchat-incoming-call/cometchat-incoming-call.component.mjs +48 -17
- package/esm2020/Calls/CometChatOngoingCall/cometchat-ongoing-call/cometchat-ongoing-call.component.mjs +110 -9
- package/esm2020/Calls/CometChatOutgoingCall/cometchat-outgoing-call/cometchat-outgoing-call.component.mjs +9 -7
- package/esm2020/CometChatAddMembers/cometchat-add-members/cometchat-add-members.component.mjs +9 -6
- package/esm2020/CometChatBannedMembers/cometchat-banned-members/cometchat-banned-members.component.mjs +12 -7
- package/esm2020/CometChatContacts/cometchat-contacts/cometchat-contacts.component.mjs +273 -0
- package/esm2020/CometChatContacts/cometchat-contacts.module.mjs +23 -0
- package/esm2020/CometChatConversations/cometchat-conversations/cometchat-conversations.component.mjs +122 -65
- package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages/cometchat-conversations-with-messages.component.mjs +105 -17
- package/esm2020/CometChatConversationsWithMessages/cometchat-conversations-with-messages.module.mjs +6 -2
- package/esm2020/CometChatDetails/cometchat-details/cometchat-details.component.mjs +13 -11
- package/esm2020/CometChatGroupMembers/cometchat-group-members/cometchat-group-members.component.mjs +45 -46
- package/esm2020/CometChatGroups/cometchat-groups/cometchat-groups.component.mjs +69 -28
- package/esm2020/CometChatGroupsWithMessages/cometchat-groups-with-messages/cometchat-groups-with-messages.component.mjs +60 -21
- package/esm2020/CometChatList/cometchat-list.component.mjs +8 -9
- package/esm2020/CometChatMessageBubble/cometchat-message-bubble/cometchat-message-bubble.component.mjs +4 -5
- package/esm2020/CometChatMessageComposer/cometchat-message-composer/cometchat-message-composer.component.mjs +200 -30
- package/esm2020/CometChatMessageHeader/cometchat-message-header/cometchat-message-header.component.mjs +4 -5
- package/esm2020/CometChatMessageInformation/cometchat-message-information/cometchat-message-information.component.mjs +288 -0
- package/esm2020/CometChatMessageInformation/cometchat-message-information.module.mjs +28 -0
- package/esm2020/CometChatMessageList/cometchat-message-list/cometchat-message-list.component.mjs +401 -185
- package/esm2020/CometChatMessageList/cometchat-message-list.module.mjs +12 -4
- package/esm2020/CometChatMessages/cometchat-messages/cometchat-messages.component.mjs +28 -15
- package/esm2020/CometChatThreadedMessages/cometchat-threaded-messages/cometchat-threaded-messages.component.mjs +3 -4
- package/esm2020/CometChatTransferOwnership/cometchat-transfer-ownership/cometchat-transfer-ownership.component.mjs +14 -15
- package/esm2020/CometChatUsers/cometchat-users/cometchat-users.component.mjs +72 -45
- package/esm2020/CometChatUsersWithMessages/cometchat-users-with-messages/cometchat-users-with-messages.component.mjs +21 -9
- package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtension.mjs +7 -6
- package/esm2020/Extensions/CollaborativeDocument/CollaborativeDocumentExtensionDecorator.mjs +3 -4
- package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtension.mjs +7 -6
- package/esm2020/Extensions/CollaborativeWhiteboard/CollaborativeWhiteboardExtensionDecorator.mjs +3 -4
- package/esm2020/Extensions/ImageModeration/ImageModerationExtension.mjs +7 -5
- package/esm2020/Extensions/LinkPreviewExtension/LinkPreviewExtension.mjs +7 -5
- package/esm2020/Extensions/MessageTranslation/MessageTranslationExtension.mjs +7 -6
- package/esm2020/Extensions/MessageTranslation/MessageTranslationExtensionDecorator.mjs +2 -4
- package/esm2020/Extensions/PollsExtension/PollsExtension.mjs +7 -5
- package/esm2020/Extensions/PollsExtension/PollsExtensionDecorator.mjs +1 -1
- package/esm2020/Extensions/Reactions/ReactionExtension.mjs +7 -5
- package/esm2020/Extensions/Reactions/ReactionExtensionDecorator.mjs +3 -2
- package/esm2020/Extensions/SmartReplies/SmartRepliesExtension.mjs +7 -6
- package/esm2020/Extensions/SmartReplies/SmartRepliesExtensionDecorator.mjs +5 -7
- package/esm2020/Extensions/Stickers/StickersExtension.mjs +7 -10
- package/esm2020/Extensions/Stickers/StickersExtensionDecorator.mjs +5 -7
- package/esm2020/Extensions/TextModerator/TextModeratorExtension.mjs +16 -4
- package/esm2020/Extensions/TextModerator/TextModeratorExtensionDecorator.mjs +1 -1
- package/esm2020/Extensions/ThumbnailGeneration/ThumbnailGenerationExtension.mjs +7 -5
- package/esm2020/Shared/CometChatUIkit/CometChatUIKit.mjs +66 -32
- package/esm2020/Shared/Framework/DataSource.mjs +1 -1
- package/esm2020/Shared/Framework/DataSourceDecorator.mjs +1 -1
- package/esm2020/Shared/Utils/ComeChatException.mjs +2 -2
- package/esm2020/Shared/Utils/MessageUtils.mjs +36 -6
- package/esm2020/Shared/Views/CometChatTabs/cometchat-tabs/cometchat-tabs.component.mjs +61 -25
- package/esm2020/Shared/Views/CometChatTabs/cometchat-tabs.module.mjs +2 -18
- package/esm2020/public-api.mjs +8 -5
- package/fesm2015/cometchat-chat-uikit-angular.mjs +3658 -3185
- package/fesm2015/cometchat-chat-uikit-angular.mjs.map +1 -1
- package/fesm2020/cometchat-chat-uikit-angular.mjs +3639 -3164
- package/fesm2020/cometchat-chat-uikit-angular.mjs.map +1 -1
- package/package.json +5 -5
- package/public-api.d.ts +7 -4
- package/Calls/CometChatCallDetails/cometchat-call-details/cometchat-call-details.component.d.ts +0 -139
- package/Calls/CometChatCallDetails/cometchat-call-details.module.d.ts +0 -10
- package/Calls/CometChatCallHistory/cometchat-call-history/cometchat-call-history.component.d.ts +0 -125
- package/Calls/CometChatCallHistory/cometchat-call-history.module.d.ts +0 -10
- package/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details/cometchat-call-history-with-details.component.d.ts +0 -59
- package/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details.module.d.ts +0 -12
- package/esm2020/Calls/CometChatCallDetails/cometchat-call-details/cometchat-call-details.component.mjs +0 -452
- package/esm2020/Calls/CometChatCallDetails/cometchat-call-details.module.mjs +0 -31
- package/esm2020/Calls/CometChatCallHistory/cometchat-call-history/cometchat-call-history.component.mjs +0 -397
- package/esm2020/Calls/CometChatCallHistory/cometchat-call-history.module.mjs +0 -28
- package/esm2020/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details/cometchat-call-history-with-details.component.mjs +0 -143
- package/esm2020/Calls/CometChatCallHistoryWithDetails/cometchat-call-history-with-details.module.mjs +0 -39
|
@@ -1,397 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
-
import { CometChat } from '@cometchat-pro/chat';
|
|
3
|
-
import { States, TitleAlignment, SelectionMode, } from "@cometchat/uikit-shared";
|
|
4
|
-
import { AvatarStyle, DateStyle, ListItemStyle } from '@cometchat/uikit-elements';
|
|
5
|
-
import { localize, CometChatUIKitConstants, fontHelper, DatePatterns, CometChatCallEvents } from '@cometchat/uikit-resources';
|
|
6
|
-
import { CallHistoryStyle, CallingDetailsUtils } from '@cometchat/uikit-shared';
|
|
7
|
-
import { CometChatException } from '../../../Shared/Utils/ComeChatException';
|
|
8
|
-
import * as i0 from "@angular/core";
|
|
9
|
-
import * as i1 from "../../../CometChatTheme.service";
|
|
10
|
-
import * as i2 from "../../../CometChatList/cometchat-list.component";
|
|
11
|
-
import * as i3 from "@angular/common";
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* CometChatCallHistory is a wrapper component which renders callhistory of the loggedinuser using CometChatListItem && CometChatList.
|
|
15
|
-
*
|
|
16
|
-
* @version 1.0.0
|
|
17
|
-
* @author CometChatTeam
|
|
18
|
-
* @copyright © 2022 CometChat Inc.
|
|
19
|
-
*
|
|
20
|
-
*/
|
|
21
|
-
export class CometChatCallHistoryComponent {
|
|
22
|
-
constructor(ref, themeService) {
|
|
23
|
-
this.ref = ref;
|
|
24
|
-
this.themeService = themeService;
|
|
25
|
-
this.hideSeparator = false;
|
|
26
|
-
this.selectionMode = SelectionMode.none;
|
|
27
|
-
this.hideError = false;
|
|
28
|
-
this.title = localize("CALLS");
|
|
29
|
-
this.onError = (error) => {
|
|
30
|
-
console.log(error);
|
|
31
|
-
};
|
|
32
|
-
this.loadingIconURL = "assets/Spinner.svg";
|
|
33
|
-
this.datePattern = DatePatterns.DayDateTime;
|
|
34
|
-
this.emptyStateText = localize("NO_callS_FOUND");
|
|
35
|
-
this.errorStateText = localize("SOMETHING_WRONG");
|
|
36
|
-
this.titleAlignment = TitleAlignment.left;
|
|
37
|
-
this.avatarStyle = {
|
|
38
|
-
borderRadius: "16px",
|
|
39
|
-
width: "32px",
|
|
40
|
-
height: "32px",
|
|
41
|
-
};
|
|
42
|
-
this.dateStyle = {};
|
|
43
|
-
this.callHistoryStyle = {
|
|
44
|
-
width: "100%",
|
|
45
|
-
height: "100%",
|
|
46
|
-
background: "",
|
|
47
|
-
border: "",
|
|
48
|
-
borderRadius: "",
|
|
49
|
-
titleTextFont: "",
|
|
50
|
-
titleTextColor: "",
|
|
51
|
-
subtitleTextFont: "",
|
|
52
|
-
subtitleTextColor: "",
|
|
53
|
-
emptyStateTextFont: "",
|
|
54
|
-
emptyStateTextColor: "",
|
|
55
|
-
errorStateTextFont: "",
|
|
56
|
-
errorStateTextColor: "",
|
|
57
|
-
loadingIconTint: "",
|
|
58
|
-
separatorColor: "rgb(222 222 222 / 46%)",
|
|
59
|
-
};
|
|
60
|
-
this.listItemStyle = {};
|
|
61
|
-
this.selectionmodeEnum = SelectionMode;
|
|
62
|
-
this.state = States.loading;
|
|
63
|
-
this.listStyle = {};
|
|
64
|
-
this.limit = 30;
|
|
65
|
-
this.callsList = [];
|
|
66
|
-
this.callsListenerId = "callsList_" + new Date().getTime();
|
|
67
|
-
this.loggedInUser = null;
|
|
68
|
-
this.onScrolledToBottom = null;
|
|
69
|
-
this.iconStyle = {
|
|
70
|
-
height: "16px",
|
|
71
|
-
width: "16px",
|
|
72
|
-
iconTint: "RGBA(20, 20, 20, 0.68)"
|
|
73
|
-
};
|
|
74
|
-
this.fetchNextcallList = () => {
|
|
75
|
-
this.onScrolledToBottom = null;
|
|
76
|
-
this.state = States.loading;
|
|
77
|
-
this.ref.detectChanges();
|
|
78
|
-
try {
|
|
79
|
-
this.callsRequest.fetchPrevious().then((callList) => {
|
|
80
|
-
if (callList?.length > 0) {
|
|
81
|
-
this.onScrolledToBottom = this.fetchNextcallList;
|
|
82
|
-
this.ref.detectChanges();
|
|
83
|
-
}
|
|
84
|
-
if ((callList.length <= 0 && this.callsList?.length <= 0) || (callList.length === 0 && this.callsList?.length <= 0)) {
|
|
85
|
-
this.state = States.empty;
|
|
86
|
-
this.ref.detectChanges();
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
this.state = States.loaded;
|
|
90
|
-
this.callsList = [...this.callsList, ...callList.reverse()];
|
|
91
|
-
this.ref.detectChanges();
|
|
92
|
-
}
|
|
93
|
-
}, (error) => {
|
|
94
|
-
if (this.onError) {
|
|
95
|
-
this.onError(CometChatException(error));
|
|
96
|
-
}
|
|
97
|
-
this.state = States.error;
|
|
98
|
-
this.ref.detectChanges();
|
|
99
|
-
}).catch((error) => {
|
|
100
|
-
if (this.onError) {
|
|
101
|
-
this.onError(error);
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
catch (error) {
|
|
106
|
-
this.state = States.error;
|
|
107
|
-
this.ref.detectChanges();
|
|
108
|
-
if (this.onError) {
|
|
109
|
-
this.onError(CometChatException(error));
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
/**
|
|
114
|
-
* @param {CometChat.Call} call
|
|
115
|
-
*/
|
|
116
|
-
this.onClick = (call) => {
|
|
117
|
-
if (this.onItemClick) {
|
|
118
|
-
this.onItemClick(call);
|
|
119
|
-
}
|
|
120
|
-
};
|
|
121
|
-
/**
|
|
122
|
-
* @param {CometChat.Call} call
|
|
123
|
-
*/
|
|
124
|
-
/**
|
|
125
|
-
* @param {CometChat.Call} call
|
|
126
|
-
*/
|
|
127
|
-
this.getActiveCall = (call) => {
|
|
128
|
-
if (this.selectionMode == SelectionMode.none || !this.selectionMode) {
|
|
129
|
-
if (call.getId() == this.activeCall?.getId()) {
|
|
130
|
-
return true;
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
this.callStyle = () => {
|
|
141
|
-
return {
|
|
142
|
-
height: this.callHistoryStyle.height,
|
|
143
|
-
width: this.callHistoryStyle.width,
|
|
144
|
-
background: this.callHistoryStyle.background,
|
|
145
|
-
border: this.callHistoryStyle.border,
|
|
146
|
-
borderRadius: this.callHistoryStyle.borderRadius
|
|
147
|
-
};
|
|
148
|
-
};
|
|
149
|
-
this.subtitleStyle = () => {
|
|
150
|
-
return {
|
|
151
|
-
font: this.callHistoryStyle.subtitleTextFont,
|
|
152
|
-
color: this.callHistoryStyle.subtitleTextColor
|
|
153
|
-
};
|
|
154
|
-
};
|
|
155
|
-
this.state = States.loading;
|
|
156
|
-
}
|
|
157
|
-
ngOnInit() {
|
|
158
|
-
this.setThemeStyle();
|
|
159
|
-
CometChat.getLoggedinUser().then((user) => {
|
|
160
|
-
this.loggedInUser = user;
|
|
161
|
-
this.callsRequest = this.getRequestBuilder();
|
|
162
|
-
this.fetchNextcallList();
|
|
163
|
-
this.attachListeners();
|
|
164
|
-
this.subscribeToEvents();
|
|
165
|
-
}).catch((error) => {
|
|
166
|
-
if (this.onError) {
|
|
167
|
-
this.onError(error);
|
|
168
|
-
}
|
|
169
|
-
});
|
|
170
|
-
this.state = States.loading;
|
|
171
|
-
}
|
|
172
|
-
callMenuOption(event, call) {
|
|
173
|
-
let onClick = event?.detail?.data?.onClick;
|
|
174
|
-
if (onClick) {
|
|
175
|
-
onClick(call);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
subscribeToEvents() {
|
|
179
|
-
this.ccCallAccepted = CometChatCallEvents.ccCallAccepted.subscribe((call) => {
|
|
180
|
-
this.addCall(call);
|
|
181
|
-
});
|
|
182
|
-
this.ccCallRejected = CometChatCallEvents.ccCallRejected.subscribe((call) => {
|
|
183
|
-
this.addCall(call);
|
|
184
|
-
});
|
|
185
|
-
this.ccOutgoingCall = CometChatCallEvents.ccOutgoingCall.subscribe((call) => {
|
|
186
|
-
this.addCall(call);
|
|
187
|
-
});
|
|
188
|
-
this.ccCallEnded = CometChatCallEvents.ccCallEnded.subscribe((call) => {
|
|
189
|
-
if (call) {
|
|
190
|
-
this.addCall(call);
|
|
191
|
-
}
|
|
192
|
-
});
|
|
193
|
-
}
|
|
194
|
-
unsubscribeToEvents() {
|
|
195
|
-
this.ccCallAccepted?.unsubscribe();
|
|
196
|
-
this.ccCallRejected?.unsubscribe();
|
|
197
|
-
this.ccOutgoingCall?.unsubscribe();
|
|
198
|
-
this.ccCallEnded?.unsubscribe();
|
|
199
|
-
}
|
|
200
|
-
ngOnDestroy() {
|
|
201
|
-
this.callsRequest = null;
|
|
202
|
-
this.ref.detach();
|
|
203
|
-
this.removeListener();
|
|
204
|
-
this.unsubscribeToEvents();
|
|
205
|
-
}
|
|
206
|
-
/**
|
|
207
|
-
* @param {CometChat.Call} call
|
|
208
|
-
*/
|
|
209
|
-
/**
|
|
210
|
-
* @param {CometChat.Call} call
|
|
211
|
-
*/
|
|
212
|
-
attachListeners() {
|
|
213
|
-
CometChat.addCallListener(this.callsListenerId, new CometChat.CallListener({
|
|
214
|
-
onIncomingCallReceived: (call) => {
|
|
215
|
-
this.addCall(call);
|
|
216
|
-
},
|
|
217
|
-
onIncomingCallCancelled: (call) => {
|
|
218
|
-
this.addCall(call);
|
|
219
|
-
},
|
|
220
|
-
onOutgoingCallAccepted: (call) => {
|
|
221
|
-
this.addCall(call);
|
|
222
|
-
},
|
|
223
|
-
onOutgoingCallRejected: (call) => {
|
|
224
|
-
this.addCall(call);
|
|
225
|
-
},
|
|
226
|
-
}));
|
|
227
|
-
}
|
|
228
|
-
removeListener() {
|
|
229
|
-
CometChat.removeCallListener(this.callsListenerId);
|
|
230
|
-
}
|
|
231
|
-
getSubtitle(call) {
|
|
232
|
-
return CallingDetailsUtils.getCallStatus(call, this.loggedInUser);
|
|
233
|
-
}
|
|
234
|
-
getCallTypeIcon(call) {
|
|
235
|
-
if (call.getType() == CometChatUIKitConstants.MessageTypes.audio) {
|
|
236
|
-
return "assets/Audio-Call.svg";
|
|
237
|
-
}
|
|
238
|
-
else {
|
|
239
|
-
return "VideoCallIcon";
|
|
240
|
-
}
|
|
241
|
-
}
|
|
242
|
-
getCallerName(call) {
|
|
243
|
-
if (CallingDetailsUtils.isSentByMe(call, this.loggedInUser)) {
|
|
244
|
-
return call.getReceiver().getName();
|
|
245
|
-
}
|
|
246
|
-
return call.getSender().getName();
|
|
247
|
-
}
|
|
248
|
-
getRequestBuilder() {
|
|
249
|
-
if (this.messageRequestBuilder) {
|
|
250
|
-
return this.messageRequestBuilder
|
|
251
|
-
.build();
|
|
252
|
-
}
|
|
253
|
-
else {
|
|
254
|
-
return new CometChat.MessagesRequestBuilder()
|
|
255
|
-
.setLimit(this.limit)
|
|
256
|
-
.setTypes([CometChatUIKitConstants.MessageTypes.audio, CometChatUIKitConstants.MessageTypes.video])
|
|
257
|
-
.setCategories([CometChatUIKitConstants.MessageCategory.call])
|
|
258
|
-
.build();
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
/**
|
|
262
|
-
* addcall
|
|
263
|
-
* @param call
|
|
264
|
-
*/
|
|
265
|
-
addCall(call) {
|
|
266
|
-
this.callsList.unshift(call);
|
|
267
|
-
this.ref.detectChanges();
|
|
268
|
-
}
|
|
269
|
-
setThemeStyle() {
|
|
270
|
-
this.iconStyle.iconTint = this.themeService.theme.palette.getAccent600();
|
|
271
|
-
this.setAvatarStyle();
|
|
272
|
-
this.setDateStyle();
|
|
273
|
-
this.setCallsStyle();
|
|
274
|
-
this.listStyle = {
|
|
275
|
-
titleTextFont: this.callHistoryStyle.titleTextFont,
|
|
276
|
-
titleTextColor: this.callHistoryStyle.titleTextColor,
|
|
277
|
-
emptyStateTextFont: this.callHistoryStyle.emptyStateTextFont,
|
|
278
|
-
emptyStateTextColor: this.callHistoryStyle.emptyStateTextColor,
|
|
279
|
-
errorStateTextFont: this.callHistoryStyle.errorStateTextFont,
|
|
280
|
-
errorStateTextColor: this.callHistoryStyle.errorStateTextColor,
|
|
281
|
-
loadingIconTint: this.callHistoryStyle.loadingIconTint,
|
|
282
|
-
separatorColor: this.callHistoryStyle.separatorColor,
|
|
283
|
-
};
|
|
284
|
-
}
|
|
285
|
-
setAvatarStyle() {
|
|
286
|
-
let defaultStyle = new AvatarStyle({
|
|
287
|
-
borderRadius: "24px",
|
|
288
|
-
width: "36px",
|
|
289
|
-
height: "36px",
|
|
290
|
-
border: "none",
|
|
291
|
-
backgroundColor: this.themeService.theme.palette.getAccent700(),
|
|
292
|
-
nameTextColor: this.themeService.theme.palette.getAccent900(),
|
|
293
|
-
backgroundSize: "cover",
|
|
294
|
-
nameTextFont: fontHelper(this.themeService.theme.typography.subtitle1),
|
|
295
|
-
outerViewBorder: "",
|
|
296
|
-
outerViewBorderSpacing: "",
|
|
297
|
-
});
|
|
298
|
-
this.avatarStyle = { ...defaultStyle, ...this.avatarStyle };
|
|
299
|
-
}
|
|
300
|
-
setDateStyle() {
|
|
301
|
-
let defaultStyle = new DateStyle({
|
|
302
|
-
textFont: fontHelper(this.themeService.theme.typography.caption2),
|
|
303
|
-
textColor: this.themeService.theme.palette.getAccent600(),
|
|
304
|
-
background: "transparent"
|
|
305
|
-
});
|
|
306
|
-
this.dateStyle = { ...defaultStyle, ...this.dateStyle };
|
|
307
|
-
}
|
|
308
|
-
getListItemStyle(call) {
|
|
309
|
-
let defaultStyle = new ListItemStyle({
|
|
310
|
-
height: "45px",
|
|
311
|
-
width: "100%",
|
|
312
|
-
background: this.themeService.theme.palette.getBackground(),
|
|
313
|
-
activeBackground: this.themeService.theme.palette.getAccent100(),
|
|
314
|
-
borderRadius: "0",
|
|
315
|
-
titleFont: fontHelper(this.themeService.theme.typography.title2),
|
|
316
|
-
titleColor: CallingDetailsUtils.isMissedCall(call, this.loggedInUser) ? this.themeService.theme.palette.getError() : this.themeService.theme.palette.getAccent(),
|
|
317
|
-
border: "none",
|
|
318
|
-
separatorColor: this.themeService.theme.palette.getAccent200(),
|
|
319
|
-
hoverBackground: this.themeService.theme.palette.getAccent50()
|
|
320
|
-
});
|
|
321
|
-
return { ...defaultStyle, ...this.listItemStyle };
|
|
322
|
-
}
|
|
323
|
-
setCallsStyle() {
|
|
324
|
-
let defaultStyle = new CallHistoryStyle({
|
|
325
|
-
subtitleTextFont: fontHelper(this.themeService.theme.typography.subtitle2),
|
|
326
|
-
subtitleTextColor: this.themeService.theme.palette.getAccent600(),
|
|
327
|
-
background: this.themeService.theme.palette.getBackground(),
|
|
328
|
-
border: `1px solid ${this.themeService.theme.palette.getAccent50()}`,
|
|
329
|
-
titleTextFont: fontHelper(this.themeService.theme.typography.title1),
|
|
330
|
-
titleTextColor: this.themeService.theme.palette.getAccent(),
|
|
331
|
-
emptyStateTextFont: fontHelper(this.themeService.theme.typography.title1),
|
|
332
|
-
emptyStateTextColor: this.themeService.theme.palette.getAccent600(),
|
|
333
|
-
errorStateTextFont: fontHelper(this.themeService.theme.typography.title1),
|
|
334
|
-
errorStateTextColor: this.themeService.theme.palette.getAccent600(),
|
|
335
|
-
loadingIconTint: this.themeService.theme.palette.getAccent600(),
|
|
336
|
-
separatorColor: this.themeService.theme.palette.getAccent400(),
|
|
337
|
-
});
|
|
338
|
-
this.callHistoryStyle = { ...this.callHistoryStyle, ...defaultStyle };
|
|
339
|
-
}
|
|
340
|
-
}
|
|
341
|
-
CometChatCallHistoryComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistoryComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.CometChatThemeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
342
|
-
CometChatCallHistoryComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: CometChatCallHistoryComponent, selector: "cometchat-call-history", inputs: { messageRequestBuilder: "messageRequestBuilder", subtitleView: "subtitleView", listItemView: "listItemView", menu: "menu", options: "options", activeCall: "activeCall", hideSeparator: "hideSeparator", selectionMode: "selectionMode", hideError: "hideError", title: "title", onError: "onError", onSelect: "onSelect", emptyStateView: "emptyStateView", errorStateView: "errorStateView", loadingIconURL: "loadingIconURL", datePattern: "datePattern", loadingStateView: "loadingStateView", emptyStateText: "emptyStateText", errorStateText: "errorStateText", titleAlignment: "titleAlignment", avatarStyle: "avatarStyle", dateStyle: "dateStyle", callHistoryStyle: "callHistoryStyle", listItemStyle: "listItemStyle", onItemClick: "onItemClick" }, ngImport: i0, template: "<div class=\"cc-call-history\" [ngStyle]=\"callStyle()\">\n <div class=\"cc-menus\" *ngIf=\"menu\">\n <ng-container *ngTemplateOutlet=\"menu\">\n </ng-container>\n</div>\n <cometchat-list [hideSearch]=\"true\" [listItemView]=\"listItemView ? listItemView : listItem\" [onScrolledToBottom]=\"onScrolledToBottom\"\n [list]=\"callsList\" [hideError]=\"hideError\" [title]=\"title\"\n [emptyStateText]=\"emptyStateText\" [loadingIconURL]=\"loadingIconURL\"\n [titleAlignment]=\"titleAlignment\" [loadingStateView]=\"loadingStateView\" [emptyStateView]=\"emptyStateView\"\n [errorStateText]=\"errorStateText\" [errorStateView]=\"errorStateView\" [listStyle]=\"listStyle\" [state]=\"state\">\n </cometchat-list>\n <ng-template #listItem let-call>\n <cometchat-list-item [title]=\"getCallerName(call)\" [avatarURL]=\"call?.avatar\" [avatarName]=\"getCallerName(call)\"\n [listItemStyle]=\"getListItemStyle(call)\" [avatarStyle]=\"avatarStyle\"\n [hideSeparator]=\"hideSeparator\" (cc-listitem-clicked)=\"onClick(call)\" [isActive]=\"getActiveCall(call)\">\n <div slot=\"subtitleView\" class=\"cc-call-history__subtitle-view\" *ngIf=\"subtitleView;else groupSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #groupSubtitle>\n <div slot=\"subtitleView\" [ngStyle]=\"subtitleStyle()\" class=\"cc-call-history__subtitle-view\">\n <div class=\"cc-call__icon\">\n <cometchat-icon [iconStyle]=\"iconStyle\" [URL]=\"getCallTypeIcon(call)\"></cometchat-icon>\n </div>\n <div class=\"cc-call__type\">\n {{getSubtitle(call)}}\n </div>\n </div>\n </ng-template>\n <div slot=\"menuView\" class=\"cc-call-history__options\" *ngIf=\"options\">\n <cometchat-menu-list (cc-menu-clicked)=\"callMenuOption($event,call)\" [data]=\"options(call)\">\n </cometchat-menu-list>\n </div>\n <div slot=\"tailView\" class=\"cc-call-history__tail-view\">\n <div class=\"tail__view\" *ngIf=\"selectionMode == selectionmodeEnum.none\">\n <div class=\"cc-call-history__date\">\n <cometchat-date [dateStyle]=\"dateStyle\" [timestamp]=\"call?.sentAt\" [pattern]=\"datePattern\"></cometchat-date>\n </div>\n </div>\n <div class=\"cc-call-history__selection-view\" *ngIf=\"selectionMode != selectionmodeEnum.none\">\n <ng-container *ngTemplateOutlet=\"tailView\">\n </ng-container>\n </div>\n </div>\n </cometchat-list-item>\n <ng-template #tailView>\n <div *ngIf=\"selectionMode == selectionmodeEnum.single\">\n <cometchat-radio-button (cc-radio-button-changed)=\"onSelect ? onSelect(call) : null\"></cometchat-radio-button>\n </div>\n <div *ngIf=\"selectionMode == selectionmodeEnum.multiple\">\n <cometchat-checkbox (cc-checkbox-changed)=\"onSelect ? onSelect(call) : null\"></cometchat-checkbox>\n </div>\n </ng-template>\n </ng-template>\n</div>", styles: [".cc-call-history{height:100%;width:100%;box-sizing:border-box;padding-bottom:24px}.cc-call-history__tail-view{position:relative}.cc-menus{position:absolute;right:12px;top:6px}.cc-call-history__subtitle-view{display:flex;align-items:center;justify-content:flex-start;gap:6px}\n"], components: [{ type: i2.CometchatListComponent, selector: "cometchat-list", inputs: ["listItemView", "onScrolledToBottom", "onScrolledToTop", "list", "onSearch", "searchText", "searchIconURL", "listStyle", "searchPlaceholderText", "hideSearch", "hideError", "title", "titleAlignment", "errorStateView", "loadingStateView", "emptyStateView", "state", "errorStateText", "emptyStateText", "loadingIconURL", "showSectionHeader", "sectionHeaderField"] }], directives: [{ type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
343
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistoryComponent, decorators: [{
|
|
344
|
-
type: Component,
|
|
345
|
-
args: [{ selector: "cometchat-call-history", changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cc-call-history\" [ngStyle]=\"callStyle()\">\n <div class=\"cc-menus\" *ngIf=\"menu\">\n <ng-container *ngTemplateOutlet=\"menu\">\n </ng-container>\n</div>\n <cometchat-list [hideSearch]=\"true\" [listItemView]=\"listItemView ? listItemView : listItem\" [onScrolledToBottom]=\"onScrolledToBottom\"\n [list]=\"callsList\" [hideError]=\"hideError\" [title]=\"title\"\n [emptyStateText]=\"emptyStateText\" [loadingIconURL]=\"loadingIconURL\"\n [titleAlignment]=\"titleAlignment\" [loadingStateView]=\"loadingStateView\" [emptyStateView]=\"emptyStateView\"\n [errorStateText]=\"errorStateText\" [errorStateView]=\"errorStateView\" [listStyle]=\"listStyle\" [state]=\"state\">\n </cometchat-list>\n <ng-template #listItem let-call>\n <cometchat-list-item [title]=\"getCallerName(call)\" [avatarURL]=\"call?.avatar\" [avatarName]=\"getCallerName(call)\"\n [listItemStyle]=\"getListItemStyle(call)\" [avatarStyle]=\"avatarStyle\"\n [hideSeparator]=\"hideSeparator\" (cc-listitem-clicked)=\"onClick(call)\" [isActive]=\"getActiveCall(call)\">\n <div slot=\"subtitleView\" class=\"cc-call-history__subtitle-view\" *ngIf=\"subtitleView;else groupSubtitle\">\n <ng-container *ngTemplateOutlet=\"subtitleView\">\n </ng-container>\n </div>\n <ng-template #groupSubtitle>\n <div slot=\"subtitleView\" [ngStyle]=\"subtitleStyle()\" class=\"cc-call-history__subtitle-view\">\n <div class=\"cc-call__icon\">\n <cometchat-icon [iconStyle]=\"iconStyle\" [URL]=\"getCallTypeIcon(call)\"></cometchat-icon>\n </div>\n <div class=\"cc-call__type\">\n {{getSubtitle(call)}}\n </div>\n </div>\n </ng-template>\n <div slot=\"menuView\" class=\"cc-call-history__options\" *ngIf=\"options\">\n <cometchat-menu-list (cc-menu-clicked)=\"callMenuOption($event,call)\" [data]=\"options(call)\">\n </cometchat-menu-list>\n </div>\n <div slot=\"tailView\" class=\"cc-call-history__tail-view\">\n <div class=\"tail__view\" *ngIf=\"selectionMode == selectionmodeEnum.none\">\n <div class=\"cc-call-history__date\">\n <cometchat-date [dateStyle]=\"dateStyle\" [timestamp]=\"call?.sentAt\" [pattern]=\"datePattern\"></cometchat-date>\n </div>\n </div>\n <div class=\"cc-call-history__selection-view\" *ngIf=\"selectionMode != selectionmodeEnum.none\">\n <ng-container *ngTemplateOutlet=\"tailView\">\n </ng-container>\n </div>\n </div>\n </cometchat-list-item>\n <ng-template #tailView>\n <div *ngIf=\"selectionMode == selectionmodeEnum.single\">\n <cometchat-radio-button (cc-radio-button-changed)=\"onSelect ? onSelect(call) : null\"></cometchat-radio-button>\n </div>\n <div *ngIf=\"selectionMode == selectionmodeEnum.multiple\">\n <cometchat-checkbox (cc-checkbox-changed)=\"onSelect ? onSelect(call) : null\"></cometchat-checkbox>\n </div>\n </ng-template>\n </ng-template>\n</div>", styles: [".cc-call-history{height:100%;width:100%;box-sizing:border-box;padding-bottom:24px}.cc-call-history__tail-view{position:relative}.cc-menus{position:absolute;right:12px;top:6px}.cc-call-history__subtitle-view{display:flex;align-items:center;justify-content:flex-start;gap:6px}\n"] }]
|
|
346
|
-
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.CometChatThemeService }]; }, propDecorators: { messageRequestBuilder: [{
|
|
347
|
-
type: Input
|
|
348
|
-
}], subtitleView: [{
|
|
349
|
-
type: Input
|
|
350
|
-
}], listItemView: [{
|
|
351
|
-
type: Input
|
|
352
|
-
}], menu: [{
|
|
353
|
-
type: Input
|
|
354
|
-
}], options: [{
|
|
355
|
-
type: Input
|
|
356
|
-
}], activeCall: [{
|
|
357
|
-
type: Input
|
|
358
|
-
}], hideSeparator: [{
|
|
359
|
-
type: Input
|
|
360
|
-
}], selectionMode: [{
|
|
361
|
-
type: Input
|
|
362
|
-
}], hideError: [{
|
|
363
|
-
type: Input
|
|
364
|
-
}], title: [{
|
|
365
|
-
type: Input
|
|
366
|
-
}], onError: [{
|
|
367
|
-
type: Input
|
|
368
|
-
}], onSelect: [{
|
|
369
|
-
type: Input
|
|
370
|
-
}], emptyStateView: [{
|
|
371
|
-
type: Input
|
|
372
|
-
}], errorStateView: [{
|
|
373
|
-
type: Input
|
|
374
|
-
}], loadingIconURL: [{
|
|
375
|
-
type: Input
|
|
376
|
-
}], datePattern: [{
|
|
377
|
-
type: Input
|
|
378
|
-
}], loadingStateView: [{
|
|
379
|
-
type: Input
|
|
380
|
-
}], emptyStateText: [{
|
|
381
|
-
type: Input
|
|
382
|
-
}], errorStateText: [{
|
|
383
|
-
type: Input
|
|
384
|
-
}], titleAlignment: [{
|
|
385
|
-
type: Input
|
|
386
|
-
}], avatarStyle: [{
|
|
387
|
-
type: Input
|
|
388
|
-
}], dateStyle: [{
|
|
389
|
-
type: Input
|
|
390
|
-
}], callHistoryStyle: [{
|
|
391
|
-
type: Input
|
|
392
|
-
}], listItemStyle: [{
|
|
393
|
-
type: Input
|
|
394
|
-
}], onItemClick: [{
|
|
395
|
-
type: Input
|
|
396
|
-
}] } });
|
|
397
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNhbGwtaGlzdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdENhbGxIaXN0b3J5L2NvbWV0Y2hhdC1jYWxsLWhpc3RvcnkvY29tZXRjaGF0LWNhbGwtaGlzdG9yeS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdENhbGxIaXN0b3J5L2NvbWV0Y2hhdC1jYWxsLWhpc3RvcnkvY29tZXRjaGF0LWNhbGwtaGlzdG9yeS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQWlELE1BQU0sZUFBZSxDQUFDO0FBQzVJLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxhQUFhLEdBQXVDLE1BQU0seUJBQXlCLENBQUM7QUFDckgsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQWEsYUFBYSxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFHNUYsT0FBTyxFQUFtQixRQUFRLEVBQUUsdUJBQXVCLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBb0QsTUFBTSw0QkFBNEIsQ0FBQztBQUNqTSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUMsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMvRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7Ozs7QUFDN0U7Ozs7Ozs7O0VBUUU7QUFPRixNQUFNLE9BQU8sNkJBQTZCO0lBa0V4QyxZQUFvQixHQUFzQixFQUFVLFlBQW1DO1FBQW5FLFFBQUcsR0FB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b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tZXRDaGF0IH0gZnJvbSAnQGNvbWV0Y2hhdC1wcm8vY2hhdCc7XG5pbXBvcnQgeyBTdGF0ZXMsIFRpdGxlQWxpZ25tZW50LCBTZWxlY3Rpb25Nb2RlLCBHcm91cHNTdHlsZSwgTGlzdFN0eWxlLCBCYXNlU3R5bGUsICB9IGZyb20gXCJAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZFwiO1xuaW1wb3J0IHsgQXZhdGFyU3R5bGUsIERhdGVTdHlsZSwgSWNvblN0eWxlLCBMaXN0SXRlbVN0eWxlIH0gZnJvbSAnQGNvbWV0Y2hhdC91aWtpdC1lbGVtZW50cydcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ29tZXRDaGF0VGhlbWVTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vQ29tZXRDaGF0VGhlbWUuc2VydmljZSc7XG5pbXBvcnQgeyBDb21ldENoYXRPcHRpb24sIGxvY2FsaXplLCBDb21ldENoYXRVSUtpdENvbnN0YW50cywgZm9udEhlbHBlciwgRGF0ZVBhdHRlcm5zLCBDb21ldENoYXRDYWxsRXZlbnRzLCBDb21ldENoYXRNZXNzYWdlRXZlbnRzLCBJTWVzc2FnZXMsIE1lc3NhZ2VTdGF0dXMgfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LXJlc291cmNlcyc7XG5pbXBvcnQgeyBDYWxsSGlzdG9yeVN0eWxlLENhbGxpbmdEZXRhaWxzVXRpbHMgfSBmcm9tICdAY29tZXRjaGF0L3Vpa2l0LXNoYXJlZCc7XG5pbXBvcnQgeyBDb21ldENoYXRFeGNlcHRpb24gfSBmcm9tICcuLi8uLi8uLi9TaGFyZWQvVXRpbHMvQ29tZUNoYXRFeGNlcHRpb24nO1xuLyoqXG4qXG4qIENvbWV0Q2hhdENhbGxIaXN0b3J5IGlzIGEgd3JhcHBlciBjb21wb25lbnQgd2hpY2ggcmVuZGVycyBjYWxsaGlzdG9yeSBvZiB0aGUgbG9nZ2VkaW51c2VyIHVzaW5nIENvbWV0Q2hhdExpc3RJdGVtICYmIENvbWV0Q2hhdExpc3QuXG4qXG4qIEB2ZXJzaW9uIDEuMC4wXG4qIEBhdXRob3IgQ29tZXRDaGF0VGVhbVxuKiBAY29weXJpZ2h0IMKpIDIwMjIgQ29tZXRDaGF0IEluYy5cbipcbiovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwiY29tZXRjaGF0LWNhbGwtaGlzdG9yeVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2NvbWV0Y2hhdC1jYWxsLWhpc3RvcnkuY29tcG9uZW50Lmh0bWxcIixcbiAgc3R5bGVVcmxzOiBbXCIuL2NvbWV0Y2hhdC1jYWxsLWhpc3RvcnkuY29tcG9uZW50LnNjc3NcIl0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIENvbWV0Q2hhdENhbGxIaXN0b3J5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbWVzc2FnZVJlcXVlc3RCdWlsZGVyITogQ29tZXRDaGF0Lk1lc3NhZ2VzUmVxdWVzdEJ1aWxkZXI7XG4gIEBJbnB1dCgpIHN1YnRpdGxlVmlldyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGxpc3RJdGVtVmlldyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIG1lbnUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSAgb3B0aW9ucyE6ICgobWVtYmVyOkNvbWV0Q2hhdC5DYWxsKT0+Q29tZXRDaGF0T3B0aW9uW10pIHwgbnVsbDtcbiAgQElucHV0KCkgYWN0aXZlQ2FsbCE6IENvbWV0Q2hhdC5DYWxsIHwgbnVsbDtcbiAgQElucHV0KCkgaGlkZVNlcGFyYXRvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBzZWxlY3Rpb25Nb2RlOiBTZWxlY3Rpb25Nb2RlID0gU2VsZWN0aW9uTW9kZS5ub25lO1xuICBASW5wdXQoKSBoaWRlRXJyb3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9IGxvY2FsaXplKFwiQ0FMTFNcIik7XG4gIEBJbnB1dCgpIG9uRXJyb3I6IChlcnJvcjogQ29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4gdm9pZCA9IChlcnJvcjogQ29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbikgPT4ge1xuICAgIGNvbnNvbGUubG9nKGVycm9yKVxuICB9XG4gIEBJbnB1dCgpIG9uU2VsZWN0ITogKGNhbGw6IENvbWV0Q2hhdC5DYWxsKSA9PiB2b2lkO1xuICBASW5wdXQoKSBlbXB0eVN0YXRlVmlldyE6IFRlbXBsYXRlUmVmPGFueT47XG4gIEBJbnB1dCgpIGVycm9yU3RhdGVWaWV3ITogVGVtcGxhdGVSZWY8YW55PjtcbiAgQElucHV0KCkgbG9hZGluZ0ljb25VUkw6IHN0cmluZyA9IFwiYXNzZXRzL1NwaW5uZXIuc3ZnXCI7XG4gIEBJbnB1dCgpIGRhdGVQYXR0ZXJuOiBEYXRlUGF0dGVybnMgPSBEYXRlUGF0dGVybnMuRGF5RGF0ZVRpbWU7XG4gIEBJbnB1dCgpIGxvYWRpbmdTdGF0ZVZpZXchOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBASW5wdXQoKSBlbXB0eVN0YXRlVGV4dDogc3RyaW5nID0gbG9jYWxpemUoXCJOT19jYWxsU19GT1VORFwiKVxuICBASW5wdXQoKSBlcnJvclN0YXRlVGV4dDogc3RyaW5nID0gbG9jYWxpemUoXCJTT01FVEhJTkdfV1JPTkdcIik7XG4gIEBJbnB1dCgpIHRpdGxlQWxpZ25tZW50OiBUaXRsZUFsaWdubWVudCA9IFRpdGxlQWxpZ25tZW50LmxlZnQ7XG4gIEBJbnB1dCgpIGF2YXRhclN0eWxlOiBBdmF0YXJTdHlsZSA9IHtcbiAgICBib3JkZXJSYWRpdXM6IFwiMTZweFwiLFxuICAgIHdpZHRoOiBcIjMycHhcIixcbiAgICBoZWlnaHQ6IFwiMzJweFwiLFxuICB9O1xuICBASW5wdXQoKSBkYXRlU3R5bGU6IERhdGVTdHlsZSA9IHt9XG4gIEBJbnB1dCgpIGNhbGxIaXN0b3J5U3R5bGU6IENhbGxIaXN0b3J5U3R5bGUgPSB7XG4gICAgd2lkdGg6IFwiMTAwJVwiLFxuICAgIGhlaWdodDogXCIxMDAlXCIsXG4gICAgYmFja2dyb3VuZDogXCJcIixcbiAgICBib3JkZXI6IFwiXCIsXG4gICAgYm9yZGVyUmFkaXVzOiBcIlwiLFxuICAgIHRpdGxlVGV4dEZvbnQ6IFwiXCIsXG4gICAgdGl0bGVUZXh0Q29sb3I6IFwiXCIsXG4gICAgc3VidGl0bGVUZXh0Rm9udDogXCJcIixcbiAgICBzdWJ0aXRsZVRleHRDb2xvcjogXCJcIixcbiAgICBlbXB0eVN0YXRlVGV4dEZvbnQ6IFwiXCIsXG4gICAgZW1wdHlTdGF0ZVRleHRDb2xvcjogXCJcIixcbiAgICBlcnJvclN0YXRlVGV4dEZvbnQ6IFwiXCIsXG4gICAgZXJyb3JTdGF0ZVRleHRDb2xvcjogXCJcIixcbiAgICBsb2FkaW5nSWNvblRpbnQ6IFwiXCIsXG4gICAgc2VwYXJhdG9yQ29sb3I6IFwicmdiKDIyMiAyMjIgMjIyIC8gNDYlKVwiLFxuICB9O1xuICBASW5wdXQoKSBsaXN0SXRlbVN0eWxlOiBMaXN0SXRlbVN0eWxlID0ge307XG4gIEBJbnB1dCgpIG9uSXRlbUNsaWNrITogKGNhbGw6IENvbWV0Q2hhdC5DYWxsKSA9PiB2b2lkO1xuICBjYWxsc1JlcXVlc3QhOiBDb21ldENoYXQuTWVzc2FnZXNSZXF1ZXN0IHwgbnVsbDtcbiAgc2VsZWN0aW9ubW9kZUVudW06IHR5cGVvZiBTZWxlY3Rpb25Nb2RlID0gU2VsZWN0aW9uTW9kZTtcbiAgcHVibGljIHN0YXRlOiBTdGF0ZXMgPSBTdGF0ZXMubG9hZGluZztcbiAgY2NPdXRnb2luZ0NhbGwhOiBTdWJzY3JpcHRpb247XG4gIGNjQ2FsbEFjY2VwdGVkITogU3Vic2NyaXB0aW9uO1xuICBjY0NhbGxSZWplY3RlZCE6IFN1YnNjcmlwdGlvbjtcbiAgY2NDYWxsRW5kZWQhOiBTdWJzY3JpcHRpb247XG4gIGxpc3RTdHlsZTogTGlzdFN0eWxlID0ge31cbiAgcHVibGljIGxpbWl0OiBudW1iZXIgPSAzMDtcbiAgcHVibGljIGNhbGxzTGlzdDogQ29tZXRDaGF0LkNhbGxbXSA9IFtdO1xuICBwdWJsaWMgY2FsbHNMaXN0ZW5lcklkOiBzdHJpbmcgPSBcImNhbGxzTGlzdF9cIiArIG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICBwdWJsaWMgbG9nZ2VkSW5Vc2VyOiBDb21ldENoYXQuVXNlciB8IG51bGwgPSBudWxsO1xuICBvblNjcm9sbGVkVG9Cb3R0b206IGFueSA9IG51bGxcbiAgaWNvblN0eWxlOiBJY29uU3R5bGUgPSB7XG4gICAgaGVpZ2h0OiBcIjE2cHhcIixcbiAgICB3aWR0aDogXCIxNnB4XCIsXG4gICAgaWNvblRpbnQ6IFwiUkdCQSgyMCwgMjAsIDIwLCAwLjY4KVwiXG4gIH1cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IENoYW5nZURldGVjdG9yUmVmLCBwcml2YXRlIHRoZW1lU2VydmljZTogQ29tZXRDaGF0VGhlbWVTZXJ2aWNlKSB7IHRoaXMuc3RhdGUgPSBTdGF0ZXMubG9hZGluZyB9XG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VGhlbWVTdHlsZSgpO1xuICAgIENvbWV0Q2hhdC5nZXRMb2dnZWRpblVzZXIoKS50aGVuKCh1c2VyOiBDb21ldENoYXQuVXNlciB8IG51bGwpID0+IHtcbiAgICAgIHRoaXMubG9nZ2VkSW5Vc2VyID0gdXNlcjtcbiAgICAgIHRoaXMuY2FsbHNSZXF1ZXN0ID0gdGhpcy5nZXRSZXF1ZXN0QnVpbGRlcigpXG4gICAgICB0aGlzLmZldGNoTmV4dGNhbGxMaXN0KClcbiAgICAgIHRoaXMuYXR0YWNoTGlzdGVuZXJzKCk7XG4gICAgICB0aGlzLnN1YnNjcmliZVRvRXZlbnRzKClcbiAgICB9KS5jYXRjaCgoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PntcbiAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICAgIHRoaXMub25FcnJvcihlcnJvcilcbiAgICAgIH1cbiAgICB9KVxuICAgIHRoaXMuc3RhdGUgPSBTdGF0ZXMubG9hZGluZ1xuICB9XG4gIGNhbGxNZW51T3B0aW9uKGV2ZW50OmFueSwgY2FsbDpDb21ldENoYXQuQ2FsbCl7XG4gICAgbGV0IG9uQ2xpY2sgPSBldmVudD8uZGV0YWlsPy5kYXRhPy5vbkNsaWNrXG4gICAgaWYob25DbGljayl7XG4gICAgICBvbkNsaWNrKGNhbGwpXG5cbiAgICB9XG5cbiAgfVxuICBzdWJzY3JpYmVUb0V2ZW50cygpIHtcbiAgICB0aGlzLmNjQ2FsbEFjY2VwdGVkID0gQ29tZXRDaGF0Q2FsbEV2ZW50cy5jY0NhbGxBY2NlcHRlZC5zdWJzY3JpYmUoKGNhbGw6IENvbWV0Q2hhdC5DYWxsKSA9PiB7XG4gICAgICB0aGlzLmFkZENhbGwoY2FsbClcbiAgICB9KVxuICAgIHRoaXMuY2NDYWxsUmVqZWN0ZWQgPSBDb21ldENoYXRDYWxsRXZlbnRzLmNjQ2FsbFJlamVjdGVkLnN1YnNjcmliZSgoY2FsbDogQ29tZXRDaGF0LkNhbGwpID0+IHtcbiAgICAgIHRoaXMuYWRkQ2FsbChjYWxsKVxuICAgIH0pXG4gICAgdGhpcy5jY091dGdvaW5nQ2FsbCA9IENvbWV0Q2hhdENhbGxFdmVudHMuY2NPdXRnb2luZ0NhbGwuc3Vic2NyaWJlKChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgdGhpcy5hZGRDYWxsKGNhbGwpXG4gICAgfSlcblxuICAgIHRoaXMuY2NDYWxsRW5kZWQgPSBDb21ldENoYXRDYWxsRXZlbnRzLmNjQ2FsbEVuZGVkLnN1YnNjcmliZSgoY2FsbDogQ29tZXRDaGF0LkNhbGwpID0+IHtcblxuICAgICAgaWYoY2FsbCl7XG4gICAgICAgIHRoaXMuYWRkQ2FsbChjYWxsKVxuICAgICAgfVxuICAgIH0pXG4gIH1cbiAgdW5zdWJzY3JpYmVUb0V2ZW50cygpIHtcbiAgICB0aGlzLmNjQ2FsbEFjY2VwdGVkPy51bnN1YnNjcmliZSgpXG4gICAgdGhpcy5jY0NhbGxSZWplY3RlZD8udW5zdWJzY3JpYmUoKVxuICAgIHRoaXMuY2NPdXRnb2luZ0NhbGw/LnVuc3Vic2NyaWJlKClcbiAgICB0aGlzLmNjQ2FsbEVuZGVkPy51bnN1YnNjcmliZSgpXG4gIH1cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jYWxsc1JlcXVlc3QgPSBudWxsO1xuICAgIHRoaXMucmVmLmRldGFjaCgpO1xuICAgIHRoaXMucmVtb3ZlTGlzdGVuZXIoKTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlVG9FdmVudHMoKVxuICB9XG4gIC8qKlxuICAgKiBAcGFyYW0gIHtDb21ldENoYXQuQ2FsbH0gY2FsbFxuICAgKi9cblxuICAvKipcbiAgICogQHBhcmFtICB7Q29tZXRDaGF0LkNhbGx9IGNhbGxcbiAgICovXG4gIGF0dGFjaExpc3RlbmVycygpIHtcbiAgICBDb21ldENoYXQuYWRkQ2FsbExpc3RlbmVyKFxuICAgICAgdGhpcy5jYWxsc0xpc3RlbmVySWQsXG4gICAgICBuZXcgQ29tZXRDaGF0LkNhbGxMaXN0ZW5lcih7XG4gICAgICAgIG9uSW5jb21pbmdDYWxsUmVjZWl2ZWQ6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkQ2FsbChjYWxsKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25JbmNvbWluZ0NhbGxDYW5jZWxsZWQ6IChjYWxsOiBDb21ldENoYXQuQ2FsbCkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkQ2FsbChjYWxsKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25PdXRnb2luZ0NhbGxBY2NlcHRlZDogKGNhbGw6IENvbWV0Q2hhdC5DYWxsKSA9PiB7XG4gICAgICAgICAgdGhpcy5hZGRDYWxsKGNhbGwpO1xuICAgICAgICB9LFxuICAgICAgICBvbk91dGdvaW5nQ2FsbFJlamVjdGVkOiAoY2FsbDogQ29tZXRDaGF0LkNhbGwpID0+IHtcbiAgICAgICAgICB0aGlzLmFkZENhbGwoY2FsbCk7XG4gICAgICAgIH0sXG4gICAgICB9KSxcblxuICAgICk7XG4gIH1cbiAgcmVtb3ZlTGlzdGVuZXIoKSB7XG4gICAgQ29tZXRDaGF0LnJlbW92ZUNhbGxMaXN0ZW5lcih0aGlzLmNhbGxzTGlzdGVuZXJJZCk7XG4gIH1cbiAgZmV0Y2hOZXh0Y2FsbExpc3QgPSAoKSA9PiB7XG4gICAgdGhpcy5vblNjcm9sbGVkVG9Cb3R0b20gPSBudWxsXG4gICAgdGhpcy5zdGF0ZSA9IFN0YXRlcy5sb2FkaW5nXG4gICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpXG4gICAgdHJ5IHtcbiAgICAgIHRoaXMuY2FsbHNSZXF1ZXN0IS5mZXRjaFByZXZpb3VzKCkudGhlbihcbiAgICAgICAgKGNhbGxMaXN0OiBDb21ldENoYXQuQmFzZU1lc3NhZ2VbXSkgPT4ge1xuICAgICAgICAgIGlmIChjYWxsTGlzdD8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vblNjcm9sbGVkVG9Cb3R0b20gPSB0aGlzLmZldGNoTmV4dGNhbGxMaXN0XG4gICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKClcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKChjYWxsTGlzdC5sZW5ndGggPD0gMCAmJiB0aGlzLmNhbGxzTGlzdD8ubGVuZ3RoIDw9IDApIHx8IChjYWxsTGlzdC5sZW5ndGggPT09IDAgJiYgdGhpcy5jYWxsc0xpc3Q/Lmxlbmd0aCA8PSAwKSkge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlcy5lbXB0eTtcbiAgICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlcy5sb2FkZWRcbiAgICAgICAgICAgIHRoaXMuY2FsbHNMaXN0ID0gWy4uLnRoaXMuY2FsbHNMaXN0LC4uLmNhbGxMaXN0LnJldmVyc2UoKSBhcyBDb21ldENoYXQuQ2FsbFtdIF07XG4gICAgICAgICAgICB0aGlzLnJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3I6IGFueSkgPT4ge1xuICAgICAgICAgIGlmKHRoaXMub25FcnJvcil7XG4gICAgICAgICAgICB0aGlzLm9uRXJyb3IoQ29tZXRDaGF0RXhjZXB0aW9uKGVycm9yKSlcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlcy5lcnJvclxuICAgICAgICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgKS5jYXRjaCgoZXJyb3I6Q29tZXRDaGF0LkNvbWV0Q2hhdEV4Y2VwdGlvbik9PntcbiAgICAgICAgaWYodGhpcy5vbkVycm9yKXtcbiAgICAgICAgICB0aGlzLm9uRXJyb3IoZXJyb3IpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgdGhpcy5zdGF0ZSA9IFN0YXRlcy5lcnJvclxuICAgICAgdGhpcy5yZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgaWYodGhpcy5vbkVycm9yKXtcbiAgICAgICAgdGhpcy5vbkVycm9yKENvbWV0Q2hhdEV4Y2VwdGlvbihlcnJvcikpXG4gICAgICB9XG4gICAgfVxuICB9XG4gIGdldFN1YnRpdGxlKGNhbGw6Q29tZXRDaGF0LkNhbGwpe1xuICAgIHJldHVybiBDYWxsaW5nRGV0YWlsc1V0aWxzLmdldENhbGxTdGF0dXMoY2FsbCx0aGlzLmxvZ2dlZEluVXNlciEpXG4gIH1cbiAgLyoqXG4gICAqIEBwYXJhbSAge0NvbWV0Q2hhdC5DYWxsfSBjYWxsXG4gICAqL1xuICBvbkNsaWNrID0gKGNhbGw6IENvbWV0Q2hhdC5DYWxsKSA9PiB7XG4gICAgaWYgKHRoaXMub25JdGVtQ2xpY2spIHtcbiAgICAgIHRoaXMub25JdGVtQ2xpY2soY2FsbClcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBwYXJhbSAge0NvbWV0Q2hhdC5DYWxsfSBjYWxsXG4gICAqL1xuICAvKipcbiAgICogQHBhcmFtICB7Q29tZXRDaGF0LkNhbGx9IGNhbGxcbiAgICovXG4gIGdldEFjdGl2ZUNhbGwgPSAoY2FsbDogQ29tZXRDaGF0LkNhbGwpID0+IHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlID09IFNlbGVjdGlvbk1vZGUubm9uZSB8fCAhdGhpcy5zZWxlY3Rpb25Nb2RlKSB7XG4gICAgICBpZiAoY2FsbC5nZXRJZCgpID09IHRoaXMuYWN0aXZlQ2FsbD8uZ2V0SWQoKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbiAgZ2V0Q2FsbFR5cGVJY29uKGNhbGw6IENvbWV0Q2hhdC5DYWxsKSB7XG4gICAgaWYgKGNhbGwuZ2V0VHlwZSgpID09IENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy5hdWRpbykge1xuICAgICAgcmV0dXJuIFwiYXNzZXRzL0F1ZGlvLUNhbGwuc3ZnXCJcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gXCJWaWRlb0NhbGxJY29uXCJcbiAgICB9XG4gIH1cbiAgZ2V0Q2FsbGVyTmFtZShjYWxsOiBDb21ldENoYXQuQ2FsbCkge1xuICAgIGlmIChDYWxsaW5nRGV0YWlsc1V0aWxzLmlzU2VudEJ5TWUoY2FsbCx0aGlzLmxvZ2dlZEluVXNlciEpKSB7XG4gICAgICByZXR1cm4gY2FsbC5nZXRSZWNlaXZlcigpLmdldE5hbWUoKVxuICAgIH1cbiAgICByZXR1cm4gY2FsbC5nZXRTZW5kZXIoKS5nZXROYW1lKClcbiAgfVxuICBnZXRSZXF1ZXN0QnVpbGRlcigpIHtcbiAgICBpZiAodGhpcy5tZXNzYWdlUmVxdWVzdEJ1aWxkZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLm1lc3NhZ2VSZXF1ZXN0QnVpbGRlclxuICAgICAgICAuYnVpbGQoKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICByZXR1cm4gbmV3IENvbWV0Q2hhdC5NZXNzYWdlc1JlcXVlc3RCdWlsZGVyKClcbiAgICAgICAgLnNldExpbWl0KHRoaXMubGltaXQpXG4gICAgICAgIC5zZXRUeXBlcyhbQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZVR5cGVzLmF1ZGlvLENvbWV0Q2hhdFVJS2l0Q29uc3RhbnRzLk1lc3NhZ2VUeXBlcy52aWRlb10pXG4gICAgICAgIC5zZXRDYXRlZ29yaWVzKCBbQ29tZXRDaGF0VUlLaXRDb25zdGFudHMuTWVzc2FnZUNhdGVnb3J5LmNhbGxdKVxuICAgICAgICAuYnVpbGQoKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIGFkZGNhbGxcbiAgICogQHBhcmFtIGNhbGxcbiAgICovXG4gIGFkZENhbGwoY2FsbDogQ29tZXRDaGF0LkNhbGwpIHtcbiAgICB0aGlzLmNhbGxzTGlzdC51bnNoaWZ0KGNhbGwpO1xuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKVxuICB9XG4gIGNhbGxTdHlsZSA9ICgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgaGVpZ2h0OiB0aGlzLmNhbGxIaXN0b3J5U3R5bGUuaGVpZ2h0LFxuICAgICAgd2lkdGg6IHRoaXMuY2FsbEhpc3RvcnlTdHlsZS53aWR0aCxcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMuY2FsbEhpc3RvcnlTdHlsZS5iYWNrZ3JvdW5kLFxuICAgICAgYm9yZGVyOiB0aGlzLmNhbGxIaXN0b3J5U3R5bGUuYm9yZGVyLFxuICAgICAgYm9yZGVyUmFkaXVzOiB0aGlzLmNhbGxIaXN0b3J5U3R5bGUuYm9yZGVyUmFkaXVzXG4gICAgfVxuICB9XG4gIHNldFRoZW1lU3R5bGUoKSB7XG4gICAgdGhpcy5pY29uU3R5bGUuaWNvblRpbnQgPSB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpXG4gICAgdGhpcy5zZXRBdmF0YXJTdHlsZSgpXG4gICAgdGhpcy5zZXREYXRlU3R5bGUoKTtcbiAgICB0aGlzLnNldENhbGxzU3R5bGUoKVxuICAgIHRoaXMubGlzdFN0eWxlID0ge1xuICAgICAgdGl0bGVUZXh0Rm9udDogdGhpcy5jYWxsSGlzdG9yeVN0eWxlLnRpdGxlVGV4dEZvbnQsXG4gICAgICB0aXRsZVRleHRDb2xvcjogdGhpcy5jYWxsSGlzdG9yeVN0eWxlLnRpdGxlVGV4dENvbG9yLFxuICAgICAgZW1wdHlTdGF0ZVRleHRGb250OiB0aGlzLmNhbGxIaXN0b3J5U3R5bGUuZW1wdHlTdGF0ZVRleHRGb250LFxuICAgICAgZW1wdHlTdGF0ZVRleHRDb2xvcjogdGhpcy5jYWxsSGlzdG9yeVN0eWxlLmVtcHR5U3RhdGVUZXh0Q29sb3IsXG4gICAgICBlcnJvclN0YXRlVGV4dEZvbnQ6IHRoaXMuY2FsbEhpc3RvcnlTdHlsZS5lcnJvclN0YXRlVGV4dEZvbnQsXG4gICAgICBlcnJvclN0YXRlVGV4dENvbG9yOiB0aGlzLmNhbGxIaXN0b3J5U3R5bGUuZXJyb3JTdGF0ZVRleHRDb2xvcixcbiAgICAgIGxvYWRpbmdJY29uVGludDogdGhpcy5jYWxsSGlzdG9yeVN0eWxlLmxvYWRpbmdJY29uVGludCxcbiAgICAgIHNlcGFyYXRvckNvbG9yOiB0aGlzLmNhbGxIaXN0b3J5U3R5bGUuc2VwYXJhdG9yQ29sb3IsXG4gICAgfVxuICB9XG4gIHNldEF2YXRhclN0eWxlKCkge1xuICAgIGxldCBkZWZhdWx0U3R5bGU6IEF2YXRhclN0eWxlID0gbmV3IEF2YXRhclN0eWxlKHtcbiAgICAgIGJvcmRlclJhZGl1czogXCIyNHB4XCIsXG4gICAgICB3aWR0aDogXCIzNnB4XCIsXG4gICAgICBoZWlnaHQ6IFwiMzZweFwiLFxuICAgICAgYm9yZGVyOiBcIm5vbmVcIixcbiAgICAgIGJhY2tncm91bmRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ3MDAoKSxcbiAgICAgIG5hbWVUZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50OTAwKCksXG4gICAgICBiYWNrZ3JvdW5kU2l6ZTogXCJjb3ZlclwiLFxuICAgICAgbmFtZVRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkuc3VidGl0bGUxKSxcbiAgICAgIG91dGVyVmlld0JvcmRlcjogXCJcIixcbiAgICAgIG91dGVyVmlld0JvcmRlclNwYWNpbmc6IFwiXCIsXG4gICAgfSlcbiAgICB0aGlzLmF2YXRhclN0eWxlID0geyAuLi5kZWZhdWx0U3R5bGUsIC4uLnRoaXMuYXZhdGFyU3R5bGUgfVxuICB9XG4gIHNldERhdGVTdHlsZSgpIHtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOiBEYXRlU3R5bGUgPSBuZXcgRGF0ZVN0eWxlKHtcbiAgICAgIHRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkuY2FwdGlvbjIpLFxuICAgICAgdGV4dENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpLFxuICAgICAgYmFja2dyb3VuZDogXCJ0cmFuc3BhcmVudFwiXG4gICAgfSlcbiAgICB0aGlzLmRhdGVTdHlsZSA9IHsgLi4uZGVmYXVsdFN0eWxlLCAuLi50aGlzLmRhdGVTdHlsZSB9XG4gIH1cblxuICBnZXRMaXN0SXRlbVN0eWxlKGNhbGw6Q29tZXRDaGF0LkNhbGwpIHtcbiAgICBsZXQgZGVmYXVsdFN0eWxlOiBMaXN0SXRlbVN0eWxlID0gbmV3IExpc3RJdGVtU3R5bGUoe1xuICAgICAgaGVpZ2h0OiBcIjQ1cHhcIixcbiAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgIGJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QmFja2dyb3VuZCgpLFxuICAgICAgYWN0aXZlQmFja2dyb3VuZDogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQxMDAoKSxcbiAgICAgIGJvcmRlclJhZGl1czogXCIwXCIsXG4gICAgICB0aXRsZUZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS50aXRsZTIpLFxuICAgICAgdGl0bGVDb2xvcjogIENhbGxpbmdEZXRhaWxzVXRpbHMuaXNNaXNzZWRDYWxsKGNhbGwsdGhpcy5sb2dnZWRJblVzZXIhKSA/IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0RXJyb3IoKSA6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50KCksXG4gICAgICBib3JkZXI6IFwibm9uZVwiLFxuICAgICAgc2VwYXJhdG9yQ29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50MjAwKCksXG4gICAgICBob3ZlckJhY2tncm91bmQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NTAoKVxuICAgIH0pXG4gICAgcmV0dXJuICB7IC4uLmRlZmF1bHRTdHlsZSwgLi4udGhpcy5saXN0SXRlbVN0eWxlIH1cbiAgfVxuXG4gIHNldENhbGxzU3R5bGUoKSB7XG4gICAgbGV0IGRlZmF1bHRTdHlsZTogQ2FsbEhpc3RvcnlTdHlsZSA9IG5ldyBDYWxsSGlzdG9yeVN0eWxlKHtcbiAgICAgIHN1YnRpdGxlVGV4dEZvbnQ6IGZvbnRIZWxwZXIodGhpcy50aGVtZVNlcnZpY2UudGhlbWUudHlwb2dyYXBoeS5zdWJ0aXRsZTIpLFxuICAgICAgc3VidGl0bGVUZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBiYWNrZ3JvdW5kOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEJhY2tncm91bmQoKSxcbiAgICAgIGJvcmRlcjogYDFweCBzb2xpZCAke3RoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NTAoKX1gLFxuICAgICAgdGl0bGVUZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICB0aXRsZVRleHRDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQoKSxcbiAgICAgIGVtcHR5U3RhdGVUZXh0Rm9udDogZm9udEhlbHBlcih0aGlzLnRoZW1lU2VydmljZS50aGVtZS50eXBvZ3JhcGh5LnRpdGxlMSksXG4gICAgICBlbXB0eVN0YXRlVGV4dENvbG9yOiB0aGlzLnRoZW1lU2VydmljZS50aGVtZS5wYWxldHRlLmdldEFjY2VudDYwMCgpLFxuICAgICAgZXJyb3JTdGF0ZVRleHRGb250OiBmb250SGVscGVyKHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnR5cG9ncmFwaHkudGl0bGUxKSxcbiAgICAgIGVycm9yU3RhdGVUZXh0Q29sb3I6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBsb2FkaW5nSWNvblRpbnQ6IHRoaXMudGhlbWVTZXJ2aWNlLnRoZW1lLnBhbGV0dGUuZ2V0QWNjZW50NjAwKCksXG4gICAgICBzZXBhcmF0b3JDb2xvcjogdGhpcy50aGVtZVNlcnZpY2UudGhlbWUucGFsZXR0ZS5nZXRBY2NlbnQ0MDAoKSxcbiAgICB9KVxuICAgIHRoaXMuY2FsbEhpc3RvcnlTdHlsZSA9IHsgLi4udGhpcy5jYWxsSGlzdG9yeVN0eWxlLCAuLi5kZWZhdWx0U3R5bGUgfVxuICB9XG4gIHN1YnRpdGxlU3R5bGUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGZvbnQ6IHRoaXMuY2FsbEhpc3RvcnlTdHlsZS5zdWJ0aXRsZVRleHRGb250LFxuICAgICAgY29sb3I6IHRoaXMuY2FsbEhpc3RvcnlTdHlsZS5zdWJ0aXRsZVRleHRDb2xvclxuICAgIH1cbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImNjLWNhbGwtaGlzdG9yeVwiIFtuZ1N0eWxlXT1cImNhbGxTdHlsZSgpXCI+XG4gIDxkaXYgY2xhc3M9XCJjYy1tZW51c1wiICpuZ0lmPVwibWVudVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtZW51XCI+XG4gICAgPC9uZy1jb250YWluZXI+XG48L2Rpdj5cbiAgPGNvbWV0Y2hhdC1saXN0IFtoaWRlU2VhcmNoXT1cInRydWVcIiBbbGlzdEl0ZW1WaWV3XT1cImxpc3RJdGVtVmlldyA/IGxpc3RJdGVtVmlldyA6IGxpc3RJdGVtXCIgW29uU2Nyb2xsZWRUb0JvdHRvbV09XCJvblNjcm9sbGVkVG9Cb3R0b21cIlxuICAgICAgW2xpc3RdPVwiY2FsbHNMaXN0XCIgW2hpZGVFcnJvcl09XCJoaWRlRXJyb3JcIiBbdGl0bGVdPVwidGl0bGVcIlxuICAgICAgW2VtcHR5U3RhdGVUZXh0XT1cImVtcHR5U3RhdGVUZXh0XCIgW2xvYWRpbmdJY29uVVJMXT1cImxvYWRpbmdJY29uVVJMXCJcbiAgICAgIFt0aXRsZUFsaWdubWVudF09XCJ0aXRsZUFsaWdubWVudFwiIFtsb2FkaW5nU3RhdGVWaWV3XT1cImxvYWRpbmdTdGF0ZVZpZXdcIiBbZW1wdHlTdGF0ZVZpZXddPVwiZW1wdHlTdGF0ZVZpZXdcIlxuICAgICAgW2Vycm9yU3RhdGVUZXh0XT1cImVycm9yU3RhdGVUZXh0XCIgW2Vycm9yU3RhdGVWaWV3XT1cImVycm9yU3RhdGVWaWV3XCIgW2xpc3RTdHlsZV09XCJsaXN0U3R5bGVcIiBbc3RhdGVdPVwic3RhdGVcIj5cbiAgPC9jb21ldGNoYXQtbGlzdD5cbiAgPG5nLXRlbXBsYXRlICNsaXN0SXRlbSBsZXQtY2FsbD5cbiAgICAgIDxjb21ldGNoYXQtbGlzdC1pdGVtIFt0aXRsZV09XCJnZXRDYWxsZXJOYW1lKGNhbGwpXCIgW2F2YXRhclVSTF09XCJjYWxsPy5hdmF0YXJcIiBbYXZhdGFyTmFtZV09XCJnZXRDYWxsZXJOYW1lKGNhbGwpXCJcbiAgICAgICAgICBbbGlzdEl0ZW1TdHlsZV09XCJnZXRMaXN0SXRlbVN0eWxlKGNhbGwpXCIgW2F2YXRhclN0eWxlXT1cImF2YXRhclN0eWxlXCJcbiAgICAgICAgICBbaGlkZVNlcGFyYXRvcl09XCJoaWRlU2VwYXJhdG9yXCIgKGNjLWxpc3RpdGVtLWNsaWNrZWQpPVwib25DbGljayhjYWxsKVwiIFtpc0FjdGl2ZV09XCJnZXRBY3RpdmVDYWxsKGNhbGwpXCI+XG4gICAgICAgICAgPGRpdiBzbG90PVwic3VidGl0bGVWaWV3XCIgY2xhc3M9XCJjYy1jYWxsLWhpc3RvcnlfX3N1YnRpdGxlLXZpZXdcIiAqbmdJZj1cInN1YnRpdGxlVmlldztlbHNlIGdyb3VwU3VidGl0bGVcIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1YnRpdGxlVmlld1wiPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2dyb3VwU3VidGl0bGU+XG4gICAgICAgICAgICAgPGRpdiBzbG90PVwic3VidGl0bGVWaWV3XCIgW25nU3R5bGVdPVwic3VidGl0bGVTdHlsZSgpXCIgY2xhc3M9XCJjYy1jYWxsLWhpc3RvcnlfX3N1YnRpdGxlLXZpZXdcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1jYWxsX19pY29uXCI+XG4gICAgICAgICAgICAgIDxjb21ldGNoYXQtaWNvbiBbaWNvblN0eWxlXT1cImljb25TdHlsZVwiIFtVUkxdPVwiZ2V0Q2FsbFR5cGVJY29uKGNhbGwpXCI+PC9jb21ldGNoYXQtaWNvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNjLWNhbGxfX3R5cGVcIj5cbiAgICAgICAgICAgICAge3tnZXRTdWJ0aXRsZShjYWxsKX19XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPGRpdiBzbG90PVwibWVudVZpZXdcIiBjbGFzcz1cImNjLWNhbGwtaGlzdG9yeV9fb3B0aW9uc1wiICpuZ0lmPVwib3B0aW9uc1wiPlxuICAgICAgICAgICAgPGNvbWV0Y2hhdC1tZW51LWxpc3QgKGNjLW1lbnUtY2xpY2tlZCk9XCJjYWxsTWVudU9wdGlvbigkZXZlbnQsY2FsbClcIiBbZGF0YV09XCJvcHRpb25zKGNhbGwpXCI+XG4gICAgICAgICAgICA8L2NvbWV0Y2hhdC1tZW51LWxpc3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IHNsb3Q9XCJ0YWlsVmlld1wiICBjbGFzcz1cImNjLWNhbGwtaGlzdG9yeV9fdGFpbC12aWV3XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhaWxfX3ZpZXdcIiAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gc2VsZWN0aW9ubW9kZUVudW0ubm9uZVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNjLWNhbGwtaGlzdG9yeV9fZGF0ZVwiPlxuICAgICAgICAgICAgICA8Y29tZXRjaGF0LWRhdGUgW2RhdGVTdHlsZV09XCJkYXRlU3R5bGVcIiBbdGltZXN0YW1wXT1cImNhbGw/LnNlbnRBdFwiIFtwYXR0ZXJuXT1cImRhdGVQYXR0ZXJuXCI+PC9jb21ldGNoYXQtZGF0ZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1jYWxsLWhpc3RvcnlfX3NlbGVjdGlvbi12aWV3XCIgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlICE9IHNlbGVjdGlvbm1vZGVFbnVtLm5vbmVcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0YWlsVmlld1wiPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICA8L2NvbWV0Y2hhdC1saXN0LWl0ZW0+XG4gICAgICA8bmctdGVtcGxhdGUgI3RhaWxWaWV3PlxuICAgICAgICA8ZGl2ICAqbmdJZj1cInNlbGVjdGlvbk1vZGUgPT0gc2VsZWN0aW9ubW9kZUVudW0uc2luZ2xlXCI+XG4gICAgICAgICAgPGNvbWV0Y2hhdC1yYWRpby1idXR0b24gKGNjLXJhZGlvLWJ1dHRvbi1jaGFuZ2VkKT1cIm9uU2VsZWN0ID8gb25TZWxlY3QoY2FsbCkgOiBudWxsXCI+PC9jb21ldGNoYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAgKm5nSWY9XCJzZWxlY3Rpb25Nb2RlID09IHNlbGVjdGlvbm1vZGVFbnVtLm11bHRpcGxlXCI+XG4gICAgICAgICAgPGNvbWV0Y2hhdC1jaGVja2JveCAoY2MtY2hlY2tib3gtY2hhbmdlZCk9XCJvblNlbGVjdCA/IG9uU2VsZWN0KGNhbGwpIDogbnVsbFwiPjwvY29tZXRjaGF0LWNoZWNrYm94PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj4iXX0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core";
|
|
2
|
-
import { CommonModule } from "@angular/common";
|
|
3
|
-
import { CometChatCallHistoryComponent } from "./cometchat-call-history/cometchat-call-history.component";
|
|
4
|
-
import { CometChatList } from "../../CometChatList/cometchat-list.module";
|
|
5
|
-
import "@cometchat/uikit-elements";
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class CometChatCallHistory {
|
|
8
|
-
}
|
|
9
|
-
CometChatCallHistory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistory, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10
|
-
CometChatCallHistory.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistory, declarations: [CometChatCallHistoryComponent], imports: [CommonModule,
|
|
11
|
-
CometChatList], exports: [CometChatCallHistoryComponent] });
|
|
12
|
-
CometChatCallHistory.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistory, imports: [[
|
|
13
|
-
CommonModule,
|
|
14
|
-
CometChatList,
|
|
15
|
-
]] });
|
|
16
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: CometChatCallHistory, decorators: [{
|
|
17
|
-
type: NgModule,
|
|
18
|
-
args: [{
|
|
19
|
-
declarations: [CometChatCallHistoryComponent],
|
|
20
|
-
imports: [
|
|
21
|
-
CommonModule,
|
|
22
|
-
CometChatList,
|
|
23
|
-
],
|
|
24
|
-
exports: [CometChatCallHistoryComponent],
|
|
25
|
-
schemas: [CUSTOM_ELEMENTS_SCHEMA]
|
|
26
|
-
}]
|
|
27
|
-
}] });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tZXRjaGF0LWNhbGwtaGlzdG9yeS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jaGF0LXVpa2l0LWFuZ3VsYXIvc3JjL0NhbGxzL0NvbWV0Q2hhdENhbGxIaXN0b3J5L2NvbWV0Y2hhdC1jYWxsLWhpc3RvcnkubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBQzFHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQ0FBMkMsQ0FBQztBQUMxRSxPQUFRLDJCQUEyQixDQUFDOztBQVVwQyxNQUFNLE9BQU8sb0JBQW9COztrSEFBcEIsb0JBQW9CO21IQUFwQixvQkFBb0IsaUJBUmhCLDZCQUE2QixhQUUxQyxZQUFZO1FBQ2hCLGFBQWEsYUFFRCw2QkFBNkI7bUhBRzVCLG9CQUFvQixZQVB0QjtZQUNQLFlBQVk7WUFDaEIsYUFBYTtTQUNWOzRGQUlVLG9CQUFvQjtrQkFUaEMsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyw2QkFBNkIsQ0FBQztvQkFDN0MsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ2hCLGFBQWE7cUJBQ1Y7b0JBQ0QsT0FBTyxFQUFFLENBQUMsNkJBQTZCLENBQUM7b0JBQ3hDLE9BQU8sRUFBQyxDQUFDLHNCQUFzQixDQUFDO2lCQUNqQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENVU1RPTV9FTEVNRU5UU19TQ0hFTUEsIE5nTW9kdWxlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gXCJAYW5ndWxhci9jb21tb25cIjtcbmltcG9ydCB7IENvbWV0Q2hhdENhbGxIaXN0b3J5Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tZXRjaGF0LWNhbGwtaGlzdG9yeS9jb21ldGNoYXQtY2FsbC1oaXN0b3J5LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ29tZXRDaGF0TGlzdCB9IGZyb20gXCIuLi8uLi9Db21ldENoYXRMaXN0L2NvbWV0Y2hhdC1saXN0Lm1vZHVsZVwiO1xuaW1wb3J0ICBcIkBjb21ldGNoYXQvdWlraXQtZWxlbWVudHNcIjtcbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW0NvbWV0Q2hhdENhbGxIaXN0b3J5Q29tcG9uZW50XSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbkNvbWV0Q2hhdExpc3QsXG4gIF0sXG4gIGV4cG9ydHM6IFtDb21ldENoYXRDYWxsSGlzdG9yeUNvbXBvbmVudF0sXG4gIHNjaGVtYXM6W0NVU1RPTV9FTEVNRU5UU19TQ0hFTUFdXG59KVxuZXhwb3J0IGNsYXNzIENvbWV0Q2hhdENhbGxIaXN0b3J5IHt9XG4iXX0=
|