@bnsights/bbsf-utilities 1.0.69-beta.3 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +81 -2
- package/fesm2022/bnsights-bbsf-utilities.mjs +135 -61
- package/fesm2022/bnsights-bbsf-utilities.mjs.map +1 -1
- package/lib/bbsf-utilities.module.d.ts +22 -2
- package/lib/shared/authentication/auth.service.d.ts +0 -1
- package/lib/shared/services/language.service.d.ts +12 -0
- package/lib/shared/services/request-handler.service.d.ts +2 -3
- package/package.json +11 -21
- package/esm2022/auth/bnsights-bbsf-utilities-auth.mjs +0 -5
- package/esm2022/auth/public-api.mjs +0 -5
- package/esm2022/bnsights-bbsf-utilities.mjs +0 -5
- package/esm2022/http/bnsights-bbsf-utilities-http.mjs +0 -5
- package/esm2022/http/public-api.mjs +0 -8
- package/esm2022/lib/bbsf-utilities.module.mjs +0 -63
- package/esm2022/lib/shared/authentication/auth.service.mjs +0 -260
- package/esm2022/lib/shared/authentication/index.mjs +0 -2
- package/esm2022/lib/shared/config/environment.mjs +0 -12
- package/esm2022/lib/shared/enums/authentication-modes-enums.mjs +0 -8
- package/esm2022/lib/shared/index.mjs +0 -4
- package/esm2022/lib/shared/models/UserModel.mjs +0 -3
- package/esm2022/lib/shared/models/area-model.mjs +0 -3
- package/esm2022/lib/shared/models/error-model.mjs +0 -3
- package/esm2022/lib/shared/models/index.mjs +0 -5
- package/esm2022/lib/shared/models/request-options-model.mjs +0 -11
- package/esm2022/lib/shared/models/speech-language.mjs +0 -3
- package/esm2022/lib/shared/services/appearance-configuration.service.mjs +0 -35
- package/esm2022/lib/shared/services/configuration.service.mjs +0 -48
- package/esm2022/lib/shared/services/control-validation.service.mjs +0 -173
- package/esm2022/lib/shared/services/environment.service.mjs +0 -83
- package/esm2022/lib/shared/services/index.mjs +0 -14
- package/esm2022/lib/shared/services/language.service.mjs +0 -21
- package/esm2022/lib/shared/services/master-layout.service.mjs +0 -77
- package/esm2022/lib/shared/services/preload.service.mjs +0 -54
- package/esm2022/lib/shared/services/request-handler.service.mjs +0 -260
- package/esm2022/lib/shared/services/speech-recognition.service.mjs +0 -76
- package/esm2022/lib/shared/services/styles-bundle.service.mjs +0 -76
- package/esm2022/lib/shared/services/translate.service.mjs +0 -14
- package/esm2022/lib/shared/services/translation-resolver.service.mjs +0 -7
- package/esm2022/lib/shared/services/utility.service.mjs +0 -87
- package/esm2022/public-api.mjs +0 -56
- package/esm2022/translate/bnsights-bbsf-utilities-translate.mjs +0 -5
- package/esm2022/translate/public-api.mjs +0 -7
- package/esm2022/ui/bnsights-bbsf-utilities-ui.mjs +0 -5
- package/esm2022/ui/public-api.mjs +0 -8
|
@@ -1,260 +0,0 @@
|
|
|
1
|
-
import { HttpErrorResponse, HttpHeaders } from "@angular/common/http";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { plainToClass } from 'class-transformer';
|
|
4
|
-
import { Subject, throwError } from 'rxjs';
|
|
5
|
-
import { map, takeUntil, tap } from 'rxjs/operators';
|
|
6
|
-
import { RequestOptionsModel } from '../models';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/common/http";
|
|
9
|
-
import * as i2 from "../authentication/auth.service";
|
|
10
|
-
import * as i3 from ".";
|
|
11
|
-
import * as i4 from "@angular/router";
|
|
12
|
-
export class RequestHandlerService {
|
|
13
|
-
constructor(http, authService, environmentService, utilityService, bbsfTranslateService, router) {
|
|
14
|
-
this.http = http;
|
|
15
|
-
this.authService = authService;
|
|
16
|
-
this.environmentService = environmentService;
|
|
17
|
-
this.utilityService = utilityService;
|
|
18
|
-
this.bbsfTranslateService = bbsfTranslateService;
|
|
19
|
-
this.router = router;
|
|
20
|
-
this.currentLanguage = "";
|
|
21
|
-
this.onDestroy$ = new Subject();
|
|
22
|
-
//using localStorage to avoid call getCurrentLanguage() because it is not all to use async in constructor
|
|
23
|
-
this.bbsfTranslateService.onLangChange.subscribe((event) => {
|
|
24
|
-
if (this.currentLanguage != event.lang) {
|
|
25
|
-
this.currentLanguage = event.lang;
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
// Function to check if the internet connection is available
|
|
30
|
-
isOnline() {
|
|
31
|
-
return navigator.onLine || !this.environmentService.getProductionMode();
|
|
32
|
-
}
|
|
33
|
-
// ...
|
|
34
|
-
get(Url, params, responseType, requestOptions) {
|
|
35
|
-
if (!this.isOnline()) {
|
|
36
|
-
const errorCode = 504; // Custom error code for internet disconnection
|
|
37
|
-
const errorMessage = 'Internet connection is disconnected.';
|
|
38
|
-
var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: errorCode });
|
|
39
|
-
this.handleError(error);
|
|
40
|
-
return;
|
|
41
|
-
}
|
|
42
|
-
const currentRequestOptions = requestOptions || new RequestOptionsModel();
|
|
43
|
-
let headers = this.getHeaders();
|
|
44
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
45
|
-
this.utilityService.startBlockUI();
|
|
46
|
-
return this.http.get(this.environmentService.getApiUrl() + Url, { headers: headers, params: params }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
47
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
48
|
-
this.utilityService.stopBlockUI();
|
|
49
|
-
}, error => {
|
|
50
|
-
if (!currentRequestOptions.disableErrorHandler)
|
|
51
|
-
this.handleError(error);
|
|
52
|
-
}), map((data) => {
|
|
53
|
-
if (currentRequestOptions.castResponsetoClass)
|
|
54
|
-
return plainToClass(responseType, data, { excludeExtraneousValues: true });
|
|
55
|
-
else
|
|
56
|
-
return data;
|
|
57
|
-
}));
|
|
58
|
-
}
|
|
59
|
-
post(Url, model, responseType, params, requestOptions) {
|
|
60
|
-
if (!this.isOnline()) {
|
|
61
|
-
const errorCode = 504; // Custom error code for internet disconnection
|
|
62
|
-
const errorMessage = 'Internet connection is disconnected.';
|
|
63
|
-
var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });
|
|
64
|
-
this.handleError(error);
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
const currentRequestOptions = requestOptions || new RequestOptionsModel();
|
|
68
|
-
let headers = this.getHeaders();
|
|
69
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
70
|
-
this.utilityService.startBlockUI();
|
|
71
|
-
return this.http.post(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
72
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
73
|
-
this.utilityService.stopBlockUI();
|
|
74
|
-
}, error => {
|
|
75
|
-
if (!currentRequestOptions.disableErrorHandler)
|
|
76
|
-
this.handleError(error);
|
|
77
|
-
}), map((data) => {
|
|
78
|
-
if (currentRequestOptions.castResponsetoClass)
|
|
79
|
-
return plainToClass(responseType, data, { excludeExtraneousValues: true });
|
|
80
|
-
else
|
|
81
|
-
return data;
|
|
82
|
-
}));
|
|
83
|
-
}
|
|
84
|
-
delete(Url, deletedId, requestOptions, responseType, params) {
|
|
85
|
-
if (!this.isOnline()) {
|
|
86
|
-
const errorCode = 504; // Custom error code for internet disconnection
|
|
87
|
-
const errorMessage = 'Internet connection is disconnected.';
|
|
88
|
-
var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });
|
|
89
|
-
this.handleError(error);
|
|
90
|
-
return;
|
|
91
|
-
}
|
|
92
|
-
const currentRequestOptions = requestOptions || new RequestOptionsModel();
|
|
93
|
-
let headers = this.getHeaders();
|
|
94
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
95
|
-
this.utilityService.startBlockUI();
|
|
96
|
-
return this.http.delete(this.environmentService.getApiUrl() + Url + `/${deletedId}`, { headers: headers, params: params }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
97
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
98
|
-
this.utilityService.stopBlockUI();
|
|
99
|
-
}, error => {
|
|
100
|
-
if (!currentRequestOptions.disableErrorHandler)
|
|
101
|
-
this.handleError(error);
|
|
102
|
-
}), map((data) => {
|
|
103
|
-
if (currentRequestOptions.castResponsetoClass)
|
|
104
|
-
return plainToClass(responseType, data, { excludeExtraneousValues: true });
|
|
105
|
-
else
|
|
106
|
-
return data;
|
|
107
|
-
}));
|
|
108
|
-
}
|
|
109
|
-
put(Url, model, params, responseType, requestOptions) {
|
|
110
|
-
if (!this.isOnline()) {
|
|
111
|
-
const errorCode = 504; // Custom error code for internet disconnection
|
|
112
|
-
const errorMessage = 'Internet connection is disconnected.';
|
|
113
|
-
var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });
|
|
114
|
-
this.handleError(error);
|
|
115
|
-
return;
|
|
116
|
-
}
|
|
117
|
-
const currentRequestOptions = requestOptions || new RequestOptionsModel();
|
|
118
|
-
let headers = this.getHeaders();
|
|
119
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
120
|
-
this.utilityService.startBlockUI();
|
|
121
|
-
return this.http.put(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
122
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
123
|
-
this.utilityService.stopBlockUI();
|
|
124
|
-
}, error => {
|
|
125
|
-
if (!currentRequestOptions.disableErrorHandler)
|
|
126
|
-
this.handleError(error);
|
|
127
|
-
}), map((data) => {
|
|
128
|
-
if (currentRequestOptions.castResponsetoClass)
|
|
129
|
-
return plainToClass(responseType, data, { excludeExtraneousValues: true });
|
|
130
|
-
else
|
|
131
|
-
return data;
|
|
132
|
-
}));
|
|
133
|
-
}
|
|
134
|
-
patch(Url, model, responseType, params, requestOptions) {
|
|
135
|
-
if (!this.isOnline()) {
|
|
136
|
-
const errorCode = 504; // Custom error code for internet disconnection
|
|
137
|
-
const errorMessage = 'Internet connection is disconnected.';
|
|
138
|
-
var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });
|
|
139
|
-
this.handleError(error);
|
|
140
|
-
return;
|
|
141
|
-
}
|
|
142
|
-
const currentRequestOptions = requestOptions || new RequestOptionsModel();
|
|
143
|
-
let headers = new HttpHeaders({
|
|
144
|
-
'Content-Type': 'application/json',
|
|
145
|
-
'Authorization': this.authService.authorizationHeaderValue(),
|
|
146
|
-
});
|
|
147
|
-
this.currentLanguage = localStorage.getItem('language');
|
|
148
|
-
headers = headers.set('Accept-Language', this.currentLanguage.toString());
|
|
149
|
-
headers = headers.set('ignore-cookies', 'true');
|
|
150
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
151
|
-
this.utilityService.startBlockUI();
|
|
152
|
-
return this.http.patch(this.environmentService.getApiUrl() + Url, model, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
153
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
154
|
-
this.utilityService.stopBlockUI();
|
|
155
|
-
}, error => {
|
|
156
|
-
if (!currentRequestOptions.disableErrorHandler)
|
|
157
|
-
this.handleError(error);
|
|
158
|
-
}), map((data) => {
|
|
159
|
-
if (currentRequestOptions.castResponsetoClass)
|
|
160
|
-
return plainToClass(responseType, data, { excludeExtraneousValues: true });
|
|
161
|
-
else
|
|
162
|
-
return data;
|
|
163
|
-
}));
|
|
164
|
-
}
|
|
165
|
-
download(Url, params, requestOptions) {
|
|
166
|
-
if (!this.isOnline()) {
|
|
167
|
-
const errorCode = 504; // Custom error code for internet disconnection
|
|
168
|
-
const errorMessage = 'Internet connection is disconnected.';
|
|
169
|
-
var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });
|
|
170
|
-
this.handleError(error);
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
const currentRequestOptions = requestOptions || new RequestOptionsModel();
|
|
174
|
-
let headers = this.getHeaders();
|
|
175
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
176
|
-
this.utilityService.startBlockUI();
|
|
177
|
-
return this.http.get(this.environmentService.getApiUrl() + Url, { headers: headers, params: params, responseType: currentRequestOptions.responseType }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
178
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
179
|
-
this.utilityService.stopBlockUI();
|
|
180
|
-
}, error => {
|
|
181
|
-
if (!currentRequestOptions.disableErrorHandler)
|
|
182
|
-
this.handleError(error);
|
|
183
|
-
}));
|
|
184
|
-
}
|
|
185
|
-
Upload(Url, model, requestOptions) {
|
|
186
|
-
if (!this.isOnline()) {
|
|
187
|
-
const errorCode = 504; // Custom error code for internet disconnection
|
|
188
|
-
const errorMessage = 'Internet connection is disconnected.';
|
|
189
|
-
var error = new HttpErrorResponse({ error: { Message: errorMessage }, status: 504 });
|
|
190
|
-
this.handleError(error);
|
|
191
|
-
return;
|
|
192
|
-
}
|
|
193
|
-
const currentRequestOptions = requestOptions || new RequestOptionsModel();
|
|
194
|
-
let headers = this.getHeadersUpdated();
|
|
195
|
-
return this.http.post(this.environmentService.getApiUrl() + Url, model, { headers: headers, reportProgress: true, observe: 'events' }).pipe(takeUntil(this.onDestroy$), tap((result) => {
|
|
196
|
-
if (!currentRequestOptions.disableBlockUI)
|
|
197
|
-
this.utilityService.stopBlockUI();
|
|
198
|
-
}, error => {
|
|
199
|
-
if (!currentRequestOptions.disableErrorHandler)
|
|
200
|
-
this.handleError(error);
|
|
201
|
-
}));
|
|
202
|
-
}
|
|
203
|
-
destroyHandler() {
|
|
204
|
-
this.onDestroy$.next();
|
|
205
|
-
}
|
|
206
|
-
ngOnDestroy() {
|
|
207
|
-
console.log("clearInterval");
|
|
208
|
-
this.destroyHandler();
|
|
209
|
-
}
|
|
210
|
-
handleError(err) {
|
|
211
|
-
var isEnglish = this.utilityService.getCurrentLanguage() == "en";
|
|
212
|
-
if (err.error instanceof ErrorEvent) {
|
|
213
|
-
this.utilityService.notifyErrorMessage();
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
if (err.status == 400)
|
|
217
|
-
throwError(err); //error 400 is thrown to be catch by the Form component to handle Fluent validation errors
|
|
218
|
-
else if (err.status == 401)
|
|
219
|
-
this.router.navigate(["/Admin/account/login"]);
|
|
220
|
-
else if (err.status == 403)
|
|
221
|
-
this.utilityService.notifyErrorMessage(isEnglish ? "Sorry, You're not authorized to access this action" : "عذرا ليس لديك الصلاحيه لهذا الطلب");
|
|
222
|
-
else if (err.status == 510)
|
|
223
|
-
this.utilityService.notifyErrorMessage(isEnglish ? "Can not delete this item as it is related to others" : "لا يمكن حذف هذا العنصر لأنه مرتبط بعناصر أخرى");
|
|
224
|
-
else if (err.status == 515)
|
|
225
|
-
this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));
|
|
226
|
-
else if (err.status == 504)
|
|
227
|
-
this.utilityService.notifyErrorMessage((err.error ? err.error.Message : err.message));
|
|
228
|
-
else {
|
|
229
|
-
console.log(`error message is: ${err.error ? err.error.Message : err.message}`);
|
|
230
|
-
this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue("ErrorMassage"));
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
this.utilityService.stopBlockUI();
|
|
234
|
-
}
|
|
235
|
-
getHeaders() {
|
|
236
|
-
return new HttpHeaders({
|
|
237
|
-
'Content-Type': 'application/json',
|
|
238
|
-
'Authorization': this.authService.authorizationHeaderValue(),
|
|
239
|
-
'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
240
|
-
'Accept-Language': localStorage.getItem('language'),
|
|
241
|
-
'ignore-cookies': 'true'
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
getHeadersUpdated() {
|
|
245
|
-
return new HttpHeaders({
|
|
246
|
-
'Authorization': this.authService.authorizationHeaderValue(),
|
|
247
|
-
'Client-Local-Time-Zone': Intl.DateTimeFormat().resolvedOptions().timeZone,
|
|
248
|
-
'Accept-Language': localStorage.getItem('language'),
|
|
249
|
-
'ignore-cookies': 'true',
|
|
250
|
-
'Video-Upload': 'true',
|
|
251
|
-
'Image-Upload': 'true',
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RequestHandlerService, deps: [{ token: i1.HttpClient }, { token: i2.AuthService }, { token: i3.EnvironmentService }, { token: i3.UtilityService }, { token: i3.BBSFTranslateService }, { token: i4.Router }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
255
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RequestHandlerService }); }
|
|
256
|
-
}
|
|
257
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: RequestHandlerService, decorators: [{
|
|
258
|
-
type: Injectable
|
|
259
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i2.AuthService }, { type: i3.EnvironmentService }, { type: i3.UtilityService }, { type: i3.BBSFTranslateService }, { type: i4.Router }] });
|
|
260
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC1oYW5kbGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9yZXF1ZXN0LWhhbmRsZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWMsaUJBQWlCLEVBQUUsV0FBVyxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDOUYsT0FBTyxFQUFFLFVBQVUsRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUV0RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFjLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkQsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sV0FBVyxDQUFDOzs7Ozs7QUFHaEQsTUFBTSxPQUFPLHFCQUFxQjtJQUtoQyxZQUNVLElBQWdCLEVBQ2hCLFdBQXdCLEVBQ3hCLGtCQUFzQyxFQUN0QyxjQUE4QixFQUM5QixvQkFBMEMsRUFDMUMsTUFBYztRQUxkLFNBQUksR0FBSixJQUFJLENBQVk7UUFDaEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFDeEIsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFvQjtRQUN0QyxtQkFBYyxHQUFkLGNBQWMsQ0FBZ0I7UUFDOUIseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBVGhCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLGVBQVUsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQVVyRCwwR0FBMEc7UUFDMUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFL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aUIsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQztZQUNuRCxnQkFBZ0IsRUFBRSxNQUFNO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxpQkFBaUI7UUFDZixPQUFPLElBQUksV0FBVyxDQUFDO1lBQ3JCLGVBQWUsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixFQUFFO1lBQzVELHdCQUF3QixFQUFFLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxlQUFlLEVBQUUsQ0FBQyxRQUFRO1lBQzFFLGlCQUFpQixFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO1lBQ25ELGdCQUFnQixFQUFFLE1BQU07WUFDeEIsY0FBYyxFQUFFLE1BQU07WUFDdEIsY0FBYyxFQUFFLE1BQU07U0FDdkIsQ0FBQyxDQUFDO0lBRUwsQ0FBQzsrR0FyU1UscUJBQXFCO21IQUFyQixxQkFBcUI7OzRGQUFyQixxQkFBcUI7a0JBRGpDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgSW5qZWN0YWJsZSwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IHBsYWluVG9DbGFzcyB9IGZyb20gJ2NsYXNzLXRyYW5zZm9ybWVyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBtYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBCQlNGVHJhbnNsYXRlU2VydmljZSwgRW52aXJvbm1lbnRTZXJ2aWNlLCBVdGlsaXR5U2VydmljZSB9IGZyb20gXCIuXCI7XHJcbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vYXV0aGVudGljYXRpb24vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVxdWVzdE9wdGlvbnNNb2RlbCB9IGZyb20gJy4uL21vZGVscyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBSZXF1ZXN0SGFuZGxlclNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xyXG5cclxuICBwcml2YXRlIGN1cnJlbnRMYW5ndWFnZSA9IFwiXCI7XHJcbiAgcHVibGljIG9uRGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgaHR0cDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgYXV0aFNlcnZpY2U6IEF1dGhTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBlbnZpcm9ubWVudFNlcnZpY2U6IEVudmlyb25tZW50U2VydmljZSxcclxuICAgIHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBiYnNmVHJhbnNsYXRlU2VydmljZTogQkJTRlRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7XHJcbiAgICAvL3VzaW5nIGxvY2FsU3RvcmFnZSAgdG8gYXZvaWQgY2FsbCBnZXRDdXJyZW50TGFuZ3VhZ2UoKSBiZWNhdXNlIGl0IGlzIG5vdCBhbGwgdG8gdXNlIGFzeW5jIGluIGNvbnN0cnVjdG9yXHJcbiAgICB0aGlzLmJic2ZUcmFuc2xhdGVTZXJ2aWNlLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRMYW5ndWFnZSAhPSBldmVudC5sYW5nKSB7XHJcbiAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBldmVudC5sYW5nO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vIEZ1bmN0aW9uIHRvIGNoZWNrIGlmIHRoZSBpbnRlcm5ldCBjb25uZWN0aW9uIGlzIGF2YWlsYWJsZVxyXG4gIHByaXZhdGUgaXNPbmxpbmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gbmF2aWdhdG9yLm9uTGluZSB8fCAhdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0UHJvZHVjdGlvbk1vZGUoKTtcclxuICB9XHJcblxyXG4gIC8vIC4uLlxyXG4gIGdldDxUPihVcmw6IHN0cmluZywgcGFyYW1zPzogSHR0cFBhcmFtcywgcmVzcG9uc2VUeXBlPzogbmV3ICgpID0+IFQsIHJlcXVlc3RPcHRpb25zPzogUmVxdWVzdE9wdGlvbnNNb2RlbCk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgaWYgKCF0aGlzLmlzT25saW5lKCkpIHtcclxuICAgICAgY29uc3QgZXJyb3JDb2RlID0gNTA0OyAvLyBDdXN0b20gZXJyb3IgY29kZSBmb3IgaW50ZXJuZXQgZGlzY29ubmVjdGlvblxyXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSAnSW50ZXJuZXQgY29ubmVjdGlvbiBpcyBkaXNjb25uZWN0ZWQuJztcclxuICAgICAgdmFyIGVycm9yID0gbmV3IEh0dHBFcnJvclJlc3BvbnNlKHsgZXJyb3I6IHsgTWVzc2FnZTogZXJyb3JNZXNzYWdlIH0sIHN0YXR1czogZXJyb3JDb2RlIH0pO1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRSZXF1ZXN0T3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zIHx8IG5ldyBSZXF1ZXN0T3B0aW9uc01vZGVsKCk7XHJcblxyXG4gICAgbGV0IGhlYWRlcnMgPSB0aGlzLmdldEhlYWRlcnMoKTtcclxuICAgIGlmICghY3VycmVudFJlcXVlc3RPcHRpb25zLmRpc2FibGVCbG9ja1VJKVxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VD4odGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyBVcmwsIHsgaGVhZGVyczogaGVhZGVycywgcGFyYW1zOiBwYXJhbXMgfSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCksXHJcbiAgICAgIHRhcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKCFjdXJyZW50UmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0T3B0aW9ucy5kaXNhYmxlRXJyb3JIYW5kbGVyKVxyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgIH0pLCBtYXAoKGRhdGE6IFQpID0+IHtcclxuICAgICAgICBpZiAoY3VycmVudFJlcXVlc3RPcHRpb25zLmNhc3RSZXNwb25zZXRvQ2xhc3MpXHJcbiAgICAgICAgICByZXR1cm4gcGxhaW5Ub0NsYXNzKHJlc3BvbnNlVHlwZSwgZGF0YSwgeyBleGNsdWRlRXh0cmFuZW91c1ZhbHVlczogdHJ1ZSB9KTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgfSlcclxuICAgICkgYXMgT2JzZXJ2YWJsZTxUPjtcclxuICB9XHJcblxyXG4gIHBvc3Q8VD4oVXJsOiBzdHJpbmcsIG1vZGVsPzogYW55LCByZXNwb25zZVR5cGU/OiBuZXcgKCkgPT4gVCwgcGFyYW1zPzogSHR0cFBhcmFtcywgcmVxdWVzdE9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc01vZGVsKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICBpZiAoIXRoaXMuaXNPbmxpbmUoKSkge1xyXG4gICAgICBjb25zdCBlcnJvckNvZGUgPSA1MDQ7IC8vIEN1c3RvbSBlcnJvciBjb2RlIGZvciBpbnRlcm5ldCBkaXNjb25uZWN0aW9uXHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9ICdJbnRlcm5ldCBjb25uZWN0aW9uIGlzIGRpc2Nvbm5lY3RlZC4nO1xyXG4gICAgICB2YXIgZXJyb3IgPSBuZXcgSHR0cEVycm9yUmVzcG9uc2UoeyBlcnJvcjogeyBNZXNzYWdlOiBlcnJvck1lc3NhZ2UgfSwgc3RhdHVzOiA1MDQgfSk7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3VycmVudFJlcXVlc3RPcHRpb25zID0gcmVxdWVzdE9wdGlvbnMgfHwgbmV3IFJlcXVlc3RPcHRpb25zTW9kZWwoKTtcclxuICAgIGxldCBoZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0T3B0aW9ucy5kaXNhYmxlQmxvY2tVSSlcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIFVybCwgbW9kZWwsIHsgaGVhZGVyczogaGVhZGVycywgcGFyYW1zOiBwYXJhbXMsIHJlc3BvbnNlVHlwZTogY3VycmVudFJlcXVlc3RPcHRpb25zLnJlc3BvbnNlVHlwZSB9KS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSxcclxuICAgICAgdGFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0T3B0aW9ucy5kaXNhYmxlQmxvY2tVSSlcclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIGlmICghY3VycmVudFJlcXVlc3RPcHRpb25zLmRpc2FibGVFcnJvckhhbmRsZXIpXHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgfSksIG1hcCgoZGF0YTogVCkgPT4ge1xyXG4gICAgICAgIGlmIChjdXJyZW50UmVxdWVzdE9wdGlvbnMuY2FzdFJlc3BvbnNldG9DbGFzcylcclxuICAgICAgICAgIHJldHVybiBwbGFpblRvQ2xhc3MocmVzcG9uc2VUeXBlLCBkYXRhLCB7IGV4Y2x1ZGVFeHRyYW5lb3VzVmFsdWVzOiB0cnVlIH0pO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHJldHVybiBkYXRhO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZTxUPihVcmw6IHN0cmluZywgZGVsZXRlZElkOiBzdHJpbmcsIHJlcXVlc3RPcHRpb25zPzogUmVxdWVzdE9wdGlvbnNNb2RlbCwgcmVzcG9uc2VUeXBlPzogbmV3ICgpID0+IFQsIHBhcmFtcz86IEh0dHBQYXJhbXMpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGlmICghdGhpcy5pc09ubGluZSgpKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yQ29kZSA9IDUwNDsgLy8gQ3VzdG9tIGVycm9yIGNvZGUgZm9yIGludGVybmV0IGRpc2Nvbm5lY3Rpb25cclxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gJ0ludGVybmV0IGNvbm5lY3Rpb24gaXMgZGlzY29ubmVjdGVkLic7XHJcbiAgICAgIHZhciBlcnJvciA9IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7IGVycm9yOiB7IE1lc3NhZ2U6IGVycm9yTWVzc2FnZSB9LCBzdGF0dXM6IDUwNCB9KTtcclxuICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdXJyZW50UmVxdWVzdE9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucyB8fCBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpO1xyXG5cclxuICAgIGxldCBoZWFkZXJzID0gdGhpcy5nZXRIZWFkZXJzKCk7XHJcbiAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0T3B0aW9ucy5kaXNhYmxlQmxvY2tVSSlcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdGFydEJsb2NrVUkoKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZGVsZXRlPFQ+KHRoaXMuZW52aXJvbm1lbnRTZXJ2aWNlLmdldEFwaVVybCgpICsgVXJsICsgYC8ke2RlbGV0ZWRJZH1gLCB7IGhlYWRlcnM6IGhlYWRlcnMsIHBhcmFtczogcGFyYW1zIH0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpLFxyXG4gICAgICB0YXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmICghY3VycmVudFJlcXVlc3RPcHRpb25zLmRpc2FibGVCbG9ja1VJKVxyXG4gICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgaWYgKCFjdXJyZW50UmVxdWVzdE9wdGlvbnMuZGlzYWJsZUVycm9ySGFuZGxlcilcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KSwgbWFwKChkYXRhOiBUKSA9PiB7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRSZXF1ZXN0T3B0aW9ucy5jYXN0UmVzcG9uc2V0b0NsYXNzKVxyXG4gICAgICAgICAgcmV0dXJuIHBsYWluVG9DbGFzcyhyZXNwb25zZVR5cGUsIGRhdGEsIHsgZXhjbHVkZUV4dHJhbmVvdXNWYWx1ZXM6IHRydWUgfSk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgcmV0dXJuIGRhdGE7XHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHV0PFQ+KFVybDogc3RyaW5nLCBtb2RlbD86IGFueSwgcGFyYW1zPzogSHR0cFBhcmFtcywgcmVzcG9uc2VUeXBlPzogbmV3ICgpID0+IFQsIHJlcXVlc3RPcHRpb25zPzogUmVxdWVzdE9wdGlvbnNNb2RlbCk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgaWYgKCF0aGlzLmlzT25saW5lKCkpIHtcclxuICAgICAgY29uc3QgZXJyb3JDb2RlID0gNTA0OyAvLyBDdXN0b20gZXJyb3IgY29kZSBmb3IgaW50ZXJuZXQgZGlzY29ubmVjdGlvblxyXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSAnSW50ZXJuZXQgY29ubmVjdGlvbiBpcyBkaXNjb25uZWN0ZWQuJztcclxuICAgICAgdmFyIGVycm9yID0gbmV3IEh0dHBFcnJvclJlc3BvbnNlKHsgZXJyb3I6IHsgTWVzc2FnZTogZXJyb3JNZXNzYWdlIH0sIHN0YXR1czogNTA0IH0pO1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRSZXF1ZXN0T3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zIHx8IG5ldyBSZXF1ZXN0T3B0aW9uc01vZGVsKCk7XHJcblxyXG4gICAgbGV0IGhlYWRlcnMgPSB0aGlzLmdldEhlYWRlcnMoKTtcclxuICAgIGlmICghY3VycmVudFJlcXVlc3RPcHRpb25zLmRpc2FibGVCbG9ja1VJKVxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wdXQ8VD4odGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyBVcmwsIG1vZGVsLCB7IGhlYWRlcnM6IGhlYWRlcnMsIHBhcmFtczogcGFyYW1zLCByZXNwb25zZVR5cGU6IGN1cnJlbnRSZXF1ZXN0T3B0aW9ucy5yZXNwb25zZVR5cGUgfSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCksXHJcbiAgICAgIHRhcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKCFjdXJyZW50UmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0T3B0aW9ucy5kaXNhYmxlRXJyb3JIYW5kbGVyKVxyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgIH0pLCBtYXAoKGRhdGE6IFQpID0+IHtcclxuICAgICAgICBpZiAoY3VycmVudFJlcXVlc3RPcHRpb25zLmNhc3RSZXNwb25zZXRvQ2xhc3MpXHJcbiAgICAgICAgICByZXR1cm4gcGxhaW5Ub0NsYXNzKHJlc3BvbnNlVHlwZSwgZGF0YSwgeyBleGNsdWRlRXh0cmFuZW91c1ZhbHVlczogdHJ1ZSB9KTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwYXRjaDxUPihVcmw6IHN0cmluZywgbW9kZWw/OiBhbnksIHJlc3BvbnNlVHlwZT86IG5ldyAoKSA9PiBULCBwYXJhbXM/OiBIdHRwUGFyYW1zLCByZXF1ZXN0T3B0aW9ucz86IFJlcXVlc3RPcHRpb25zTW9kZWwpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIGlmICghdGhpcy5pc09ubGluZSgpKSB7XHJcbiAgICAgIGNvbnN0IGVycm9yQ29kZSA9IDUwNDsgLy8gQ3VzdG9tIGVycm9yIGNvZGUgZm9yIGludGVybmV0IGRpc2Nvbm5lY3Rpb25cclxuICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gJ0ludGVybmV0IGNvbm5lY3Rpb24gaXMgZGlzY29ubmVjdGVkLic7XHJcbiAgICAgIHZhciBlcnJvciA9IG5ldyBIdHRwRXJyb3JSZXNwb25zZSh7IGVycm9yOiB7IE1lc3NhZ2U6IGVycm9yTWVzc2FnZSB9LCBzdGF0dXM6IDUwNCB9KTtcclxuICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjdXJyZW50UmVxdWVzdE9wdGlvbnMgPSByZXF1ZXN0T3B0aW9ucyB8fCBuZXcgUmVxdWVzdE9wdGlvbnNNb2RlbCgpO1xyXG5cclxuICAgIGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcclxuICAgICAgJ0F1dGhvcml6YXRpb24nOiB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpLFxyXG5cclxuICAgIH0pO1xyXG4gICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKTtcclxuICAgIGhlYWRlcnMgPSBoZWFkZXJzLnNldCgnQWNjZXB0LUxhbmd1YWdlJywgdGhpcy5jdXJyZW50TGFuZ3VhZ2UudG9TdHJpbmcoKSk7XHJcbiAgICBoZWFkZXJzID0gaGVhZGVycy5zZXQoJ2lnbm9yZS1jb29raWVzJywgJ3RydWUnKTtcclxuICAgIGlmICghY3VycmVudFJlcXVlc3RPcHRpb25zLmRpc2FibGVCbG9ja1VJKVxyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG5cclxuICAgIHJldHVybiB0aGlzLmh0dHAucGF0Y2g8VD4odGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyBVcmwsIG1vZGVsLCB7IGhlYWRlcnM6IGhlYWRlcnMsIHBhcmFtczogcGFyYW1zLCByZXNwb25zZVR5cGU6IGN1cnJlbnRSZXF1ZXN0T3B0aW9ucy5yZXNwb25zZVR5cGUgfSkucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCksXHJcbiAgICAgIHRhcCgocmVzdWx0KSA9PiB7XHJcbiAgICAgICAgaWYgKCFjdXJyZW50UmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICAgIH0sIGVycm9yID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0T3B0aW9ucy5kaXNhYmxlRXJyb3JIYW5kbGVyKVxyXG4gICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XHJcbiAgICAgIH0pLCBtYXAoKGRhdGE6IFQpID0+IHtcclxuICAgICAgICBpZiAoY3VycmVudFJlcXVlc3RPcHRpb25zLmNhc3RSZXNwb25zZXRvQ2xhc3MpXHJcbiAgICAgICAgICByZXR1cm4gcGxhaW5Ub0NsYXNzKHJlc3BvbnNlVHlwZSwgZGF0YSwgeyBleGNsdWRlRXh0cmFuZW91c1ZhbHVlczogdHJ1ZSB9KTtcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICByZXR1cm4gZGF0YTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBkb3dubG9hZDxUPihVcmw6IHN0cmluZywgcGFyYW1zPzogSHR0cFBhcmFtcywgcmVxdWVzdE9wdGlvbnM/OiBSZXF1ZXN0T3B0aW9uc01vZGVsKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICBpZiAoIXRoaXMuaXNPbmxpbmUoKSkge1xyXG4gICAgICBjb25zdCBlcnJvckNvZGUgPSA1MDQ7IC8vIEN1c3RvbSBlcnJvciBjb2RlIGZvciBpbnRlcm5ldCBkaXNjb25uZWN0aW9uXHJcbiAgICAgIGNvbnN0IGVycm9yTWVzc2FnZSA9ICdJbnRlcm5ldCBjb25uZWN0aW9uIGlzIGRpc2Nvbm5lY3RlZC4nO1xyXG4gICAgICB2YXIgZXJyb3IgPSBuZXcgSHR0cEVycm9yUmVzcG9uc2UoeyBlcnJvcjogeyBNZXNzYWdlOiBlcnJvck1lc3NhZ2UgfSwgc3RhdHVzOiA1MDQgfSk7XHJcbiAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY3VycmVudFJlcXVlc3RPcHRpb25zID0gcmVxdWVzdE9wdGlvbnMgfHwgbmV3IFJlcXVlc3RPcHRpb25zTW9kZWwoKTtcclxuXHJcbiAgICBsZXQgaGVhZGVycyA9IHRoaXMuZ2V0SGVhZGVycygpO1xyXG4gICAgaWYgKCFjdXJyZW50UmVxdWVzdE9wdGlvbnMuZGlzYWJsZUJsb2NrVUkpXHJcbiAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxUPih0aGlzLmVudmlyb25tZW50U2VydmljZS5nZXRBcGlVcmwoKSArIFVybCwgeyBoZWFkZXJzOiBoZWFkZXJzLCBwYXJhbXM6IHBhcmFtcywgcmVzcG9uc2VUeXBlOiBjdXJyZW50UmVxdWVzdE9wdGlvbnMucmVzcG9uc2VUeXBlIH0pLnBpcGUoXHJcbiAgICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpLFxyXG4gICAgICB0YXAoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGlmICghY3VycmVudFJlcXVlc3RPcHRpb25zLmRpc2FibGVCbG9ja1VJKVxyXG4gICAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgICB9LCBlcnJvciA9PiB7XHJcbiAgICAgICAgaWYgKCFjdXJyZW50UmVxdWVzdE9wdGlvbnMuZGlzYWJsZUVycm9ySGFuZGxlcilcclxuICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG5cclxuICBVcGxvYWQ8VD4oVXJsOiBzdHJpbmcsIG1vZGVsPzogYW55LCByZXF1ZXN0T3B0aW9ucz86IFJlcXVlc3RPcHRpb25zTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgaWYgKCF0aGlzLmlzT25saW5lKCkpIHtcclxuICAgICAgY29uc3QgZXJyb3JDb2RlID0gNTA0OyAvLyBDdXN0b20gZXJyb3IgY29kZSBmb3IgaW50ZXJuZXQgZGlzY29ubmVjdGlvblxyXG4gICAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSAnSW50ZXJuZXQgY29ubmVjdGlvbiBpcyBkaXNjb25uZWN0ZWQuJztcclxuICAgICAgdmFyIGVycm9yID0gbmV3IEh0dHBFcnJvclJlc3BvbnNlKHsgZXJyb3I6IHsgTWVzc2FnZTogZXJyb3JNZXNzYWdlIH0sIHN0YXR1czogNTA0IH0pO1xyXG4gICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGN1cnJlbnRSZXF1ZXN0T3B0aW9ucyA9IHJlcXVlc3RPcHRpb25zIHx8IG5ldyBSZXF1ZXN0T3B0aW9uc01vZGVsKCk7XHJcblxyXG4gICAgbGV0IGhlYWRlcnMgPSB0aGlzLmdldEhlYWRlcnNVcGRhdGVkKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnBvc3QodGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0QXBpVXJsKCkgKyBVcmwsIG1vZGVsLCB7IGhlYWRlcnM6IGhlYWRlcnMsIHJlcG9ydFByb2dyZXNzOiB0cnVlLCBvYnNlcnZlOiAnZXZlbnRzJyB9KS5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSxcclxuICAgICAgdGFwKChyZXN1bHQpID0+IHtcclxuICAgICAgICBpZiAoIWN1cnJlbnRSZXF1ZXN0T3B0aW9ucy5kaXNhYmxlQmxvY2tVSSlcclxuICAgICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICAgICAgfSwgZXJyb3IgPT4ge1xyXG4gICAgICAgIGlmICghY3VycmVudFJlcXVlc3RPcHRpb25zLmRpc2FibGVFcnJvckhhbmRsZXIpXHJcbiAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcclxuICAgICAgfSlcclxuICAgICk7XHJcbiAgfVxyXG4gIHB1YmxpYyBkZXN0cm95SGFuZGxlcigpOiB2b2lkIHtcclxuICAgIHRoaXMub25EZXN0cm95JC5uZXh0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIGNvbnNvbGUubG9nKFwiY2xlYXJJbnRlcnZhbFwiKTtcclxuICAgIHRoaXMuZGVzdHJveUhhbmRsZXIoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRXJyb3IoZXJyOiBIdHRwRXJyb3JSZXNwb25zZSkge1xyXG4gICAgdmFyIGlzRW5nbGlzaCA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCkgPT0gXCJlblwiO1xyXG4gICAgaWYgKGVyci5lcnJvciBpbnN0YW5jZW9mIEVycm9yRXZlbnQpIHtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAoZXJyLnN0YXR1cyA9PSA0MDApXHJcbiAgICAgICAgdGhyb3dFcnJvcihlcnIpOy8vZXJyb3IgNDAwIGlzIHRocm93biB0byBiZSBjYXRjaCBieSB0aGUgRm9ybSBjb21wb25lbnQgdG8gaGFuZGxlIEZsdWVudCB2YWxpZGF0aW9uIGVycm9yc1xyXG4gICAgICBlbHNlIGlmIChlcnIuc3RhdHVzID09IDQwMSlcclxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbXCIvQWRtaW4vYWNjb3VudC9sb2dpblwiXSk7XHJcbiAgICAgIGVsc2UgaWYgKGVyci5zdGF0dXMgPT0gNDAzKVxyXG4gICAgICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uubm90aWZ5RXJyb3JNZXNzYWdlKGlzRW5nbGlzaCA/IFwiU29ycnksIFlvdSdyZSBub3QgYXV0aG9yaXplZCB0byBhY2Nlc3MgdGhpcyBhY3Rpb25cIiA6IFwi2LnYsNix2Kcg2YTZitizINmE2K/ZitmDINin2YTYtdmE2KfYrdmK2Ycg2YTZh9iw2Kcg2KfZhNi32YTYqFwiKTtcclxuICAgICAgZWxzZSBpZiAoZXJyLnN0YXR1cyA9PSA1MTApXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoaXNFbmdsaXNoID8gXCJDYW4gbm90IGRlbGV0ZSB0aGlzIGl0ZW0gYXMgaXQgaXMgcmVsYXRlZCB0byBvdGhlcnNcIiA6IFwi2YTYpyDZitmF2YPZhiDYrdiw2YEg2YfYsNinINin2YTYudmG2LXYsSDZhNij2YbZhyDZhdix2KrYqNi3INio2LnZhtin2LXYsSDYo9iu2LHZiVwiKTtcclxuICAgICAgZWxzZSBpZiAoZXJyLnN0YXR1cyA9PSA1MTUpXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoKGVyci5lcnJvciA/IGVyci5lcnJvci5NZXNzYWdlIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgZWxzZSBpZiAoZXJyLnN0YXR1cyA9PSA1MDQpXHJcbiAgICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5ub3RpZnlFcnJvck1lc3NhZ2UoKGVyci5lcnJvciA/IGVyci5lcnJvci5NZXNzYWdlIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coYGVycm9yIG1lc3NhZ2UgaXM6ICR7ZXJyLmVycm9yID8gZXJyLmVycm9yLk1lc3NhZ2UgOiBlcnIubWVzc2FnZX1gKTtcclxuICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZSh0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFcnJvck1hc3NhZ2VcIikpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG5cclxuICBnZXRIZWFkZXJzKCkge1xyXG4gICAgcmV0dXJuIG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXHJcbiAgICAgICdBdXRob3JpemF0aW9uJzogdGhpcy5hdXRoU2VydmljZS5hdXRob3JpemF0aW9uSGVhZGVyVmFsdWUoKSxcclxuICAgICAgJ0NsaWVudC1Mb2NhbC1UaW1lLVpvbmUnOiBJbnRsLkRhdGVUaW1lRm9ybWF0KCkucmVzb2x2ZWRPcHRpb25zKCkudGltZVpvbmUsXHJcbiAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnbGFuZ3VhZ2UnKSxcclxuICAgICAgJ2lnbm9yZS1jb29raWVzJzogJ3RydWUnXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0SGVhZGVyc1VwZGF0ZWQoKSB7XHJcbiAgICByZXR1cm4gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgJ0F1dGhvcml6YXRpb24nOiB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpLFxyXG4gICAgICAnQ2xpZW50LUxvY2FsLVRpbWUtWm9uZSc6IEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS50aW1lWm9uZSxcclxuICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpLFxyXG4gICAgICAnaWdub3JlLWNvb2tpZXMnOiAndHJ1ZScsXHJcbiAgICAgICdWaWRlby1VcGxvYWQnOiAndHJ1ZScsXHJcbiAgICAgICdJbWFnZS1VcGxvYWQnOiAndHJ1ZScsXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import { Observable, throwError } from 'rxjs';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from "./utility.service";
|
|
5
|
-
export class SpeechRecognitionService {
|
|
6
|
-
constructor(zone, utilityService) {
|
|
7
|
-
this.zone = zone;
|
|
8
|
-
this.utilityService = utilityService;
|
|
9
|
-
this.isListening = false;
|
|
10
|
-
this.isSupported = false;
|
|
11
|
-
this.language = 'en-US';
|
|
12
|
-
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;
|
|
13
|
-
if (SpeechRecognition) {
|
|
14
|
-
this.recognition = new SpeechRecognition();
|
|
15
|
-
this.recognition.continuous = true;
|
|
16
|
-
this.recognition.interimResults = false;
|
|
17
|
-
this.recognition.maxAlternatives = 1;
|
|
18
|
-
this.isSupported = true;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
startListening(language = this.language) {
|
|
22
|
-
if (!this.isSupported) {
|
|
23
|
-
return throwError(() => new Error('Web Speech API is not supported in this browser.'));
|
|
24
|
-
}
|
|
25
|
-
return new Observable(observer => {
|
|
26
|
-
this.isListening = true;
|
|
27
|
-
this.recognition.lang = language;
|
|
28
|
-
this.recognition.start();
|
|
29
|
-
this.recognition.onresult = (event) => {
|
|
30
|
-
this.zone.run(() => {
|
|
31
|
-
const transcript = event.results[event.results.length - 1][0].transcript;
|
|
32
|
-
observer.next(transcript);
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
this.recognition.onspeechend = () => {
|
|
36
|
-
this.stopListening();
|
|
37
|
-
};
|
|
38
|
-
this.recognition.onerror = (event) => {
|
|
39
|
-
this.zone.run(() => {
|
|
40
|
-
if (event.error === 'not-allowed') {
|
|
41
|
-
this.utilityService.notifyErrorMessage(this.utilityService.getResourceValue("MicAccessDenied"));
|
|
42
|
-
observer.error('Microphone access denied by the user.');
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
observer.error(event.error);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
};
|
|
49
|
-
this.recognition.onend = () => {
|
|
50
|
-
this.zone.run(() => {
|
|
51
|
-
if (this.isListening) {
|
|
52
|
-
this.recognition.start(); // Automatically restart
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
observer.complete();
|
|
56
|
-
}
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
stopListening() {
|
|
62
|
-
if (this.isSupported) {
|
|
63
|
-
this.isListening = false;
|
|
64
|
-
this.recognition.stop();
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SpeechRecognitionService, deps: [{ token: i0.NgZone }, { token: i1.UtilityService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
68
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SpeechRecognitionService, providedIn: 'root' }); }
|
|
69
|
-
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SpeechRecognitionService, decorators: [{
|
|
71
|
-
type: Injectable,
|
|
72
|
-
args: [{
|
|
73
|
-
providedIn: 'root'
|
|
74
|
-
}]
|
|
75
|
-
}], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.UtilityService }] });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BlZWNoLXJlY29nbml0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy9zcGVlY2gtcmVjb2duaXRpb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7QUFNOUMsTUFBTSxPQUFPLHdCQUF3QjtJQU1uQyxZQUFvQixJQUFZLEVBQVMsY0FBNkI7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBUTtRQUFTLG1CQUFjLEdBQWQsY0FBYyxDQUFlO1FBSnRFLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3BCLGFBQVEsR0FBVyxPQUFPLENBQUM7UUFHekIsTUFBTSxpQkFBaUIsR0FBSSxNQUFjLENBQUMsaUJBQWlCLElBQUssTUFBYyxDQUFDLHVCQUF1QixDQUFDO1FBRXZHLElBQUksaUJBQWlCLEVBQUU7WUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUM7WUFDM0MsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLEtBQUssQ0FBQztZQUN4QyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsR0FBRyxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7U0FDekI7SUFDSCxDQUFDO0lBRUQsY0FBYyxDQUFDLFdBQW1CLElBQUksQ0FBQyxRQUFRO1FBQzdDLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLE9BQU8sVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUMsQ0FBQztTQUN4RjtRQUVELE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7WUFFekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFO29CQUNqQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQztvQkFDekUsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsR0FBRyxHQUFHLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN2QixDQUFDLENBQUM7WUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxDQUFDLEtBQVUsRUFBRSxFQUFFO2dCQUN4QyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2pCLElBQUksS0FBSyxDQUFDLEtBQUssS0FBSyxhQUFhLEVBQUU7d0JBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7d0JBQ2hHLFFBQVEsQ0FBQyxLQUFLLENBQUMsdUNBQXVDLENBQUMsQ0FBQztxQkFDekQ7eUJBQU07d0JBQ0wsUUFBUSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7cUJBQzdCO2dCQUNILENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDO1lBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEdBQUcsR0FBRyxFQUFFO2dCQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUU7b0JBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTt3QkFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLHdCQUF3QjtxQkFDbkQ7eUJBQU07d0JBQ0wsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO3FCQUNyQjtnQkFDSCxDQUFDLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7WUFDekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7K0dBbkVVLHdCQUF3QjttSEFBeEIsd0JBQXdCLGNBRnZCLE1BQU07OzRGQUVQLHdCQUF3QjtrQkFIcEMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBVdGlsaXR5U2VydmljZSB9IGZyb20gJy4vdXRpbGl0eS5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFNwZWVjaFJlY29nbml0aW9uU2VydmljZSB7XHJcbiAgcmVjb2duaXRpb246IGFueTtcclxuICBpc0xpc3RlbmluZyA9IGZhbHNlO1xyXG4gIGlzU3VwcG9ydGVkID0gZmFsc2U7XHJcbiAgbGFuZ3VhZ2U6IHN0cmluZyA9ICdlbi1VUyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgem9uZTogTmdab25lLHByaXZhdGUgdXRpbGl0eVNlcnZpY2U6VXRpbGl0eVNlcnZpY2UpIHtcclxuICAgIGNvbnN0IFNwZWVjaFJlY29nbml0aW9uID0gKHdpbmRvdyBhcyBhbnkpLlNwZWVjaFJlY29nbml0aW9uIHx8ICh3aW5kb3cgYXMgYW55KS53ZWJraXRTcGVlY2hSZWNvZ25pdGlvbjtcclxuXHJcbiAgICBpZiAoU3BlZWNoUmVjb2duaXRpb24pIHtcclxuICAgICAgdGhpcy5yZWNvZ25pdGlvbiA9IG5ldyBTcGVlY2hSZWNvZ25pdGlvbigpO1xyXG4gICAgICB0aGlzLnJlY29nbml0aW9uLmNvbnRpbnVvdXMgPSB0cnVlO1xyXG4gICAgICB0aGlzLnJlY29nbml0aW9uLmludGVyaW1SZXN1bHRzID0gZmFsc2U7XHJcbiAgICAgIHRoaXMucmVjb2duaXRpb24ubWF4QWx0ZXJuYXRpdmVzID0gMTtcclxuICAgICAgdGhpcy5pc1N1cHBvcnRlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzdGFydExpc3RlbmluZyhsYW5ndWFnZTogc3RyaW5nID0gdGhpcy5sYW5ndWFnZSk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICBpZiAoIXRoaXMuaXNTdXBwb3J0ZWQpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3IoKCkgPT4gbmV3IEVycm9yKCdXZWIgU3BlZWNoIEFQSSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgYnJvd3Nlci4nKSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcclxuICAgICAgdGhpcy5pc0xpc3RlbmluZyA9IHRydWU7XHJcbiAgICAgIHRoaXMucmVjb2duaXRpb24ubGFuZyA9IGxhbmd1YWdlO1xyXG4gICAgICB0aGlzLnJlY29nbml0aW9uLnN0YXJ0KCk7XHJcblxyXG4gICAgICB0aGlzLnJlY29nbml0aW9uLm9ucmVzdWx0ID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHRyYW5zY3JpcHQgPSBldmVudC5yZXN1bHRzW2V2ZW50LnJlc3VsdHMubGVuZ3RoIC0gMV1bMF0udHJhbnNjcmlwdDtcclxuICAgICAgICAgIG9ic2VydmVyLm5leHQodHJhbnNjcmlwdCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnJlY29nbml0aW9uLm9uc3BlZWNoZW5kID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3RvcExpc3RlbmluZygpO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5yZWNvZ25pdGlvbi5vbmVycm9yID0gKGV2ZW50OiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIGlmIChldmVudC5lcnJvciA9PT0gJ25vdC1hbGxvd2VkJykge1xyXG4gICAgICAgICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLm5vdGlmeUVycm9yTWVzc2FnZSh0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJNaWNBY2Nlc3NEZW5pZWRcIikpO1xyXG4gICAgICAgICAgICBvYnNlcnZlci5lcnJvcignTWljcm9waG9uZSBhY2Nlc3MgZGVuaWVkIGJ5IHRoZSB1c2VyLicpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgb2JzZXJ2ZXIuZXJyb3IoZXZlbnQuZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5yZWNvZ25pdGlvbi5vbmVuZCA9ICgpID0+IHtcclxuICAgICAgICB0aGlzLnpvbmUucnVuKCgpID0+IHtcclxuICAgICAgICAgIGlmICh0aGlzLmlzTGlzdGVuaW5nKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb2duaXRpb24uc3RhcnQoKTsgLy8gQXV0b21hdGljYWxseSByZXN0YXJ0XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBvYnNlcnZlci5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9O1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdG9wTGlzdGVuaW5nKCkge1xyXG4gICAgaWYgKHRoaXMuaXNTdXBwb3J0ZWQpIHtcclxuICAgICAgdGhpcy5pc0xpc3RlbmluZyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLnJlY29nbml0aW9uLnN0b3AoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxufVxyXG5cclxuIl19
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
import * as i1 from ".";
|
|
5
|
-
export class StylesBundleService {
|
|
6
|
-
constructor(document, translateService) {
|
|
7
|
-
this.document = document;
|
|
8
|
-
this.translateService = translateService;
|
|
9
|
-
}
|
|
10
|
-
loadThemes(lang, bundleEnglishName, bundleArabicName) {
|
|
11
|
-
if (lang == "ar") {
|
|
12
|
-
this.loadStyleBundle(bundleArabicName.toString());
|
|
13
|
-
document.querySelector('html').setAttribute("b-lang", "ar"); //use b-lang instead of lang to fix firefox number inputs in Arabic locale
|
|
14
|
-
document.querySelector('html').setAttribute("dir", "rtl");
|
|
15
|
-
}
|
|
16
|
-
else {
|
|
17
|
-
this.loadStyleBundle(bundleEnglishName.toString());
|
|
18
|
-
document.querySelector('html').setAttribute("b-lang", "en");
|
|
19
|
-
document.querySelector('html').setAttribute("dir", "ltr");
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
loadThemesColor(theme, bundleDarkName, bundleLightName) {
|
|
23
|
-
if (theme == "Light")
|
|
24
|
-
this.loadStyleBundle(bundleLightName.toString());
|
|
25
|
-
else
|
|
26
|
-
this.loadStyleBundle(bundleDarkName.toString());
|
|
27
|
-
}
|
|
28
|
-
loadStyleBundle(styleName) {
|
|
29
|
-
const head = this.document.getElementsByTagName('head')[0];
|
|
30
|
-
let themeLink = this.document.getElementById('client-theme');
|
|
31
|
-
let shouldRemoveOld = false;
|
|
32
|
-
if (themeLink) {
|
|
33
|
-
// ✅ Check if current CSS already loaded (by exact filename)
|
|
34
|
-
const currentFileName = this.getFileName(themeLink.href);
|
|
35
|
-
const requestedFileName = this.getFileName(styleName);
|
|
36
|
-
if (currentFileName === requestedFileName) {
|
|
37
|
-
return; // Same CSS already loaded
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
shouldRemoveOld = true; // Mark for removal after new CSS is added
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
// ✅ Add new CSS first (prevents FOUC)
|
|
44
|
-
const style = this.document.createElement('link');
|
|
45
|
-
style.id = 'client-theme';
|
|
46
|
-
style.rel = 'stylesheet';
|
|
47
|
-
style.href = `${styleName}`;
|
|
48
|
-
head.appendChild(style);
|
|
49
|
-
// ✅ Remove old CSS after new one is added (smooth transition)
|
|
50
|
-
if (shouldRemoveOld && themeLink) {
|
|
51
|
-
themeLink.remove();
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Extract filename from full path
|
|
56
|
-
* @param path Full path or just filename
|
|
57
|
-
* @returns The filename only
|
|
58
|
-
*/
|
|
59
|
-
getFileName(path) {
|
|
60
|
-
// Extract just the filename from full path
|
|
61
|
-
const parts = path.split('/');
|
|
62
|
-
return parts[parts.length - 1];
|
|
63
|
-
}
|
|
64
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StylesBundleService, deps: [{ token: DOCUMENT }, { token: i1.BBSFTranslateService }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
65
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StylesBundleService, providedIn: 'root' }); }
|
|
66
|
-
}
|
|
67
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: StylesBundleService, decorators: [{
|
|
68
|
-
type: Injectable,
|
|
69
|
-
args: [{
|
|
70
|
-
providedIn: 'root'
|
|
71
|
-
}]
|
|
72
|
-
}], ctorParameters: () => [{ type: Document, decorators: [{
|
|
73
|
-
type: Inject,
|
|
74
|
-
args: [DOCUMENT]
|
|
75
|
-
}] }, { type: i1.BBSFTranslateService }] });
|
|
76
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3R5bGVzLWJ1bmRsZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvc3R5bGVzLWJ1bmRsZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7O0FBTW5ELE1BQU0sT0FBTyxtQkFBbUI7SUFFOUIsWUFBc0MsUUFBa0IsRUFBVSxnQkFBc0M7UUFBbEUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUFVLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7SUFBSSxDQUFDO0lBRTdHLFVBQVUsQ0FBQyxJQUFZLEVBQUUsaUJBQXlCLEVBQUUsZ0JBQXdCO1FBQzFFLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTtZQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbEQsUUFBUSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsMEVBQTBFO1lBQ3ZJLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztTQUMzRDthQUFNO1lBQ0wsSUFBSSxDQUFDLGVBQWUsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RCxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDM0Q7SUFFSCxDQUFDO0lBRUQsZUFBZSxDQUFDLEtBQWEsRUFBRSxjQUFzQixFQUFFLGVBQXVCO1FBQzVFLElBQUksS0FBSyxJQUFJLE9BQU87WUFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQzs7WUFFakQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRU8sZUFBZSxDQUFDLFNBQWlCO1FBQ3ZDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDM0QsSUFBSSxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFvQixDQUFDO1FBQ2hGLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztRQUU1QixJQUFJLFNBQVMsRUFBRTtZQUNiLDREQUE0RDtZQUM1RCxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUN6RCxNQUFNLGlCQUFpQixHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQUM7WUFFdEQsSUFBSSxlQUFlLEtBQUssaUJBQWlCLEVBQUU7Z0JBQ3pDLE9BQU8sQ0FBQywwQkFBMEI7YUFDbkM7aUJBQU07Z0JBQ0wsZUFBZSxHQUFHLElBQUksQ0FBQyxDQUFDLDBDQUEwQzthQUNuRTtTQUNGO1FBRUQsc0NBQXNDO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxFQUFFLEdBQUcsY0FBYyxDQUFDO1FBQzFCLEtBQUssQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDO1FBQ3pCLEtBQUssQ0FBQyxJQUFJLEdBQUcsR0FBRyxTQUFTLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXhCLDhEQUE4RDtRQUM5RCxJQUFJLGVBQWUsSUFBSSxTQUFTLEVBQUU7WUFDaEMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUdEOzs7O0tBSUM7SUFDTyxXQUFXLENBQUMsSUFBWTtRQUM5QiwyQ0FBMkM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QixPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7K0dBaEVVLG1CQUFtQixrQkFFVixRQUFRO21IQUZqQixtQkFBbUIsY0FGbEIsTUFBTTs7NEZBRVAsbUJBQW1CO2tCQUgvQixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBR2MsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBJbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0eWxlc0J1bmRsZVNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcihASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCwgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBCQlNGVHJhbnNsYXRlU2VydmljZSkgeyB9XHJcblxyXG4gIGxvYWRUaGVtZXMobGFuZzogc3RyaW5nLCBidW5kbGVFbmdsaXNoTmFtZTogc3RyaW5nLCBidW5kbGVBcmFiaWNOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChsYW5nID09IFwiYXJcIikge1xyXG4gICAgICB0aGlzLmxvYWRTdHlsZUJ1bmRsZShidW5kbGVBcmFiaWNOYW1lLnRvU3RyaW5nKCkpO1xyXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJykuc2V0QXR0cmlidXRlKFwiYi1sYW5nXCIsIFwiYXJcIik7IC8vdXNlIGItbGFuZyBpbnN0ZWFkIG9mIGxhbmcgdG8gZml4IGZpcmVmb3ggbnVtYmVyIGlucHV0cyBpbiBBcmFiaWMgbG9jYWxlXHJcbiAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2h0bWwnKS5zZXRBdHRyaWJ1dGUoXCJkaXJcIiwgXCJydGxcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvYWRTdHlsZUJ1bmRsZShidW5kbGVFbmdsaXNoTmFtZS50b1N0cmluZygpKTtcclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaHRtbCcpLnNldEF0dHJpYnV0ZShcImItbGFuZ1wiLCBcImVuXCIpO1xyXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdodG1sJykuc2V0QXR0cmlidXRlKFwiZGlyXCIsIFwibHRyXCIpO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGxvYWRUaGVtZXNDb2xvcih0aGVtZTogc3RyaW5nLCBidW5kbGVEYXJrTmFtZTogc3RyaW5nLCBidW5kbGVMaWdodE5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKHRoZW1lID09IFwiTGlnaHRcIilcclxuICAgICAgdGhpcy5sb2FkU3R5bGVCdW5kbGUoYnVuZGxlTGlnaHROYW1lLnRvU3RyaW5nKCkpO1xyXG4gICAgZWxzZVxyXG4gICAgICB0aGlzLmxvYWRTdHlsZUJ1bmRsZShidW5kbGVEYXJrTmFtZS50b1N0cmluZygpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9hZFN0eWxlQnVuZGxlKHN0eWxlTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBoZWFkID0gdGhpcy5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdO1xyXG4gICAgbGV0IHRoZW1lTGluayA9IHRoaXMuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaWVudC10aGVtZScpIGFzIEhUTUxMaW5rRWxlbWVudDtcclxuICAgIGxldCBzaG91bGRSZW1vdmVPbGQgPSBmYWxzZTtcclxuXHJcbiAgICBpZiAodGhlbWVMaW5rKSB7XHJcbiAgICAgIC8vIOKchSBDaGVjayBpZiBjdXJyZW50IENTUyBhbHJlYWR5IGxvYWRlZCAoYnkgZXhhY3QgZmlsZW5hbWUpXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRGaWxlTmFtZSA9IHRoaXMuZ2V0RmlsZU5hbWUodGhlbWVMaW5rLmhyZWYpO1xyXG4gICAgICBjb25zdCByZXF1ZXN0ZWRGaWxlTmFtZSA9IHRoaXMuZ2V0RmlsZU5hbWUoc3R5bGVOYW1lKTtcclxuXHJcbiAgICAgIGlmIChjdXJyZW50RmlsZU5hbWUgPT09IHJlcXVlc3RlZEZpbGVOYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuOyAvLyBTYW1lIENTUyBhbHJlYWR5IGxvYWRlZFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNob3VsZFJlbW92ZU9sZCA9IHRydWU7IC8vIE1hcmsgZm9yIHJlbW92YWwgYWZ0ZXIgbmV3IENTUyBpcyBhZGRlZFxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8g4pyFIEFkZCBuZXcgQ1NTIGZpcnN0IChwcmV2ZW50cyBGT1VDKVxyXG4gICAgY29uc3Qgc3R5bGUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTtcclxuICAgIHN0eWxlLmlkID0gJ2NsaWVudC10aGVtZSc7XHJcbiAgICBzdHlsZS5yZWwgPSAnc3R5bGVzaGVldCc7XHJcbiAgICBzdHlsZS5ocmVmID0gYCR7c3R5bGVOYW1lfWA7XHJcbiAgICBoZWFkLmFwcGVuZENoaWxkKHN0eWxlKTtcclxuXHJcbiAgICAvLyDinIUgUmVtb3ZlIG9sZCBDU1MgYWZ0ZXIgbmV3IG9uZSBpcyBhZGRlZCAoc21vb3RoIHRyYW5zaXRpb24pXHJcbiAgICBpZiAoc2hvdWxkUmVtb3ZlT2xkICYmIHRoZW1lTGluaykge1xyXG4gICAgICB0aGVtZUxpbmsucmVtb3ZlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAqIEV4dHJhY3QgZmlsZW5hbWUgZnJvbSBmdWxsIHBhdGhcclxuICogQHBhcmFtIHBhdGggRnVsbCBwYXRoIG9yIGp1c3QgZmlsZW5hbWVcclxuICogQHJldHVybnMgVGhlIGZpbGVuYW1lIG9ubHlcclxuICovXHJcbiAgcHJpdmF0ZSBnZXRGaWxlTmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgLy8gRXh0cmFjdCBqdXN0IHRoZSBmaWxlbmFtZSBmcm9tIGZ1bGwgcGF0aFxyXG4gICAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KCcvJyk7XHJcbiAgICByZXR1cm4gcGFydHNbcGFydHMubGVuZ3RoIC0gMV07XHJcbiAgfVxyXG59XHJcblxyXG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import { TranslateService } from "@ngx-translate/core";
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export class BBSFTranslateService extends TranslateService {
|
|
5
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BBSFTranslateService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
6
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BBSFTranslateService, providedIn: 'root' }); }
|
|
7
|
-
}
|
|
8
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: BBSFTranslateService, decorators: [{
|
|
9
|
-
type: Injectable,
|
|
10
|
-
args: [{
|
|
11
|
-
providedIn: 'root'
|
|
12
|
-
}]
|
|
13
|
-
}] });
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYnNmLXV0aWxpdGllcy9zcmMvbGliL3NoYXJlZC9zZXJ2aWNlcy90cmFuc2xhdGUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDOztBQUt2RCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZ0JBQWdCOytHQUE3QyxvQkFBb0I7bUhBQXBCLG9CQUFvQixjQUZqQixNQUFNOzs0RkFFVCxvQkFBb0I7a0JBSGhDLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiQG5neC10cmFuc2xhdGUvY29yZVwiO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCQlNGVHJhbnNsYXRlU2VydmljZSBleHRlbmRzIFRyYW5zbGF0ZVNlcnZpY2Uge1xyXG59Il19
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { inject } from "@angular/core";
|
|
2
|
-
import { BBSFTranslateService } from ".";
|
|
3
|
-
export const TranslationResolverService = () => {
|
|
4
|
-
let translateService = inject(BBSFTranslateService);
|
|
5
|
-
return translateService.getTranslation(translateService.currentLang);
|
|
6
|
-
};
|
|
7
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tcmVzb2x2ZXIuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Jic2YtdXRpbGl0aWVzL3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL3RyYW5zbGF0aW9uLXJlc29sdmVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxHQUFHLENBQUM7QUFFekMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQW1CLEdBQUcsRUFBRTtJQUM3RCxJQUFJLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBQ3BELE9BQU8sZ0JBQWdCLENBQUMsY0FBYyxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IFJlc29sdmVGbiB9IGZyb20gXCJAYW5ndWxhci9yb3V0ZXJcIjtcclxuaW1wb3J0IHsgQkJTRlRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tIFwiLlwiO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRyYW5zbGF0aW9uUmVzb2x2ZXJTZXJ2aWNlOiBSZXNvbHZlRm48YW55PiA9ICgpID0+IHtcclxuICBsZXQgdHJhbnNsYXRlU2VydmljZSA9IGluamVjdChCQlNGVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgcmV0dXJuIHRyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24odHJhbnNsYXRlU2VydmljZS5jdXJyZW50TGFuZyk7XHJcbn0iXX0=
|
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { Injectable } from '@angular/core';
|
|
3
|
-
import { BlockUI } from 'ng-block-ui';
|
|
4
|
-
import { ToastrService } from 'ngx-toastr';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from ".";
|
|
7
|
-
export class UtilityService {
|
|
8
|
-
constructor(translator, environmentService, injector) {
|
|
9
|
-
this.translator = translator;
|
|
10
|
-
this.environmentService = environmentService;
|
|
11
|
-
this.injector = injector;
|
|
12
|
-
this.isCreatedBefore = false;
|
|
13
|
-
}
|
|
14
|
-
getResourceValue(Key) {
|
|
15
|
-
let ResourceValue = this.translator.instant(Key);
|
|
16
|
-
return ResourceValue;
|
|
17
|
-
}
|
|
18
|
-
getCurrentLanguage() {
|
|
19
|
-
let currentLanguage = this.environmentService.getDefaultLanguage();
|
|
20
|
-
let lang = localStorage.getItem('language');
|
|
21
|
-
if (lang)
|
|
22
|
-
currentLanguage = lang;
|
|
23
|
-
else
|
|
24
|
-
localStorage.setItem('language', currentLanguage);
|
|
25
|
-
return currentLanguage;
|
|
26
|
-
}
|
|
27
|
-
isCurrentLanguageEnglish() {
|
|
28
|
-
return this.getCurrentLanguage() == "en";
|
|
29
|
-
}
|
|
30
|
-
isCurrentLanguageArabic() {
|
|
31
|
-
return this.getCurrentLanguage() == "ar";
|
|
32
|
-
}
|
|
33
|
-
notifySuccessMessage(Message, title, time, showHeader = true) {
|
|
34
|
-
let MessageTemplate = this.getResourceValue("SuccessMessage");
|
|
35
|
-
let titleTemplate;
|
|
36
|
-
if (Message) {
|
|
37
|
-
MessageTemplate = Message;
|
|
38
|
-
}
|
|
39
|
-
if (title) {
|
|
40
|
-
titleTemplate = title;
|
|
41
|
-
}
|
|
42
|
-
let toaster = this.injector.get(ToastrService);
|
|
43
|
-
showHeader ? toaster.success(MessageTemplate, titleTemplate) : toaster.success(MessageTemplate);
|
|
44
|
-
}
|
|
45
|
-
notifyErrorMessage(Message, title, time, showHeader = true) {
|
|
46
|
-
let MessageTemplate = this.getResourceValue("ErrorMessage");
|
|
47
|
-
let titleTemplate = this.getResourceValue("Error");
|
|
48
|
-
if (Message) {
|
|
49
|
-
MessageTemplate = Message;
|
|
50
|
-
}
|
|
51
|
-
if (title) {
|
|
52
|
-
titleTemplate = title;
|
|
53
|
-
}
|
|
54
|
-
const toaster = this.injector.get(ToastrService);
|
|
55
|
-
showHeader ? toaster.error(MessageTemplate, titleTemplate) : toaster.error(MessageTemplate);
|
|
56
|
-
}
|
|
57
|
-
notifyWarningMessage(Message, title, time, showHeader = true) {
|
|
58
|
-
let MessageTemplate = this.getResourceValue("WarningMessage");
|
|
59
|
-
let titleTemplate = this.getResourceValue("Warning");
|
|
60
|
-
if (Message) {
|
|
61
|
-
MessageTemplate = Message;
|
|
62
|
-
}
|
|
63
|
-
if (title) {
|
|
64
|
-
titleTemplate = title;
|
|
65
|
-
}
|
|
66
|
-
const toaster = this.injector.get(ToastrService);
|
|
67
|
-
showHeader ? toaster.warning(MessageTemplate, titleTemplate) : toaster.warning(MessageTemplate);
|
|
68
|
-
}
|
|
69
|
-
startBlockUI() {
|
|
70
|
-
this.blockUI.start();
|
|
71
|
-
}
|
|
72
|
-
stopBlockUI() {
|
|
73
|
-
this.blockUI.stop();
|
|
74
|
-
}
|
|
75
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilityService, deps: [{ token: i1.BBSFTranslateService }, { token: i1.EnvironmentService }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
76
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilityService, providedIn: 'root' }); }
|
|
77
|
-
}
|
|
78
|
-
__decorate([
|
|
79
|
-
BlockUI()
|
|
80
|
-
], UtilityService.prototype, "blockUI", void 0);
|
|
81
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UtilityService, decorators: [{
|
|
82
|
-
type: Injectable,
|
|
83
|
-
args: [{
|
|
84
|
-
providedIn: 'root'
|
|
85
|
-
}]
|
|
86
|
-
}], ctorParameters: () => [{ type: i1.BBSFTranslateService }, { type: i1.EnvironmentService }, { type: i0.Injector }], propDecorators: { blockUI: [] } });
|
|
87
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi11dGlsaXRpZXMvc3JjL2xpYi9zaGFyZWQvc2VydmljZXMvdXRpbGl0eS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQWEsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLFlBQVksQ0FBQzs7O0FBTTNDLE1BQU0sT0FBTyxjQUFjO0lBTXpCLFlBQW9CLFVBQWdDLEVBQVUsa0JBQXNDLEVBQVUsUUFBa0I7UUFBNUcsZUFBVSxHQUFWLFVBQVUsQ0FBc0I7UUFBVSx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUpoSSxvQkFBZSxHQUFHLEtBQUssQ0FBQztJQU14QixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNoRCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0lBRUQsa0JBQWtCO1FBQ2hCLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQ25FLElBQUksSUFBSSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDNUMsSUFBSSxJQUFJO1lBQ04sZUFBZSxHQUFHLElBQUksQ0FBQzs7WUFFdkIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFDcEQsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixPQUFPLElBQUksQ0FBQyxrQkFBa0Is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b3JlJztcclxuaW1wb3J0IHsgQmxvY2tVSSwgTmdCbG9ja1VJIH0gZnJvbSAnbmctYmxvY2stdWknO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBFbnZpcm9ubWVudFNlcnZpY2UgfSBmcm9tICcuJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFV0aWxpdHlTZXJ2aWNlIHtcclxuXHJcbiAgaXNDcmVhdGVkQmVmb3JlID0gZmFsc2U7XHJcblxyXG4gIEBCbG9ja1VJKCkgYmxvY2tVSTogTmdCbG9ja1VJO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHRyYW5zbGF0b3I6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLCBwcml2YXRlIGVudmlyb25tZW50U2VydmljZTogRW52aXJvbm1lbnRTZXJ2aWNlLCBwcml2YXRlIGluamVjdG9yOiBJbmplY3Rvcikge1xyXG5cclxuICB9XHJcblxyXG4gIGdldFJlc291cmNlVmFsdWUoS2V5OiBzdHJpbmcpOiBzdHJpbmcgeyBcclxuICAgIGxldCBSZXNvdXJjZVZhbHVlID0gdGhpcy50cmFuc2xhdG9yLmluc3RhbnQoS2V5KVxyXG4gICAgcmV0dXJuIFJlc291cmNlVmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXRDdXJyZW50TGFuZ3VhZ2UoKSB7XHJcbiAgICBsZXQgY3VycmVudExhbmd1YWdlID0gdGhpcy5lbnZpcm9ubWVudFNlcnZpY2UuZ2V0RGVmYXVsdExhbmd1YWdlKCk7XHJcbiAgICBsZXQgbGFuZyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdsYW5ndWFnZScpO1xyXG4gICAgaWYgKGxhbmcpXHJcbiAgICAgIGN1cnJlbnRMYW5ndWFnZSA9IGxhbmc7XHJcbiAgICBlbHNlXHJcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdsYW5ndWFnZScsIGN1cnJlbnRMYW5ndWFnZSk7XHJcbiAgICByZXR1cm4gY3VycmVudExhbmd1YWdlO1xyXG4gIH1cclxuXHJcbiAgaXNDdXJyZW50TGFuZ3VhZ2VFbmdsaXNoKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VycmVudExhbmd1YWdlKCkgPT0gXCJlblwiXHJcbiAgfVxyXG5cclxuICBpc0N1cnJlbnRMYW5ndWFnZUFyYWJpYygpIHtcclxuICAgIHJldHVybiB0aGlzLmdldEN1cnJlbnRMYW5ndWFnZSgpID09IFwiYXJcIlxyXG4gIH1cclxuXHJcbiAgbm90aWZ5U3VjY2Vzc01lc3NhZ2UoTWVzc2FnZT86IHN0cmluZywgdGl0bGU/OiBzdHJpbmcsIHRpbWU/OiBudW1iZXIsIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBsZXQgTWVzc2FnZVRlbXBsYXRlID0gdGhpcy5nZXRSZXNvdXJjZVZhbHVlKFwiU3VjY2Vzc01lc3NhZ2VcIik7XHJcbiAgICBsZXQgdGl0bGVUZW1wbGF0ZTogc3RyaW5nO1xyXG4gICAgaWYgKE1lc3NhZ2UpIHtcclxuICAgICAgTWVzc2FnZVRlbXBsYXRlID0gTWVzc2FnZTtcclxuICAgIH1cclxuICAgIGlmICh0aXRsZSkge1xyXG4gICAgICB0aXRsZVRlbXBsYXRlID0gdGl0bGU7XHJcbiAgICB9XHJcbiAgICBsZXQgdG9hc3RlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRvYXN0clNlcnZpY2UpO1xyXG4gICAgc2hvd0hlYWRlciA/IHRvYXN0ZXIuc3VjY2VzcyhNZXNzYWdlVGVtcGxhdGUsIHRpdGxlVGVtcGxhdGUpIDogdG9hc3Rlci5zdWNjZXNzKE1lc3NhZ2VUZW1wbGF0ZSk7XHJcbiAgfVxyXG5cclxuICBub3RpZnlFcnJvck1lc3NhZ2UoTWVzc2FnZT86IHN0cmluZywgdGl0bGU/OiBzdHJpbmcsIHRpbWU/OiBudW1iZXIsIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICBsZXQgTWVzc2FnZVRlbXBsYXRlID0gdGhpcy5nZXRSZXNvdXJjZVZhbHVlKFwiRXJyb3JNZXNzYWdlXCIpO1xyXG4gICAgbGV0IHRpdGxlVGVtcGxhdGUgPSB0aGlzLmdldFJlc291cmNlVmFsdWUoXCJFcnJvclwiKTtcclxuICAgIGlmIChNZXNzYWdlKSB7XHJcbiAgICAgIE1lc3NhZ2VUZW1wbGF0ZSA9IE1lc3NhZ2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGl0bGUpIHtcclxuICAgICAgdGl0bGVUZW1wbGF0ZSA9IHRpdGxlO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG9hc3RlciA9IHRoaXMuaW5qZWN0b3IuZ2V0KFRvYXN0clNlcnZpY2UpO1xyXG4gICAgc2hvd0hlYWRlciA/IHRvYXN0ZXIuZXJyb3IoTWVzc2FnZVRlbXBsYXRlLCB0aXRsZVRlbXBsYXRlKSA6IHRvYXN0ZXIuZXJyb3IoTWVzc2FnZVRlbXBsYXRlKTtcclxuICB9XHJcblxyXG4gIG5vdGlmeVdhcm5pbmdNZXNzYWdlKE1lc3NhZ2U/OiBzdHJpbmcsIHRpdGxlPzogc3RyaW5nLCB0aW1lPzogbnVtYmVyLCBzaG93SGVhZGVyOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgbGV0IE1lc3NhZ2VUZW1wbGF0ZSA9IHRoaXMuZ2V0UmVzb3VyY2VWYWx1ZShcIldhcm5pbmdNZXNzYWdlXCIpO1xyXG4gICAgbGV0IHRpdGxlVGVtcGxhdGUgPSB0aGlzLmdldFJlc291cmNlVmFsdWUoXCJXYXJuaW5nXCIpO1xyXG4gICAgaWYgKE1lc3NhZ2UpIHtcclxuICAgICAgTWVzc2FnZVRlbXBsYXRlID0gTWVzc2FnZTtcclxuICAgIH1cclxuICAgIGlmICh0aXRsZSkge1xyXG4gICAgICB0aXRsZVRlbXBsYXRlID0gdGl0bGU7XHJcbiAgICB9XHJcbiAgICBjb25zdCB0b2FzdGVyID0gdGhpcy5pbmplY3Rvci5nZXQoVG9hc3RyU2VydmljZSk7XHJcbiAgICBzaG93SGVhZGVyID8gdG9hc3Rlci53YXJuaW5nKE1lc3NhZ2VUZW1wbGF0ZSwgdGl0bGVUZW1wbGF0ZSkgOiB0b2FzdGVyLndhcm5pbmcoTWVzc2FnZVRlbXBsYXRlKTtcclxuICB9XHJcblxyXG4gIHN0YXJ0QmxvY2tVSSgpIHtcclxuICAgIHRoaXMuYmxvY2tVSS5zdGFydCgpO1xyXG4gIH1cclxuXHJcbiAgc3RvcEJsb2NrVUkoKSB7XHJcbiAgICB0aGlzLmJsb2NrVUkuc3RvcCgpO1xyXG4gIH1cclxuXHJcbn1cclxuIl19
|