@stemy/ngx-utils 10.2.44 → 10.3.3
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 +27 -27
- package/bundles/stemy-ngx-utils.umd.js +5654 -5640
- package/bundles/stemy-ngx-utils.umd.js.map +1 -1
- package/bundles/stemy-ngx-utils.umd.min.js +1 -1
- package/bundles/stemy-ngx-utils.umd.min.js.map +1 -1
- package/esm2015/ngx-utils/common-types.js +111 -111
- package/esm2015/ngx-utils/components/dynamic-table/dynamic-table.component.js +139 -139
- package/esm2015/ngx-utils/components/pagination-menu/pagination-menu.component.js +96 -96
- package/esm2015/ngx-utils/components/unordered-list/unordered-list.component.js +51 -51
- package/esm2015/ngx-utils/directives/async-method.directive.js +58 -58
- package/esm2015/ngx-utils/directives/background.directive.js +51 -51
- package/esm2015/ngx-utils/directives/dynamic-table-template.directive.js +19 -19
- package/esm2015/ngx-utils/directives/global-template.directive.js +27 -27
- package/esm2015/ngx-utils/directives/icon.directive.js +59 -59
- package/esm2015/ngx-utils/directives/ngx-template-outlet.directive.js +88 -88
- package/esm2015/ngx-utils/directives/pagination-item.directive.js +33 -33
- package/esm2015/ngx-utils/directives/pagination.directive.js +76 -71
- package/esm2015/ngx-utils/directives/resource-if.directive.js +51 -51
- package/esm2015/ngx-utils/directives/sticky-class.directive.js +35 -35
- package/esm2015/ngx-utils/directives/sticky.directive.js +48 -48
- package/esm2015/ngx-utils/directives/unordered-list-item.directive.js +70 -70
- package/esm2015/ngx-utils/directives/unordered-list-template.directive.js +26 -26
- package/esm2015/ngx-utils/ngx-utils.module.js +232 -232
- package/esm2015/ngx-utils/pipes/chunk.pipe.js +21 -21
- package/esm2015/ngx-utils/pipes/entries.pipe.js +24 -24
- package/esm2015/ngx-utils/pipes/extra-item-properties.pipe.js +27 -27
- package/esm2015/ngx-utils/pipes/filter.pipe.js +38 -38
- package/esm2015/ngx-utils/pipes/find.pipe.js +25 -25
- package/esm2015/ngx-utils/pipes/format-number.pipe.js +19 -19
- package/esm2015/ngx-utils/pipes/get-offset.pipe.js +13 -13
- package/esm2015/ngx-utils/pipes/get-type.pipe.js +12 -12
- package/esm2015/ngx-utils/pipes/global-template.pipe.js +35 -35
- package/esm2015/ngx-utils/pipes/group-by.pipe.js +23 -23
- package/esm2015/ngx-utils/pipes/is-type.pipe.js +12 -12
- package/esm2015/ngx-utils/pipes/join.pipe.js +15 -15
- package/esm2015/ngx-utils/pipes/keys.pipe.js +18 -18
- package/esm2015/ngx-utils/pipes/map.pipe.js +25 -25
- package/esm2015/ngx-utils/pipes/max.pipe.js +22 -22
- package/esm2015/ngx-utils/pipes/min.pipe.js +22 -22
- package/esm2015/ngx-utils/pipes/reduce.pipe.js +26 -26
- package/esm2015/ngx-utils/pipes/remap.pipe.js +28 -28
- package/esm2015/ngx-utils/pipes/replace.pipe.js +12 -12
- package/esm2015/ngx-utils/pipes/reverse.pipe.js +20 -20
- package/esm2015/ngx-utils/pipes/round.pipe.js +19 -19
- package/esm2015/ngx-utils/pipes/safe-html.pipe.js +32 -32
- package/esm2015/ngx-utils/pipes/translate.pipe.js +81 -81
- package/esm2015/ngx-utils/pipes/values.pipe.js +18 -18
- package/esm2015/ngx-utils/plugins/resize-event.plugin.js +59 -59
- package/esm2015/ngx-utils/plugins/scroll-event.plugin.js +52 -52
- package/esm2015/ngx-utils/services/acl.service.js +78 -78
- package/esm2015/ngx-utils/services/api.service.js +35 -35
- package/esm2015/ngx-utils/services/auth.service.js +14 -14
- package/esm2015/ngx-utils/services/base-http.client.js +46 -46
- package/esm2015/ngx-utils/services/base-http.service.js +274 -274
- package/esm2015/ngx-utils/services/config.service.js +95 -95
- package/esm2015/ngx-utils/services/error-handler.service.js +49 -49
- package/esm2015/ngx-utils/services/events.service.js +24 -24
- package/esm2015/ngx-utils/services/formatter.service.js +44 -44
- package/esm2015/ngx-utils/services/global-template.service.js +35 -35
- package/esm2015/ngx-utils/services/icon.service.js +24 -24
- package/esm2015/ngx-utils/services/language.service.js +117 -117
- package/esm2015/ngx-utils/services/open-api.service.js +41 -41
- package/esm2015/ngx-utils/services/promise.service.js +49 -49
- package/esm2015/ngx-utils/services/state.service.js +143 -143
- package/esm2015/ngx-utils/services/static-language.service.js +144 -144
- package/esm2015/ngx-utils/services/storage.service.js +48 -48
- package/esm2015/ngx-utils/services/toaster.service.js +29 -29
- package/esm2015/ngx-utils/services/translated-url.serializer.js +70 -70
- package/esm2015/ngx-utils/services/universal.service.js +73 -73
- package/esm2015/ngx-utils/utils/ajax-request-handler.js +40 -40
- package/esm2015/ngx-utils/utils/array.utils.js +100 -90
- package/esm2015/ngx-utils/utils/auth.guard.js +153 -153
- package/esm2015/ngx-utils/utils/canvas.utils.js +388 -388
- package/esm2015/ngx-utils/utils/date.utils.js +28 -28
- package/esm2015/ngx-utils/utils/file.utils.js +90 -90
- package/esm2015/ngx-utils/utils/generic-value.js +20 -20
- package/esm2015/ngx-utils/utils/geometry.js +132 -132
- package/esm2015/ngx-utils/utils/initializer.js +17 -17
- package/esm2015/ngx-utils/utils/loader.utils.js +55 -55
- package/esm2015/ngx-utils/utils/math.utils.js +15 -15
- package/esm2015/ngx-utils/utils/object.utils.js +248 -248
- package/esm2015/ngx-utils/utils/observable.utils.js +63 -63
- package/esm2015/ngx-utils/utils/reflect.utils.js +33 -33
- package/esm2015/ngx-utils/utils/set.utils.js +20 -20
- package/esm2015/ngx-utils/utils/string.utils.js +28 -28
- package/esm2015/ngx-utils/utils/timer.utils.js +52 -52
- package/esm2015/ngx-utils/utils/unique.utils.js +24 -24
- package/esm2015/ngx-utils/utils/vector.js +77 -77
- package/esm2015/public_api.js +83 -83
- package/esm2015/stemy-ngx-utils.js +7 -7
- package/fesm2015/stemy-ngx-utils.js +4552 -4537
- package/fesm2015/stemy-ngx-utils.js.map +1 -1
- package/ngx-utils/common-types.d.ts +284 -284
- package/ngx-utils/components/dynamic-table/dynamic-table.component.d.ts +43 -43
- package/ngx-utils/components/pagination-menu/pagination-menu.component.d.ts +28 -28
- package/ngx-utils/components/unordered-list/unordered-list.component.d.ts +22 -22
- package/ngx-utils/directives/async-method.directive.d.ts +16 -16
- package/ngx-utils/directives/background.directive.d.ts +14 -14
- package/ngx-utils/directives/dynamic-table-template.directive.d.ts +8 -8
- package/ngx-utils/directives/global-template.directive.d.ts +10 -10
- package/ngx-utils/directives/icon.directive.d.ts +20 -20
- package/ngx-utils/directives/ngx-template-outlet.directive.d.ts +14 -14
- package/ngx-utils/directives/pagination-item.directive.d.ts +12 -12
- package/ngx-utils/directives/pagination.directive.d.ts +22 -21
- package/ngx-utils/directives/resource-if.directive.d.ts +16 -16
- package/ngx-utils/directives/sticky-class.directive.d.ts +12 -12
- package/ngx-utils/directives/sticky.directive.d.ts +16 -16
- package/ngx-utils/directives/unordered-list-item.directive.d.ts +25 -25
- package/ngx-utils/directives/unordered-list-template.directive.d.ts +10 -10
- package/ngx-utils/ngx-utils.module.d.ts +76 -76
- package/ngx-utils/pipes/chunk.pipe.d.ts +4 -4
- package/ngx-utils/pipes/entries.pipe.d.ts +9 -9
- package/ngx-utils/pipes/extra-item-properties.pipe.d.ts +5 -5
- package/ngx-utils/pipes/filter.pipe.d.ts +5 -5
- package/ngx-utils/pipes/find.pipe.d.ts +5 -5
- package/ngx-utils/pipes/format-number.pipe.d.ts +7 -7
- package/ngx-utils/pipes/get-offset.pipe.d.ts +4 -4
- package/ngx-utils/pipes/get-type.pipe.d.ts +4 -4
- package/ngx-utils/pipes/global-template.pipe.d.ts +13 -13
- package/ngx-utils/pipes/group-by.pipe.d.ts +5 -5
- package/ngx-utils/pipes/is-type.pipe.d.ts +4 -4
- package/ngx-utils/pipes/join.pipe.d.ts +4 -4
- package/ngx-utils/pipes/keys.pipe.d.ts +4 -4
- package/ngx-utils/pipes/map.pipe.d.ts +5 -5
- package/ngx-utils/pipes/max.pipe.d.ts +4 -4
- package/ngx-utils/pipes/min.pipe.d.ts +4 -4
- package/ngx-utils/pipes/reduce.pipe.d.ts +5 -5
- package/ngx-utils/pipes/remap.pipe.d.ts +4 -4
- package/ngx-utils/pipes/replace.pipe.d.ts +4 -4
- package/ngx-utils/pipes/reverse.pipe.d.ts +4 -4
- package/ngx-utils/pipes/round.pipe.d.ts +7 -7
- package/ngx-utils/pipes/safe-html.pipe.d.ts +7 -7
- package/ngx-utils/pipes/translate.pipe.d.ts +15 -15
- package/ngx-utils/pipes/values.pipe.d.ts +4 -4
- package/ngx-utils/plugins/resize-event.plugin.d.ts +10 -10
- package/ngx-utils/plugins/scroll-event.plugin.d.ts +11 -11
- package/ngx-utils/services/acl.service.d.ts +12 -12
- package/ngx-utils/services/api.service.d.ts +14 -14
- package/ngx-utils/services/auth.service.d.ts +8 -8
- package/ngx-utils/services/base-http.client.d.ts +12 -12
- package/ngx-utils/services/base-http.service.d.ts +42 -42
- package/ngx-utils/services/config.service.d.ts +21 -21
- package/ngx-utils/services/error-handler.service.d.ts +10 -10
- package/ngx-utils/services/events.service.d.ts +11 -11
- package/ngx-utils/services/formatter.service.d.ts +12 -12
- package/ngx-utils/services/global-template.service.d.ts +16 -16
- package/ngx-utils/services/icon.service.d.ts +10 -10
- package/ngx-utils/services/language.service.d.ts +18 -18
- package/ngx-utils/services/open-api.service.d.ts +8 -8
- package/ngx-utils/services/promise.service.d.ts +15 -15
- package/ngx-utils/services/state.service.d.ts +41 -41
- package/ngx-utils/services/static-language.service.d.ts +41 -41
- package/ngx-utils/services/storage.service.d.ts +12 -12
- package/ngx-utils/services/toaster.service.d.ts +10 -10
- package/ngx-utils/services/translated-url.serializer.d.ts +16 -16
- package/ngx-utils/services/universal.service.d.ts +24 -24
- package/ngx-utils/utils/ajax-request-handler.d.ts +11 -11
- package/ngx-utils/utils/array.utils.d.ts +10 -9
- package/ngx-utils/utils/auth.guard.d.ts +26 -26
- package/ngx-utils/utils/canvas.utils.d.ts +13 -13
- package/ngx-utils/utils/date.utils.d.ts +8 -8
- package/ngx-utils/utils/file.utils.d.ts +14 -14
- package/ngx-utils/utils/generic-value.d.ts +8 -8
- package/ngx-utils/utils/geometry.d.ts +50 -50
- package/ngx-utils/utils/initializer.d.ts +11 -11
- package/ngx-utils/utils/loader.utils.d.ts +7 -7
- package/ngx-utils/utils/math.utils.d.ts +5 -5
- package/ngx-utils/utils/object.utils.d.ts +31 -31
- package/ngx-utils/utils/observable.utils.d.ts +12 -12
- package/ngx-utils/utils/reflect.utils.d.ts +9 -9
- package/ngx-utils/utils/set.utils.d.ts +4 -4
- package/ngx-utils/utils/string.utils.d.ts +7 -7
- package/ngx-utils/utils/timer.utils.d.ts +6 -6
- package/ngx-utils/utils/unique.utils.d.ts +5 -5
- package/ngx-utils/utils/vector.d.ts +23 -23
- package/package.json +1 -1
- package/public_api.d.ts +82 -82
- package/stemy-ngx-utils.d.ts +6 -6
- package/stemy-ngx-utils.metadata.json +1 -1
- package/tools/circular.js +116 -116
- package/tools/config.js +78 -78
- package/tools/icons.js +13 -13
|
@@ -1,95 +1,95 @@
|
|
|
1
|
-
import { Inject, Injectable, Optional } from "@angular/core";
|
|
2
|
-
import { HttpClient } from "@angular/common/http";
|
|
3
|
-
import { UniversalService } from "./universal.service";
|
|
4
|
-
import { BASE_CONFIG, IConfiguration, SCRIPT_PARAMS } from "../common-types";
|
|
5
|
-
export class ConfigService {
|
|
6
|
-
constructor(http, universal, baseConfig = null, scriptParams = null) {
|
|
7
|
-
this.http = http;
|
|
8
|
-
this.universal = universal;
|
|
9
|
-
for (const key in []) {
|
|
10
|
-
Object.defineProperty(Array.prototype, key, {
|
|
11
|
-
enumerable: false
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
let baseUrl = "";
|
|
15
|
-
if (this.universal.isBrowser) {
|
|
16
|
-
const currentScript = document.currentScript;
|
|
17
|
-
if (!!currentScript) {
|
|
18
|
-
const scriptSrc = currentScript.src;
|
|
19
|
-
const srcParts = scriptSrc.split(".js");
|
|
20
|
-
baseUrl = scriptSrc.substr(0, srcParts[0].lastIndexOf("/") + 1);
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
this.loadedConfig = Object.assign(!baseUrl ? {} : { baseUrl }, baseConfig || {});
|
|
24
|
-
this.scriptParameters = scriptParams || {};
|
|
25
|
-
this.loaderFunc = () => {
|
|
26
|
-
this.loader = this.loader || new Promise((resolve, reject) => {
|
|
27
|
-
this.loadJson().then(config => {
|
|
28
|
-
this.loadedConfig = config = Object.assign(this.loadedConfig, config);
|
|
29
|
-
this.prepareConfig(config).then(c => {
|
|
30
|
-
c.baseUrl = c.baseUrl || "/";
|
|
31
|
-
resolve(c);
|
|
32
|
-
});
|
|
33
|
-
}, reject);
|
|
34
|
-
});
|
|
35
|
-
return this.loader;
|
|
36
|
-
};
|
|
37
|
-
this.initService();
|
|
38
|
-
}
|
|
39
|
-
get load() {
|
|
40
|
-
return this.loaderFunc;
|
|
41
|
-
}
|
|
42
|
-
get config() {
|
|
43
|
-
return this.loadedConfig;
|
|
44
|
-
}
|
|
45
|
-
get configUrl() {
|
|
46
|
-
return `${this.loadedConfig.baseUrl}config/config.json`;
|
|
47
|
-
}
|
|
48
|
-
initService() {
|
|
49
|
-
}
|
|
50
|
-
loadJson() {
|
|
51
|
-
if (this.universal.isServer) {
|
|
52
|
-
return Promise.resolve(this.loadedConfig);
|
|
53
|
-
}
|
|
54
|
-
const configUrl = this.configUrl;
|
|
55
|
-
return new Promise((resolve, reject) => {
|
|
56
|
-
this.http.get(configUrl).toPromise().then(response => {
|
|
57
|
-
resolve(response);
|
|
58
|
-
}, () => {
|
|
59
|
-
reject("Config file not found at: " + configUrl);
|
|
60
|
-
});
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
prepareConfig(config) {
|
|
64
|
-
return Promise.resolve(config);
|
|
65
|
-
}
|
|
66
|
-
prepareUrl(url, ending) {
|
|
67
|
-
const project = !this.loadedConfig ? "" : this.loadedConfig.project;
|
|
68
|
-
url = url ? `${url.replace(/\/+$/, "")}${ending}` : ending;
|
|
69
|
-
url = url.replace("[project]", project);
|
|
70
|
-
return this.universal.isServer && url.startsWith("//") ? `http:${url}` : url;
|
|
71
|
-
}
|
|
72
|
-
getConfigValue(key) {
|
|
73
|
-
return this.loadedConfig[key];
|
|
74
|
-
}
|
|
75
|
-
getQueryParameter(name, url) {
|
|
76
|
-
url = url || (this.universal.isServer ? "" : window.location.href);
|
|
77
|
-
name = name.replace(/[\[\]]/g, "\\$&");
|
|
78
|
-
const regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url);
|
|
79
|
-
if (!results)
|
|
80
|
-
return null;
|
|
81
|
-
if (!results[2])
|
|
82
|
-
return "";
|
|
83
|
-
return decodeURIComponent(results[2].replace(/\+/g, " "));
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
ConfigService.decorators = [
|
|
87
|
-
{ type: Injectable }
|
|
88
|
-
];
|
|
89
|
-
ConfigService.ctorParameters = () => [
|
|
90
|
-
{ type: HttpClient },
|
|
91
|
-
{ type: UniversalService },
|
|
92
|
-
{ type: IConfiguration, decorators: [{ type: Optional }, { type: Inject, args: [BASE_CONFIG,] }] },
|
|
93
|
-
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [SCRIPT_PARAMS,] }] }
|
|
94
|
-
];
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiL2hvbWUvc3RlbXkvV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLFdBQVcsRUFBa0IsY0FBYyxFQUFFLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRzNGLE1BQU0sT0FBTyxhQUFhO0lBbUJ0QixZQUFxQixJQUFnQixFQUNoQixTQUEyQixFQUNILGFBQTZCLElBQUksRUFDL0IsZUFBb0IsSUFBSTtRQUhsRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBRzVDLEtBQUssTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQ3hDLFVBQVUsRUFBRSxLQUFLO2FBQ3BCLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFDMUIsTUFBTSxhQUFhLEdBQUksUUFBUSxDQUFDLGFBQW1DLENBQUM7WUFDcEUsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFO2dCQUNqQixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO2dCQUNwQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxPQUFP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bkdKLFVBQVU7OztZQUpILFVBQVU7WUFDVixnQkFBZ0I7WUFDYSxjQUFjLHVCQXdCbEMsUUFBUSxZQUFJLE1BQU0sU0FBQyxXQUFXOzRDQUM5QixRQUFRLFlBQUksTUFBTSxTQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQge0h0dHBDbGllbnR9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi91bml2ZXJzYWwuc2VydmljZVwiO1xuaW1wb3J0IHtCQVNFX0NPTkZJRywgSUNvbmZpZ1NlcnZpY2UsIElDb25maWd1cmF0aW9uLCBTQ1JJUFRfUEFSQU1TfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlIGltcGxlbWVudHMgSUNvbmZpZ1NlcnZpY2Uge1xuXG4gICAgcHJvdGVjdGVkIGxvYWRlZENvbmZpZzogSUNvbmZpZ3VyYXRpb247XG4gICAgcHJvdGVjdGVkIHNjcmlwdFBhcmFtZXRlcnM6IGFueTtcbiAgICBwcm90ZWN0ZWQgbG9hZGVyOiBQcm9taXNlPElDb25maWd1cmF0aW9uPjtcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGVyRnVuYzogKCkgPT4gUHJvbWlzZTxJQ29uZmlndXJhdGlvbj47XG5cbiAgICBnZXQgbG9hZCgpOiAoKSA9PiBQcm9taXNlPElDb25maWd1cmF0aW9uPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlckZ1bmM7XG4gICAgfVxuXG4gICAgZ2V0IGNvbmZpZygpOiBJQ29uZmlndXJhdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlZENvbmZpZztcbiAgICB9XG5cbiAgICBnZXQgY29uZmlnVXJsKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmxvYWRlZENvbmZpZy5iYXNlVXJsfWNvbmZpZy9jb25maWcuanNvbmA7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICAgICAgICAgICAgICByZWFkb25seSB1bml2ZXJzYWw6IFVuaXZlcnNhbFNlcnZpY2UsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChCQVNFX0NPTkZJRykgYmFzZUNvbmZpZzogSUNvbmZpZ3VyYXRpb24gPSBudWxsLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoU0NSSVBUX1BBUkFNUykgc2NyaXB0UGFyYW1zOiBhbnkgPSBudWxsKSB7XG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIFtdKSB7XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCBrZXksIHtcbiAgICAgICAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IGJhc2VVcmwgPSBcIlwiO1xuICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNCcm93c2VyKSB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2NyaXB0ID0gKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgYXMgSFRNTFNjcmlwdEVsZW1lbnQpO1xuICAgICAgICAgICAgaWYgKCEhY3VycmVudFNjcmlwdCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcmlwdFNyYyA9IGN1cnJlbnRTY3JpcHQuc3JjO1xuICAgICAgICAgICAgICAgIGNvbnN0IHNyY1BhcnRzID0gc2NyaXB0U3JjLnNwbGl0KFwiLmpzXCIpO1xuICAgICAgICAgICAgICAgIGJhc2VVcmwgPSBzY3JpcHRTcmMuc3Vic3RyKDAsIHNyY1BhcnRzWzBdLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMubG9hZGVkQ29uZmlnID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgICFiYXNlVXJsID8ge30gOiB7YmFzZVVybH0sXG4gICAgICAgICAgICBiYXNlQ29uZmlnIHx8IHt9XG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2NyaXB0UGFyYW1ldGVycyA9IHNjcmlwdFBhcmFtcyB8fCB7fTtcbiAgICAgICAgdGhpcy5sb2FkZXJGdW5jID0gKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSB0aGlzLmxvYWRlciB8fCBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmxvYWRKc29uKCkudGhlbihjb25maWcgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZENvbmZpZyA9IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5sb2FkZWRDb25maWcsIGNvbmZpZyk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZUNvbmZpZyhjb25maWcpLnRoZW4oYyA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjLmJhc2VVcmwgPSBjLmJhc2VVcmwgfHwgXCIvXCI7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGMpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9LCByZWplY3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXI7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuaW5pdFNlcnZpY2UoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaW5pdFNlcnZpY2UoKTogdm9pZCB7XG5cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgbG9hZEpzb24oKTogUHJvbWlzZTxJQ29uZmlndXJhdGlvbj4ge1xuICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5sb2FkZWRDb25maWcpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbmZpZ1VybCA9IHRoaXMuY29uZmlnVXJsO1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmh0dHAuZ2V0KGNvbmZpZ1VybCkudG9Qcm9taXNlKCkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShyZXNwb25zZSk7XG4gICAgICAgICAgICB9LCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcmVqZWN0KFwiQ29uZmlnIGZpbGUgbm90IGZvdW5kIGF0OiBcIiArIGNvbmZpZ1VybCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHByZXBhcmVDb25maWcoY29uZmlnOiBJQ29uZmlndXJhdGlvbik6IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShjb25maWcpO1xuICAgIH1cblxuICAgIHByZXBhcmVVcmwodXJsOiBzdHJpbmcsIGVuZGluZzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgcHJvamVjdCA9ICF0aGlzLmxvYWRlZENvbmZpZyA/IFwiXCIgOiB0aGlzLmxvYWRlZENvbmZpZy5wcm9qZWN0O1xuICAgICAgICB1cmwgPSB1cmwgPyBgJHt1cmwucmVwbGFjZSgvXFwvKyQvLCBcIlwiKX0ke2VuZGluZ31gIDogZW5kaW5nO1xuICAgICAgICB1cmwgPSB1cmwucmVwbGFjZShcIltwcm9qZWN0XVwiLCBwcm9qZWN0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMudW5pdmVyc2FsLmlzU2VydmVyICYmIHVybC5zdGFydHNXaXRoKFwiLy9cIikgPyBgaHR0cDoke3VybH1gIDogdXJsO1xuICAgIH1cblxuICAgIGdldENvbmZpZ1ZhbHVlKGtleTogc3RyaW5nKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVkQ29uZmlnW2tleV07XG4gICAgfVxuXG4gICAgZ2V0UXVlcnlQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICB1cmwgPSB1cmwgfHwgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyID8gXCJcIiA6IHdpbmRvdy5sb2NhdGlvbi5ocmVmKTtcbiAgICAgICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvW1xcW1xcXV0vZywgXCJcXFxcJCZcIik7XG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChcIls/Jl1cIiArIG5hbWUgKyBcIig9KFteJiNdKil8JnwjfCQpXCIpLFxuICAgICAgICAgICAgcmVzdWx0cyA9IHJlZ2V4LmV4ZWModXJsKTtcbiAgICAgICAgaWYgKCFyZXN1bHRzKSByZXR1cm4gbnVsbDtcbiAgICAgICAgaWYgKCFyZXN1bHRzWzJdKSByZXR1cm4gXCJcIjtcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCBcIiBcIikpO1xuICAgIH1cbn1cbiJdfQ==
|
|
1
|
+
import { Inject, Injectable, Optional } from "@angular/core";
|
|
2
|
+
import { HttpClient } from "@angular/common/http";
|
|
3
|
+
import { UniversalService } from "./universal.service";
|
|
4
|
+
import { BASE_CONFIG, IConfiguration, SCRIPT_PARAMS } from "../common-types";
|
|
5
|
+
export class ConfigService {
|
|
6
|
+
constructor(http, universal, baseConfig = null, scriptParams = null) {
|
|
7
|
+
this.http = http;
|
|
8
|
+
this.universal = universal;
|
|
9
|
+
for (const key in []) {
|
|
10
|
+
Object.defineProperty(Array.prototype, key, {
|
|
11
|
+
enumerable: false
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
let baseUrl = "";
|
|
15
|
+
if (this.universal.isBrowser) {
|
|
16
|
+
const currentScript = document.currentScript;
|
|
17
|
+
if (!!currentScript) {
|
|
18
|
+
const scriptSrc = currentScript.src;
|
|
19
|
+
const srcParts = scriptSrc.split(".js");
|
|
20
|
+
baseUrl = scriptSrc.substr(0, srcParts[0].lastIndexOf("/") + 1);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
this.loadedConfig = Object.assign(!baseUrl ? {} : { baseUrl }, baseConfig || {});
|
|
24
|
+
this.scriptParameters = scriptParams || {};
|
|
25
|
+
this.loaderFunc = () => {
|
|
26
|
+
this.loader = this.loader || new Promise((resolve, reject) => {
|
|
27
|
+
this.loadJson().then(config => {
|
|
28
|
+
this.loadedConfig = config = Object.assign(this.loadedConfig, config);
|
|
29
|
+
this.prepareConfig(config).then(c => {
|
|
30
|
+
c.baseUrl = c.baseUrl || "/";
|
|
31
|
+
resolve(c);
|
|
32
|
+
});
|
|
33
|
+
}, reject);
|
|
34
|
+
});
|
|
35
|
+
return this.loader;
|
|
36
|
+
};
|
|
37
|
+
this.initService();
|
|
38
|
+
}
|
|
39
|
+
get load() {
|
|
40
|
+
return this.loaderFunc;
|
|
41
|
+
}
|
|
42
|
+
get config() {
|
|
43
|
+
return this.loadedConfig;
|
|
44
|
+
}
|
|
45
|
+
get configUrl() {
|
|
46
|
+
return `${this.loadedConfig.baseUrl}config/config.json`;
|
|
47
|
+
}
|
|
48
|
+
initService() {
|
|
49
|
+
}
|
|
50
|
+
loadJson() {
|
|
51
|
+
if (this.universal.isServer) {
|
|
52
|
+
return Promise.resolve(this.loadedConfig);
|
|
53
|
+
}
|
|
54
|
+
const configUrl = this.configUrl;
|
|
55
|
+
return new Promise((resolve, reject) => {
|
|
56
|
+
this.http.get(configUrl).toPromise().then(response => {
|
|
57
|
+
resolve(response);
|
|
58
|
+
}, () => {
|
|
59
|
+
reject("Config file not found at: " + configUrl);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
prepareConfig(config) {
|
|
64
|
+
return Promise.resolve(config);
|
|
65
|
+
}
|
|
66
|
+
prepareUrl(url, ending) {
|
|
67
|
+
const project = !this.loadedConfig ? "" : this.loadedConfig.project;
|
|
68
|
+
url = url ? `${url.replace(/\/+$/, "")}${ending}` : ending;
|
|
69
|
+
url = url.replace("[project]", project);
|
|
70
|
+
return this.universal.isServer && url.startsWith("//") ? `http:${url}` : url;
|
|
71
|
+
}
|
|
72
|
+
getConfigValue(key) {
|
|
73
|
+
return this.loadedConfig[key];
|
|
74
|
+
}
|
|
75
|
+
getQueryParameter(name, url) {
|
|
76
|
+
url = url || (this.universal.isServer ? "" : window.location.href);
|
|
77
|
+
name = name.replace(/[\[\]]/g, "\\$&");
|
|
78
|
+
const regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url);
|
|
79
|
+
if (!results)
|
|
80
|
+
return null;
|
|
81
|
+
if (!results[2])
|
|
82
|
+
return "";
|
|
83
|
+
return decodeURIComponent(results[2].replace(/\+/g, " "));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
ConfigService.decorators = [
|
|
87
|
+
{ type: Injectable }
|
|
88
|
+
];
|
|
89
|
+
ConfigService.ctorParameters = () => [
|
|
90
|
+
{ type: HttpClient },
|
|
91
|
+
{ type: UniversalService },
|
|
92
|
+
{ type: IConfiguration, decorators: [{ type: Optional }, { type: Inject, args: [BASE_CONFIG,] }] },
|
|
93
|
+
{ type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [SCRIPT_PARAMS,] }] }
|
|
94
|
+
];
|
|
95
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiRDovV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDaEQsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFDLFdBQVcsRUFBa0IsY0FBYyxFQUFFLGFBQWEsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRzNGLE1BQU0sT0FBTyxhQUFhO0lBbUJ0QixZQUFxQixJQUFnQixFQUNoQixTQUEyQixFQUNILGFBQTZCLElBQUksRUFDL0IsZUFBb0IsSUFBSTtRQUhsRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBRzVDLEtBQUssTUFBTSxHQUFHLElBQUksRUFBRSxFQUFFO1lBQ2xCLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUU7Z0JBQ3hDLFVBQVUsRUFBRSxLQUFLO2FBQ3BCLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEVBQUU7WUFDMUIsTUFBTSxhQUFhLEdBQUksUUFBUSxDQUFDLGFBQW1DLENBQUM7WUFDcEUsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFO2dCQUNqQixNQUFNLFNBQVMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO2dCQUNwQyxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN4QyxPQUFPLEdBQUcsU0FB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OztZQUpILFVBQVU7WUFDVixnQkFBZ0I7WUFDYSxjQUFjLHVCQXdCbEMsUUFBUSxZQUFJLE1BQU0sU0FBQyxXQUFXOzRDQUM5QixRQUFRLFlBQUksTUFBTSxTQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdCwgSW5qZWN0YWJsZSwgT3B0aW9uYWx9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4vdW5pdmVyc2FsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCQVNFX0NPTkZJRywgSUNvbmZpZ1NlcnZpY2UsIElDb25maWd1cmF0aW9uLCBTQ1JJUFRfUEFSQU1TfSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBDb25maWdTZXJ2aWNlIGltcGxlbWVudHMgSUNvbmZpZ1NlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCBsb2FkZWRDb25maWc6IElDb25maWd1cmF0aW9uO1xyXG4gICAgcHJvdGVjdGVkIHNjcmlwdFBhcmFtZXRlcnM6IGFueTtcclxuICAgIHByb3RlY3RlZCBsb2FkZXI6IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+O1xyXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRlckZ1bmM6ICgpID0+IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+O1xyXG5cclxuICAgIGdldCBsb2FkKCk6ICgpID0+IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZXJGdW5jO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBjb25maWcoKTogSUNvbmZpZ3VyYXRpb24ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRlZENvbmZpZztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29uZmlnVXJsKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIGAke3RoaXMubG9hZGVkQ29uZmlnLmJhc2VVcmx9Y29uZmlnL2NvbmZpZy5qc29uYDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihyZWFkb25seSBodHRwOiBIdHRwQ2xpZW50LFxyXG4gICAgICAgICAgICAgICAgcmVhZG9ubHkgdW5pdmVyc2FsOiBVbml2ZXJzYWxTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChCQVNFX0NPTkZJRykgYmFzZUNvbmZpZzogSUNvbmZpZ3VyYXRpb24gPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChTQ1JJUFRfUEFSQU1TKSBzY3JpcHRQYXJhbXM6IGFueSA9IG51bGwpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBbXSkge1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCBrZXksIHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYmFzZVVybCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzQnJvd3Nlcikge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2NyaXB0ID0gKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgYXMgSFRNTFNjcmlwdEVsZW1lbnQpO1xyXG4gICAgICAgICAgICBpZiAoISFjdXJyZW50U2NyaXB0KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzY3JpcHRTcmMgPSBjdXJyZW50U2NyaXB0LnNyYztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNyY1BhcnRzID0gc2NyaXB0U3JjLnNwbGl0KFwiLmpzXCIpO1xyXG4gICAgICAgICAgICAgICAgYmFzZVVybCA9IHNjcmlwdFNyYy5zdWJzdHIoMCwgc3JjUGFydHNbMF0ubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5sb2FkZWRDb25maWcgPSBPYmplY3QuYXNzaWduKFxyXG4gICAgICAgICAgICAhYmFzZVVybCA/IHt9IDoge2Jhc2VVcmx9LFxyXG4gICAgICAgICAgICBiYXNlQ29uZmlnIHx8IHt9XHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNjcmlwdFBhcmFtZXRlcnMgPSBzY3JpcHRQYXJhbXMgfHwge307XHJcbiAgICAgICAgdGhpcy5sb2FkZXJGdW5jID0gKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRlciA9IHRoaXMubG9hZGVyIHx8IG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkSnNvbigpLnRoZW4oY29uZmlnID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmxvYWRlZENvbmZpZyA9IGNvbmZpZyA9IE9iamVjdC5hc3NpZ24odGhpcy5sb2FkZWRDb25maWcsIGNvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcmVwYXJlQ29uZmlnKGNvbmZpZykudGhlbihjID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYy5iYXNlVXJsID0gYy5iYXNlVXJsIHx8IFwiL1wiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSwgcmVqZWN0KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRlcjtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuaW5pdFNlcnZpY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgaW5pdFNlcnZpY2UoKTogdm9pZCB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBsb2FkSnNvbigpOiBQcm9taXNlPElDb25maWd1cmF0aW9uPiB7XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5sb2FkZWRDb25maWcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb25maWdVcmwgPSB0aGlzLmNvbmZpZ1VybDtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaHR0cC5nZXQoY29uZmlnVXJsKS50b1Byb21pc2UoKS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUocmVzcG9uc2UpO1xyXG4gICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QoXCJDb25maWcgZmlsZSBub3QgZm91bmQgYXQ6IFwiICsgY29uZmlnVXJsKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHByZXBhcmVDb25maWcoY29uZmlnOiBJQ29uZmlndXJhdGlvbik6IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlcGFyZVVybCh1cmw6IHN0cmluZywgZW5kaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHByb2plY3QgPSAhdGhpcy5sb2FkZWRDb25maWcgPyBcIlwiIDogdGhpcy5sb2FkZWRDb25maWcucHJvamVjdDtcclxuICAgICAgICB1cmwgPSB1cmwgPyBgJHt1cmwucmVwbGFjZSgvXFwvKyQvLCBcIlwiKX0ke2VuZGluZ31gIDogZW5kaW5nO1xyXG4gICAgICAgIHVybCA9IHVybC5yZXBsYWNlKFwiW3Byb2plY3RdXCIsIHByb2plY3QpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVuaXZlcnNhbC5pc1NlcnZlciAmJiB1cmwuc3RhcnRzV2l0aChcIi8vXCIpID8gYGh0dHA6JHt1cmx9YCA6IHVybDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDb25maWdWYWx1ZShrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVkQ29uZmlnW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UXVlcnlQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHVybCA9IHVybCB8fCAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIgPyBcIlwiIDogd2luZG93LmxvY2F0aW9uLmhyZWYpO1xyXG4gICAgICAgIG5hbWUgPSBuYW1lLnJlcGxhY2UoL1tcXFtcXF1dL2csIFwiXFxcXCQmXCIpO1xyXG4gICAgICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChcIls/Jl1cIiArIG5hbWUgKyBcIig9KFteJiNdKil8JnwjfCQpXCIpLFxyXG4gICAgICAgICAgICByZXN1bHRzID0gcmVnZXguZXhlYyh1cmwpO1xyXG4gICAgICAgIGlmICghcmVzdWx0cykgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgaWYgKCFyZXN1bHRzWzJdKSByZXR1cm4gXCJcIjtcclxuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHJlc3VsdHNbMl0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
import { ErrorHandler, Injectable, Injector } from "@angular/core";
|
|
2
|
-
import { UniversalService } from "./universal.service";
|
|
3
|
-
import { ERROR_HANDLER, TOASTER_SERVICE } from "../common-types";
|
|
4
|
-
export class ErrorHandlerService extends ErrorHandler {
|
|
5
|
-
constructor(injector) {
|
|
6
|
-
super();
|
|
7
|
-
this.injector = injector;
|
|
8
|
-
this.errorMap = {};
|
|
9
|
-
}
|
|
10
|
-
handleError(error) {
|
|
11
|
-
try {
|
|
12
|
-
this.universal = this.universal || this.injector.get(UniversalService);
|
|
13
|
-
}
|
|
14
|
-
catch (e) {
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
const date = new Date();
|
|
18
|
-
try {
|
|
19
|
-
this.errorCb = this.errorCb || this.injector.get(ERROR_HANDLER);
|
|
20
|
-
this.errorCb(`[${date}]: ${error.message}\n${error.stack}`);
|
|
21
|
-
}
|
|
22
|
-
catch (e) {
|
|
23
|
-
if (this.universal.isServer) {
|
|
24
|
-
console.error(`[${date}]: ${error.message}\n${error.stack}`);
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
if (this.universal.isServer)
|
|
29
|
-
return;
|
|
30
|
-
const key = btoa(unescape(encodeURIComponent(`${error.message} ${error.stack}`)));
|
|
31
|
-
if (this.errorMap[key] && this.errorMap[key].getTime() > date.getTime() - 5000)
|
|
32
|
-
return;
|
|
33
|
-
this.errorMap[key] = date;
|
|
34
|
-
try {
|
|
35
|
-
this.toaster = this.toaster || this.injector.get(TOASTER_SERVICE);
|
|
36
|
-
this.toaster.error(`[${date}]: ${error.message}\n${error.stack}`);
|
|
37
|
-
}
|
|
38
|
-
catch (e) {
|
|
39
|
-
}
|
|
40
|
-
console.error(`[${date}]: ${error.message}\n${error.stack}`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
ErrorHandlerService.decorators = [
|
|
44
|
-
{ type: Injectable }
|
|
45
|
-
];
|
|
46
|
-
ErrorHandlerService.ctorParameters = () => [
|
|
47
|
-
{ type: Injector }
|
|
48
|
-
];
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { ErrorHandler, Injectable, Injector } from "@angular/core";
|
|
2
|
+
import { UniversalService } from "./universal.service";
|
|
3
|
+
import { ERROR_HANDLER, TOASTER_SERVICE } from "../common-types";
|
|
4
|
+
export class ErrorHandlerService extends ErrorHandler {
|
|
5
|
+
constructor(injector) {
|
|
6
|
+
super();
|
|
7
|
+
this.injector = injector;
|
|
8
|
+
this.errorMap = {};
|
|
9
|
+
}
|
|
10
|
+
handleError(error) {
|
|
11
|
+
try {
|
|
12
|
+
this.universal = this.universal || this.injector.get(UniversalService);
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
const date = new Date();
|
|
18
|
+
try {
|
|
19
|
+
this.errorCb = this.errorCb || this.injector.get(ERROR_HANDLER);
|
|
20
|
+
this.errorCb(`[${date}]: ${error.message}\n${error.stack}`);
|
|
21
|
+
}
|
|
22
|
+
catch (e) {
|
|
23
|
+
if (this.universal.isServer) {
|
|
24
|
+
console.error(`[${date}]: ${error.message}\n${error.stack}`);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
if (this.universal.isServer)
|
|
29
|
+
return;
|
|
30
|
+
const key = btoa(unescape(encodeURIComponent(`${error.message} ${error.stack}`)));
|
|
31
|
+
if (this.errorMap[key] && this.errorMap[key].getTime() > date.getTime() - 5000)
|
|
32
|
+
return;
|
|
33
|
+
this.errorMap[key] = date;
|
|
34
|
+
try {
|
|
35
|
+
this.toaster = this.toaster || this.injector.get(TOASTER_SERVICE);
|
|
36
|
+
this.toaster.error(`[${date}]: ${error.message}\n${error.stack}`);
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
}
|
|
40
|
+
console.error(`[${date}]: ${error.message}\n${error.stack}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
ErrorHandlerService.decorators = [
|
|
44
|
+
{ type: Injectable }
|
|
45
|
+
];
|
|
46
|
+
ErrorHandlerService.ctorParameters = () => [
|
|
47
|
+
{ type: Injector }
|
|
48
|
+
];
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IkQ6L1dvcmsvbmd4LXV0aWxzL3NyYy8iLCJzb3VyY2VzIjpbIm5neC11dGlscy9zZXJ2aWNlcy9lcnJvci1oYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQXlDLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBR3RHLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxZQUFZO0lBT2pELFlBQXFCLFFBQWtCO1FBQ25DLEtBQUssRUFBRSxDQUFDO1FBRFMsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUVuQyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQVk7UUFDcEIsSUFBSTtZQUNBLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzFFO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPO1NBQ1Y7UUFDRCxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUk7WUFDQSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFO2dCQUN6QixPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksSUFBSSxNQUFNLEtBQUssQ0FBQyxPQUFPLEtBQUssS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBQzdELE9BQU87YUFDVjtTQUNKO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVE7WUFBRSxPQUFPO1FBQ3BDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSTtZQUFFLE9BQU87UUFDdkYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSTtZQUNBLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3JFO1FBQUMsT0FBTyxDQUFDLEVBQUU7U0FDWDtRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLE1BQU0sS0FBSyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOzs7WUF2Q0osVUFBVTs7O1lBSnVCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0Vycm9ySGFuZGxlciwgSW5qZWN0YWJsZSwgSW5qZWN0b3J9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4vdW5pdmVyc2FsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtFUlJPUl9IQU5ETEVSLCBFcnJvckhhbmRsZXJDYWxsYmFjaywgSVRvYXN0ZXJTZXJ2aWNlLCBUT0FTVEVSX1NFUlZJQ0V9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEVycm9ySGFuZGxlclNlcnZpY2UgZXh0ZW5kcyBFcnJvckhhbmRsZXIge1xyXG5cclxuICAgIHByaXZhdGUgdG9hc3RlcjogSVRvYXN0ZXJTZXJ2aWNlO1xyXG4gICAgcHJpdmF0ZSB1bml2ZXJzYWw6IFVuaXZlcnNhbFNlcnZpY2U7XHJcbiAgICBwcml2YXRlIGVycm9yQ2I6IEVycm9ySGFuZGxlckNhbGxiYWNrO1xyXG4gICAgcHJpdmF0ZSByZWFkb25seSBlcnJvck1hcDogYW55O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5lcnJvck1hcCA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGhhbmRsZUVycm9yKGVycm9yOiBFcnJvcik6IHZvaWQge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMudW5pdmVyc2FsID0gdGhpcy51bml2ZXJzYWwgfHwgdGhpcy5pbmplY3Rvci5nZXQoVW5pdmVyc2FsU2VydmljZSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMuZXJyb3JDYiA9IHRoaXMuZXJyb3JDYiB8fCB0aGlzLmluamVjdG9yLmdldChFUlJPUl9IQU5ETEVSKTtcclxuICAgICAgICAgICAgdGhpcy5lcnJvckNiKGBbJHtkYXRlfV06ICR7ZXJyb3IubWVzc2FnZX1cXG4ke2Vycm9yLnN0YWNrfWApO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGBbJHtkYXRlfV06ICR7ZXJyb3IubWVzc2FnZX1cXG4ke2Vycm9yLnN0YWNrfWApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IGtleSA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KGAke2Vycm9yLm1lc3NhZ2V9ICR7ZXJyb3Iuc3RhY2t9YCkpKTtcclxuICAgICAgICBpZiAodGhpcy5lcnJvck1hcFtrZXldICYmIHRoaXMuZXJyb3JNYXBba2V5XS5nZXRUaW1lKCkgPiBkYXRlLmdldFRpbWUoKSAtIDUwMDApIHJldHVybjtcclxuICAgICAgICB0aGlzLmVycm9yTWFwW2tleV0gPSBkYXRlO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RlciA9IHRoaXMudG9hc3RlciB8fCB0aGlzLmluamVjdG9yLmdldChUT0FTVEVSX1NFUlZJQ0UpO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ZXIuZXJyb3IoYFske2RhdGV9XTogJHtlcnJvci5tZXNzYWdlfVxcbiR7ZXJyb3Iuc3RhY2t9YCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zb2xlLmVycm9yKGBbJHtkYXRlfV06ICR7ZXJyb3IubWVzc2FnZX1cXG4ke2Vycm9yLnN0YWNrfWApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { EventEmitter, Injectable } from "@angular/core";
|
|
2
|
-
export class EventsService {
|
|
3
|
-
constructor() {
|
|
4
|
-
this.eventForwarded = new EventEmitter();
|
|
5
|
-
this.stickyUpdated = new EventEmitter();
|
|
6
|
-
this.languageChanged = new EventEmitter();
|
|
7
|
-
this.sticky = false;
|
|
8
|
-
}
|
|
9
|
-
get isSticky() {
|
|
10
|
-
return this.sticky;
|
|
11
|
-
}
|
|
12
|
-
event(e) {
|
|
13
|
-
this.eventForwarded.emit(e);
|
|
14
|
-
}
|
|
15
|
-
updateSticky(sticky) {
|
|
16
|
-
this.sticky = sticky;
|
|
17
|
-
this.stickyUpdated.emit(sticky);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
EventsService.decorators = [
|
|
21
|
-
{ type: Injectable }
|
|
22
|
-
];
|
|
23
|
-
EventsService.ctorParameters = () => [];
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { EventEmitter, Injectable } from "@angular/core";
|
|
2
|
+
export class EventsService {
|
|
3
|
+
constructor() {
|
|
4
|
+
this.eventForwarded = new EventEmitter();
|
|
5
|
+
this.stickyUpdated = new EventEmitter();
|
|
6
|
+
this.languageChanged = new EventEmitter();
|
|
7
|
+
this.sticky = false;
|
|
8
|
+
}
|
|
9
|
+
get isSticky() {
|
|
10
|
+
return this.sticky;
|
|
11
|
+
}
|
|
12
|
+
event(e) {
|
|
13
|
+
this.eventForwarded.emit(e);
|
|
14
|
+
}
|
|
15
|
+
updateSticky(sticky) {
|
|
16
|
+
this.sticky = sticky;
|
|
17
|
+
this.stickyUpdated.emit(sticky);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
EventsService.decorators = [
|
|
21
|
+
{ type: Injectable }
|
|
22
|
+
];
|
|
23
|
+
EventsService.ctorParameters = () => [];
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiRDovV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBR3ZELE1BQU0sT0FBTyxhQUFhO0lBWXRCO1FBQ0ksSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBUyxDQUFDO1FBQ2hELElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUNqRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDeEIsQ0FBQztJQVRELElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBU0QsS0FBSyxDQUFDLENBQVE7UUFDVixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQWU7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQzs7O1lBM0JKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEV2ZW50c1NlcnZpY2Uge1xyXG5cclxuICAgIHJlYWRvbmx5IGV2ZW50Rm9yd2FyZGVkOiBFdmVudEVtaXR0ZXI8RXZlbnQ+O1xyXG4gICAgcmVhZG9ubHkgc3RpY2t5VXBkYXRlZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+O1xyXG4gICAgcmVhZG9ubHkgbGFuZ3VhZ2VDaGFuZ2VkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPjtcclxuXHJcbiAgICBwcml2YXRlIHN0aWNreTogYm9vbGVhbjtcclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzU3RpY2t5KCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN0aWNreTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmV2ZW50Rm9yd2FyZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxFdmVudD4oKTtcclxuICAgICAgICB0aGlzLnN0aWNreVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgICAgICAgdGhpcy5sYW5ndWFnZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgICAgICB0aGlzLnN0aWNreSA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGV2ZW50KGU6IEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ldmVudEZvcndhcmRlZC5lbWl0KGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHVwZGF0ZVN0aWNreShzdGlja3k6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnN0aWNreSA9IHN0aWNreTtcclxuICAgICAgICB0aGlzLnN0aWNreVVwZGF0ZWQuZW1pdChzdGlja3kpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,44 +1,44 @@
|
|
|
1
|
-
import { Inject, Injectable } from "@angular/core";
|
|
2
|
-
import { LANGUAGE_SERVICE } from "../common-types";
|
|
3
|
-
import { ObjectUtils } from "../utils/object.utils";
|
|
4
|
-
import { MathUtils } from "../utils/math.utils";
|
|
5
|
-
export class FormatterService {
|
|
6
|
-
constructor(language) {
|
|
7
|
-
this.language = language;
|
|
8
|
-
}
|
|
9
|
-
get defaultPrecision() {
|
|
10
|
-
return 2;
|
|
11
|
-
}
|
|
12
|
-
get defaultNumberFormat() {
|
|
13
|
-
return `num + ' mm'`;
|
|
14
|
-
}
|
|
15
|
-
get defaultDivider() {
|
|
16
|
-
return 1;
|
|
17
|
-
}
|
|
18
|
-
roundNumber(value, precision, divider) {
|
|
19
|
-
return MathUtils.round(value, this.getPrecision(precision), divider || this.defaultDivider);
|
|
20
|
-
}
|
|
21
|
-
formatNumber(value, format, precision, divider) {
|
|
22
|
-
precision = this.getPrecision(precision);
|
|
23
|
-
divider = divider || this.defaultDivider;
|
|
24
|
-
const num = ObjectUtils.isNumber(value) ? value : parseFloat(value) || 0;
|
|
25
|
-
const str = (num / divider).toLocaleString(this.language.currentLanguage, {
|
|
26
|
-
minimumFractionDigits: precision,
|
|
27
|
-
maximumFractionDigits: precision
|
|
28
|
-
});
|
|
29
|
-
return ObjectUtils.evaluate(format || this.defaultNumberFormat, { num: str });
|
|
30
|
-
}
|
|
31
|
-
formatMillimeter(value, precision, divider) {
|
|
32
|
-
return this.formatNumber(value, `num + ' mm'`, precision, divider);
|
|
33
|
-
}
|
|
34
|
-
getPrecision(precision) {
|
|
35
|
-
return ObjectUtils.isNumber(precision) ? precision : this.defaultPrecision;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
FormatterService.decorators = [
|
|
39
|
-
{ type: Injectable }
|
|
40
|
-
];
|
|
41
|
-
FormatterService.ctorParameters = () => [
|
|
42
|
-
{ type: undefined, decorators: [{ type: Inject, args: [LANGUAGE_SERVICE,] }] }
|
|
43
|
-
];
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Inject, Injectable } from "@angular/core";
|
|
2
|
+
import { LANGUAGE_SERVICE } from "../common-types";
|
|
3
|
+
import { ObjectUtils } from "../utils/object.utils";
|
|
4
|
+
import { MathUtils } from "../utils/math.utils";
|
|
5
|
+
export class FormatterService {
|
|
6
|
+
constructor(language) {
|
|
7
|
+
this.language = language;
|
|
8
|
+
}
|
|
9
|
+
get defaultPrecision() {
|
|
10
|
+
return 2;
|
|
11
|
+
}
|
|
12
|
+
get defaultNumberFormat() {
|
|
13
|
+
return `num + ' mm'`;
|
|
14
|
+
}
|
|
15
|
+
get defaultDivider() {
|
|
16
|
+
return 1;
|
|
17
|
+
}
|
|
18
|
+
roundNumber(value, precision, divider) {
|
|
19
|
+
return MathUtils.round(value, this.getPrecision(precision), divider || this.defaultDivider);
|
|
20
|
+
}
|
|
21
|
+
formatNumber(value, format, precision, divider) {
|
|
22
|
+
precision = this.getPrecision(precision);
|
|
23
|
+
divider = divider || this.defaultDivider;
|
|
24
|
+
const num = ObjectUtils.isNumber(value) ? value : parseFloat(value) || 0;
|
|
25
|
+
const str = (num / divider).toLocaleString(this.language.currentLanguage, {
|
|
26
|
+
minimumFractionDigits: precision,
|
|
27
|
+
maximumFractionDigits: precision
|
|
28
|
+
});
|
|
29
|
+
return ObjectUtils.evaluate(format || this.defaultNumberFormat, { num: str });
|
|
30
|
+
}
|
|
31
|
+
formatMillimeter(value, precision, divider) {
|
|
32
|
+
return this.formatNumber(value, `num + ' mm'`, precision, divider);
|
|
33
|
+
}
|
|
34
|
+
getPrecision(precision) {
|
|
35
|
+
return ObjectUtils.isNumber(precision) ? precision : this.defaultPrecision;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
FormatterService.decorators = [
|
|
39
|
+
{ type: Injectable }
|
|
40
|
+
];
|
|
41
|
+
FormatterService.ctorParameters = () => [
|
|
42
|
+
{ type: undefined, decorators: [{ type: Inject, args: [LANGUAGE_SERVICE,] }] }
|
|
43
|
+
];
|
|
44
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiRDovV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL3NlcnZpY2VzL2Zvcm1hdHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBRzlDLE1BQU0sT0FBTyxnQkFBZ0I7SUFjekIsWUFBNkMsUUFBMEI7UUFBMUIsYUFBUSxHQUFSLFFBQVEsQ0FBa0I7SUFFdkUsQ0FBQztJQWRELElBQUksZ0JBQWdCO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELElBQUksbUJBQW1CO1FBQ25CLE9BQU8sYUFBYSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGNBQWM7UUFDZCxPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFNRCxXQUFXLENBQUMsS0FBYSxFQUFFLFNBQWtCLEVBQUUsT0FBZ0I7UUFDM0QsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDaEcsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFzQixFQUFFLE1BQWUsRUFBRSxTQUFrQixFQUFFLE9BQWdCO1FBQ3RGLFNBQVMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sR0FBRyxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQztRQUN6QyxNQUFNLEdBQUcsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBUyxLQUFLLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBUyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekYsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFO1lBQ3RFLHFCQUFxQixFQUFFLFNBQVM7WUFDaEMscUJBQXFCLEVBQUUsU0FBUztTQUNuQyxDQUFDLENBQUM7UUFDSCxPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxLQUFhLEVBQUUsU0FBa0IsRUFBRSxPQUFnQjtRQUNoRSxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVTLFlBQVksQ0FBQyxTQUFpQjtRQUNwQyxPQUFPLFdBQVcsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9FLENBQUM7OztZQXhDSixVQUFVOzs7NENBZU0sTUFBTSxTQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0lMYW5ndWFnZVNlcnZpY2UsIExBTkdVQUdFX1NFUlZJQ0V9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4uL3V0aWxzL29iamVjdC51dGlsc1wiO1xyXG5pbXBvcnQge01hdGhVdGlsc30gZnJvbSBcIi4uL3V0aWxzL21hdGgudXRpbHNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEZvcm1hdHRlclNlcnZpY2Uge1xyXG5cclxuICAgIGdldCBkZWZhdWx0UHJlY2lzaW9uKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIDI7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGRlZmF1bHROdW1iZXJGb3JtYXQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gYG51bSArICcgbW0nYDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGVmYXVsdERpdmlkZXIoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gMTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KExBTkdVQUdFX1NFUlZJQ0UpIHB1YmxpYyBsYW5ndWFnZTogSUxhbmd1YWdlU2VydmljZSkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICByb3VuZE51bWJlcih2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb24/OiBudW1iZXIsIGRpdmlkZXI/OiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBNYXRoVXRpbHMucm91bmQodmFsdWUsIHRoaXMuZ2V0UHJlY2lzaW9uKHByZWNpc2lvbiksIGRpdmlkZXIgfHwgdGhpcy5kZWZhdWx0RGl2aWRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgZm9ybWF0TnVtYmVyKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGZvcm1hdD86IHN0cmluZywgcHJlY2lzaW9uPzogbnVtYmVyLCBkaXZpZGVyPzogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICBwcmVjaXNpb24gPSB0aGlzLmdldFByZWNpc2lvbihwcmVjaXNpb24pO1xyXG4gICAgICAgIGRpdmlkZXIgPSBkaXZpZGVyIHx8IHRoaXMuZGVmYXVsdERpdmlkZXI7XHJcbiAgICAgICAgY29uc3QgbnVtID0gT2JqZWN0VXRpbHMuaXNOdW1iZXIodmFsdWUpID8gPG51bWJlcj52YWx1ZSA6IHBhcnNlRmxvYXQoPHN0cmluZz52YWx1ZSkgfHwgMDtcclxuICAgICAgICBjb25zdCBzdHIgPSAobnVtIC8gZGl2aWRlcikudG9Mb2NhbGVTdHJpbmcodGhpcy5sYW5ndWFnZS5jdXJyZW50TGFuZ3VhZ2UsIHtcclxuICAgICAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBwcmVjaXNpb24sXHJcbiAgICAgICAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogcHJlY2lzaW9uXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmV2YWx1YXRlKGZvcm1hdCB8fCB0aGlzLmRlZmF1bHROdW1iZXJGb3JtYXQsIHtudW06IHN0cn0pO1xyXG4gICAgfVxyXG5cclxuICAgIGZvcm1hdE1pbGxpbWV0ZXIodmFsdWU6IG51bWJlciwgcHJlY2lzaW9uPzogbnVtYmVyLCBkaXZpZGVyPzogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtYXROdW1iZXIodmFsdWUsIGBudW0gKyAnIG1tJ2AsIHByZWNpc2lvbiwgZGl2aWRlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldFByZWNpc2lvbihwcmVjaXNpb246IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdFV0aWxzLmlzTnVtYmVyKHByZWNpc2lvbikgPyBwcmVjaXNpb24gOiB0aGlzLmRlZmF1bHRQcmVjaXNpb247XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -1,35 +1,35 @@
|
|
|
1
|
-
import { EventEmitter, Injectable } from "@angular/core";
|
|
2
|
-
import { ObjectUtils } from "../utils/object.utils";
|
|
3
|
-
export class GlobalTemplateService {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.templatesUpdated = new EventEmitter();
|
|
6
|
-
this.globalTemplates = {};
|
|
7
|
-
this.componentModifiers = {};
|
|
8
|
-
}
|
|
9
|
-
get(id, component) {
|
|
10
|
-
const template = this.globalTemplates[id];
|
|
11
|
-
if (!template)
|
|
12
|
-
return null;
|
|
13
|
-
const modifier = this.componentModifiers[id];
|
|
14
|
-
if (ObjectUtils.isFunction(modifier) && component) {
|
|
15
|
-
modifier(component);
|
|
16
|
-
}
|
|
17
|
-
return template;
|
|
18
|
-
}
|
|
19
|
-
add(id, template) {
|
|
20
|
-
this.globalTemplates[id] = template;
|
|
21
|
-
this.templatesUpdated.emit();
|
|
22
|
-
}
|
|
23
|
-
remove(id) {
|
|
24
|
-
delete this.globalTemplates[id];
|
|
25
|
-
this.templatesUpdated.emit();
|
|
26
|
-
}
|
|
27
|
-
addComponentModifier(id, modifier) {
|
|
28
|
-
this.componentModifiers[id] = modifier;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
GlobalTemplateService.decorators = [
|
|
32
|
-
{ type: Injectable }
|
|
33
|
-
];
|
|
34
|
-
GlobalTemplateService.ctorParameters = () => [];
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { EventEmitter, Injectable } from "@angular/core";
|
|
2
|
+
import { ObjectUtils } from "../utils/object.utils";
|
|
3
|
+
export class GlobalTemplateService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.templatesUpdated = new EventEmitter();
|
|
6
|
+
this.globalTemplates = {};
|
|
7
|
+
this.componentModifiers = {};
|
|
8
|
+
}
|
|
9
|
+
get(id, component) {
|
|
10
|
+
const template = this.globalTemplates[id];
|
|
11
|
+
if (!template)
|
|
12
|
+
return null;
|
|
13
|
+
const modifier = this.componentModifiers[id];
|
|
14
|
+
if (ObjectUtils.isFunction(modifier) && component) {
|
|
15
|
+
modifier(component);
|
|
16
|
+
}
|
|
17
|
+
return template;
|
|
18
|
+
}
|
|
19
|
+
add(id, template) {
|
|
20
|
+
this.globalTemplates[id] = template;
|
|
21
|
+
this.templatesUpdated.emit();
|
|
22
|
+
}
|
|
23
|
+
remove(id) {
|
|
24
|
+
delete this.globalTemplates[id];
|
|
25
|
+
this.templatesUpdated.emit();
|
|
26
|
+
}
|
|
27
|
+
addComponentModifier(id, modifier) {
|
|
28
|
+
this.componentModifiers[id] = modifier;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
GlobalTemplateService.decorators = [
|
|
32
|
+
{ type: Injectable }
|
|
33
|
+
];
|
|
34
|
+
GlobalTemplateService.ctorParameters = () => [];
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXRlbXBsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiRDovV29yay9uZ3gtdXRpbHMvc3JjLyIsInNvdXJjZXMiOlsibmd4LXV0aWxzL3NlcnZpY2VzL2dsb2JhbC10ZW1wbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUtsRCxNQUFNLE9BQU8scUJBQXFCO0lBTzlCO1FBQ0ksSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQVUsRUFBRSxTQUFlO1FBQzNCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLFFBQVE7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxXQUFXLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVMsRUFBRTtZQUMvQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDdkI7UUFDRCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0lBRUQsR0FBRyxDQUFDLEVBQVUsRUFBRSxRQUEwQjtRQUN0QyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUNwQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFVO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsb0JBQW9CLENBQUMsRUFBVSxFQUFFLFFBQWlDO1FBQzlELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDM0MsQ0FBQzs7O1lBcENKLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgVGVtcGxhdGVSZWZ9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7T2JqZWN0VXRpbHN9IGZyb20gXCIuLi91dGlscy9vYmplY3QudXRpbHNcIjtcclxuXHJcbmV4cG9ydCB0eXBlIEdsb2JhbENvbXBvbmVudE1vZGlmaWVyID0gKGNvbXBvbmVudDogYW55KSA9PiBhbnk7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBHbG9iYWxUZW1wbGF0ZVNlcnZpY2Uge1xyXG5cclxuICAgIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZXNVcGRhdGVkOiBFdmVudEVtaXR0ZXI8dm9pZD47XHJcblxyXG4gICAgcHJvdGVjdGVkIGdsb2JhbFRlbXBsYXRlczoge1tpZDogc3RyaW5nXTogVGVtcGxhdGVSZWY8YW55Pn07XHJcbiAgICBwcm90ZWN0ZWQgY29tcG9uZW50TW9kaWZpZXJzOiB7W2lkOiBzdHJpbmddOiBHbG9iYWxDb21wb25lbnRNb2RpZmllcn07XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXNVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAgICAgdGhpcy5nbG9iYWxUZW1wbGF0ZXMgPSB7fTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudE1vZGlmaWVycyA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldChpZDogc3RyaW5nLCBjb21wb25lbnQ/OiBhbnkpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuZ2xvYmFsVGVtcGxhdGVzW2lkXTtcclxuICAgICAgICBpZiAoIXRlbXBsYXRlKSByZXR1cm4gbnVsbDtcclxuICAgICAgICBjb25zdCBtb2RpZmllciA9IHRoaXMuY29tcG9uZW50TW9kaWZpZXJzW2lkXTtcclxuICAgICAgICBpZiAoT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihtb2RpZmllcikgJiYgY29tcG9uZW50KSB7XHJcbiAgICAgICAgICAgIG1vZGlmaWVyKGNvbXBvbmVudCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0ZW1wbGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBhZGQoaWQ6IHN0cmluZywgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmdsb2JhbFRlbXBsYXRlc1tpZF0gPSB0ZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlc1VwZGF0ZWQuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlbW92ZShpZDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgZGVsZXRlIHRoaXMuZ2xvYmFsVGVtcGxhdGVzW2lkXTtcclxuICAgICAgICB0aGlzLnRlbXBsYXRlc1VwZGF0ZWQuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZENvbXBvbmVudE1vZGlmaWVyKGlkOiBzdHJpbmcsIG1vZGlmaWVyOiBHbG9iYWxDb21wb25lbnRNb2RpZmllcik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY29tcG9uZW50TW9kaWZpZXJzW2lkXSA9IG1vZGlmaWVyO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|