@stemy/ngx-utils 12.1.3 → 13.0.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/esm2020/ngx-utils/common-types.mjs +116 -0
- package/esm2020/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +178 -0
- package/esm2020/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +101 -0
- package/esm2020/ngx-utils/components/unordered-list/unordered-list.component.mjs +65 -0
- package/esm2020/ngx-utils/directives/async-method.base.mjs +68 -0
- package/esm2020/ngx-utils/directives/async-method.directive.mjs +28 -0
- package/esm2020/ngx-utils/directives/background.directive.mjs +51 -0
- package/esm2020/ngx-utils/directives/dynamic-table-template.directive.mjs +20 -0
- package/esm2020/ngx-utils/directives/global-template.directive.mjs +30 -0
- package/esm2020/ngx-utils/directives/icon.directive.mjs +67 -0
- package/esm2020/ngx-utils/directives/ngx-template-outlet.directive.mjs +90 -0
- package/esm2020/ngx-utils/directives/pagination-item.directive.mjs +33 -0
- package/esm2020/ngx-utils/directives/pagination.directive.mjs +83 -0
- package/esm2020/ngx-utils/directives/resource-if.directive.mjs +50 -0
- package/esm2020/ngx-utils/directives/sticky-class.directive.mjs +34 -0
- package/esm2020/ngx-utils/directives/sticky.directive.mjs +55 -0
- package/esm2020/ngx-utils/directives/unordered-list-item.directive.mjs +77 -0
- package/esm2020/ngx-utils/directives/unordered-list-template.directive.mjs +26 -0
- package/esm2020/ngx-utils/ngx-utils.module.mjs +321 -0
- package/esm2020/ngx-utils/pipes/chunk.pipe.mjs +25 -0
- package/esm2020/ngx-utils/pipes/entries.pipe.mjs +28 -0
- package/esm2020/ngx-utils/pipes/extra-item-properties.pipe.mjs +31 -0
- package/esm2020/ngx-utils/pipes/filter.pipe.mjs +42 -0
- package/esm2020/ngx-utils/pipes/find.pipe.mjs +29 -0
- package/esm2020/ngx-utils/pipes/format-number.pipe.mjs +21 -0
- package/esm2020/ngx-utils/pipes/get-offset.pipe.mjs +17 -0
- package/esm2020/ngx-utils/pipes/get-type.pipe.mjs +16 -0
- package/esm2020/ngx-utils/pipes/global-template.pipe.mjs +41 -0
- package/esm2020/ngx-utils/pipes/group-by.pipe.mjs +27 -0
- package/esm2020/ngx-utils/pipes/is-type.pipe.mjs +16 -0
- package/esm2020/ngx-utils/pipes/join.pipe.mjs +19 -0
- package/esm2020/ngx-utils/pipes/keys.pipe.mjs +22 -0
- package/esm2020/ngx-utils/pipes/map.pipe.mjs +29 -0
- package/esm2020/ngx-utils/pipes/max.pipe.mjs +26 -0
- package/esm2020/ngx-utils/pipes/min.pipe.mjs +26 -0
- package/esm2020/ngx-utils/pipes/reduce.pipe.mjs +30 -0
- package/esm2020/ngx-utils/pipes/remap.pipe.mjs +32 -0
- package/esm2020/ngx-utils/pipes/replace.pipe.mjs +16 -0
- package/esm2020/ngx-utils/pipes/reverse.pipe.mjs +24 -0
- package/esm2020/ngx-utils/pipes/round.pipe.mjs +21 -0
- package/esm2020/ngx-utils/pipes/safe-html.pipe.mjs +34 -0
- package/esm2020/ngx-utils/pipes/translate.pipe.mjs +86 -0
- package/esm2020/ngx-utils/pipes/values.pipe.mjs +22 -0
- package/esm2020/ngx-utils/plugins/resize-event.plugin.mjs +59 -0
- package/esm2020/ngx-utils/plugins/scroll-event.plugin.mjs +39 -0
- package/esm2020/ngx-utils/services/acl.service.mjs +81 -0
- package/esm2020/ngx-utils/services/api.service.mjs +38 -0
- package/esm2020/ngx-utils/services/auth.service.mjs +14 -0
- package/esm2020/ngx-utils/services/base-http.client.mjs +47 -0
- package/esm2020/ngx-utils/services/base-http.service.mjs +298 -0
- package/esm2020/ngx-utils/services/config.service.mjs +130 -0
- package/esm2020/ngx-utils/services/error-handler.service.mjs +49 -0
- package/esm2020/ngx-utils/services/events.service.mjs +26 -0
- package/esm2020/ngx-utils/services/formatter.service.mjs +47 -0
- package/esm2020/ngx-utils/services/global-template.service.mjs +37 -0
- package/esm2020/ngx-utils/services/icon.service.mjs +26 -0
- package/esm2020/ngx-utils/services/language.service.mjs +113 -0
- package/esm2020/ngx-utils/services/open-api.service.mjs +40 -0
- package/esm2020/ngx-utils/services/promise.service.mjs +55 -0
- package/esm2020/ngx-utils/services/state.service.mjs +173 -0
- package/esm2020/ngx-utils/services/static-language.service.mjs +166 -0
- package/esm2020/ngx-utils/services/storage.service.mjs +49 -0
- package/esm2020/ngx-utils/services/toaster.service.mjs +32 -0
- package/esm2020/ngx-utils/services/translated-url.serializer.mjs +73 -0
- package/esm2020/ngx-utils/services/universal.service.mjs +78 -0
- package/esm2020/ngx-utils/utils/ajax-request-handler.mjs +40 -0
- package/esm2020/ngx-utils/utils/array.utils.mjs +100 -0
- package/esm2020/ngx-utils/utils/auth.guard.mjs +181 -0
- package/esm2020/ngx-utils/utils/canvas.utils.mjs +388 -0
- package/esm2020/ngx-utils/utils/date.utils.mjs +28 -0
- package/esm2020/ngx-utils/utils/file.utils.mjs +90 -0
- package/esm2020/ngx-utils/utils/generic-value.mjs +20 -0
- package/esm2020/ngx-utils/utils/geometry.mjs +132 -0
- package/esm2020/ngx-utils/utils/initializer.mjs +20 -0
- package/esm2020/ngx-utils/utils/loader.utils.mjs +55 -0
- package/esm2020/ngx-utils/utils/math.utils.mjs +15 -0
- package/esm2020/ngx-utils/utils/object.utils.mjs +261 -0
- package/esm2020/ngx-utils/utils/observable.utils.mjs +63 -0
- package/esm2020/ngx-utils/utils/reflect.utils.mjs +33 -0
- package/esm2020/ngx-utils/utils/set.utils.mjs +20 -0
- package/esm2020/ngx-utils/utils/string.utils.mjs +28 -0
- package/esm2020/ngx-utils/utils/timer.utils.mjs +52 -0
- package/esm2020/ngx-utils/utils/unique.utils.mjs +24 -0
- package/esm2020/ngx-utils/utils/vector.mjs +77 -0
- package/esm2020/public_api.mjs +85 -0
- package/esm2020/stemy-ngx-utils.mjs +5 -0
- package/fesm2015/stemy-ngx-utils.mjs +5196 -0
- package/fesm2015/stemy-ngx-utils.mjs.map +1 -0
- package/fesm2020/stemy-ngx-utils.mjs +5127 -0
- package/fesm2020/stemy-ngx-utils.mjs.map +1 -0
- package/ngx-utils/components/dynamic-table/dynamic-table.component.d.ts +3 -0
- package/ngx-utils/components/pagination-menu/pagination-menu.component.d.ts +3 -0
- package/ngx-utils/components/unordered-list/unordered-list.component.d.ts +3 -0
- package/ngx-utils/directives/async-method.base.d.ts +3 -0
- package/ngx-utils/directives/async-method.directive.d.ts +3 -0
- package/ngx-utils/directives/background.directive.d.ts +3 -0
- package/ngx-utils/directives/dynamic-table-template.directive.d.ts +3 -0
- package/ngx-utils/directives/global-template.directive.d.ts +3 -0
- package/ngx-utils/directives/icon.directive.d.ts +3 -0
- package/ngx-utils/directives/ngx-template-outlet.directive.d.ts +3 -0
- package/ngx-utils/directives/pagination-item.directive.d.ts +3 -0
- package/ngx-utils/directives/pagination.directive.d.ts +3 -0
- package/ngx-utils/directives/resource-if.directive.d.ts +3 -0
- package/ngx-utils/directives/sticky-class.directive.d.ts +3 -0
- package/ngx-utils/directives/sticky.directive.d.ts +3 -0
- package/ngx-utils/directives/unordered-list-item.directive.d.ts +3 -0
- package/ngx-utils/directives/unordered-list-template.directive.d.ts +3 -0
- package/ngx-utils/pipes/chunk.pipe.d.ts +3 -0
- package/ngx-utils/pipes/entries.pipe.d.ts +3 -0
- package/ngx-utils/pipes/extra-item-properties.pipe.d.ts +3 -0
- package/ngx-utils/pipes/filter.pipe.d.ts +3 -0
- package/ngx-utils/pipes/find.pipe.d.ts +3 -0
- package/ngx-utils/pipes/format-number.pipe.d.ts +3 -0
- package/ngx-utils/pipes/get-offset.pipe.d.ts +3 -0
- package/ngx-utils/pipes/get-type.pipe.d.ts +3 -0
- package/ngx-utils/pipes/global-template.pipe.d.ts +3 -0
- package/ngx-utils/pipes/group-by.pipe.d.ts +3 -0
- package/ngx-utils/pipes/is-type.pipe.d.ts +3 -0
- package/ngx-utils/pipes/join.pipe.d.ts +3 -0
- package/ngx-utils/pipes/keys.pipe.d.ts +3 -0
- package/ngx-utils/pipes/map.pipe.d.ts +3 -0
- package/ngx-utils/pipes/max.pipe.d.ts +3 -0
- package/ngx-utils/pipes/min.pipe.d.ts +3 -0
- package/ngx-utils/pipes/reduce.pipe.d.ts +3 -0
- package/ngx-utils/pipes/remap.pipe.d.ts +3 -0
- package/ngx-utils/pipes/replace.pipe.d.ts +3 -0
- package/ngx-utils/pipes/reverse.pipe.d.ts +3 -0
- package/ngx-utils/pipes/round.pipe.d.ts +3 -0
- package/ngx-utils/pipes/safe-html.pipe.d.ts +3 -0
- package/ngx-utils/pipes/translate.pipe.d.ts +4 -0
- package/ngx-utils/pipes/values.pipe.d.ts +3 -0
- package/ngx-utils/plugins/resize-event.plugin.d.ts +4 -1
- package/ngx-utils/plugins/scroll-event.plugin.d.ts +4 -1
- package/ngx-utils/services/acl.service.d.ts +3 -0
- package/ngx-utils/services/api.service.d.ts +3 -0
- package/ngx-utils/services/base-http.client.d.ts +3 -0
- package/ngx-utils/services/base-http.service.d.ts +3 -0
- package/ngx-utils/services/config.service.d.ts +3 -0
- package/ngx-utils/services/error-handler.service.d.ts +3 -0
- package/ngx-utils/services/events.service.d.ts +3 -0
- package/ngx-utils/services/formatter.service.d.ts +3 -0
- package/ngx-utils/services/global-template.service.d.ts +3 -0
- package/ngx-utils/services/icon.service.d.ts +3 -0
- package/ngx-utils/services/language.service.d.ts +3 -0
- package/ngx-utils/services/open-api.service.d.ts +3 -0
- package/ngx-utils/services/promise.service.d.ts +3 -0
- package/ngx-utils/services/state.service.d.ts +3 -0
- package/ngx-utils/services/static-language.service.d.ts +3 -0
- package/ngx-utils/services/storage.service.d.ts +3 -0
- package/ngx-utils/services/toaster.service.d.ts +3 -0
- package/ngx-utils/services/translated-url.serializer.d.ts +3 -0
- package/ngx-utils/services/universal.service.d.ts +3 -0
- package/ngx-utils/utils/auth.guard.d.ts +3 -0
- package/package.json +38 -19
- package/public_api.d.ts +1 -0
- package/stemy-ngx-utils.d.ts +1 -2
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional, isDevMode } from "@angular/core";
|
|
2
|
+
import { HttpClient } from "@angular/common/http";
|
|
3
|
+
import { UniversalService } from "./universal.service";
|
|
4
|
+
import { BASE_CONFIG, IConfiguration, ROOT_ELEMENT, SCRIPT_PARAMS } from "../common-types";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common/http";
|
|
7
|
+
import * as i2 from "./universal.service";
|
|
8
|
+
import * as i3 from "../common-types";
|
|
9
|
+
const JSON5 = require("json5");
|
|
10
|
+
export class ConfigService {
|
|
11
|
+
constructor(http, universal, rootElement, baseConfig = null, scriptParams = null) {
|
|
12
|
+
this.http = http;
|
|
13
|
+
this.universal = universal;
|
|
14
|
+
this.rootElement = rootElement;
|
|
15
|
+
for (const key in []) {
|
|
16
|
+
Object.defineProperty(Array.prototype, key, {
|
|
17
|
+
enumerable: false
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
let baseUrl = "";
|
|
21
|
+
if (this.universal.isBrowser) {
|
|
22
|
+
const currentScript = document.currentScript;
|
|
23
|
+
if (!!currentScript) {
|
|
24
|
+
const scriptSrc = currentScript.src;
|
|
25
|
+
const srcParts = scriptSrc.split(".js");
|
|
26
|
+
baseUrl = scriptSrc.substr(0, srcParts[0].lastIndexOf("/") + 1);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
this.baseConfig = baseConfig || {};
|
|
30
|
+
this.loadedConfig = Object.assign(!baseUrl ? {} : { baseUrl, baseDomain: this.parseDomain(baseUrl) }, this.baseConfig);
|
|
31
|
+
this.scriptParameters = scriptParams || {};
|
|
32
|
+
this.loaderFunc = () => {
|
|
33
|
+
this.loader = this.loader || new Promise((resolve, reject) => {
|
|
34
|
+
this.loadJson().then(config => {
|
|
35
|
+
this.loadedConfig = config = Object.assign(this.loadedConfig, config);
|
|
36
|
+
this.prepareConfig(config).then(c => {
|
|
37
|
+
this.loadedConfig = c;
|
|
38
|
+
c.baseUrl = c.baseUrl || "/";
|
|
39
|
+
resolve(c);
|
|
40
|
+
});
|
|
41
|
+
}, reject);
|
|
42
|
+
});
|
|
43
|
+
return this.loader;
|
|
44
|
+
};
|
|
45
|
+
this.initService();
|
|
46
|
+
}
|
|
47
|
+
get load() {
|
|
48
|
+
return this.loaderFunc;
|
|
49
|
+
}
|
|
50
|
+
get config() {
|
|
51
|
+
return this.loadedConfig;
|
|
52
|
+
}
|
|
53
|
+
get configUrl() {
|
|
54
|
+
return `${this.loadedConfig.baseUrl}config/config.json`;
|
|
55
|
+
}
|
|
56
|
+
parseDomain(baseUrl) {
|
|
57
|
+
try {
|
|
58
|
+
const url = new URL(baseUrl);
|
|
59
|
+
const port = url.port && url.port !== "443" && url.port !== "80" ? `:${url.port}` : ``;
|
|
60
|
+
return `${url.protocol}//${url.hostname}${port}/`;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return "/";
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
initService() {
|
|
67
|
+
}
|
|
68
|
+
async loadJson() {
|
|
69
|
+
if (this.universal.isServer) {
|
|
70
|
+
return Promise.resolve(this.loadedConfig);
|
|
71
|
+
}
|
|
72
|
+
const configUrl = this.configUrl;
|
|
73
|
+
try {
|
|
74
|
+
const config5 = await this.http.get(isDevMode() ? `${configUrl}5` : configUrl, { responseType: "text" }).toPromise();
|
|
75
|
+
return JSON5.parse(config5);
|
|
76
|
+
}
|
|
77
|
+
catch (e) {
|
|
78
|
+
try {
|
|
79
|
+
const config = await this.http.get(configUrl).toPromise();
|
|
80
|
+
console.log(`Can't parse json5 config: ${e}`);
|
|
81
|
+
return config;
|
|
82
|
+
}
|
|
83
|
+
catch (e) {
|
|
84
|
+
throw new Error(`Config file not found at: ${configUrl}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
prepareConfig(config) {
|
|
89
|
+
return Promise.resolve(config);
|
|
90
|
+
}
|
|
91
|
+
prepareUrl(url, ending) {
|
|
92
|
+
const project = !this.loadedConfig ? "" : this.loadedConfig.project;
|
|
93
|
+
const needsProtocol = url?.startsWith("//") ?? false;
|
|
94
|
+
url = !needsProtocol && url?.startsWith("/") ? this.loadedConfig.baseDomain + url.substr(1) : url || "";
|
|
95
|
+
url = `${url.replace(/\/+$/, "")}${ending}`.replace("[project]", project);
|
|
96
|
+
return this.universal.isServer && needsProtocol ? `http:${url}` : url;
|
|
97
|
+
}
|
|
98
|
+
getConfigValue(key) {
|
|
99
|
+
return this.loadedConfig[key];
|
|
100
|
+
}
|
|
101
|
+
getQueryParameter(name, url) {
|
|
102
|
+
url = url || (this.universal.isBrowser ? window.location.href : "");
|
|
103
|
+
name = name.replace(/[\[\]]/g, "\\$&");
|
|
104
|
+
const regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url);
|
|
105
|
+
if (!results)
|
|
106
|
+
return null;
|
|
107
|
+
if (!results[2])
|
|
108
|
+
return "";
|
|
109
|
+
return decodeURIComponent(results[2].replace(/\+/g, " "));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
ConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ConfigService, deps: [{ token: i1.HttpClient }, { token: i2.UniversalService }, { token: ROOT_ELEMENT }, { token: BASE_CONFIG, optional: true }, { token: SCRIPT_PARAMS, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
113
|
+
ConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ConfigService });
|
|
114
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ConfigService, decorators: [{
|
|
115
|
+
type: Injectable
|
|
116
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.UniversalService }, { type: undefined, decorators: [{
|
|
117
|
+
type: Inject,
|
|
118
|
+
args: [ROOT_ELEMENT]
|
|
119
|
+
}] }, { type: i3.IConfiguration, decorators: [{
|
|
120
|
+
type: Optional
|
|
121
|
+
}, {
|
|
122
|
+
type: Inject,
|
|
123
|
+
args: [BASE_CONFIG]
|
|
124
|
+
}] }, { type: undefined, decorators: [{
|
|
125
|
+
type: Optional
|
|
126
|
+
}, {
|
|
127
|
+
type: Inject,
|
|
128
|
+
args: [SCRIPT_PARAMS]
|
|
129
|
+
}] }]; } });
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxXQUFXLEVBQWtCLGNBQWMsRUFBRSxZQUFZLEVBQUUsYUFBYSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7O0FBRXpHLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUcvQixNQUFNLE9BQU8sYUFBYTtJQW9CdEIsWUFBcUIsSUFBZ0IsRUFDaEIsU0FBMkIsRUFDTCxXQUFnQixFQUNkLGFBQTZCLElBQUksRUFDL0IsZUFBb0IsSUFBSTtRQUpsRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQ2hCLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBQ0wsZ0JBQVcsR0FBWCxXQUFXLENBQUs7UUFHdkQsS0FBSyxNQUFNLEdBQUcsSUFBSSxFQUFFLEVBQUU7WUFDbEIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtnQkFDeEMsVUFBVSxFQUFFLEtBQUs7YUFDcEIsQ0FBQyxDQUFDO1NBQ047UUFDRCxJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDakIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRTtZQUMxQixNQUFNLGFBQWEsR0FBSSxRQUFRLENBQUMsYUFBbUMsQ0FBQztZQUNwRSxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUU7Z0JBQ2pCLE1BQU0sU0FBUyxH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QyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELENBQUM7OzBHQXRIUSxhQUFhLDRFQXNCRixZQUFZLGFBQ0EsV0FBVyw2QkFDWCxhQUFhOzhHQXhCcEMsYUFBYTsyRkFBYixhQUFhO2tCQUR6QixVQUFVOzswQkF1Qk0sTUFBTTsyQkFBQyxZQUFZOzswQkFDbkIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxXQUFXOzswQkFDOUIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGUsIE9wdGlvbmFsLCBpc0Rldk1vZGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SHR0cENsaWVudH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vbi9odHRwXCI7XHJcbmltcG9ydCB7VW5pdmVyc2FsU2VydmljZX0gZnJvbSBcIi4vdW5pdmVyc2FsLnNlcnZpY2VcIjtcclxuaW1wb3J0IHtCQVNFX0NPTkZJRywgSUNvbmZpZ1NlcnZpY2UsIElDb25maWd1cmF0aW9uLCBST09UX0VMRU1FTlQsIFNDUklQVF9QQVJBTVN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmNvbnN0IEpTT041ID0gcmVxdWlyZShcImpzb241XCIpO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZSBpbXBsZW1lbnRzIElDb25maWdTZXJ2aWNlIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgYmFzZUNvbmZpZzogSUNvbmZpZ3VyYXRpb247XHJcbiAgICBwcm90ZWN0ZWQgbG9hZGVkQ29uZmlnOiBJQ29uZmlndXJhdGlvbjtcclxuICAgIHByb3RlY3RlZCBzY3JpcHRQYXJhbWV0ZXJzOiBhbnk7XHJcbiAgICBwcm90ZWN0ZWQgbG9hZGVyOiBQcm9taXNlPElDb25maWd1cmF0aW9uPjtcclxuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2FkZXJGdW5jOiAoKSA9PiBQcm9taXNlPElDb25maWd1cmF0aW9uPjtcclxuXHJcbiAgICBnZXQgbG9hZCgpOiAoKSA9PiBQcm9taXNlPElDb25maWd1cmF0aW9uPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVyRnVuYztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgY29uZmlnKCk6IElDb25maWd1cmF0aW9uIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2FkZWRDb25maWc7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGNvbmZpZ1VybCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBgJHt0aGlzLmxvYWRlZENvbmZpZy5iYXNlVXJsfWNvbmZpZy9jb25maWcuanNvbmA7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcclxuICAgICAgICAgICAgICAgIHJlYWRvbmx5IHVuaXZlcnNhbDogVW5pdmVyc2FsU2VydmljZSxcclxuICAgICAgICAgICAgICAgIEBJbmplY3QoUk9PVF9FTEVNRU5UKSByZWFkb25seSByb290RWxlbWVudDogYW55LFxyXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChCQVNFX0NPTkZJRykgYmFzZUNvbmZpZzogSUNvbmZpZ3VyYXRpb24gPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChTQ1JJUFRfUEFSQU1TKSBzY3JpcHRQYXJhbXM6IGFueSA9IG51bGwpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBbXSkge1xyXG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoQXJyYXkucHJvdG90eXBlLCBrZXksIHtcclxuICAgICAgICAgICAgICAgIGVudW1lcmFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYmFzZVVybCA9IFwiXCI7XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzQnJvd3Nlcikge1xyXG4gICAgICAgICAgICBjb25zdCBjdXJyZW50U2NyaXB0ID0gKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQgYXMgSFRNTFNjcmlwdEVsZW1lbnQpO1xyXG4gICAgICAgICAgICBpZiAoISFjdXJyZW50U2NyaXB0KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBzY3JpcHRTcmMgPSBjdXJyZW50U2NyaXB0LnNyYztcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNyY1BhcnRzID0gc2NyaXB0U3JjLnNwbGl0KFwiLmpzXCIpO1xyXG4gICAgICAgICAgICAgICAgYmFzZVVybCA9IHNjcmlwdFNyYy5zdWJzdHIoMCwgc3JjUGFydHNbMF0ubGFzdEluZGV4T2YoXCIvXCIpICsgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5iYXNlQ29uZmlnID0gYmFzZUNvbmZpZyB8fCB7fTtcclxuICAgICAgICB0aGlzLmxvYWRlZENvbmZpZyA9IE9iamVjdC5hc3NpZ24oXHJcbiAgICAgICAgICAgICFiYXNlVXJsID8ge30gOiB7YmFzZVVybCwgYmFzZURvbWFpbjogdGhpcy5wYXJzZURvbWFpbihiYXNlVXJsKX0sXHJcbiAgICAgICAgICAgIHRoaXMuYmFzZUNvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zY3JpcHRQYXJhbWV0ZXJzID0gc2NyaXB0UGFyYW1zIHx8IHt9O1xyXG4gICAgICAgIHRoaXMubG9hZGVyRnVuYyA9ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5sb2FkZXIgPSB0aGlzLmxvYWRlciB8fCBuZXcgUHJvbWlzZTxhbnk+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMubG9hZEpzb24oKS50aGVuKGNvbmZpZyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkZWRDb25maWcgPSBjb25maWcgPSBPYmplY3QuYXNzaWduKHRoaXMubG9hZGVkQ29uZmlnLCBjb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJlcGFyZUNvbmZpZyhjb25maWcpLnRoZW4oYyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9hZGVkQ29uZmlnID0gYztcclxuICAgICAgICAgICAgICAgICAgICAgICAgYy5iYXNlVXJsID0gYy5iYXNlVXJsIHx8IFwiL1wiO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKGMpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSwgcmVqZWN0KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmxvYWRlcjtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuaW5pdFNlcnZpY2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcGFyc2VEb21haW4oYmFzZVVybDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB1cmwgPSBuZXcgVVJMKGJhc2VVcmwpO1xyXG4gICAgICAgICAgICBjb25zdCBwb3J0ID0gdXJsLnBvcnQgJiYgdXJsLnBvcnQgIT09IFwiNDQzXCIgJiYgdXJsLnBvcnQgIT09IFwiODBcIiA/IGA6JHt1cmwucG9ydH1gIDogYGA7XHJcbiAgICAgICAgICAgIHJldHVybiBgJHt1cmwucHJvdG9jb2x9Ly8ke3VybC5ob3N0bmFtZX0ke3BvcnR9L2A7XHJcbiAgICAgICAgfSBjYXRjaCB7XHJcbiAgICAgICAgICAgIHJldHVybiBcIi9cIjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXRTZXJ2aWNlKCk6IHZvaWQge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgYXN5bmMgbG9hZEpzb24oKTogUHJvbWlzZTxJQ29uZmlndXJhdGlvbj4ge1xyXG4gICAgICAgIGlmICh0aGlzLnVuaXZlcnNhbC5pc1NlcnZlcikge1xyXG4gICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMubG9hZGVkQ29uZmlnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgY29uZmlnVXJsID0gdGhpcy5jb25maWdVcmw7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgY29uZmlnNSA9IGF3YWl0IHRoaXMuaHR0cC5nZXQoaXNEZXZNb2RlKCkgPyBgJHtjb25maWdVcmx9NWAgOiBjb25maWdVcmwsIHtyZXNwb25zZVR5cGU6IFwidGV4dFwifSkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBKU09ONS5wYXJzZShjb25maWc1KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBjb25maWcgPSBhd2FpdCB0aGlzLmh0dHAuZ2V0KGNvbmZpZ1VybCkudG9Qcm9taXNlKCk7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgQ2FuJ3QgcGFyc2UganNvbjUgY29uZmlnOiAke2V9YCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZyBmaWxlIG5vdCBmb3VuZCBhdDogJHtjb25maWdVcmx9YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHByZXBhcmVDb25maWcoY29uZmlnOiBJQ29uZmlndXJhdGlvbik6IFByb21pc2U8SUNvbmZpZ3VyYXRpb24+IHtcclxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGNvbmZpZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJlcGFyZVVybCh1cmw6IHN0cmluZywgZW5kaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IHByb2plY3QgPSAhdGhpcy5sb2FkZWRDb25maWcgPyBcIlwiIDogdGhpcy5sb2FkZWRDb25maWcucHJvamVjdDtcclxuICAgICAgICBjb25zdCBuZWVkc1Byb3RvY29sID0gdXJsPy5zdGFydHNXaXRoKFwiLy9cIikgPz8gZmFsc2U7XHJcbiAgICAgICAgdXJsID0gIW5lZWRzUHJvdG9jb2wgJiYgdXJsPy5zdGFydHNXaXRoKFwiL1wiKSA/IHRoaXMubG9hZGVkQ29uZmlnLmJhc2VEb21haW4gKyB1cmwuc3Vic3RyKDEpIDogdXJsIHx8IFwiXCI7XHJcbiAgICAgICAgdXJsID0gYCR7dXJsLnJlcGxhY2UoL1xcLyskLywgXCJcIil9JHtlbmRpbmd9YC5yZXBsYWNlKFwiW3Byb2plY3RdXCIsIHByb2plY3QpO1xyXG4gICAgICAgIHJldHVybiB0aGlzLnVuaXZlcnNhbC5pc1NlcnZlciAmJiBuZWVkc1Byb3RvY29sID8gYGh0dHA6JHt1cmx9YCA6IHVybDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRDb25maWdWYWx1ZShrZXk6IHN0cmluZyk6IGFueSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubG9hZGVkQ29uZmlnW2tleV07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0UXVlcnlQYXJhbWV0ZXIobmFtZTogc3RyaW5nLCB1cmw/OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHVybCA9IHVybCB8fCAodGhpcy51bml2ZXJzYWwuaXNCcm93c2VyID8gd2luZG93LmxvY2F0aW9uLmhyZWYgOiBcIlwiKTtcclxuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9bXFxbXFxdXS9nLCBcIlxcXFwkJlwiKTtcclxuICAgICAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoXCJbPyZdXCIgKyBuYW1lICsgXCIoPShbXiYjXSopfCZ8I3wkKVwiKSxcclxuICAgICAgICAgICAgcmVzdWx0cyA9IHJlZ2V4LmV4ZWModXJsKTtcclxuICAgICAgICBpZiAoIXJlc3VsdHMpIHJldHVybiBudWxsO1xyXG4gICAgICAgIGlmICghcmVzdWx0c1syXSkgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzJdLnJlcGxhY2UoL1xcKy9nLCBcIiBcIikpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +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
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export class ErrorHandlerService extends ErrorHandler {
|
|
6
|
+
constructor(injector) {
|
|
7
|
+
super();
|
|
8
|
+
this.injector = injector;
|
|
9
|
+
this.errorMap = {};
|
|
10
|
+
}
|
|
11
|
+
handleError(error) {
|
|
12
|
+
try {
|
|
13
|
+
this.universal = this.universal || this.injector.get(UniversalService);
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const date = new Date();
|
|
19
|
+
try {
|
|
20
|
+
this.errorCb = this.errorCb || this.injector.get(ERROR_HANDLER);
|
|
21
|
+
this.errorCb(`[${date}]: ${error.message}\n${error.stack}`);
|
|
22
|
+
}
|
|
23
|
+
catch (e) {
|
|
24
|
+
if (this.universal.isServer) {
|
|
25
|
+
console.error(`[${date}]: ${error.message}\n${error.stack}`);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (this.universal.isServer)
|
|
30
|
+
return;
|
|
31
|
+
const key = typeof btoa !== "undefined" ? btoa(unescape(encodeURIComponent(`${error.message} ${error.stack}`))) : error.message;
|
|
32
|
+
if (this.errorMap[key] && this.errorMap[key].getTime() > date.getTime() - 5000)
|
|
33
|
+
return;
|
|
34
|
+
this.errorMap[key] = date;
|
|
35
|
+
try {
|
|
36
|
+
this.toaster = this.toaster || this.injector.get(TOASTER_SERVICE);
|
|
37
|
+
this.toaster.error(`[${date}]: ${error.message}\n${error.stack}`);
|
|
38
|
+
}
|
|
39
|
+
catch (e) {
|
|
40
|
+
}
|
|
41
|
+
console.error(`[${date}]: ${error.message}\n${error.stack}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
ErrorHandlerService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ErrorHandlerService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
45
|
+
ErrorHandlerService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ErrorHandlerService });
|
|
46
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: ErrorHandlerService, decorators: [{
|
|
47
|
+
type: Injectable
|
|
48
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }]; } });
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3ItaGFuZGxlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9zZXJ2aWNlcy9lcnJvci1oYW5kbGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxhQUFhLEVBQXlDLGVBQWUsRUFBQyxNQUFNLGlCQUFpQixDQUFDOztBQUd0RyxNQUFNLE9BQU8sbUJBQW9CLFNBQVEsWUFBWTtJQU9qRCxZQUFxQixRQUFrQjtRQUNuQyxLQUFLLEVBQUUsQ0FBQztRQURTLGFBQVEsR0FBUixRQUFRLENBQVU7UUFFbkMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFZO1FBQ3BCLElBQUk7WUFDQSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUMxRTtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsT0FBTztTQUNWO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN4QixJQUFJO1lBQ0EsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQ2hFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLE1BQU0sS0FBSyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUMvRDtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRTtnQkFDekIsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO2dCQUM3RCxPQUFPO2FBQ1Y7U0FDSjtRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRO1lBQUUsT0FBTztRQUNwQyxNQUFNLEdBQUcsR0FBRyxPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQUNoSSxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSTtZQUFFLE9BQU87UUFDdkYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSTtZQUNBLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLElBQUksTUFBTSxLQUFLLENBQUMsT0FBTyxLQUFLLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3JFO1FBQUMsT0FBTyxDQUFDLEVBQUU7U0FDWDtRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLE1BQU0sS0FBSyxDQUFDLE9BQU8sS0FBSyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDOztnSEF0Q1EsbUJBQW1CO29IQUFuQixtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXJyb3JIYW5kbGVyLCBJbmplY3RhYmxlLCBJbmplY3Rvcn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtVbml2ZXJzYWxTZXJ2aWNlfSBmcm9tIFwiLi91bml2ZXJzYWwuc2VydmljZVwiO1xyXG5pbXBvcnQge0VSUk9SX0hBTkRMRVIsIEVycm9ySGFuZGxlckNhbGxiYWNrLCBJVG9hc3RlclNlcnZpY2UsIFRPQVNURVJfU0VSVklDRX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXJyb3JIYW5kbGVyU2VydmljZSBleHRlbmRzIEVycm9ySGFuZGxlciB7XHJcblxyXG4gICAgcHJpdmF0ZSB0b2FzdGVyOiBJVG9hc3RlclNlcnZpY2U7XHJcbiAgICBwcml2YXRlIHVuaXZlcnNhbDogVW5pdmVyc2FsU2VydmljZTtcclxuICAgIHByaXZhdGUgZXJyb3JDYjogRXJyb3JIYW5kbGVyQ2FsbGJhY2s7XHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVycm9yTWFwOiBhbnk7XHJcblxyXG4gICAgY29uc3RydWN0b3IocmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmVycm9yTWFwID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgaGFuZGxlRXJyb3IoZXJyb3I6IEVycm9yKTogdm9pZCB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy51bml2ZXJzYWwgPSB0aGlzLnVuaXZlcnNhbCB8fCB0aGlzLmluamVjdG9yLmdldChVbml2ZXJzYWxTZXJ2aWNlKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvckNiID0gdGhpcy5lcnJvckNiIHx8IHRoaXMuaW5qZWN0b3IuZ2V0KEVSUk9SX0hBTkRMRVIpO1xyXG4gICAgICAgICAgICB0aGlzLmVycm9yQ2IoYFske2RhdGV9XTogJHtlcnJvci5tZXNzYWdlfVxcbiR7ZXJyb3Iuc3RhY2t9YCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFske2RhdGV9XTogJHtlcnJvci5tZXNzYWdlfVxcbiR7ZXJyb3Iuc3RhY2t9YCk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMudW5pdmVyc2FsLmlzU2VydmVyKSByZXR1cm47XHJcbiAgICAgICAgY29uc3Qga2V5ID0gdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIgPyBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChgJHtlcnJvci5tZXNzYWdlfSAke2Vycm9yLnN0YWNrfWApKSkgOiBlcnJvci5tZXNzYWdlO1xyXG4gICAgICAgIGlmICh0aGlzLmVycm9yTWFwW2tleV0gJiYgdGhpcy5lcnJvck1hcFtrZXldLmdldFRpbWUoKSA+IGRhdGUuZ2V0VGltZSgpIC0gNTAwMCkgcmV0dXJuO1xyXG4gICAgICAgIHRoaXMuZXJyb3JNYXBba2V5XSA9IGRhdGU7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdGVyID0gdGhpcy50b2FzdGVyIHx8IHRoaXMuaW5qZWN0b3IuZ2V0KFRPQVNURVJfU0VSVklDRSk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3Rlci5lcnJvcihgWyR7ZGF0ZX1dOiAke2Vycm9yLm1lc3NhZ2V9XFxuJHtlcnJvci5zdGFja31gKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFske2RhdGV9XTogJHtlcnJvci5tZXNzYWdlfVxcbiR7ZXJyb3Iuc3RhY2t9YCk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { EventEmitter, Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class EventsService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.eventForwarded = new EventEmitter();
|
|
6
|
+
this.stickyUpdated = new EventEmitter();
|
|
7
|
+
this.languageChanged = new EventEmitter();
|
|
8
|
+
this.sticky = false;
|
|
9
|
+
}
|
|
10
|
+
get isSticky() {
|
|
11
|
+
return this.sticky;
|
|
12
|
+
}
|
|
13
|
+
event(e) {
|
|
14
|
+
this.eventForwarded.emit(e);
|
|
15
|
+
}
|
|
16
|
+
updateSticky(sticky) {
|
|
17
|
+
this.sticky = sticky;
|
|
18
|
+
this.stickyUpdated.emit(sticky);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
EventsService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: EventsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
EventsService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: EventsService });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: EventsService, decorators: [{
|
|
24
|
+
type: Injectable
|
|
25
|
+
}], ctorParameters: function () { return []; } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2V2ZW50cy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUd2RCxNQUFNLE9BQU8sYUFBYTtJQVl0QjtRQUNJLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVMsQ0FBQztRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDakQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ2xELElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFURCxJQUFXLFFBQVE7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQVNELEtBQUssQ0FBQyxDQUFRO1FBQ1YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFlO1FBQ3hCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLENBQUM7OzBHQTFCUSxhQUFhOzhHQUFiLGFBQWE7MkZBQWIsYUFBYTtrQkFEekIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRXZlbnRzU2VydmljZSB7XHJcblxyXG4gICAgcmVhZG9ubHkgZXZlbnRGb3J3YXJkZWQ6IEV2ZW50RW1pdHRlcjxFdmVudD47XHJcbiAgICByZWFkb25seSBzdGlja3lVcGRhdGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj47XHJcbiAgICByZWFkb25seSBsYW5ndWFnZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+O1xyXG5cclxuICAgIHByaXZhdGUgc3RpY2t5OiBib29sZWFuO1xyXG5cclxuICAgIHB1YmxpYyBnZXQgaXNTdGlja3koKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RpY2t5O1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIHRoaXMuZXZlbnRGb3J3YXJkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEV2ZW50PigpO1xyXG4gICAgICAgIHRoaXMuc3RpY2t5VXBkYXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgICAgIHRoaXMuc3RpY2t5ID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgZXZlbnQoZTogRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmV2ZW50Rm9yd2FyZGVkLmVtaXQoZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdXBkYXRlU3RpY2t5KHN0aWNreTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3RpY2t5ID0gc3RpY2t5O1xyXG4gICAgICAgIHRoaXMuc3RpY2t5VXBkYXRlZC5lbWl0KHN0aWNreSk7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,47 @@
|
|
|
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
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class FormatterService {
|
|
7
|
+
constructor(language) {
|
|
8
|
+
this.language = language;
|
|
9
|
+
}
|
|
10
|
+
get defaultPrecision() {
|
|
11
|
+
return 2;
|
|
12
|
+
}
|
|
13
|
+
get defaultNumberFormat() {
|
|
14
|
+
return `num + ' mm'`;
|
|
15
|
+
}
|
|
16
|
+
get defaultDivider() {
|
|
17
|
+
return 1;
|
|
18
|
+
}
|
|
19
|
+
roundNumber(value, precision, divider) {
|
|
20
|
+
return MathUtils.round(value, this.getPrecision(precision), divider || this.defaultDivider);
|
|
21
|
+
}
|
|
22
|
+
formatNumber(value, format, precision, divider) {
|
|
23
|
+
precision = this.getPrecision(precision);
|
|
24
|
+
divider = divider || this.defaultDivider;
|
|
25
|
+
const num = ObjectUtils.isNumber(value) ? value : parseFloat(value) || 0;
|
|
26
|
+
const str = (num / divider).toLocaleString(this.language.currentLanguage, {
|
|
27
|
+
minimumFractionDigits: precision,
|
|
28
|
+
maximumFractionDigits: precision
|
|
29
|
+
});
|
|
30
|
+
return ObjectUtils.evaluate(format || this.defaultNumberFormat, { num: str });
|
|
31
|
+
}
|
|
32
|
+
formatMillimeter(value, precision, divider) {
|
|
33
|
+
return this.formatNumber(value, `num + ' mm'`, precision, divider);
|
|
34
|
+
}
|
|
35
|
+
getPrecision(precision) {
|
|
36
|
+
return ObjectUtils.isNumber(precision) ? precision : this.defaultPrecision;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
FormatterService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: FormatterService, deps: [{ token: LANGUAGE_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
40
|
+
FormatterService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: FormatterService });
|
|
41
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: FormatterService, decorators: [{
|
|
42
|
+
type: Injectable
|
|
43
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
44
|
+
type: Inject,
|
|
45
|
+
args: [LANGUAGE_SERVICE]
|
|
46
|
+
}] }]; } });
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2Zvcm1hdHRlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxNQUFNLEVBQUUsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2pELE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFNBQVMsRUFBQyxNQUFNLHFCQUFxQixDQUFDOztBQUc5QyxNQUFNLE9BQU8sZ0JBQWdCO0lBY3pCLFlBQTZDLFFBQTBCO1FBQTFCLGFBQVEsR0FBUixRQUFRLENBQWtCO0lBRXZFLENBQUM7SUFkRCxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNuQixPQUFPLGFBQWEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2QsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBTUQsV0FBVyxDQUFDLEtBQWEsRUFBRSxTQUFrQixFQUFFLE9BQWdCO1FBQzNELE9BQU8sU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsRUFBRSxPQUFPLElBQUksSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ2hHLENBQUM7SUFFRCxZQUFZLENBQUMsS0FBc0IsRUFBRSxNQUFlLEVBQUUsU0FBa0IsRUFBRSxPQUFnQjtRQUN0RixTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN6QyxPQUFPLEdBQUcsT0FBTyxJQUFJLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDekMsTUFBTSxHQUFHLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQVMsS0FBSyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQVMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pGLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxHQUFHLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRTtZQUN0RSxxQkFBcUIsRUFBRSxTQUFTO1lBQ2hDLHFCQUFxQixFQUFFLFNBQVM7U0FDbkMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQsZ0JBQWdCLENBQUMsS0FBYSxFQUFFLFNBQWtCLEVBQUUsT0FBZ0I7UUFDaEUsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFUyxZQUFZLENBQUMsU0FBaUI7UUFDcEMsT0FBTyxXQUFXLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUMvRSxDQUFDOzs2R0F2Q1EsZ0JBQWdCLGtCQWNMLGdCQUFnQjtpSEFkM0IsZ0JBQWdCOzJGQUFoQixnQkFBZ0I7a0JBRDVCLFVBQVU7OzBCQWVNLE1BQU07MkJBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJbmplY3QsIEluamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7SUxhbmd1YWdlU2VydmljZSwgTEFOR1VBR0VfU0VSVklDRX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7TWF0aFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC51dGlsc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgRm9ybWF0dGVyU2VydmljZSB7XHJcblxyXG4gICAgZ2V0IGRlZmF1bHRQcmVjaXNpb24oKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gMjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGVmYXVsdE51bWJlckZvcm1hdCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBgbnVtICsgJyBtbSdgO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBkZWZhdWx0RGl2aWRlcigpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiAxO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoTEFOR1VBR0VfU0VSVklDRSkgcHVibGljIGxhbmd1YWdlOiBJTGFuZ3VhZ2VTZXJ2aWNlKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHJvdW5kTnVtYmVyKHZhbHVlOiBudW1iZXIsIHByZWNpc2lvbj86IG51bWJlciwgZGl2aWRlcj86IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIE1hdGhVdGlscy5yb3VuZCh2YWx1ZSwgdGhpcy5nZXRQcmVjaXNpb24ocHJlY2lzaW9uKSwgZGl2aWRlciB8fCB0aGlzLmRlZmF1bHREaXZpZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3JtYXROdW1iZXIodmFsdWU6IG51bWJlciB8IHN0cmluZywgZm9ybWF0Pzogc3RyaW5nLCBwcmVjaXNpb24/OiBudW1iZXIsIGRpdmlkZXI/OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIHByZWNpc2lvbiA9IHRoaXMuZ2V0UHJlY2lzaW9uKHByZWNpc2lvbik7XHJcbiAgICAgICAgZGl2aWRlciA9IGRpdmlkZXIgfHwgdGhpcy5kZWZhdWx0RGl2aWRlcjtcclxuICAgICAgICBjb25zdCBudW0gPSBPYmplY3RVdGlscy5pc051bWJlcih2YWx1ZSkgPyA8bnVtYmVyPnZhbHVlIDogcGFyc2VGbG9hdCg8c3RyaW5nPnZhbHVlKSB8fCAwO1xyXG4gICAgICAgIGNvbnN0IHN0ciA9IChudW0gLyBkaXZpZGVyKS50b0xvY2FsZVN0cmluZyh0aGlzLmxhbmd1YWdlLmN1cnJlbnRMYW5ndWFnZSwge1xyXG4gICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IHByZWNpc2lvbixcclxuICAgICAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBwcmVjaXNpb25cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuZXZhbHVhdGUoZm9ybWF0IHx8IHRoaXMuZGVmYXVsdE51bWJlckZvcm1hdCwge251bTogc3RyfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZm9ybWF0TWlsbGltZXRlcih2YWx1ZTogbnVtYmVyLCBwcmVjaXNpb24/OiBudW1iZXIsIGRpdmlkZXI/OiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1hdE51bWJlcih2YWx1ZSwgYG51bSArICcgbW0nYCwgcHJlY2lzaW9uLCBkaXZpZGVyKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2V0UHJlY2lzaW9uKHByZWNpc2lvbjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gT2JqZWN0VXRpbHMuaXNOdW1iZXIocHJlY2lzaW9uKSA/IHByZWNpc2lvbiA6IHRoaXMuZGVmYXVsdFByZWNpc2lvbjtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { EventEmitter, Injectable } from "@angular/core";
|
|
2
|
+
import { ObjectUtils } from "../utils/object.utils";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class GlobalTemplateService {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.templatesUpdated = new EventEmitter();
|
|
7
|
+
this.globalTemplates = {};
|
|
8
|
+
this.componentModifiers = {};
|
|
9
|
+
}
|
|
10
|
+
get(id, component) {
|
|
11
|
+
const template = this.globalTemplates[id];
|
|
12
|
+
if (!template)
|
|
13
|
+
return undefined;
|
|
14
|
+
const modifier = this.componentModifiers[id];
|
|
15
|
+
if (ObjectUtils.isFunction(modifier) && component) {
|
|
16
|
+
modifier(component);
|
|
17
|
+
}
|
|
18
|
+
return template;
|
|
19
|
+
}
|
|
20
|
+
add(id, template) {
|
|
21
|
+
this.globalTemplates[id] = template;
|
|
22
|
+
this.templatesUpdated.emit();
|
|
23
|
+
}
|
|
24
|
+
remove(id) {
|
|
25
|
+
delete this.globalTemplates[id];
|
|
26
|
+
this.templatesUpdated.emit();
|
|
27
|
+
}
|
|
28
|
+
addComponentModifier(id, modifier) {
|
|
29
|
+
this.componentModifiers[id] = modifier;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
GlobalTemplateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GlobalTemplateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
33
|
+
GlobalTemplateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GlobalTemplateService });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: GlobalTemplateService, decorators: [{
|
|
35
|
+
type: Injectable
|
|
36
|
+
}], ctorParameters: function () { return []; } });
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2xvYmFsLXRlbXBsYXRlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3NlcnZpY2VzL2dsb2JhbC10ZW1wbGF0ZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUUsVUFBVSxFQUFjLE1BQU0sZUFBZSxDQUFDO0FBQ3BFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7QUFJbEQsTUFBTSxPQUFPLHFCQUFxQjtJQU85QjtRQUNJLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ2hELElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELEdBQUcsQ0FBQyxFQUFVLEVBQUUsU0FBZTtRQUMzQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxRQUFRO1lBQUUsT0FBTyxTQUFTLENBQUM7UUFDaEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksV0FBVyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxTQUFTLEVBQUU7WUFDL0MsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQ3ZCO1FBQ0QsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUVELEdBQUcsQ0FBQyxFQUFVLEVBQUUsUUFBMEI7UUFDdEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxNQUFNLENBQUMsRUFBVTtRQUNiLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELG9CQUFvQixDQUFDLEVBQVUsRUFBRSxRQUFpQztRQUM5RCxJQUFJLENBQUMsa0JBQWtCLENBQUMsRUFBRSxDQUFDLEdBQUcsUUFBUSxDQUFDO0lBQzNDLENBQUM7O2tIQW5DUSxxQkFBcUI7c0hBQXJCLHFCQUFxQjsyRkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdGFibGUsIFRlbXBsYXRlUmVmfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge09iamVjdFV0aWxzfSBmcm9tIFwiLi4vdXRpbHMvb2JqZWN0LnV0aWxzXCI7XHJcbmltcG9ydCB7R2xvYmFsQ29tcG9uZW50TW9kaWZpZXIsIElHbG9iYWxUZW1wbGF0ZXN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEdsb2JhbFRlbXBsYXRlU2VydmljZSBpbXBsZW1lbnRzIElHbG9iYWxUZW1wbGF0ZXMge1xyXG5cclxuICAgIHJlYWRvbmx5IHRlbXBsYXRlc1VwZGF0ZWQ6IEV2ZW50RW1pdHRlcjx2b2lkPjtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZ2xvYmFsVGVtcGxhdGVzOiB7IFtpZDogc3RyaW5nXTogVGVtcGxhdGVSZWY8YW55PiB9O1xyXG4gICAgcHJvdGVjdGVkIGNvbXBvbmVudE1vZGlmaWVyczogeyBbaWQ6IHN0cmluZ106IEdsb2JhbENvbXBvbmVudE1vZGlmaWVyIH07XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy50ZW1wbGF0ZXNVcGRhdGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAgICAgdGhpcy5nbG9iYWxUZW1wbGF0ZXMgPSB7fTtcclxuICAgICAgICB0aGlzLmNvbXBvbmVudE1vZGlmaWVycyA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGdldChpZDogc3RyaW5nLCBjb21wb25lbnQ/OiBhbnkpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZSA9IHRoaXMuZ2xvYmFsVGVtcGxhdGVzW2lkXTtcclxuICAgICAgICBpZiAoIXRlbXBsYXRlKSByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgICAgIGNvbnN0IG1vZGlmaWVyID0gdGhpcy5jb21wb25lbnRNb2RpZmllcnNbaWRdO1xyXG4gICAgICAgIGlmIChPYmplY3RVdGlscy5pc0Z1bmN0aW9uKG1vZGlmaWVyKSAmJiBjb21wb25lbnQpIHtcclxuICAgICAgICAgICAgbW9kaWZpZXIoY29tcG9uZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRlbXBsYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGFkZChpZDogc3RyaW5nLCB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55Pik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZ2xvYmFsVGVtcGxhdGVzW2lkXSA9IHRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzVXBkYXRlZC5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVtb3ZlKGlkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgICAgICBkZWxldGUgdGhpcy5nbG9iYWxUZW1wbGF0ZXNbaWRdO1xyXG4gICAgICAgIHRoaXMudGVtcGxhdGVzVXBkYXRlZC5lbWl0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgYWRkQ29tcG9uZW50TW9kaWZpZXIoaWQ6IHN0cmluZywgbW9kaWZpZXI6IEdsb2JhbENvbXBvbmVudE1vZGlmaWVyKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jb21wb25lbnRNb2RpZmllcnNbaWRdID0gbW9kaWZpZXI7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { EventEmitter, Injectable } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class IconService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.iconsLoaded = new EventEmitter();
|
|
6
|
+
this.disabled = false;
|
|
7
|
+
}
|
|
8
|
+
get isDisabled() {
|
|
9
|
+
return this.disabled;
|
|
10
|
+
}
|
|
11
|
+
set isDisabled(value) {
|
|
12
|
+
this.disabled = value;
|
|
13
|
+
this.iconsLoaded.emit();
|
|
14
|
+
}
|
|
15
|
+
getIcon(icon, activeIcon, active) {
|
|
16
|
+
icon = typeof icons == "undefined" ? icon : (icons[icon] || icon);
|
|
17
|
+
activeIcon = typeof icons == "undefined" ? activeIcon : (icons[activeIcon] || icon);
|
|
18
|
+
return Promise.resolve(active ? activeIcon : icon);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
IconService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
22
|
+
IconService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: IconService });
|
|
23
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: IconService, decorators: [{
|
|
24
|
+
type: Injectable
|
|
25
|
+
}], ctorParameters: function () { return []; } });
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9zZXJ2aWNlcy9pY29uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUMsTUFBTSxlQUFlLENBQUM7O0FBUXZELE1BQU0sT0FBTyxXQUFXO0lBZXBCO1FBQ0ksSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzNDLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQzFCLENBQUM7SUFoQkQsSUFBSSxVQUFVO1FBQ1YsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFVBQVUsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQVdELE9BQU8sQ0FBQyxJQUFZLEVBQUUsVUFBa0IsRUFBRSxNQUFlO1FBQ3JELElBQUksR0FBRyxPQUFPLEtBQUssSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUM7UUFDbEUsVUFBVSxHQUFHLE9BQU8sS0FBSyxJQUFJLFdBQVcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQztRQUNwRixPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7O3dHQXhCUSxXQUFXOzRHQUFYLFdBQVc7MkZBQVgsV0FBVztrQkFEdkIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RXZlbnRFbWl0dGVyLCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0lJY29uU2VydmljZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuZGVjbGFyZSBjb25zdCBpY29uczoge1xyXG4gICAgW2ljb246IHN0cmluZ106IHN0cmluZztcclxufTtcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEljb25TZXJ2aWNlIGltcGxlbWVudHMgSUljb25TZXJ2aWNlIHtcclxuXHJcbiAgICBnZXQgaXNEaXNhYmxlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaXNhYmxlZDtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgaXNEaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmljb25zTG9hZGVkLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmVhZG9ubHkgaWNvbnNMb2FkZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG5cclxuICAgIHByb3RlY3RlZCBkaXNhYmxlZDogYm9vbGVhbjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmljb25zTG9hZGVkID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEljb24oaWNvbjogc3RyaW5nLCBhY3RpdmVJY29uOiBzdHJpbmcsIGFjdGl2ZTogYm9vbGVhbik6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgaWNvbiA9IHR5cGVvZiBpY29ucyA9PSBcInVuZGVmaW5lZFwiID8gaWNvbiA6IChpY29uc1tpY29uXSB8fCBpY29uKTtcclxuICAgICAgICBhY3RpdmVJY29uID0gdHlwZW9mIGljb25zID09IFwidW5kZWZpbmVkXCIgPyBhY3RpdmVJY29uIDogKGljb25zW2FjdGl2ZUljb25dIHx8IGljb24pO1xyXG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoYWN0aXZlID8gYWN0aXZlSWNvbiA6IGljb24pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Injectable } from "@angular/core";
|
|
2
|
+
import { BehaviorSubject, combineLatest } from "rxjs";
|
|
3
|
+
import { map } from "rxjs/operators";
|
|
4
|
+
import { StaticLanguageService } from "./static-language.service";
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class LanguageService extends StaticLanguageService {
|
|
7
|
+
get currentLanguage() {
|
|
8
|
+
return this.currentLang || this.defaultLanguage;
|
|
9
|
+
}
|
|
10
|
+
set currentLanguage(lang) {
|
|
11
|
+
this.useLanguage(lang).then(() => {
|
|
12
|
+
this.events.languageChanged.emit(lang);
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
get settings() {
|
|
16
|
+
const settings = this.languageSettings.value;
|
|
17
|
+
return !settings ? {} : settings.settings[this.currentLanguage] || {};
|
|
18
|
+
}
|
|
19
|
+
get $settings() {
|
|
20
|
+
this.loadSettings().then(s => this.languageSettings.next(s));
|
|
21
|
+
return combineLatest([this.languageSettings, this.events.languageChanged]).pipe(map(([settings, lang]) => {
|
|
22
|
+
return !settings ? {} : settings.settings[lang] || {};
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
initService() {
|
|
26
|
+
this.client.setExtraRequestParam("language", "de");
|
|
27
|
+
this.translationRequests = {};
|
|
28
|
+
this.languageSettings = new BehaviorSubject(null);
|
|
29
|
+
if (this.universal.isServer)
|
|
30
|
+
return;
|
|
31
|
+
window["setLanguage"] = (lang) => {
|
|
32
|
+
this.currentLanguage = lang;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
async initFromSettings() {
|
|
36
|
+
const defaultLanguage = this.defaultLanguage;
|
|
37
|
+
const settings = await this.loadSettings();
|
|
38
|
+
this.languageSettings.next(settings);
|
|
39
|
+
const devLanguages = settings.devLanguages || [];
|
|
40
|
+
this.languageList = (settings.languages || []).filter(lang => {
|
|
41
|
+
return devLanguages.indexOf(lang) < 0;
|
|
42
|
+
});
|
|
43
|
+
const lang = this.languages.indexOf(defaultLanguage) < 0 ? settings.defaultLanguage : defaultLanguage;
|
|
44
|
+
await this.useLanguage(lang);
|
|
45
|
+
this.events.languageChanged.emit(lang);
|
|
46
|
+
}
|
|
47
|
+
async getTranslation(key, params = null) {
|
|
48
|
+
if (!key)
|
|
49
|
+
return "";
|
|
50
|
+
try {
|
|
51
|
+
const lowerKey = key.toLocaleLowerCase();
|
|
52
|
+
const dict = await this.loadDictionary();
|
|
53
|
+
if (lowerKey in dict) {
|
|
54
|
+
return this.interpolate(dict[lowerKey], params);
|
|
55
|
+
}
|
|
56
|
+
return this.interpolate(key, params);
|
|
57
|
+
}
|
|
58
|
+
catch (reason) {
|
|
59
|
+
console.log("ERROR IN TRANSLATIONS", reason);
|
|
60
|
+
return key;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async useLanguage(lang) {
|
|
64
|
+
lang = this.languages.indexOf(lang) < 0 ? this.languages[0] : lang;
|
|
65
|
+
this.client.setExtraRequestParam("language", lang);
|
|
66
|
+
if (lang == this.currentLang)
|
|
67
|
+
return this.dictionary;
|
|
68
|
+
this.storage.set("language", lang);
|
|
69
|
+
this.currentLang = lang;
|
|
70
|
+
const dict = await this.loadDictionary();
|
|
71
|
+
this.translations[lang] = dict;
|
|
72
|
+
return dict;
|
|
73
|
+
}
|
|
74
|
+
loadDictionary() {
|
|
75
|
+
const lang = this.currentLanguage;
|
|
76
|
+
this.translationRequests[lang] = this.translationRequests[lang] || new Promise(resolve => {
|
|
77
|
+
this.httpClient.get(`${this.config.translationUrl}${lang}`).toPromise().then(response => {
|
|
78
|
+
response = response || {};
|
|
79
|
+
resolve(Object.keys(response).reduce((result, key) => {
|
|
80
|
+
result[key.toLocaleLowerCase()] = response[key];
|
|
81
|
+
return result;
|
|
82
|
+
}, {}));
|
|
83
|
+
}, () => {
|
|
84
|
+
resolve({});
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
return this.translationRequests[lang];
|
|
88
|
+
}
|
|
89
|
+
loadSettings() {
|
|
90
|
+
this.settingsPromise = this.settingsPromise || this.client.get(`${this.config.translationUrl}languageSettings`).toPromise()
|
|
91
|
+
.then((settings) => {
|
|
92
|
+
return settings;
|
|
93
|
+
}, () => {
|
|
94
|
+
return {
|
|
95
|
+
languages: ["de", "en", "hu"],
|
|
96
|
+
devLanguages: [],
|
|
97
|
+
defaultLanguage: "de",
|
|
98
|
+
settings: {
|
|
99
|
+
de: {},
|
|
100
|
+
hu: {},
|
|
101
|
+
end: {}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
});
|
|
105
|
+
return this.settingsPromise;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
LanguageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: LanguageService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
109
|
+
LanguageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: LanguageService });
|
|
110
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: LanguageService, decorators: [{
|
|
111
|
+
type: Injectable
|
|
112
|
+
}] });
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFuZ3VhZ2Uuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvc2VydmljZXMvbGFuZ3VhZ2Uuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBQyxlQUFlLEVBQUUsYUFBYSxFQUFhLE1BQU0sTUFBTSxDQUFDO0FBQ2hFLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSwyQkFBMkIsQ0FBQzs7QUFHaEUsTUFBTSxPQUFPLGVBQWdCLFNBQVEscUJBQXFCO0lBTXRELElBQUksZUFBZTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQ3BELENBQUM7SUFFRCxJQUFJLGVBQWUsQ0FBQyxJQUFZO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRTtZQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztRQUM3QyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxRSxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0Is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QUNqRCxNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ2hELE9BQU8sTUFBTSxDQUFDO2dCQUNsQixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNaLENBQUMsRUFBRSxHQUFHLEVBQUU7Z0JBQ0osT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLENBQUMsQ0FBQyxDQUFDO1FBQ1AsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRVMsWUFBWTtRQUNsQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsa0JBQWtCLENBQUMsQ0FBQyxTQUFTLEVBQUU7YUFDdEgsSUFBSSxDQUNELENBQUMsUUFBMkIsRUFBRSxFQUFFO1lBQzVCLE9BQU8sUUFBUSxDQUFDO1FBQ3BCLENBQUMsRUFBRSxHQUFHLEVBQUU7WUFDSixPQUFPO2dCQUNILFNBQVMsRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO2dCQUM3QixZQUFZLEVBQUUsRUFBRTtnQkFDaEIsZUFBZSxFQUFFLElBQUk7Z0JBQ3JCLFFBQVEsRUFBRTtvQkFDTixFQUFFLEVBQUUsRUFBRTtvQkFDTixFQUFFLEVBQUUsRUFBRTtvQkFDTixHQUFHLEVBQUUsRUFBRTtpQkFDVjthQUNKLENBQUM7UUFDTixDQUFDLENBQ0osQ0FBQztRQUNOLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUNoQyxDQUFDOzs0R0FoSFEsZUFBZTtnSEFBZixlQUFlOzJGQUFmLGVBQWU7a0JBRDNCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0luamVjdGFibGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBPYnNlcnZhYmxlfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQge21hcH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7SUxhbmd1YWdlU2V0dGluZ3MsIElUcmFuc2xhdGlvbnN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtTdGF0aWNMYW5ndWFnZVNlcnZpY2V9IGZyb20gXCIuL3N0YXRpYy1sYW5ndWFnZS5zZXJ2aWNlXCI7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBMYW5ndWFnZVNlcnZpY2UgZXh0ZW5kcyBTdGF0aWNMYW5ndWFnZVNlcnZpY2Uge1xyXG5cclxuICAgIHByb3RlY3RlZCB0cmFuc2xhdGlvblJlcXVlc3RzOiBJVHJhbnNsYXRpb25zO1xyXG4gICAgcHJvdGVjdGVkIHNldHRpbmdzUHJvbWlzZTogUHJvbWlzZTxJTGFuZ3VhZ2VTZXR0aW5ncz47XHJcbiAgICBwcm90ZWN0ZWQgbGFuZ3VhZ2VTZXR0aW5nczogQmVoYXZpb3JTdWJqZWN0PElMYW5ndWFnZVNldHRpbmdzPjtcclxuXHJcbiAgICBnZXQgY3VycmVudExhbmd1YWdlKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudExhbmcgfHwgdGhpcy5kZWZhdWx0TGFuZ3VhZ2U7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IGN1cnJlbnRMYW5ndWFnZShsYW5nOiBzdHJpbmcpIHtcclxuICAgICAgICB0aGlzLnVzZUxhbmd1YWdlKGxhbmcpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50cy5sYW5ndWFnZUNoYW5nZWQuZW1pdChsYW5nKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgc2V0dGluZ3MoKTogSUxhbmd1YWdlU2V0dGluZ3Mge1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gdGhpcy5sYW5ndWFnZVNldHRpbmdzLnZhbHVlO1xyXG4gICAgICAgIHJldHVybiAhc2V0dGluZ3MgPyB7fSA6IHNldHRpbmdzLnNldHRpbmdzW3RoaXMuY3VycmVudExhbmd1YWdlXSB8fCB7fTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgJHNldHRpbmdzKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgdGhpcy5sb2FkU2V0dGluZ3MoKS50aGVuKHMgPT4gdGhpcy5sYW5ndWFnZVNldHRpbmdzLm5leHQocykpO1xyXG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFt0aGlzLmxhbmd1YWdlU2V0dGluZ3MsIHRoaXMuZXZlbnRzLmxhbmd1YWdlQ2hhbmdlZF0pLnBpcGUobWFwKChbc2V0dGluZ3MsIGxhbmddKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAhc2V0dGluZ3MgPyB7fSA6IHNldHRpbmdzLnNldHRpbmdzW2xhbmcgYXMgc3RyaW5nXSB8fCB7fTtcclxuICAgICAgICB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGluaXRTZXJ2aWNlKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY2xpZW50LnNldEV4dHJhUmVxdWVzdFBhcmFtKFwibGFuZ3VhZ2VcIiwgXCJkZVwiKTtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9uUmVxdWVzdHMgPSB7fTtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PElMYW5ndWFnZVNldHRpbmdzPihudWxsKTtcclxuICAgICAgICBpZiAodGhpcy51bml2ZXJzYWwuaXNTZXJ2ZXIpIHJldHVybjtcclxuICAgICAgICB3aW5kb3dbXCJzZXRMYW5ndWFnZVwiXSA9IChsYW5nOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFuZ3VhZ2UgPSBsYW5nO1xyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdEZyb21TZXR0aW5ncygpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGRlZmF1bHRMYW5ndWFnZSA9IHRoaXMuZGVmYXVsdExhbmd1YWdlO1xyXG4gICAgICAgIGNvbnN0IHNldHRpbmdzID0gYXdhaXQgdGhpcy5sb2FkU2V0dGluZ3MoKTtcclxuICAgICAgICB0aGlzLmxhbmd1YWdlU2V0dGluZ3MubmV4dChzZXR0aW5ncyk7XHJcbiAgICAgICAgY29uc3QgZGV2TGFuZ3VhZ2VzID0gc2V0dGluZ3MuZGV2TGFuZ3VhZ2VzIHx8IFtdO1xyXG4gICAgICAgIHRoaXMubGFuZ3VhZ2VMaXN0ID0gKHNldHRpbmdzLmxhbmd1YWdlcyB8fCBbXSkuZmlsdGVyKGxhbmcgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZGV2TGFuZ3VhZ2VzLmluZGV4T2YobGFuZykgPCAwO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGxhbmcgPSB0aGlzLmxhbmd1YWdlcy5pbmRleE9mKGRlZmF1bHRMYW5ndWFnZSkgPCAwID8gc2V0dGluZ3MuZGVmYXVsdExhbmd1YWdlIDogZGVmYXVsdExhbmd1YWdlO1xyXG4gICAgICAgIGF3YWl0IHRoaXMudXNlTGFuZ3VhZ2UobGFuZyk7XHJcbiAgICAgICAgdGhpcy5ldmVudHMubGFuZ3VhZ2VDaGFuZ2VkLmVtaXQobGFuZyk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0VHJhbnNsYXRpb24oa2V5OiBzdHJpbmcsIHBhcmFtczogYW55ID0gbnVsbCk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICAgICAgaWYgKCFrZXkpIHJldHVybiBcIlwiO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvd2VyS2V5ID0ga2V5LnRvTG9jYWxlTG93ZXJDYXNlKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGRpY3QgPSBhd2FpdCB0aGlzLmxvYWREaWN0aW9uYXJ5KCk7XHJcbiAgICAgICAgICAgIGlmIChsb3dlcktleSBpbiBkaWN0KSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZShkaWN0W2xvd2VyS2V5XSwgcGFyYW1zKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pbnRlcnBvbGF0ZShrZXksIHBhcmFtcyk7XHJcbiAgICAgICAgfSBjYXRjaCAocmVhc29uKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiRVJST1IgSU4gVFJBTlNMQVRJT05TXCIsIHJlYXNvbik7XHJcbiAgICAgICAgICAgIHJldHVybiBrZXk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhc3luYyB1c2VMYW5ndWFnZShsYW5nOiBzdHJpbmcpOiBQcm9taXNlPElUcmFuc2xhdGlvbnM+IHtcclxuICAgICAgICBsYW5nID0gdGhpcy5sYW5ndWFnZXMuaW5kZXhPZihsYW5nKSA8IDAgPyB0aGlzLmxhbmd1YWdlc1swXSA6IGxhbmc7XHJcbiAgICAgICAgdGhpcy5jbGllbnQuc2V0RXh0cmFSZXF1ZXN0UGFyYW0oXCJsYW5ndWFnZVwiLCBsYW5nKTtcclxuICAgICAgICBpZiAobGFuZyA9PSB0aGlzLmN1cnJlbnRMYW5nKSByZXR1cm4gdGhpcy5kaWN0aW9uYXJ5O1xyXG4gICAgICAgIHRoaXMuc3RvcmFnZS5zZXQoXCJsYW5ndWFnZVwiLCBsYW5nKTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRMYW5nID0gbGFuZztcclxuICAgICAgICBjb25zdCBkaWN0ID0gYXdhaXQgdGhpcy5sb2FkRGljdGlvbmFyeSgpO1xyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zW2xhbmddID0gZGljdDtcclxuICAgICAgICByZXR1cm4gZGljdDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgbG9hZERpY3Rpb25hcnkoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBsYW5nID0gdGhpcy5jdXJyZW50TGFuZ3VhZ2U7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvblJlcXVlc3RzW2xhbmddID0gdGhpcy50cmFuc2xhdGlvblJlcXVlc3RzW2xhbmddIHx8IG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmh0dHBDbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnLnRyYW5zbGF0aW9uVXJsfSR7bGFuZ31gKS50b1Byb21pc2UoKS50aGVuKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gcmVzcG9uc2UgfHwge307XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKE9iamVjdC5rZXlzKHJlc3BvbnNlKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2tleS50b0xvY2FsZUxvd2VyQ2FzZSgpXSA9IHJlc3BvbnNlW2tleV07XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH0sIHt9KSk7XHJcbiAgICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe30pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGlvblJlcXVlc3RzW2xhbmddO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBsb2FkU2V0dGluZ3MoKTogUHJvbWlzZTxJTGFuZ3VhZ2VTZXR0aW5ncz4ge1xyXG4gICAgICAgIHRoaXMuc2V0dGluZ3NQcm9taXNlID0gdGhpcy5zZXR0aW5nc1Byb21pc2UgfHwgdGhpcy5jbGllbnQuZ2V0KGAke3RoaXMuY29uZmlnLnRyYW5zbGF0aW9uVXJsfWxhbmd1YWdlU2V0dGluZ3NgKS50b1Byb21pc2UoKVxyXG4gICAgICAgICAgICAudGhlbihcclxuICAgICAgICAgICAgICAgIChzZXR0aW5nczogSUxhbmd1YWdlU2V0dGluZ3MpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2V0dGluZ3M7XHJcbiAgICAgICAgICAgICAgICB9LCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzOiBbXCJkZVwiLCBcImVuXCIsIFwiaHVcIl0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRldkxhbmd1YWdlczogW10sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRMYW5ndWFnZTogXCJkZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGU6IHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHU6IHt9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiB7fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZXR0aW5nc1Byb21pc2U7XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Inject, Injectable } from "@angular/core";
|
|
2
|
+
import { API_SERVICE } from "../common-types";
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class OpenApiService {
|
|
5
|
+
constructor(api) {
|
|
6
|
+
this.api = api;
|
|
7
|
+
}
|
|
8
|
+
getSchemas() {
|
|
9
|
+
this.schemasPromise = this.schemasPromise || new Promise((resolve => {
|
|
10
|
+
this.api.get("api-docs").then(res => {
|
|
11
|
+
const schemas = res.components?.schemas || res.definitions || {};
|
|
12
|
+
Object.values(schemas).forEach(schema => {
|
|
13
|
+
Object.keys(schema.properties || {}).forEach(p => {
|
|
14
|
+
schema.properties[p].id = p;
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
resolve(schemas);
|
|
18
|
+
}, () => {
|
|
19
|
+
resolve({});
|
|
20
|
+
});
|
|
21
|
+
}));
|
|
22
|
+
return this.schemasPromise;
|
|
23
|
+
}
|
|
24
|
+
async getSchema(name) {
|
|
25
|
+
const schemas = await this.getSchemas();
|
|
26
|
+
const schema = schemas[name];
|
|
27
|
+
if (!schema)
|
|
28
|
+
return null;
|
|
29
|
+
return schemas[name];
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
OpenApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: OpenApiService, deps: [{ token: API_SERVICE }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
33
|
+
OpenApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: OpenApiService });
|
|
34
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: OpenApiService, decorators: [{
|
|
35
|
+
type: Injectable
|
|
36
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
|
37
|
+
type: Inject,
|
|
38
|
+
args: [API_SERVICE]
|
|
39
|
+
}] }]; } });
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvc2VydmljZXMvb3Blbi1hcGkuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsTUFBTSxFQUFFLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUMsV0FBVyxFQUErQyxNQUFNLGlCQUFpQixDQUFDOztBQUcxRixNQUFNLE9BQU8sY0FBYztJQUl2QixZQUEwQyxHQUFnQjtRQUFoQixRQUFHLEdBQUgsR0FBRyxDQUFhO0lBRTFELENBQUM7SUFFRCxVQUFVO1FBQ04sSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDaEUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQyxNQUFNLE9BQU8sR0FBb0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxPQUFPLElBQUksR0FBRyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQ2xGLE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNwQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO3dCQUM3QyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7b0JBQ2hDLENBQUMsQ0FBQyxDQUFDO2dCQUNQLENBQUMsQ0FBQyxDQUFDO2dCQUNILE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNyQixDQUFDLEVBQUUsR0FBRyxFQUFFO2dCQUNKLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUNoQixDQUFDLENBQUMsQ0FBQztRQUNQLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUVELEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBWTtRQUN4QixNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUN4QyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQztRQUN6QixPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDOzsyR0E5QlEsY0FBYyxrQkFJSCxXQUFXOytHQUp0QixjQUFjOzJGQUFkLGNBQWM7a0JBRDFCLFVBQVU7OzBCQUtNLE1BQU07MkJBQUMsV0FBVyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0LCBJbmplY3RhYmxlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0FQSV9TRVJWSUNFLCBJQXBpU2VydmljZSwgSU9wZW5BcGlTY2hlbWEsIElPcGVuQXBpU2NoZW1hc30gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgT3BlbkFwaVNlcnZpY2Uge1xyXG5cclxuICAgIHByaXZhdGUgc2NoZW1hc1Byb21pc2U6IFByb21pc2U8SU9wZW5BcGlTY2hlbWFzPjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihASW5qZWN0KEFQSV9TRVJWSUNFKSByZWFkb25seSBhcGk6IElBcGlTZXJ2aWNlKSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGdldFNjaGVtYXMoKTogUHJvbWlzZTxJT3BlbkFwaVNjaGVtYXM+IHtcclxuICAgICAgICB0aGlzLnNjaGVtYXNQcm9taXNlID0gdGhpcy5zY2hlbWFzUHJvbWlzZSB8fCBuZXcgUHJvbWlzZSgocmVzb2x2ZSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBpLmdldChcImFwaS1kb2NzXCIpLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHNjaGVtYXM6IElPcGVuQXBpU2NoZW1hcyA9IHJlcy5jb21wb25lbnRzPy5zY2hlbWFzIHx8IHJlcy5kZWZpbml0aW9ucyB8fCB7fTtcclxuICAgICAgICAgICAgICAgIE9iamVjdC52YWx1ZXMoc2NoZW1hcykuZm9yRWFjaChzY2hlbWEgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9KS5mb3JFYWNoKHAgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBzY2hlbWEucHJvcGVydGllc1twXS5pZCA9IHA7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoc2NoZW1hcyk7XHJcbiAgICAgICAgICAgIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUoe30pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9KSk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NoZW1hc1Byb21pc2U7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZ2V0U2NoZW1hKG5hbWU6IHN0cmluZyk6IFByb21pc2U8SU9wZW5BcGlTY2hlbWE+IHtcclxuICAgICAgICBjb25zdCBzY2hlbWFzID0gYXdhaXQgdGhpcy5nZXRTY2hlbWFzKCk7XHJcbiAgICAgICAgY29uc3Qgc2NoZW1hID0gc2NoZW1hc1tuYW1lXTtcclxuICAgICAgICBpZiAoIXNjaGVtYSkgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgcmV0dXJuIHNjaGVtYXNbbmFtZV07XHJcbiAgICB9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { EventEmitter, Inject, Injectable, NgZone } from "@angular/core";
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PromiseService {
|
|
4
|
+
constructor(zone) {
|
|
5
|
+
this.zone = zone;
|
|
6
|
+
this.promiseCount = 0;
|
|
7
|
+
this.promiseChanged = new EventEmitter();
|
|
8
|
+
}
|
|
9
|
+
get count() {
|
|
10
|
+
return this.promiseCount;
|
|
11
|
+
}
|
|
12
|
+
get onChanged() {
|
|
13
|
+
return this.promiseChanged;
|
|
14
|
+
}
|
|
15
|
+
create(executor) {
|
|
16
|
+
return this.add(this.zone.runOutsideAngular(() => new Promise(executor)));
|
|
17
|
+
}
|
|
18
|
+
all(promises) {
|
|
19
|
+
return this.add(this.zone.runOutsideAngular(() => Promise.all(promises)));
|
|
20
|
+
}
|
|
21
|
+
resolve(value) {
|
|
22
|
+
return this.add(this.zone.runOutsideAngular(() => Promise.resolve(value)));
|
|
23
|
+
}
|
|
24
|
+
reject(value) {
|
|
25
|
+
return this.add(this.zone.runOutsideAngular(() => Promise.reject(value)));
|
|
26
|
+
}
|
|
27
|
+
promiseFinished() {
|
|
28
|
+
if (this.promiseCount == 0)
|
|
29
|
+
return;
|
|
30
|
+
this.promiseCount--;
|
|
31
|
+
this.promiseChanged.emit(this.promiseCount);
|
|
32
|
+
}
|
|
33
|
+
add(promise) {
|
|
34
|
+
this.promiseCount++;
|
|
35
|
+
this.promiseChanged.emit(this.promiseCount);
|
|
36
|
+
return new Promise((resolve, reject) => {
|
|
37
|
+
promise.then(v => {
|
|
38
|
+
resolve(v);
|
|
39
|
+
this.promiseFinished();
|
|
40
|
+
}, r => {
|
|
41
|
+
reject(r);
|
|
42
|
+
this.promiseFinished();
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
PromiseService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PromiseService, deps: [{ token: NgZone }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
48
|
+
PromiseService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PromiseService });
|
|
49
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.8", ngImport: i0, type: PromiseService, decorators: [{
|
|
50
|
+
type: Injectable
|
|
51
|
+
}], ctorParameters: function () { return [{ type: i0.NgZone, decorators: [{
|
|
52
|
+
type: Inject,
|
|
53
|
+
args: [NgZone]
|
|
54
|
+
}] }]; } });
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvbWlzZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy9zZXJ2aWNlcy9wcm9taXNlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFlBQVksRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFJdkUsTUFBTSxPQUFPLGNBQWM7SUFhdkIsWUFBcUMsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFDN0MsSUFBSSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUM7UUFDdEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3JELENBQUM7SUFkRCxJQUFJLEtBQUs7UUFDTCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBVUQsTUFBTSxDQUFJLFFBQWlHO1FBQ3ZHLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFJLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRixDQUFDO0lBRUQsR0FBRyxDQUFDLFFBQXdCO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRCxPQUFPLENBQUksS0FBeUI7UUFDaEMsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE1BQU0sQ0FBSSxLQUF5QjtRQUMvQixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBRVMsZUFBZTtRQUNyQixJQUFJLElBQUksQ0FBQyxZQUFZLElBQUksQ0FBQztZQUFFLE9BQU87UUFDbkMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRVMsR0FBRyxDQUFJLE9BQW1CO1FBQ2hDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDNUMsT0FBTyxJQUFJLE9BQU8sQ0FBTSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUN4QyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNiLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDWCxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUNILE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDVixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0IsQ0FBQyxDQUFDLENBQUM7UUFDUCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7OzJHQXBEUSxjQUFjLGtCQWFILE1BQU07K0dBYmpCLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVTs7MEJBY00sTUFBTTsyQkFBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0lQcm9taXNlU2VydmljZX0gZnJvbSBcIi4uL2NvbW1vbi10eXBlc1wiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgUHJvbWlzZVNlcnZpY2UgaW1wbGVtZW50cyBJUHJvbWlzZVNlcnZpY2Uge1xyXG5cclxuICAgIGdldCBjb3VudCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByb21pc2VDb3VudDtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgb25DaGFuZ2VkKCk6IEV2ZW50RW1pdHRlcjxudW1iZXI+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5wcm9taXNlQ2hhbmdlZDtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcHJvbWlzZUNvdW50OiBudW1iZXI7XHJcbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvbWlzZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKEBJbmplY3QoTmdab25lKSByZWFkb25seSB6b25lOiBOZ1pvbmUpIHtcclxuICAgICAgICB0aGlzLnByb21pc2VDb3VudCA9IDA7XHJcbiAgICAgICAgdGhpcy5wcm9taXNlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG4gICAgfVxyXG5cclxuICAgIGNyZWF0ZTxUPihleGVjdXRvcjogKHJlc29sdmU6ICh2YWx1ZT86IFQgfCBQcm9taXNlTGlrZTxUPikgPT4gdm9pZCwgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkKSA9PiB2b2lkKTogUHJvbWlzZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBuZXcgUHJvbWlzZTxUPihleGVjdXRvcikpKTtcclxuICAgIH1cclxuXHJcbiAgICBhbGwocHJvbWlzZXM6IFByb21pc2U8YW55PltdKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hZGQodGhpcy56b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IFByb21pc2UuYWxsKHByb21pc2VzKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlc29sdmU8VD4odmFsdWU6IFQgfCBQcm9taXNlTGlrZTxUPik6IFByb21pc2U8VD4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFkZCh0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4gUHJvbWlzZS5yZXNvbHZlKHZhbHVlKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIHJlamVjdDxUPih2YWx1ZTogVCB8IFByb21pc2VMaWtlPFQ+KTogUHJvbWlzZTxUPiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYWRkKHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiBQcm9taXNlLnJlamVjdCh2YWx1ZSkpKTtcclxuICAgIH1cclxuXHJcbiAgICBwcm90ZWN0ZWQgcHJvbWlzZUZpbmlzaGVkKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnByb21pc2VDb3VudCA9PSAwKSByZXR1cm47XHJcbiAgICAgICAgdGhpcy5wcm9taXNlQ291bnQtLTtcclxuICAgICAgICB0aGlzLnByb21pc2VDaGFuZ2VkLmVtaXQodGhpcy5wcm9taXNlQ291bnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHByb3RlY3RlZCBhZGQ8VD4ocHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xyXG4gICAgICAgIHRoaXMucHJvbWlzZUNvdW50Kys7XHJcbiAgICAgICAgdGhpcy5wcm9taXNlQ2hhbmdlZC5lbWl0KHRoaXMucHJvbWlzZUNvdW50KTtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHByb21pc2UudGhlbih2ID0+IHtcclxuICAgICAgICAgICAgICAgIHJlc29sdmUodik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb21pc2VGaW5pc2hlZCgpO1xyXG4gICAgICAgICAgICB9LCByID0+IHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvbWlzZUZpbmlzaGVkKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|