@sinequa/assistant 3.1.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/chat/chat-message/chat-message.component.d.ts +157 -0
- package/chat/chat-reference/chat-reference.component.d.ts +118 -0
- package/chat/chat-settings-v3/chat-settings-v3.component.d.ts +41 -0
- package/chat/chat.component.d.ts +1112 -0
- package/chat/chat.service.d.ts +1046 -0
- package/chat/format-icon/format-icon.component.d.ts +10 -0
- package/chat/format-icon/icons.d.ts +5 -0
- package/chat/index.d.ts +5 -0
- package/chat/initials-avatar/initials-avatar.component.d.ts +35 -0
- package/chat/instance-manager.service.d.ts +28 -0
- package/chat/messages/de.d.ts +4 -0
- package/chat/messages/en.d.ts +4 -0
- package/chat/messages/fr.d.ts +4 -0
- package/chat/messages/index.d.ts +4 -0
- package/chat/public-api.d.ts +11 -0
- package/chat/rest-chat.service.d.ts +28 -0
- package/chat/saved-chats/saved-chats.component.d.ts +37 -0
- package/chat/styles/assistant.scss +61 -0
- package/chat/styles/references.scss +23 -0
- package/chat/types.d.ts +1241 -0
- package/chat/websocket-chat.service.d.ts +97 -0
- package/esm2020/chat/chat-message/chat-message.component.mjs +181 -0
- package/esm2020/chat/chat-reference/chat-reference.component.mjs +40 -0
- package/esm2020/chat/chat-settings-v3/chat-settings-v3.component.mjs +103 -0
- package/esm2020/chat/chat.component.mjs +369 -0
- package/esm2020/chat/chat.service.mjs +185 -0
- package/esm2020/chat/format-icon/format-icon.component.mjs +23 -0
- package/esm2020/chat/format-icon/icons.mjs +138 -0
- package/esm2020/chat/initials-avatar/initials-avatar.component.mjs +60 -0
- package/esm2020/chat/instance-manager.service.mjs +46 -0
- package/esm2020/chat/messages/de.mjs +4 -0
- package/esm2020/chat/messages/en.mjs +4 -0
- package/esm2020/chat/messages/fr.mjs +4 -0
- package/esm2020/chat/messages/index.mjs +9 -0
- package/esm2020/chat/public-api.mjs +12 -0
- package/esm2020/chat/rest-chat.service.mjs +164 -0
- package/esm2020/chat/saved-chats/saved-chats.component.mjs +132 -0
- package/esm2020/chat/sinequa-assistant-chat.mjs +5 -0
- package/esm2020/chat/types.mjs +85 -0
- package/esm2020/chat/websocket-chat.service.mjs +430 -0
- package/esm2020/public-api.mjs +3 -0
- package/esm2020/sinequa-assistant.mjs +5 -0
- package/fesm2015/sinequa-assistant-chat.mjs +1925 -0
- package/fesm2015/sinequa-assistant-chat.mjs.map +1 -0
- package/fesm2015/sinequa-assistant.mjs +9 -0
- package/fesm2015/sinequa-assistant.mjs.map +1 -0
- package/fesm2020/sinequa-assistant-chat.mjs +1911 -0
- package/fesm2020/sinequa-assistant-chat.mjs.map +1 -0
- package/fesm2020/sinequa-assistant.mjs +9 -0
- package/fesm2020/sinequa-assistant.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/package.json +46 -0
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { Injectable, inject } from "@angular/core";
|
|
2
|
+
import { SearchService } from "@sinequa/components/search";
|
|
3
|
+
import { UserPreferences } from "@sinequa/components/user-settings";
|
|
4
|
+
import { LoginService } from "@sinequa/core/login";
|
|
5
|
+
import { NotificationsService } from "@sinequa/core/notification";
|
|
6
|
+
import { AuditWebService, UserSettingsWebService } from "@sinequa/core/web-services";
|
|
7
|
+
import { BehaviorSubject } from "rxjs";
|
|
8
|
+
import { chatConfigSchema } from "./types";
|
|
9
|
+
import { AppService } from "@sinequa/core/app-utils";
|
|
10
|
+
import { IntlService } from "@sinequa/core/intl";
|
|
11
|
+
import get from "lodash/get";
|
|
12
|
+
import { Utils } from "@sinequa/core/base";
|
|
13
|
+
import * as i0 from "@angular/core";
|
|
14
|
+
export class ChatService {
|
|
15
|
+
constructor() {
|
|
16
|
+
/** Emit true once the initialization of the chat process is done*/
|
|
17
|
+
this.initProcess$ = new BehaviorSubject(false);
|
|
18
|
+
/** Emit true once the initialization of the chat config is done*/
|
|
19
|
+
this.initConfig$ = new BehaviorSubject(false);
|
|
20
|
+
/** Global configuration of the chat */
|
|
21
|
+
this.chatConfig$ = new BehaviorSubject(undefined);
|
|
22
|
+
/** Streaming status of the chat endpoint */
|
|
23
|
+
this.streaming$ = new BehaviorSubject(false);
|
|
24
|
+
/** List of saved chats */
|
|
25
|
+
this.savedChats$ = new BehaviorSubject([]);
|
|
26
|
+
/** Emit the saved chat to load */
|
|
27
|
+
this.loadSavedChat$ = new BehaviorSubject(undefined);
|
|
28
|
+
this.searchService = inject(SearchService);
|
|
29
|
+
this.userSettingsService = inject(UserSettingsWebService);
|
|
30
|
+
this.notificationsService = inject(NotificationsService);
|
|
31
|
+
this.auditService = inject(AuditWebService);
|
|
32
|
+
this.prefs = inject(UserPreferences);
|
|
33
|
+
this.loginService = inject(LoginService);
|
|
34
|
+
this.appService = inject(AppService);
|
|
35
|
+
this.intlService = inject(IntlService);
|
|
36
|
+
}
|
|
37
|
+
get assistants() {
|
|
38
|
+
if (!this.userSettingsService.userSettings)
|
|
39
|
+
this.userSettingsService.userSettings = {};
|
|
40
|
+
if (!this.userSettingsService.userSettings["assistants"])
|
|
41
|
+
this.userSettingsService.userSettings["assistants"] = {};
|
|
42
|
+
return this.userSettingsService.userSettings["assistants"];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the instance ID of the chat service
|
|
46
|
+
* @returns The instance ID of the chat service
|
|
47
|
+
*/
|
|
48
|
+
get chatInstanceId() {
|
|
49
|
+
return this._chatInstanceId;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Persist the instance ID of the chat service
|
|
53
|
+
* @param instanceId The instance ID of the chat service
|
|
54
|
+
*/
|
|
55
|
+
setChatInstanceId(instanceId) {
|
|
56
|
+
this._chatInstanceId = instanceId;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get the ID of the current chat discussion which is used to save/get/delete it
|
|
60
|
+
* @returns The ID of the current chat discussion
|
|
61
|
+
*/
|
|
62
|
+
get savedChatId() {
|
|
63
|
+
return this._savedChatId;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Persist the ID of the current chat discussion which is used to save/get/delete it
|
|
67
|
+
* @param savedChatId The ID of the current chat discussion which is used to save/get/delete it
|
|
68
|
+
*/
|
|
69
|
+
setSavedChatId(savedChatId) {
|
|
70
|
+
this._savedChatId = savedChatId;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Initialize the chat config by merging the default config with the user preferences and the app config
|
|
74
|
+
* override desc order: user preferences > app config > default config
|
|
75
|
+
*/
|
|
76
|
+
initChatConfig() {
|
|
77
|
+
const key = this.chatInstanceId;
|
|
78
|
+
const userSettingsConfig = this.assistants[key] || {};
|
|
79
|
+
const defaultChatConfig = this.appService.app?.data?.assistants?.[key];
|
|
80
|
+
// Validate the object against the schema
|
|
81
|
+
try {
|
|
82
|
+
chatConfigSchema.parse(defaultChatConfig);
|
|
83
|
+
// Merge configs with override desc order: user preferences > app config > default config
|
|
84
|
+
const chatConfig = {
|
|
85
|
+
...defaultChatConfig,
|
|
86
|
+
...userSettingsConfig
|
|
87
|
+
};
|
|
88
|
+
// Update the chat config and store it in the user preferences
|
|
89
|
+
this.updateChatConfig(chatConfig, false);
|
|
90
|
+
this.initConfig$.next(true);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
this.notificationsService.error(`Missing valid configuration for the assistant instance '${key}'`);
|
|
94
|
+
throw new Error(`Missing valid configuration for the assistant instance '${key}' . \n ${JSON.stringify(error.issues, null, 2)}`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Update the chat config and store it in the user preferences
|
|
99
|
+
* @param config The updated chat config
|
|
100
|
+
* @param notify Whether to notify the user about the update
|
|
101
|
+
* @param successCallback The callback to execute if the update is successful
|
|
102
|
+
* @param errorCallback The callback to execute if the update fails
|
|
103
|
+
*/
|
|
104
|
+
updateChatConfig(config, notify = true, successCallback, errorCallback) {
|
|
105
|
+
this.chatConfig$.next(config);
|
|
106
|
+
const assistants = Object.assign({}, this.assistants);
|
|
107
|
+
assistants[this.chatInstanceId] = config;
|
|
108
|
+
this.userSettingsService.patch({ assistants }).subscribe(next => {
|
|
109
|
+
if (notify) {
|
|
110
|
+
successCallback ? successCallback() : this.notificationsService.success(`The configuration of the assistant instance '${this.chatInstanceId}' has been successfully updated`);
|
|
111
|
+
}
|
|
112
|
+
}, error => {
|
|
113
|
+
if (notify) {
|
|
114
|
+
errorCallback ? errorCallback() : this.notificationsService.error(`The update of the assistant instance '${this.chatInstanceId}' configuration failed`);
|
|
115
|
+
}
|
|
116
|
+
console.error("Could not patch assistants!", error);
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get the model description for the given (serviceId + modelId)
|
|
121
|
+
* If a model is not found, an error message is returned
|
|
122
|
+
* @param serviceId The serviceId of the model
|
|
123
|
+
* @param modelId The modelId of the model
|
|
124
|
+
* @returns The model description
|
|
125
|
+
*/
|
|
126
|
+
getModel(serviceId, modelId) {
|
|
127
|
+
let model = this.models?.find(m => m.serviceId === serviceId && m.modelId === modelId);
|
|
128
|
+
// Handle obsolete config
|
|
129
|
+
if (!model) {
|
|
130
|
+
this.notificationsService.error(`FATAL ERROR : The model (serviceId = '${serviceId}', modelId = '${modelId}') is no longer available. Please contact an admin for further information.`);
|
|
131
|
+
throw new Error(`FATAL ERROR : The model (serviceId = '${serviceId}', modelId = '${modelId}') is no longer available`);
|
|
132
|
+
}
|
|
133
|
+
return model;
|
|
134
|
+
}
|
|
135
|
+
// Todo: pending implementation
|
|
136
|
+
notifyAudit(messagesHistory, model) {
|
|
137
|
+
// let numberOfUserMessages = 0;
|
|
138
|
+
// let numberOfAttachments = 0;
|
|
139
|
+
// let numberOfAssistantMessages = 0;
|
|
140
|
+
// for(let m of messagesHistory) {
|
|
141
|
+
// if(m.$attachment) numberOfAttachments++;
|
|
142
|
+
// else if(m.role === 'user') numberOfUserMessages++;
|
|
143
|
+
// else if (m.role === 'assistant') numberOfAssistantMessages++;
|
|
144
|
+
// }
|
|
145
|
+
// this.auditService.notify({
|
|
146
|
+
// type: 'Chat_Messages',
|
|
147
|
+
// detail: {
|
|
148
|
+
// // message: messagesHistory.map(m => m.role.toUpperCase() + ': '+ (m.$attachment? `attachment ${m.$attachment?.$record.title}` : m.content)).join('\n\n'),
|
|
149
|
+
// message: messagesHistory.map(m => m.role.toUpperCase() + ': '+ m.content).join('\n\n'),
|
|
150
|
+
// // numberOfUserMessages,
|
|
151
|
+
// // numberOfAttachments,
|
|
152
|
+
// // numberOfAssistantMessages,
|
|
153
|
+
// model
|
|
154
|
+
// }
|
|
155
|
+
// });
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Format a date string in UTC to a local date string
|
|
159
|
+
* @param value Date string in UTC to format
|
|
160
|
+
* @returns A formatted local date string
|
|
161
|
+
*/
|
|
162
|
+
formatDateTime(value) {
|
|
163
|
+
return this.intlService["formatTime"](value, { day: "numeric", month: "short", year: "numeric" });
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Takes a text prompt that may contain placeholders for variables
|
|
167
|
+
* and replaces these placeholders if it finds a match in the given
|
|
168
|
+
* context object.
|
|
169
|
+
*/
|
|
170
|
+
static formatPrompt(prompt, context) {
|
|
171
|
+
return prompt.replace(/{{(.*?)}}/g, (match, expr) => get(context, expr) ?? match);
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* @returns A Globally Unique Identifier
|
|
175
|
+
*/
|
|
176
|
+
static generateGUID() {
|
|
177
|
+
return Utils.guid();
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
ChatService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ChatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
181
|
+
ChatService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ChatService });
|
|
182
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: ChatService, decorators: [{
|
|
183
|
+
type: Injectable
|
|
184
|
+
}] });
|
|
185
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvY2hhdC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxlQUFlLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNyRixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBMEcsZ0JBQWdCLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbkosT0FBTyxFQUFFLFVBQVUsRUFBUyxNQUFNLHlCQUF5QixDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNqRCxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUczQyxNQUFNLE9BQWdCLFdBQVc7SUFEakM7UUFJRSxtRUFBbUU7UUFDbkUsaUJBQVksR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNuRCxrRUFBa0U7UUFDbEUsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNsRCx1Q0FBdUM7UUFDdkMsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBeUIsU0FBUyxDQUFDLENBQUM7UUFDckUsNENBQTRDO1FBQzVDLGVBQVUs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QUFLLENBQzdDLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNLENBQUMsWUFBWTtRQUNqQixPQUFPLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOzt3R0EzT21CLFdBQVc7NEdBQVgsV0FBVzsyRkFBWCxXQUFXO2tCQURoQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgaW5qZWN0IH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tIFwiQHNpbmVxdWEvY29tcG9uZW50cy9zZWFyY2hcIjtcbmltcG9ydCB7IFVzZXJQcmVmZXJlbmNlcyB9IGZyb20gXCJAc2luZXF1YS9jb21wb25lbnRzL3VzZXItc2V0dGluZ3NcIjtcbmltcG9ydCB7IExvZ2luU2VydmljZSB9IGZyb20gXCJAc2luZXF1YS9jb3JlL2xvZ2luXCI7XG5pbXBvcnQgeyBOb3RpZmljYXRpb25zU2VydmljZSB9IGZyb20gXCJAc2luZXF1YS9jb3JlL25vdGlmaWNhdGlvblwiO1xuaW1wb3J0IHsgQXVkaXRXZWJTZXJ2aWNlLCBVc2VyU2V0dGluZ3NXZWJTZXJ2aWNlIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvd2ViLXNlcnZpY2VzXCI7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xuaW1wb3J0IHsgQ2hhdENvbmZpZywgQ2hhdE1lc3NhZ2UsIENoYXRSZXNwb25zZSwgR2xsbUZ1bmN0aW9uLCBHbGxtTW9kZWxEZXNjcmlwdGlvbiwgU2F2ZWRDaGF0LCBTYXZlZENoYXRIaXN0b3J5LCBjaGF0Q29uZmlnU2NoZW1hIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IEFwcFNlcnZpY2UsIFF1ZXJ5IH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvYXBwLXV0aWxzXCI7XG5pbXBvcnQgeyBJbnRsU2VydmljZSB9IGZyb20gXCJAc2luZXF1YS9jb3JlL2ludGxcIjtcbmltcG9ydCBnZXQgZnJvbSBcImxvZGFzaC9nZXRcIjtcbmltcG9ydCB7IFV0aWxzIH0gZnJvbSBcIkBzaW5lcXVhL2NvcmUvYmFzZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ2hhdFNlcnZpY2Uge1xuICAvKiogTmFtZSBvZiB0aGUgYXNzaXN0YW50IHBsdWdpbiBPUiB3ZWJzb2NrZXQgZW5kcG9pbnQgKi9cbiAgUkVRVUVTVF9VUkw6IHN0cmluZztcbiAgLyoqIEVtaXQgdHJ1ZSBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2hhdCBwcm9jZXNzIGlzIGRvbmUqL1xuICBpbml0UHJvY2VzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcbiAgLyoqIEVtaXQgdHJ1ZSBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgY2hhdCBjb25maWcgaXMgZG9uZSovXG4gIGluaXRDb25maWckID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihmYWxzZSk7XG4gIC8qKiBHbG9iYWwgY29uZmlndXJhdGlvbiBvZiB0aGUgY2hhdCAqL1xuICBjaGF0Q29uZmlnJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Q2hhdENvbmZpZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgLyoqIFN0cmVhbWluZyBzdGF0dXMgb2YgdGhlIGNoYXQgZW5kcG9pbnQgKi9cbiAgc3RyZWFtaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xuICAvKiogU3RvcmUgdGhlIG1lc3NhZ2VzIGhpc3Rvcnkgb2YgdGhlIGN1cnJlbnQgY2hhdCAqL1xuICBjaGF0SGlzdG9yeTogQ2hhdE1lc3NhZ2VbXSB8IHVuZGVmaW5lZDtcbiAgLyoqIExpc3Qgb2YgbW9kZWxzIGF2YWlsYWJsZSBvbiB0aGUgc2VydmVyICAqL1xuICBtb2RlbHM6IEdsbG1Nb2RlbERlc2NyaXB0aW9uW10gfCB1bmRlZmluZWQ7XG4gIC8qKiBMaXN0IG9mIGZ1bmN0aW9ucyBhdmFpbGFibGUgb24gdGhlIHNlcnZlciAqL1xuICBmdW5jdGlvbnM6IEdsbG1GdW5jdGlvbltdIHwgdW5kZWZpbmVkO1xuICAvKiogTGlzdCBvZiBzYXZlZCBjaGF0cyAqL1xuICBzYXZlZENoYXRzJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2F2ZWRDaGF0W10+KFtdKTtcbiAgLyoqIEVtaXQgdGhlIHNhdmVkIGNoYXQgdG8gbG9hZCAqL1xuICBsb2FkU2F2ZWRDaGF0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8U2F2ZWRDaGF0IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICAvKiogSW5zdGFuY2UgSUQgb2YgdGhlIGNoYXQgc2VydmljZSBkZWZpbmluZyB0aGUgYXNzaXN0YW50IGluc3RhbmNlICovXG4gIHByaXZhdGUgX2NoYXRJbnN0YW5jZUlkOiBzdHJpbmc7XG4gIC8qKiBJRCBvZiB0aGUgY3VycmVudCBjaGF0IGRpc2N1c3Npb24gd2hpY2ggaXMgdXNlZCB0byBzYXZlL2dldC9kZWxldGUgaXQgKi9cbiAgcHJpdmF0ZSBfc2F2ZWRDaGF0SWQ6IHN0cmluZztcblxuICBwdWJsaWMgc2VhcmNoU2VydmljZSA9IGluamVjdChTZWFyY2hTZXJ2aWNlKTtcbiAgcHVibGljIHVzZXJTZXR0aW5nc1NlcnZpY2UgPSBpbmplY3QoVXNlclNldHRpbmdzV2ViU2VydmljZSk7XG4gIHB1YmxpYyBub3RpZmljYXRpb25zU2VydmljZSA9IGluamVjdChOb3RpZmljYXRpb25zU2VydmljZSk7XG4gIHB1YmxpYyBhdWRpdFNlcnZpY2UgPSBpbmplY3QoQXVkaXRXZWJTZXJ2aWNlKTtcbiAgcHVibGljIHByZWZzID0gaW5qZWN0KFVzZXJQcmVmZXJlbmNlcyk7XG4gIHB1YmxpYyBsb2dpblNlcnZpY2UgPSBpbmplY3QoTG9naW5TZXJ2aWNlKTtcbiAgcHVibGljIGFwcFNlcnZpY2UgPSBpbmplY3QoQXBwU2VydmljZSk7XG4gIHB1YmxpYyBpbnRsU2VydmljZSA9IGluamVjdChJbnRsU2VydmljZSk7XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemUgdGhlIGNoYXQgcHJvY2Vzc1xuICAgKi9cbiAgYWJzdHJhY3QgaW5pdCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBSRVFVRVNUX1VSTFxuICAgKi9cbiAgYWJzdHJhY3QgZ2V0UmVxdWVzdHNVcmwoKTogdm9pZDtcblxuICBnZXQgYXNzaXN0YW50cygpOiBhbnkge1xuICAgIGlmICghdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnVzZXJTZXR0aW5ncylcbiAgICAgIHRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3MgPSB7fTtcbiAgICBpZiAoIXRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3NbXCJhc3Npc3RhbnRzXCJdKVxuICAgICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnVzZXJTZXR0aW5nc1tcImFzc2lzdGFudHNcIl0gPSB7fTtcbiAgICByZXR1cm4gIHRoaXMudXNlclNldHRpbmdzU2VydmljZS51c2VyU2V0dGluZ3NbXCJhc3Npc3RhbnRzXCJdO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgaW5zdGFuY2UgSUQgb2YgdGhlIGNoYXQgc2VydmljZVxuICAgKiBAcmV0dXJucyBUaGUgaW5zdGFuY2UgSUQgb2YgdGhlIGNoYXQgc2VydmljZVxuICAgKi9cbiAgZ2V0IGNoYXRJbnN0YW5jZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2NoYXRJbnN0YW5jZUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcnNpc3QgdGhlIGluc3RhbmNlIElEIG9mIHRoZSBjaGF0IHNlcnZpY2VcbiAgICogQHBhcmFtIGluc3RhbmNlSWQgVGhlIGluc3RhbmNlIElEIG9mIHRoZSBjaGF0IHNlcnZpY2VcbiAgICovXG4gIHNldENoYXRJbnN0YW5jZUlkKGluc3RhbmNlSWQ6IHN0cmluZykge1xuICAgIHRoaXMuX2NoYXRJbnN0YW5jZUlkID0gaW5zdGFuY2VJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIElEIG9mIHRoZSBjdXJyZW50IGNoYXQgZGlzY3Vzc2lvbiB3aGljaCBpcyB1c2VkIHRvIHNhdmUvZ2V0L2RlbGV0ZSBpdFxuICAgKiBAcmV0dXJucyBUaGUgSUQgb2YgdGhlIGN1cnJlbnQgY2hhdCBkaXNjdXNzaW9uXG4gICAqL1xuICBnZXQgc2F2ZWRDaGF0SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc2F2ZWRDaGF0SWQ7XG4gIH1cblxuICAvKipcbiAgICogUGVyc2lzdCB0aGUgSUQgb2YgdGhlIGN1cnJlbnQgY2hhdCBkaXNjdXNzaW9uIHdoaWNoIGlzIHVzZWQgdG8gc2F2ZS9nZXQvZGVsZXRlIGl0XG4gICAqIEBwYXJhbSBzYXZlZENoYXRJZCBUaGUgSUQgb2YgdGhlIGN1cnJlbnQgY2hhdCBkaXNjdXNzaW9uIHdoaWNoIGlzIHVzZWQgdG8gc2F2ZS9nZXQvZGVsZXRlIGl0XG4gICAqL1xuICBzZXRTYXZlZENoYXRJZChzYXZlZENoYXRJZDogc3RyaW5nKSB7XG4gICAgdGhpcy5fc2F2ZWRDaGF0SWQgPSBzYXZlZENoYXRJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIHRoZSBjaGF0IGNvbmZpZyBieSBtZXJnaW5nIHRoZSBkZWZhdWx0IGNvbmZpZyB3aXRoIHRoZSB1c2VyIHByZWZlcmVuY2VzIGFuZCB0aGUgYXBwIGNvbmZpZ1xuICAgKiBvdmVycmlkZSBkZXNjIG9yZGVyOiB1c2VyIHByZWZlcmVuY2VzID4gYXBwIGNvbmZpZyA+IGRlZmF1bHQgY29uZmlnXG4gICAqL1xuICBpbml0Q2hhdENvbmZpZygpIHtcbiAgICBjb25zdCBrZXkgPSB0aGlzLmNoYXRJbnN0YW5jZUlkO1xuICAgIGNvbnN0IHVzZXJTZXR0aW5nc0NvbmZpZyA9IHRoaXMuYXNzaXN0YW50c1trZXldIHx8IHt9O1xuICAgIGNvbnN0IGRlZmF1bHRDaGF0Q29uZmlnID0gdGhpcy5hcHBTZXJ2aWNlLmFwcD8uZGF0YT8uYXNzaXN0YW50cz8uW2tleV07XG4gICAgLy8gVmFsaWRhdGUgdGhlIG9iamVjdCBhZ2FpbnN0IHRoZSBzY2hlbWFcbiAgICB0cnkge1xuICAgICAgY2hhdENvbmZpZ1NjaGVtYS5wYXJzZShkZWZhdWx0Q2hhdENvbmZpZyk7XG4gICAgICAvLyBNZXJnZSBjb25maWdzIHdpdGggb3ZlcnJpZGUgZGVzYyBvcmRlcjogdXNlciBwcmVmZXJlbmNlcyA+IGFwcCBjb25maWcgPiBkZWZhdWx0IGNvbmZpZ1xuICAgICAgY29uc3QgY2hhdENvbmZpZyA9IHtcbiAgICAgICAgLi4uZGVmYXVsdENoYXRDb25maWcsXG4gICAgICAgIC4uLnVzZXJTZXR0aW5nc0NvbmZpZ1xuICAgICAgfVxuICAgICAgLy8gVXBkYXRlIHRoZSBjaGF0IGNvbmZpZyBhbmQgc3RvcmUgaXQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXNcbiAgICAgIHRoaXMudXBkYXRlQ2hhdENvbmZpZyhjaGF0Q29uZmlnLCBmYWxzZSk7XG4gICAgICB0aGlzLmluaXRDb25maWckLm5leHQodHJ1ZSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoYE1pc3NpbmcgdmFsaWQgY29uZmlndXJhdGlvbiBmb3IgdGhlIGFzc2lzdGFudCBpbnN0YW5jZSAnJHtrZXl9J2ApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHZhbGlkIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBhc3Npc3RhbnQgaW5zdGFuY2UgJyR7a2V5fScgLiBcXG4gJHtKU09OLnN0cmluZ2lmeShlcnJvci5pc3N1ZXMsIG51bGwsIDIpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgdGhlIGNoYXQgY29uZmlnIGFuZCBzdG9yZSBpdCBpbiB0aGUgdXNlciBwcmVmZXJlbmNlc1xuICAgKiBAcGFyYW0gY29uZmlnICBUaGUgdXBkYXRlZCBjaGF0IGNvbmZpZ1xuICAgKiBAcGFyYW0gbm90aWZ5ICBXaGV0aGVyIHRvIG5vdGlmeSB0aGUgdXNlciBhYm91dCB0aGUgdXBkYXRlXG4gICAqIEBwYXJhbSBzdWNjZXNzQ2FsbGJhY2sgIFRoZSBjYWxsYmFjayB0byBleGVjdXRlIGlmIHRoZSB1cGRhdGUgaXMgc3VjY2Vzc2Z1bFxuICAgKiBAcGFyYW0gZXJyb3JDYWxsYmFjayAgVGhlIGNhbGxiYWNrIHRvIGV4ZWN1dGUgaWYgdGhlIHVwZGF0ZSBmYWlsc1xuICAgKi9cbiAgdXBkYXRlQ2hhdENvbmZpZyhjb25maWc6IENoYXRDb25maWcsIG5vdGlmeSA9IHRydWUsIHN1Y2Nlc3NDYWxsYmFjaz86ICgpID0+IGFueSwgZXJyb3JDYWxsYmFjaz86ICgpID0+IGFueSkge1xuICAgIHRoaXMuY2hhdENvbmZpZyQubmV4dChjb25maWcpO1xuICAgIGNvbnN0IGFzc2lzdGFudHMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmFzc2lzdGFudHMpO1xuICAgIGFzc2lzdGFudHNbdGhpcy5jaGF0SW5zdGFuY2VJZF0gPSBjb25maWc7XG4gICAgdGhpcy51c2VyU2V0dGluZ3NTZXJ2aWNlLnBhdGNoKHsgYXNzaXN0YW50cyB9KS5zdWJzY3JpYmUoXG4gICAgICBuZXh0ID0+IHtcbiAgICAgICAgaWYobm90aWZ5KSB7XG4gICAgICAgICAgICBzdWNjZXNzQ2FsbGJhY2sgPyBzdWNjZXNzQ2FsbGJhY2soKSA6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2Uuc3VjY2VzcyhgVGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFzc2lzdGFudCBpbnN0YW5jZSAnJHt0aGlzLmNoYXRJbnN0YW5jZUlkfScgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHVwZGF0ZWRgKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIGVycm9yID0+IHtcbiAgICAgICAgaWYobm90aWZ5KSB7XG4gICAgICAgICAgZXJyb3JDYWxsYmFjayA/IGVycm9yQ2FsbGJhY2soKSA6IHRoaXMubm90aWZpY2F0aW9uc1NlcnZpY2UuZXJyb3IoYFRoZSB1cGRhdGUgb2YgdGhlIGFzc2lzdGFudCBpbnN0YW5jZSAnJHt0aGlzLmNoYXRJbnN0YW5jZUlkfScgY29uZmlndXJhdGlvbiBmYWlsZWRgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmVycm9yKFwiQ291bGQgbm90IHBhdGNoIGFzc2lzdGFudHMhXCIsIGVycm9yKTtcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBGZXRjaCBBUEkgdG8gcmV0cmlldmUgYSBuZXcgbWVzc2FnZSBnaXZlbiBhbGwgcHJldmlvdXMgbWVzc2FnZXNcbiAgICovXG4gIGFic3RyYWN0IGZldGNoKG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdLCBxdWVyeT86IFF1ZXJ5KTogT2JzZXJ2YWJsZTxDaGF0UmVzcG9uc2U+XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgbGlzdCBvZiBtb2RlbHMgYXZhaWxhYmxlIG9uIHRoZSBzZXJ2ZXJcbiAgICovXG4gIGFic3RyYWN0IGxpc3RNb2RlbHMoKTogT2JzZXJ2YWJsZTxHbGxtTW9kZWxEZXNjcmlwdGlvbltdIHwgdW5kZWZpbmVkPjtcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyBhdmFpbGFibGUgb24gdGhlIHNlcnZlclxuICAgKi9cbiAgYWJzdHJhY3QgbGlzdEZ1bmN0aW9ucygpOiBPYnNlcnZhYmxlPEdsbG1GdW5jdGlvbltdIHwgdW5kZWZpbmVkPjtcblxuICAvKipcbiAgICogR2V0IHRoZSBtb2RlbCBkZXNjcmlwdGlvbiBmb3IgdGhlIGdpdmVuIChzZXJ2aWNlSWQgKyBtb2RlbElkKVxuICAgKiBJZiBhIG1vZGVsIGlzIG5vdCBmb3VuZCwgYW4gZXJyb3IgbWVzc2FnZSBpcyByZXR1cm5lZFxuICAgKiBAcGFyYW0gc2VydmljZUlkIFRoZSBzZXJ2aWNlSWQgb2YgdGhlIG1vZGVsXG4gICAqIEBwYXJhbSBtb2RlbElkIFRoZSBtb2RlbElkIG9mIHRoZSBtb2RlbFxuICAgKiBAcmV0dXJucyBUaGUgbW9kZWwgZGVzY3JpcHRpb25cbiAgICovXG4gIGdldE1vZGVsKHNlcnZpY2VJZDogc3RyaW5nLCBtb2RlbElkOiBzdHJpbmcpOiBHbGxtTW9kZWxEZXNjcmlwdGlvbiB8IHVuZGVmaW5lZHtcbiAgICBsZXQgbW9kZWwgPSB0aGlzLm1vZGVscz8uZmluZChtID0+IG0uc2VydmljZUlkID09PSBzZXJ2aWNlSWQgJiYgbS5tb2RlbElkID09PSBtb2RlbElkKTtcbiAgICAvLyBIYW5kbGUgb2Jzb2xldGUgY29uZmlnXG4gICAgaWYoIW1vZGVsKSB7XG4gICAgICB0aGlzLm5vdGlmaWNhdGlvbnNTZXJ2aWNlLmVycm9yKGBGQVRBTCBFUlJPUiA6IFRoZSBtb2RlbCAoc2VydmljZUlkID0gJyR7c2VydmljZUlkfScsIG1vZGVsSWQgPSAnJHttb2RlbElkfScpIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuIFBsZWFzZSBjb250YWN0IGFuIGFkbWluIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLmApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGQVRBTCBFUlJPUiA6IFRoZSBtb2RlbCAoc2VydmljZUlkID0gJyR7c2VydmljZUlkfScsIG1vZGVsSWQgPSAnJHttb2RlbElkfScpIGlzIG5vIGxvbmdlciBhdmFpbGFibGVgKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEZldGNoIHRoZSBsaXN0IHNhdmVkIGNoYXRzIGJlbG9uZ2luZyB0byBhIHNwZWNpZmljIGluc3RhbmNlIG9mIHRoZSBhc3Npc3RhbnRcbiAgICovXG4gIGFic3RyYWN0IGxpc3RTYXZlZENoYXQoKTogdm9pZDtcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBzYXZlZCBjaGF0IHdpdGggdGhlIGdpdmVuIGlkLCBpZiBleGlzdHMuIE90aGVyd2lzZSwgcmV0dXJuIHVuZGVmaW5lZFxuICAgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBzYXZlZCBjaGF0XG4gICAqL1xuICBhYnN0cmFjdCBnZXRTYXZlZENoYXQoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8U2F2ZWRDaGF0SGlzdG9yeSB8IHVuZGVmaW5lZD47XG5cbiAgLyoqXG4gICAqIEJ1bGsgZGVsZXRlIG9mIHNhdmVkIGNoYXRzIG1hdGNoaW5nIHRoZSBnaXZlbiBpZHNcbiAgICogQHBhcmFtIGlkcyBMaXN0IG9mIGlkcyBvZiB0aGUgc2F2ZWQgY2hhdHMgdG8gZGVsZXRlXG4gICAqIEByZXR1cm5zIFRoZSBudW1iZXIgb2YgZGVsZXRlZCBjaGF0c1xuICAgKi9cbiAgYWJzdHJhY3QgZGVsZXRlU2F2ZWRDaGF0KGlkczogc3RyaW5nW10pOiBPYnNlcnZhYmxlPG51bWJlcj47XG5cbiAgLy8gVG9kbzogcGVuZGluZyBpbXBsZW1lbnRhdGlvblxuICBub3RpZnlBdWRpdChtZXNzYWdlc0hpc3Rvcnk6IENoYXRNZXNzYWdlW10sIG1vZGVsOiBzdHJpbmcpIHtcbiAgICAvLyBsZXQgbnVtYmVyT2ZVc2VyTWVzc2FnZXMgPSAwO1xuICAgIC8vIGxldCBudW1iZXJPZkF0dGFjaG1lbnRzID0gMDtcbiAgICAvLyBsZXQgbnVtYmVyT2ZBc3Npc3RhbnRNZXNzYWdlcyA9IDA7XG4gICAgLy8gZm9yKGxldCBtIG9mIG1lc3NhZ2VzSGlzdG9yeSkge1xuICAgIC8vICAgaWYobS4kYXR0YWNobWVudCkgbnVtYmVyT2ZBdHRhY2htZW50cysrO1xuICAgIC8vICAgZWxzZSBpZihtLnJvbGUgPT09ICd1c2VyJykgbnVtYmVyT2ZVc2VyTWVzc2FnZXMrKztcbiAgICAvLyAgIGVsc2UgaWYgKG0ucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIG51bWJlck9mQXNzaXN0YW50TWVzc2FnZXMrKztcbiAgICAvLyB9XG4gICAgLy8gdGhpcy5hdWRpdFNlcnZpY2Uubm90aWZ5KHtcbiAgICAvLyAgIHR5cGU6ICdDaGF0X01lc3NhZ2VzJyxcbiAgICAvLyAgIGRldGFpbDoge1xuICAgIC8vICAgICAvLyBtZXNzYWdlOiBtZXNzYWdlc0hpc3RvcnkubWFwKG0gPT4gbS5yb2xlLnRvVXBwZXJDYXNlKCkgKyAnOiAnKyAobS4kYXR0YWNobWVudD8gYGF0dGFjaG1lbnQgJHttLiRhdHRhY2htZW50Py4kcmVjb3JkLnRpdGxlfWAgOiBtLmNvbnRlbnQpKS5qb2luKCdcXG5cXG4nKSxcbiAgICAvLyAgICAgbWVzc2FnZTogbWVzc2FnZXNIaXN0b3J5Lm1hcChtID0+IG0ucm9sZS50b1VwcGVyQ2FzZSgpICsgJzogJysgIG0uY29udGVudCkuam9pbignXFxuXFxuJyksXG4gICAgLy8gICAgIC8vIG51bWJlck9mVXNlck1lc3NhZ2VzLFxuICAgIC8vICAgICAvLyBudW1iZXJPZkF0dGFjaG1lbnRzLFxuICAgIC8vICAgICAvLyBudW1iZXJPZkFzc2lzdGFudE1lc3NhZ2VzLFxuICAgIC8vICAgICBtb2RlbFxuICAgIC8vICAgfVxuICAgIC8vIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvcm1hdCBhIGRhdGUgc3RyaW5nIGluIFVUQyB0byBhIGxvY2FsIGRhdGUgc3RyaW5nXG4gICAqIEBwYXJhbSB2YWx1ZSBEYXRlIHN0cmluZyBpbiBVVEMgdG8gZm9ybWF0XG4gICAqIEByZXR1cm5zIEEgZm9ybWF0dGVkIGxvY2FsIGRhdGUgc3RyaW5nXG4gICAqL1xuICBwcm90ZWN0ZWQgZm9ybWF0RGF0ZVRpbWUodmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaW50bFNlcnZpY2VbXCJmb3JtYXRUaW1lXCJdKHZhbHVlLCB7ZGF5OiBcIm51bWVyaWNcIiwgbW9udGg6IFwic2hvcnRcIiwgeWVhcjogXCJudW1lcmljXCJ9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlcyBhIHRleHQgcHJvbXB0IHRoYXQgbWF5IGNvbnRhaW4gcGxhY2Vob2xkZXJzIGZvciB2YXJpYWJsZXNcbiAgICogYW5kIHJlcGxhY2VzIHRoZXNlIHBsYWNlaG9sZGVycyBpZiBpdCBmaW5kcyBhIG1hdGNoIGluIHRoZSBnaXZlblxuICAgKiBjb250ZXh0IG9iamVjdC5cbiAgICovXG4gIHN0YXRpYyBmb3JtYXRQcm9tcHQocHJvbXB0OiBzdHJpbmcsIGNvbnRleHQ6IGFueSkge1xuICAgIHJldHVybiBwcm9tcHQucmVwbGFjZShcbiAgICAgIC97eyguKj8pfX0vZyxcbiAgICAgIChtYXRjaCwgZXhwcikgPT4gZ2V0KGNvbnRleHQsIGV4cHIpID8/IG1hdGNoXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBBIEdsb2JhbGx5IFVuaXF1ZSBJZGVudGlmaWVyXG4gICAqL1xuICBzdGF0aWMgZ2VuZXJhdGVHVUlEKCkge1xuICAgIHJldHVybiBVdGlscy5ndWlkKCk7XG4gIH1cblxufVxuIl19
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Component, Input, ViewEncapsulation } from '@angular/core';
|
|
2
|
+
import { defaultFormatIcons } from './icons';
|
|
3
|
+
import { CommonModule } from '@angular/common';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
export class FormatIconComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this._formatIcons = defaultFormatIcons;
|
|
9
|
+
}
|
|
10
|
+
ngOnChanges() {
|
|
11
|
+
const icon = this.extension ? this._formatIcons[this.extension] : undefined;
|
|
12
|
+
this.icon = icon?.icon || this._formatIcons.file.icon;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
FormatIconComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FormatIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
16
|
+
FormatIconComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: FormatIconComponent, isStandalone: true, selector: "sq-format-icon", inputs: { extension: "extension" }, usesOnChanges: true, ngImport: i0, template: "<span *ngIf=\"icon\" class=\"{{icon}}\"></span>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
17
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: FormatIconComponent, decorators: [{
|
|
18
|
+
type: Component,
|
|
19
|
+
args: [{ selector: 'sq-format-icon', encapsulation: ViewEncapsulation.None, standalone: true, imports: [CommonModule], template: "<span *ngIf=\"icon\" class=\"{{icon}}\"></span>" }]
|
|
20
|
+
}], propDecorators: { extension: [{
|
|
21
|
+
type: Input
|
|
22
|
+
}] } });
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LWljb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvZm9ybWF0LWljb24vZm9ybWF0LWljb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvZm9ybWF0LWljb24vZm9ybWF0LWljb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQWEsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBUy9DLE1BQU0sT0FBTyxtQkFBbUI7SUFQaEM7UUFXVSxpQkFBWSxHQUFHLGtCQUFrQixDQUFDO0tBUzNDO0lBTEMsV0FBVztRQUNULE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDNUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4RCxDQUFDOztnSEFYVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixtSUNYaEMsaURBQTJDLDJDRFMvQixZQUFZOzJGQUVYLG1CQUFtQjtrQkFQL0IsU0FBUzsrQkFDRSxnQkFBZ0IsaUJBRVgsaUJBQWlCLENBQUMsSUFBSSxjQUN6QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUM7OEJBSWQsU0FBUztzQkFBakIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlZmF1bHRGb3JtYXRJY29ucyB9IGZyb20gJy4vaWNvbnMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3EtZm9ybWF0LWljb24nLFxuICB0ZW1wbGF0ZVVybDogJy4vZm9ybWF0LWljb24uY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtYXRJY29uQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcblxuICBASW5wdXQoKSBleHRlbnNpb246IHN0cmluZztcblxuICBwcml2YXRlIF9mb3JtYXRJY29ucyA9IGRlZmF1bHRGb3JtYXRJY29ucztcbiAgXG4gIGljb246IHN0cmluZztcblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICBjb25zdCBpY29uID0gdGhpcy5leHRlbnNpb24gPyB0aGlzLl9mb3JtYXRJY29uc1t0aGlzLmV4dGVuc2lvbl0gOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5pY29uID0gaWNvbj8uaWNvbiB8fCB0aGlzLl9mb3JtYXRJY29ucy5maWxlLmljb247XG4gIH1cblxufVxuIiwiPHNwYW4gKm5nSWY9XCJpY29uXCIgY2xhc3M9XCJ7e2ljb259fVwiPjwvc3Bhbj4iXX0=
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
export const defaultFormatIcons = {
|
|
2
|
+
"extractslocations": { icon: "far fa-file-alt" },
|
|
3
|
+
"matchlocations": { icon: "far fa-flag" },
|
|
4
|
+
"geo": { icon: "fas fa-map-marker-alt" },
|
|
5
|
+
"person": { icon: "fas fa-user" },
|
|
6
|
+
"company": { icon: "fas fa-building" },
|
|
7
|
+
"title": { icon: "fas fa-tag" },
|
|
8
|
+
"modified": { icon: "far fa-calendar-alt" },
|
|
9
|
+
"size": { icon: "fas fa-weight-hanging" },
|
|
10
|
+
"treepath": { icon: "fas fa-folder-open" },
|
|
11
|
+
"filename": { icon: "far fa-file-alt" },
|
|
12
|
+
"authors": { icon: "fas fa-user-edit" },
|
|
13
|
+
"accesslists": { icon: "fas fa-lock" },
|
|
14
|
+
"doctype": { icon: "far fa-file" },
|
|
15
|
+
"documentlanguages": { icon: "fas fa-globe-americas" },
|
|
16
|
+
"globalrelevance": { icon: "far fa-star" },
|
|
17
|
+
"indexationtime": { icon: "fas fa-search" },
|
|
18
|
+
"concepts": { icon: "far fa-comment-dots" },
|
|
19
|
+
"keywords": { icon: "fas fa-tags" },
|
|
20
|
+
"matchingpartnames": { icon: "fas fa-align-left" },
|
|
21
|
+
"msgfrom": { icon: "fas fa-envelope" },
|
|
22
|
+
"msgto": { icon: "fas fa-envelope-open-text" },
|
|
23
|
+
"file": { icon: "far fa-file" },
|
|
24
|
+
"htm": { icon: "fas fa-globe-europe", color: '#4545bf' },
|
|
25
|
+
"html": { icon: "fas fa-globe-europe", color: '#4545bf' },
|
|
26
|
+
"xhtm": { icon: "fas fa-globe-europe", color: '#4545bf' },
|
|
27
|
+
"xhtml": { icon: "fas fa-globe-europe", color: '#4545bf' },
|
|
28
|
+
"mht": { icon: "fas fa-globe-europe", color: '#4545bf' },
|
|
29
|
+
"doc": { icon: "far fa-file-word", color: '#3f3fca' },
|
|
30
|
+
"docx": { icon: "far fa-file-word", color: '#3f3fca' },
|
|
31
|
+
"docm": { icon: "far fa-file-word", color: '#3f3fca' },
|
|
32
|
+
"dot": { icon: "far fa-file-word", color: '#3f3fca' },
|
|
33
|
+
"dotx": { icon: "far fa-file-word", color: '#3f3fca' },
|
|
34
|
+
"dotm": { icon: "far fa-file-word", color: '#3f3fca' },
|
|
35
|
+
"rtf": { icon: "far fa-file-word", color: '#3f3fca' },
|
|
36
|
+
"odt": { icon: "far fa-file-word", color: 'grey' },
|
|
37
|
+
"ott": { icon: "far fa-file-word", color: 'grey' },
|
|
38
|
+
"gdoc": { icon: "far fa-file-word", color: 'blue' },
|
|
39
|
+
"xls": { icon: "far fa-file-excel", color: 'green' },
|
|
40
|
+
"xlsx": { icon: "far fa-file-excel", color: 'green' },
|
|
41
|
+
"xlt": { icon: "far fa-file-excel", color: 'green' },
|
|
42
|
+
"xltx": { icon: "far fa-file-excel", color: 'green' },
|
|
43
|
+
"xlsm": { icon: "far fa-file-excel", color: 'green' },
|
|
44
|
+
"xltm": { icon: "far fa-file-excel", color: 'green' },
|
|
45
|
+
"gsheet": { icon: "far fa-file-excel", color: 'darkgreen' },
|
|
46
|
+
"ods": { icon: "far fa-file-excel", color: 'lightgreen' },
|
|
47
|
+
"ots": { icon: "far fa-file-excel", color: 'lightgreen' },
|
|
48
|
+
"ppt": { icon: "far fa-file-powerpoint", color: '#e64b30' },
|
|
49
|
+
"pptx": { icon: "far fa-file-powerpoint", color: '#e64b30' },
|
|
50
|
+
"pptm": { icon: "far fa-file-powerpoint", color: '#e64b30' },
|
|
51
|
+
"pptm2": { icon: "far fa-file-powerpoint", color: '#e64b30' },
|
|
52
|
+
"pps": { icon: "far fa-file-powerpoint", color: '#e64b30' },
|
|
53
|
+
"ppsx": { icon: "far fa-file-powerpoint", color: '#e64b30' },
|
|
54
|
+
"ppsm": { icon: "far fa-file-powerpoint", color: '#e64b30' },
|
|
55
|
+
"pot": { icon: "far fa-file-powerpoint", color: '#e64b30' },
|
|
56
|
+
"potx": { icon: "far fa-file-powerpoint", color: '#e64b30' },
|
|
57
|
+
"potm": { icon: "far fa-file-powerpoint", color: '#e64b30' },
|
|
58
|
+
"odp": { icon: "far fa-file-powerpoint", color: 'red' },
|
|
59
|
+
"otp": { icon: "far fa-file-powerpoint", color: 'red' },
|
|
60
|
+
"gslides": { icon: "far fa-file-powerpoint", color: 'orange' },
|
|
61
|
+
"pdf": { icon: "far fa-file-pdf", color: '#ec2e2e' },
|
|
62
|
+
"jpg": { icon: "far fa-file-image", color: '#4545bf' },
|
|
63
|
+
"jpeg": { icon: "far fa-file-image", color: '#4545bf' },
|
|
64
|
+
"bmp": { icon: "far fa-file-image", color: '#4545bf' },
|
|
65
|
+
"tiff": { icon: "far fa-file-image", color: '#4545bf' },
|
|
66
|
+
"tif": { icon: "far fa-file-image", color: '#4545bf' },
|
|
67
|
+
"gif": { icon: "far fa-file-image", color: '#4545bf' },
|
|
68
|
+
"png": { icon: "far fa-file-image", color: '#4545bf' },
|
|
69
|
+
"mp4": { icon: "far fa-file-video", color: '#4545bf' },
|
|
70
|
+
"flv": { icon: "far fa-file-video", color: '#4545bf' },
|
|
71
|
+
"swf": { icon: "far fa-file-video", color: '#4545bf' },
|
|
72
|
+
"mts": { icon: "far fa-file-video", color: '#4545bf' },
|
|
73
|
+
"divx": { icon: "far fa-file-video", color: '#4545bf' },
|
|
74
|
+
"wmv": { icon: "far fa-file-video", color: '#4545bf' },
|
|
75
|
+
"avi": { icon: "far fa-file-video", color: '#4545bf' },
|
|
76
|
+
"mov": { icon: "far fa-file-video", color: '#4545bf' },
|
|
77
|
+
"mpg": { icon: "far fa-file-video", color: '#4545bf' },
|
|
78
|
+
"mpeg": { icon: "far fa-file-video", color: '#4545bf' },
|
|
79
|
+
"asf": { icon: "far fa-file-video", color: '#4545bf' },
|
|
80
|
+
"rm": { icon: "far fa-file-video", color: '#4545bf' },
|
|
81
|
+
"mp3": { icon: "far fa-file-audio", color: 'lightblue' },
|
|
82
|
+
"wav": { icon: "far fa-file-audio", color: 'lightblue' },
|
|
83
|
+
"ogg": { icon: "far fa-file-audio", color: 'lightblue' },
|
|
84
|
+
"wma": { icon: "far fa-file-audio", color: 'lightblue' },
|
|
85
|
+
"aac": { icon: "far fa-file-audio", color: 'lightblue' },
|
|
86
|
+
"m3u": { icon: "far fa-file-audio", color: 'lightblue' },
|
|
87
|
+
"txt": { icon: "far fa-file-alt", color: '#202020' },
|
|
88
|
+
"text": { icon: "far fa-file-alt", color: '#202020' },
|
|
89
|
+
"xml": { icon: "far fa-file-code", color: '#4545bf' },
|
|
90
|
+
"cs": { icon: "far fa-file-code", color: '#4545bf' },
|
|
91
|
+
"java": { icon: "far fa-file-code", color: '#4545bf' },
|
|
92
|
+
"cpp": { icon: "far fa-file-code", color: '#4545bf' },
|
|
93
|
+
"c": { icon: "far fa-file-code", color: '#4545bf' },
|
|
94
|
+
"h": { icon: "far fa-file-code", color: '#4545bf' },
|
|
95
|
+
"hpp": { icon: "far fa-file-code", color: '#4545bf' },
|
|
96
|
+
"js": { icon: "far fa-file-code", color: '#4545bf' },
|
|
97
|
+
"ts": { icon: "far fa-file-code", color: '#4545bf' },
|
|
98
|
+
"zip": { icon: "far fa-file-archive", color: 'yellow' },
|
|
99
|
+
"7zip": { icon: "far fa-file-archive", color: 'yellow' },
|
|
100
|
+
"7z": { icon: "far fa-file-archive", color: 'yellow' },
|
|
101
|
+
"rar": { icon: "far fa-file-archive", color: 'yellow' },
|
|
102
|
+
"gz": { icon: "far fa-file-archive", color: 'yellow' },
|
|
103
|
+
"notes": { icon: "fas fa-file-invoice", color: 'orange' },
|
|
104
|
+
"quickr": { icon: "fas fa-file-invoice", color: 'orange' },
|
|
105
|
+
"email": { icon: "far fa-envelope", color: 'black' },
|
|
106
|
+
"mail": { icon: "far fa-envelope", color: 'black' },
|
|
107
|
+
"msg": { icon: "far fa-envelope", color: 'black' },
|
|
108
|
+
"mdb": { icon: "far fa-database", color: 'purple' },
|
|
109
|
+
"odb": { icon: "far fa-database", color: 'darkred' },
|
|
110
|
+
"otb": { icon: "far fa-database", color: 'darkred' },
|
|
111
|
+
"xsn": { icon: "fas fa-file-excel", color: 'purple' },
|
|
112
|
+
"gform": { icon: "fas fa-file-excel", color: 'purple' },
|
|
113
|
+
"one": { icon: "far fa-book", color: 'purple' },
|
|
114
|
+
"odf": { icon: "fas fa-file-medical-alt", color: 'grey' },
|
|
115
|
+
"otf": { icon: "fas fa-file-medical-alt", color: 'grey' },
|
|
116
|
+
"vsdx": { icon: "far fa-object-group", color: 'purple' },
|
|
117
|
+
"vsx": { icon: "far fa-object-group", color: 'purple' },
|
|
118
|
+
"vtx": { icon: "far fa-object-group", color: 'purple' },
|
|
119
|
+
"vdx": { icon: "far fa-object-group", color: 'purple' },
|
|
120
|
+
"vssx": { icon: "far fa-object-group", color: 'purple' },
|
|
121
|
+
"vstx": { icon: "far fa-object-group", color: 'purple' },
|
|
122
|
+
"vsdm": { icon: "far fa-object-group", color: 'purple' },
|
|
123
|
+
"vssm": { icon: "far fa-object-group", color: 'purple' },
|
|
124
|
+
"vstm": { icon: "far fa-object-group", color: 'purple' },
|
|
125
|
+
"vdw": { icon: "far fa-object-group", color: 'purple' },
|
|
126
|
+
"vsd": { icon: "far fa-object-group", color: 'purple' },
|
|
127
|
+
"vss": { icon: "far fa-object-group", color: 'purple' },
|
|
128
|
+
"vst": { icon: "far fa-object-group", color: 'purple' },
|
|
129
|
+
"odg": { icon: "far fa-object-group", color: 'orange' },
|
|
130
|
+
"otg": { icon: "far fa-object-group", color: 'orange' },
|
|
131
|
+
"gdraw": { icon: "far fa-object-group", color: 'red' },
|
|
132
|
+
"pub": { icon: "far fa-object-group", color: 'darkgreen' },
|
|
133
|
+
"ldap": { icon: "far fa-users", color: 'brown' },
|
|
134
|
+
"ad": { icon: "far fa-users", color: 'brown' },
|
|
135
|
+
"mmp": { icon: "fas fa-file-medical", color: 'grey' },
|
|
136
|
+
"mppx": { icon: "fas fa-file-medical", color: 'grey' },
|
|
137
|
+
};
|
|
138
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9mb3JtYXQtaWNvbi9pY29ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFLQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBK0I7SUFDMUQsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7SUFDaEQsZ0JBQWdCLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO0lBQ3pDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRTtJQUN4QyxRQUFRLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO0lBQ2pDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtJQUN0QyxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0lBQy9CLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRTtJQUMzQyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUU7SUFDekMsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLG9CQUFvQixFQUFFO0lBQzFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRTtJQUN2QyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7SUFDdkMsYUFBYSxFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtJQUN0QyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO0lBQ2xDLG1CQUFtQixFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFO0lBQ3RELGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRTtJQUMxQyxnQkFBZ0IsRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUU7SUFDM0MsVUFBVSxFQUFFLEVBQUUsSUFBSSxFQUFFLHFCQUFxQixFQUFFO0lBQzNDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUU7SUFDbkMsbUJBQW1CLEVBQUUsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUU7SUFDbEQsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFO0lBQ3RDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSwyQkFBMkIsRUFBRTtJQUU5QyxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFO0lBQy9CLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3hELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3pELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3pELE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzFELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3hELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3JELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3JELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3JELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ2xELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ2xELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ25ELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3BELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3JELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3BELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3JELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3JELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3JELFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQzNELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO0lBQ3pELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsWUFBWSxFQUFFO0lBQ3pELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzNELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzVELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzVELE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzdELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzNELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzVELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzVELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzNELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzVELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQzVELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0lBQ3ZELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFO0lBQ3ZELFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQzlELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3BELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3ZELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3ZELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3ZELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3ZELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3JELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ3hELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ3hELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ3hELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ3hELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ3hELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO0lBQ3hELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3BELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3JELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3JELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3BELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3JELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ25ELEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ25ELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3JELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3BELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxrQkFBa0IsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3BELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ3ZELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ3hELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ3RELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ3ZELElBQUksRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ3RELE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ3pELFFBQVEsRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQzFELE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ3BELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ25ELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQ2xELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ25ELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3BELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFO0lBQ3BELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ3JELE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxtQkFBbUIsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0lBQ3ZELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUMvQyxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUN6RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtJQUN6RCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN4RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN2RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN2RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN2RCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN4RCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN4RCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN4RCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN4RCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN4RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN2RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN2RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN2RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN2RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN2RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUN2RCxPQUFPLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtJQUN0RCxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUscUJBQXFCLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRTtJQUMxRCxNQUFNLEVBQUUsRUFBRSxJQUFJLEVBQUUsY0FBYyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDaEQsSUFBSSxFQUFFLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFO0lBQzlDLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0lBQ3JELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0NBQ3pELENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEljb25Gb3JtYXQge1xuICAgIGljb246IHN0cmluZztcbiAgICBjb2xvcj86IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRGb3JtYXRJY29uczogUmVjb3JkPHN0cmluZywgSWNvbkZvcm1hdD4gPSB7XG4gICAgXCJleHRyYWN0c2xvY2F0aW9uc1wiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtYWx0XCIgfSxcbiAgICBcIm1hdGNobG9jYXRpb25zXCI6IHsgaWNvbjogXCJmYXIgZmEtZmxhZ1wiIH0sXG4gICAgXCJnZW9cIjogeyBpY29uOiBcImZhcyBmYS1tYXAtbWFya2VyLWFsdFwiIH0sXG4gICAgXCJwZXJzb25cIjogeyBpY29uOiBcImZhcyBmYS11c2VyXCIgfSxcbiAgICBcImNvbXBhbnlcIjogeyBpY29uOiBcImZhcyBmYS1idWlsZGluZ1wiIH0sXG4gICAgXCJ0aXRsZVwiOiB7IGljb246IFwiZmFzIGZhLXRhZ1wiIH0sXG4gICAgXCJtb2RpZmllZFwiOiB7IGljb246IFwiZmFyIGZhLWNhbGVuZGFyLWFsdFwiIH0sXG4gICAgXCJzaXplXCI6IHsgaWNvbjogXCJmYXMgZmEtd2VpZ2h0LWhhbmdpbmdcIiB9LFxuICAgIFwidHJlZXBhdGhcIjogeyBpY29uOiBcImZhcyBmYS1mb2xkZXItb3BlblwiIH0sXG4gICAgXCJmaWxlbmFtZVwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtYWx0XCIgfSxcbiAgICBcImF1dGhvcnNcIjogeyBpY29uOiBcImZhcyBmYS11c2VyLWVkaXRcIiB9LFxuICAgIFwiYWNjZXNzbGlzdHNcIjogeyBpY29uOiBcImZhcyBmYS1sb2NrXCIgfSxcbiAgICBcImRvY3R5cGVcIjogeyBpY29uOiBcImZhciBmYS1maWxlXCIgfSxcbiAgICBcImRvY3VtZW50bGFuZ3VhZ2VzXCI6IHsgaWNvbjogXCJmYXMgZmEtZ2xvYmUtYW1lcmljYXNcIiB9LFxuICAgIFwiZ2xvYmFscmVsZXZhbmNlXCI6IHsgaWNvbjogXCJmYXIgZmEtc3RhclwiIH0sXG4gICAgXCJpbmRleGF0aW9udGltZVwiOiB7IGljb246IFwiZmFzIGZhLXNlYXJjaFwiIH0sXG4gICAgXCJjb25jZXB0c1wiOiB7IGljb246IFwiZmFyIGZhLWNvbW1lbnQtZG90c1wiIH0sXG4gICAgXCJrZXl3b3Jkc1wiOiB7IGljb246IFwiZmFzIGZhLXRhZ3NcIiB9LFxuICAgIFwibWF0Y2hpbmdwYXJ0bmFtZXNcIjogeyBpY29uOiBcImZhcyBmYS1hbGlnbi1sZWZ0XCIgfSxcbiAgICBcIm1zZ2Zyb21cIjogeyBpY29uOiBcImZhcyBmYS1lbnZlbG9wZVwiIH0sXG4gICAgXCJtc2d0b1wiOiB7IGljb246IFwiZmFzIGZhLWVudmVsb3BlLW9wZW4tdGV4dFwiIH0sXG5cbiAgICBcImZpbGVcIjogeyBpY29uOiBcImZhciBmYS1maWxlXCIgfSxcbiAgICBcImh0bVwiOiB7IGljb246IFwiZmFzIGZhLWdsb2JlLWV1cm9wZVwiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJodG1sXCI6IHsgaWNvbjogXCJmYXMgZmEtZ2xvYmUtZXVyb3BlXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcInhodG1cIjogeyBpY29uOiBcImZhcyBmYS1nbG9iZS1ldXJvcGVcIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwieGh0bWxcIjogeyBpY29uOiBcImZhcyBmYS1nbG9iZS1ldXJvcGVcIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwibWh0XCI6IHsgaWNvbjogXCJmYXMgZmEtZ2xvYmUtZXVyb3BlXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcImRvY1wiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtd29yZFwiLCBjb2xvcjogJyMzZjNmY2EnIH0sXG4gICAgXCJkb2N4XCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS13b3JkXCIsIGNvbG9yOiAnIzNmM2ZjYScgfSxcbiAgICBcImRvY21cIjogeyBpY29uOiBcImZhciBmYS1maWxlLXdvcmRcIiwgY29sb3I6ICcjM2YzZmNhJyB9LFxuICAgIFwiZG90XCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS13b3JkXCIsIGNvbG9yOiAnIzNmM2ZjYScgfSxcbiAgICBcImRvdHhcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXdvcmRcIiwgY29sb3I6ICcjM2YzZmNhJyB9LFxuICAgIFwiZG90bVwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtd29yZFwiLCBjb2xvcjogJyMzZjNmY2EnIH0sXG4gICAgXCJydGZcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXdvcmRcIiwgY29sb3I6ICcjM2YzZmNhJyB9LFxuICAgIFwib2R0XCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS13b3JkXCIsIGNvbG9yOiAnZ3JleScgfSxcbiAgICBcIm90dFwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtd29yZFwiLCBjb2xvcjogJ2dyZXknIH0sXG4gICAgXCJnZG9jXCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS13b3JkXCIsIGNvbG9yOiAnYmx1ZScgfSxcbiAgICBcInhsc1wiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtZXhjZWxcIiwgY29sb3I6ICdncmVlbicgfSxcbiAgICBcInhsc3hcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWV4Y2VsXCIsIGNvbG9yOiAnZ3JlZW4nIH0sXG4gICAgXCJ4bHRcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWV4Y2VsXCIsIGNvbG9yOiAnZ3JlZW4nIH0sXG4gICAgXCJ4bHR4XCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS1leGNlbFwiLCBjb2xvcjogJ2dyZWVuJyB9LFxuICAgIFwieGxzbVwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtZXhjZWxcIiwgY29sb3I6ICdncmVlbicgfSxcbiAgICBcInhsdG1cIjogeyBpY29uOiBcImZhciBmYS1maWxlLWV4Y2VsXCIsIGNvbG9yOiAnZ3JlZW4nIH0sXG4gICAgXCJnc2hlZXRcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWV4Y2VsXCIsIGNvbG9yOiAnZGFya2dyZWVuJyB9LFxuICAgIFwib2RzXCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS1leGNlbFwiLCBjb2xvcjogJ2xpZ2h0Z3JlZW4nIH0sXG4gICAgXCJvdHNcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWV4Y2VsXCIsIGNvbG9yOiAnbGlnaHRncmVlbicgfSxcbiAgICBcInBwdFwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtcG93ZXJwb2ludFwiLCBjb2xvcjogJyNlNjRiMzAnIH0sXG4gICAgXCJwcHR4XCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS1wb3dlcnBvaW50XCIsIGNvbG9yOiAnI2U2NGIzMCcgfSxcbiAgICBcInBwdG1cIjogeyBpY29uOiBcImZhciBmYS1maWxlLXBvd2VycG9pbnRcIiwgY29sb3I6ICcjZTY0YjMwJyB9LFxuICAgIFwicHB0bTJcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXBvd2VycG9pbnRcIiwgY29sb3I6ICcjZTY0YjMwJyB9LFxuICAgIFwicHBzXCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS1wb3dlcnBvaW50XCIsIGNvbG9yOiAnI2U2NGIzMCcgfSxcbiAgICBcInBwc3hcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXBvd2VycG9pbnRcIiwgY29sb3I6ICcjZTY0YjMwJyB9LFxuICAgIFwicHBzbVwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtcG93ZXJwb2ludFwiLCBjb2xvcjogJyNlNjRiMzAnIH0sXG4gICAgXCJwb3RcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXBvd2VycG9pbnRcIiwgY29sb3I6ICcjZTY0YjMwJyB9LFxuICAgIFwicG90eFwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtcG93ZXJwb2ludFwiLCBjb2xvcjogJyNlNjRiMzAnIH0sXG4gICAgXCJwb3RtXCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS1wb3dlcnBvaW50XCIsIGNvbG9yOiAnI2U2NGIzMCcgfSxcbiAgICBcIm9kcFwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtcG93ZXJwb2ludFwiLCBjb2xvcjogJ3JlZCcgfSxcbiAgICBcIm90cFwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtcG93ZXJwb2ludFwiLCBjb2xvcjogJ3JlZCcgfSxcbiAgICBcImdzbGlkZXNcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXBvd2VycG9pbnRcIiwgY29sb3I6ICdvcmFuZ2UnIH0sXG4gICAgXCJwZGZcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXBkZlwiLCBjb2xvcjogJyNlYzJlMmUnIH0sXG4gICAgXCJqcGdcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWltYWdlXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcImpwZWdcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWltYWdlXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcImJtcFwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtaW1hZ2VcIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwidGlmZlwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtaW1hZ2VcIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwidGlmXCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS1pbWFnZVwiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJnaWZcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWltYWdlXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcInBuZ1wiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtaW1hZ2VcIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwibXA0XCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS12aWRlb1wiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJmbHZcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXZpZGVvXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcInN3ZlwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtdmlkZW9cIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwibXRzXCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS12aWRlb1wiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJkaXZ4XCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS12aWRlb1wiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJ3bXZcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXZpZGVvXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcImF2aVwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtdmlkZW9cIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwibW92XCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS12aWRlb1wiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJtcGdcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXZpZGVvXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcIm1wZWdcIjogeyBpY29uOiBcImZhciBmYS1maWxlLXZpZGVvXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcImFzZlwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtdmlkZW9cIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwicm1cIjogeyBpY29uOiBcImZhciBmYS1maWxlLXZpZGVvXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcIm1wM1wiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtYXVkaW9cIiwgY29sb3I6ICdsaWdodGJsdWUnIH0sXG4gICAgXCJ3YXZcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWF1ZGlvXCIsIGNvbG9yOiAnbGlnaHRibHVlJyB9LFxuICAgIFwib2dnXCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS1hdWRpb1wiLCBjb2xvcjogJ2xpZ2h0Ymx1ZScgfSxcbiAgICBcIndtYVwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtYXVkaW9cIiwgY29sb3I6ICdsaWdodGJsdWUnIH0sXG4gICAgXCJhYWNcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWF1ZGlvXCIsIGNvbG9yOiAnbGlnaHRibHVlJyB9LFxuICAgIFwibTN1XCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS1hdWRpb1wiLCBjb2xvcjogJ2xpZ2h0Ymx1ZScgfSxcbiAgICBcInR4dFwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtYWx0XCIsIGNvbG9yOiAnIzIwMjAyMCcgfSxcbiAgICBcInRleHRcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWFsdFwiLCBjb2xvcjogJyMyMDIwMjAnIH0sXG4gICAgXCJ4bWxcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWNvZGVcIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwiY3NcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWNvZGVcIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwiamF2YVwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtY29kZVwiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJjcHBcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWNvZGVcIiwgY29sb3I6ICcjNDU0NWJmJyB9LFxuICAgIFwiY1wiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtY29kZVwiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJoXCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS1jb2RlXCIsIGNvbG9yOiAnIzQ1NDViZicgfSxcbiAgICBcImhwcFwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtY29kZVwiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJqc1wiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtY29kZVwiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJ0c1wiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtY29kZVwiLCBjb2xvcjogJyM0NTQ1YmYnIH0sXG4gICAgXCJ6aXBcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWFyY2hpdmVcIiwgY29sb3I6ICd5ZWxsb3cnIH0sXG4gICAgXCI3emlwXCI6IHsgaWNvbjogXCJmYXIgZmEtZmlsZS1hcmNoaXZlXCIsIGNvbG9yOiAneWVsbG93JyB9LFxuICAgIFwiN3pcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWFyY2hpdmVcIiwgY29sb3I6ICd5ZWxsb3cnIH0sXG4gICAgXCJyYXJcIjogeyBpY29uOiBcImZhciBmYS1maWxlLWFyY2hpdmVcIiwgY29sb3I6ICd5ZWxsb3cnIH0sXG4gICAgXCJnelwiOiB7IGljb246IFwiZmFyIGZhLWZpbGUtYXJjaGl2ZVwiLCBjb2xvcjogJ3llbGxvdycgfSxcbiAgICBcIm5vdGVzXCI6IHsgaWNvbjogXCJmYXMgZmEtZmlsZS1pbnZvaWNlXCIsIGNvbG9yOiAnb3JhbmdlJyB9LFxuICAgIFwicXVpY2tyXCI6IHsgaWNvbjogXCJmYXMgZmEtZmlsZS1pbnZvaWNlXCIsIGNvbG9yOiAnb3JhbmdlJyB9LFxuICAgIFwiZW1haWxcIjogeyBpY29uOiBcImZhciBmYS1lbnZlbG9wZVwiLCBjb2xvcjogJ2JsYWNrJyB9LFxuICAgIFwibWFpbFwiOiB7IGljb246IFwiZmFyIGZhLWVudmVsb3BlXCIsIGNvbG9yOiAnYmxhY2snIH0sXG4gICAgXCJtc2dcIjogeyBpY29uOiBcImZhciBmYS1lbnZlbG9wZVwiLCBjb2xvcjogJ2JsYWNrJyB9LFxuICAgIFwibWRiXCI6IHsgaWNvbjogXCJmYXIgZmEtZGF0YWJhc2VcIiwgY29sb3I6ICdwdXJwbGUnIH0sXG4gICAgXCJvZGJcIjogeyBpY29uOiBcImZhciBmYS1kYXRhYmFzZVwiLCBjb2xvcjogJ2RhcmtyZWQnIH0sXG4gICAgXCJvdGJcIjogeyBpY29uOiBcImZhciBmYS1kYXRhYmFzZVwiLCBjb2xvcjogJ2RhcmtyZWQnIH0sXG4gICAgXCJ4c25cIjogeyBpY29uOiBcImZhcyBmYS1maWxlLWV4Y2VsXCIsIGNvbG9yOiAncHVycGxlJyB9LFxuICAgIFwiZ2Zvcm1cIjogeyBpY29uOiBcImZhcyBmYS1maWxlLWV4Y2VsXCIsIGNvbG9yOiAncHVycGxlJyB9LFxuICAgIFwib25lXCI6IHsgaWNvbjogXCJmYXIgZmEtYm9va1wiLCBjb2xvcjogJ3B1cnBsZScgfSxcbiAgICBcIm9kZlwiOiB7IGljb246IFwiZmFzIGZhLWZpbGUtbWVkaWNhbC1hbHRcIiwgY29sb3I6ICdncmV5JyB9LFxuICAgIFwib3RmXCI6IHsgaWNvbjogXCJmYXMgZmEtZmlsZS1tZWRpY2FsLWFsdFwiLCBjb2xvcjogJ2dyZXknIH0sXG4gICAgXCJ2c2R4XCI6IHsgaWNvbjogXCJmYXIgZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiAncHVycGxlJyB9LFxuICAgIFwidnN4XCI6IHsgaWNvbjogXCJmYXIgZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiAncHVycGxlJyB9LFxuICAgIFwidnR4XCI6IHsgaWNvbjogXCJmYXIgZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiAncHVycGxlJyB9LFxuICAgIFwidmR4XCI6IHsgaWNvbjogXCJmYXIgZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiAncHVycGxlJyB9LFxuICAgIFwidnNzeFwiOiB7IGljb246IFwiZmFyIGZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogJ3B1cnBsZScgfSxcbiAgICBcInZzdHhcIjogeyBpY29uOiBcImZhciBmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6ICdwdXJwbGUnIH0sXG4gICAgXCJ2c2RtXCI6IHsgaWNvbjogXCJmYXIgZmEtb2JqZWN0LWdyb3VwXCIsIGNvbG9yOiAncHVycGxlJyB9LFxuICAgIFwidnNzbVwiOiB7IGljb246IFwiZmFyIGZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogJ3B1cnBsZScgfSxcbiAgICBcInZzdG1cIjogeyBpY29uOiBcImZhciBmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6ICdwdXJwbGUnIH0sXG4gICAgXCJ2ZHdcIjogeyBpY29uOiBcImZhciBmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6ICdwdXJwbGUnIH0sXG4gICAgXCJ2c2RcIjogeyBpY29uOiBcImZhciBmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6ICdwdXJwbGUnIH0sXG4gICAgXCJ2c3NcIjogeyBpY29uOiBcImZhciBmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6ICdwdXJwbGUnIH0sXG4gICAgXCJ2c3RcIjogeyBpY29uOiBcImZhciBmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6ICdwdXJwbGUnIH0sXG4gICAgXCJvZGdcIjogeyBpY29uOiBcImZhciBmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6ICdvcmFuZ2UnIH0sXG4gICAgXCJvdGdcIjogeyBpY29uOiBcImZhciBmYS1vYmplY3QtZ3JvdXBcIiwgY29sb3I6ICdvcmFuZ2UnIH0sXG4gICAgXCJnZHJhd1wiOiB7IGljb246IFwiZmFyIGZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogJ3JlZCcgfSxcbiAgICBcInB1YlwiOiB7IGljb246IFwiZmFyIGZhLW9iamVjdC1ncm91cFwiLCBjb2xvcjogJ2RhcmtncmVlbicgfSxcbiAgICBcImxkYXBcIjogeyBpY29uOiBcImZhciBmYS11c2Vyc1wiLCBjb2xvcjogJ2Jyb3duJyB9LFxuICAgIFwiYWRcIjogeyBpY29uOiBcImZhciBmYS11c2Vyc1wiLCBjb2xvcjogJ2Jyb3duJyB9LFxuICAgIFwibW1wXCI6IHsgaWNvbjogXCJmYXMgZmEtZmlsZS1tZWRpY2FsXCIsIGNvbG9yOiAnZ3JleScgfSxcbiAgICBcIm1wcHhcIjogeyBpY29uOiBcImZhcyBmYS1maWxlLW1lZGljYWxcIiwgY29sb3I6ICdncmV5JyB9LFxufSJdfQ==
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, Input } from '@angular/core';
|
|
3
|
+
import SafeColor from 'safecolor';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
export class InitialsAvatarComponent {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.fullName = '';
|
|
9
|
+
this.size = 1.5; // in rem
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Gives initials of a name and a safe color background to use,
|
|
13
|
+
* assuming text color will be white
|
|
14
|
+
* @param fullName full name to evaluate intials for
|
|
15
|
+
* @param split string to use has splitter for `fullName`
|
|
16
|
+
* @returns an `object` containing initials and color
|
|
17
|
+
*/
|
|
18
|
+
getInitialsAndColorFromFullName(fullName, split = ' ') {
|
|
19
|
+
return { initials: this.getInitialsFromFullName(fullName, split), color: this.getColorFromName(fullName) };
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Gives initials of a name, ie:
|
|
23
|
+
* ```
|
|
24
|
+
* getInitialForFullName('John Snow') => 'JS'
|
|
25
|
+
* getInitialForFullName('Geralt of Rivia', ' of ') => 'GR'
|
|
26
|
+
* ```
|
|
27
|
+
* @param fullName full name to evaluate intial for
|
|
28
|
+
* @param split string to use has splitter
|
|
29
|
+
* @returns string containg the first letter of splitted name
|
|
30
|
+
*/
|
|
31
|
+
getInitialsFromFullName(fullName, split = ' ') {
|
|
32
|
+
if (!fullName)
|
|
33
|
+
return '';
|
|
34
|
+
const names = fullName.split(split);
|
|
35
|
+
return names[0][0] + (names[1]?.[0] ?? '');
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Gets a random color using text as seed
|
|
39
|
+
* @param text string to use for color generation
|
|
40
|
+
* @returns string formatted like `rgb(xxx, xxx, xxx)`
|
|
41
|
+
*/
|
|
42
|
+
getColorFromName(text) {
|
|
43
|
+
const safeColor = new SafeColor({
|
|
44
|
+
color: [255, 255, 255],
|
|
45
|
+
contrast: 4.5
|
|
46
|
+
});
|
|
47
|
+
return safeColor.random(text);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
InitialsAvatarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: InitialsAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
51
|
+
InitialsAvatarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.6", type: InitialsAvatarComponent, isStandalone: true, selector: "sq-initials-avatar", inputs: { fullName: "fullName", size: "size" }, ngImport: i0, template: "<span class=\"sq-initials-avatar\" *ngIf=\"getInitialsAndColorFromFullName(fullName) as meta\"\n [ngStyle]=\"{ 'background-color': meta.color }\" [style.height.rem]=\"size\" [style.width.rem]=\"size\"\n [style.line-height.rem]=\"size\" [style.font-size.rem]=\"size/2\">\n {{ meta.initials | uppercase }}\n</span>", styles: [".sq-initials-avatar{display:block;border-radius:50%;text-align:center;color:#fff}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "pipe", type: i1.UpperCasePipe, name: "uppercase" }] });
|
|
52
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: InitialsAvatarComponent, decorators: [{
|
|
53
|
+
type: Component,
|
|
54
|
+
args: [{ selector: 'sq-initials-avatar', standalone: true, imports: [CommonModule], template: "<span class=\"sq-initials-avatar\" *ngIf=\"getInitialsAndColorFromFullName(fullName) as meta\"\n [ngStyle]=\"{ 'background-color': meta.color }\" [style.height.rem]=\"size\" [style.width.rem]=\"size\"\n [style.line-height.rem]=\"size\" [style.font-size.rem]=\"size/2\">\n {{ meta.initials | uppercase }}\n</span>", styles: [".sq-initials-avatar{display:block;border-radius:50%;text-align:center;color:#fff}\n"] }]
|
|
55
|
+
}], propDecorators: { fullName: [{
|
|
56
|
+
type: Input
|
|
57
|
+
}], size: [{
|
|
58
|
+
type: Input
|
|
59
|
+
}] } });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdGlhbHMtYXZhdGFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L2luaXRpYWxzLWF2YXRhci9pbml0aWFscy1hdmF0YXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvaW5pdGlhbHMtYXZhdGFyL2luaXRpYWxzLWF2YXRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakQsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFBOzs7QUFTakMsTUFBTSxPQUFPLHVCQUF1QjtJQVBwQztRQVNXLGFBQVEsR0FBVyxFQUFFLENBQUM7UUFDdEIsU0FBSSxHQUFXLEdBQUcsQ0FBQyxDQUFDLFNBQVM7S0E0Q3ZDO0lBMUNDOzs7Ozs7U0FNSztJQUNMLCtCQUErQixDQUFDLFFBQWdCLEVBQUUsUUFBZ0IsR0FBRztRQUNuRSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzdHLENBQUM7SUFFRDs7Ozs7Ozs7O09BU0c7SUFDSCx1QkFBdUIsQ0FBQyxRQUFnQixFQUFFLFFBQWdCLEdBQUc7UUFDM0QsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUV6QixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxnQkFBZ0IsQ0FBQyxJQUFZO1FBQzNCLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDO1lBQzlCLEtBQUssRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDO1lBQ3RCLFFBQVEsRUFBRSxHQUFHO1NBQ2QsQ0FBQyxDQUFDO1FBRUgsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7O29IQTdDVSx1QkFBdUI7d0dBQXZCLHVCQUF1Qiw4SENYcEMsbVVBSU8sNElES0ssWUFBWTsyRkFFWCx1QkFBdUI7a0JBUG5DLFNBQVM7K0JBQ0Usb0JBQW9CLGNBR2xCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQzs4QkFJZCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgU2FmZUNvbG9yIGZyb20gJ3NhZmVjb2xvcidcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc3EtaW5pdGlhbHMtYXZhdGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2luaXRpYWxzLWF2YXRhci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2luaXRpYWxzLWF2YXRhci5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBJbml0aWFsc0F2YXRhckNvbXBvbmVudCB7XG5cbiAgQElucHV0KCkgZnVsbE5hbWU6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBzaXplOiBudW1iZXIgPSAxLjU7IC8vIGluIHJlbVxuXG4gIC8qKlxuICAgICAqIEdpdmVzIGluaXRpYWxzIG9mIGEgbmFtZSBhbmQgYSBzYWZlIGNvbG9yIGJhY2tncm91bmQgdG8gdXNlLFxuICAgICAqIGFzc3VtaW5nIHRleHQgY29sb3Igd2lsbCBiZSB3aGl0ZVxuICAgICAqIEBwYXJhbSBmdWxsTmFtZSBmdWxsIG5hbWUgdG8gZXZhbHVhdGUgaW50aWFscyBmb3JcbiAgICAgKiBAcGFyYW0gc3BsaXQgc3RyaW5nIHRvIHVzZSBoYXMgc3BsaXR0ZXIgZm9yIGBmdWxsTmFtZWBcbiAgICAgKiBAcmV0dXJucyBhbiBgb2JqZWN0YCBjb250YWluaW5nIGluaXRpYWxzIGFuZCBjb2xvclxuICAgICAqL1xuICBnZXRJbml0aWFsc0FuZENvbG9yRnJvbUZ1bGxOYW1lKGZ1bGxOYW1lOiBzdHJpbmcsIHNwbGl0OiBzdHJpbmcgPSAnICcpOiB7IGluaXRpYWxzOiBzdHJpbmc7IGNvbG9yOiBzdHJpbmcgfSB7XG4gICAgcmV0dXJuIHsgaW5pdGlhbHM6IHRoaXMuZ2V0SW5pdGlhbHNGcm9tRnVsbE5hbWUoZnVsbE5hbWUsIHNwbGl0KSwgY29sb3I6IHRoaXMuZ2V0Q29sb3JGcm9tTmFtZShmdWxsTmFtZSkgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHaXZlcyBpbml0aWFscyBvZiBhIG5hbWUsIGllOlxuICAgKiBgYGBcbiAgICogZ2V0SW5pdGlhbEZvckZ1bGxOYW1lKCdKb2huIFNub3cnKSA9PiAnSlMnXG4gICAqIGdldEluaXRpYWxGb3JGdWxsTmFtZSgnR2VyYWx0IG9mIFJpdmlhJywgJyBvZiAnKSA9PiAnR1InXG4gICAqIGBgYFxuICAgKiBAcGFyYW0gZnVsbE5hbWUgZnVsbCBuYW1lIHRvIGV2YWx1YXRlIGludGlhbCBmb3JcbiAgICogQHBhcmFtIHNwbGl0IHN0cmluZyB0byB1c2UgaGFzIHNwbGl0dGVyXG4gICAqIEByZXR1cm5zIHN0cmluZyBjb250YWluZyB0aGUgZmlyc3QgbGV0dGVyIG9mIHNwbGl0dGVkIG5hbWVcbiAgICovXG4gIGdldEluaXRpYWxzRnJvbUZ1bGxOYW1lKGZ1bGxOYW1lOiBzdHJpbmcsIHNwbGl0OiBzdHJpbmcgPSAnICcpOiBzdHJpbmcge1xuICAgIGlmICghZnVsbE5hbWUpIHJldHVybiAnJztcblxuICAgIGNvbnN0IG5hbWVzID0gZnVsbE5hbWUuc3BsaXQoc3BsaXQpO1xuICAgIHJldHVybiBuYW1lc1swXVswXSArIChuYW1lc1sxXT8uWzBdID8/ICcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgcmFuZG9tIGNvbG9yIHVzaW5nIHRleHQgYXMgc2VlZFxuICAgKiBAcGFyYW0gdGV4dCBzdHJpbmcgdG8gdXNlIGZvciBjb2xvciBnZW5lcmF0aW9uXG4gICAqIEByZXR1cm5zIHN0cmluZyBmb3JtYXR0ZWQgbGlrZSBgcmdiKHh4eCwgeHh4LCB4eHgpYFxuICAgKi9cbiAgZ2V0Q29sb3JGcm9tTmFtZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IHNhZmVDb2xvciA9IG5ldyBTYWZlQ29sb3Ioe1xuICAgICAgY29sb3I6IFsyNTUsIDI1NSwgMjU1XSxcbiAgICAgIGNvbnRyYXN0OiA0LjVcbiAgICB9KTtcblxuICAgIHJldHVybiBzYWZlQ29sb3IucmFuZG9tKHRleHQpO1xuICB9XG5cbn1cbiIsIjxzcGFuIGNsYXNzPVwic3EtaW5pdGlhbHMtYXZhdGFyXCIgKm5nSWY9XCJnZXRJbml0aWFsc0FuZENvbG9yRnJvbUZ1bGxOYW1lKGZ1bGxOYW1lKSBhcyBtZXRhXCJcbiAgICBbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWNvbG9yJzogbWV0YS5jb2xvciB9XCIgW3N0eWxlLmhlaWdodC5yZW1dPVwic2l6ZVwiIFtzdHlsZS53aWR0aC5yZW1dPVwic2l6ZVwiXG4gICAgW3N0eWxlLmxpbmUtaGVpZ2h0LnJlbV09XCJzaXplXCIgW3N0eWxlLmZvbnQtc2l6ZS5yZW1dPVwic2l6ZS8yXCI+XG4gICAge3sgbWV0YS5pbml0aWFscyB8IHVwcGVyY2FzZSB9fVxuPC9zcGFuPiJdfQ==
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/**
|
|
4
|
+
* A service to create and manage instances of ChatService dynamically based on the provided component references and the implementation type (http or websocket)
|
|
5
|
+
* All chat-related components should share the same instance of this InstanceManagerService, which in turn provides the appropriate instance of ChatService
|
|
6
|
+
*/
|
|
7
|
+
export class InstanceManagerService {
|
|
8
|
+
constructor() {
|
|
9
|
+
this._serviceInstances = new Map();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Store the instance of ChatService in the map
|
|
13
|
+
* @param key key differentiator between components used to store their corresponding ChatService instance
|
|
14
|
+
* @param service The ChatService instance
|
|
15
|
+
*/
|
|
16
|
+
storeInstance(key, service) {
|
|
17
|
+
this._serviceInstances.set(key, service);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* @param key key differentiator between components based on which the corresponding ChatService instance is fetched
|
|
21
|
+
* @returns The instance of the service corresponding to the instance of the component
|
|
22
|
+
*/
|
|
23
|
+
getInstance(key) {
|
|
24
|
+
if (!this.checkInstance(key)) {
|
|
25
|
+
throw new Error(`No chat instance found for the given key : '${key}'`);
|
|
26
|
+
}
|
|
27
|
+
return this._serviceInstances.get(key);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
*
|
|
31
|
+
* @param key key differentiator between components based on which the check for an existent ChatService instance is performed
|
|
32
|
+
* @returns True if a ChatService instance has been already instantiated for the given key. Otherwise, false.
|
|
33
|
+
*/
|
|
34
|
+
checkInstance(key) {
|
|
35
|
+
return this._serviceInstances.has(key);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
InstanceManagerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: InstanceManagerService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
39
|
+
InstanceManagerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: InstanceManagerService, providedIn: 'root' });
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.6", ngImport: i0, type: InstanceManagerService, decorators: [{
|
|
41
|
+
type: Injectable,
|
|
42
|
+
args: [{
|
|
43
|
+
providedIn: 'root',
|
|
44
|
+
}]
|
|
45
|
+
}] });
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2UtbWFuYWdlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvYXNzaXN0YW50L2NoYXQvaW5zdGFuY2UtbWFuYWdlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDOzs7R0FHRztBQUlILE1BQU0sT0FBTyxzQkFBc0I7SUFIbkM7UUFJVSxzQkFBaUIsR0FBNkIsSUFBSSxHQUFHLEVBQUUsQ0FBQztLQThCakU7SUE1QkM7Ozs7T0FJRztJQUNILGFBQWEsQ0FBQyxHQUFXLEVBQUUsT0FBb0I7UUFDN0MsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFdBQVcsQ0FBQyxHQUFXO1FBQ3JCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsK0NBQStDLEdBQUcsR0FBRyxDQUFDLENBQUM7U0FDeEU7UUFDRCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFFLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsR0FBVztRQUN2QixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQzs7bUhBOUJVLHNCQUFzQjt1SEFBdEIsc0JBQXNCLGNBRnJCLE1BQU07MkZBRVAsc0JBQXNCO2tCQUhsQyxVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENoYXRTZXJ2aWNlIH0gZnJvbSAnLi9jaGF0LnNlcnZpY2UnO1xuXG4vKipcbiAqIEEgc2VydmljZSB0byBjcmVhdGUgYW5kIG1hbmFnZSBpbnN0YW5jZXMgb2YgQ2hhdFNlcnZpY2UgZHluYW1pY2FsbHkgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGNvbXBvbmVudCByZWZlcmVuY2VzIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gdHlwZSAoaHR0cCBvciB3ZWJzb2NrZXQpXG4gKiBBbGwgY2hhdC1yZWxhdGVkIGNvbXBvbmVudHMgc2hvdWxkIHNoYXJlIHRoZSBzYW1lIGluc3RhbmNlIG9mIHRoaXMgSW5zdGFuY2VNYW5hZ2VyU2VydmljZSwgd2hpY2ggaW4gdHVybiBwcm92aWRlcyB0aGUgYXBwcm9wcmlhdGUgaW5zdGFuY2Ugb2YgQ2hhdFNlcnZpY2VcbiAqL1xuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCcsXG59KVxuZXhwb3J0IGNsYXNzIEluc3RhbmNlTWFuYWdlclNlcnZpY2Uge1xuICBwcml2YXRlIF9zZXJ2aWNlSW5zdGFuY2VzOiBNYXA8c3RyaW5nLCBDaGF0U2VydmljZT4gPSBuZXcgTWFwKCk7XG5cbiAgLyoqXG4gICAqIFN0b3JlIHRoZSBpbnN0YW5jZSBvZiBDaGF0U2VydmljZSBpbiB0aGUgbWFwXG4gICAqIEBwYXJhbSBrZXkga2V5IGRpZmZlcmVudGlhdG9yIGJldHdlZW4gY29tcG9uZW50cyB1c2VkIHRvIHN0b3JlIHRoZWlyIGNvcnJlc3BvbmRpbmcgQ2hhdFNlcnZpY2UgaW5zdGFuY2VcbiAgICogQHBhcmFtIHNlcnZpY2UgVGhlIENoYXRTZXJ2aWNlIGluc3RhbmNlXG4gICAqL1xuICBzdG9yZUluc3RhbmNlKGtleTogc3RyaW5nLCBzZXJ2aWNlOiBDaGF0U2VydmljZSk6IHZvaWQge1xuICAgIHRoaXMuX3NlcnZpY2VJbnN0YW5jZXMuc2V0KGtleSwgc2VydmljZSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGtleSBrZXkgZGlmZmVyZW50aWF0b3IgYmV0d2VlbiBjb21wb25lbnRzIGJhc2VkIG9uIHdoaWNoIHRoZSBjb3JyZXNwb25kaW5nIENoYXRTZXJ2aWNlIGluc3RhbmNlIGlzIGZldGNoZWRcbiAgICogQHJldHVybnMgVGhlIGluc3RhbmNlIG9mIHRoZSBzZXJ2aWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGluc3RhbmNlIG9mIHRoZSBjb21wb25lbnRcbiAgICovXG4gIGdldEluc3RhbmNlKGtleTogc3RyaW5nKTogQ2hhdFNlcnZpY2Uge1xuICAgIGlmICghdGhpcy5jaGVja0luc3RhbmNlKGtleSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gY2hhdCBpbnN0YW5jZSBmb3VuZCBmb3IgdGhlIGdpdmVuIGtleSA6ICcke2tleX0nYCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlSW5zdGFuY2VzLmdldChrZXkpITtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0ga2V5IGtleSBkaWZmZXJlbnRpYXRvciBiZXR3ZWVuIGNvbXBvbmVudHMgYmFzZWQgb24gd2hpY2ggdGhlIGNoZWNrIGZvciBhbiBleGlzdGVudCBDaGF0U2VydmljZSBpbnN0YW5jZSBpcyBwZXJmb3JtZWRcbiAgICogQHJldHVybnMgVHJ1ZSBpZiBhIENoYXRTZXJ2aWNlIGluc3RhbmNlIGhhcyBiZWVuIGFscmVhZHkgaW5zdGFudGlhdGVkIGZvciB0aGUgZ2l2ZW4ga2V5LiBPdGhlcndpc2UsIGZhbHNlLlxuICAgKi9cbiAgY2hlY2tJbnN0YW5jZShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZXJ2aWNlSW5zdGFuY2VzLmhhcyhrZXkpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"assistant": {}
|
|
3
|
+
};
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9tZXNzYWdlcy9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlO0lBQ2IsV0FBVyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgXCJhc3Npc3RhbnRcIjoge31cbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"assistant": {}
|
|
3
|
+
};
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9tZXNzYWdlcy9lbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlO0lBQ2IsV0FBVyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgXCJhc3Npc3RhbnRcIjoge31cbn1cbiJdfQ==
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"assistant": {}
|
|
3
|
+
};
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9tZXNzYWdlcy9mci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxlQUFlO0lBQ2IsV0FBVyxFQUFFLEVBQUU7Q0FDaEIsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcbiAgXCJhc3Npc3RhbnRcIjoge31cbn1cbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Utils } from '@sinequa/core/base';
|
|
2
|
+
import _enAssistant from './en';
|
|
3
|
+
import _frAssistant from './fr';
|
|
4
|
+
import _deAssistant from './de';
|
|
5
|
+
const enAssistant = Utils.merge({}, _enAssistant);
|
|
6
|
+
const frAssistant = Utils.merge({}, _frAssistant);
|
|
7
|
+
const deAssistant = Utils.merge({}, _deAssistant);
|
|
8
|
+
export { enAssistant, frAssistant, deAssistant };
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hc3Npc3RhbnQvY2hhdC9tZXNzYWdlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDM0MsT0FBTyxZQUFZLE1BQU0sTUFBTSxDQUFDO0FBQ2hDLE9BQU8sWUFBWSxNQUFNLE1BQU0sQ0FBQztBQUNoQyxPQUFPLFlBQVksTUFBTSxNQUFNLENBQUM7QUFFaEMsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDbEQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDbEQsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFFbEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVdGlscyB9IGZyb20gJ0BzaW5lcXVhL2NvcmUvYmFzZSc7XG5pbXBvcnQgX2VuQXNzaXN0YW50IGZyb20gJy4vZW4nO1xuaW1wb3J0IF9mckFzc2lzdGFudCBmcm9tICcuL2ZyJztcbmltcG9ydCBfZGVBc3Npc3RhbnQgZnJvbSAnLi9kZSc7XG5cbmNvbnN0IGVuQXNzaXN0YW50ID0gVXRpbHMubWVyZ2Uoe30sIF9lbkFzc2lzdGFudCk7XG5jb25zdCBmckFzc2lzdGFudCA9IFV0aWxzLm1lcmdlKHt9LCBfZnJBc3Npc3RhbnQpO1xuY29uc3QgZGVBc3Npc3RhbnQgPSBVdGlscy5tZXJnZSh7fSwgX2RlQXNzaXN0YW50KTtcblxuZXhwb3J0IHsgZW5Bc3Npc3RhbnQsIGZyQXNzaXN0YW50LCBkZUFzc2lzdGFudCB9O1xuIl19
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './chat-settings-v3/chat-settings-v3.component';
|
|
2
|
+
export * from './chat.component';
|
|
3
|
+
export * from './chat.service';
|
|
4
|
+
export * from './saved-chats/saved-chats.component';
|
|
5
|
+
export * from './initials-avatar/initials-avatar.component';
|
|
6
|
+
export * from './format-icon/format-icon.component';
|
|
7
|
+
export * from './types';
|
|
8
|
+
export * from './messages/index';
|
|
9
|
+
export * from './websocket-chat.service';
|
|
10
|
+
export * from './rest-chat.service';
|
|
11
|
+
export * from './instance-manager.service';
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Fzc2lzdGFudC9jaGF0L3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYywrQ0FBK0MsQ0FBQztBQUM5RCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLDZDQUE2QyxDQUFDO0FBQzVELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyw0QkFBNEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY2hhdC1zZXR0aW5ncy12My9jaGF0LXNldHRpbmdzLXYzLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2NoYXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vY2hhdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2F2ZWQtY2hhdHMvc2F2ZWQtY2hhdHMuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vaW5pdGlhbHMtYXZhdGFyL2luaXRpYWxzLWF2YXRhci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtYXQtaWNvbi9mb3JtYXQtaWNvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL21lc3NhZ2VzL2luZGV4JztcbmV4cG9ydCAqIGZyb20gJy4vd2Vic29ja2V0LWNoYXQuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3Jlc3QtY2hhdC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW5zdGFuY2UtbWFuYWdlci5zZXJ2aWNlJztcbiJdfQ==
|