@o3r/localization 12.1.0-prerelease.8 → 12.1.0-prerelease.80
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/annotations/localization.d.ts.map +1 -1
- package/builders/helpers/localization.generator.js.map +1 -0
- package/builders/i18n/index.d.ts +1 -1
- package/builders/i18n/index.js.map +1 -0
- package/builders/i18n/schema.js.map +1 -0
- package/builders/localization/index.d.ts +1 -1
- package/builders/localization/index.js.map +1 -0
- package/builders/localization/schema.js.map +1 -0
- package/builders/localization-extractor/index.d.ts +1 -1
- package/builders/localization-extractor/index.d.ts.map +1 -1
- package/builders/localization-extractor/index.js +3 -1
- package/builders/localization-extractor/index.js.map +1 -0
- package/builders/localization-extractor/schema.js.map +1 -0
- package/builders/localization-extractor/validations.js.map +1 -0
- package/builders/metadata-check/helpers/index.js.map +1 -0
- package/builders/metadata-check/helpers/localization-metadata-comparison.helper.js.map +1 -0
- package/builders/metadata-check/index.d.ts +1 -1
- package/builders/metadata-check/index.js.map +1 -0
- package/builders/metadata-check/schema.js.map +1 -0
- package/esm2022/annotations/index.mjs +2 -0
- package/esm2022/annotations/localization.mjs +29 -0
- package/esm2022/core/index.mjs +5 -0
- package/esm2022/core/json-localization.interface.mjs +2 -0
- package/esm2022/core/localization.configuration.mjs +15 -0
- package/esm2022/core/translatable.mjs +2 -0
- package/esm2022/core/translate-messageformat-lazy.compiler.mjs +67 -0
- package/esm2022/devkit/index.mjs +7 -0
- package/esm2022/devkit/localization-devkit.interface.mjs +2 -0
- package/esm2022/devkit/localization-devtools.console.service.mjs +87 -0
- package/esm2022/devkit/localization-devtools.message.service.mjs +129 -0
- package/esm2022/devkit/localization-devtools.module.mjs +47 -0
- package/esm2022/devkit/localization-devtools.service.mjs +95 -0
- package/esm2022/devkit/localization-devtools.token.mjs +8 -0
- package/esm2022/o3r-localization.mjs +5 -0
- package/esm2022/public_api.mjs +6 -0
- package/esm2022/rules-engine/localization.handler-action.mjs +30 -0
- package/esm2022/rules-engine/localization.interfaces.mjs +3 -0
- package/esm2022/rules-engine/localization.rules-engine.module.mjs +23 -0
- package/esm2022/rules-engine/o3r-localization-rules-engine.mjs +5 -0
- package/esm2022/rules-engine/public_api.mjs +4 -0
- package/esm2022/stores/index.mjs +7 -0
- package/esm2022/stores/localization-override/localization-override.actions.mjs +8 -0
- package/esm2022/stores/localization-override/localization-override.module.mjs +39 -0
- package/esm2022/stores/localization-override/localization-override.reducer.mjs +17 -0
- package/esm2022/stores/localization-override/localization-override.selectors.mjs +7 -0
- package/esm2022/stores/localization-override/localization-override.state.mjs +5 -0
- package/esm2022/stores/localization-override/localization-override.sync.mjs +11 -0
- package/esm2022/tools/index.mjs +13 -0
- package/esm2022/tools/localization-translate.directive.mjs +77 -0
- package/esm2022/tools/localization-translate.pipe.mjs +86 -0
- package/esm2022/tools/localization.module.mjs +89 -0
- package/esm2022/tools/localization.provider.mjs +25 -0
- package/esm2022/tools/localization.service.mjs +192 -0
- package/esm2022/tools/localization.token.mjs +4 -0
- package/esm2022/tools/localized-currency.pipe.mjs +32 -0
- package/esm2022/tools/localized-date.pipe.mjs +32 -0
- package/esm2022/tools/localized-decimal.pipe.mjs +32 -0
- package/esm2022/tools/text-direction.service.mjs +43 -0
- package/esm2022/tools/text-directionality.service.mjs +26 -0
- package/esm2022/tools/translations-loader.mjs +112 -0
- package/fesm2022/o3r-localization-rules-engine.mjs +7 -7
- package/fesm2022/o3r-localization.mjs +51 -51
- package/package.json +11 -7
- package/schematics/add-localization-key/index.d.ts +1 -1
- package/schematics/add-localization-key/index.d.ts.map +1 -1
- package/schematics/add-localization-key/index.js +1 -1
- package/schematics/add-localization-key/index.js.map +1 -0
- package/schematics/add-localization-key/schema.js.map +1 -0
- package/schematics/add-localization-key/schema.json +1 -2
- package/schematics/cms-adapter/index.d.ts +1 -3
- package/schematics/cms-adapter/index.d.ts.map +1 -1
- package/schematics/cms-adapter/index.js +1 -1
- package/schematics/cms-adapter/index.js.map +1 -0
- package/schematics/localization-base/index.d.ts +1 -3
- package/schematics/localization-base/index.d.ts.map +1 -1
- package/schematics/localization-base/index.js +1 -1
- package/schematics/localization-base/index.js.map +1 -0
- package/schematics/localization-to-component/index.d.ts +1 -1
- package/schematics/localization-to-component/index.d.ts.map +1 -1
- package/schematics/localization-to-component/index.js +1 -1
- package/schematics/localization-to-component/index.js.map +1 -0
- package/schematics/localization-to-component/schema.js.map +1 -0
- package/schematics/ng-add/helpers/devtools-registration.d.ts.map +1 -1
- package/schematics/ng-add/helpers/devtools-registration.js.map +1 -0
- package/schematics/ng-add/index.d.ts.map +1 -1
- package/schematics/ng-add/index.js +2 -2
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/schema.js.map +1 -0
- package/schematics/ng-add/schema.json +1 -2
- package/schematics/ng-update/v10-0/index.d.ts +1 -1
- package/schematics/ng-update/v10-0/index.d.ts.map +1 -1
- package/schematics/ng-update/v10-0/index.js +1 -1
- package/schematics/ng-update/v10-0/index.js.map +1 -0
- package/schematics/ng-update/v11-6/index.d.ts +1 -1
- package/schematics/ng-update/v11-6/index.d.ts.map +1 -1
- package/schematics/ng-update/v11-6/index.js +1 -1
- package/schematics/ng-update/v11-6/index.js.map +1 -0
- package/stores/localization-override/localization-override.sync.d.ts.map +1 -1
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Directive, ElementRef, Inject, Input, } from '@angular/core';
|
|
2
|
+
import { TranslateDirective, TranslateService, } from '@ngx-translate/core';
|
|
3
|
+
import { LocalizationService, } from './localization.service';
|
|
4
|
+
import { LOCALIZATION_CONFIGURATION_TOKEN, } from './localization.token';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./localization.service";
|
|
7
|
+
import * as i2 from "@ngx-translate/core";
|
|
8
|
+
/**
|
|
9
|
+
* TranslateDirective class adding debug functionality
|
|
10
|
+
*/
|
|
11
|
+
export class LocalizationTranslateDirective extends TranslateDirective {
|
|
12
|
+
/** @inheritdoc */
|
|
13
|
+
set translate(key) {
|
|
14
|
+
if (key && key !== this.key) {
|
|
15
|
+
if (this.onKeyChange) {
|
|
16
|
+
this.onKeyChange.unsubscribe();
|
|
17
|
+
}
|
|
18
|
+
this.onKeyChange = this.localizationService.getKey(key).subscribe((newKey) => {
|
|
19
|
+
this.key = newKey;
|
|
20
|
+
this.checkNodes();
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
constructor(localizationService, translateService, element, _ref, localizationConfig) {
|
|
25
|
+
super(translateService, element, _ref);
|
|
26
|
+
this.localizationService = localizationService;
|
|
27
|
+
this.localizationConfig = localizationConfig;
|
|
28
|
+
/**
|
|
29
|
+
* Should we display keys instead of translations
|
|
30
|
+
*/
|
|
31
|
+
this.showKeys = false;
|
|
32
|
+
if (localizationConfig.enableTranslationDeactivation) {
|
|
33
|
+
this.onShowKeysChange = localizationService.showKeys$.subscribe((showKeys) => {
|
|
34
|
+
this.showKeys = showKeys;
|
|
35
|
+
this.checkNodes(true);
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Overriding parent's setContent to plug debugging feature
|
|
41
|
+
* @param node
|
|
42
|
+
* @param content
|
|
43
|
+
*/
|
|
44
|
+
setContent(node, content) {
|
|
45
|
+
const key = node.originalContent;
|
|
46
|
+
const newContent = this.showKeys ? key : (this.localizationConfig.debugMode && key ? `${key} - ${content}` : content);
|
|
47
|
+
if (typeof node.textContent !== 'undefined' && node.textContent !== null) {
|
|
48
|
+
node.textContent = newContent;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
node.data = newContent;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
ngOnDestroy() {
|
|
55
|
+
super.ngOnDestroy();
|
|
56
|
+
if (this.onShowKeysChange) {
|
|
57
|
+
this.onShowKeysChange.unsubscribe();
|
|
58
|
+
}
|
|
59
|
+
if (this.onKeyChange) {
|
|
60
|
+
this.onKeyChange?.unsubscribe();
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizationTranslateDirective, deps: [{ token: i1.LocalizationService }, { token: i2.TranslateService }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: LOCALIZATION_CONFIGURATION_TOKEN }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
64
|
+
/** @nocollapse */ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: LocalizationTranslateDirective, selector: "[translate],[ngx-translate]", inputs: { translate: "translate" }, usesInheritance: true, ngImport: i0 }); }
|
|
65
|
+
}
|
|
66
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizationTranslateDirective, decorators: [{
|
|
67
|
+
type: Directive,
|
|
68
|
+
args: [{
|
|
69
|
+
selector: '[translate],[ngx-translate]'
|
|
70
|
+
}]
|
|
71
|
+
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i2.TranslateService }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
72
|
+
type: Inject,
|
|
73
|
+
args: [LOCALIZATION_CONFIGURATION_TOKEN]
|
|
74
|
+
}] }], propDecorators: { translate: [{
|
|
75
|
+
type: Input
|
|
76
|
+
}] } });
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLXRyYW5zbGF0ZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvbG9jYWxpemF0aW9uLXRyYW5zbGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixLQUFLLEdBRU4sTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixnQkFBZ0IsR0FDakIsTUFBTSxxQkFBcUIsQ0FBQztBQU83QixPQUFPLEVBQ0wsbUJBQW1CLEdBQ3BCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLGdDQUFnQyxHQUNqQyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBQzlCOztHQUVHO0FBSUgsTUFBTSxPQUFPLDhCQUErQixTQUFRLGtCQUFrQjtJQWdCcEUsa0JBQWtCO0lBQ2xCLElBQ1csU0FBUyxDQUFDLEdBQVc7UUFDOUIsSUFBSSxHQUFHLElBQUksR0FBRyxLQUFLLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUMzRSxJQUFJLENBQUMsR0FBRyxHQUFHLE1BQU0sQ0FBQztnQkFDbEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRCxZQUE2QixtQkFBd0MsRUFBRSxnQkFBa0MsRUFBRSxPQUFtQixFQUFFLElBQXVCLEVBQzFGLGtCQUE2QztRQUN4RyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRlosd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUNSLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBMkI7UUF6QjFHOztXQUVHO1FBQ0ssYUFBUSxHQUFHLEtBQUssQ0FBQztRQXlCdkIsSUFBSSxrQkFBa0IsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxtQkFBbUIsQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUU7Z0JBQzNFLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO2dCQUN6QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztJQUNILENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksVUFBVSxDQUFDLElBQVMsRUFBRSxPQUFlO1FBQzFDLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7UUFDakMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQWEsTUFBTSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDaEksSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDekUsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7UUFDaEMsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztRQUN6QixDQUFDO0lBQ0gsQ0FBQztJQUVNLFdBQVc7UUFDaEIsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3BCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQ2xDLENBQUM7SUFDSCxDQUFDO2tJQWpFVSw4QkFBOEIsZ0pBK0IvQixnQ0FBZ0M7c0hBL0IvQiw4QkFBOEI7OzRGQUE5Qiw4QkFBOEI7a0JBSDFDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLDZCQUE2QjtpQkFDeEM7OzBCQWdDSSxNQUFNOzJCQUFDLGdDQUFnQzt5Q0FiL0IsU0FBUztzQkFEbkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBUcmFuc2xhdGVEaXJlY3RpdmUsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG59IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgU3Vic2NyaXB0aW9uLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIExvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb24sXG59IGZyb20gJy4uL2NvcmUnO1xuaW1wb3J0IHtcbiAgTG9jYWxpemF0aW9uU2VydmljZSxcbn0gZnJvbSAnLi9sb2NhbGl6YXRpb24uc2VydmljZSc7XG5pbXBvcnQge1xuICBMT0NBTElaQVRJT05fQ09ORklHVVJBVElPTl9UT0tFTixcbn0gZnJvbSAnLi9sb2NhbGl6YXRpb24udG9rZW4nO1xuLyoqXG4gKiBUcmFuc2xhdGVEaXJlY3RpdmUgY2xhc3MgYWRkaW5nIGRlYnVnIGZ1bmN0aW9uYWxpdHlcbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3RyYW5zbGF0ZV0sW25neC10cmFuc2xhdGVdJ1xufSlcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25UcmFuc2xhdGVEaXJlY3RpdmUgZXh0ZW5kcyBUcmFuc2xhdGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogSW50ZXJuYWwgc3Vic2NyaXB0aW9uIHRvIHRoZSBMb2NhbGl6YXRpb25TZXJ2aWNlIHNob3dLZXlzIG1vZGUgY2hhbmdlc1xuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvblNob3dLZXlzQ2hhbmdlPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBTaG91bGQgd2UgZGlzcGxheSBrZXlzIGluc3RlYWQgb2YgdHJhbnNsYXRpb25zXG4gICAqL1xuICBwcml2YXRlIHNob3dLZXlzID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIEludGVybmFsIHN1YnNjcmlwdGlvbiB0byB0aGUgTG9jYWxpemF0aW9uU2VydmljZSBrZXkgbWFwcGluZ1xuICAgKi9cbiAgcHJpdmF0ZSBvbktleUNoYW5nZT86IFN1YnNjcmlwdGlvbjtcblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCB0cmFuc2xhdGUoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAoa2V5ICYmIGtleSAhPT0gdGhpcy5rZXkpIHtcbiAgICAgIGlmICh0aGlzLm9uS2V5Q2hhbmdlKSB7XG4gICAgICAgIHRoaXMub25LZXlDaGFuZ2UudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25LZXlDaGFuZ2UgPSB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuZ2V0S2V5KGtleSkuc3Vic2NyaWJlKChuZXdLZXkpID0+IHtcbiAgICAgICAgdGhpcy5rZXkgPSBuZXdLZXk7XG4gICAgICAgIHRoaXMuY2hlY2tOb2RlcygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsb2NhbGl6YXRpb25TZXJ2aWNlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlLCBlbGVtZW50OiBFbGVtZW50UmVmLCBfcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KExPQ0FMSVpBVElPTl9DT05GSUdVUkFUSU9OX1RPS0VOKSBwcml2YXRlIHJlYWRvbmx5IGxvY2FsaXphdGlvbkNvbmZpZzogTG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbikge1xuICAgIHN1cGVyKHRyYW5zbGF0ZVNlcnZpY2UsIGVsZW1lbnQsIF9yZWYpO1xuXG4gICAgaWYgKGxvY2FsaXphdGlvbkNvbmZpZy5lbmFibGVUcmFuc2xhdGlvbkRlYWN0aXZhdGlvbikge1xuICAgICAgdGhpcy5vblNob3dLZXlzQ2hhbmdlID0gbG9jYWxpemF0aW9uU2VydmljZS5zaG93S2V5cyQuc3Vic2NyaWJlKChzaG93S2V5cykgPT4ge1xuICAgICAgICB0aGlzLnNob3dLZXlzID0gc2hvd0tleXM7XG4gICAgICAgIHRoaXMuY2hlY2tOb2Rlcyh0cnVlKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkaW5nIHBhcmVudCdzIHNldENvbnRlbnQgdG8gcGx1ZyBkZWJ1Z2dpbmcgZmVhdHVyZVxuICAgKiBAcGFyYW0gbm9kZVxuICAgKiBAcGFyYW0gY29udGVudFxuICAgKi9cbiAgcHVibGljIHNldENvbnRlbnQobm9kZTogYW55LCBjb250ZW50OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBrZXkgPSBub2RlLm9yaWdpbmFsQ29udGVudDtcbiAgICBjb25zdCBuZXdDb250ZW50ID0gdGhpcy5zaG93S2V5cyA/IGtleSA6ICh0aGlzLmxvY2FsaXphdGlvbkNvbmZpZy5kZWJ1Z01vZGUgJiYga2V5ID8gYCR7a2V5IGFzIHN0cmluZ30gLSAke2NvbnRlbnR9YCA6IGNvbnRlbnQpO1xuICAgIGlmICh0eXBlb2Ygbm9kZS50ZXh0Q29udGVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgbm9kZS50ZXh0Q29udGVudCAhPT0gbnVsbCkge1xuICAgICAgbm9kZS50ZXh0Q29udGVudCA9IG5ld0NvbnRlbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuZGF0YSA9IG5ld0NvbnRlbnQ7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgaWYgKHRoaXMub25TaG93S2V5c0NoYW5nZSkge1xuICAgICAgdGhpcy5vblNob3dLZXlzQ2hhbmdlLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9uS2V5Q2hhbmdlKSB7XG4gICAgICB0aGlzLm9uS2V5Q2hhbmdlPy51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { ChangeDetectorRef, Inject, Pipe, } from '@angular/core';
|
|
2
|
+
import { TranslatePipe, TranslateService, } from '@ngx-translate/core';
|
|
3
|
+
import { LocalizationService, } from './localization.service';
|
|
4
|
+
import { LOCALIZATION_CONFIGURATION_TOKEN, } from './localization.token';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "./localization.service";
|
|
7
|
+
import * as i2 from "@ngx-translate/core";
|
|
8
|
+
/**
|
|
9
|
+
* TranslatePipe class adding debug functionality
|
|
10
|
+
*/
|
|
11
|
+
export class O3rLocalizationTranslatePipe extends TranslatePipe {
|
|
12
|
+
constructor(localizationService, translateService, changeDetector, localizationConfig) {
|
|
13
|
+
super(translateService, changeDetector);
|
|
14
|
+
this.localizationService = localizationService;
|
|
15
|
+
this.changeDetector = changeDetector;
|
|
16
|
+
this.localizationConfig = localizationConfig;
|
|
17
|
+
/**
|
|
18
|
+
* Should we display keys instead of translations
|
|
19
|
+
*/
|
|
20
|
+
this.showKeys = false;
|
|
21
|
+
if (localizationConfig.enableTranslationDeactivation) {
|
|
22
|
+
this.onShowKeysChange = this.localizationService.showKeys$.subscribe((showKeys) => {
|
|
23
|
+
this.showKeys = showKeys;
|
|
24
|
+
this.changeDetector.markForCheck();
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Calls original transform method and eventually outputs the key if debugMode (in LocalizationConfiguration) is enabled
|
|
30
|
+
* @inheritdoc
|
|
31
|
+
*/
|
|
32
|
+
transform(query, ...args) {
|
|
33
|
+
if (this.showKeys) {
|
|
34
|
+
return query;
|
|
35
|
+
}
|
|
36
|
+
if (query !== this.lastQueryKey) {
|
|
37
|
+
this.lastQueryKey = query;
|
|
38
|
+
if (this.onKeyChange) {
|
|
39
|
+
this.onKeyChange.unsubscribe();
|
|
40
|
+
}
|
|
41
|
+
this.onKeyChange = this.localizationService.getKey(query).subscribe((key) => {
|
|
42
|
+
this.lastResolvedKey = key;
|
|
43
|
+
this.changeDetector.markForCheck();
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (this.lastResolvedKey) {
|
|
47
|
+
const value = super.transform(this.lastResolvedKey, ...args);
|
|
48
|
+
if (this.localizationConfig.debugMode) {
|
|
49
|
+
return `${this.lastResolvedKey} - ${value}`;
|
|
50
|
+
}
|
|
51
|
+
return value;
|
|
52
|
+
}
|
|
53
|
+
return this.value;
|
|
54
|
+
}
|
|
55
|
+
ngOnDestroy() {
|
|
56
|
+
super.ngOnDestroy();
|
|
57
|
+
if (this.onShowKeysChange) {
|
|
58
|
+
this.onShowKeysChange.unsubscribe();
|
|
59
|
+
}
|
|
60
|
+
if (this.onKeyChange) {
|
|
61
|
+
this.onKeyChange.unsubscribe();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: O3rLocalizationTranslatePipe, deps: [{ token: i1.LocalizationService }, { token: i2.TranslateService }, { token: i0.ChangeDetectorRef }, { token: LOCALIZATION_CONFIGURATION_TOKEN }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
65
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: O3rLocalizationTranslatePipe, name: "o3rTranslate", pure: false }); }
|
|
66
|
+
}
|
|
67
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: O3rLocalizationTranslatePipe, decorators: [{
|
|
68
|
+
type: Pipe,
|
|
69
|
+
args: [{ name: 'o3rTranslate', pure: false }]
|
|
70
|
+
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i2.TranslateService }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
|
|
71
|
+
type: Inject,
|
|
72
|
+
args: [LOCALIZATION_CONFIGURATION_TOKEN]
|
|
73
|
+
}] }] });
|
|
74
|
+
/**
|
|
75
|
+
* TranslatePipe class adding debug functionality
|
|
76
|
+
* @deprecated please use O3rLocalizationTranslatePipe, will be removed in v12.
|
|
77
|
+
*/
|
|
78
|
+
export class LocalizationTranslatePipe extends O3rLocalizationTranslatePipe {
|
|
79
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizationTranslatePipe, deps: null, target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
80
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LocalizationTranslatePipe, name: "translate", pure: false }); }
|
|
81
|
+
}
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizationTranslatePipe, decorators: [{
|
|
83
|
+
type: Pipe,
|
|
84
|
+
args: [{ name: 'translate', pure: false }]
|
|
85
|
+
}] });
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLXRyYW5zbGF0ZS5waXBlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xzL2xvY2FsaXphdGlvbi10cmFuc2xhdGUucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLE1BQU0sRUFFTixJQUFJLEdBRUwsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGFBQWEsRUFDYixnQkFBZ0IsR0FDakIsTUFBTSxxQkFBcUIsQ0FBQztBQU83QixPQUFPLEVBQ0wsbUJBQW1CLEdBQ3BCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLGdDQUFnQyxHQUNqQyxNQUFNLHNCQUFzQixDQUFDOzs7O0FBRTlCOztHQUVHO0FBRUgsTUFBTSxPQUFPLDRCQUE2QixTQUFRLGFBQWE7SUFzQjdELFlBQStCLG1CQUF3QyxFQUFFLGdCQUFrQyxFQUFxQixjQUFpQyxFQUNsRyxrQkFBNkM7UUFDMUcsS0FBSyxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDO1FBRlgsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUF5RCxtQkFBYyxHQUFkLGNBQWMsQ0FBbUI7UUFDbEcsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUEyQjtRQVo1Rzs7V0FFRztRQUNPLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFZekIsSUFBSSxrQkFBa0IsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNoRixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztnQkFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksU0FBUyxDQUFDLEtBQWEsRUFBRSxHQUFHLElBQVc7UUFDNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pDLENBQUM7WUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7Z0JBQzFFLElBQUksQ0FBQyxlQUFlLEdBQUcsR0FBRyxDQUFDO2dCQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO1lBRTdELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsRUFBRSxDQUFDO2dCQUN0QyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsTUFBTSxLQUFlLEVBQUUsQ0FBQztZQUN4RCxDQUFDO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFTSxXQUFXO1FBQ2hCLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQztrSUEzRVUsNEJBQTRCLHNIQXVCN0IsZ0NBQWdDO2dJQXZCL0IsNEJBQTRCOzs0RkFBNUIsNEJBQTRCO2tCQUR4QyxJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFOzswQkF3QnRDLE1BQU07MkJBQUMsZ0NBQWdDOztBQXVENUM7OztHQUdHO0FBRUgsTUFBTSxPQUFPLHlCQUEwQixTQUFRLDRCQUE0QjtrSUFBOUQseUJBQXlCO2dJQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBRHJDLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgSW5qZWN0LFxuICBPbkRlc3Ryb3ksXG4gIFBpcGUsXG4gIFBpcGVUcmFuc2Zvcm0sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgVHJhbnNsYXRlUGlwZSxcbiAgVHJhbnNsYXRlU2VydmljZSxcbn0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBTdWJzY3JpcHRpb24sXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgTG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbixcbn0gZnJvbSAnLi4vY29yZSc7XG5pbXBvcnQge1xuICBMb2NhbGl6YXRpb25TZXJ2aWNlLFxufSBmcm9tICcuL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIExPQ0FMSVpBVElPTl9DT05GSUdVUkFUSU9OX1RPS0VOLFxufSBmcm9tICcuL2xvY2FsaXphdGlvbi50b2tlbic7XG5cbi8qKlxuICogVHJhbnNsYXRlUGlwZSBjbGFzcyBhZGRpbmcgZGVidWcgZnVuY3Rpb25hbGl0eVxuICovXG5AUGlwZSh7IG5hbWU6ICdvM3JUcmFuc2xhdGUnLCBwdXJlOiBmYWxzZSB9KVxuZXhwb3J0IGNsYXNzIE8zckxvY2FsaXphdGlvblRyYW5zbGF0ZVBpcGUgZXh0ZW5kcyBUcmFuc2xhdGVQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSwgT25EZXN0cm95IHtcbiAgLyoqXG4gICAqIEludGVybmFsIHN1YnNjcmlwdGlvbiB0byB0aGUgTG9jYWxpemF0aW9uU2VydmljZSBzaG93S2V5cyBtb2RlIGNoYW5nZXNcbiAgICovXG4gIHByb3RlY3RlZCByZWFkb25seSBvblNob3dLZXlzQ2hhbmdlPzogU3Vic2NyaXB0aW9uO1xuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBzdWJzY3JpcHRpb24gdG8gdGhlIExvY2FsaXphdGlvblNlcnZpY2Uga2V5IG1hcHBpbmdcbiAgICovXG4gIHByb3RlY3RlZCBvbktleUNoYW5nZT86IFN1YnNjcmlwdGlvbjtcblxuICAvKipcbiAgICogU2hvdWxkIHdlIGRpc3BsYXkga2V5cyBpbnN0ZWFkIG9mIHRyYW5zbGF0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIHNob3dLZXlzID0gZmFsc2U7XG5cbiAgLyoqIGxhc3Qga2V5IHF1ZXJpZWQgKi9cbiAgcHJvdGVjdGVkIGxhc3RRdWVyeUtleT86IHN0cmluZztcblxuICAvKiogbGFzdCBrZXkgcmVzb2x2ZWQgKi9cbiAgcHJvdGVjdGVkIGxhc3RSZXNvbHZlZEtleT86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxpemF0aW9uU2VydmljZTogTG9jYWxpemF0aW9uU2VydmljZSwgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSwgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZURldGVjdG9yOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBASW5qZWN0KExPQ0FMSVpBVElPTl9DT05GSUdVUkFUSU9OX1RPS0VOKSBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxpemF0aW9uQ29uZmlnOiBMb2NhbGl6YXRpb25Db25maWd1cmF0aW9uKSB7XG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSwgY2hhbmdlRGV0ZWN0b3IpO1xuXG4gICAgaWYgKGxvY2FsaXphdGlvbkNvbmZpZy5lbmFibGVUcmFuc2xhdGlvbkRlYWN0aXZhdGlvbikge1xuICAgICAgdGhpcy5vblNob3dLZXlzQ2hhbmdlID0gdGhpcy5sb2NhbGl6YXRpb25TZXJ2aWNlLnNob3dLZXlzJC5zdWJzY3JpYmUoKHNob3dLZXlzKSA9PiB7XG4gICAgICAgIHRoaXMuc2hvd0tleXMgPSBzaG93S2V5cztcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxscyBvcmlnaW5hbCB0cmFuc2Zvcm0gbWV0aG9kIGFuZCBldmVudHVhbGx5IG91dHB1dHMgdGhlIGtleSBpZiBkZWJ1Z01vZGUgKGluIExvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb24pIGlzIGVuYWJsZWRcbiAgICogQGluaGVyaXRkb2NcbiAgICovXG4gIHB1YmxpYyB0cmFuc2Zvcm0ocXVlcnk6IHN0cmluZywgLi4uYXJnczogYW55W10pOiBhbnkge1xuICAgIGlmICh0aGlzLnNob3dLZXlzKSB7XG4gICAgICByZXR1cm4gcXVlcnk7XG4gICAgfVxuXG4gICAgaWYgKHF1ZXJ5ICE9PSB0aGlzLmxhc3RRdWVyeUtleSkge1xuICAgICAgdGhpcy5sYXN0UXVlcnlLZXkgPSBxdWVyeTtcbiAgICAgIGlmICh0aGlzLm9uS2V5Q2hhbmdlKSB7XG4gICAgICAgIHRoaXMub25LZXlDaGFuZ2UudW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub25LZXlDaGFuZ2UgPSB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuZ2V0S2V5KHF1ZXJ5KS5zdWJzY3JpYmUoKGtleSkgPT4ge1xuICAgICAgICB0aGlzLmxhc3RSZXNvbHZlZEtleSA9IGtleTtcbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmxhc3RSZXNvbHZlZEtleSkge1xuICAgICAgY29uc3QgdmFsdWUgPSBzdXBlci50cmFuc2Zvcm0odGhpcy5sYXN0UmVzb2x2ZWRLZXksIC4uLmFyZ3MpO1xuXG4gICAgICBpZiAodGhpcy5sb2NhbGl6YXRpb25Db25maWcuZGVidWdNb2RlKSB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmxhc3RSZXNvbHZlZEtleX0gLSAke3ZhbHVlIGFzIHN0cmluZ31gO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMudmFsdWU7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKSB7XG4gICAgc3VwZXIubmdPbkRlc3Ryb3koKTtcbiAgICBpZiAodGhpcy5vblNob3dLZXlzQ2hhbmdlKSB7XG4gICAgICB0aGlzLm9uU2hvd0tleXNDaGFuZ2UudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMub25LZXlDaGFuZ2UpIHtcbiAgICAgIHRoaXMub25LZXlDaGFuZ2UudW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUcmFuc2xhdGVQaXBlIGNsYXNzIGFkZGluZyBkZWJ1ZyBmdW5jdGlvbmFsaXR5XG4gKiBAZGVwcmVjYXRlZCBwbGVhc2UgdXNlIE8zckxvY2FsaXphdGlvblRyYW5zbGF0ZVBpcGUsIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTIuXG4gKi9cbkBQaXBlKHsgbmFtZTogJ3RyYW5zbGF0ZScsIHB1cmU6IGZhbHNlIH0pXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uVHJhbnNsYXRlUGlwZSBleHRlbmRzIE8zckxvY2FsaXphdGlvblRyYW5zbGF0ZVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHt9XG4iXX0=
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { BidiModule, Directionality, } from '@angular/cdk/bidi';
|
|
2
|
+
import { CommonModule, CurrencyPipe, DatePipe, DecimalPipe, } from '@angular/common';
|
|
3
|
+
import { InjectionToken, LOCALE_ID, NgModule, Optional, } from '@angular/core';
|
|
4
|
+
import { TranslateModule, } from '@ngx-translate/core';
|
|
5
|
+
import { DynamicContentModule, } from '@o3r/dynamic-content';
|
|
6
|
+
import { DEFAULT_LOCALIZATION_CONFIGURATION, } from '../core';
|
|
7
|
+
import { LocalizationTranslateDirective, } from './localization-translate.directive';
|
|
8
|
+
import { LocalizationTranslatePipe, O3rLocalizationTranslatePipe, } from './localization-translate.pipe';
|
|
9
|
+
import { LocalizationService, } from './localization.service';
|
|
10
|
+
import { LOCALIZATION_CONFIGURATION_TOKEN, } from './localization.token';
|
|
11
|
+
import { LocalizedCurrencyPipe, } from './localized-currency.pipe';
|
|
12
|
+
import { LocalizedDatePipe, } from './localized-date.pipe';
|
|
13
|
+
import { LocalizedDecimalPipe, } from './localized-decimal.pipe';
|
|
14
|
+
import { TextDirectionService, } from './text-direction.service';
|
|
15
|
+
import { TextDirectionality, } from './text-directionality.service';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
/**
|
|
18
|
+
* creates LocalizationConfiguration, which is used if the application
|
|
19
|
+
* @param configuration Localization configuration
|
|
20
|
+
*/
|
|
21
|
+
export function createLocalizationConfiguration(configuration) {
|
|
22
|
+
return {
|
|
23
|
+
...DEFAULT_LOCALIZATION_CONFIGURATION,
|
|
24
|
+
...configuration
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Factory to inject the LOCALE_ID token with the current language into Angular context
|
|
29
|
+
* @param localizationService Localization service
|
|
30
|
+
*/
|
|
31
|
+
export function localeIdNgBridge(localizationService) {
|
|
32
|
+
return localizationService.getCurrentLanguage();
|
|
33
|
+
}
|
|
34
|
+
/** Custom Localization Configuration Token to override default localization configuration */
|
|
35
|
+
export const CUSTOM_LOCALIZATION_CONFIGURATION_TOKEN = new InjectionToken('Partial Localization configuration');
|
|
36
|
+
export class LocalizationModule {
|
|
37
|
+
/**
|
|
38
|
+
* forRoot method should be called only once from the application index.ts
|
|
39
|
+
* It will do several things:
|
|
40
|
+
* - provide the configuration for the whole application
|
|
41
|
+
* - register all locales specified in the LocalizationConfiguration
|
|
42
|
+
* - configure TranslateService
|
|
43
|
+
* - inject LOCALE_ID token
|
|
44
|
+
* @param configuration LocalizationConfiguration
|
|
45
|
+
*/
|
|
46
|
+
static forRoot(configuration) {
|
|
47
|
+
return {
|
|
48
|
+
ngModule: LocalizationModule,
|
|
49
|
+
providers: [
|
|
50
|
+
LocalizationService,
|
|
51
|
+
...(configuration
|
|
52
|
+
? [{
|
|
53
|
+
provide: CUSTOM_LOCALIZATION_CONFIGURATION_TOKEN,
|
|
54
|
+
useFactory: configuration
|
|
55
|
+
}]
|
|
56
|
+
: [])
|
|
57
|
+
]
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
61
|
+
/** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LocalizationModule, declarations: [O3rLocalizationTranslatePipe, LocalizationTranslatePipe, LocalizationTranslateDirective, LocalizedDatePipe, LocalizedDecimalPipe, LocalizedCurrencyPipe], imports: [TranslateModule, BidiModule, DynamicContentModule, CommonModule], exports: [TranslateModule, O3rLocalizationTranslatePipe, LocalizationTranslatePipe, LocalizationTranslateDirective, LocalizedDatePipe, LocalizedDecimalPipe, LocalizedCurrencyPipe] }); }
|
|
62
|
+
/** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizationModule, providers: [
|
|
63
|
+
{ provide: LOCALIZATION_CONFIGURATION_TOKEN, useFactory: createLocalizationConfiguration, deps: [[new Optional(), CUSTOM_LOCALIZATION_CONFIGURATION_TOKEN]] },
|
|
64
|
+
{ provide: LOCALE_ID, useFactory: localeIdNgBridge, deps: [LocalizationService] },
|
|
65
|
+
{ provide: Directionality, useClass: TextDirectionality },
|
|
66
|
+
{ provide: DatePipe, useClass: LocalizedDatePipe },
|
|
67
|
+
{ provide: DecimalPipe, useClass: LocalizedDecimalPipe },
|
|
68
|
+
{ provide: CurrencyPipe, useClass: LocalizedCurrencyPipe },
|
|
69
|
+
TextDirectionService
|
|
70
|
+
], imports: [TranslateModule, BidiModule, DynamicContentModule, CommonModule, TranslateModule] }); }
|
|
71
|
+
}
|
|
72
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizationModule, decorators: [{
|
|
73
|
+
type: NgModule,
|
|
74
|
+
args: [{
|
|
75
|
+
declarations: [O3rLocalizationTranslatePipe, LocalizationTranslatePipe, LocalizationTranslateDirective, LocalizedDatePipe, LocalizedDecimalPipe, LocalizedCurrencyPipe],
|
|
76
|
+
imports: [TranslateModule, BidiModule, DynamicContentModule, CommonModule],
|
|
77
|
+
exports: [TranslateModule, O3rLocalizationTranslatePipe, LocalizationTranslatePipe, LocalizationTranslateDirective, LocalizedDatePipe, LocalizedDecimalPipe, LocalizedCurrencyPipe],
|
|
78
|
+
providers: [
|
|
79
|
+
{ provide: LOCALIZATION_CONFIGURATION_TOKEN, useFactory: createLocalizationConfiguration, deps: [[new Optional(), CUSTOM_LOCALIZATION_CONFIGURATION_TOKEN]] },
|
|
80
|
+
{ provide: LOCALE_ID, useFactory: localeIdNgBridge, deps: [LocalizationService] },
|
|
81
|
+
{ provide: Directionality, useClass: TextDirectionality },
|
|
82
|
+
{ provide: DatePipe, useClass: LocalizedDatePipe },
|
|
83
|
+
{ provide: DecimalPipe, useClass: LocalizedDecimalPipe },
|
|
84
|
+
{ provide: CurrencyPipe, useClass: LocalizedCurrencyPipe },
|
|
85
|
+
TextDirectionService
|
|
86
|
+
]
|
|
87
|
+
}]
|
|
88
|
+
}] });
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29scy9sb2NhbGl6YXRpb24ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxVQUFVLEVBQ1YsY0FBYyxHQUNmLE1BQU0sbUJBQW1CLENBQUM7QUFDM0IsT0FBTyxFQUNMLFlBQVksRUFDWixZQUFZLEVBQ1osUUFBUSxFQUNSLFdBQVcsR0FDWixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxjQUFjLEVBQ2QsU0FBUyxFQUVULFFBQVEsRUFDUixRQUFRLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLGVBQWUsR0FDaEIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsb0JBQW9CLEdBQ3JCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUNMLGtDQUFrQyxHQUVuQyxNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQ0wsOEJBQThCLEdBQy9CLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUNMLHlCQUF5QixFQUN6Qiw0QkFBNEIsR0FDN0IsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQ0wsbUJBQW1CLEdBQ3BCLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUNMLGdDQUFnQyxHQUNqQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxxQkFBcUIsR0FDdEIsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQ0wsaUJBQWlCLEdBQ2xCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLG9CQUFvQixHQUNyQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFDTCxvQkFBb0IsR0FDckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQ0wsa0JBQWtCLEdBQ25CLE1BQU0sK0JBQStCLENBQUM7O0FB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QkFBbUIsQ0FBQyxFQUFFO3dCQUNqRixFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFO3dCQUN6RCxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFO3dCQUNsRCxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFO3dCQUN4RCxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFO3dCQUMxRCxvQkFBb0I7cUJBQ3JCO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmlkaU1vZHVsZSxcbiAgRGlyZWN0aW9uYWxpdHksXG59IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7XG4gIENvbW1vbk1vZHVsZSxcbiAgQ3VycmVuY3lQaXBlLFxuICBEYXRlUGlwZSxcbiAgRGVjaW1hbFBpcGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBJbmplY3Rpb25Ub2tlbixcbiAgTE9DQUxFX0lELFxuICBNb2R1bGVXaXRoUHJvdmlkZXJzLFxuICBOZ01vZHVsZSxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgVHJhbnNsYXRlTW9kdWxlLFxufSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7XG4gIER5bmFtaWNDb250ZW50TW9kdWxlLFxufSBmcm9tICdAbzNyL2R5bmFtaWMtY29udGVudCc7XG5pbXBvcnQge1xuICBERUZBVUxUX0xPQ0FMSVpBVElPTl9DT05GSUdVUkFUSU9OLFxuICBMb2NhbGl6YXRpb25Db25maWd1cmF0aW9uLFxufSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7XG4gIExvY2FsaXphdGlvblRyYW5zbGF0ZURpcmVjdGl2ZSxcbn0gZnJvbSAnLi9sb2NhbGl6YXRpb24tdHJhbnNsYXRlLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICBMb2NhbGl6YXRpb25UcmFuc2xhdGVQaXBlLFxuICBPM3JMb2NhbGl6YXRpb25UcmFuc2xhdGVQaXBlLFxufSBmcm9tICcuL2xvY2FsaXphdGlvbi10cmFuc2xhdGUucGlwZSc7XG5pbXBvcnQge1xuICBMb2NhbGl6YXRpb25TZXJ2aWNlLFxufSBmcm9tICcuL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7XG4gIExPQ0FMSVpBVElPTl9DT05GSUdVUkFUSU9OX1RPS0VOLFxufSBmcm9tICcuL2xvY2FsaXphdGlvbi50b2tlbic7XG5pbXBvcnQge1xuICBMb2NhbGl6ZWRDdXJyZW5jeVBpcGUsXG59IGZyb20gJy4vbG9jYWxpemVkLWN1cnJlbmN5LnBpcGUnO1xuaW1wb3J0IHtcbiAgTG9jYWxpemVkRGF0ZVBpcGUsXG59IGZyb20gJy4vbG9jYWxpemVkLWRhdGUucGlwZSc7XG5pbXBvcnQge1xuICBMb2NhbGl6ZWREZWNpbWFsUGlwZSxcbn0gZnJvbSAnLi9sb2NhbGl6ZWQtZGVjaW1hbC5waXBlJztcbmltcG9ydCB7XG4gIFRleHREaXJlY3Rpb25TZXJ2aWNlLFxufSBmcm9tICcuL3RleHQtZGlyZWN0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgVGV4dERpcmVjdGlvbmFsaXR5LFxufSBmcm9tICcuL3RleHQtZGlyZWN0aW9uYWxpdHkuc2VydmljZSc7XG5cbi8qKlxuICogY3JlYXRlcyBMb2NhbGl6YXRpb25Db25maWd1cmF0aW9uLCB3aGljaCBpcyB1c2VkIGlmIHRoZSBhcHBsaWNhdGlvblxuICogQHBhcmFtIGNvbmZpZ3VyYXRpb24gTG9jYWxpemF0aW9uIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbj86IFBhcnRpYWw8TG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbj4pOiBMb2NhbGl6YXRpb25Db25maWd1cmF0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICAuLi5ERUZBVUxUX0xPQ0FMSVpBVElPTl9DT05GSUdVUkFUSU9OLFxuICAgIC4uLmNvbmZpZ3VyYXRpb25cbiAgfTtcbn1cblxuLyoqXG4gKiBGYWN0b3J5IHRvIGluamVjdCB0aGUgTE9DQUxFX0lEIHRva2VuIHdpdGggdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgaW50byBBbmd1bGFyIGNvbnRleHRcbiAqIEBwYXJhbSBsb2NhbGl6YXRpb25TZXJ2aWNlIExvY2FsaXphdGlvbiBzZXJ2aWNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2NhbGVJZE5nQnJpZGdlKGxvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UpIHtcbiAgcmV0dXJuIGxvY2FsaXphdGlvblNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCk7XG59XG5cbi8qKiBDdXN0b20gTG9jYWxpemF0aW9uIENvbmZpZ3VyYXRpb24gVG9rZW4gdG8gb3ZlcnJpZGUgZGVmYXVsdCBsb2NhbGl6YXRpb24gY29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGNvbnN0IENVU1RPTV9MT0NBTElaQVRJT05fQ09ORklHVVJBVElPTl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxQYXJ0aWFsPExvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb24+PignUGFydGlhbCBMb2NhbGl6YXRpb24gY29uZmlndXJhdGlvbicpO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtPM3JMb2NhbGl6YXRpb25UcmFuc2xhdGVQaXBlLCBMb2NhbGl6YXRpb25UcmFuc2xhdGVQaXBlLCBMb2NhbGl6YXRpb25UcmFuc2xhdGVEaXJlY3RpdmUsIExvY2FsaXplZERhdGVQaXBlLCBMb2NhbGl6ZWREZWNpbWFsUGlwZSwgTG9jYWxpemVkQ3VycmVuY3lQaXBlXSxcbiAgaW1wb3J0czogW1RyYW5zbGF0ZU1vZHVsZSwgQmlkaU1vZHVsZSwgRHluYW1pY0NvbnRlbnRNb2R1bGUsIENvbW1vbk1vZHVsZV0sXG4gIGV4cG9ydHM6IFtUcmFuc2xhdGVNb2R1bGUsIE8zckxvY2FsaXphdGlvblRyYW5zbGF0ZVBpcGUsIExvY2FsaXphdGlvblRyYW5zbGF0ZVBpcGUsIExvY2FsaXphdGlvblRyYW5zbGF0ZURpcmVjdGl2ZSwgTG9jYWxpemVkRGF0ZVBpcGUsIExvY2FsaXplZERlY2ltYWxQaXBlLCBMb2NhbGl6ZWRDdXJyZW5jeVBpcGVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7IHByb3ZpZGU6IExPQ0FMSVpBVElPTl9DT05GSUdVUkFUSU9OX1RPS0VOLCB1c2VGYWN0b3J5OiBjcmVhdGVMb2NhbGl6YXRpb25Db25maWd1cmF0aW9uLCBkZXBzOiBbW25ldyBPcHRpb25hbCgpLCBDVVNUT01fTE9DQUxJWkFUSU9OX0NPTkZJR1VSQVRJT05fVE9LRU5dXSB9LFxuICAgIHsgcHJvdmlkZTogTE9DQUxFX0lELCB1c2VGYWN0b3J5OiBsb2NhbGVJZE5nQnJpZGdlLCBkZXBzOiBbTG9jYWxpemF0aW9uU2VydmljZV0gfSxcbiAgICB7IHByb3ZpZGU6IERpcmVjdGlvbmFsaXR5LCB1c2VDbGFzczogVGV4dERpcmVjdGlvbmFsaXR5IH0sXG4gICAgeyBwcm92aWRlOiBEYXRlUGlwZSwgdXNlQ2xhc3M6IExvY2FsaXplZERhdGVQaXBlIH0sXG4gICAgeyBwcm92aWRlOiBEZWNpbWFsUGlwZSwgdXNlQ2xhc3M6IExvY2FsaXplZERlY2ltYWxQaXBlIH0sXG4gICAgeyBwcm92aWRlOiBDdXJyZW5jeVBpcGUsIHVzZUNsYXNzOiBMb2NhbGl6ZWRDdXJyZW5jeVBpcGUgfSxcbiAgICBUZXh0RGlyZWN0aW9uU2VydmljZVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvbk1vZHVsZSB7XG4gIC8qKlxuICAgKiBmb3JSb290IG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIG9ubHkgb25jZSBmcm9tIHRoZSBhcHBsaWNhdGlvbiBpbmRleC50c1xuICAgKiBJdCB3aWxsIGRvIHNldmVyYWwgdGhpbmdzOlxuICAgKiAtIHByb3ZpZGUgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSB3aG9sZSBhcHBsaWNhdGlvblxuICAgKiAtIHJlZ2lzdGVyIGFsbCBsb2NhbGVzIHNwZWNpZmllZCBpbiB0aGUgTG9jYWxpemF0aW9uQ29uZmlndXJhdGlvblxuICAgKiAtIGNvbmZpZ3VyZSBUcmFuc2xhdGVTZXJ2aWNlXG4gICAqIC0gaW5qZWN0IExPQ0FMRV9JRCB0b2tlblxuICAgKiBAcGFyYW0gY29uZmlndXJhdGlvbiBMb2NhbGl6YXRpb25Db25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZvclJvb3QoXG4gICAgY29uZmlndXJhdGlvbj86ICgpID0+IFBhcnRpYWw8TG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbj5cbiAgKTogTW9kdWxlV2l0aFByb3ZpZGVyczxMb2NhbGl6YXRpb25Nb2R1bGU+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbmdNb2R1bGU6IExvY2FsaXphdGlvbk1vZHVsZSxcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICBMb2NhbGl6YXRpb25TZXJ2aWNlLFxuICAgICAgICAuLi4oY29uZmlndXJhdGlvblxuICAgICAgICAgID8gW3tcbiAgICAgICAgICAgIHByb3ZpZGU6IENVU1RPTV9MT0NBTElaQVRJT05fQ09ORklHVVJBVElPTl9UT0tFTixcbiAgICAgICAgICAgIHVzZUZhY3Rvcnk6IGNvbmZpZ3VyYXRpb25cbiAgICAgICAgICB9XVxuICAgICAgICAgIDogW10pXG4gICAgICBdXG4gICAgfTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Optional, } from '@angular/core';
|
|
2
|
+
import { TranslateLoader, } from '@ngx-translate/core';
|
|
3
|
+
import { DynamicContentService, } from '@o3r/dynamic-content';
|
|
4
|
+
import { LoggerService, } from '@o3r/logger';
|
|
5
|
+
import { LOCALIZATION_CONFIGURATION_TOKEN, } from './localization.token';
|
|
6
|
+
import { TranslationsLoader, } from './translations-loader';
|
|
7
|
+
/**
|
|
8
|
+
* Creates a loader of translations bundles based on the configuration
|
|
9
|
+
* (endPointUrl and language determine which bundle we load and where do we fetch it from)
|
|
10
|
+
* @param localizationConfiguration
|
|
11
|
+
* @param logger service to handle the log of warning and errors
|
|
12
|
+
* @param dynamicContentService (optional)
|
|
13
|
+
*/
|
|
14
|
+
export function createTranslateLoader(localizationConfiguration, logger, dynamicContentService) {
|
|
15
|
+
return new TranslationsLoader(localizationConfiguration, logger, dynamicContentService);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* TranslateLoader provider, using framework's TranslationsLoader class
|
|
19
|
+
*/
|
|
20
|
+
export const translateLoaderProvider = {
|
|
21
|
+
provide: TranslateLoader,
|
|
22
|
+
useFactory: createTranslateLoader,
|
|
23
|
+
deps: [LOCALIZATION_CONFIGURATION_TOKEN, [new Optional(), LoggerService], [new Optional(), DynamicContentService]]
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xzL2xvY2FsaXphdGlvbi5wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxlQUFlLEdBQ2hCLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLHFCQUFxQixHQUN0QixNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxhQUFhLEdBQ2QsTUFBTSxhQUFhLENBQUM7QUFJckIsT0FBTyxFQUNMLGdDQUFnQyxHQUNqQyxNQUFNLHNCQUFzQixDQUFDO0FBQzlCLE9BQU8sRUFDTCxrQkFBa0IsR0FDbkIsTUFBTSx1QkFBdUIsQ0FBQztBQUUvQjs7Ozs7O0dBTUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMseUJBQW9ELEVBQUUsTUFBc0IsRUFBRSxxQkFBNkM7SUFDL0osT0FBTyxJQUFJLGtCQUFrQixDQUFDLHlCQUF5QixFQUFFLE1BQU0sRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQzFGLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUE4QjtJQUNoRSxPQUFPLEVBQUUsZUFBZTtJQUN4QixVQUFVLEVBQUUscUJBQXFCO0lBQ2pDLElBQUksRUFBRSxDQUFDLGdDQUFnQyxFQUFFLENBQUMsSUFBSSxRQUFRLEVBQUUsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLElBQUksUUFBUSxFQUFFLEVBQUUscUJBQXFCLENBQUMsQ0FBQztDQUMxRyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRmFjdG9yeVByb3ZpZGVyLFxuICBPcHRpb25hbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBUcmFuc2xhdGVMb2FkZXIsXG59IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtcbiAgRHluYW1pY0NvbnRlbnRTZXJ2aWNlLFxufSBmcm9tICdAbzNyL2R5bmFtaWMtY29udGVudCc7XG5pbXBvcnQge1xuICBMb2dnZXJTZXJ2aWNlLFxufSBmcm9tICdAbzNyL2xvZ2dlcic7XG5pbXBvcnQge1xuICBMb2NhbGl6YXRpb25Db25maWd1cmF0aW9uLFxufSBmcm9tICcuLi9jb3JlJztcbmltcG9ydCB7XG4gIExPQ0FMSVpBVElPTl9DT05GSUdVUkFUSU9OX1RPS0VOLFxufSBmcm9tICcuL2xvY2FsaXphdGlvbi50b2tlbic7XG5pbXBvcnQge1xuICBUcmFuc2xhdGlvbnNMb2FkZXIsXG59IGZyb20gJy4vdHJhbnNsYXRpb25zLWxvYWRlcic7XG5cbi8qKlxuICogQ3JlYXRlcyBhIGxvYWRlciBvZiB0cmFuc2xhdGlvbnMgYnVuZGxlcyBiYXNlZCBvbiB0aGUgY29uZmlndXJhdGlvblxuICogKGVuZFBvaW50VXJsIGFuZCBsYW5ndWFnZSBkZXRlcm1pbmUgd2hpY2ggYnVuZGxlIHdlIGxvYWQgYW5kIHdoZXJlIGRvIHdlIGZldGNoIGl0IGZyb20pXG4gKiBAcGFyYW0gbG9jYWxpemF0aW9uQ29uZmlndXJhdGlvblxuICogQHBhcmFtIGxvZ2dlciBzZXJ2aWNlIHRvIGhhbmRsZSB0aGUgbG9nIG9mIHdhcm5pbmcgYW5kIGVycm9yc1xuICogQHBhcmFtIGR5bmFtaWNDb250ZW50U2VydmljZSAob3B0aW9uYWwpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUcmFuc2xhdGVMb2FkZXIobG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbjogTG9jYWxpemF0aW9uQ29uZmlndXJhdGlvbiwgbG9nZ2VyPzogTG9nZ2VyU2VydmljZSwgZHluYW1pY0NvbnRlbnRTZXJ2aWNlPzogRHluYW1pY0NvbnRlbnRTZXJ2aWNlKSB7XG4gIHJldHVybiBuZXcgVHJhbnNsYXRpb25zTG9hZGVyKGxvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb24sIGxvZ2dlciwgZHluYW1pY0NvbnRlbnRTZXJ2aWNlKTtcbn1cblxuLyoqXG4gKiBUcmFuc2xhdGVMb2FkZXIgcHJvdmlkZXIsIHVzaW5nIGZyYW1ld29yaydzIFRyYW5zbGF0aW9uc0xvYWRlciBjbGFzc1xuICovXG5leHBvcnQgY29uc3QgdHJhbnNsYXRlTG9hZGVyUHJvdmlkZXI6IFJlYWRvbmx5PEZhY3RvcnlQcm92aWRlcj4gPSB7XG4gIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcbiAgdXNlRmFjdG9yeTogY3JlYXRlVHJhbnNsYXRlTG9hZGVyLFxuICBkZXBzOiBbTE9DQUxJWkFUSU9OX0NPTkZJR1VSQVRJT05fVE9LRU4sIFtuZXcgT3B0aW9uYWwoKSwgTG9nZ2VyU2VydmljZV0sIFtuZXcgT3B0aW9uYWwoKSwgRHluYW1pY0NvbnRlbnRTZXJ2aWNlXV1cbn0gYXMgY29uc3Q7XG4iXX0=
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { Inject, Injectable, Optional, } from '@angular/core';
|
|
2
|
+
import { select, Store, } from '@ngrx/store';
|
|
3
|
+
import { TranslateService, } from '@ngx-translate/core';
|
|
4
|
+
import { LoggerService, } from '@o3r/logger';
|
|
5
|
+
import { BehaviorSubject, combineLatest, of, } from 'rxjs';
|
|
6
|
+
import { distinctUntilChanged, map, shareReplay, switchMap, } from 'rxjs/operators';
|
|
7
|
+
import { selectLocalizationOverride, } from '../stores/index';
|
|
8
|
+
import { LOCALIZATION_CONFIGURATION_TOKEN, } from './localization.token';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
import * as i1 from "@ngx-translate/core";
|
|
11
|
+
import * as i2 from "@o3r/logger";
|
|
12
|
+
import * as i3 from "@ngrx/store";
|
|
13
|
+
/**
|
|
14
|
+
* Service which is wrapping the configuration logic of TranslateService from ngx-translate
|
|
15
|
+
* Any application willing to use localization just needs to inject LocalizationService
|
|
16
|
+
* in the root component and call its configure() method.
|
|
17
|
+
*/
|
|
18
|
+
export class LocalizationService {
|
|
19
|
+
constructor(translateService, logger, configuration, store) {
|
|
20
|
+
this.translateService = translateService;
|
|
21
|
+
this.logger = logger;
|
|
22
|
+
this.configuration = configuration;
|
|
23
|
+
this.store = store;
|
|
24
|
+
this.localeSplitIdentifier = '-';
|
|
25
|
+
/**
|
|
26
|
+
* Internal subject that we use to track changes between keys only and translation mode
|
|
27
|
+
*/
|
|
28
|
+
this._showKeys$ = new BehaviorSubject(false);
|
|
29
|
+
/**
|
|
30
|
+
* _showKeys$ exposed as an Observable
|
|
31
|
+
*/
|
|
32
|
+
this.showKeys$ = this._showKeys$.asObservable();
|
|
33
|
+
this.configure();
|
|
34
|
+
if (this.store) {
|
|
35
|
+
this.keyMapping$ = this.store.pipe(select(selectLocalizationOverride));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* This will handle the fallback language hierarchy to find out fallback language.
|
|
40
|
+
* supportedLocales language has highest priority, next priority goes to fallbackLocalesMap and default would be
|
|
41
|
+
* fallbackLanguage.
|
|
42
|
+
* @param language Selected language.
|
|
43
|
+
* @returns selected language if supported, fallback language otherwise.
|
|
44
|
+
*/
|
|
45
|
+
checkFallbackLocalesMap(language) {
|
|
46
|
+
if (language && !this.configuration.supportedLocales.includes(language)) {
|
|
47
|
+
const closestSupportedLanguageCode = this.getFirstClosestSupportedLanguageCode(language);
|
|
48
|
+
const fallbackForLanguage = this.getFallbackMapLangCode(language);
|
|
49
|
+
const fallbackStrategyDebug = (fallbackForLanguage && ' associated fallback language ')
|
|
50
|
+
|| (closestSupportedLanguageCode && ' closest supported language ')
|
|
51
|
+
|| (this.configuration.fallbackLanguage && ' configured default language ');
|
|
52
|
+
const fallbackLang = fallbackForLanguage || closestSupportedLanguageCode || this.configuration.fallbackLanguage || language;
|
|
53
|
+
if (language !== fallbackLang) {
|
|
54
|
+
this.logger.debug(`Non supported languages ${language} will fallback to ${fallbackStrategyDebug} ${fallbackLang}`);
|
|
55
|
+
}
|
|
56
|
+
return fallbackLang;
|
|
57
|
+
}
|
|
58
|
+
else if (!language) {
|
|
59
|
+
this.logger.debug('Language is not defined');
|
|
60
|
+
}
|
|
61
|
+
return language;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* This function checks if fallback language can be provided from fallbackLocalesMap.
|
|
65
|
+
* supportedLocales: ['en-GB', 'en-US', 'fr-FR'], fallbackLocalesMap: {'en-CA': 'en-US', 'de': 'fr-FR'}
|
|
66
|
+
* translate to en-CA -> fallback to en-US, translate to de-DE -> fallback to fr-FR
|
|
67
|
+
* translate to en-NZ -> fallback to en-GB
|
|
68
|
+
* @param language Selected language.
|
|
69
|
+
* @returns Fallback language if available, undefined otherwise.
|
|
70
|
+
*/
|
|
71
|
+
getFallbackMapLangCode(language) {
|
|
72
|
+
const fallbackLocalesMap = this.configuration.fallbackLocalesMap;
|
|
73
|
+
const [locale] = language.split(this.localeSplitIdentifier);
|
|
74
|
+
return fallbackLocalesMap && (fallbackLocalesMap[language] || fallbackLocalesMap[locale]);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* This function checks if closest supported language available incase of selected language is not
|
|
78
|
+
* supported language.
|
|
79
|
+
* supportedLocales: ['en-GB', 'en-US', 'fr-FR']
|
|
80
|
+
* translate to en-CA -> fallback to en-GB
|
|
81
|
+
* @param language Selected language.
|
|
82
|
+
* @returns Closest supported language if available, undefined otherwise.
|
|
83
|
+
*/
|
|
84
|
+
getFirstClosestSupportedLanguageCode(language) {
|
|
85
|
+
const [locale] = language.split(this.localeSplitIdentifier);
|
|
86
|
+
const firstClosestRegx = new RegExp(`^${locale}${this.localeSplitIdentifier}?`, 'i');
|
|
87
|
+
return this.configuration.supportedLocales.find((supportedLang) => firstClosestRegx.test(supportedLang));
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Returns a stream of translated values of a key which updates whenever the language changes.
|
|
91
|
+
* @param translationKey Key to translate
|
|
92
|
+
* @param interpolateParams Object to use in translation binding
|
|
93
|
+
* @returns A stream of the translated key
|
|
94
|
+
*/
|
|
95
|
+
getTranslationStream(translationKey, interpolateParams) {
|
|
96
|
+
const translation$ = this.translateService.stream(translationKey, interpolateParams).pipe(map((value) => this.configuration.debugMode ? `${translationKey} - ${value}` : value));
|
|
97
|
+
if (!this.configuration.enableTranslationDeactivation) {
|
|
98
|
+
return translation$;
|
|
99
|
+
}
|
|
100
|
+
return combineLatest([
|
|
101
|
+
translation$,
|
|
102
|
+
this.showKeys$
|
|
103
|
+
]).pipe(map(([value, showKeys]) => showKeys ? translationKey : value));
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Configures TranslateService and registers locales. This method is called from the application level.
|
|
107
|
+
*/
|
|
108
|
+
configure() {
|
|
109
|
+
const language = this.checkFallbackLocalesMap(this.configuration.language || this.configuration.fallbackLanguage);
|
|
110
|
+
this.translateService.addLangs(this.configuration.supportedLocales);
|
|
111
|
+
this.translateService.setDefaultLang(language);
|
|
112
|
+
this.useLanguage(language);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Is the translation deactivation enabled
|
|
116
|
+
*/
|
|
117
|
+
isTranslationDeactivationEnabled() {
|
|
118
|
+
return this.configuration.enableTranslationDeactivation;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Wrapper to call the ngx-translate service TranslateService method getLangs().
|
|
122
|
+
*/
|
|
123
|
+
getLanguages() {
|
|
124
|
+
return this.translateService.getLangs();
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Wrapper to call the ngx-translate service TranslateService method use(language).
|
|
128
|
+
* @param language
|
|
129
|
+
*/
|
|
130
|
+
useLanguage(language) {
|
|
131
|
+
language = this.checkFallbackLocalesMap(language);
|
|
132
|
+
return this.translateService.use(language);
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Wrapper to get the ngx-translate service TranslateService currentLang.
|
|
136
|
+
*/
|
|
137
|
+
getCurrentLanguage() {
|
|
138
|
+
return this.translateService.currentLang;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Get the instance of the ngx-translate TranslateService used by LocalizationService.
|
|
142
|
+
*/
|
|
143
|
+
getTranslateService() {
|
|
144
|
+
return this.translateService;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Toggle the ShowKeys mode between active and inactive.
|
|
148
|
+
* @param value if specified, set the ShowKeys mode to value. If not specified, toggle the ShowKeys mode.
|
|
149
|
+
*/
|
|
150
|
+
toggleShowKeys(value) {
|
|
151
|
+
if (!this.configuration.enableTranslationDeactivation) {
|
|
152
|
+
throw new Error('Translation deactivation is not enabled. Please set the LocalizationConfiguration property "enableTranslationDeactivation" accordingly.');
|
|
153
|
+
}
|
|
154
|
+
const newValue = value === undefined ? !this.showKeys : value;
|
|
155
|
+
this._showKeys$.next(newValue);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Return the current value of debug show/hide translation keys.
|
|
159
|
+
*/
|
|
160
|
+
get showKeys() {
|
|
161
|
+
return this._showKeys$.value;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get an observable of translation key after global mapping
|
|
165
|
+
* @param requestedKey Original translation key
|
|
166
|
+
*/
|
|
167
|
+
getKey(requestedKey) {
|
|
168
|
+
return this.keyMapping$
|
|
169
|
+
? this.keyMapping$.pipe(map((keyMapping) => keyMapping?.[requestedKey] || requestedKey), distinctUntilChanged())
|
|
170
|
+
: of(requestedKey);
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Returns a stream of translated values of a key which updates whenever the language changes.
|
|
174
|
+
* @param key Key to translate
|
|
175
|
+
* @param interpolateParams Object to use in translation binding
|
|
176
|
+
* @returns A stream of the translated key
|
|
177
|
+
*/
|
|
178
|
+
translate(key, interpolateParams) {
|
|
179
|
+
return this.getKey(key).pipe(switchMap((translationKey) => this.getTranslationStream(translationKey, interpolateParams)), shareReplay({ refCount: true, bufferSize: 1 }));
|
|
180
|
+
}
|
|
181
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizationService, deps: [{ token: i1.TranslateService }, { token: i2.LoggerService }, { token: LOCALIZATION_CONFIGURATION_TOKEN }, { token: i3.Store, optional: true }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
182
|
+
/** @nocollapse */ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizationService }); }
|
|
183
|
+
}
|
|
184
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizationService, decorators: [{
|
|
185
|
+
type: Injectable
|
|
186
|
+
}], ctorParameters: () => [{ type: i1.TranslateService }, { type: i2.LoggerService }, { type: undefined, decorators: [{
|
|
187
|
+
type: Inject,
|
|
188
|
+
args: [LOCALIZATION_CONFIGURATION_TOKEN]
|
|
189
|
+
}] }, { type: i3.Store, decorators: [{
|
|
190
|
+
type: Optional
|
|
191
|
+
}] }] });
|
|
192
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvbG9jYWxpemF0aW9uLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxNQUFNLEVBQ04sS0FBSyxHQUNOLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDTCxnQkFBZ0IsR0FDakIsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQ0wsYUFBYSxHQUNkLE1BQU0sYUFBYSxDQUFDO0FBQ3JCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxFQUViLEVBQUUsR0FDSCxNQUFNLE1BQU0sQ0FBQztBQUNkLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsR0FBRyxFQUNILFdBQVcsRUFDWCxTQUFTLEdBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUl4QixPQUFPLEVBRUwsMEJBQTBCLEdBQzNCLE1BQU0saUJBQWlCLENBQUM7QUFDekIsT0FBTyxFQUNMLGdDQUFnQyxHQUNqQyxNQUFNLHNCQUFzQixDQUFDOzs7OztBQUU5Qjs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLG1CQUFtQjtJQWtCOUIsWUFDbUIsZ0JBQWtDLEVBQ2xDLE1BQXFCLEVBQ3FCLGFBQXdDLEVBQ3RFLEtBQXdDO1FBSHBELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUNxQixrQkFBYSxHQUFiLGFBQWEsQ0FBMkI7UUFDdEUsVUFBSyxHQUFMLEtBQUssQ0FBbUM7UUFyQnRELDBCQUFxQixHQUFXLEdBQUcsQ0FBQztRQUVyRDs7V0FFRztRQUNjLGVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQU96RDs7V0FFRztRQUNJLGNBQVMsR0FBRyxJQUFJLENBQUMs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TyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FDMUIsU0FBUyxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLGlCQUFpQixDQUFDLENBQUMsRUFDM0YsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FDL0MsQ0FBQztJQUNKLENBQUM7a0lBeE1VLG1CQUFtQiwrRUFxQnBCLGdDQUFnQztzSUFyQi9CLG1CQUFtQjs7NEZBQW5CLG1CQUFtQjtrQkFEL0IsVUFBVTs7MEJBc0JOLE1BQU07MkJBQUMsZ0NBQWdDOzswQkFDdkMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdCxcbiAgSW5qZWN0YWJsZSxcbiAgT3B0aW9uYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgc2VsZWN0LFxuICBTdG9yZSxcbn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuaW1wb3J0IHtcbiAgVHJhbnNsYXRlU2VydmljZSxcbn0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQge1xuICBMb2dnZXJTZXJ2aWNlLFxufSBmcm9tICdAbzNyL2xvZ2dlcic7XG5pbXBvcnQge1xuICBCZWhhdmlvclN1YmplY3QsXG4gIGNvbWJpbmVMYXRlc3QsXG4gIE9ic2VydmFibGUsXG4gIG9mLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7XG4gIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICBtYXAsXG4gIHNoYXJlUmVwbGF5LFxuICBzd2l0Y2hNYXAsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIExvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb24sXG59IGZyb20gJy4uL2NvcmUvbG9jYWxpemF0aW9uLmNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHtcbiAgTG9jYWxpemF0aW9uT3ZlcnJpZGVTdG9yZSxcbiAgc2VsZWN0TG9jYWxpemF0aW9uT3ZlcnJpZGUsXG59IGZyb20gJy4uL3N0b3Jlcy9pbmRleCc7XG5pbXBvcnQge1xuICBMT0NBTElaQVRJT05fQ09ORklHVVJBVElPTl9UT0tFTixcbn0gZnJvbSAnLi9sb2NhbGl6YXRpb24udG9rZW4nO1xuXG4vKipcbiAqIFNlcnZpY2Ugd2hpY2ggaXMgd3JhcHBpbmcgdGhlIGNvbmZpZ3VyYXRpb24gbG9naWMgb2YgVHJhbnNsYXRlU2VydmljZSBmcm9tIG5neC10cmFuc2xhdGVcbiAqIEFueSBhcHBsaWNhdGlvbiB3aWxsaW5nIHRvIHVzZSBsb2NhbGl6YXRpb24ganVzdCBuZWVkcyB0byBpbmplY3QgTG9jYWxpemF0aW9uU2VydmljZVxuICogaW4gdGhlIHJvb3QgY29tcG9uZW50IGFuZCBjYWxsIGl0cyBjb25maWd1cmUoKSBtZXRob2QuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBMb2NhbGl6YXRpb25TZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2NhbGVTcGxpdElkZW50aWZpZXI6IHN0cmluZyA9ICctJztcblxuICAvKipcbiAgICogSW50ZXJuYWwgc3ViamVjdCB0aGF0IHdlIHVzZSB0byB0cmFjayBjaGFuZ2VzIGJldHdlZW4ga2V5cyBvbmx5IGFuZCB0cmFuc2xhdGlvbiBtb2RlXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IF9zaG93S2V5cyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAvKipcbiAgICogTWFwIG9mIGxvY2FsaXphdGlvbiBrZXlzIHRvIHJlcGxhY2UgYSBrZXkgdG8gYW5vdGhlclxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBrZXlNYXBwaW5nJD86IE9ic2VydmFibGU8UmVjb3JkPHN0cmluZywgYW55Pj47XG5cbiAgLyoqXG4gICAqIF9zaG93S2V5cyQgZXhwb3NlZCBhcyBhbiBPYnNlcnZhYmxlXG4gICAqL1xuICBwdWJsaWMgc2hvd0tleXMkID0gdGhpcy5fc2hvd0tleXMkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyU2VydmljZSxcbiAgICBASW5qZWN0KExPQ0FMSVpBVElPTl9DT05GSUdVUkFUSU9OX1RPS0VOKSBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IExvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb24sXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSByZWFkb25seSBzdG9yZT86IFN0b3JlPExvY2FsaXphdGlvbk92ZXJyaWRlU3RvcmU+XG4gICkge1xuICAgIHRoaXMuY29uZmlndXJlKCk7XG4gICAgaWYgKHRoaXMuc3RvcmUpIHtcbiAgICAgIHRoaXMua2V5TWFwcGluZyQgPSB0aGlzLnN0b3JlLnBpcGUoXG4gICAgICAgIHNlbGVjdChzZWxlY3RMb2NhbGl6YXRpb25PdmVycmlkZSlcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgd2lsbCBoYW5kbGUgdGhlIGZhbGxiYWNrIGxhbmd1YWdlIGhpZXJhcmNoeSB0byBmaW5kIG91dCBmYWxsYmFjayBsYW5ndWFnZS5cbiAgICogc3VwcG9ydGVkTG9jYWxlcyBsYW5ndWFnZSBoYXMgaGlnaGVzdCBwcmlvcml0eSwgbmV4dCBwcmlvcml0eSBnb2VzIHRvIGZhbGxiYWNrTG9jYWxlc01hcCBhbmQgZGVmYXVsdCB3b3VsZCBiZVxuICAgKiBmYWxsYmFja0xhbmd1YWdlLlxuICAgKiBAcGFyYW0gbGFuZ3VhZ2UgU2VsZWN0ZWQgbGFuZ3VhZ2UuXG4gICAqIEByZXR1cm5zIHNlbGVjdGVkIGxhbmd1YWdlIGlmIHN1cHBvcnRlZCwgZmFsbGJhY2sgbGFuZ3VhZ2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja0ZhbGxiYWNrTG9jYWxlc01hcDxUIGV4dGVuZHMgc3RyaW5nIHwgdW5kZWZpbmVkPihsYW5ndWFnZTogVCkge1xuICAgIGlmIChsYW5ndWFnZSAmJiAhdGhpcy5jb25maWd1cmF0aW9uLnN1cHBvcnRlZExvY2FsZXMuaW5jbHVkZXMobGFuZ3VhZ2UpKSB7XG4gICAgICBjb25zdCBjbG9zZXN0U3VwcG9ydGVkTGFuZ3VhZ2VDb2RlID0gdGhpcy5nZXRGaXJzdENsb3Nlc3RTdXBwb3J0ZWRMYW5ndWFnZUNvZGUobGFuZ3VhZ2UpO1xuICAgICAgY29uc3QgZmFsbGJhY2tGb3JMYW5ndWFnZSA9IHRoaXMuZ2V0RmFsbGJhY2tNYXBMYW5nQ29kZShsYW5ndWFnZSk7XG4gICAgICBjb25zdCBmYWxsYmFja1N0cmF0ZWd5RGVidWcgPSAoZmFsbGJhY2tGb3JMYW5ndWFnZSAmJiAnIGFzc29jaWF0ZWQgZmFsbGJhY2sgbGFuZ3VhZ2UgJylcbiAgICAgICAgfHwgKGNsb3Nlc3RTdXBwb3J0ZWRMYW5ndWFnZUNvZGUgJiYgJyBjbG9zZXN0IHN1cHBvcnRlZCBsYW5ndWFnZSAnKVxuICAgICAgICB8fCAodGhpcy5jb25maWd1cmF0aW9uLmZhbGxiYWNrTGFuZ3VhZ2UgJiYgJyBjb25maWd1cmVkIGRlZmF1bHQgbGFuZ3VhZ2UgJyk7XG4gICAgICBjb25zdCBmYWxsYmFja0xhbmcgPSBmYWxsYmFja0Zvckxhbmd1YWdlIHx8IGNsb3Nlc3RTdXBwb3J0ZWRMYW5ndWFnZUNvZGUgfHwgdGhpcy5jb25maWd1cmF0aW9uLmZhbGxiYWNrTGFuZ3VhZ2UgfHwgbGFuZ3VhZ2U7XG4gICAgICBpZiAobGFuZ3VhZ2UgIT09IGZhbGxiYWNrTGFuZykge1xuICAgICAgICB0aGlzLmxvZ2dlci5kZWJ1ZyhgTm9uIHN1cHBvcnRlZCBsYW5ndWFnZXMgJHtsYW5ndWFnZX0gd2lsbCBmYWxsYmFjayB0byAke2ZhbGxiYWNrU3RyYXRlZ3lEZWJ1Z30gJHtmYWxsYmFja0xhbmd9YCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsbGJhY2tMYW5nO1xuICAgIH0gZWxzZSBpZiAoIWxhbmd1YWdlKSB7XG4gICAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnTGFuZ3VhZ2UgaXMgbm90IGRlZmluZWQnKTtcbiAgICB9XG4gICAgcmV0dXJuIGxhbmd1YWdlO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIGZhbGxiYWNrIGxhbmd1YWdlIGNhbiBiZSBwcm92aWRlZCBmcm9tIGZhbGxiYWNrTG9jYWxlc01hcC5cbiAgICogc3VwcG9ydGVkTG9jYWxlczogWydlbi1HQicsICdlbi1VUycsICdmci1GUiddLCBmYWxsYmFja0xvY2FsZXNNYXA6IHsnZW4tQ0EnOiAnZW4tVVMnLCAnZGUnOiAnZnItRlInfVxuICAgKiB0cmFuc2xhdGUgdG8gZW4tQ0EgLT4gZmFsbGJhY2sgdG8gZW4tVVMsIHRyYW5zbGF0ZSB0byBkZS1ERSAtPiBmYWxsYmFjayB0byBmci1GUlxuICAgKiB0cmFuc2xhdGUgdG8gZW4tTlogLT4gZmFsbGJhY2sgdG8gZW4tR0JcbiAgICogQHBhcmFtIGxhbmd1YWdlIFNlbGVjdGVkIGxhbmd1YWdlLlxuICAgKiBAcmV0dXJucyBGYWxsYmFjayBsYW5ndWFnZSBpZiBhdmFpbGFibGUsIHVuZGVmaW5lZCBvdGhlcndpc2UuXG4gICAqL1xuICBwcml2YXRlIGdldEZhbGxiYWNrTWFwTGFuZ0NvZGUobGFuZ3VhZ2U6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZmFsbGJhY2tMb2NhbGVzTWFwID0gdGhpcy5jb25maWd1cmF0aW9uLmZhbGxiYWNrTG9jYWxlc01hcDtcbiAgICBjb25zdCBbbG9jYWxlXSA9IGxhbmd1YWdlLnNwbGl0KHRoaXMubG9jYWxlU3BsaXRJZGVudGlmaWVyKTtcblxuICAgIHJldHVybiBmYWxsYmFja0xvY2FsZXNNYXAgJiYgKGZhbGxiYWNrTG9jYWxlc01hcFtsYW5ndWFnZV0gfHwgZmFsbGJhY2tMb2NhbGVzTWFwW2xvY2FsZV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIGNsb3Nlc3Qgc3VwcG9ydGVkIGxhbmd1YWdlIGF2YWlsYWJsZSBpbmNhc2Ugb2Ygc2VsZWN0ZWQgbGFuZ3VhZ2UgaXMgbm90XG4gICAqIHN1cHBvcnRlZCBsYW5ndWFnZS5cbiAgICogc3VwcG9ydGVkTG9jYWxlczogWydlbi1HQicsICdlbi1VUycsICdmci1GUiddXG4gICAqIHRyYW5zbGF0ZSB0byBlbi1DQSAtPiBmYWxsYmFjayB0byBlbi1HQlxuICAgKiBAcGFyYW0gbGFuZ3VhZ2UgU2VsZWN0ZWQgbGFuZ3VhZ2UuXG4gICAqIEByZXR1cm5zIENsb3Nlc3Qgc3VwcG9ydGVkIGxhbmd1YWdlIGlmIGF2YWlsYWJsZSwgdW5kZWZpbmVkIG90aGVyd2lzZS5cbiAgICovXG4gIHByaXZhdGUgZ2V0Rmlyc3RDbG9zZXN0U3VwcG9ydGVkTGFuZ3VhZ2VDb2RlKGxhbmd1YWdlOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IFtsb2NhbGVdID0gbGFuZ3VhZ2Uuc3BsaXQodGhpcy5sb2NhbGVTcGxpdElkZW50aWZpZXIpO1xuICAgIGNvbnN0IGZpcnN0Q2xvc2VzdFJlZ3ggPSBuZXcgUmVnRXhwKGBeJHtsb2NhbGV9JHt0aGlzLmxvY2FsZVNwbGl0SWRlbnRpZmllcn0/YCwgJ2knKTtcblxuICAgIHJldHVybiB0aGlzLmNvbmZpZ3VyYXRpb24uc3VwcG9ydGVkTG9jYWxlcy5maW5kKChzdXBwb3J0ZWRMYW5nKSA9PiBmaXJzdENsb3Nlc3RSZWd4LnRlc3Qoc3VwcG9ydGVkTGFuZykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBzdHJlYW0gb2YgdHJhbnNsYXRlZCB2YWx1ZXMgb2YgYSBrZXkgd2hpY2ggdXBkYXRlcyB3aGVuZXZlciB0aGUgbGFuZ3VhZ2UgY2hhbmdlcy5cbiAgICogQHBhcmFtIHRyYW5zbGF0aW9uS2V5IEtleSB0byB0cmFuc2xhdGVcbiAgICogQHBhcmFtIGludGVycG9sYXRlUGFyYW1zIE9iamVjdCB0byB1c2UgaW4gdHJhbnNsYXRpb24gYmluZGluZ1xuICAgKiBAcmV0dXJucyBBIHN0cmVhbSBvZiB0aGUgdHJhbnNsYXRlZCBrZXlcbiAgICovXG4gIHByaXZhdGUgZ2V0VHJhbnNsYXRpb25TdHJlYW0odHJhbnNsYXRpb25LZXk6IHN0cmluZywgaW50ZXJwb2xhdGVQYXJhbXM/OiBvYmplY3QpIHtcbiAgICBjb25zdCB0cmFuc2xhdGlvbiQgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2Uuc3RyZWFtKHRyYW5zbGF0aW9uS2V5LCBpbnRlcnBvbGF0ZVBhcmFtcykucGlwZShcbiAgICAgIG1hcCgodmFsdWU6IHN0cmluZykgPT4gdGhpcy5jb25maWd1cmF0aW9uLmRlYnVnTW9kZSA/IGAke3RyYW5zbGF0aW9uS2V5fSAtICR7dmFsdWV9YCA6IHZhbHVlKVxuICAgICk7XG5cbiAgICBpZiAoIXRoaXMuY29uZmlndXJhdGlvbi5lbmFibGVUcmFuc2xhdGlvbkRlYWN0aXZhdGlvbikge1xuICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uJDtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICB0cmFuc2xhdGlvbiQsXG4gICAgICB0aGlzLnNob3dLZXlzJFxuICAgIF0pLnBpcGUoXG4gICAgICBtYXAoKFt2YWx1ZSwgc2hvd0tleXNdKSA9PiBzaG93S2V5cyA/IHRyYW5zbGF0aW9uS2V5IDogdmFsdWUpXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmVzIFRyYW5zbGF0ZVNlcnZpY2UgYW5kIHJlZ2lzdGVycyBsb2NhbGVzLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgZnJvbSB0aGUgYXBwbGljYXRpb24gbGV2ZWwuXG4gICAqL1xuICBwdWJsaWMgY29uZmlndXJlKCkge1xuICAgIGNvbnN0IGxhbmd1YWdlID0gdGhpcy5jaGVja0ZhbGxiYWNrTG9jYWxlc01hcCh0aGlzLmNvbmZpZ3VyYXRpb24ubGFuZ3VhZ2UgfHwgdGhpcy5jb25maWd1cmF0aW9uLmZhbGxiYWNrTGFuZ3VhZ2UpO1xuICAgIHRoaXMudHJhbnNsYXRlU2VydmljZS5hZGRMYW5ncyh0aGlzLmNvbmZpZ3VyYXRpb24uc3VwcG9ydGVkTG9jYWxlcyk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlLnNldERlZmF1bHRMYW5nKGxhbmd1YWdlKTtcbiAgICB0aGlzLnVzZUxhbmd1YWdlKGxhbmd1YWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJcyB0aGUgdHJhbnNsYXRpb24gZGVhY3RpdmF0aW9uIGVuYWJsZWRcbiAgICovXG4gIHB1YmxpYyBpc1RyYW5zbGF0aW9uRGVhY3RpdmF0aW9uRW5hYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWd1cmF0aW9uLmVuYWJsZVRyYW5zbGF0aW9uRGVhY3RpdmF0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXBwZXIgdG8gY2FsbCB0aGUgbmd4LXRyYW5zbGF0ZSBzZXJ2aWNlIFRyYW5zbGF0ZVNlcnZpY2UgbWV0aG9kIGdldExhbmdzKCkuXG4gICAqL1xuICBwdWJsaWMgZ2V0TGFuZ3VhZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuZ2V0TGFuZ3MoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcGVyIHRvIGNhbGwgdGhlIG5neC10cmFuc2xhdGUgc2VydmljZSBUcmFuc2xhdGVTZXJ2aWNlIG1ldGhvZCB1c2UobGFuZ3VhZ2UpLlxuICAgKiBAcGFyYW0gbGFuZ3VhZ2VcbiAgICovXG4gIHB1YmxpYyB1c2VMYW5ndWFnZShsYW5ndWFnZTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcbiAgICBsYW5ndWFnZSA9IHRoaXMuY2hlY2tGYWxsYmFja0xvY2FsZXNNYXAobGFuZ3VhZ2UpO1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UudXNlKGxhbmd1YWdlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXcmFwcGVyIHRvIGdldCB0aGUgbmd4LXRyYW5zbGF0ZSBzZXJ2aWNlIFRyYW5zbGF0ZVNlcnZpY2UgY3VycmVudExhbmcuXG4gICAqL1xuICBwdWJsaWMgZ2V0Q3VycmVudExhbmd1YWdlKCkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuY3VycmVudExhbmc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBpbnN0YW5jZSBvZiB0aGUgbmd4LXRyYW5zbGF0ZSBUcmFuc2xhdGVTZXJ2aWNlIHVzZWQgYnkgTG9jYWxpemF0aW9uU2VydmljZS5cbiAgICovXG4gIHB1YmxpYyBnZXRUcmFuc2xhdGVTZXJ2aWNlKCkge1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0ZVNlcnZpY2U7XG4gIH1cblxuICAvKipcbiAgICogVG9nZ2xlIHRoZSBTaG93S2V5cyBtb2RlIGJldHdlZW4gYWN0aXZlIGFuZCBpbmFjdGl2ZS5cbiAgICogQHBhcmFtIHZhbHVlIGlmIHNwZWNpZmllZCwgc2V0IHRoZSBTaG93S2V5cyBtb2RlIHRvIHZhbHVlLiBJZiBub3Qgc3BlY2lmaWVkLCB0b2dnbGUgdGhlIFNob3dLZXlzIG1vZGUuXG4gICAqL1xuICBwdWJsaWMgdG9nZ2xlU2hvd0tleXModmFsdWU/OiBib29sZWFuKSB7XG4gICAgaWYgKCF0aGlzLmNvbmZpZ3VyYXRpb24uZW5hYmxlVHJhbnNsYXRpb25EZWFjdGl2YXRpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVHJhbnNsYXRpb24gZGVhY3RpdmF0aW9uIGlzIG5vdCBlbmFibGVkLiBQbGVhc2Ugc2V0IHRoZSBMb2NhbGl6YXRpb25Db25maWd1cmF0aW9uIHByb3BlcnR5IFwiZW5hYmxlVHJhbnNsYXRpb25EZWFjdGl2YXRpb25cIiBhY2NvcmRpbmdseS4nKTtcbiAgICB9XG4gICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gIXRoaXMuc2hvd0tleXMgOiB2YWx1ZTtcbiAgICB0aGlzLl9zaG93S2V5cyQubmV4dChuZXdWYWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBjdXJyZW50IHZhbHVlIG9mIGRlYnVnIHNob3cvaGlkZSB0cmFuc2xhdGlvbiBrZXlzLlxuICAgKi9cbiAgcHVibGljIGdldCBzaG93S2V5cygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd0tleXMkLnZhbHVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbiBvYnNlcnZhYmxlIG9mIHRyYW5zbGF0aW9uIGtleSBhZnRlciBnbG9iYWwgbWFwcGluZ1xuICAgKiBAcGFyYW0gcmVxdWVzdGVkS2V5IE9yaWdpbmFsIHRyYW5zbGF0aW9uIGtleVxuICAgKi9cbiAgcHVibGljIGdldEtleShyZXF1ZXN0ZWRLZXk6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmtleU1hcHBpbmckXG4gICAgICA/IHRoaXMua2V5TWFwcGluZyQucGlwZShcbiAgICAgICAgbWFwKChrZXlNYXBwaW5nKSA9PiBrZXlNYXBwaW5nPy5bcmVxdWVzdGVkS2V5XSB8fCByZXF1ZXN0ZWRLZXkpLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICApXG4gICAgICA6IG9mKHJlcXVlc3RlZEtleSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIHN0cmVhbSBvZiB0cmFuc2xhdGVkIHZhbHVlcyBvZiBhIGtleSB3aGljaCB1cGRhdGVzIHdoZW5ldmVyIHRoZSBsYW5ndWFnZSBjaGFuZ2VzLlxuICAgKiBAcGFyYW0ga2V5IEtleSB0byB0cmFuc2xhdGVcbiAgICogQHBhcmFtIGludGVycG9sYXRlUGFyYW1zIE9iamVjdCB0byB1c2UgaW4gdHJhbnNsYXRpb24gYmluZGluZ1xuICAgKiBAcmV0dXJucyBBIHN0cmVhbSBvZiB0aGUgdHJhbnNsYXRlZCBrZXlcbiAgICovXG4gIHB1YmxpYyB0cmFuc2xhdGUoa2V5OiBzdHJpbmcsIGludGVycG9sYXRlUGFyYW1zPzogb2JqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0S2V5KGtleSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgodHJhbnNsYXRpb25LZXkpID0+IHRoaXMuZ2V0VHJhbnNsYXRpb25TdHJlYW0odHJhbnNsYXRpb25LZXksIGludGVycG9sYXRlUGFyYW1zKSksXG4gICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { InjectionToken, } from '@angular/core';
|
|
2
|
+
/** Localization Configuration Token */
|
|
3
|
+
export const LOCALIZATION_CONFIGURATION_TOKEN = new InjectionToken('Localization Configuration injection token');
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xzL2xvY2FsaXphdGlvbi50b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsY0FBYyxHQUNmLE1BQU0sZUFBZSxDQUFDO0FBS3ZCLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLGNBQWMsQ0FBNEIsNENBQTRDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEluamVjdGlvblRva2VuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIExvY2FsaXphdGlvbkNvbmZpZ3VyYXRpb24sXG59IGZyb20gJy4uL2NvcmUnO1xuXG4vKiogTG9jYWxpemF0aW9uIENvbmZpZ3VyYXRpb24gVG9rZW4gKi9cbmV4cG9ydCBjb25zdCBMT0NBTElaQVRJT05fQ09ORklHVVJBVElPTl9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxMb2NhbGl6YXRpb25Db25maWd1cmF0aW9uPignTG9jYWxpemF0aW9uIENvbmZpZ3VyYXRpb24gaW5qZWN0aW9uIHRva2VuJyk7XG4iXX0=
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { CurrencyPipe, } from '@angular/common';
|
|
2
|
+
import { ChangeDetectorRef, Pipe, } from '@angular/core';
|
|
3
|
+
import { LocalizationService, } from './localization.service';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "./localization.service";
|
|
6
|
+
/**
|
|
7
|
+
* Native angular CurrencyPipe taking the current lang into consideration
|
|
8
|
+
*/
|
|
9
|
+
export class LocalizedCurrencyPipe extends CurrencyPipe {
|
|
10
|
+
constructor(localizationService, changeDetectorRef) {
|
|
11
|
+
super(localizationService.getCurrentLanguage());
|
|
12
|
+
this.localizationService = localizationService;
|
|
13
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
14
|
+
this.onLangChange = this.localizationService.getTranslateService().onLangChange.subscribe(() => this.changeDetectorRef.markForCheck());
|
|
15
|
+
}
|
|
16
|
+
transform(value, currencyCode, display, digitsInfo, locale) {
|
|
17
|
+
return super.transform(value, currencyCode, display, digitsInfo, locale || this.localizationService.getCurrentLanguage());
|
|
18
|
+
}
|
|
19
|
+
ngOnDestroy() {
|
|
20
|
+
this.onLangChange.unsubscribe();
|
|
21
|
+
}
|
|
22
|
+
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizedCurrencyPipe, deps: [{ token: i1.LocalizationService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
23
|
+
/** @nocollapse */ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: LocalizedCurrencyPipe, name: "currency", pure: false }); }
|
|
24
|
+
}
|
|
25
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: LocalizedCurrencyPipe, decorators: [{
|
|
26
|
+
type: Pipe,
|
|
27
|
+
args: [{
|
|
28
|
+
name: 'currency',
|
|
29
|
+
pure: false
|
|
30
|
+
}]
|
|
31
|
+
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.ChangeDetectorRef }] });
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemVkLWN1cnJlbmN5LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvbG9jYWxpemVkLWN1cnJlbmN5LnBpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFlBQVksR0FDYixNQUFNLGlCQUFpQixDQUFDO0FBQ3pCLE9BQU8sRUFDTCxpQkFBaUIsRUFFakIsSUFBSSxHQUVMLE1BQU0sZUFBZSxDQUFDO0FBSXZCLE9BQU8sRUFDTCxtQkFBbUIsR0FDcEIsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBRWhDOztHQUVHO0FBS0gsTUFBTSxPQUFPLHFCQUFzQixTQUFRLFlBQVk7SUFHckQsWUFBNkIsbUJBQXdDLEVBQW1CLGlCQUFvQztRQUMxSCxLQUFLLENBQUMsbUJBQW1CLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFDO1FBRHJCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFBbUIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUUxSCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQzdGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FDdEMsQ0FBQztJQUNKLENBQUM7SUFVTSxTQUFTLENBQ2QsS0FBeUMsRUFBRSxZQUFxQixFQUFFLE9BQTBCLEVBQUUsVUFBbUIsRUFBRSxNQUFlO1FBQ2xJLE9BQU8sS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDNUgsQ0FBQztJQUVNLFdBQVc7UUFDaEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNsQyxDQUFDO2tJQXpCVSxxQkFBcUI7Z0lBQXJCLHFCQUFxQjs7NEZBQXJCLHFCQUFxQjtrQkFKakMsSUFBSTttQkFBQztvQkFDSixJQUFJLEVBQUUsVUFBVTtvQkFDaEIsSUFBSSxFQUFFLEtBQUs7aUJBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDdXJyZW5jeVBpcGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgT25EZXN0cm95LFxuICBQaXBlLFxuICBQaXBlVHJhbnNmb3JtLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIFN1YnNjcmlwdGlvbixcbn0gZnJvbSAncnhqcyc7XG5pbXBvcnQge1xuICBMb2NhbGl6YXRpb25TZXJ2aWNlLFxufSBmcm9tICcuL2xvY2FsaXphdGlvbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBOYXRpdmUgYW5ndWxhciBDdXJyZW5jeVBpcGUgdGFraW5nIHRoZSBjdXJyZW50IGxhbmcgaW50byBjb25zaWRlcmF0aW9uXG4gKi9cbkBQaXBlKHtcbiAgbmFtZTogJ2N1cnJlbmN5JyxcbiAgcHVyZTogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgTG9jYWxpemVkQ3VycmVuY3lQaXBlIGV4dGVuZHMgQ3VycmVuY3lQaXBlIGltcGxlbWVudHMgT25EZXN0cm95LCBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBvbkxhbmdDaGFuZ2U6IFN1YnNjcmlwdGlvbjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGxvY2FsaXphdGlvblNlcnZpY2U6IExvY2FsaXphdGlvblNlcnZpY2UsIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIobG9jYWxpemF0aW9uU2VydmljZS5nZXRDdXJyZW50TGFuZ3VhZ2UoKSk7XG4gICAgdGhpcy5vbkxhbmdDaGFuZ2UgPSB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuZ2V0VHJhbnNsYXRlU2VydmljZSgpLm9uTGFuZ0NoYW5nZS5zdWJzY3JpYmUoKCkgPT5cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKClcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0ZG9jXG4gICAqL1xuICBwdWJsaWMgdHJhbnNmb3JtKHZhbHVlOiBudW1iZXIgfCBzdHJpbmcsIGN1cnJlbmN5Q29kZT86IHN0cmluZywgZGlzcGxheT86IHN0cmluZyB8IGJvb2xlYW4sIGRpZ2l0c0luZm8/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IHN0cmluZyB8IG51bGw7XG4gIHB1YmxpYyB0cmFuc2Zvcm0odmFsdWU6IG51bGwgfCB1bmRlZmluZWQsIGN1cnJlbmN5Q29kZT86IHN0cmluZywgZGlzcGxheT86IHN0cmluZyB8IGJvb2xlYW4sIGRpZ2l0c0luZm8/OiBzdHJpbmcsIGxvY2FsZT86IHN0cmluZyk6IG51bGw7XG4gIHB1YmxpYyB0cmFuc2Zvcm0oXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC91bmlmaWVkLXNpZ25hdHVyZXMgLS0gRXhwb3NlIHNhbWUgc2lnbmF0dXJlcyBhcyBhbmd1bGFyIEN1cnJlbmN5UGlwZVxuICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBjdXJyZW5jeUNvZGU/OiBzdHJpbmcsIGRpc3BsYXk/OiBzdHJpbmcgfCBib29sZWFuLCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsO1xuICBwdWJsaWMgdHJhbnNmb3JtKFxuICAgIHZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBjdXJyZW5jeUNvZGU/OiBzdHJpbmcsIGRpc3BsYXk/OiBzdHJpbmcgfCBib29sZWFuLCBkaWdpdHNJbmZvPzogc3RyaW5nLCBsb2NhbGU/OiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gc3VwZXIudHJhbnNmb3JtKHZhbHVlLCBjdXJyZW5jeUNvZGUsIGRpc3BsYXksIGRpZ2l0c0luZm8sIGxvY2FsZSB8fCB0aGlzLmxvY2FsaXphdGlvblNlcnZpY2UuZ2V0Q3VycmVudExhbmd1YWdlKCkpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25MYW5nQ2hhbmdlLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
|