@esfaenza/localizations 16.2.28 → 17.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.
Files changed (37) hide show
  1. package/esm2022/esfaenza-localizations.mjs +4 -4
  2. package/esm2022/lib/core/localization.base.mjs +80 -80
  3. package/esm2022/lib/core/localization.persistor.mjs +103 -103
  4. package/esm2022/lib/locale-persistor/LocalStorageCachePersistor.mjs +24 -24
  5. package/esm2022/lib/locale-persistor/LocalePersistor.mjs +7 -7
  6. package/esm2022/lib/localizations.module.mjs +37 -37
  7. package/esm2022/lib/localizations.service.mjs +145 -145
  8. package/esm2022/lib/models/BaseLocalizationTokens.mjs +13 -13
  9. package/esm2022/lib/models/ItemLocalization.mjs +17 -17
  10. package/esm2022/lib/models/LocaleDefinitions.mjs +25 -25
  11. package/esm2022/lib/models/LocaleObject.mjs +19 -19
  12. package/esm2022/lib/models/LocalizationMissingPolicy.mjs +10 -10
  13. package/esm2022/lib/models/LocalizationModuleConfig.mjs +5 -5
  14. package/esm2022/lib/models/SpecializedLocalization.mjs +15 -15
  15. package/esm2022/lib/pipes/localize.pipe.mjs +38 -38
  16. package/esm2022/lib/tokens.mjs +7 -7
  17. package/esm2022/public-api.mjs +11 -11
  18. package/fesm2022/esfaenza-localizations.mjs +494 -494
  19. package/fesm2022/esfaenza-localizations.mjs.map +1 -1
  20. package/index.d.ts +5 -5
  21. package/lib/core/localization.base.d.ts +32 -32
  22. package/lib/core/localization.persistor.d.ts +57 -57
  23. package/lib/locale-persistor/LocalStorageCachePersistor.d.ts +11 -11
  24. package/lib/locale-persistor/LocalePersistor.d.ts +18 -18
  25. package/lib/localizations.module.d.ts +10 -10
  26. package/lib/localizations.service.d.ts +74 -74
  27. package/lib/models/BaseLocalizationTokens.d.ts +12 -12
  28. package/lib/models/ItemLocalization.d.ts +17 -17
  29. package/lib/models/LocaleDefinitions.d.ts +20 -20
  30. package/lib/models/LocaleObject.d.ts +18 -18
  31. package/lib/models/LocalizationMissingPolicy.d.ts +9 -9
  32. package/lib/models/LocalizationModuleConfig.d.ts +19 -19
  33. package/lib/models/SpecializedLocalization.d.ts +14 -14
  34. package/lib/pipes/localize.pipe.d.ts +28 -28
  35. package/lib/tokens.d.ts +8 -8
  36. package/package.json +3 -3
  37. package/public-api.d.ts +8 -8
