trm-tmpl 3.2.1 → 3.3.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/esm2022/lib/app/i18n/i18n-key.enum.mjs +2 -1
- package/esm2022/lib/app/i18n/keys.mjs +3 -2
- package/esm2022/lib/app/models/constants.mjs +4 -2
- package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-date/constructor-field-date.component.mjs +24 -38
- package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-iframe/card-sdk.service.mjs +41 -0
- package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-iframe/constructor-field-iframe.component.mjs +99 -117
- package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-iframe/iframe-validator-directive.directive.mjs +88 -0
- package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-select/constructor-field-select.component.mjs +15 -37
- package/esm2022/lib/app/pages/components/constructor-form/components/constructor-field-text/constructor-field-text.component.mjs +10 -4
- package/esm2022/lib/app/pages/components/constructor-form/components/index.mjs +3 -1
- package/esm2022/lib/app/pages/components/constructor-form/components/method-amount-hint/method-amount-hint.component.mjs +11 -7
- package/esm2022/lib/app/pages/components/constructor-form/components/ps-select/ps-select.component.mjs +20 -24
- package/esm2022/lib/app/pages/components/constructor-form/constructor-form.component.mjs +90 -64
- package/esm2022/lib/app/pages/components/constructor-form/models/field-template.mjs +2 -1
- package/esm2022/lib/app/pages/components/constructor-form/models/index.mjs +1 -2
- package/esm2022/lib/app/pages/components/constructor-form/models/payment-field-options.mjs +1 -1
- package/esm2022/lib/app/pages/components/constructor-form/models/payment-field.mjs +1 -1
- package/esm2022/lib/app/pages/components/constructor-form/services/constructor-form.service.mjs +40 -25
- package/esm2022/lib/app/pages/components/terminal-layout/terminal-layout.component.mjs +11 -9
- package/esm2022/lib/app/pages/directives/fee-template.directive.mjs +17 -0
- package/esm2022/lib/app/pages/directives/index.mjs +2 -1
- package/esm2022/lib/app/services/api-errors.service.mjs +16 -34
- package/esm2022/lib/app/services/csrf.resolver.mjs +6 -18
- package/esm2022/lib/app/services/error.interceptior.mjs +2 -2
- package/esm2022/lib/app/services/local-storage.mjs +70 -0
- package/esm2022/lib/app/services/script-loader.mjs +4 -7
- package/esm2022/lib/app/services/session.data-source.mjs +12 -11
- package/esm2022/lib/app/services/translation/translate-lang-storage.service.mjs +95 -79
- package/esm2022/lib/app/shared/components/terminal-lang-switcher/terminal-lang-switcher.component.mjs +10 -8
- package/esm2022/lib/app/shared/components/terminal-layout-tpl/terminal-layout-tpl.component.mjs +6 -6
- package/esm2022/lib/app/shared/components/trm-select/trm-select.component.mjs +1 -1
- package/esm2022/lib/app/terminal-tpl.component.mjs +13 -16
- package/esm2022/lib/app/terminal.module.mjs +43 -75
- package/fesm2022/trm-tmpl.mjs +936 -793
- package/fesm2022/trm-tmpl.mjs.map +1 -1
- package/lib/app/i18n/i18n-key.enum.d.ts +1 -0
- package/lib/app/models/constants.d.ts +3 -1
- package/lib/app/pages/components/constructor-form/components/constructor-field-date/constructor-field-date.component.d.ts +7 -10
- package/lib/app/pages/components/constructor-form/components/constructor-field-iframe/card-sdk.service.d.ts +18 -0
- package/lib/app/pages/components/constructor-form/components/constructor-field-iframe/constructor-field-iframe.component.d.ts +24 -27
- package/lib/app/pages/components/constructor-form/components/constructor-field-iframe/iframe-validator-directive.directive.d.ts +16 -0
- package/lib/app/pages/components/constructor-form/components/constructor-field-select/constructor-field-select.component.d.ts +6 -10
- package/lib/app/pages/components/constructor-form/components/constructor-field-text/constructor-field-text.component.d.ts +3 -3
- package/lib/app/pages/components/constructor-form/components/index.d.ts +2 -0
- package/lib/app/pages/components/constructor-form/components/method-amount-hint/method-amount-hint.component.d.ts +3 -0
- package/lib/app/pages/components/constructor-form/components/ps-select/ps-select.component.d.ts +4 -6
- package/lib/app/pages/components/constructor-form/constructor-form.component.d.ts +6 -9
- package/lib/app/pages/components/constructor-form/models/index.d.ts +0 -1
- package/lib/app/pages/components/constructor-form/models/payment-field-options.d.ts +1 -1
- package/lib/app/pages/components/constructor-form/models/payment-field.d.ts +1 -1
- package/lib/app/pages/components/constructor-form/services/constructor-form.service.d.ts +8 -5
- package/lib/app/pages/components/terminal-layout/terminal-layout.component.d.ts +1 -0
- package/lib/app/pages/directives/fee-template.directive.d.ts +7 -0
- package/lib/app/pages/directives/index.d.ts +1 -0
- package/lib/app/services/api-errors.service.d.ts +4 -10
- package/lib/app/services/csrf.resolver.d.ts +1 -4
- package/lib/app/services/local-storage.d.ts +24 -0
- package/lib/app/services/script-loader.d.ts +1 -2
- package/lib/app/services/session.data-source.d.ts +1 -1
- package/lib/app/services/translation/translate-lang-storage.service.d.ts +22 -23
- package/lib/app/shared/components/terminal-lang-switcher/terminal-lang-switcher.component.d.ts +4 -34
- package/lib/app/shared/components/terminal-layout-tpl/terminal-layout-tpl.component.d.ts +1 -2
- package/lib/app/shared/components/trm-select/trm-select.component.d.ts +1 -2
- package/lib/app/terminal-tpl.component.d.ts +2 -1
- package/lib/app/terminal.module.d.ts +26 -4
- package/package.json +1 -1
- package/esm2022/lib/app/pages/components/constructor-form/models/constants.mjs +0 -4
- package/lib/app/pages/components/constructor-form/models/constants.d.ts +0 -3
|
@@ -7,7 +7,7 @@ export class ScriptLoader {
|
|
|
7
7
|
this.document = inject(DOCUMENT);
|
|
8
8
|
this.nonce = inject(CSP_NONCE);
|
|
9
9
|
this.environment = inject(ENVIRONMENT);
|
|
10
|
-
this.
|
|
10
|
+
this.SCRIPT_HASH_MAP = new Map([
|
|
11
11
|
[
|
|
12
12
|
'cde_sdk',
|
|
13
13
|
this.environment.production ? {
|
|
@@ -20,9 +20,6 @@ export class ScriptLoader {
|
|
|
20
20
|
]
|
|
21
21
|
]);
|
|
22
22
|
}
|
|
23
|
-
get window() {
|
|
24
|
-
return this.document.defaultView;
|
|
25
|
-
}
|
|
26
23
|
fetchScript(id) {
|
|
27
24
|
return new Promise((resolve, reject) => {
|
|
28
25
|
let script;
|
|
@@ -50,7 +47,7 @@ export class ScriptLoader {
|
|
|
50
47
|
script = template.content.children.item(0);
|
|
51
48
|
}
|
|
52
49
|
else {
|
|
53
|
-
const { src, hash } = this.
|
|
50
|
+
const { src, hash } = this.SCRIPT_HASH_MAP.get(id);
|
|
54
51
|
script = this.document.createElement('script');
|
|
55
52
|
script.type = 'text/javascript';
|
|
56
53
|
script.src = src;
|
|
@@ -63,7 +60,7 @@ export class ScriptLoader {
|
|
|
63
60
|
script.nonce = this.nonce;
|
|
64
61
|
script.onload = () => resolve();
|
|
65
62
|
script.onerror = (err) => reject(err);
|
|
66
|
-
this.document.body.
|
|
63
|
+
this.document.body.appendChild(script);
|
|
67
64
|
});
|
|
68
65
|
}
|
|
69
66
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ScriptLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -72,4 +69,4 @@ export class ScriptLoader {
|
|
|
72
69
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: ScriptLoader, decorators: [{
|
|
73
70
|
type: Injectable
|
|
74
71
|
}] });
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NyaXB0LWxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3NlcnZpY2VzL3NjcmlwdC1sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUsxQyxNQUFNLE9BQU8sWUFBWTtJQUR6QjtRQUVVLGFBQVEsR0FBRyxNQUFNLENBQVcsUUFBUSxDQUFDLENBQUM7UUFDdEMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQixnQkFBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUdqQyxvQkFBZSxHQUFHLElBQUksR0FBRyxDQUErQztZQUMvRTtnQkFDRSxTQUFTO2dCQUNULElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztvQkFDNUIsR0FBRyxFQUFFLGdEQUFnRDtvQkFDckQsSUFBSSxFQUFFLHlFQUF5RTtpQkFDaEYsQ0FBQyxDQUFDLENBQUM7b0JBQ0YsR0FBRyxFQUFFLDZDQUE2QztvQkFDbEQsSUFBSSxFQUFFLEVBQUU7aUJBQ1Q7YUFDRjtTQUNGLENBQUMsQ0FBQztLQTZDSjtJQTNDQyxXQUFXLENBQUMsRUFBZTtRQUN6QixPQUFPLElBQUksT0FBTyxDQUFPLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQzNDLElBQUksTUFBeUIsQ0FBQztZQUM5QixJQUFJLEVBQUUsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDcEYsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLEVBQUUsS0FBSyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDbkYsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLEVBQUUsS0FBSyxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FBQztnQkFDM0YsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLEVBQUUsS0FBSyxhQUFhLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsY0FBYyxDQUFDLHdCQUF3QixDQUFDLEVBQUUsQ0FBQztnQkFDaEcsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsT0FBTztZQUNULENBQUM7WUFFRCxJQUFJLEVBQUUsS0FBSyxnQkFBZ0IsSUFBSSxFQUFFLEtBQUssZUFBZSxJQUFJLEVBQUUsS0FBSyxhQUFhLEVBQUUsQ0FBQztnQkFDOUUsTUFBTSxRQUFRLEdBQXdCLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUMsQ0FBQTtnQkFDbkYsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO29CQUNkLE1BQU0sRUFBRSxDQUFDO2dCQUNYLENBQUM7Z0JBQ0QsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQXNCLENBQUM7WUFDbEUsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLE1BQU0sRUFBQyxHQUFHLEVBQUUsSUFBSSxFQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ2pELE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDL0MsTUFBTSxDQUFDLElBQUksR0FBRyxpQkFBaUIsQ0FBQztnQkFDaEMsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7Z0JBQ2pCLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ1QsTUFBTSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7b0JBQ3hCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLENBQUM7WUFDRCxNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDMUIsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUN0QyxNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsR0FBRyxFQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs4R0E3RFUsWUFBWTtrSEFBWixZQUFZOzsyRkFBWixZQUFZO2tCQUR4QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ1NQX05PTkNFLCBpbmplY3QsIEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBFTlZJUk9OTUVOVCB9IGZyb20gJy4uLy4uL2NvbnN0JztcclxuXHJcbmV4cG9ydCB0eXBlIFNES1NjcmlwdElkID0gJ2NkZV9zZGsnIHwgJ21pci1wYXktc2RrJyB8ICdhcHBsZS1wYXktc2RrJyB8ICdnb29nbGUtcGF5LXNkayc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTY3JpcHRMb2FkZXIge1xyXG4gIHByaXZhdGUgZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIG5vbmNlID0gaW5qZWN0KENTUF9OT05DRSk7XHJcbiAgcHJpdmF0ZSBlbnZpcm9ubWVudCA9IGluamVjdChFTlZJUk9OTUVOVCk7XHJcblxyXG5cclxuICByZWFkb25seSBTQ1JJUFRfSEFTSF9NQVAgPSBuZXcgTWFwPFNES1NjcmlwdElkLCB7IHNyYzogc3RyaW5nOyBoYXNoPzogc3RyaW5nOyB9PihbXHJcbiAgICBbXHJcbiAgICAgICdjZGVfc2RrJyxcclxuICAgICAgdGhpcy5lbnZpcm9ubWVudC5wcm9kdWN0aW9uID8ge1xyXG4gICAgICAgIHNyYzogJ2h0dHBzOi8vYXBwLmNkZS5jbG91ZC9pZnJhbWUtc2RrL3Nkay12MS4wLjIuanMnLFxyXG4gICAgICAgIGhhc2g6ICdzaGEzODQtcDRQVXNBNDduQkVPYU9vRXk0aVhWbnFudEQ0bXBXTTJjWEZ0cG9sNlRsN09kVUN3RGdxeG9pMFc3MVdKZEdoaSdcclxuICAgICAgfSA6IHtcclxuICAgICAgICBzcmM6ICdodHRwczovL2FwcC5jZGUtY2xvdWQuZGV2L2lmcmFtZS1zZGsvc2RrLmpzJyxcclxuICAgICAgICBoYXNoOiAnJ1xyXG4gICAgICB9XHJcbiAgICBdXHJcbiAgXSk7XHJcblxyXG4gIGZldGNoU2NyaXB0KGlkOiBTREtTY3JpcHRJZCkge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgbGV0IHNjcmlwdDogSFRNTFNjcmlwdEVsZW1lbnQ7XHJcbiAgICAgIGlmIChpZCA9PT0gJ2NkZV9zZGsnICYmIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXc/Lmhhc093blByb3BlcnR5KCdDZGVUZXJtaW5hbFNkaycpKSB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaWQgPT09ICdnb29nbGUtcGF5LXNkaycgJiYgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldz8uaGFzT3duUHJvcGVydHkoJ2dvb2dsZScpKSB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaWQgPT09ICdhcHBsZS1wYXktc2RrJyAmJiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py5oYXNPd25Qcm9wZXJ0eSgnQXBwbGVQYXlTZXNzaW9uJykpIHtcclxuICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpZCA9PT0gJ21pci1wYXktc2RrJyAmJiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3Py5oYXNPd25Qcm9wZXJ0eSgnWW9vTW9uZXlDaGVja291dFdpZGdldCcpKSB7XHJcbiAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGlkID09PSAnZ29vZ2xlLXBheS1zZGsnIHx8IGlkID09PSAnYXBwbGUtcGF5LXNkaycgfHwgaWQgPT09ICdtaXItcGF5LXNkaycpIHtcclxuICAgICAgICBjb25zdCB0ZW1wbGF0ZTogSFRNTFRlbXBsYXRlRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgdGVtcGxhdGUjJHtpZH1gKVxyXG4gICAgICAgIGlmICghdGVtcGxhdGUpIHtcclxuICAgICAgICAgIHJlamVjdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzY3JpcHQgPSB0ZW1wbGF0ZS5jb250ZW50LmNoaWxkcmVuLml0ZW0oMCkgYXMgSFRNTFNjcmlwdEVsZW1lbnQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29uc3Qge3NyYywgaGFzaH0gPSB0aGlzLlNDUklQVF9IQVNIX01BUC5nZXQoaWQpO1xyXG4gICAgICAgIHNjcmlwdCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XHJcbiAgICAgICAgc2NyaXB0LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcclxuICAgICAgICBzY3JpcHQuc3JjID0gc3JjO1xyXG4gICAgICAgIGlmIChoYXNoKSB7XHJcbiAgICAgICAgICBzY3JpcHQuaW50ZWdyaXR5ID0gaGFzaDtcclxuICAgICAgICAgIHNjcmlwdC5jcm9zc09yaWdpbiA9ICdhbm9ueW1vdXMnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBzY3JpcHQuYXN5bmMgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHNjcmlwdC5ub25jZSA9IHRoaXMubm9uY2U7XHJcbiAgICAgIHNjcmlwdC5vbmxvYWQgPSAoKTogdm9pZCA9PiByZXNvbHZlKCk7XHJcbiAgICAgIHNjcmlwdC5vbmVycm9yID0gKGVycik6IHZvaWQgPT4gcmVqZWN0KGVycik7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzY3JpcHQpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ChangeDetectorRef, inject, Injectable } from '@angular/core';
|
|
2
2
|
import { BehaviorSubject, throwError } from 'rxjs';
|
|
3
|
-
import { catchError, map, tap } from 'rxjs/operators';
|
|
3
|
+
import { catchError, delay, map, tap } from 'rxjs/operators';
|
|
4
4
|
import { DOCUMENT } from '@angular/common';
|
|
5
5
|
import { ApiErrorsService } from './api-errors.service';
|
|
6
6
|
import { CookieService } from 'ngx-cookie-service';
|
|
@@ -22,9 +22,9 @@ export class SessionDataSource {
|
|
|
22
22
|
this.cd = inject(ChangeDetectorRef);
|
|
23
23
|
this.cardTerminalSdkFactory = inject(TERMINAL_SDK_FACTORY);
|
|
24
24
|
this.data$ = new BehaviorSubject(undefined);
|
|
25
|
-
this.loading$ = new BehaviorSubject(
|
|
25
|
+
this.loading$ = new BehaviorSubject(true);
|
|
26
26
|
this.loadingMethodInfo$ = new BehaviorSubject(true);
|
|
27
|
-
this.loadingConfirm$ = new BehaviorSubject(
|
|
27
|
+
this.loadingConfirm$ = new BehaviorSubject(null);
|
|
28
28
|
this.configurations = new Map();
|
|
29
29
|
this.feeChangeable = !!this.terminalApi.getFee;
|
|
30
30
|
}
|
|
@@ -90,7 +90,7 @@ export class SessionDataSource {
|
|
|
90
90
|
return this.data$.getValue();
|
|
91
91
|
}
|
|
92
92
|
get() {
|
|
93
|
-
if (this.loading$.getValue()
|
|
93
|
+
if (!this.loading$.getValue()) {
|
|
94
94
|
this.loading$.next(true);
|
|
95
95
|
}
|
|
96
96
|
return this.terminalApi.getTerminalSessionInfo({
|
|
@@ -124,18 +124,19 @@ export class SessionDataSource {
|
|
|
124
124
|
this.payment_token = method.payment_token;
|
|
125
125
|
}
|
|
126
126
|
this.loadingMethodInfo$.next(false);
|
|
127
|
+
this.loadingConfirm$.next(false);
|
|
127
128
|
}));
|
|
128
129
|
}
|
|
129
130
|
catchError(loading$) {
|
|
130
131
|
return (err) => {
|
|
131
|
-
this.apiErrorsSrv.
|
|
132
|
+
this.apiErrorsSrv.setLocalError(err.error);
|
|
132
133
|
loading$?.next(false);
|
|
133
134
|
this.cd.markForCheck();
|
|
134
135
|
return throwError(err);
|
|
135
136
|
};
|
|
136
137
|
}
|
|
137
138
|
prepare(data) {
|
|
138
|
-
if (this.loadingConfirm$.getValue()
|
|
139
|
+
if (!this.loadingConfirm$.getValue()) {
|
|
139
140
|
this.loadingConfirm$.next(true);
|
|
140
141
|
}
|
|
141
142
|
return this.terminalApi
|
|
@@ -143,10 +144,10 @@ export class SessionDataSource {
|
|
|
143
144
|
token: this.token,
|
|
144
145
|
terminalPaymentPrepareRequest: data
|
|
145
146
|
})
|
|
146
|
-
.pipe(catchError(this.catchError(this.loadingConfirm$)), tap(() => this.loadingConfirm$.next(false)));
|
|
147
|
+
.pipe(delay(2000), catchError(this.catchError(this.loadingConfirm$)), tap(() => this.loadingConfirm$.next(false)));
|
|
147
148
|
}
|
|
148
149
|
confirm() {
|
|
149
|
-
if (this.loadingConfirm$.getValue()
|
|
150
|
+
if (!this.loadingConfirm$.getValue()) {
|
|
150
151
|
this.loadingConfirm$.next(true);
|
|
151
152
|
}
|
|
152
153
|
return this.terminalApi
|
|
@@ -163,7 +164,7 @@ export class SessionDataSource {
|
|
|
163
164
|
}));
|
|
164
165
|
}
|
|
165
166
|
close() {
|
|
166
|
-
if (this.loadingConfirm$.getValue()
|
|
167
|
+
if (!this.loadingConfirm$.getValue()) {
|
|
167
168
|
this.loadingConfirm$.next(true);
|
|
168
169
|
}
|
|
169
170
|
return this.terminalApi
|
|
@@ -173,7 +174,7 @@ export class SessionDataSource {
|
|
|
173
174
|
.pipe(catchError(this.catchError(this.loadingConfirm$)), map(() => {
|
|
174
175
|
if (!this.returnBack()) {
|
|
175
176
|
const error = { code: I18N_KEY.SESSION_CLOSED };
|
|
176
|
-
this.apiErrorsSrv.
|
|
177
|
+
this.apiErrorsSrv.setLocalError(error);
|
|
177
178
|
this.loadingConfirm$?.next(false);
|
|
178
179
|
this.cd.markForCheck();
|
|
179
180
|
throw error;
|
|
@@ -208,4 +209,4 @@ export class SessionDataSource {
|
|
|
208
209
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: SessionDataSource, decorators: [{
|
|
209
210
|
type: Injectable
|
|
210
211
|
}] });
|
|
211
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3NlcnZpY2VzL3Nlc3Npb24uZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUMzRixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3JDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUUzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMvRCxPQUFPLEVBQWtCLFlBQVksRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6RCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0RBQXdELENBQUM7O0FBR2hGLE1BQU0sT0FBTyxpQkFBaUI7SUFEOUI7UUFFRSxhQUFRLEdBQUcsTUFBTSxDQUFXLFFBQVEsQ0FBQyxDQUFDO1FBQzlCLGdCQUFXLEdBQUcsTUFBTSxDQUFDLDJCQUEyQixDQUFDLENBQUM7UUFDbEQsZ0JBQVcsR0FBRyxNQUFN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QUFNO1lBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7YUFDRCxJQUFJLENBQ0gsVUFBVSxDQUNSLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FDbEIsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBRXpCLE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsOEJBQThCLENBQUM7WUFDOUIsTUFBTTtZQUNOLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FDUixJQUFJLENBQUMsVUFBVSxFQUFFLENBQ2xCLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFZLEVBQUUsRUFBVSxFQUFFLFFBQWlCO1FBQy9ELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUlELFVBQVUsQ0FBQyxPQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs4R0F0UVUsaUJBQWlCO2tIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTWV0aG9kSW5mbyxcclxuICBNZXRob2RUeXBlLFxyXG4gIFNlc3Npb25JbmZvLFxyXG4gIFRlcm1pbmFsTWV0aG9kQmFua3NSZXNwb25zZSxcclxuICBUZXJtaW5hbE1ldGhvZERvY3VtZW50VHlwZXNSZXNwb25zZSxcclxuICBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdCxcclxuICBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVzcG9uc2VcclxufSBmcm9tICcuLi8uLi9jb2RlZ2VuL21vZGVsL21vZGVscyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBBcGlFcnJvcnNTZXJ2aWNlIH0gZnJvbSAnLi9hcGktZXJyb3JzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGF5bWVudEZpZWxkcyB9IGZyb20gJy4vLi4vcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL21vZGVscyc7XHJcbmltcG9ydCB7IEh0dHBCYWRSZXF1ZXN0UmVzcG9uc2UgfSBmcm9tICcuLi9tb2RlbHMvaHR0cC1iYWQtcmVxdWVzdC1yZXNwb25zZSc7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSTE4Tl9LRVkgfSBmcm9tICcuLy4uL2kxOG4nO1xyXG5pbXBvcnQgeyBURVJNSU5BTF9TREtfRkFDVE9SWSwgVEVSTUlOQUxfU0VSVklDRV9UT0tFTiB9IGZyb20gJy4uLy4uL2NvbnN0JztcclxuaW1wb3J0IHsgVGVybWluYWxTZXJ2aWNlSW50ZXJmYWNlIH0gZnJvbSAnLi4vLi4vY29kZWdlbi9hcGkvdGVybWluYWwuc2VydmljZSc7XHJcbmltcG9ydCB7IE9USEVSX0NPVU5UUllfQ09ERSB9IGZyb20gJy4uL2hlbHBlcnMvaTE4bi1jb3VudHJpZXMnO1xyXG5pbXBvcnQgeyBDZGVUZXJtaW5hbFNkaywgU2Vzc2lvblRva2VuIH0gZnJvbSAnLi4vbW9kZWxzJztcclxuaW1wb3J0IHsgQ09ORklHIH0gZnJvbSAnLi4vcGFnZXMvY29tcG9uZW50cy9jb25zdHJ1Y3Rvci1mb3JtL21vZGVscy9jb25maWcvYWxsJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIFNlc3Npb25EYXRhU291cmNlIHtcclxuICBkb2N1bWVudCA9IGluamVjdDxEb2N1bWVudD4oRE9DVU1FTlQpO1xyXG4gIHByaXZhdGUgbGFuZ1N0b3JhZ2UgPSBpbmplY3QoVHJhbnNsYXRlTGFuZ1N0b3JhZ2VTZXJ2aWNlKTtcclxuICBwcml2YXRlIHRlcm1pbmFsQXBpID0gaW5qZWN0PFRlcm1pbmFsU2VydmljZUludGVyZmFjZT4oVEVSTUlOQUxfU0VSVklDRV9UT0tFTik7XHJcbiAgcHJpdmF0ZSB0b2tlbiA9IGluamVjdChTZXNzaW9uVG9rZW4sIHtvcHRpb25hbDogdHJ1ZX0pIHx8ICd0b2tlbic7XHJcbiAgcHJpdmF0ZSBhcGlFcnJvcnNTcnYgPSBpbmplY3QoQXBpRXJyb3JzU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBjb29raWVTcnYgPSBpbmplY3QoQ29va2llU2VydmljZSk7XHJcbiAgcHJpdmF0ZSBjZCA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XHJcbiAgcHJpdmF0ZSBjYXJkVGVybWluYWxTZGtGYWN0b3J5ID0gaW5qZWN0KFRFUk1JTkFMX1NES19GQUNUT1JZKTtcclxuXHJcbiAgcHJpdmF0ZSBwYXltZW50X3Rva2VuPzogc3RyaW5nO1xyXG4gIGRhdGEkOiBCZWhhdmlvclN1YmplY3Q8U2Vzc2lvbkluZm8+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxTZXNzaW9uSW5mbz4odW5kZWZpbmVkKTtcclxuICBsb2FkaW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPihudWxsKTtcclxuICBsb2FkaW5nTWV0aG9kSW5mbyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4odHJ1ZSk7XHJcbiAgbG9hZGluZ0NvbmZpcm0kOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICBwcml2YXRlIHJlZGlyZWN0VXJsOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSByZXR1cm5Vcmw6IHN0cmluZztcclxuICBwcml2YXRlIGNvbmZpZ3VyYXRpb25zOiBNYXA8c3RyaW5nLCBQYXltZW50RmllbGRzPiA9IG5ldyBNYXAoKTtcclxuXHJcbiAgcHJpdmF0ZSBmaWxsQ29uZmlndXJhdGlvbnMobWV0aG9kczogTWV0aG9kVHlwZVtdID0gdGhpcy5nZXRTZXNzaW9uVmFsdWUoKT8ubWV0aG9kVHlwZXMgfHwgW10pIHtcclxuICAgIHJldHVybiBtZXRob2RzLmZvckVhY2goXHJcbiAgICAgIChtOiBNZXRob2RUeXBlKSA9PiB0aGlzLmNvbmZpZ3VyYXRpb25zLnNldChcclxuICAgICAgICBtLnR5cGUubmFtZSxcclxuICAgICAgICBDT05GSUdbbS50eXBlLm5hbWVdXHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVuaW9uR2xvYmFsQ291bnRyaWVzKHNlc3Npb246IFNlc3Npb25JbmZvKSB7XHJcbiAgICBsZXQgbWV0aG9kcyA9IHNlc3Npb24ubWV0aG9kVHlwZXM7XHJcblxyXG4gICAgLy8gc29ydCBtZXRob2RzIGJ5IGNvdW50cmllcyBpbiBtYXBcclxuICAgIGNvbnN0IGNvdW50cmllc1R5cGVzOiBNYXA8c3RyaW5nLCBTZXQ8bnVtYmVyPj4gPSBuZXcgTWFwPHN0cmluZywgU2V0PG51bWJlcj4+KCk7XHJcbiAgICBtZXRob2RzLmZvckVhY2goKHtjb3VudHJ5SVNPQ29kZSwgdHlwZToge2lkfX0pID0+IHtcclxuICAgICAgbGV0IHR5cGVzID0gKGNvdW50cmllc1R5cGVzLmdldChjb3VudHJ5SVNPQ29kZSkgfHwgbmV3IFNldCgpKS5hZGQoaWQpO1xyXG4gICAgICBjb3VudHJpZXNUeXBlcy5zZXQoY291bnRyeUlTT0NvZGUsIHR5cGVzKTtcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIENoZWNrIGV2ZXJ5IHR5cGUgaW4gdGhlIGNvdW50cnkgb24gaGF2aW5nIGluIG90aGVyIGNvdW50cmllcyBhbmQgZ2V0dGluZyBvbmVzIGluIGNvbGxlY3Rpb25cclxuICAgIGNvbnN0IGdsb2JhbENvdW50cmllczogc3RyaW5nW10gPSBbXTtcclxuICAgIGNvbnN0IHR5cGVzQ291bnRyaWVzQXJyYXkgPSBBcnJheS5mcm9tKGNvdW50cmllc1R5cGVzLnZhbHVlcygpKTtcclxuICAgIGNvbnN0IGV2ZXJ5Q291bnRyeUhhc1R5cGVJZFByZWRpY2F0ZSA9ICh0eXBlSWQpID0+IHR5cGVzQ291bnRyaWVzQXJyYXkuZXZlcnkoKGNvdW50cnlUeXBlcykgPT4gY291bnRyeVR5cGVzLmhhcyh0eXBlSWQpKTtcclxuICAgIGNvdW50cmllc1R5cGVzLmZvckVhY2goKHR5cGVzLCBpc28pID0+IHtcclxuICAgICAgLy8gQ2hlY2sgZXZlcnkgdHlwZSBpbmNsdWRlcyBpbiBhbGwgY291bnRyaWVzXHJcbiAgICAgIGNvbnN0IGhhc09ubHlHbG9iYWxUeXBlcyA9IFsuLi50eXBlc10uZXZlcnkoZXZlcnlDb3VudHJ5SGFzVHlwZUlkUHJlZGljYXRlKTtcclxuICAgICAgaWYgKGhhc09ubHlHbG9iYWxUeXBlcykge1xyXG4gICAgICAgIGdsb2JhbENvdW50cmllcy5wdXNoKGlzbyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGlmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBjb3VudHJ5IHdpdGggb25seSBnbG9iYWwgdHlwZXMgY29sbGFwc2UgdGhlbSBpbnRvIG9uZSBjYXRlZ29yeVxyXG4gICAgaWYgKGdsb2JhbENvdW50cmllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpcnN0R2xvYmFsQ291bnRyeSA9IGdsb2JhbENvdW50cmllcy5wb3AoKTtcclxuICAgICAgbWV0aG9kcyA9IG1ldGhvZHNcclxuICAgICAgICAuZmlsdGVyKCh7Y291bnRyeUlTT0NvZGV9KSA9PiAhZ2xvYmFsQ291bnRyaWVzLmluY2x1ZGVzKGNvdW50cnlJU09Db2RlKSk7XHJcbiAgICAgIG1ldGhvZHMuZm9yRWFjaChtID0+IG0uY291bnRyeUlTT0NvZGUgPT09IGZpcnN0R2xvYmFsQ291bnRyeSAmJiAobS5jb3VudHJ5SVNPQ29kZSA9IE9USEVSX0NPVU5UUllfQ09ERSkpO1xyXG4gICAgfVxyXG4gICAgc2Vzc2lvbi5tZXRob2RUeXBlcyA9IG1ldGhvZHM7XHJcbiAgICByZXR1cm4gc2Vzc2lvbjtcclxuICB9XHJcblxyXG4gIGdldENvbmZpZ3VyYXRpb24obmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9ucy5nZXQobmFtZSk7XHJcbiAgfVxyXG5cclxuICByZWRpcmVjdCgpIHtcclxuICAgIGlmICh0aGlzLnJlZGlyZWN0VXJsKSB7XHJcbiAgICAgIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb24uaHJlZiA9IHRoaXMucmVkaXJlY3RVcmw7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcmV0dXJuQmFjaygpIHtcclxuICAgIGlmICh0aGlzLnJldHVyblVybCkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmxvY2F0aW9uLmhyZWYgPSB0aGlzLnJldHVyblVybDtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBnZXQgY2FuUmV0dXJuVG9Qcm9qZWN0KCkge1xyXG4gICAgcmV0dXJuICEhdGhpcy5yZXR1cm5Vcmw7XHJcbiAgfVxyXG5cclxuICBnZXQgcmV0dXJuQmFja1VybCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHRoaXMucmV0dXJuVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0VHlwZU5hbWVCeUlkKGlkOiBudW1iZXIpIHtcclxuICAgIHJldHVybiB0aGlzLmRhdGEkLmdldFZhbHVlKCkubWV0aG9kVHlwZXMuZmluZChtID0+IG0udHlwZS5pZCA9PT0gaWQpLnR5cGUubmFtZTtcclxuICB9XHJcblxyXG4gIGdldFNlc3Npb25WYWx1ZSgpOiBTZXNzaW9uSW5mbyB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhJC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0KCk6IE9ic2VydmFibGU8U2Vzc2lvbkluZm8+IHtcclxuICAgIGlmICh0aGlzLmxvYWRpbmckLmdldFZhbHVlKCkgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpLmdldFRlcm1pbmFsU2Vzc2lvbkluZm8oe1xyXG4gICAgICB0b2tlbjogdGhpcy50b2tlblxyXG4gICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmckKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgbWFwKChzZXNzaW9uOiBTZXNzaW9uSW5mbykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kYXRhJC5uZXh0KHRoaXMudW5pb25HbG9iYWxDb3VudHJpZXMoc2Vzc2lvbikpO1xyXG4gICAgICAgICAgdGhpcy5maWxsQ29uZmlndXJhdGlvbnMoKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLnJldHVyblVybCA9IHNlc3Npb24ucmV0dXJuVXJsO1xyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuZGF0YSQuZ2V0VmFsdWUoKTtcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0TWV0aG9kSW5mbyhjdXJyZW5jeSwgdHlwZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPE1ldGhvZEluZm8+IHtcclxuICAgIGlmICh0aGlzLmxvYWRpbmdNZXRob2RJbmZvJC5nZXRWYWx1ZSgpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ01ldGhvZEluZm8kLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgICBpZiAoIXR5cGVJZCB8fCAhY3VycmVuY3kpIHtcclxuICAgICAgcmV0dXJuIHRocm93RXJyb3Ioe30pXHJcbiAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IodGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQpXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5nZXRUZXJtaW5hbE1ldGhvZEluZm8oe1xyXG4gICAgICAgIHRva2VuOiB0aGlzLnRva2VuLFxyXG4gICAgICAgIGxhbmc6IHRoaXMubGFuZ1N0b3JhZ2UuY3VycmVudExhbmcsXHJcbiAgICAgICAgY3VycmVuY3ksXHJcbiAgICAgICAgdHlwZUlkXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IodGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YXAoKG1ldGhvZCkgPT4ge1xyXG4gICAgICAgICAgaWYgKG1ldGhvZC5wYXltZW50X3Rva2VuKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGF5bWVudF90b2tlbiA9IG1ldGhvZC5wYXltZW50X3Rva2VuO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2F0Y2hFcnJvcihsb2FkaW5nJD86IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPikge1xyXG4gICAgcmV0dXJuIChlcnI6IEh0dHBCYWRSZXF1ZXN0UmVzcG9uc2UpID0+IHtcclxuICAgICAgdGhpcy5hcGlFcnJvcnNTcnYuc2V0RXJyb3IoZXJyLmVycm9yKTtcclxuICAgICAgbG9hZGluZyQ/Lm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZShkYXRhOiBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdCk6IE9ic2VydmFibGU8VGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlPiB7XHJcbiAgICBpZiAodGhpcy5sb2FkaW5nQ29uZmlybSQuZ2V0VmFsdWUoKSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLnBvc3RUZXJtaW5hbFBheW1lbnRQcmVwYXJlKHtcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcclxuICAgICAgICB0ZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdDogZGF0YVxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKHRoaXMubG9hZGluZ0NvbmZpcm0kKVxyXG4gICAgICAgICksXHJcbiAgICAgICAgdGFwKCgpID0+IHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQoZmFsc2UpKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY29uZmlybSgpIHtcclxuICAgIGlmICh0aGlzLmxvYWRpbmdDb25maXJtJC5nZXRWYWx1ZSgpICE9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLnBvc3RUZXJtaW5hbFBheW1lbnRDb25maXJtKHtcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlbixcclxuICAgICAgICB0ZXJtaW5hbFBheW1lbnRDb25maXJtUmVxdWVzdDoge1xyXG4gICAgICAgICAgbGFuZzogdGhpcy5sYW5nU3RvcmFnZS5jdXJyZW50TGFuZyxcclxuICAgICAgICAgIGdhQ29va2llOiB0aGlzLmNvb2tpZVNydi5nZXQoJ19nYScpIHx8IG51bGxcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IodGhpcy5sb2FkaW5nQ29uZmlybSQpXHJcbiAgICAgICAgKSxcclxuICAgICAgICB0YXAoKHJlc3ApID0+IHtcclxuICAgICAgICAgIHRoaXMucmVkaXJlY3RVcmwgPSByZXNwLnJlZGlyZWN0VXJsO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nQ29uZmlybSQubmV4dChmYWxzZSlcclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY2xvc2UoKSB7XHJcbiAgICBpZiAodGhpcy5sb2FkaW5nQ29uZmlybSQuZ2V0VmFsdWUoKSAhPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5wb3N0VGVybWluYWxDbG9zZSh7XHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW5cclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdDb25maXJtJClcclxuICAgICAgICApLFxyXG4gICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMucmV0dXJuQmFjaygpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0ge2NvZGU6IEkxOE5fS0VZLlNFU1NJT05fQ0xPU0VEfTtcclxuICAgICAgICAgICAgdGhpcy5hcGlFcnJvcnNTcnYuc2V0RXJyb3IoZXJyb3IpO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRpbmdDb25maXJtJD8ubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICAgIHRoaXMuY2QubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgICAgICAgICB0aHJvdyBlcnJvcjtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0QmFua3ModHlwZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFRlcm1pbmFsTWV0aG9kQmFua3NSZXNwb25zZT4ge1xyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLmdldFRlcm1pbmFsTWV0aG9kQmFua3Moe1xyXG4gICAgICAgIHR5cGVJZCxcclxuICAgICAgICB0b2tlbjogdGhpcy50b2tlblxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKClcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXREb2N1bWVudHModHlwZUlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFRlcm1pbmFsTWV0aG9kRG9jdW1lbnRUeXBlc1Jlc3BvbnNlPiB7XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLmdldFRlcm1pbmFsTWV0aG9kRG9jdW1lbnRUeXBlcyh7XHJcbiAgICAgICAgdHlwZUlkLFxyXG4gICAgICAgIHRva2VuOiB0aGlzLnRva2VuXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IoKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNhcmRUZXJtaW5hbFNkayhsYW5nOiBzdHJpbmcsIGlkOiBzdHJpbmcsIHRhYmluZGV4PzogbnVtYmVyKTogQ2RlVGVybWluYWxTZGsge1xyXG4gICAgcmV0dXJuIHRoaXMuY2FyZFRlcm1pbmFsU2RrRmFjdG9yeSh0aGlzLnBheW1lbnRfdG9rZW4sIGlkLCB7bGFuZywgdGFiaW5kZXh9KTtcclxuICB9XHJcblxyXG4gIGZlZUNoYW5nZWFibGUgPSAhIXRoaXMudGVybWluYWxBcGkuZ2V0RmVlO1xyXG5cclxuICBmZWVPcHRpb25zKHBheW1lbnQ6IGFueSkge1xyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGkuZ2V0RmVlKHBheW1lbnQpO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbiJdfQ==
|
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbi5kYXRhLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3Rlcm1pbmFsLXRlbXBsYXRlL3NyYy9saWIvYXBwL3NlcnZpY2VzL3Nlc3Npb24uZGF0YS1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFVdEUsT0FBTyxFQUFFLGVBQWUsRUFBYyxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0QsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFHbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOENBQThDLENBQUM7QUFDM0YsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNyQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFrQixZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekQsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHdEQUF3RCxDQUFDOztBQUdoRixNQUFNLE9BQU8saUJBQWlCO0lBRDlCO1FBRUUsYUFBUSxHQUFHLE1BQU0sQ0FBVyxRQUFRLENBQUMsQ0FBQztRQUM5QixnQkFBVyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ2xELGdCQUFX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UUFBUSxDQUFDLE1BQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVzthQUNwQixzQkFBc0IsQ0FBQztZQUN0QixNQUFNO1lBQ04sS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7YUFDRCxJQUFJLENBQ0gsVUFBVSxDQUNSLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FDbEIsQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVELFlBQVksQ0FBQyxNQUFjO1FBRXpCLE9BQU8sSUFBSSxDQUFDLFdBQVc7YUFDcEIsOEJBQThCLENBQUM7WUFDOUIsTUFBTTtZQUNOLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSztTQUNsQixDQUFDO2FBQ0QsSUFBSSxDQUNILFVBQVUsQ0FDUixJQUFJLENBQUMsVUFBVSxFQUFFLENBQ2xCLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFRCxxQkFBcUIsQ0FBQyxJQUFZLEVBQUUsRUFBVSxFQUFFLFFBQWlCO1FBQy9ELE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxFQUFFLEVBQUMsSUFBSSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUlELFVBQVUsQ0FBQyxPQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUMsQ0FBQzs4R0F4UVUsaUJBQWlCO2tIQUFqQixpQkFBaUI7OzJGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgTWV0aG9kSW5mbyxcclxuICBNZXRob2RUeXBlLFxyXG4gIFNlc3Npb25JbmZvLFxyXG4gIFRlcm1pbmFsTWV0aG9kQmFua3NSZXNwb25zZSxcclxuICBUZXJtaW5hbE1ldGhvZERvY3VtZW50VHlwZXNSZXNwb25zZSxcclxuICBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdCxcclxuICBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVzcG9uc2VcclxufSBmcm9tICcuLi8uLi9jb2RlZ2VuL21vZGVsL21vZGVscyc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGhyb3dFcnJvciB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBkZWxheSwgbWFwLCB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQXBpRXJyb3JzU2VydmljZSB9IGZyb20gJy4vYXBpLWVycm9ycy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29va2llU2VydmljZSB9IGZyb20gJ25neC1jb29raWUtc2VydmljZSc7XHJcbmltcG9ydCB7IFBheW1lbnRGaWVsZHMgfSBmcm9tICcuLy4uL3BhZ2VzL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZm9ybS9tb2RlbHMnO1xyXG5pbXBvcnQgeyBIdHRwQmFkUmVxdWVzdFJlc3BvbnNlIH0gZnJvbSAnLi4vbW9kZWxzL2h0dHAtYmFkLXJlcXVlc3QtcmVzcG9uc2UnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMYW5nU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuL3RyYW5zbGF0aW9uL3RyYW5zbGF0ZS1sYW5nLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEkxOE5fS0VZIH0gZnJvbSAnLi8uLi9pMThuJztcclxuaW1wb3J0IHsgVEVSTUlOQUxfU0RLX0ZBQ1RPUlksIFRFUk1JTkFMX1NFUlZJQ0VfVE9LRU4gfSBmcm9tICcuLi8uLi9jb25zdCc7XHJcbmltcG9ydCB7IFRlcm1pbmFsU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uL2NvZGVnZW4vYXBpL3Rlcm1pbmFsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPVEhFUl9DT1VOVFJZX0NPREUgfSBmcm9tICcuLi9oZWxwZXJzL2kxOG4tY291bnRyaWVzJztcclxuaW1wb3J0IHsgQ2RlVGVybWluYWxTZGssIFNlc3Npb25Ub2tlbiB9IGZyb20gJy4uL21vZGVscyc7XHJcbmltcG9ydCB7IENPTkZJRyB9IGZyb20gJy4uL3BhZ2VzL2NvbXBvbmVudHMvY29uc3RydWN0b3ItZm9ybS9tb2RlbHMvY29uZmlnL2FsbCc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBTZXNzaW9uRGF0YVNvdXJjZSB7XHJcbiAgZG9jdW1lbnQgPSBpbmplY3Q8RG9jdW1lbnQ+KERPQ1VNRU5UKTtcclxuICBwcml2YXRlIGxhbmdTdG9yYWdlID0gaW5qZWN0KFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSk7XHJcbiAgcHJpdmF0ZSB0ZXJtaW5hbEFwaSA9IGluamVjdDxUZXJtaW5hbFNlcnZpY2VJbnRlcmZhY2U+KFRFUk1JTkFMX1NFUlZJQ0VfVE9LRU4pO1xyXG4gIHByaXZhdGUgdG9rZW4gPSBpbmplY3QoU2Vzc2lvblRva2VuLCB7b3B0aW9uYWw6IHRydWV9KSB8fCAndG9rZW4nO1xyXG4gIHByaXZhdGUgYXBpRXJyb3JzU3J2ID0gaW5qZWN0KEFwaUVycm9yc1NlcnZpY2UpO1xyXG4gIHByaXZhdGUgY29va2llU3J2ID0gaW5qZWN0KENvb2tpZVNlcnZpY2UpO1xyXG4gIHByaXZhdGUgY2QgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG4gIHByaXZhdGUgY2FyZFRlcm1pbmFsU2RrRmFjdG9yeSA9IGluamVjdChURVJNSU5BTF9TREtfRkFDVE9SWSk7XHJcblxyXG4gIHBheW1lbnRfdG9rZW4/OiBzdHJpbmc7XHJcbiAgZGF0YSQ6IEJlaGF2aW9yU3ViamVjdDxTZXNzaW9uSW5mbz4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFNlc3Npb25JbmZvPih1bmRlZmluZWQpO1xyXG4gIGxvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KHRydWUpO1xyXG4gIGxvYWRpbmdNZXRob2RJbmZvJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPih0cnVlKTtcclxuICBsb2FkaW5nQ29uZmlybSQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4obnVsbCk7XHJcbiAgcHJpdmF0ZSByZWRpcmVjdFVybDogc3RyaW5nO1xyXG4gIHByaXZhdGUgcmV0dXJuVXJsOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjb25maWd1cmF0aW9uczogTWFwPHN0cmluZywgUGF5bWVudEZpZWxkcz4gPSBuZXcgTWFwKCk7XHJcblxyXG4gIHByaXZhdGUgZmlsbENvbmZpZ3VyYXRpb25zKG1ldGhvZHM6IE1ldGhvZFR5cGVbXSA9IHRoaXMuZ2V0U2Vzc2lvblZhbHVlKCk/Lm1ldGhvZFR5cGVzIHx8IFtdKSB7XHJcbiAgICByZXR1cm4gbWV0aG9kcy5mb3JFYWNoKFxyXG4gICAgICAobTogTWV0aG9kVHlwZSkgPT4gdGhpcy5jb25maWd1cmF0aW9ucy5zZXQoXHJcbiAgICAgICAgbS50eXBlLm5hbWUsXHJcbiAgICAgICAgQ09ORklHW20udHlwZS5uYW1lXVxyXG4gICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB1bmlvbkdsb2JhbENvdW50cmllcyhzZXNzaW9uOiBTZXNzaW9uSW5mbykge1xyXG4gICAgbGV0IG1ldGhvZHMgPSBzZXNzaW9uLm1ldGhvZFR5cGVzO1xyXG5cclxuICAgIC8vIHNvcnQgbWV0aG9kcyBieSBjb3VudHJpZXMgaW4gbWFwXHJcbiAgICBjb25zdCBjb3VudHJpZXNUeXBlczogTWFwPHN0cmluZywgU2V0PG51bWJlcj4+ID0gbmV3IE1hcDxzdHJpbmcsIFNldDxudW1iZXI+PigpO1xyXG4gICAgbWV0aG9kcy5mb3JFYWNoKCh7Y291bnRyeUlTT0NvZGUsIHR5cGU6IHtpZH19KSA9PiB7XHJcbiAgICAgIGxldCB0eXBlcyA9IChjb3VudHJpZXNUeXBlcy5nZXQoY291bnRyeUlTT0NvZGUpIHx8IG5ldyBTZXQoKSkuYWRkKGlkKTtcclxuICAgICAgY291bnRyaWVzVHlwZXMuc2V0KGNvdW50cnlJU09Db2RlLCB0eXBlcyk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBDaGVjayBldmVyeSB0eXBlIGluIHRoZSBjb3VudHJ5IG9uIGhhdmluZyBpbiBvdGhlciBjb3VudHJpZXMgYW5kIGdldHRpbmcgb25lcyBpbiBjb2xsZWN0aW9uXHJcbiAgICBjb25zdCBnbG9iYWxDb3VudHJpZXM6IHN0cmluZ1tdID0gW107XHJcbiAgICBjb25zdCB0eXBlc0NvdW50cmllc0FycmF5ID0gQXJyYXkuZnJvbShjb3VudHJpZXNUeXBlcy52YWx1ZXMoKSk7XHJcbiAgICBjb25zdCBldmVyeUNvdW50cnlIYXNUeXBlSWRQcmVkaWNhdGUgPSAodHlwZUlkKSA9PiB0eXBlc0NvdW50cmllc0FycmF5LmV2ZXJ5KChjb3VudHJ5VHlwZXMpID0+IGNvdW50cnlUeXBlcy5oYXModHlwZUlkKSk7XHJcbiAgICBjb3VudHJpZXNUeXBlcy5mb3JFYWNoKCh0eXBlcywgaXNvKSA9PiB7XHJcbiAgICAgIC8vIENoZWNrIGV2ZXJ5IHR5cGUgaW5jbHVkZXMgaW4gYWxsIGNvdW50cmllc1xyXG4gICAgICBjb25zdCBoYXNPbmx5R2xvYmFsVHlwZXMgPSBbLi4udHlwZXNdLmV2ZXJ5KGV2ZXJ5Q291bnRyeUhhc1R5cGVJZFByZWRpY2F0ZSk7XHJcbiAgICAgIGlmIChoYXNPbmx5R2xvYmFsVHlwZXMpIHtcclxuICAgICAgICBnbG9iYWxDb3VudHJpZXMucHVzaChpc28pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBpZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgY291bnRyeSB3aXRoIG9ubHkgZ2xvYmFsIHR5cGVzIGNvbGxhcHNlIHRoZW0gaW50byBvbmUgY2F0ZWdvcnlcclxuICAgIGlmIChnbG9iYWxDb3VudHJpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBmaXJzdEdsb2JhbENvdW50cnkgPSBnbG9iYWxDb3VudHJpZXMucG9wKCk7XHJcbiAgICAgIG1ldGhvZHMgPSBtZXRob2RzXHJcbiAgICAgICAgLmZpbHRlcigoe2NvdW50cnlJU09Db2RlfSkgPT4gIWdsb2JhbENvdW50cmllcy5pbmNsdWRlcyhjb3VudHJ5SVNPQ29kZSkpO1xyXG4gICAgICBtZXRob2RzLmZvckVhY2gobSA9PiBtLmNvdW50cnlJU09Db2RlID09PSBmaXJzdEdsb2JhbENvdW50cnkgJiYgKG0uY291bnRyeUlTT0NvZGUgPSBPVEhFUl9DT1VOVFJZX0NPREUpKTtcclxuICAgIH1cclxuICAgIHNlc3Npb24ubWV0aG9kVHlwZXMgPSBtZXRob2RzO1xyXG4gICAgcmV0dXJuIHNlc3Npb247XHJcbiAgfVxyXG5cclxuICBnZXRDb25maWd1cmF0aW9uKG5hbWU6IHN0cmluZykge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbnMuZ2V0KG5hbWUpO1xyXG4gIH1cclxuXHJcbiAgcmVkaXJlY3QoKSB7XHJcbiAgICBpZiAodGhpcy5yZWRpcmVjdFVybCkge1xyXG4gICAgICB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmxvY2F0aW9uLmhyZWYgPSB0aGlzLnJlZGlyZWN0VXJsO1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHJldHVybkJhY2soKSB7XHJcbiAgICBpZiAodGhpcy5yZXR1cm5VcmwpIHtcclxuICAgICAgdGhpcy5kb2N1bWVudC5kZWZhdWx0Vmlldy5sb2NhdGlvbi5ocmVmID0gdGhpcy5yZXR1cm5Vcmw7XHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGNhblJldHVyblRvUHJvamVjdCgpIHtcclxuICAgIHJldHVybiAhIXRoaXMucmV0dXJuVXJsO1xyXG4gIH1cclxuXHJcbiAgZ2V0IHJldHVybkJhY2tVcmwoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLnJldHVyblVybDtcclxuICB9XHJcblxyXG4gIGdldFR5cGVOYW1lQnlJZChpZDogbnVtYmVyKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kYXRhJC5nZXRWYWx1ZSgpLm1ldGhvZFR5cGVzLmZpbmQobSA9PiBtLnR5cGUuaWQgPT09IGlkKS50eXBlLm5hbWU7XHJcbiAgfVxyXG5cclxuICBnZXRTZXNzaW9uVmFsdWUoKTogU2Vzc2lvbkluZm8ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YSQuZ2V0VmFsdWUoKTtcclxuICB9XHJcblxyXG4gIGdldCgpOiBPYnNlcnZhYmxlPFNlc3Npb25JbmZvPiB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGluZyQuZ2V0VmFsdWUoKSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGkuZ2V0VGVybWluYWxTZXNzaW9uSW5mbyh7XHJcbiAgICAgIHRva2VuOiB0aGlzLnRva2VuXHJcbiAgICB9KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBjYXRjaEVycm9yKFxyXG4gICAgICAgICAgdGhpcy5jYXRjaEVycm9yKHRoaXMubG9hZGluZyQpXHJcbiAgICAgICAgKSxcclxuICAgICAgICBtYXAoKHNlc3Npb246IFNlc3Npb25JbmZvKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmRhdGEkLm5leHQodGhpcy51bmlvbkdsb2JhbENvdW50cmllcyhzZXNzaW9uKSk7XHJcbiAgICAgICAgICB0aGlzLmZpbGxDb25maWd1cmF0aW9ucygpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMucmV0dXJuVXJsID0gc2Vzc2lvbi5yZXR1cm5Vcmw7XHJcbiAgICAgICAgICByZXR1cm4gdGhpcy5kYXRhJC5nZXRWYWx1ZSgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRNZXRob2RJbmZvKGN1cnJlbmN5LCB0eXBlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8TWV0aG9kSW5mbz4ge1xyXG4gICAgaWYgKHRoaXMubG9hZGluZ01ldGhvZEluZm8kLmdldFZhbHVlKCkgIT09IG51bGwpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nTWV0aG9kSW5mbyQubmV4dCh0cnVlKTtcclxuICAgIH1cclxuICAgIGlmICghdHlwZUlkIHx8ICFjdXJyZW5jeSkge1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcih7fSlcclxuICAgICAgICAucGlwZShcclxuICAgICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdNZXRob2RJbmZvJClcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMudGVybWluYWxBcGlcclxuICAgICAgLmdldFRlcm1pbmFsTWV0aG9kSW5mbyh7XHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW4sXHJcbiAgICAgICAgbGFuZzogdGhpcy5sYW5nU3RvcmFnZS5jdXJyZW50TGFuZyxcclxuICAgICAgICBjdXJyZW5jeSxcclxuICAgICAgICB0eXBlSWRcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdNZXRob2RJbmZvJClcclxuICAgICAgICApLFxyXG4gICAgICAgIHRhcCgobWV0aG9kKSA9PiB7XHJcbiAgICAgICAgICBpZiAobWV0aG9kLnBheW1lbnRfdG9rZW4pIHtcclxuICAgICAgICAgICAgdGhpcy5wYXltZW50X3Rva2VuID0gbWV0aG9kLnBheW1lbnRfdG9rZW47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdNZXRob2RJbmZvJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMubG9hZGluZ0NvbmZpcm0kLm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhdGNoRXJyb3IobG9hZGluZyQ/OiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4pIHtcclxuICAgIHJldHVybiAoZXJyOiBIdHRwQmFkUmVxdWVzdFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIHRoaXMuYXBpRXJyb3JzU3J2LnNldExvY2FsRXJyb3IoZXJyLmVycm9yKTtcclxuICAgICAgbG9hZGluZyQ/Lm5leHQoZmFsc2UpO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJlcGFyZShkYXRhOiBUZXJtaW5hbFBheW1lbnRQcmVwYXJlUmVxdWVzdCk6IE9ic2VydmFibGU8VGVybWluYWxQYXltZW50UHJlcGFyZVJlc3BvbnNlPiB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGluZ0NvbmZpcm0kLmdldFZhbHVlKCkpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nQ29uZmlybSQubmV4dCh0cnVlKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5wb3N0VGVybWluYWxQYXltZW50UHJlcGFyZSh7XHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW4sXHJcbiAgICAgICAgdGVybWluYWxQYXltZW50UHJlcGFyZVJlcXVlc3Q6IGRhdGFcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgZGVsYXkoMjAwMCksXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdDb25maXJtJClcclxuICAgICAgICApLFxyXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KGZhbHNlKSlcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGNvbmZpcm0oKSB7XHJcbiAgICBpZiAoIXRoaXMubG9hZGluZ0NvbmZpcm0kLmdldFZhbHVlKCkpIHtcclxuICAgICAgdGhpcy5sb2FkaW5nQ29uZmlybSQubmV4dCh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gdGhpcy50ZXJtaW5hbEFwaVxyXG4gICAgICAucG9zdFRlcm1pbmFsUGF5bWVudENvbmZpcm0oe1xyXG4gICAgICAgIHRva2VuOiB0aGlzLnRva2VuLFxyXG4gICAgICAgIHRlcm1pbmFsUGF5bWVudENvbmZpcm1SZXF1ZXN0OiB7XHJcbiAgICAgICAgICBsYW5nOiB0aGlzLmxhbmdTdG9yYWdlLmN1cnJlbnRMYW5nLFxyXG4gICAgICAgICAgZ2FDb29raWU6IHRoaXMuY29va2llU3J2LmdldCgnX2dhJykgfHwgbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdDb25maXJtJClcclxuICAgICAgICApLFxyXG4gICAgICAgIHRhcCgocmVzcCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5yZWRpcmVjdFVybCA9IHJlc3AucmVkaXJlY3RVcmw7XHJcbiAgICAgICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KGZhbHNlKVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBjbG9zZSgpIHtcclxuICAgIGlmICghdGhpcy5sb2FkaW5nQ29uZmlybSQuZ2V0VmFsdWUoKSkge1xyXG4gICAgICB0aGlzLmxvYWRpbmdDb25maXJtJC5uZXh0KHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiB0aGlzLnRlcm1pbmFsQXBpXHJcbiAgICAgIC5wb3N0VGVybWluYWxDbG9zZSh7XHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW5cclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcih0aGlzLmxvYWRpbmdDb25maXJtJClcclxuICAgICAgICApLFxyXG4gICAgICAgIG1hcCgoKSA9PiB7XHJcbiAgICAgICAgICBpZiAoIXRoaXMucmV0dXJuQmFjaygpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0ge2NvZGU6IEkxOE5fS0VZLlNFU1NJT05fQ0xPU0VEfTtcclxuICAgICAgICAgICAgdGhpcy5hcGlFcnJvcnNTcnYuc2V0TG9jYWxFcnJvcihlcnJvcik7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZGluZ0NvbmZpcm0kPy5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcclxuXHJcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgfVxyXG5cclxuICBnZXRCYW5rcyh0eXBlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8VGVybWluYWxNZXRob2RCYW5rc1Jlc3BvbnNlPiB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXJtaW5hbEFwaVxyXG4gICAgICAuZ2V0VGVybWluYWxNZXRob2RCYW5rcyh7XHJcbiAgICAgICAgdHlwZUlkLFxyXG4gICAgICAgIHRva2VuOiB0aGlzLnRva2VuXHJcbiAgICAgIH0pXHJcbiAgICAgIC5waXBlKFxyXG4gICAgICAgIGNhdGNoRXJyb3IoXHJcbiAgICAgICAgICB0aGlzLmNhdGNoRXJyb3IoKVxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICB9XHJcblxyXG4gIGdldERvY3VtZW50cyh0eXBlSWQ6IG51bWJlcik6IE9ic2VydmFibGU8VGVybWluYWxNZXRob2REb2N1bWVudFR5cGVzUmVzcG9uc2U+IHtcclxuXHJcbiAgICByZXR1cm4gdGhpcy50ZXJtaW5hbEFwaVxyXG4gICAgICAuZ2V0VGVybWluYWxNZXRob2REb2N1bWVudFR5cGVzKHtcclxuICAgICAgICB0eXBlSWQsXHJcbiAgICAgICAgdG9rZW46IHRoaXMudG9rZW5cclxuICAgICAgfSlcclxuICAgICAgLnBpcGUoXHJcbiAgICAgICAgY2F0Y2hFcnJvcihcclxuICAgICAgICAgIHRoaXMuY2F0Y2hFcnJvcigpXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ2FyZFRlcm1pbmFsU2RrKGxhbmc6IHN0cmluZywgaWQ6IHN0cmluZywgdGFiaW5kZXg/OiBudW1iZXIpOiBDZGVUZXJtaW5hbFNkayB7XHJcbiAgICByZXR1cm4gdGhpcy5jYXJkVGVybWluYWxTZGtGYWN0b3J5KHRoaXMucGF5bWVudF90b2tlbiwgaWQsIHtsYW5nLCB0YWJpbmRleH0pO1xyXG4gIH1cclxuXHJcbiAgZmVlQ2hhbmdlYWJsZSA9ICEhdGhpcy50ZXJtaW5hbEFwaS5nZXRGZWU7XHJcblxyXG4gIGZlZU9wdGlvbnMocGF5bWVudDogYW55KSB7XHJcbiAgICByZXR1cm4gdGhpcy50ZXJtaW5hbEFwaS5nZXRGZWUocGF5bWVudCk7XHJcbiAgfVxyXG59XHJcblxyXG5cclxuIl19
|
|
@@ -1,108 +1,124 @@
|
|
|
1
1
|
import { inject, Injectable } from '@angular/core';
|
|
2
2
|
import { DOCUMENT } from '@angular/common';
|
|
3
3
|
import { TranslateService } from '@ngx-translate/core';
|
|
4
|
-
import { DEFAULT_LANG, LANGUAGE
|
|
4
|
+
import { DEFAULT_LANG, LANGUAGE } from '../../models/constants';
|
|
5
5
|
import { TERMINAL_VERSION_SERVICE_TOKEN } from '../../../const';
|
|
6
|
+
import { LocalStorage } from "../local-storage";
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
8
|
+
const TRANSLATION_LANG_KEYS = {
|
|
9
|
+
[LANGUAGE.RU]: {
|
|
10
|
+
code: 'ru',
|
|
11
|
+
name: 'Русский',
|
|
12
|
+
countries: [
|
|
13
|
+
'AZ',
|
|
14
|
+
'AM',
|
|
15
|
+
'BY',
|
|
16
|
+
'KZ',
|
|
17
|
+
'KG',
|
|
18
|
+
'MD',
|
|
19
|
+
'RU',
|
|
20
|
+
'TJ',
|
|
21
|
+
'TM',
|
|
22
|
+
'UZ',
|
|
23
|
+
'UA',
|
|
24
|
+
],
|
|
25
|
+
},
|
|
26
|
+
[LANGUAGE.EN]: {
|
|
27
|
+
code: 'gb',
|
|
28
|
+
name: 'English',
|
|
29
|
+
countries: [],
|
|
30
|
+
},
|
|
31
|
+
[LANGUAGE.ES]: {
|
|
32
|
+
code: 'es',
|
|
33
|
+
name: 'Español',
|
|
34
|
+
countries: [
|
|
35
|
+
'BZ',
|
|
36
|
+
'GT',
|
|
37
|
+
'HN',
|
|
38
|
+
'CR',
|
|
39
|
+
'PA',
|
|
40
|
+
'NI',
|
|
41
|
+
'SV',
|
|
42
|
+
'AR',
|
|
43
|
+
'CL',
|
|
44
|
+
'CO',
|
|
45
|
+
'EC',
|
|
46
|
+
'PY',
|
|
47
|
+
'PE',
|
|
48
|
+
'GY',
|
|
49
|
+
'ES',
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
[LANGUAGE.TR]: {
|
|
53
|
+
code: 'tr',
|
|
54
|
+
name: 'Türkçe',
|
|
55
|
+
countries: ['TR'],
|
|
56
|
+
},
|
|
57
|
+
[LANGUAGE.PT]: {
|
|
58
|
+
code: 'pt',
|
|
59
|
+
name: 'Português',
|
|
60
|
+
countries: ['PT', 'BR'],
|
|
61
|
+
},
|
|
62
|
+
};
|
|
7
63
|
export class TranslateLangStorageService {
|
|
8
64
|
constructor() {
|
|
65
|
+
this._storage = inject(LocalStorage);
|
|
66
|
+
this.versionSrv = inject(TERMINAL_VERSION_SERVICE_TOKEN);
|
|
9
67
|
this.document = inject(DOCUMENT);
|
|
10
68
|
this.translateSrv = inject(TranslateService);
|
|
11
|
-
this.
|
|
12
|
-
this._isLanguageDetected = false;
|
|
13
|
-
this.TRANSLATION_LANG_KEYS = {
|
|
14
|
-
[LANGUAGE.RU]: {
|
|
15
|
-
code: 'ru',
|
|
16
|
-
name: 'Русский',
|
|
17
|
-
countries: ['AZ', 'AM', 'BY', 'KZ', 'KG', 'MD', 'RU', 'TJ', 'TM', 'UZ', 'UA']
|
|
18
|
-
},
|
|
19
|
-
[LANGUAGE.EN]: {
|
|
20
|
-
code: 'gb',
|
|
21
|
-
name: 'English',
|
|
22
|
-
countries: []
|
|
23
|
-
},
|
|
24
|
-
[LANGUAGE.LT]: {
|
|
25
|
-
code: 'lt',
|
|
26
|
-
name: 'Lietuvių',
|
|
27
|
-
countries: ['LT']
|
|
28
|
-
},
|
|
29
|
-
[LANGUAGE.ES]: {
|
|
30
|
-
code: 'es',
|
|
31
|
-
name: 'Español',
|
|
32
|
-
countries: ['BZ', 'GT', 'HN', 'CR', 'PA', 'NI', 'SV', 'AR', 'CL', 'CO', 'EC', 'PY', 'PE', 'GY', 'ES']
|
|
33
|
-
},
|
|
34
|
-
[LANGUAGE.TR]: {
|
|
35
|
-
code: 'tr',
|
|
36
|
-
name: 'Türkçe',
|
|
37
|
-
countries: ['TR']
|
|
38
|
-
},
|
|
39
|
-
[LANGUAGE.PT]: {
|
|
40
|
-
code: 'pt',
|
|
41
|
-
name: 'Português',
|
|
42
|
-
countries: ['PT', 'BR']
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
this.translations = this.TRANSLATION_LANG_KEYS;
|
|
69
|
+
this.TRANSLATION_LANG_KEYS = TRANSLATION_LANG_KEYS;
|
|
46
70
|
}
|
|
47
71
|
get languages() {
|
|
48
72
|
return this.versionSrv.langs || [LANGUAGE.RU, LANGUAGE.EN, LANGUAGE.PT, LANGUAGE.TR, LANGUAGE.ES];
|
|
49
73
|
}
|
|
50
|
-
get storage() {
|
|
51
|
-
return this.document.defaultView.localStorage;
|
|
52
|
-
}
|
|
53
74
|
get location() {
|
|
54
75
|
return this.document.defaultView.location;
|
|
55
76
|
}
|
|
56
|
-
get defaultLang() {
|
|
57
|
-
const detectedLanguage = this.storage.getItem(LOCAL_LANG_KEY) || this.queryLang;
|
|
58
|
-
this._isLanguageDetected = !!detectedLanguage;
|
|
59
|
-
return detectedLanguage || DEFAULT_LANG;
|
|
60
|
-
}
|
|
61
77
|
get onLangChange$() {
|
|
62
78
|
return this.translateSrv.onLangChange;
|
|
63
79
|
}
|
|
64
|
-
get isLanguageDetected() {
|
|
65
|
-
return this._isLanguageDetected;
|
|
66
|
-
}
|
|
67
80
|
get currentLang() {
|
|
68
81
|
return this.translateSrv.currentLang;
|
|
69
82
|
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
value[c] = this.TRANSLATION_LANG_KEYS[c];
|
|
78
|
-
}
|
|
79
|
-
return value;
|
|
80
|
-
}, {});
|
|
81
|
-
if (!langs.includes(this.translateSrv.currentLang)) {
|
|
82
|
-
this.translateSrv
|
|
83
|
-
.use(langs[0]);
|
|
83
|
+
get queryLang() {
|
|
84
|
+
return new URL(this.location.href).searchParams.get('language');
|
|
85
|
+
}
|
|
86
|
+
get countryLanguage() {
|
|
87
|
+
const code = this._storage.defaultCountry?.toUpperCase();
|
|
88
|
+
if (!code) {
|
|
89
|
+
return null;
|
|
84
90
|
}
|
|
91
|
+
return Object.keys(this.TRANSLATION_LANG_KEYS).find((lang) => {
|
|
92
|
+
const meta = this.TRANSLATION_LANG_KEYS[lang];
|
|
93
|
+
return meta?.countries.some((c) => c.includes(code.toUpperCase()));
|
|
94
|
+
});
|
|
85
95
|
}
|
|
86
|
-
setLanguage$(
|
|
87
|
-
|
|
88
|
-
|
|
96
|
+
setLanguage$(options = { save: true }) {
|
|
97
|
+
const availableLanguages = Object.keys(this.TRANSLATION_LANG_KEYS);
|
|
98
|
+
let candidateLang = DEFAULT_LANG;
|
|
99
|
+
const lang = options?.lang?.toLowerCase();
|
|
100
|
+
const queryLang = this.queryLang?.toLowerCase();
|
|
101
|
+
const storageLang = this._storage.defaultLang?.toLowerCase();
|
|
102
|
+
const countryLang = this.countryLanguage?.toLowerCase();
|
|
103
|
+
if (availableLanguages.includes(lang)) {
|
|
104
|
+
candidateLang = lang;
|
|
89
105
|
}
|
|
90
|
-
else if (
|
|
91
|
-
|
|
106
|
+
else if (availableLanguages.includes(storageLang)) {
|
|
107
|
+
candidateLang = storageLang;
|
|
92
108
|
}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (
|
|
103
|
-
this.
|
|
109
|
+
else if (availableLanguages.includes(queryLang)) {
|
|
110
|
+
candidateLang = queryLang;
|
|
111
|
+
}
|
|
112
|
+
else if (availableLanguages.includes(countryLang)) {
|
|
113
|
+
candidateLang = countryLang;
|
|
114
|
+
}
|
|
115
|
+
if (!this.versionSrv.langs.includes(candidateLang)) {
|
|
116
|
+
candidateLang = DEFAULT_LANG;
|
|
117
|
+
}
|
|
118
|
+
if (options?.save) {
|
|
119
|
+
this._storage.saveDefaultLang(candidateLang);
|
|
104
120
|
}
|
|
105
|
-
return;
|
|
121
|
+
return this.translateSrv.use(candidateLang);
|
|
106
122
|
}
|
|
107
123
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TranslateLangStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
108
124
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TranslateLangStorageService }); }
|
|
@@ -110,4 +126,4 @@ export class TranslateLangStorageService {
|
|
|
110
126
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TranslateLangStorageService, decorators: [{
|
|
111
127
|
type: Injectable
|
|
112
128
|
}], ctorParameters: () => [] });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUUvRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFRaEUsTUFBTSxPQUFPLDJCQUEyQjtJQUlwQztRQUhBLGFBQVEsR0FBRyxNQUFNLENBQVcsUUFBUSxDQUFDLENBQUM7UUFDdEMsaUJBQVksR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNoQyxlQUFVLEdBQUcsTUFBTSxDQUEwQiw4QkFBOEIsQ0FBQyxDQUFDO1FBTzdFLHdCQUFtQixHQUFHLEtBQUssQ0FBQztRQUNuQiwwQkFBcUIsR0FBd0I7WUFDMUQsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxFQUFFLElBQUk7Z0JBQ1YsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsU0FBUyxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQzthQUNoRjtZQUNELENBQUMs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LENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDN0YsSUFBSSxTQUFTLENBQUM7UUFDbkIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLEVBQUMsSUFBSSxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUNELE9BQU87SUFDWCxDQUFDOzhHQWhIUSwyQkFBMkI7a0hBQTNCLDJCQUEyQjs7MkZBQTNCLDJCQUEyQjtrQkFEdkMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBET0NVTUVOVCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgREVGQVVMVF9MQU5HLCBMQU5HVUFHRSwgTE9DQUxfTEFOR19LRVkgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29uc3RhbnRzJ1xyXG5pbXBvcnQgeyBBbHBoYTJDb2RlIH0gZnJvbSAnaTE4bi1pc28tY291bnRyaWVzJztcclxuaW1wb3J0IHsgVEVSTUlOQUxfVkVSU0lPTl9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBWZXJzaW9uU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcblxyXG50eXBlIFRyYW5zbGF0aW9uTGFuZ0luZm8gPSB7XHJcbiAgICBba2V5IGluIExBTkdVQUdFXT86IHsgY29kZTogc3RyaW5nLCBuYW1lOiBzdHJpbmcsIGNvdW50cmllczogQWxwaGEyQ29kZVtdIH1cclxufVxyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlTGFuZ1N0b3JhZ2VTZXJ2aWNlIHtcclxuICAgIGRvY3VtZW50ID0gaW5qZWN0PERvY3VtZW50PihET0NVTUVOVCk7XHJcbiAgICB0cmFuc2xhdGVTcnYgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICBwcml2YXRlIHZlcnNpb25TcnYgPSBpbmplY3Q8VmVyc2lvblNlcnZpY2VJbnRlcmZhY2U+KFRFUk1JTkFMX1ZFUlNJT05fU0VSVklDRV9UT0tFTik7XHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgIH1cclxuICBnZXQgbGFuZ3VhZ2VzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmVyc2lvblNydi5sYW5ncyB8fCBbTEFOR1VBR0UuUlUsIExBTkdVQUdFLkVOLCBMQU5HVUFHRS5QVCwgTEFOR1VBR0UuVFIsTEFOR1VBR0UuRVNdO1xyXG4gIH1cclxuXHJcbiAgICBwcml2YXRlIF9pc0xhbmd1YWdlRGV0ZWN0ZWQgPSBmYWxzZTtcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgVFJBTlNMQVRJT05fTEFOR19LRVlTOiBUcmFuc2xhdGlvbkxhbmdJbmZvID0ge1xyXG4gICAgICAgIFtMQU5HVUFHRS5SVV06IHtcclxuICAgICAgICAgICAgY29kZTogJ3J1JyxcclxuICAgICAgICAgICAgbmFtZTogJ9Cg0YPRgdGB0LrQuNC5JyxcclxuICAgICAgICAgICAgY291bnRyaWVzOiBbJ0FaJywgJ0FNJywgJ0JZJywgJ0taJywgJ0tHJywgJ01EJywgJ1JVJywgJ1RKJywgJ1RNJywgJ1VaJywgJ1VBJ11cclxuICAgICAgICB9LFxyXG4gICAgICAgIFtMQU5HVUFHRS5FTl06IHtcclxuICAgICAgICAgICAgY29kZTogJ2diJyxcclxuICAgICAgICAgICAgbmFtZTogJ0VuZ2xpc2gnLFxyXG4gICAgICAgICAgICBjb3VudHJpZXM6IFtdXHJcbiAgICAgICAgfSxcclxuICAgICAgICBbTEFOR1VBR0UuTFRdOiB7XHJcbiAgICAgICAgICBjb2RlOiAnbHQnLFxyXG4gICAgICAgICAgbmFtZTogJ0xpZXR1dmnFsycsXHJcbiAgICAgICAgICBjb3VudHJpZXM6IFsnTFQnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgW0xBTkdVQUdFLkVTXToge1xyXG4gICAgICAgICAgICBjb2RlOiAnZXMnLFxyXG4gICAgICAgICAgICBuYW1lOiAnRXNwYcOxb2wnLFxyXG4gICAgICAgICAgICBjb3VudHJpZXM6IFsnQlonLCAnR1QnLCAnSE4nLCAnQ1InLCAnUEEnLCAnTkknLCAnU1YnLCAnQVInLCAnQ0wnLCAnQ08nLCAnRUMnLCAnUFknLCAnUEUnLCAnR1knLCAnRVMnXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgW0xBTkdVQUdFLlRSXToge1xyXG4gICAgICAgICAgICBjb2RlOiAndHInLFxyXG4gICAgICAgICAgICBuYW1lOiAnVMO8cmvDp2UnLFxyXG4gICAgICAgICAgICBjb3VudHJpZXM6IFsnVFInXVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgW0xBTkdVQUdFLlBUXToge1xyXG4gICAgICAgICAgICBjb2RlOiAncHQnLFxyXG4gICAgICAgICAgICBuYW1lOiAnUG9ydHVndcOqcycsXHJcbiAgICAgICAgICAgIGNvdW50cmllczogWydQVCcsICdCUiddXHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBwcml2YXRlIGdldCBzdG9yYWdlKCk6IFN0b3JhZ2Uge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmxvY2FsU3RvcmFnZTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGdldCBsb2NhdGlvbigpOiBMb2NhdGlvbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXQgZGVmYXVsdExhbmcoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgY29uc3QgZGV0ZWN0ZWRMYW5ndWFnZSA9IHRoaXMuc3RvcmFnZS5nZXRJdGVtKExPQ0FMX0xBTkdfS0VZKSB8fCB0aGlzLnF1ZXJ5TGFuZztcclxuICAgICAgICB0aGlzLl9pc0xhbmd1YWdlRGV0ZWN0ZWQgPSAhIWRldGVjdGVkTGFuZ3VhZ2U7XHJcbiAgICAgICAgcmV0dXJuIGRldGVjdGVkTGFuZ3VhZ2UgfHwgREVGQVVMVF9MQU5HO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgb25MYW5nQ2hhbmdlJCgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTcnYub25MYW5nQ2hhbmdlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyB0cmFuc2xhdGlvbnM6IFRyYW5zbGF0aW9uTGFuZ0luZm8gPSB0aGlzLlRSQU5TTEFUSU9OX0xBTkdfS0VZUztcclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzTGFuZ3VhZ2VEZXRlY3RlZCgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXNMYW5ndWFnZURldGVjdGVkO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgY3VycmVudExhbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU3J2LmN1cnJlbnRMYW5nO1xyXG4gICAgfVxyXG5cclxuICAgIHNldEF2YWlsYWJsZUxhbmd1YWdlcyhsYW5nczogTEFOR1VBR0VbXSA9IHRoaXMubGFuZ3VhZ2VzKSB7XHJcbiAgICAgICAgaWYgKCFsYW5ncyB8fCAhbGFuZ3MubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0gdGhpcy5UUkFOU0xBVElPTl9MQU5HX0tFWVM7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMgPSBPYmplY3Qua2V5cyh0aGlzLlRSQU5TTEFUSU9OX0xBTkdfS0VZUykucmVkdWNlPFRyYW5zbGF0aW9uTGFuZ0luZm8+KCh2YWx1ZSwgYzogTEFOR1VBR0UpID0+IHtcclxuICAgICAgICAgICAgaWYgKGxhbmdzLmluY2x1ZGVzKGMpKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZVtjXSA9IHRoaXMuVFJBTlNMQVRJT05fTEFOR19LRVlTW2NdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICB9LCB7fSk7XHJcblxyXG4gICAgICAgIGlmICghbGFuZ3MuaW5jbHVkZXModGhpcy50cmFuc2xhdGVTcnYuY3VycmVudExhbmcgYXMgTEFOR1VBR0UpKSB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRlU3J2XHJcbiAgICAgICAgICAgICAgICAudXNlKGxhbmdzWzBdKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgc2V0TGFuZ3VhZ2UkKGxhbmc/OiBzdHJpbmcsIG9wdGlvbnMgPSB7c2F2ZTogdHJ1ZX0pIHtcclxuICAgICAgICBpZiAoIWxhbmcpIHtcclxuICAgICAgICAgICAgbGFuZyA9IHRoaXMuZGVmYXVsdExhbmc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChvcHRpb25zPy5zYXZlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmFnZS5zZXRJdGVtKExPQ0FMX0xBTkdfS0VZLCBsYW5nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU3J2XHJcbiAgICAgICAgICAgIC51c2UobGFuZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBxdWVyeUxhbmcoKTogc3RyaW5nIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBVUkwodGhpcy5sb2NhdGlvbi5ocmVmKS5zZWFyY2hQYXJhbXMuZ2V0KCdsYW5ndWFnZScpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRMYW5ndWFnZUJ5Q291bnRyeShjb2RlOiBBbHBoYTJDb2RlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgY291bnRyeSA9IChPYmplY3Qua2V5cyh0aGlzLlRSQU5TTEFUSU9OX0xBTkdfS0VZUykgYXMgKGtleW9mIFRyYW5zbGF0aW9uTGFuZ0luZm8pW10pXHJcbiAgICAgICAgICAgIC5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGxhbmc6IExBTkdVQUdFKSA9PiB0aGlzLlRSQU5TTEFUSU9OX0xBTkdfS0VZU1tsYW5nXS5jb3VudHJpZXMuc29tZShjID0+IGMuaW5jbHVkZXMoY29kZSkpXHJcbiAgICAgICAgICAgICkgfHwgdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICghdGhpcy5pc0xhbmd1YWdlRGV0ZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXRMYW5ndWFnZSQoY291bnRyeSwge3NhdmU6IGZhbHNlfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybjtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
129
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDM0MsT0FBTyxFQUFtQixnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUE7QUFFL0QsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFaEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtCQUFrQixDQUFDOztBQWNoRCxNQUFNLHFCQUFxQixHQUF3QjtJQUNqRCxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNiLElBQUksRUFBRSxJQUFJO1FBQ1YsSUFBSSxFQUFFLFNBQVM7UUFDZixTQUFTLEVBQUU7WUFDVCxJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtZQUNKLElBQUk7WUFDSixJQUFJO1lBQ0osSUFBSTtTQUNMO0tBQ0Y7SUFDRCxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUNiLElBQUksRUFBRSxJQUFJO1FBQ1YsSUFBSSxFQUFFLFNBQVM7UUFDZixTQUFTLEVBQUUsRUFBRTtLQUNkO0lBQ0QsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUU7UUFDYixJQUFJLEVBQUUsSUFBSTtRQUNW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ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTGFuZ0NoYW5nZUV2ZW50LCBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IERFRkFVTFRfTEFORywgTEFOR1VBR0UgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29uc3RhbnRzJ1xyXG5pbXBvcnQgeyBBbHBoYTJDb2RlIH0gZnJvbSAnaTE4bi1pc28tY291bnRyaWVzJztcclxuaW1wb3J0IHsgVEVSTUlOQUxfVkVSU0lPTl9TRVJWSUNFX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vY29uc3QnO1xyXG5pbXBvcnQgeyBWZXJzaW9uU2VydmljZUludGVyZmFjZSB9IGZyb20gJy4uLy4uL21vZGVscyc7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZSB9IGZyb20gXCIuLi9sb2NhbC1zdG9yYWdlXCI7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwicnhqc1wiO1xyXG5cclxuXHJcbmludGVyZmFjZSBUcmFuc2xhdGlvbkxhbmdJbmZvTWV0YSB7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBjb3VudHJpZXM6IEFscGhhMkNvZGVbXTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2xhdGlvbkxhbmdJbmZvIHtcclxuICBba2V5OiBzdHJpbmddOiBUcmFuc2xhdGlvbkxhbmdJbmZvTWV0YTtcclxufVxyXG5cclxuY29uc3QgVFJBTlNMQVRJT05fTEFOR19LRVlTOiBUcmFuc2xhdGlvbkxhbmdJbmZvID0ge1xyXG4gIFtMQU5HVUFHRS5SVV06IHtcclxuICAgIGNvZGU6ICdydScsXHJcbiAgICBuYW1lOiAn0KDRg9GB0YHQutC40LknLFxyXG4gICAgY291bnRyaWVzOiBbXHJcbiAgICAgICdBWicsXHJcbiAgICAgICdBTScsXHJcbiAgICAgICdCWScsXHJcbiAgICAgICdLWicsXHJcbiAgICAgICdLRycsXHJcbiAgICAgICdNRCcsXHJcbiAgICAgICdSVScsXHJcbiAgICAgICdUSicsXHJcbiAgICAgICdUTScsXHJcbiAgICAgICdVWicsXHJcbiAgICAgICdVQScsXHJcbiAgICBdLFxyXG4gIH0sXHJcbiAgW0xBTkdVQUdFLkVOXToge1xyXG4gICAgY29kZTogJ2diJyxcclxuICAgIG5hbWU6ICdFbmdsaXNoJyxcclxuICAgIGNvdW50cmllczogW10sXHJcbiAgfSxcclxuICBbTEFOR1VBR0UuRVNdOiB7XHJcbiAgICBjb2RlOiAnZXMnLFxyXG4gICAgbmFtZTogJ0VzcGHDsW9sJyxcclxuICAgIGNvdW50cmllczogW1xyXG4gICAgICAnQlonLFxyXG4gICAgICAnR1QnLFxyXG4gICAgICAnSE4nLFxyXG4gICAgICAnQ1InLFxyXG4gICAgICAnUEEnLFxyXG4gICAgICAnTkknLFxyXG4gICAgICAnU1YnLFxyXG4gICAgICAnQVInLFxyXG4gICAgICAnQ0wnLFxyXG4gICAgICAnQ08nLFxyXG4gICAgICAnRUMnLFxyXG4gICAgICAnUFknLFxyXG4gICAgICAnUEUnLFxyXG4gICAgICAnR1knLFxyXG4gICAgICAnRVMnLFxyXG4gICAgXSxcclxuICB9LFxyXG4gIFtMQU5HVUFHRS5UUl06IHtcclxuICAgIGNvZGU6ICd0cicsXHJcbiAgICBuYW1lOiAnVMO8cmvDp2UnLFxyXG4gICAgY291bnRyaWVzOiBbJ1RSJ10sXHJcbiAgfSxcclxuICBbTEFOR1VBR0UuUFRdOiB7XHJcbiAgICBjb2RlOiAncHQnLFxyXG4gICAgbmFtZTogJ1BvcnR1Z3XDqnMnLFxyXG4gICAgY291bnRyaWVzOiBbJ1BUJywgJ0JSJ10sXHJcbiAgfSxcclxufTtcclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgVHJhbnNsYXRlTGFuZ1N0b3JhZ2VTZXJ2aWNlIHtcclxuICBwcml2YXRlIF9zdG9yYWdlOiBMb2NhbFN0b3JhZ2UgPSBpbmplY3QoTG9jYWxTdG9yYWdlKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFuZ3VhZ2VzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudmVyc2lvblNydi5sYW5ncyB8fCBbTEFOR1VBR0UuUlUsIExBTkdVQUdFLkVOLCBMQU5HVUFHRS5QVCwgTEFOR1VBR0UuVFIsIExBTkdVQUdFLkVTXTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmVyc2lvblNydiA9IGluamVjdDxWZXJzaW9uU2VydmljZUludGVyZmFjZT4oVEVSTUlOQUxfVkVSU0lPTl9TRVJWSUNFX1RPS0VOKTtcclxuICBwcml2YXRlIGRvY3VtZW50ID0gaW5qZWN0PERvY3VtZW50PihET0NVTUVOVCk7XHJcbiAgcHJpdmF0ZSB0cmFuc2xhdGVTcnYgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XHJcblxyXG4gIHJlYWRvbmx5IFRSQU5TTEFUSU9OX0xBTkdfS0VZUyA9IFRSQU5TTEFUSU9OX0xBTkdfS0VZUztcclxuXHJcbiAgcHJpdmF0ZSBnZXQgbG9jYXRpb24oKTogTG9jYXRpb24ge1xyXG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcubG9jYXRpb247XHJcbiAgfVxyXG5cclxuICBnZXQgb25MYW5nQ2hhbmdlJCgpOiBFdmVudEVtaXR0ZXI8TGFuZ0NoYW5nZUV2ZW50PiB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTcnYub25MYW5nQ2hhbmdlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGN1cnJlbnRMYW5nKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy50cmFuc2xhdGVTcnYuY3VycmVudExhbmc7XHJcbiAgfVxyXG5cclxuICBnZXQgcXVlcnlMYW5nKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIG5ldyBVUkwodGhpcy5sb2NhdGlvbi5ocmVmKS5zZWFyY2hQYXJhbXMuZ2V0KCdsYW5ndWFnZScpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXQgY291bnRyeUxhbmd1YWdlKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgY29kZSA9IHRoaXMuX3N0b3JhZ2UuZGVmYXVsdENvdW50cnk/LnRvVXBwZXJDYXNlKCk7XHJcbiAgICBpZiAoIWNvZGUpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gT2JqZWN0LmtleXModGhpcy5UUkFOU0xBVElPTl9MQU5HX0tFWVMpLmZpbmQoKGxhbmc6IExBTkdVQUdFKSA9PiB7XHJcbiAgICAgIGNvbnN0IG1ldGEgPSB0aGlzLlRSQU5TTEFUSU9OX0xBTkdfS0VZU1tsYW5nXTtcclxuICAgICAgcmV0dXJuIG1ldGE/LmNvdW50cmllcy5zb21lKChjKSA9PiBjLmluY2x1ZGVzKGNvZGUudG9VcHBlckNhc2UoKSkpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRMYW5ndWFnZSQoXHJcbiAgICBvcHRpb25zOiB7IHNhdmU6IGJvb2xlYW47IGxhbmc/OiBzdHJpbmcgfSA9IHtzYXZlOiB0cnVlfSxcclxuICApOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYXZhaWxhYmxlTGFuZ3VhZ2VzID0gT2JqZWN0LmtleXModGhpcy5UUkFOU0xBVElPTl9MQU5HX0tFWVMpO1xyXG4gICAgbGV0IGNhbmRpZGF0ZUxhbmcgPSBERUZBVUxUX0xBTkc7XHJcbiAgICBjb25zdCBsYW5nID0gb3B0aW9ucz8ubGFuZz8udG9Mb3dlckNhc2UoKTtcclxuICAgIGNvbnN0IHF1ZXJ5TGFuZyA9IHRoaXMucXVlcnlMYW5nPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3Qgc3RvcmFnZUxhbmcgPSB0aGlzLl9zdG9yYWdlLmRlZmF1bHRMYW5nPy50b0xvd2VyQ2FzZSgpO1xyXG4gICAgY29uc3QgY291bnRyeUxhbmcgPSB0aGlzLmNvdW50cnlMYW5ndWFnZT8udG9Mb3dlckNhc2UoKTtcclxuICAgIGlmIChhdmFpbGFibGVMYW5ndWFnZXMuaW5jbHVkZXMobGFuZykpIHtcclxuICAgICAgY2FuZGlkYXRlTGFuZyA9IGxhbmc7XHJcbiAgICB9IGVsc2UgaWYgKGF2YWlsYWJsZUxhbmd1YWdlcy5pbmNsdWRlcyhzdG9yYWdlTGFuZykpIHtcclxuICAgICAgY2FuZGlkYXRlTGFuZyA9IHN0b3JhZ2VMYW5nO1xyXG4gICAgfSBlbHNlIGlmIChhdmFpbGFibGVMYW5ndWFnZXMuaW5jbHVkZXMocXVlcnlMYW5nKSkge1xyXG4gICAgICBjYW5kaWRhdGVMYW5nID0gcXVlcnlMYW5nO1xyXG4gICAgfSBlbHNlIGlmIChhdmFpbGFibGVMYW5ndWFnZXMuaW5jbHVkZXMoY291bnRyeUxhbmcpKSB7XHJcbiAgICAgIGNhbmRpZGF0ZUxhbmcgPSBjb3VudHJ5TGFuZztcclxuICAgIH1cclxuICAgIGlmICghdGhpcy52ZXJzaW9uU3J2LmxhbmdzLmluY2x1ZGVzKGNhbmRpZGF0ZUxhbmcgYXMgTEFOR1VBR0UpKSB7XHJcbiAgICAgIGNhbmRpZGF0ZUxhbmcgPSBERUZBVUxUX0xBTkc7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9wdGlvbnM/LnNhdmUpIHtcclxuICAgICAgdGhpcy5fc3RvcmFnZS5zYXZlRGVmYXVsdExhbmcoY2FuZGlkYXRlTGFuZyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRlU3J2LnVzZShjYW5kaWRhdGVMYW5nKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -8,19 +8,21 @@ import { FormsModule } from '@angular/forms';
|
|
|
8
8
|
import { TrmSelectLabelTemplateDirective } from '../trm-select/trm-select-label-template.directive';
|
|
9
9
|
import { TranslateModule } from '@ngx-translate/core';
|
|
10
10
|
import { GmSkeletonComponent } from '@gmmoney/gm-ui-kit';
|
|
11
|
+
import { TERMINAL_VERSION_SERVICE_TOKEN } from "../../../../const";
|
|
11
12
|
import * as i0 from "@angular/core";
|
|
12
13
|
import * as i1 from "@angular/forms";
|
|
13
14
|
import * as i2 from "@ngx-translate/core";
|
|
14
15
|
export class TerminalLangSwitcherComponent {
|
|
15
16
|
get translation_keys() {
|
|
16
|
-
return this.langStorageSrv.
|
|
17
|
+
return this.langStorageSrv.TRANSLATION_LANG_KEYS;
|
|
17
18
|
}
|
|
18
19
|
constructor() {
|
|
20
|
+
this.versionSrv = inject(TERMINAL_VERSION_SERVICE_TOKEN);
|
|
19
21
|
this.langStorageSrv = inject(TranslateLangStorageService);
|
|
20
22
|
this.cd = inject(ChangeDetectorRef);
|
|
21
23
|
this.unSubscriber = new Subject();
|
|
22
24
|
this.loading = false;
|
|
23
|
-
this.
|
|
25
|
+
this.langChange = new EventEmitter();
|
|
24
26
|
this.tabIndex = 0;
|
|
25
27
|
this.langStorageSrv.onLangChange$
|
|
26
28
|
.pipe(takeUntil(this.unSubscriber))
|
|
@@ -30,28 +32,28 @@ export class TerminalLangSwitcherComponent {
|
|
|
30
32
|
return this.langStorageSrv.currentLang;
|
|
31
33
|
}
|
|
32
34
|
get langs() {
|
|
33
|
-
return
|
|
35
|
+
return this.versionSrv.langs;
|
|
34
36
|
}
|
|
35
37
|
changeLang(lang) {
|
|
36
|
-
this.langStorageSrv.setLanguage$(lang);
|
|
38
|
+
this.langStorageSrv.setLanguage$({ lang, save: true });
|
|
37
39
|
this.cd.markForCheck();
|
|
38
|
-
this.
|
|
40
|
+
this.langChange.emit(lang);
|
|
39
41
|
}
|
|
40
42
|
ngOnDestroy() {
|
|
41
43
|
this.unSubscriber.next();
|
|
42
44
|
this.unSubscriber.unsubscribe();
|
|
43
45
|
}
|
|
44
46
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TerminalLangSwitcherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
45
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: TerminalLangSwitcherComponent, isStandalone: true, selector: "app-terminal-lang-switcher", inputs: { loading: "loading", tabIndex: "tabIndex" }, outputs: {
|
|
47
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.2", type: TerminalLangSwitcherComponent, isStandalone: true, selector: "app-terminal-lang-switcher", inputs: { loading: "loading", tabIndex: "tabIndex" }, outputs: { langChange: "langChange" }, ngImport: i0, template: "@if (!loading) {\r\n <app-trm-select class=\"lang-switcher\"\r\n [hasBorder]=\"false\"\r\n [searchable]=\"false\"\r\n [hasScrollbar]=\"false\"\r\n [data]=\"langs\"\r\n [ngModel]=\"lang\"\r\n [tabIndex]=\"tabIndex\"\r\n (ngModelChange)=\"changeLang($event)\"\r\n >\r\n <ng-template trmSelectLabelTemplate let-item=\"item\">\r\n <span class=\"fi\" [ngClass]=\"'fi-' + translation_keys[item].code\"></span>\r\n <span> {{translation_keys[item].name | translate}}</span>\r\n </ng-template>\r\n </app-trm-select>\r\n} @else {\r\n <gm-skeleton [count]=\"1\" [size]=\"30\"></gm-skeleton>\r\n}\r\n", styles: [":host{display:block}@media (min-width: 768px){:host{min-width:108px}}.lang-switcher{--trm-select-padding-right: 20px;--trm-select-arrow-right: 0;width:100%}.fi{border-radius:2px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-sizing:border-box;background-origin:border-box;flex-shrink:0;height:15px}.fi~span{display:none}@media (min-width: 768px){.fi~span{display:inline}}.trm-skeleton{min-width:70px}.trm-skeleton .loader,.trm-skeleton .skeleton-loader{height:30px}\n"], dependencies: [{ kind: "component", type: TrmSelectComponent, selector: "app-trm-select", inputs: ["label", "hasBorder", "data", "tabIndex", "name", "placeholder", "searchable", "hasScrollbar", "nameId", "nameLabel"], outputs: ["open", "search"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: TrmSelectLabelTemplateDirective, selector: "[trmSelectLabelTemplate]" }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "component", type: GmSkeletonComponent, selector: "gm-skeleton", inputs: ["shape", "orientation", "count", "size", "gap"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
46
48
|
}
|
|
47
49
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.2", ngImport: i0, type: TerminalLangSwitcherComponent, decorators: [{
|
|
48
50
|
type: Component,
|
|
49
51
|
args: [{ selector: 'app-terminal-lang-switcher', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [TrmSelectComponent, FormsModule, TrmSelectLabelTemplateDirective, NgClass, TranslateModule, GmSkeletonComponent], template: "@if (!loading) {\r\n <app-trm-select class=\"lang-switcher\"\r\n [hasBorder]=\"false\"\r\n [searchable]=\"false\"\r\n [hasScrollbar]=\"false\"\r\n [data]=\"langs\"\r\n [ngModel]=\"lang\"\r\n [tabIndex]=\"tabIndex\"\r\n (ngModelChange)=\"changeLang($event)\"\r\n >\r\n <ng-template trmSelectLabelTemplate let-item=\"item\">\r\n <span class=\"fi\" [ngClass]=\"'fi-' + translation_keys[item].code\"></span>\r\n <span> {{translation_keys[item].name | translate}}</span>\r\n </ng-template>\r\n </app-trm-select>\r\n} @else {\r\n <gm-skeleton [count]=\"1\" [size]=\"30\"></gm-skeleton>\r\n}\r\n", styles: [":host{display:block}@media (min-width: 768px){:host{min-width:108px}}.lang-switcher{--trm-select-padding-right: 20px;--trm-select-arrow-right: 0;width:100%}.fi{border-radius:2px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-sizing:border-box;background-origin:border-box;flex-shrink:0;height:15px}.fi~span{display:none}@media (min-width: 768px){.fi~span{display:inline}}.trm-skeleton{min-width:70px}.trm-skeleton .loader,.trm-skeleton .skeleton-loader{height:30px}\n"] }]
|
|
50
52
|
}], ctorParameters: () => [], propDecorators: { loading: [{
|
|
51
53
|
type: Input
|
|
52
|
-
}],
|
|
54
|
+
}], langChange: [{
|
|
53
55
|
type: Output
|
|
54
56
|
}], tabIndex: [{
|
|
55
57
|
type: Input
|
|
56
58
|
}] } });
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybWluYWwtbGFuZy1zd2l0Y2hlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXJtaW5hbC10ZW1wbGF0ZS9zcmMvbGliL2FwcC9zaGFyZWQvY29tcG9uZW50cy90ZXJtaW5hbC1sYW5nLXN3aXRjaGVyL3Rlcm1pbmFsLWxhbmctc3dpdGNoZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVybWluYWwtdGVtcGxhdGUvc3JjL2xpYi9hcHAvc2hhcmVkL2NvbXBvbmVudHMvdGVybWluYWwtbGFuZy1zd2l0Y2hlci90ZXJtaW5hbC1sYW5nLXN3aXRjaGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFFTCxNQUFNLEVBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0sOERBQThELENBQUM7QUFDM0csT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDekQsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7Ozs7QUFXbkUsTUFBTSxPQUFPLDZCQUE2QjtJQVV0QyxJQUFJLGdCQUFnQjtRQUNoQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUM7SUFDckQsQ0FBQztJQUVEO1FBYlEsZUFBVSxHQUE0QixNQUFNLENBQUMsOEJBQThCLENBQUMsQ0FBQztRQUM3RSxtQkFBYyxHQUFHLE1BQU0sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1FBQ3JELE9BQUUsR0FBRyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUUvQixpQkFBWSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDbEMsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNmLGVBQVUsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLGFBQVEsR0FBRyxDQUFDLENBQUM7UUFPbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhO2FBQzVCLElBQUksQ0FDRCxTQUFTLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUMvQjthQUNBLFNBQVMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUM7SUFDM0MsQ0FBQztJQUNELElBQUksS0FBSztRQUNMLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUM7SUFDakMsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUFZO1FBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxFQUFFLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELFdBQVc7UUFDUCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDcEMsQ0FBQzs4R0F0Q1EsNkJBQTZCO2tHQUE3Qiw2QkFBNkIsbUxDOUIxQyx5bkJBa0JBLG1oQkRVWSxrQkFBa0IsdU5BQUUsV0FBVywrVkFBRSwrQkFBK0IscUVBQUUsT0FBTyxtRkFBRSxlQUFlLDRGQUFFLG1CQUFtQjs7MkZBRTlHLDZCQUE2QjtrQkFSekMsU0FBUzsrQkFDSSw0QkFBNEIsbUJBR3JCLHVCQUF1QixDQUFDLE1BQU0sY0FDbkMsSUFBSSxXQUNULENBQUMsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLCtCQUErQixFQUFFLE9BQU8sRUFBRSxlQUFlLEVBQUUsbUJBQW1CLENBQUM7d0RBUS9HLE9BQU87c0JBQWYsS0FBSztnQkFDSSxVQUFVO3NCQUFuQixNQUFNO2dCQUNFLFFBQVE7c0JBQWhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIENoYW5nZURldGVjdG9yUmVmLFxyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgaW5qZWN0LFxyXG4gIElucHV0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPdXRwdXRcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTGFuZ1N0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdHJhbnNsYXRpb24vdHJhbnNsYXRlLWxhbmctc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE5nQ2xhc3MgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBUcm1TZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi90cm0tc2VsZWN0L3RybS1zZWxlY3QuY29tcG9uZW50JztcclxuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFRybVNlbGVjdExhYmVsVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi90cm0tc2VsZWN0L3RybS1zZWxlY3QtbGFiZWwtdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IEdtU2tlbGV0b25Db21wb25lbnQgfSBmcm9tICdAZ21tb25leS9nbS11aS1raXQnO1xyXG5pbXBvcnQgeyBURVJNSU5BTF9WRVJTSU9OX1NFUlZJQ0VfVE9LRU4gfSBmcm9tIFwiLi4vLi4vLi4vLi4vY29uc3RcIjtcclxuaW1wb3J0IHsgVmVyc2lvblNlcnZpY2VJbnRlcmZhY2UgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXBwLXRlcm1pbmFsLWxhbmctc3dpdGNoZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Rlcm1pbmFsLWxhbmctc3dpdGNoZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vdGVybWluYWwtbGFuZy1zd2l0Y2hlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtUcm1TZWxlY3RDb21wb25lbnQsIEZvcm1zTW9kdWxlLCBUcm1TZWxlY3RMYWJlbFRlbXBsYXRlRGlyZWN0aXZlLCBOZ0NsYXNzLCBUcmFuc2xhdGVNb2R1bGUsIEdtU2tlbGV0b25Db21wb25lbnRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUZXJtaW5hbExhbmdTd2l0Y2hlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XHJcbiAgICBwcml2YXRlIHZlcnNpb25TcnY6IFZlcnNpb25TZXJ2aWNlSW50ZXJmYWNlID0gaW5qZWN0KFRFUk1JTkFMX1ZFUlNJT05fU0VSVklDRV9UT0tFTik7XHJcbiAgICBwcml2YXRlIGxhbmdTdG9yYWdlU3J2ID0gaW5qZWN0KFRyYW5zbGF0ZUxhbmdTdG9yYWdlU2VydmljZSk7XHJcbiAgICBwcml2YXRlIGNkID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcclxuXHJcbiAgICBwcml2YXRlIHVuU3Vic2NyaWJlciA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgICBAT3V0cHV0KCkgbGFuZ0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQElucHV0KCkgdGFiSW5kZXggPSAwO1xyXG5cclxuICAgIGdldCB0cmFuc2xhdGlvbl9rZXlzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmxhbmdTdG9yYWdlU3J2LlRSQU5TTEFUSU9OX0xBTkdfS0VZUztcclxuICAgIH1cclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmxhbmdTdG9yYWdlU3J2Lm9uTGFuZ0NoYW5nZSRcclxuICAgICAgICAgICAgLnBpcGUoXHJcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy51blN1YnNjcmliZXIpXHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNkLmRldGVjdENoYW5nZXMoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGxhbmcoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubGFuZ1N0b3JhZ2VTcnYuY3VycmVudExhbmc7XHJcbiAgICB9XHJcbiAgICBnZXQgbGFuZ3MoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnZlcnNpb25TcnYubGFuZ3M7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdlTGFuZyhsYW5nOiBzdHJpbmcpIHtcclxuICAgICAgdGhpcy5sYW5nU3RvcmFnZVNydi5zZXRMYW5ndWFnZSQoeyBsYW5nLCBzYXZlOiB0cnVlIH0pO1xyXG4gICAgICB0aGlzLmNkLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLmxhbmdDaGFuZ2UuZW1pdChsYW5nKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uRGVzdHJveSgpIHtcclxuICAgICAgICB0aGlzLnVuU3Vic2NyaWJlci5uZXh0KCk7XHJcbiAgICAgICAgdGhpcy51blN1YnNjcmliZXIudW5zdWJzY3JpYmUoKTtcclxuICAgIH1cclxufVxyXG4iLCJAaWYgKCFsb2FkaW5nKSB7XHJcbiAgPGFwcC10cm0tc2VsZWN0IGNsYXNzPVwibGFuZy1zd2l0Y2hlclwiXHJcbiAgICBbaGFzQm9yZGVyXT1cImZhbHNlXCJcclxuICAgIFtzZWFyY2hhYmxlXT1cImZhbHNlXCJcclxuICAgIFtoYXNTY3JvbGxiYXJdPVwiZmFsc2VcIlxyXG4gICAgW2RhdGFdPVwibGFuZ3NcIlxyXG4gICAgW25nTW9kZWxdPVwibGFuZ1wiXHJcbiAgICBbdGFiSW5kZXhdPVwidGFiSW5kZXhcIlxyXG4gICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlTGFuZygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDxuZy10ZW1wbGF0ZSB0cm1TZWxlY3RMYWJlbFRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cImZpXCIgW25nQ2xhc3NdPVwiJ2ZpLScgKyB0cmFuc2xhdGlvbl9rZXlzW2l0ZW1dLmNvZGVcIj48L3NwYW4+XHJcbiAgICAgIDxzcGFuPiB7e3RyYW5zbGF0aW9uX2tleXNbaXRlbV0ubmFtZSB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L2FwcC10cm0tc2VsZWN0PlxyXG59IEBlbHNlIHtcclxuICA8Z20tc2tlbGV0b24gW2NvdW50XT1cIjFcIiBbc2l6ZV09XCIzMFwiPjwvZ20tc2tlbGV0b24+XHJcbn1cclxuIl19
|