@@ -1,38 +1,38 @@
1
- // Angular
2
- import { NgModule } from '@angular/core';
3
- // Pipe
4
- import { LocalizePipe } from './pipes/localize.pipe';
5
- // Servizi
6
- import { LocalizationService } from './localizations.service';
7
- import { BaseLocalization } from './core/localization.base';
8
- import { LocalePersistor } from './locale-persistor/LocalePersistor';
9
- import { LocalStorageLocalePersistor } from './locale-persistor/LocalStorageCachePersistor';
10
- import { LocalizationMissingPolicy } from './models/LocalizationMissingPolicy';
11
- import { LOC_DEBUG_MODE, LOC_LOCALE, LOC_MISSING_POLICY } from './tokens';
12
- import * as i0 from "@angular/core";
13
- export class LocalizationModule {
14
- static forRoot(config) {
15
- return {
16
- ngModule: LocalizationModule,
17
- providers: [
18
- LocalizationService,
19
- BaseLocalization,
20
- { provide: LOC_LOCALE, useValue: config?.defaultLocale || 'it-IT' },
21
- { provide: LOC_MISSING_POLICY, useValue: config?.localizationMissingPolicy || LocalizationMissingPolicy.PrintEmpty },
22
- { provide: LocalePersistor, useClass: config?.localePersistor || LocalStorageLocalePersistor },
23
- { provide: LOC_DEBUG_MODE, useValue: config?.debugMode || false },
24
- ]
25
- };
26
- }
27
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
28
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: LocalizationModule, declarations: [LocalizePipe], exports: [LocalizePipe] }); }
29
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationModule }); }
30
- }
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationModule, decorators: [{
32
- type: NgModule,
33
- args: [{
34
- declarations: [LocalizePipe],
35
- exports: [LocalizePipe]
36
- }]
37
- }] });
1
+ // Angular
2
+ import { NgModule } from '@angular/core';
3
+ // Pipe
4
+ import { LocalizePipe } from './pipes/localize.pipe';
5
+ // Servizi
6
+ import { LocalizationService } from './localizations.service';
7
+ import { BaseLocalization } from './core/localization.base';
8
+ import { LocalePersistor } from './locale-persistor/LocalePersistor';
9
+ import { LocalStorageLocalePersistor } from './locale-persistor/LocalStorageCachePersistor';
10
+ import { LocalizationMissingPolicy } from './models/LocalizationMissingPolicy';
11
+ import { LOC_DEBUG_MODE, LOC_LOCALE, LOC_MISSING_POLICY } from './tokens';
12
+ import * as i0 from "@angular/core";
13
+ export class LocalizationModule {
14
+ static forRoot(config) {
15
+ return {
16
+ ngModule: LocalizationModule,
17
+ providers: [
18
+ LocalizationService,
19
+ BaseLocalization,
20
+ { provide: LOC_LOCALE, useValue: config?.defaultLocale || 'it-IT' },
21
+ { provide: LOC_MISSING_POLICY, useValue: config?.localizationMissingPolicy || LocalizationMissingPolicy.PrintEmpty },
22
+ { provide: LocalePersistor, useClass: config?.localePersistor || LocalStorageLocalePersistor },
23
+ { provide: LOC_DEBUG_MODE, useValue: config?.debugMode || false },
24
+ ]
25
+ };
26
+ }
27
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalizationModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
28
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: LocalizationModule, declarations: [LocalizePipe], exports: [LocalizePipe] }); }
29
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalizationModule }); }
30
+ }
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalizationModule, decorators: [{
32
+ type: NgModule,
33
+ args: [{
34
+ declarations: [LocalizePipe],
35
+ exports: [LocalizePipe]
36
+ }]
37
+ }] });
38
38
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvbG9jYWxpemF0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxRQUFRLEVBQXVCLE1BQU0sZUFBZSxDQUFDO0FBRTlELE9BQU87QUFDUCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFFckQsVUFBVTtBQUNWLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQzlELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUk1RixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7QUFNMUUsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWlDO1FBQzlDLE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRTtnQkFDVCxtQkFBbUI7Z0JBQ25CLGdCQUFnQjtnQkFDaEIsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsYUFBYSxJQUFJLE9BQU8sRUFBRTtnQkFDbkUsRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSx5QkFBeUIsSUFBSSx5QkFBeUIsQ0FBQyxVQUFVLEVBQUM7Z0JBQ25ILEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLGVBQWUsSUFBSSwyQkFBMkIsRUFBRTtnQkFDOUYsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxJQUFJLEtBQUssRUFBRTthQUNsRTtTQUNGLENBQUM7SUFDSixDQUFDOytHQWJVLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQUhkLFlBQVksYUFDakIsWUFBWTtnSEFFWCxrQkFBa0I7OzRGQUFsQixrQkFBa0I7a0JBSjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsWUFBWSxDQUFDO29CQUM1QixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQW5ndWxhclxyXG5pbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy8gUGlwZVxyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5cclxuLy8gU2Vydml6aVxyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbGl6YXRpb25zLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBCYXNlTG9jYWxpemF0aW9uIH0gZnJvbSAnLi9jb3JlL2xvY2FsaXphdGlvbi5iYXNlJztcclxuaW1wb3J0IHsgTG9jYWxlUGVyc2lzdG9yIH0gZnJvbSAnLi9sb2NhbGUtcGVyc2lzdG9yL0xvY2FsZVBlcnNpc3Rvcic7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZUxvY2FsZVBlcnNpc3RvciB9IGZyb20gJy4vbG9jYWxlLXBlcnNpc3Rvci9Mb2NhbFN0b3JhZ2VDYWNoZVBlcnNpc3Rvcic7XHJcblxyXG4vLyBNb2RlbGxpXHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzL0xvY2FsaXphdGlvbk1vZHVsZUNvbmZpZyc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3kgfSBmcm9tICcuL21vZGVscy9Mb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5JztcclxuaW1wb3J0IHsgTE9DX0RFQlVHX01PREUsIExPQ19MT0NBTEUsIExPQ19NSVNTSU5HX1BPTElDWSB9IGZyb20gJy4vdG9rZW5zJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbTG9jYWxpemVQaXBlXSxcclxuICBleHBvcnRzOiBbTG9jYWxpemVQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBMb2NhbGl6YXRpb25Nb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPExvY2FsaXphdGlvbk1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IExvY2FsaXphdGlvbk1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgTG9jYWxpemF0aW9uU2VydmljZSxcclxuICAgICAgICBCYXNlTG9jYWxpemF0aW9uLFxyXG4gICAgICAgIHsgcHJvdmlkZTogTE9DX0xPQ0FMRSwgdXNlVmFsdWU6IGNvbmZpZz8uZGVmYXVsdExvY2FsZSB8fCAnaXQtSVQnIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBMT0NfTUlTU0lOR19QT0xJQ1ksIHVzZVZhbHVlOiBjb25maWc/LmxvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3kgfHwgTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeS5QcmludEVtcHR5fSxcclxuICAgICAgICB7IHByb3ZpZGU6IExvY2FsZVBlcnNpc3RvciwgdXNlQ2xhc3M6IGNvbmZpZz8ubG9jYWxlUGVyc2lzdG9yIHx8IExvY2FsU3RvcmFnZUxvY2FsZVBlcnNpc3RvciB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogTE9DX0RFQlVHX01PREUsIHVzZVZhbHVlOiBjb25maWc/LmRlYnVnTW9kZSB8fCBmYWxzZSB9LFxyXG4gICAgICBdXHJcbiAgICB9O1xyXG4gIH1cclxufSJdfQ==
@@ -1,145 +1,145 @@
1
- import { Injectable, Injector } from '@angular/core';
2
- import { BaseLocalization } from './core/localization.base';
3
- import { LocalizationPersistor } from './core/localization.persistor';
4
- import { LocalePersistor } from './locale-persistor/LocalePersistor';
5
- import { LOC_MISSING_POLICY } from './tokens';
6
- import { LocalizationMissingPolicy } from './models/LocalizationMissingPolicy';
7
- import { LocaleDefinitions } from './models/LocaleDefinitions';
8
- import * as i0 from "@angular/core";
9
- /**
10
- * Classe di localizzazione estendibile che permette di specificare le proprie localizzazioni e comunque rendere disponibili le localizzazioni globali
11
- */
12
- export class LocalizationService {
13
- /**
14
- * Costruttore
15
- *
16
- * @param {string} Locale Locale da utilizzare nel momento che questo servizio richiede le traduzioni
17
- * @param {baseLocalization} baseLocalization Classe base di localizzazione già fornita a livello di root dalla libreria stessa.
18
- * È sufficiente iniettarla nell'eventuale costruttore che estende questa classe e passarla as-is
19
- */
20
- constructor(injector) {
21
- this.injector = injector;
22
- /**
23
- * Cache di tutte le localizzazioni disonibili all'interno di questa classe
24
- */
25
- this.TranslationCache = {};
26
- this.LocalePersistor = this.injector.get(LocalePersistor);
27
- this.baseLocalization = this.injector.get(BaseLocalization);
28
- this.onMissing = this.injector.get(LOC_MISSING_POLICY);
29
- this.Persistor = new LocalizationPersistor(this.TranslationCache);
30
- this.baseLocalization.Locale.subscribe(lr => {
31
- this.Locale = lr;
32
- this.SmallLocale = LocaleDefinitions.getByAlias(lr).smallVersion;
33
- });
34
- }
35
- /**
36
- * Genera un nuovo servizio di localizzazione data una classe in modo che le localizzazioni non siano più solo da provide-are a livello di componente, ma possano
37
- * anche essere create al volo dal componente/servizio/qualsiasicosa che le deve utilizzare
38
- *
39
- * @param {Type<LocalizationService>} lcst Classe da usare per crare il nuovo servizio di localizzazione
40
- */
41
- generateFromType(lcst) {
42
- const injector = Injector.create({
43
- providers: [
44
- { provide: LOC_MISSING_POLICY, useValue: this.onMissing },
45
- { provide: BaseLocalization, useValue: this.baseLocalization },
46
- { provide: LocalePersistor, useValue: this.LocalePersistor },
47
- { provide: LocalizationService, useClass: lcst }
48
- ]
49
- });
50
- return injector.get(LocalizationService);
51
- }
52
- /**
53
- * Imposta la localizzazione di un token all'interno della **TranslationCache**
54
- *
55
- * @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
56
- * Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
57
- * è presente l'unica traduzione in italiano, per definire più traduzioni sul lato destro della freccia bisogna concatenarle con la virgola, ad esempio "en->it,jp,ecc"
58
- * @param {string} token Nome del token
59
- * @param {string} left Valore del token per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
60
- * @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
61
- */
62
- setToken(direction, token, left, right) {
63
- this.Persistor.setToken(direction, token, left, right);
64
- }
65
- /**
66
- * Imposta la localizzazione di una frase all'interno della **TranslationCache**
67
- *
68
- * @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
69
- * Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
70
- * è presente l'unica traduzione in italiano, per definire più traduzioni sul lato destro della freccia bisogna concatenarle con la virgola, ad esempio "en->it,jp,ecc"
71
- * @param {string} left Valore della frase per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
72
- * @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
73
- */
74
- set(direction, left, right) {
75
- // Controlla di non reinserire la stessa localizzazione presente nel BaseLocalization
76
- // i controlli per il non reinserimento della stessa localizzazione all'interno della stessa istanza è fatto lato Persistor
77
- if (this.baseLocalization.Persistor.get(left, false)) {
78
- console.warn(`La localizzazione per ${left} è già presente fra le localizzazioni base, ignoro l'operazione`);
79
- return;
80
- }
81
- this.Persistor.set(direction, left, right);
82
- }
83
- /**
84
- * Localizza un token
85
- *
86
- * @param {string} text Il token da localizzare
87
- *
88
- * @returns {string} Token localizzato
89
- */
90
- token(text) {
91
- return this.loc(text, true);
92
- }
93
- /**
94
- * Localizza una frase
95
- *
96
- * @param {string} text Frase da localizzare
97
- * @param {boolean} allowtokens Indica se la frase **text** potrebbe essere un token o no
98
- *
99
- * @returns {string} Frase localizzata
100
- */
101
- loc(text, allowtokens) {
102
- if (!this.Locale)
103
- throw "Il sistema di localizzazione non ha ancora caricato il Locale, assicurarsi di caricare l'APP solo al retrieve del locale'";
104
- if (!text || text == "undefined")
105
- return "";
106
- // Prendo la localizzazione o dalla cache attuale o dalla cache del servizio base
107
- var item = this.Persistor.get(text, allowtokens) || this.baseLocalization.Persistor.get(text, allowtokens);
108
- if (!item) {
109
- let message = `Impossibile trovare la localizzazione per '${text}'`;
110
- switch (this.onMissing) {
111
- case LocalizationMissingPolicy.PrintEmpty:
112
- console.error(message);
113
- return "";
114
- case LocalizationMissingPolicy.PrintSource:
115
- console.warn(message);
116
- return text;
117
- case LocalizationMissingPolicy.ThrowException:
118
- throw message;
119
- }
120
- }
121
- var loc = this.Persistor.translationByCulture(item, this.Locale);
122
- if (!loc) {
123
- console.error("Impossibile trovare la localizzazione per '" + text + "', culture " + this.Locale);
124
- return "";
125
- }
126
- return loc.translation;
127
- }
128
- async changeLocale(newLocale) {
129
- let locale = await this.LocalePersistor.recover().toPromise();
130
- if (newLocale == locale) {
131
- console.info("Il locale richiesto è lo stesso del locale attuale. Ignoro l'operazione");
132
- return;
133
- }
134
- else {
135
- await this.LocalePersistor.persist(newLocale).toPromise();
136
- location.reload();
137
- }
138
- }
139
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
140
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationService }); }
141
- }
142
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: LocalizationService, decorators: [{
143
- type: Injectable
144
- }], ctorParameters: function () { return [{ type: i0.Injector }]; } });
145
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL2xvY2FsaXphdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUUvRDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFlNUI7Ozs7OztPQU1HO0lBQ0gsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXBCdEM7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBdUMsRUFBRSxDQUFDO1FBa0I5RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixD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QUksQ0FBQztnQkFDaEIsS0FBSyx5QkFBeUIsQ0FBQyxjQUFjO29CQUN6QyxNQUFNLE9BQU8sQ0FBQzthQUNyQjtTQUNKO1FBRUQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDTixPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxHQUFHLElBQUksR0FBRyxhQUFhLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ2xHLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUM7SUFDM0IsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFZLENBQUMsU0FBaUI7UUFDdkMsSUFBSSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzlELElBQUksU0FBUyxJQUFJLE1BQU0sRUFBRTtZQUNyQixPQUFPLENBQUMsSUFBSSxDQUFDLHlFQUF5RSxDQUFDLENBQUM7WUFDeEYsT0FBTztTQUNWO2FBQ0k7WUFDRCxNQUFNLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzFELFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUNyQjtJQUNMLENBQUM7K0dBbkpRLG1CQUFtQjttSEFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFzZUxvY2FsaXphdGlvbiB9IGZyb20gJy4vY29yZS9sb2NhbGl6YXRpb24uYmFzZSc7XHJcbmltcG9ydCB7IEl0ZW1Mb2NhbGl6YXRpb24gfSBmcm9tICcuL21vZGVscy9JdGVtTG9jYWxpemF0aW9uJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uUGVyc2lzdG9yIH0gZnJvbSAnLi9jb3JlL2xvY2FsaXphdGlvbi5wZXJzaXN0b3InO1xyXG5pbXBvcnQgeyBMb2NhbGVQZXJzaXN0b3IgfSBmcm9tICcuL2xvY2FsZS1wZXJzaXN0b3IvTG9jYWxlUGVyc2lzdG9yJztcclxuaW1wb3J0IHsgTE9DX01JU1NJTkdfUE9MSUNZIH0gZnJvbSAnLi90b2tlbnMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5IH0gZnJvbSAnLi9tb2RlbHMvTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeSc7XHJcbmltcG9ydCB7IExvY2FsZURlZmluaXRpb25zIH0gZnJvbSAnLi9tb2RlbHMvTG9jYWxlRGVmaW5pdGlvbnMnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBkaSBsb2NhbGl6emF6aW9uZSBlc3RlbmRpYmlsZSBjaGUgcGVybWV0dGUgZGkgc3BlY2lmaWNhcmUgbGUgcHJvcHJpZSBsb2NhbGl6emF6aW9uaSBlIGNvbXVucXVlIHJlbmRlcmUgZGlzcG9uaWJpbGkgbGUgbG9jYWxpenphemlvbmkgZ2xvYmFsaVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWNoZSBkaSB0dXR0ZSBsZSBsb2NhbGl6emF6aW9uaSBkaXNvbmliaWxpIGFsbCdpbnRlcm5vIGRpIHF1ZXN0YSBjbGFzc2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBUcmFuc2xhdGlvbkNhY2hlOiB7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9ID0ge307XHJcblxyXG4gICAgcHVibGljIExvY2FsZTogc3RyaW5nO1xyXG4gICAgcHVibGljIFNtYWxsTG9jYWxlOiBzdHJpbmc7XHJcblxyXG4gICAgcHJpdmF0ZSBiYXNlTG9jYWxpemF0aW9uOiBCYXNlTG9jYWxpemF0aW9uO1xyXG4gICAgcHJpdmF0ZSBvbk1pc3Npbmc6IExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3lcclxuICAgIHByaXZhdGUgUGVyc2lzdG9yOiBMb2NhbGl6YXRpb25QZXJzaXN0b3I7XHJcbiAgICBwcml2YXRlIExvY2FsZVBlcnNpc3RvcjogTG9jYWxlUGVyc2lzdG9yO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IExvY2FsZSBMb2NhbGUgZGEgdXRpbGl6emFyZSBuZWwgbW9tZW50byBjaGUgcXVlc3RvIHNlcnZpemlvIHJpY2hpZWRlIGxlIHRyYWR1emlvbmlcclxuICAgICAqIEBwYXJhbSB7YmFzZUxvY2FsaXphdGlvbn0gYmFzZUxvY2FsaXphdGlvbiBDbGFzc2UgYmFzZSBkaSBsb2NhbGl6emF6aW9uZSBnacOgIGZvcm5pdGEgYSBsaXZlbGxvIGRpIHJvb3QgZGFsbGEgbGlicmVyaWEgc3Rlc3NhLiBcclxuICAgICAqIMOIIHN1ZmZpY2llbnRlIGluaWV0dGFybGEgbmVsbCdldmVudHVhbGUgY29zdHJ1dHRvcmUgY2hlIGVzdGVuZGUgcXVlc3RhIGNsYXNzZSBlIHBhc3NhcmxhIGFzLWlzXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgdGhpcy5Mb2NhbGVQZXJzaXN0b3IgPSB0aGlzLmluamVjdG9yLmdldChMb2NhbGVQZXJzaXN0b3IpO1xyXG4gICAgICAgIHRoaXMuYmFzZUxvY2FsaXphdGlvbiA9IHRoaXMuaW5qZWN0b3IuZ2V0KEJhc2VMb2NhbGl6YXRpb24pO1xyXG4gICAgICAgIHRoaXMub25NaXNzaW5nID0gdGhpcy5pbmplY3Rvci5nZXQoTE9DX01JU1NJTkdfUE9MSUNZKTtcclxuXHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3IgPSBuZXcgTG9jYWxpemF0aW9uUGVyc2lzdG9yKHRoaXMuVHJhbnNsYXRpb25DYWNoZSk7XHJcblxyXG4gICAgICAgIHRoaXMuYmFzZUxvY2FsaXphdGlvbi5Mb2NhbGUuc3Vic2NyaWJlKGxyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Mb2NhbGUgPSBscjtcclxuICAgICAgICAgICAgdGhpcy5TbWFsbExvY2FsZSA9IExvY2FsZURlZmluaXRpb25zLmdldEJ5QWxpYXMobHIpLnNtYWxsVmVyc2lvbjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYSB1biBudW92byBzZXJ2aXppbyBkaSBsb2NhbGl6emF6aW9uZSBkYXRhIHVuYSBjbGFzc2UgaW4gbW9kbyBjaGUgbGUgbG9jYWxpenphemlvbmkgbm9uIHNpYW5vIHBpw7kgc29sbyBkYSBwcm92aWRlLWFyZSBhIGxpdmVsbG8gZGkgY29tcG9uZW50ZSwgbWEgcG9zc2Fub1xyXG4gICAgICogYW5jaGUgZXNzZXJlIGNyZWF0ZSBhbCB2b2xvIGRhbCBjb21wb25lbnRlL3NlcnZpemlvL3F1YWxzaWFzaWNvc2EgY2hlIGxlIGRldmUgdXRpbGl6emFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge1R5cGU8TG9jYWxpemF0aW9uU2VydmljZT59IGxjc3QgQ2xhc3NlIGRhIHVzYXJlIHBlciBjcmFyZSBpbCBudW92byBzZXJ2aXppbyBkaSBsb2NhbGl6emF6aW9uZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2VuZXJhdGVGcm9tVHlwZShsY3N0OiBUeXBlPExvY2FsaXphdGlvblNlcnZpY2U+KTogTG9jYWxpemF0aW9uU2VydmljZSB7XHJcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTE9DX01JU1NJTkdfUE9MSUNZLCB1c2VWYWx1ZTogdGhpcy5vbk1pc3Npbmd9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBCYXNlTG9jYWxpemF0aW9uLCB1c2VWYWx1ZTogdGhpcy5iYXNlTG9jYWxpemF0aW9ufSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTG9jYWxlUGVyc2lzdG9yLCB1c2VWYWx1ZTogdGhpcy5Mb2NhbGVQZXJzaXN0b3J9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogbGNzdCB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KExvY2FsaXphdGlvblNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBsYSBsb2NhbGl6emF6aW9uZSBkaSB1biB0b2tlbiBhbGwnaW50ZXJubyBkZWxsYSAqKlRyYW5zbGF0aW9uQ2FjaGUqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIERpcmV6aW9uZSBkZWxsYSB0cmFkdXppb25lLCByYXBwcmVzZW50YSBsYSBsaW5ndWEgYmFzZSBpbiBjdWkgYXNwZXR0YXJzaSBpbCB0ZXN0byBlIGxlIHZhcmllIGxpbmd1ZSBpbiBjdWkgdmllbmUgdHJhZG90dGEuXHJcbiAgICAgKiBBZCBlc2VtcGlvLCBcImVuLT5pdFwiIGluZGljYSBjaGUgaWwgcGFyYW1ldHJvICoqbGVmdCoqIMOoIHZhbGlkbyBwZXIgbGUgbG9jYWxpenphemlvbmkgaW4gaW5nbGVzZSwgbWVudHJlIG5lbGwnZWxlbWVudG8gMCBkZWwgcGFyYW1ldHJvICoqcmlnaHQqKiBcclxuICAgICAqIMOoIHByZXNlbnRlIGwndW5pY2EgdHJhZHV6aW9uZSBpbiBpdGFsaWFubywgcGVyIGRlZmluaXJlIHBpw7kgdHJhZHV6aW9uaSBzdWwgbGF0byBkZXN0cm8gZGVsbGEgZnJlY2NpYSBiaXNvZ25hIGNvbmNhdGVuYXJsZSBjb24gbGEgdmlyZ29sYSwgYWQgZXNlbXBpbyBcImVuLT5pdCxqcCxlY2NcIlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIE5vbWUgZGVsIHRva2VuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGVmdCBWYWxvcmUgZGVsIHRva2VuIHBlciBsYSBsaW5ndWEgc3BlY2lmaWNhdGEgbmVsIGxhdG8gaW1tZWRpYXRhbWVudGUgc2luaXN0cm8gYWxsYSBmcmVjY2lhIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJpZ2h0IEFycmF5IGNvbiBpIHZhbG9yaSBmYWNlbnRpIHJpZmVyaW1lbnRvIGFsbCdOLWVzaW1hIGxpbmd1YSBkZWwgbGF0byBkZXN0cm8gZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBzZXRUb2tlbihkaXJlY3Rpb246IHN0cmluZywgdG9rZW46IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nW10pIHtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXRUb2tlbihkaXJlY3Rpb24sIHRva2VuLCBsZWZ0LCByaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGxhIGxvY2FsaXp6YXppb25lIGRpIHVuYSBmcmFzZSBhbGwnaW50ZXJubyBkZWxsYSAqKlRyYW5zbGF0aW9uQ2FjaGUqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIERpcmV6aW9uZSBkZWxsYSB0cmFkdXppb25lLCByYXBwcmVzZW50YSBsYSBsaW5ndWEgYmFzZSBpbiBjdWkgYXNwZXR0YXJzaSBpbCB0ZXN0byBlIGxlIHZhcmllIGxpbmd1ZSBpbiBjdWkgdmllbmUgdHJhZG90dGEuXHJcbiAgICAgKiBBZCBlc2VtcGlvLCBcImVuLT5pdFwiIGluZGljYSBjaGUgaWwgcGFyYW1ldHJvICoqbGVmdCoqIMOoIHZhbGlkbyBwZXIgbGUgbG9jYWxpenphemlvbmkgaW4gaW5nbGVzZSwgbWVudHJlIG5lbGwnZWxlbWVudG8gMCBkZWwgcGFyYW1ldHJvICoqcmlnaHQqKiBcclxuICAgICAqIMOoIHByZXNlbnRlIGwndW5pY2EgdHJhZHV6aW9uZSBpbiBpdGFsaWFubywgcGVyIGRlZmluaXJlIHBpw7kgdHJhZHV6aW9uaSBzdWwgbGF0byBkZXN0cm8gZGVsbGEgZnJlY2NpYSBiaXNvZ25hIGNvbmNhdGVuYXJsZSBjb24gbGEgdmlyZ29sYSwgYWQgZXNlbXBpbyBcImVuLT5pdCxqcCxlY2NcIlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxlZnQgVmFsb3JlIGRlbGxhIGZyYXNlIHBlciBsYSBsaW5ndWEgc3BlY2lmaWNhdGEgbmVsIGxhdG8gaW1tZWRpYXRhbWVudGUgc2luaXN0cm8gYWxsYSBmcmVjY2lhIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJpZ2h0IEFycmF5IGNvbiBpIHZhbG9yaSBmYWNlbnRpIHJpZmVyaW1lbnRvIGFsbCdOLWVzaW1hIGxpbmd1YSBkZWwgbGF0byBkZXN0cm8gZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBzZXQoZGlyZWN0aW9uOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgLy8gQ29udHJvbGxhIGRpIG5vbiByZWluc2VyaXJlIGxhIHN0ZXNzYSBsb2NhbGl6emF6aW9uZSBwcmVzZW50ZSBuZWwgQmFzZUxvY2FsaXphdGlvblxyXG4gICAgICAgIC8vIGkgY29udHJvbGxpIHBlciBpbCBub24gcmVpbnNlcmltZW50byBkZWxsYSBzdGVzc2EgbG9jYWxpenphemlvbmUgYWxsJ2ludGVybm8gZGVsbGEgc3Rlc3NhIGlzdGFuemEgw6ggZmF0dG8gbGF0byBQZXJzaXN0b3JcclxuICAgICAgICBpZiAodGhpcy5iYXNlTG9jYWxpemF0aW9uLlBlcnNpc3Rvci5nZXQobGVmdCwgZmFsc2UpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgTGEgbG9jYWxpenphemlvbmUgcGVyICR7bGVmdH0gw6ggZ2nDoCBwcmVzZW50ZSBmcmEgbGUgbG9jYWxpenphemlvbmkgYmFzZSwgaWdub3JvIGwnb3BlcmF6aW9uZWApO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChkaXJlY3Rpb24sIGxlZnQsIHJpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvY2FsaXp6YSB1biB0b2tlblxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBJbCB0b2tlbiBkYSBsb2NhbGl6emFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUb2tlbiBsb2NhbGl6emF0b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdG9rZW4odGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2ModGV4dCwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2NhbGl6emEgdW5hIGZyYXNlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IEZyYXNlIGRhIGxvY2FsaXp6YXJlXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFsbG93dG9rZW5zIEluZGljYSBzZSBsYSBmcmFzZSAqKnRleHQqKiBwb3RyZWJiZSBlc3NlcmUgdW4gdG9rZW4gbyBub1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBGcmFzZSBsb2NhbGl6emF0YVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9jKHRleHQ6IHN0cmluZywgYWxsb3d0b2tlbnM/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIXRoaXMuTG9jYWxlKVxyXG4gICAgICAgICAgICB0aHJvdyBcIklsIHNpc3RlbWEgZGkgbG9jYWxpenphemlvbmUgbm9uIGhhIGFuY29yYSBjYXJpY2F0byBpbCBMb2NhbGUsIGFzc2ljdXJhcnNpIGRpIGNhcmljYXJlIGwnQVBQIHNvbG8gYWwgcmV0cmlldmUgZGVsIGxvY2FsZSdcIjtcclxuXHJcbiAgICAgICAgaWYgKCF0ZXh0IHx8IHRleHQgPT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgICAgIC8vIFByZW5kbyBsYSBsb2NhbGl6emF6aW9uZSBvIGRhbGxhIGNhY2hlIGF0dHVhbGUgbyBkYWxsYSBjYWNoZSBkZWwgc2Vydml6aW8gYmFzZVxyXG4gICAgICAgIHZhciBpdGVtID0gdGhpcy5QZXJzaXN0b3IuZ2V0KHRleHQsIGFsbG93dG9rZW5zKSB8fCB0aGlzLmJhc2VMb2NhbGl6YXRpb24uUGVyc2lzdG9yLmdldCh0ZXh0LCBhbGxvd3Rva2Vucyk7XHJcbiAgICAgICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gYEltcG9zc2liaWxlIHRyb3ZhcmUgbGEgbG9jYWxpenphemlvbmUgcGVyICcke3RleHR9J2A7XHJcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5vbk1pc3NpbmcpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeS5QcmludEVtcHR5OlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgICAgICAgICBjYXNlIExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3kuUHJpbnRTb3VyY2U6XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgICAgICAgICAgICAgY2FzZSBMb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5LlRocm93RXhjZXB0aW9uOlxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG1lc3NhZ2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBsb2MgPSB0aGlzLlBlcnNpc3Rvci50cmFuc2xhdGlvbkJ5Q3VsdHVyZShpdGVtLCB0aGlzLkxvY2FsZSk7XHJcbiAgICAgICAgaWYgKCFsb2MpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkltcG9zc2liaWxlIHRyb3ZhcmUgbGEgbG9jYWxpenphemlvbmUgcGVyICdcIiArIHRleHQgKyBcIicsIGN1bHR1cmUgXCIgKyB0aGlzLkxvY2FsZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGxvYy50cmFuc2xhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgY2hhbmdlTG9jYWxlKG5ld0xvY2FsZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGxvY2FsZSA9IGF3YWl0IHRoaXMuTG9jYWxlUGVyc2lzdG9yLnJlY292ZXIoKS50b1Byb21pc2UoKTtcclxuICAgICAgICBpZiAobmV3TG9jYWxlID09IGxvY2FsZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmluZm8oXCJJbCBsb2NhbGUgcmljaGllc3RvIMOoIGxvIHN0ZXNzbyBkZWwgbG9jYWxlIGF0dHVhbGUuIElnbm9ybyBsJ29wZXJhemlvbmVcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuTG9jYWxlUGVyc2lzdG9yLnBlcnNpc3QobmV3TG9jYWxlKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
1
+ import { Injectable, Injector } from '@angular/core';
2
+ import { BaseLocalization } from './core/localization.base';
3
+ import { LocalizationPersistor } from './core/localization.persistor';
4
+ import { LocalePersistor } from './locale-persistor/LocalePersistor';
5
+ import { LOC_MISSING_POLICY } from './tokens';
6
+ import { LocalizationMissingPolicy } from './models/LocalizationMissingPolicy';
7
+ import { LocaleDefinitions } from './models/LocaleDefinitions';
8
+ import * as i0 from "@angular/core";
9
+ /**
10
+ * Classe di localizzazione estendibile che permette di specificare le proprie localizzazioni e comunque rendere disponibili le localizzazioni globali
11
+ */
12
+ export class LocalizationService {
13
+ /**
14
+ * Costruttore
15
+ *
16
+ * @param {string} Locale Locale da utilizzare nel momento che questo servizio richiede le traduzioni
17
+ * @param {baseLocalization} baseLocalization Classe base di localizzazione già fornita a livello di root dalla libreria stessa.
18
+ * È sufficiente iniettarla nell'eventuale costruttore che estende questa classe e passarla as-is
19
+ */
20
+ constructor(injector) {
21
+ this.injector = injector;
22
+ /**
23
+ * Cache di tutte le localizzazioni disonibili all'interno di questa classe
24
+ */
25
+ this.TranslationCache = {};
26
+ this.LocalePersistor = this.injector.get(LocalePersistor);
27
+ this.baseLocalization = this.injector.get(BaseLocalization);
28
+ this.onMissing = this.injector.get(LOC_MISSING_POLICY);
29
+ this.Persistor = new LocalizationPersistor(this.TranslationCache);
30
+ this.baseLocalization.Locale.subscribe(lr => {
31
+ this.Locale = lr;
32
+ this.SmallLocale = LocaleDefinitions.getByAlias(lr).smallVersion;
33
+ });
34
+ }
35
+ /**
36
+ * Genera un nuovo servizio di localizzazione data una classe in modo che le localizzazioni non siano più solo da provide-are a livello di componente, ma possano
37
+ * anche essere create al volo dal componente/servizio/qualsiasicosa che le deve utilizzare
38
+ *
39
+ * @param {Type<LocalizationService>} lcst Classe da usare per crare il nuovo servizio di localizzazione
40
+ */
41
+ generateFromType(lcst) {
42
+ const injector = Injector.create({
43
+ providers: [
44
+ { provide: LOC_MISSING_POLICY, useValue: this.onMissing },
45
+ { provide: BaseLocalization, useValue: this.baseLocalization },
46
+ { provide: LocalePersistor, useValue: this.LocalePersistor },
47
+ { provide: LocalizationService, useClass: lcst }
48
+ ]
49
+ });
50
+ return injector.get(LocalizationService);
51
+ }
52
+ /**
53
+ * Imposta la localizzazione di un token all'interno della **TranslationCache**
54
+ *
55
+ * @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
56
+ * Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
57
+ * è presente l'unica traduzione in italiano, per definire più traduzioni sul lato destro della freccia bisogna concatenarle con la virgola, ad esempio "en->it,jp,ecc"
58
+ * @param {string} token Nome del token
59
+ * @param {string} left Valore del token per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
60
+ * @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
61
+ */
62
+ setToken(direction, token, left, right) {
63
+ this.Persistor.setToken(direction, token, left, right);
64
+ }
65
+ /**
66
+ * Imposta la localizzazione di una frase all'interno della **TranslationCache**
67
+ *
68
+ * @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
69
+ * Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
70
+ * è presente l'unica traduzione in italiano, per definire più traduzioni sul lato destro della freccia bisogna concatenarle con la virgola, ad esempio "en->it,jp,ecc"
71
+ * @param {string} left Valore della frase per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
72
+ * @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
73
+ */
74
+ set(direction, left, right) {
75
+ // Controlla di non reinserire la stessa localizzazione presente nel BaseLocalization
76
+ // i controlli per il non reinserimento della stessa localizzazione all'interno della stessa istanza è fatto lato Persistor
77
+ if (this.baseLocalization.Persistor.get(left, false)) {
78
+ console.warn(`La localizzazione per ${left} è già presente fra le localizzazioni base, ignoro l'operazione`);
79
+ return;
80
+ }
81
+ this.Persistor.set(direction, left, right);
82
+ }
83
+ /**
84
+ * Localizza un token
85
+ *
86
+ * @param {string} text Il token da localizzare
87
+ *
88
+ * @returns {string} Token localizzato
89
+ */
90
+ token(text) {
91
+ return this.loc(text, true);
92
+ }
93
+ /**
94
+ * Localizza una frase
95
+ *
96
+ * @param {string} text Frase da localizzare
97
+ * @param {boolean} allowtokens Indica se la frase **text** potrebbe essere un token o no
98
+ *
99
+ * @returns {string} Frase localizzata
100
+ */
101
+ loc(text, allowtokens) {
102
+ if (!this.Locale)
103
+ throw "Il sistema di localizzazione non ha ancora caricato il Locale, assicurarsi di caricare l'APP solo al retrieve del locale'";
104
+ if (!text || text == "undefined")
105
+ return "";
106
+ // Prendo la localizzazione o dalla cache attuale o dalla cache del servizio base
107
+ var item = this.Persistor.get(text, allowtokens) || this.baseLocalization.Persistor.get(text, allowtokens);
108
+ if (!item) {
109
+ let message = `Impossibile trovare la localizzazione per '${text}'`;
110
+ switch (this.onMissing) {
111
+ case LocalizationMissingPolicy.PrintEmpty:
112
+ console.error(message);
113
+ return "";
114
+ case LocalizationMissingPolicy.PrintSource:
115
+ console.warn(message);
116
+ return text;
117
+ case LocalizationMissingPolicy.ThrowException:
118
+ throw message;
119
+ }
120
+ }
121
+ var loc = this.Persistor.translationByCulture(item, this.Locale);
122
+ if (!loc) {
123
+ console.error("Impossibile trovare la localizzazione per '" + text + "', culture " + this.Locale);
124
+ return "";
125
+ }
126
+ return loc.translation;
127
+ }
128
+ async changeLocale(newLocale) {
129
+ let locale = await this.LocalePersistor.recover().toPromise();
130
+ if (newLocale == locale) {
131
+ console.info("Il locale richiesto è lo stesso del locale attuale. Ignoro l'operazione");
132
+ return;
133
+ }
134
+ else {
135
+ await this.LocalePersistor.persist(newLocale).toPromise();
136
+ location.reload();
137
+ }
138
+ }
139
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalizationService, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Injectable }); }
140
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalizationService }); }
141
+ }
142
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: LocalizationService, decorators: [{
143
+ type: Injectable
144
+ }], ctorParameters: () => [{ type: i0.Injector }] });
145
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9ucy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL2xvY2FsaXphdGlvbnMuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUU1RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDckUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQzlDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUUvRDs7R0FFRztBQUVILE1BQU0sT0FBTyxtQkFBbUI7SUFlNUI7Ozs7OztPQU1HO0lBQ0gsWUFBb0IsUUFBa0I7UUFBbEIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXBCdEM7O1dBRUc7UUFDSyxxQkFBZ0IsR0FBdUMsRUFBRSxDQUFDO1FBa0I5RCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQzFELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV2RCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUkscUJBQXFCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixD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LENBQUM7b0JBQ3RCLE9BQU8sSUFBSSxDQUFDO2dCQUNoQixLQUFLLHlCQUF5QixDQUFDLGNBQWM7b0JBQ3pDLE1BQU0sT0FBTyxDQUFDO1lBQ3RCLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pFLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLEdBQUcsSUFBSSxHQUFHLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEcsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUMsV0FBVyxDQUFDO0lBQzNCLENBQUM7SUFFTSxLQUFLLENBQUMsWUFBWSxDQUFDLFNBQWlCO1FBQ3ZDLElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUM5RCxJQUFJLFNBQVMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUN0QixPQUFPLENBQUMsSUFBSSxDQUFDLHlFQUF5RSxDQUFDLENBQUM7WUFDeEYsT0FBTztRQUNYLENBQUM7YUFDSSxDQUFDO1lBQ0YsTUFBTSxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxRCxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDdEIsQ0FBQztJQUNMLENBQUM7K0dBbkpRLG1CQUFtQjttSEFBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUQvQixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgSW5qZWN0b3IsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmFzZUxvY2FsaXphdGlvbiB9IGZyb20gJy4vY29yZS9sb2NhbGl6YXRpb24uYmFzZSc7XHJcbmltcG9ydCB7IEl0ZW1Mb2NhbGl6YXRpb24gfSBmcm9tICcuL21vZGVscy9JdGVtTG9jYWxpemF0aW9uJztcclxuaW1wb3J0IHsgTG9jYWxpemF0aW9uUGVyc2lzdG9yIH0gZnJvbSAnLi9jb3JlL2xvY2FsaXphdGlvbi5wZXJzaXN0b3InO1xyXG5pbXBvcnQgeyBMb2NhbGVQZXJzaXN0b3IgfSBmcm9tICcuL2xvY2FsZS1wZXJzaXN0b3IvTG9jYWxlUGVyc2lzdG9yJztcclxuaW1wb3J0IHsgTE9DX01JU1NJTkdfUE9MSUNZIH0gZnJvbSAnLi90b2tlbnMnO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5IH0gZnJvbSAnLi9tb2RlbHMvTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeSc7XHJcbmltcG9ydCB7IExvY2FsZURlZmluaXRpb25zIH0gZnJvbSAnLi9tb2RlbHMvTG9jYWxlRGVmaW5pdGlvbnMnO1xyXG5cclxuLyoqXHJcbiAqIENsYXNzZSBkaSBsb2NhbGl6emF6aW9uZSBlc3RlbmRpYmlsZSBjaGUgcGVybWV0dGUgZGkgc3BlY2lmaWNhcmUgbGUgcHJvcHJpZSBsb2NhbGl6emF6aW9uaSBlIGNvbXVucXVlIHJlbmRlcmUgZGlzcG9uaWJpbGkgbGUgbG9jYWxpenphemlvbmkgZ2xvYmFsaVxyXG4gKi9cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uU2VydmljZSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDYWNoZSBkaSB0dXR0ZSBsZSBsb2NhbGl6emF6aW9uaSBkaXNvbmliaWxpIGFsbCdpbnRlcm5vIGRpIHF1ZXN0YSBjbGFzc2VcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBUcmFuc2xhdGlvbkNhY2hlOiB7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9ID0ge307XHJcblxyXG4gICAgcHVibGljIExvY2FsZTogc3RyaW5nO1xyXG4gICAgcHVibGljIFNtYWxsTG9jYWxlOiBzdHJpbmc7XHJcblxyXG4gICAgcHJpdmF0ZSBiYXNlTG9jYWxpemF0aW9uOiBCYXNlTG9jYWxpemF0aW9uO1xyXG4gICAgcHJpdmF0ZSBvbk1pc3Npbmc6IExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3lcclxuICAgIHByaXZhdGUgUGVyc2lzdG9yOiBMb2NhbGl6YXRpb25QZXJzaXN0b3I7XHJcbiAgICBwcml2YXRlIExvY2FsZVBlcnNpc3RvcjogTG9jYWxlUGVyc2lzdG9yO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IExvY2FsZSBMb2NhbGUgZGEgdXRpbGl6emFyZSBuZWwgbW9tZW50byBjaGUgcXVlc3RvIHNlcnZpemlvIHJpY2hpZWRlIGxlIHRyYWR1emlvbmlcclxuICAgICAqIEBwYXJhbSB7YmFzZUxvY2FsaXphdGlvbn0gYmFzZUxvY2FsaXphdGlvbiBDbGFzc2UgYmFzZSBkaSBsb2NhbGl6emF6aW9uZSBnacOgIGZvcm5pdGEgYSBsaXZlbGxvIGRpIHJvb3QgZGFsbGEgbGlicmVyaWEgc3Rlc3NhLiBcclxuICAgICAqIMOIIHN1ZmZpY2llbnRlIGluaWV0dGFybGEgbmVsbCdldmVudHVhbGUgY29zdHJ1dHRvcmUgY2hlIGVzdGVuZGUgcXVlc3RhIGNsYXNzZSBlIHBhc3NhcmxhIGFzLWlzXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICAgICAgdGhpcy5Mb2NhbGVQZXJzaXN0b3IgPSB0aGlzLmluamVjdG9yLmdldChMb2NhbGVQZXJzaXN0b3IpO1xyXG4gICAgICAgIHRoaXMuYmFzZUxvY2FsaXphdGlvbiA9IHRoaXMuaW5qZWN0b3IuZ2V0KEJhc2VMb2NhbGl6YXRpb24pO1xyXG4gICAgICAgIHRoaXMub25NaXNzaW5nID0gdGhpcy5pbmplY3Rvci5nZXQoTE9DX01JU1NJTkdfUE9MSUNZKTtcclxuXHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3IgPSBuZXcgTG9jYWxpemF0aW9uUGVyc2lzdG9yKHRoaXMuVHJhbnNsYXRpb25DYWNoZSk7XHJcblxyXG4gICAgICAgIHRoaXMuYmFzZUxvY2FsaXphdGlvbi5Mb2NhbGUuc3Vic2NyaWJlKGxyID0+IHtcclxuICAgICAgICAgICAgdGhpcy5Mb2NhbGUgPSBscjtcclxuICAgICAgICAgICAgdGhpcy5TbWFsbExvY2FsZSA9IExvY2FsZURlZmluaXRpb25zLmdldEJ5QWxpYXMobHIpLnNtYWxsVmVyc2lvbjtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdlbmVyYSB1biBudW92byBzZXJ2aXppbyBkaSBsb2NhbGl6emF6aW9uZSBkYXRhIHVuYSBjbGFzc2UgaW4gbW9kbyBjaGUgbGUgbG9jYWxpenphemlvbmkgbm9uIHNpYW5vIHBpw7kgc29sbyBkYSBwcm92aWRlLWFyZSBhIGxpdmVsbG8gZGkgY29tcG9uZW50ZSwgbWEgcG9zc2Fub1xyXG4gICAgICogYW5jaGUgZXNzZXJlIGNyZWF0ZSBhbCB2b2xvIGRhbCBjb21wb25lbnRlL3NlcnZpemlvL3F1YWxzaWFzaWNvc2EgY2hlIGxlIGRldmUgdXRpbGl6emFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge1R5cGU8TG9jYWxpemF0aW9uU2VydmljZT59IGxjc3QgQ2xhc3NlIGRhIHVzYXJlIHBlciBjcmFyZSBpbCBudW92byBzZXJ2aXppbyBkaSBsb2NhbGl6emF6aW9uZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2VuZXJhdGVGcm9tVHlwZShsY3N0OiBUeXBlPExvY2FsaXphdGlvblNlcnZpY2U+KTogTG9jYWxpemF0aW9uU2VydmljZSB7XHJcbiAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xyXG4gICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTE9DX01JU1NJTkdfUE9MSUNZLCB1c2VWYWx1ZTogdGhpcy5vbk1pc3Npbmd9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBCYXNlTG9jYWxpemF0aW9uLCB1c2VWYWx1ZTogdGhpcy5iYXNlTG9jYWxpemF0aW9ufSxcclxuICAgICAgICAgICAgICAgIHsgcHJvdmlkZTogTG9jYWxlUGVyc2lzdG9yLCB1c2VWYWx1ZTogdGhpcy5Mb2NhbGVQZXJzaXN0b3J9LFxyXG4gICAgICAgICAgICAgICAgeyBwcm92aWRlOiBMb2NhbGl6YXRpb25TZXJ2aWNlLCB1c2VDbGFzczogbGNzdCB9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9KTtcclxuICAgICAgICByZXR1cm4gaW5qZWN0b3IuZ2V0KExvY2FsaXphdGlvblNlcnZpY2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBsYSBsb2NhbGl6emF6aW9uZSBkaSB1biB0b2tlbiBhbGwnaW50ZXJubyBkZWxsYSAqKlRyYW5zbGF0aW9uQ2FjaGUqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIERpcmV6aW9uZSBkZWxsYSB0cmFkdXppb25lLCByYXBwcmVzZW50YSBsYSBsaW5ndWEgYmFzZSBpbiBjdWkgYXNwZXR0YXJzaSBpbCB0ZXN0byBlIGxlIHZhcmllIGxpbmd1ZSBpbiBjdWkgdmllbmUgdHJhZG90dGEuXHJcbiAgICAgKiBBZCBlc2VtcGlvLCBcImVuLT5pdFwiIGluZGljYSBjaGUgaWwgcGFyYW1ldHJvICoqbGVmdCoqIMOoIHZhbGlkbyBwZXIgbGUgbG9jYWxpenphemlvbmkgaW4gaW5nbGVzZSwgbWVudHJlIG5lbGwnZWxlbWVudG8gMCBkZWwgcGFyYW1ldHJvICoqcmlnaHQqKiBcclxuICAgICAqIMOoIHByZXNlbnRlIGwndW5pY2EgdHJhZHV6aW9uZSBpbiBpdGFsaWFubywgcGVyIGRlZmluaXJlIHBpw7kgdHJhZHV6aW9uaSBzdWwgbGF0byBkZXN0cm8gZGVsbGEgZnJlY2NpYSBiaXNvZ25hIGNvbmNhdGVuYXJsZSBjb24gbGEgdmlyZ29sYSwgYWQgZXNlbXBpbyBcImVuLT5pdCxqcCxlY2NcIlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRva2VuIE5vbWUgZGVsIHRva2VuXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbGVmdCBWYWxvcmUgZGVsIHRva2VuIHBlciBsYSBsaW5ndWEgc3BlY2lmaWNhdGEgbmVsIGxhdG8gaW1tZWRpYXRhbWVudGUgc2luaXN0cm8gYWxsYSBmcmVjY2lhIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJpZ2h0IEFycmF5IGNvbiBpIHZhbG9yaSBmYWNlbnRpIHJpZmVyaW1lbnRvIGFsbCdOLWVzaW1hIGxpbmd1YSBkZWwgbGF0byBkZXN0cm8gZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBzZXRUb2tlbihkaXJlY3Rpb246IHN0cmluZywgdG9rZW46IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nW10pIHtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXRUb2tlbihkaXJlY3Rpb24sIHRva2VuLCBsZWZ0LCByaWdodCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGxhIGxvY2FsaXp6YXppb25lIGRpIHVuYSBmcmFzZSBhbGwnaW50ZXJubyBkZWxsYSAqKlRyYW5zbGF0aW9uQ2FjaGUqKlxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIERpcmV6aW9uZSBkZWxsYSB0cmFkdXppb25lLCByYXBwcmVzZW50YSBsYSBsaW5ndWEgYmFzZSBpbiBjdWkgYXNwZXR0YXJzaSBpbCB0ZXN0byBlIGxlIHZhcmllIGxpbmd1ZSBpbiBjdWkgdmllbmUgdHJhZG90dGEuXHJcbiAgICAgKiBBZCBlc2VtcGlvLCBcImVuLT5pdFwiIGluZGljYSBjaGUgaWwgcGFyYW1ldHJvICoqbGVmdCoqIMOoIHZhbGlkbyBwZXIgbGUgbG9jYWxpenphemlvbmkgaW4gaW5nbGVzZSwgbWVudHJlIG5lbGwnZWxlbWVudG8gMCBkZWwgcGFyYW1ldHJvICoqcmlnaHQqKiBcclxuICAgICAqIMOoIHByZXNlbnRlIGwndW5pY2EgdHJhZHV6aW9uZSBpbiBpdGFsaWFubywgcGVyIGRlZmluaXJlIHBpw7kgdHJhZHV6aW9uaSBzdWwgbGF0byBkZXN0cm8gZGVsbGEgZnJlY2NpYSBiaXNvZ25hIGNvbmNhdGVuYXJsZSBjb24gbGEgdmlyZ29sYSwgYWQgZXNlbXBpbyBcImVuLT5pdCxqcCxlY2NcIlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxlZnQgVmFsb3JlIGRlbGxhIGZyYXNlIHBlciBsYSBsaW5ndWEgc3BlY2lmaWNhdGEgbmVsIGxhdG8gaW1tZWRpYXRhbWVudGUgc2luaXN0cm8gYWxsYSBmcmVjY2lhIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJpZ2h0IEFycmF5IGNvbiBpIHZhbG9yaSBmYWNlbnRpIHJpZmVyaW1lbnRvIGFsbCdOLWVzaW1hIGxpbmd1YSBkZWwgbGF0byBkZXN0cm8gZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBzZXQoZGlyZWN0aW9uOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgLy8gQ29udHJvbGxhIGRpIG5vbiByZWluc2VyaXJlIGxhIHN0ZXNzYSBsb2NhbGl6emF6aW9uZSBwcmVzZW50ZSBuZWwgQmFzZUxvY2FsaXphdGlvblxyXG4gICAgICAgIC8vIGkgY29udHJvbGxpIHBlciBpbCBub24gcmVpbnNlcmltZW50byBkZWxsYSBzdGVzc2EgbG9jYWxpenphemlvbmUgYWxsJ2ludGVybm8gZGVsbGEgc3Rlc3NhIGlzdGFuemEgw6ggZmF0dG8gbGF0byBQZXJzaXN0b3JcclxuICAgICAgICBpZiAodGhpcy5iYXNlTG9jYWxpemF0aW9uLlBlcnNpc3Rvci5nZXQobGVmdCwgZmFsc2UpKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgTGEgbG9jYWxpenphemlvbmUgcGVyICR7bGVmdH0gw6ggZ2nDoCBwcmVzZW50ZSBmcmEgbGUgbG9jYWxpenphemlvbmkgYmFzZSwgaWdub3JvIGwnb3BlcmF6aW9uZWApO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChkaXJlY3Rpb24sIGxlZnQsIHJpZ2h0KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvY2FsaXp6YSB1biB0b2tlblxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBJbCB0b2tlbiBkYSBsb2NhbGl6emFyZVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUb2tlbiBsb2NhbGl6emF0b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdG9rZW4odGV4dDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5sb2ModGV4dCwgdHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2NhbGl6emEgdW5hIGZyYXNlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0IEZyYXNlIGRhIGxvY2FsaXp6YXJlXHJcbiAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGFsbG93dG9rZW5zIEluZGljYSBzZSBsYSBmcmFzZSAqKnRleHQqKiBwb3RyZWJiZSBlc3NlcmUgdW4gdG9rZW4gbyBub1xyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7c3RyaW5nfSBGcmFzZSBsb2NhbGl6emF0YVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgbG9jKHRleHQ6IHN0cmluZywgYWxsb3d0b2tlbnM/OiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAoIXRoaXMuTG9jYWxlKVxyXG4gICAgICAgICAgICB0aHJvdyBcIklsIHNpc3RlbWEgZGkgbG9jYWxpenphemlvbmUgbm9uIGhhIGFuY29yYSBjYXJpY2F0byBpbCBMb2NhbGUsIGFzc2ljdXJhcnNpIGRpIGNhcmljYXJlIGwnQVBQIHNvbG8gYWwgcmV0cmlldmUgZGVsIGxvY2FsZSdcIjtcclxuXHJcbiAgICAgICAgaWYgKCF0ZXh0IHx8IHRleHQgPT0gXCJ1bmRlZmluZWRcIilcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcblxyXG4gICAgICAgIC8vIFByZW5kbyBsYSBsb2NhbGl6emF6aW9uZSBvIGRhbGxhIGNhY2hlIGF0dHVhbGUgbyBkYWxsYSBjYWNoZSBkZWwgc2Vydml6aW8gYmFzZVxyXG4gICAgICAgIHZhciBpdGVtID0gdGhpcy5QZXJzaXN0b3IuZ2V0KHRleHQsIGFsbG93dG9rZW5zKSB8fCB0aGlzLmJhc2VMb2NhbGl6YXRpb24uUGVyc2lzdG9yLmdldCh0ZXh0LCBhbGxvd3Rva2Vucyk7XHJcbiAgICAgICAgaWYgKCFpdGVtKSB7XHJcbiAgICAgICAgICAgIGxldCBtZXNzYWdlID0gYEltcG9zc2liaWxlIHRyb3ZhcmUgbGEgbG9jYWxpenphemlvbmUgcGVyICcke3RleHR9J2A7XHJcbiAgICAgICAgICAgIHN3aXRjaCAodGhpcy5vbk1pc3NpbmcpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgTG9jYWxpemF0aW9uTWlzc2luZ1BvbGljeS5QcmludEVtcHR5OlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgICAgICAgICBjYXNlIExvY2FsaXphdGlvbk1pc3NpbmdQb2xpY3kuUHJpbnRTb3VyY2U6XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0O1xyXG4gICAgICAgICAgICAgICAgY2FzZSBMb2NhbGl6YXRpb25NaXNzaW5nUG9saWN5LlRocm93RXhjZXB0aW9uOlxyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG1lc3NhZ2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBsb2MgPSB0aGlzLlBlcnNpc3Rvci50cmFuc2xhdGlvbkJ5Q3VsdHVyZShpdGVtLCB0aGlzLkxvY2FsZSk7XHJcbiAgICAgICAgaWYgKCFsb2MpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkltcG9zc2liaWxlIHRyb3ZhcmUgbGEgbG9jYWxpenphemlvbmUgcGVyICdcIiArIHRleHQgKyBcIicsIGN1bHR1cmUgXCIgKyB0aGlzLkxvY2FsZSk7XHJcbiAgICAgICAgICAgIHJldHVybiBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGxvYy50cmFuc2xhdGlvbjtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXN5bmMgY2hhbmdlTG9jYWxlKG5ld0xvY2FsZTogc3RyaW5nKSB7XHJcbiAgICAgICAgbGV0IGxvY2FsZSA9IGF3YWl0IHRoaXMuTG9jYWxlUGVyc2lzdG9yLnJlY292ZXIoKS50b1Byb21pc2UoKTtcclxuICAgICAgICBpZiAobmV3TG9jYWxlID09IGxvY2FsZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmluZm8oXCJJbCBsb2NhbGUgcmljaGllc3RvIMOoIGxvIHN0ZXNzbyBkZWwgbG9jYWxlIGF0dHVhbGUuIElnbm9ybyBsJ29wZXJhemlvbmVcIik7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuTG9jYWxlUGVyc2lzdG9yLnBlcnNpc3QobmV3TG9jYWxlKS50b1Byb21pc2UoKTtcclxuICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59Il19
@@ -1,14 +1,14 @@
1
- export var BaseLocalizationTokens;
2
- (function (BaseLocalizationTokens) {
3
- BaseLocalizationTokens["getDateMonthPosition"] = "getDateMonthPosition";
4
- BaseLocalizationTokens["getDisplayDateMonthPosition"] = "getDisplayDateMonthPosition";
5
- BaseLocalizationTokens["getLocale"] = "getLocale";
6
- BaseLocalizationTokens["getSmallDateFormat"] = "getSmallDateFormat";
7
- BaseLocalizationTokens["getDefaultDateFormat"] = "getDefaultDateFormat";
8
- BaseLocalizationTokens["getSmallDateDisplayFormat"] = "getSmallDateDisplayFormat";
9
- BaseLocalizationTokens["getFullDateFormat"] = "getFullDateFormat";
10
- BaseLocalizationTokens["getFullDateDisplayFormat"] = "getFullDateDisplayFormat";
11
- BaseLocalizationTokens["getFullDateFormatNoSeconds"] = "getFullDateFormatNoSeconds";
12
- BaseLocalizationTokens["getFullDateDisplayFormatNoSeconds"] = "getFullDateDisplayFormatNoSeconds";
13
- })(BaseLocalizationTokens || (BaseLocalizationTokens = {}));
1
+ export var BaseLocalizationTokens;
2
+ (function (BaseLocalizationTokens) {
3
+ BaseLocalizationTokens["getDateMonthPosition"] = "getDateMonthPosition";
4
+ BaseLocalizationTokens["getDisplayDateMonthPosition"] = "getDisplayDateMonthPosition";
5
+ BaseLocalizationTokens["getLocale"] = "getLocale";
6
+ BaseLocalizationTokens["getSmallDateFormat"] = "getSmallDateFormat";
7
+ BaseLocalizationTokens["getDefaultDateFormat"] = "getDefaultDateFormat";
8
+ BaseLocalizationTokens["getSmallDateDisplayFormat"] = "getSmallDateDisplayFormat";
9
+ BaseLocalizationTokens["getFullDateFormat"] = "getFullDateFormat";
10
+ BaseLocalizationTokens["getFullDateDisplayFormat"] = "getFullDateDisplayFormat";
11
+ BaseLocalizationTokens["getFullDateFormatNoSeconds"] = "getFullDateFormatNoSeconds";
12
+ BaseLocalizationTokens["getFullDateDisplayFormatNoSeconds"] = "getFullDateDisplayFormatNoSeconds";
13
+ })(BaseLocalizationTokens || (BaseLocalizationTokens = {}));
14
14
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFzZUxvY2FsaXphdGlvblRva2Vucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvY2FsaXphdGlvbnMvc3JjL2xpYi9tb2RlbHMvQmFzZUxvY2FsaXphdGlvblRva2Vucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLENBQU4sSUFBWSxzQkFXWDtBQVhELFdBQVksc0JBQXNCO0lBQzlCLHVFQUE2QyxDQUFBO0lBQzdDLHFGQUEyRCxDQUFBO0lBQzNELGlEQUF1QixDQUFBO0lBQ3ZCLG1FQUF5QyxDQUFBO0lBQ3pDLHVFQUE2QyxDQUFBO0lBQzdDLGlGQUF1RCxDQUFBO0lBQ3ZELGlFQUF1QyxDQUFBO0lBQ3ZDLCtFQUFxRCxDQUFBO0lBQ3JELG1GQUF5RCxDQUFBO0lBQ3pELGlHQUF1RSxDQUFBO0FBQzNFLENBQUMsRUFYVyxzQkFBc0IsS0FBdEIsc0JBQXNCLFFBV2pDIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbmV4cG9ydCBlbnVtIEJhc2VMb2NhbGl6YXRpb25Ub2tlbnMge1xyXG4gICAgZ2V0RGF0ZU1vbnRoUG9zaXRpb24gPSBcImdldERhdGVNb250aFBvc2l0aW9uXCIsXHJcbiAgICBnZXREaXNwbGF5RGF0ZU1vbnRoUG9zaXRpb24gPSBcImdldERpc3BsYXlEYXRlTW9udGhQb3NpdGlvblwiLFxyXG4gICAgZ2V0TG9jYWxlID0gXCJnZXRMb2NhbGVcIixcclxuICAgIGdldFNtYWxsRGF0ZUZvcm1hdCA9IFwiZ2V0U21hbGxEYXRlRm9ybWF0XCIsXHJcbiAgICBnZXREZWZhdWx0RGF0ZUZvcm1hdCA9IFwiZ2V0RGVmYXVsdERhdGVGb3JtYXRcIixcclxuICAgIGdldFNtYWxsRGF0ZURpc3BsYXlGb3JtYXQgPSBcImdldFNtYWxsRGF0ZURpc3BsYXlGb3JtYXRcIixcclxuICAgIGdldEZ1bGxEYXRlRm9ybWF0ID0gXCJnZXRGdWxsRGF0ZUZvcm1hdFwiLFxyXG4gICAgZ2V0RnVsbERhdGVEaXNwbGF5Rm9ybWF0ID0gXCJnZXRGdWxsRGF0ZURpc3BsYXlGb3JtYXRcIixcclxuICAgIGdldEZ1bGxEYXRlRm9ybWF0Tm9TZWNvbmRzID0gXCJnZXRGdWxsRGF0ZUZvcm1hdE5vU2Vjb25kc1wiLFxyXG4gICAgZ2V0RnVsbERhdGVEaXNwbGF5Rm9ybWF0Tm9TZWNvbmRzID0gXCJnZXRGdWxsRGF0ZURpc3BsYXlGb3JtYXROb1NlY29uZHNcIlxyXG59XHJcbiJdfQ==
@@ -1,18 +1,18 @@
1
- /**
2
- * Contenitore delle localizzazioni collegate ad un testo "base", una per ogni linguaggio supportato
3
- */
4
- export class ItemLocalization {
5
- /**
6
- * Costruttore
7
- *
8
- * @param {boolean} token Indica se è un token o se è un testo
9
- * @param {string} baseText Testo base che verrà richiesto quando verrà cercata la localizzazione
10
- * @param {SpecializedLocalization[]} translations Lista di traduzioni in base al testo base
11
- */
12
- constructor(token, baseText, translations) {
13
- this.token = token;
14
- this.baseText = baseText;
15
- this.translations = translations;
16
- }
17
- }
1
+ /**
2
+ * Contenitore delle localizzazioni collegate ad un testo "base", una per ogni linguaggio supportato
3
+ */
4
+ export class ItemLocalization {
5
+ /**
6
+ * Costruttore
7
+ *
8
+ * @param {boolean} token Indica se è un token o se è un testo
9
+ * @param {string} baseText Testo base che verrà richiesto quando verrà cercata la localizzazione
10
+ * @param {SpecializedLocalization[]} translations Lista di traduzioni in base al testo base
11
+ */
12
+ constructor(token, baseText, translations) {
13
+ this.token = token;
14
+ this.baseText = baseText;
15
+ this.translations = translations;
16
+ }
17
+ }
18
18
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSXRlbUxvY2FsaXphdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvY2FsaXphdGlvbnMvc3JjL2xpYi9tb2RlbHMvSXRlbUxvY2FsaXphdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7R0FFRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFFM0I7Ozs7OztPQU1HO0lBQ0gsWUFBbUIsS0FBYyxFQUFTLFFBQWdCLEVBQVMsWUFBdUM7UUFBdkYsVUFBSyxHQUFMLEtBQUssQ0FBUztRQUFTLGFBQVEsR0FBUixRQUFRLENBQVE7UUFBUyxpQkFBWSxHQUFaLFlBQVksQ0FBMkI7SUFBRyxDQUFDO0NBQy9HIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3BlY2lhbGl6ZWRMb2NhbGl6YXRpb24gfSBmcm9tIFwiLi9TcGVjaWFsaXplZExvY2FsaXphdGlvblwiO1xyXG5cclxuLyoqXHJcbiAqIENvbnRlbml0b3JlIGRlbGxlIGxvY2FsaXp6YXppb25pIGNvbGxlZ2F0ZSBhZCB1biB0ZXN0byBcImJhc2VcIiwgdW5hIHBlciBvZ25pIGxpbmd1YWdnaW8gc3VwcG9ydGF0b1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEl0ZW1Mb2NhbGl6YXRpb24ge1xyXG5cclxuICAvKipcclxuICAgKiBDb3N0cnV0dG9yZVxyXG4gICAqIFxyXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdG9rZW4gSW5kaWNhIHNlIMOoIHVuIHRva2VuIG8gc2Ugw6ggdW4gdGVzdG9cclxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVRleHQgVGVzdG8gYmFzZSBjaGUgdmVycsOgIHJpY2hpZXN0byBxdWFuZG8gdmVycsOgIGNlcmNhdGEgbGEgbG9jYWxpenphemlvbmVcclxuICAgKiBAcGFyYW0ge1NwZWNpYWxpemVkTG9jYWxpemF0aW9uW119IHRyYW5zbGF0aW9ucyBMaXN0YSBkaSB0cmFkdXppb25pIGluIGJhc2UgYWwgdGVzdG8gYmFzZVxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB0b2tlbjogYm9vbGVhbiwgcHVibGljIGJhc2VUZXh0OiBzdHJpbmcsIHB1YmxpYyB0cmFuc2xhdGlvbnM6IFNwZWNpYWxpemVkTG9jYWxpemF0aW9uW10peyB9XHJcbn0iXX0=
@@ -1,26 +1,26 @@
1
- import { LocaleObject } from "./LocaleObject";
2
- /** Classe che gestisce le definizioni dei locali disponibili */
3
- export class LocaleDefinitions {
4
- /** Cache per ottimizzare la chiamata **getByAlias** */
5
- static { this.LocaleCache = {}; }
6
- /** @ignore Costruttore */
7
- constructor() { }
8
- /** Lista dei locali disponibili, definiti anche con i vari alias */
9
- static { this.AvailableLocales = [
10
- new LocaleObject('it-IT', 'Italiano', ['it', 'it-IT'], "it"),
11
- new LocaleObject('en-US', 'English', ['en', 'en-US'], "en")
12
- ]; }
13
- /**
14
- * In base a un alias restituisce il locale rappresentato
15
- *
16
- * @param {string} alias Alias in base al quale raccogliere il Locale
17
- *
18
- * @returns {LocaleObject} Locale richiesto dall'alias
19
- */
20
- static getByAlias(alias) {
21
- if (!this.LocaleCache[alias])
22
- this.LocaleCache[alias] = this.AvailableLocales.find(t => !!t.aliases.find(a => a == alias));
23
- return this.LocaleCache[alias];
24
- }
25
- }
1
+ import { LocaleObject } from "./LocaleObject";
2
+ /** Classe che gestisce le definizioni dei locali disponibili */
3
+ export class LocaleDefinitions {
4
+ /** Cache per ottimizzare la chiamata **getByAlias** */
5
+ static { this.LocaleCache = {}; }
6
+ /** @ignore Costruttore */
7
+ constructor() { }
8
+ /** Lista dei locali disponibili, definiti anche con i vari alias */
9
+ static { this.AvailableLocales = [
10
+ new LocaleObject('it-IT', 'Italiano', ['it', 'it-IT'], "it"),
11
+ new LocaleObject('en-US', 'English', ['en', 'en-US'], "en")
12
+ ]; }
13
+ /**
14
+ * In base a un alias restituisce il locale rappresentato
15
+ *
16
+ * @param {string} alias Alias in base al quale raccogliere il Locale
17
+ *
18
+ * @returns {LocaleObject} Locale richiesto dall'alias
19
+ */
20
+ static getByAlias(alias) {
21
+ if (!this.LocaleCache[alias])
22
+ this.LocaleCache[alias] = this.AvailableLocales.find(t => !!t.aliases.find(a => a == alias));
23
+ return this.LocaleCache[alias];
24
+ }
25
+ }
26
26
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxlRGVmaW5pdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvbW9kZWxzL0xvY2FsZURlZmluaXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU5QyxnRUFBZ0U7QUFDaEUsTUFBTSxPQUFPLGlCQUFpQjtJQUUxQix1REFBdUQ7YUFDekMsZ0JBQVcsR0FBc0MsRUFBRSxDQUFDO0lBRWxFLDBCQUEwQjtJQUMxQixnQkFBZ0IsQ0FBQztJQUVqQixvRUFBb0U7YUFDdEQscUJBQWdCLEdBQW1CO1FBQzdDLElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDO1FBQzVELElBQUksWUFBWSxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDO0tBQzlELENBQUM7SUFFRjs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWE7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWpHLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTG9jYWxlT2JqZWN0IH0gZnJvbSBcIi4vTG9jYWxlT2JqZWN0XCI7XHJcblxyXG4vKiogQ2xhc3NlIGNoZSBnZXN0aXNjZSBsZSBkZWZpbml6aW9uaSBkZWkgbG9jYWxpIGRpc3BvbmliaWxpICovXHJcbmV4cG9ydCBjbGFzcyBMb2NhbGVEZWZpbml0aW9ucyB7XHJcblxyXG4gICAgLyoqIENhY2hlIHBlciBvdHRpbWl6emFyZSBsYSBjaGlhbWF0YSAqKmdldEJ5QWxpYXMqKiAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBMb2NhbGVDYWNoZTogeyBbYWxpYXM6IHN0cmluZ106IExvY2FsZU9iamVjdCB9ID0ge307XHJcblxyXG4gICAgLyoqIEBpZ25vcmUgQ29zdHJ1dHRvcmUgKi9cclxuICAgIGNvbnN0cnVjdG9yKCkgeyB9XHJcblxyXG4gICAgLyoqIExpc3RhIGRlaSBsb2NhbGkgZGlzcG9uaWJpbGksIGRlZmluaXRpIGFuY2hlIGNvbiBpIHZhcmkgYWxpYXMgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgQXZhaWxhYmxlTG9jYWxlczogTG9jYWxlT2JqZWN0W10gPSBbXHJcbiAgICAgICAgbmV3IExvY2FsZU9iamVjdCgnaXQtSVQnLCAnSXRhbGlhbm8nLCBbJ2l0JywgJ2l0LUlUJ10sIFwiaXRcIiksXHJcbiAgICAgICAgbmV3IExvY2FsZU9iamVjdCgnZW4tVVMnLCAnRW5nbGlzaCcsIFsnZW4nLCAnZW4tVVMnXSwgXCJlblwiKVxyXG4gICAgXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEluIGJhc2UgYSB1biBhbGlhcyByZXN0aXR1aXNjZSBpbCBsb2NhbGUgcmFwcHJlc2VudGF0b1xyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gYWxpYXMgQWxpYXMgaW4gYmFzZSBhbCBxdWFsZSByYWNjb2dsaWVyZSBpbCBMb2NhbGVcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge0xvY2FsZU9iamVjdH0gTG9jYWxlIHJpY2hpZXN0byBkYWxsJ2FsaWFzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QnlBbGlhcyhhbGlhczogc3RyaW5nKTogTG9jYWxlT2JqZWN0IHtcclxuICAgICAgICBpZiAoIXRoaXMuTG9jYWxlQ2FjaGVbYWxpYXNdKVxyXG4gICAgICAgICAgICB0aGlzLkxvY2FsZUNhY2hlW2FsaWFzXSA9IHRoaXMuQXZhaWxhYmxlTG9jYWxlcy5maW5kKHQgPT4gISF0LmFsaWFzZXMuZmluZChhID0+IGEgPT0gYWxpYXMpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuTG9jYWxlQ2FjaGVbYWxpYXNdO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,20 +1,20 @@
1
- /**
2
- * Classe che rappresenta un locale (Es. 'Italiano') con i propri alias (Es. 'it' oppure 'it-IT')
3
- */
4
- export class LocaleObject {
5
- /**
6
- * Costruttore
7
- *
8
- * @param {string} id Codice locale
9
- * @param {string} description Descrizione locale
10
- * @param {string[]} aliases Alias con cui quel locale è conosciuto
11
- * @param {string} smallVersion Versione standard "small" del locale. Es. "it-IT" -> "it"
12
- */
13
- constructor(id, description, aliases, smallVersion) {
14
- this.id = id;
15
- this.description = description;
16
- this.aliases = aliases;
17
- this.smallVersion = smallVersion;
18
- }
19
- }
1
+ /**
2
+ * Classe che rappresenta un locale (Es. 'Italiano') con i propri alias (Es. 'it' oppure 'it-IT')
3
+ */
4
+ export class LocaleObject {
5
+ /**
6
+ * Costruttore
7
+ *
8
+ * @param {string} id Codice locale
9
+ * @param {string} description Descrizione locale
10
+ * @param {string[]} aliases Alias con cui quel locale è conosciuto
11
+ * @param {string} smallVersion Versione standard "small" del locale. Es. "it-IT" -> "it"
12
+ */
13
+ constructor(id, description, aliases, smallVersion) {
14
+ this.id = id;
15
+ this.description = description;
16
+ this.aliases = aliases;
17
+ this.smallVersion = smallVersion;
18
+ }
19
+ }
20
20
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxlT2JqZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL21vZGVscy9Mb2NhbGVPYmplY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0E7O0dBRUc7QUFDSCxNQUFNLE9BQU8sWUFBWTtJQUVyQjs7Ozs7OztPQU9HO0lBQ0gsWUFBbUIsRUFBVSxFQUFTLFdBQW1CLEVBQVMsT0FBaUIsRUFBUyxZQUFvQjtRQUE3RixPQUFFLEdBQUYsRUFBRSxDQUFRO1FBQVMsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBUyxZQUFPLEdBQVAsT0FBTyxDQUFVO1FBQVMsaUJBQVksR0FBWixZQUFZLENBQVE7SUFBSSxDQUFDO0NBQ3hIIiwic291cmNlc0NvbnRlbnQiOlsiXHJcbi8qKlxyXG4gKiBDbGFzc2UgY2hlIHJhcHByZXNlbnRhIHVuIGxvY2FsZSAoRXMuICdJdGFsaWFubycpIGNvbiBpIHByb3ByaSBhbGlhcyAoRXMuICdpdCcgb3BwdXJlICdpdC1JVCcpXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgTG9jYWxlT2JqZWN0IHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvc3RydXR0b3JlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBDb2RpY2UgbG9jYWxlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzY3JpcHRpb24gRGVzY3JpemlvbmUgbG9jYWxlXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBhbGlhc2VzIEFsaWFzIGNvbiBjdWkgcXVlbCBsb2NhbGUgw6ggY29ub3NjaXV0b1xyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHNtYWxsVmVyc2lvbiBWZXJzaW9uZSBzdGFuZGFyZCBcInNtYWxsXCIgZGVsIGxvY2FsZS4gRXMuIFwiaXQtSVRcIiAtPiBcIml0XCJcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHVibGljIGlkOiBzdHJpbmcsIHB1YmxpYyBkZXNjcmlwdGlvbjogc3RyaW5nLCBwdWJsaWMgYWxpYXNlczogc3RyaW5nW10sIHB1YmxpYyBzbWFsbFZlcnNpb246IHN0cmluZykgeyB9XHJcbn1cclxuIl19