@esfaenza/localizations 15.2.0 → 15.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/core/localization.base.mjs +80 -160
- package/esm2020/lib/core/localization.persistor.mjs +103 -0
- package/esm2020/lib/locale-persistor/LocalStorageCachePersistor.mjs +25 -0
- package/esm2020/lib/locale-persistor/LocalePersistor.mjs +8 -0
- package/esm2020/lib/localizations.module.mjs +5 -2
- package/esm2020/lib/localizations.service.mjs +41 -37
- package/esm2020/lib/models/classes/BaseLocalizationTokens.mjs +14 -0
- package/esm2020/lib/models/classes/LocalizationModuleConfig.mjs +1 -1
- package/esm2020/public-api.mjs +3 -1
- package/fesm2015/esfaenza-localizations.mjs +198 -130
- package/fesm2015/esfaenza-localizations.mjs.map +1 -1
- package/fesm2020/esfaenza-localizations.mjs +193 -128
- package/fesm2020/esfaenza-localizations.mjs.map +1 -1
- package/lib/core/localization.base.d.ts +12 -59
- package/lib/core/localization.persistor.d.ts +56 -0
- package/lib/locale-persistor/LocalStorageCachePersistor.d.ts +11 -0
- package/lib/locale-persistor/LocalePersistor.d.ts +18 -0
- package/lib/localizations.service.d.ts +10 -17
- package/lib/models/classes/BaseLocalizationTokens.d.ts +12 -0
- package/lib/models/classes/LocalizationModuleConfig.d.ts +7 -2
- package/package.json +2 -2
- package/public-api.d.ts +2 -0
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import { Injectable } from "@angular/core";
|
|
2
|
-
import {
|
|
1
|
+
import { Inject, Injectable } from "@angular/core";
|
|
2
|
+
import { LocalizationPersistor } from "./localization.persistor";
|
|
3
|
+
import { BaseLocalizationTokens } from "../models/classes/BaseLocalizationTokens";
|
|
4
|
+
import { take } from "rxjs/operators";
|
|
5
|
+
import { ReplaySubject } from "rxjs";
|
|
6
|
+
import { LOC_LOCALE } from "../tokens";
|
|
3
7
|
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "../locale-persistor/LocalePersistor";
|
|
4
9
|
/**
|
|
5
10
|
* Classe singleton che contiene le traduzioni di base (per evitare di ripeterle in oggi classe di traduzione) e le funzioni base per
|
|
6
11
|
* inserire e leggere traduzioni in/da una cache
|
|
@@ -9,169 +14,84 @@ export class BaseLocalization {
|
|
|
9
14
|
/**
|
|
10
15
|
* Costruttore. Da qui utilizzando il metodo statico **BaseLocalization.set** si va a popolare la cache delle traduzioni **BaseTranslations**
|
|
11
16
|
*/
|
|
12
|
-
constructor() {
|
|
17
|
+
constructor(LocalePersistor, defaultLocale) {
|
|
18
|
+
this.LocalePersistor = LocalePersistor;
|
|
13
19
|
/**
|
|
14
20
|
* Cache di tutte le localizzazioni di base
|
|
15
21
|
*/
|
|
16
|
-
this.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
22
|
+
this.LocCache = {};
|
|
23
|
+
/**
|
|
24
|
+
* Locale di riferimento per tutte le traduzioni
|
|
25
|
+
*/
|
|
26
|
+
this.Locale = new ReplaySubject(1);
|
|
27
|
+
// Recupero il locale alla partenza del BaseLocalization in modo, spero di dare tempo all'applicazione di tirarlo su
|
|
28
|
+
this.LocalePersistor.recover().pipe(take(1)).subscribe(async (l) => {
|
|
29
|
+
if (!l) {
|
|
30
|
+
l = defaultLocale;
|
|
31
|
+
this.LocalePersistor.persist(defaultLocale);
|
|
32
|
+
}
|
|
33
|
+
this.Locale.next(l);
|
|
34
|
+
});
|
|
35
|
+
this.Persistor = new LocalizationPersistor(this.LocCache);
|
|
36
|
+
this.Persistor.set("en->it", "Remove", ["Elimina"]);
|
|
37
|
+
this.Persistor.set("en->it", "Paging", ["Paginazione"]);
|
|
38
|
+
this.Persistor.set("en->it", "Yes", ["Si"]);
|
|
39
|
+
this.Persistor.set("en->it", "No", ["No"]);
|
|
40
|
+
this.Persistor.set("en->it", "YES", ["SI'"]);
|
|
41
|
+
this.Persistor.set("en->it", "NO", ["NO"]);
|
|
42
|
+
this.Persistor.set("en->it", "Found objects", ["Risultati trovati"]);
|
|
43
|
+
this.Persistor.set("en->it", "Loading data...", ["Carico i dati..."]);
|
|
44
|
+
this.Persistor.set("en->it", "Error during save operations", ["Errori durante il salvataggio"]);
|
|
45
|
+
this.Persistor.set("en->it", "Error", ["Errore"]);
|
|
46
|
+
this.Persistor.set("en->it", "Warning", ["Avviso"]);
|
|
47
|
+
this.Persistor.set("en->it", "Information", ["Informazione"]);
|
|
48
|
+
this.Persistor.set("en->it", "Save", ["Salva"]);
|
|
49
|
+
this.Persistor.set("en->it", "Back", ["Indietro"]);
|
|
50
|
+
this.Persistor.set("en->it", "From", ["Da"]);
|
|
51
|
+
this.Persistor.set("en->it", "To", ["A"]);
|
|
52
|
+
this.Persistor.set("en->it", "View Chart", ["Vedi Grafico"]);
|
|
53
|
+
this.Persistor.set("en->it", "View Table", ["Vedi Tabella"]);
|
|
54
|
+
this.Persistor.set("en->it", "Notes", ["Note"]);
|
|
55
|
+
this.Persistor.set("en->it", "Edit Notes", ["Modifica Note"]);
|
|
56
|
+
this.Persistor.set("en->it", "Cancel", ["Annulla"]);
|
|
57
|
+
this.Persistor.set("en->it", "Confirm", ["Conferma"]);
|
|
58
|
+
this.Persistor.set("en->it", "View", ["Visualizza"]);
|
|
59
|
+
this.Persistor.set("en->it", "Close", ["Chiudi"]);
|
|
60
|
+
this.Persistor.set("en->it", "Select", ["Seleziona"]);
|
|
61
|
+
this.Persistor.set("en->it", "Meter Reading registered successfully", ["Lettura registrata correttamente"]);
|
|
62
|
+
this.Persistor.set("en->it", "Validation errors during save operations", ["Errori di validazione durante il salvataggio"]);
|
|
63
|
+
this.Persistor.set("en->it", "Can't register reading", ["Impossibile registrare la lettura"]);
|
|
64
|
+
this.Persistor.set("en->it", "Electricity", ["Elettricita"]);
|
|
65
|
+
this.Persistor.set("en->it", "Gas", ["Gas"]);
|
|
66
|
+
this.Persistor.set("en->it", "Water", ["Acqua"]);
|
|
67
|
+
this.Persistor.set("en->it", "Delete", ["Elimina"]);
|
|
68
|
+
this.Persistor.set("en->it", "This operation cannot be reverted", ["Questa operazione non puo' essere annullata"]);
|
|
69
|
+
this.Persistor.set("en->it", "Hide", ["Nascondi"]);
|
|
54
70
|
// Helper validazione
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
71
|
+
this.Persistor.set("en->it", "Required field", ["Campo richiesto"]);
|
|
72
|
+
this.Persistor.set("en->it", "Wrong field format", ["Formato campo errato"]);
|
|
73
|
+
this.Persistor.set("en->it", "Wrong field format or field missing", ["Formato campo errato o campo mancante"]);
|
|
74
|
+
this.Persistor.set("en->it", "You don't have the required permissions to view this page. The navigation has been blocked", ["Non si hanno privilegi a sufficienza per accedere a questa pagina. La navigazione e' stata bloccata"]);
|
|
59
75
|
// Informazioni sulle date
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Imposta la localizzazione di un token all'interno della cache scelta
|
|
73
|
-
*
|
|
74
|
-
* @param {{ [id: string]: ItemLocalization }} locCache Cache all'interno della quale inserire l'informazione del token con le localizzazioni
|
|
75
|
-
* @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
|
|
76
|
-
* Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
|
|
77
|
-
* è 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"
|
|
78
|
-
* @param {string} token Nome del token
|
|
79
|
-
* @param {string} left Valore del token per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
|
|
80
|
-
* @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
|
|
81
|
-
*/
|
|
82
|
-
static setToken(locCache, direction, token, left, right) {
|
|
83
|
-
let parsingRegex = /([a-zA-Z]+)[\s]*->[\s]*([a-zA-Z,\s]+)+/g;
|
|
84
|
-
var parsingRes = parsingRegex.exec(direction);
|
|
85
|
-
let from = parsingRes[1];
|
|
86
|
-
let to = parsingRes[2].replace(/\s/g, '').split(',');
|
|
87
|
-
let localeFrom = LocaleDefinitions.getByAlias(from);
|
|
88
|
-
BaseLocalization._set(locCache, token, localeFrom.id, left, true);
|
|
89
|
-
to.forEach((t, index) => {
|
|
90
|
-
let localeTo = LocaleDefinitions.getByAlias(t);
|
|
91
|
-
BaseLocalization._set(locCache, token, localeTo.id, right[index], true);
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* Imposta la localizzazione di una frase all'interno della cache scelta
|
|
96
|
-
*
|
|
97
|
-
* @param {{ [id: string]: ItemLocalization }} locCache Cache all'interno della quale inserire l'informazione della frase con le localizzazioni
|
|
98
|
-
* @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
|
|
99
|
-
* Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
|
|
100
|
-
* è 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"
|
|
101
|
-
* @param {string} left Valore della frase per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
|
|
102
|
-
* @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
|
|
103
|
-
*/
|
|
104
|
-
static set(locCache, direction, left, right) {
|
|
105
|
-
let parsingRegex = /([a-zA-Z]+)[\s]*->[\s]*([a-zA-Z,\s]+)+/g;
|
|
106
|
-
var parsingRes = parsingRegex.exec(direction);
|
|
107
|
-
let from = parsingRes[1];
|
|
108
|
-
let to = parsingRes[2].replace(/\s/g, '').split(',');
|
|
109
|
-
let localeFrom = LocaleDefinitions.getByAlias(from);
|
|
110
|
-
BaseLocalization._set(locCache, left, localeFrom.id, left);
|
|
111
|
-
to.forEach((t, index) => {
|
|
112
|
-
let localeTo = LocaleDefinitions.getByAlias(t);
|
|
113
|
-
BaseLocalization._set(locCache, left, localeTo.id, right[index]);
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Imposta all'interno della cache specificata un'unica traduzione partendo da un testo di base
|
|
118
|
-
*
|
|
119
|
-
* @param {{ [id: string]: ItemLocalization }} locCache Cache all'interno della quale inserire l'informazione del testo con le localizzazioni
|
|
120
|
-
* @param {string} text Testo da tradurre
|
|
121
|
-
* @param {string} culture Lingua per cui inserire la traduzione
|
|
122
|
-
* @param {string} translation Traduzione del **text** nella lingua specificata da **culture**
|
|
123
|
-
* @param {boolean} token Indica se il **text** è un token o è una frase normale
|
|
124
|
-
*/
|
|
125
|
-
static _set(locCache, text, culture, translation, token) {
|
|
126
|
-
let item = BaseLocalization.findByText(locCache, text, token);
|
|
127
|
-
if (!item) {
|
|
128
|
-
locCache[text] = new ItemLocalization(token, text, [new SpecializedLocalization(culture, translation)]);
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
var trs = BaseLocalization.translationByCulture(item, culture);
|
|
132
|
-
if (trs) {
|
|
133
|
-
console.warn("Localization already loaded for sentence '" + text + "' and culture " + culture);
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
item.translations.push(new SpecializedLocalization(culture, translation));
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Partendo da una cache di localizzazione, dato un testo che può essere o meno un token, cerca quell'elemento all'interno della cache
|
|
140
|
-
*
|
|
141
|
-
* @param {{ [id: string]: ItemLocalization }} locCache Cache all'interno del quale cercare il **text**
|
|
142
|
-
* @param {string} text Testo da cercare nella **locCache**
|
|
143
|
-
* @param {boolean} allowtokens Indica se l'elemento cercato può essere un token o se dev'essere per forza una frase (per evitare rari
|
|
144
|
-
* casi di collisione in cui magari un token è uguale a una frase tradotta)
|
|
145
|
-
*
|
|
146
|
-
* @returns {ItemLocalization} Informazioni di localizzazione per il **text** cercato
|
|
147
|
-
*/
|
|
148
|
-
static findByText(locCache, text, allowtokens) {
|
|
149
|
-
let possibleItem = locCache[text];
|
|
150
|
-
if (!possibleItem)
|
|
151
|
-
return null;
|
|
152
|
-
var item = allowtokens || !possibleItem.token ? possibleItem : null;
|
|
153
|
-
return item;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Date le informazioni di localizzazione per un testo cerca e restituisce la traduzione per una lingua specifica
|
|
157
|
-
*
|
|
158
|
-
* @param {ItemLocalization} Informazioni di localizzazione
|
|
159
|
-
* @param {string} culture Lingua della traduzione richiesta
|
|
160
|
-
*
|
|
161
|
-
* @returns {SpecializedLocalization} Informazioni di localizzazione specifiche della lingua richiesta
|
|
162
|
-
*/
|
|
163
|
-
static translationByCulture(item, culture) {
|
|
164
|
-
for (let i = 0; i < item.translations.length; i++) {
|
|
165
|
-
let trl = item.translations[i];
|
|
166
|
-
if (trl.culture == culture)
|
|
167
|
-
return trl;
|
|
168
|
-
}
|
|
169
|
-
return null;
|
|
76
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getDateMonthPosition, "0", ["1"]);
|
|
77
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getDisplayDateMonthPosition, "1", ["1"]);
|
|
78
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getLocale, "en-US", ["it-IT"]);
|
|
79
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getSmallDateFormat, "MM/DD/YYYY", ["DD/MM/YYYY"]);
|
|
80
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getDefaultDateFormat, "MM/DD/YYYY", ["MM/DD/YYYY"]);
|
|
81
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getSmallDateDisplayFormat, "DD/MM/YYYY", ["DD/MM/YYYY"]);
|
|
82
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getFullDateFormat, "MM/DD/YYYY HH:mm:ss", ["DD/MM/YYYY HH:mm:ss"]);
|
|
83
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getFullDateDisplayFormat, "DD/MM/YYYY HH:mm:ss", ["DD/MM/YYYY HH:mm:ss"]);
|
|
84
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getFullDateFormatNoSeconds, "MM/DD/YYYY HH:mm", ["DD/MM/YYYY HH:mm"]);
|
|
85
|
+
this.Persistor.setToken("en->it", BaseLocalizationTokens.getFullDateDisplayFormatNoSeconds, "DD/MM/YYYY HH:mm", ["DD/MM/YYYY HH:mm"]);
|
|
170
86
|
}
|
|
171
87
|
}
|
|
172
|
-
BaseLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseLocalization, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
173
|
-
BaseLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseLocalization });
|
|
88
|
+
BaseLocalization.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseLocalization, deps: [{ token: i1.LocalePersistor }, { token: LOC_LOCALE }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
89
|
+
BaseLocalization.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseLocalization, providedIn: 'root' });
|
|
174
90
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: BaseLocalization, decorators: [{
|
|
175
|
-
type: Injectable
|
|
176
|
-
|
|
177
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLmJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24uYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFdBQVcsQ0FBQzs7QUFFekY7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQU96Qjs7T0FFRztJQUNIO1FBUkE7O1dBRUc7UUFDSSxxQkFBZ0IsR0FBdUMsRUFBRSxDQUFDO1FBTTdELG1GQUFtRjtRQUNuRixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0IsSUFBSSxFQUFFLEdBQUcsZ0JBQWdCLENBQUM7UUFFMUIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDNUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDaEQsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDcEMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDbkMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsUUFB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QkFBZ0I7aUhBQWhCLGdCQUFnQjsyRkFBaEIsZ0JBQWdCO2tCQUQ1QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEl0ZW1Mb2NhbGl6YXRpb24sIExvY2FsZURlZmluaXRpb25zLCBTcGVjaWFsaXplZExvY2FsaXphdGlvbiB9IGZyb20gXCIuLi9tb2RlbHNcIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2Ugc2luZ2xldG9uIGNoZSBjb250aWVuZSBsZSB0cmFkdXppb25pIGRpIGJhc2UgKHBlciBldml0YXJlIGRpIHJpcGV0ZXJsZSBpbiBvZ2dpIGNsYXNzZSBkaSB0cmFkdXppb25lKSBlIGxlIGZ1bnppb25pIGJhc2UgcGVyIFxyXG4gKiBpbnNlcmlyZSBlIGxlZ2dlcmUgdHJhZHV6aW9uaSBpbi9kYSB1bmEgY2FjaGVcclxuICovXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEJhc2VMb2NhbGl6YXRpb24ge1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ2FjaGUgZGkgdHV0dGUgbGUgbG9jYWxpenphemlvbmkgZGkgYmFzZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgQmFzZVRyYW5zbGF0aW9uczogeyBbaWQ6IHN0cmluZ106IEl0ZW1Mb2NhbGl6YXRpb24gfSA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmUuIERhIHF1aSB1dGlsaXp6YW5kbyBpbCBtZXRvZG8gc3RhdGljbyAqKkJhc2VMb2NhbGl6YXRpb24uc2V0Kiogc2kgdmEgYSBwb3BvbGFyZSBsYSBjYWNoZSBkZWxsZSB0cmFkdXppb25pICoqQmFzZVRyYW5zbGF0aW9ucyoqXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgICAgIC8vIE9kaW8gc3ByZWNhcmUgY2FyYXR0ZXJpLi4uIHNvcHJhdHR1dHRvIHF1YW5kbyByaXNjaGlvIGNoZSBub24gdmVuZ2FubyBtaW5pZmljYXRpXHJcbiAgICAgICAgbGV0IGJ0ID0gdGhpcy5CYXNlVHJhbnNsYXRpb25zO1xyXG4gICAgICAgIGxldCBibCA9IEJhc2VMb2NhbGl6YXRpb247XHJcblxyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJSZW1vdmVcIiwgW1wiRWxpbWluYVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIlBhZ2luZ1wiLCBbXCJQYWdpbmF6aW9uZVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIlllc1wiLCBbXCJTaVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIk5vXCIsIFtcIk5vXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiWUVTXCIsIFtcIlNJJ1wiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIk5PXCIsIFtcIk5PXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiRm91bmQgb2JqZWN0c1wiLCBbXCJSaXN1bHRhdGkgdHJvdmF0aVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIkxvYWRpbmcgZGF0YS4uLlwiLCBbXCJDYXJpY28gaSBkYXRpLi4uXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiRXJyb3IgZHVyaW5nIHNhdmUgb3BlcmF0aW9uc1wiLCBbXCJFcnJvcmkgZHVyYW50ZSBpbCBzYWx2YXRhZ2dpb1wiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIkVycm9yXCIsIFtcIkVycm9yZVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIldhcm5pbmdcIiwgW1wiQXZ2aXNvXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiSW5mb3JtYXRpb25cIiwgW1wiSW5mb3JtYXppb25lXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiU2F2ZVwiLCBbXCJTYWx2YVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIkJhY2tcIiwgW1wiSW5kaWV0cm9cIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJGcm9tXCIsIFtcIkRhXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiVG9cIiwgW1wiQVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIlZpZXcgQ2hhcnRcIiwgW1wiVmVkaSBHcmFmaWNvXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiVmlldyBUYWJsZVwiLCBbXCJWZWRpIFRhYmVsbGFcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJOb3Rlc1wiLCBbXCJOb3RlXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiRWRpdCBOb3Rlc1wiLCBbXCJNb2RpZmljYSBOb3RlXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiQ2FuY2VsXCIsIFtcIkFubnVsbGFcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJDb25maXJtXCIsIFtcIkNvbmZlcm1hXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiVmlld1wiLCBbXCJWaXN1YWxpenphXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiQ2xvc2VcIiwgW1wiQ2hpdWRpXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiU2VsZWN0XCIsIFtcIlNlbGV6aW9uYVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIk1ldGVyIFJlYWRpbmcgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHlcIiwgW1wiTGV0dHVyYSByZWdpc3RyYXRhIGNvcnJldHRhbWVudGVcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJWYWxpZGF0aW9uIGVycm9ycyBkdXJpbmcgc2F2ZSBvcGVyYXRpb25zXCIsIFtcIkVycm9yaSBkaSB2YWxpZGF6aW9uZSBkdXJhbnRlIGlsIHNhbHZhdGFnZ2lvXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiQ2FuJ3QgcmVnaXN0ZXIgcmVhZGluZ1wiLCBbXCJJbXBvc3NpYmlsZSByZWdpc3RyYXJlIGxhIGxldHR1cmFcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJFbGVjdHJpY2l0eVwiLCBbXCJFbGV0dHJpY2l0YVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIkdhc1wiLCBbXCJHYXNcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJXYXRlclwiLCBbXCJBY3F1YVwiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIkRlbGV0ZVwiLCBbXCJFbGltaW5hXCJdKTtcclxuICAgICAgICBibC5zZXQoYnQsIFwiZW4tPml0XCIsIFwiVGhpcyBvcGVyYXRpb24gY2Fubm90IGJlIHJldmVydGVkXCIsIFtcIlF1ZXN0YSBvcGVyYXppb25lIG5vbiBwdW8nIGVzc2VyZSBhbm51bGxhdGFcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJIaWRlXCIsIFtcIk5hc2NvbmRpXCJdKTtcclxuXHJcbiAgICAgICAgLy8gSGVscGVyIHZhbGlkYXppb25lXHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIlJlcXVpcmVkIGZpZWxkXCIsIFtcIkNhbXBvIHJpY2hpZXN0b1wiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIldyb25nIGZpZWxkIGZvcm1hdFwiLCBbXCJGb3JtYXRvIGNhbXBvIGVycmF0b1wiXSk7XHJcbiAgICAgICAgYmwuc2V0KGJ0LCBcImVuLT5pdFwiLCBcIldyb25nIGZpZWxkIGZvcm1hdCBvciBmaWVsZCBtaXNzaW5nXCIsIFtcIkZvcm1hdG8gY2FtcG8gZXJyYXRvIG8gY2FtcG8gbWFuY2FudGVcIl0pO1xyXG4gICAgICAgIGJsLnNldChidCwgXCJlbi0+aXRcIiwgXCJZb3UgZG9uJ3QgaGF2ZSB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdmlldyB0aGlzIHBhZ2UuIFRoZSBuYXZpZ2F0aW9uIGhhcyBiZWVuIGJsb2NrZWRcIiwgW1wiTm9uIHNpIGhhbm5vIHByaXZpbGVnaSBhIHN1ZmZpY2llbnphIHBlciBhY2NlZGVyZSBhIHF1ZXN0YSBwYWdpbmEuIExhIG5hdmlnYXppb25lIGUnIHN0YXRhIGJsb2NjYXRhXCJdKTtcclxuXHJcbiAgICAgICAgLy8gSW5mb3JtYXppb25pIHN1bGxlIGRhdGVcclxuICAgICAgICBibC5zZXRUb2tlbihidCwgXCJlbi0+aXRcIiwgXCJnZXREYXRlTW9udGhQb3NpdGlvblwiLCBcIjBcIiwgW1wiMVwiXSk7XHJcbiAgICAgICAgYmwuc2V0VG9rZW4oYnQsIFwiZW4tPml0XCIsIFwiZ2V0RGlzcGxheURhdGVNb250aFBvc2l0aW9uXCIsIFwiMVwiLCBbXCIxXCJdKTtcclxuICAgICAgICBibC5zZXRUb2tlbihidCwgXCJlbi0+aXRcIiwgXCJnZXRMb2NhbGVcIiwgXCJlbi1VU1wiLCBbXCJpdC1JVFwiXSk7XHJcbiAgICAgICAgYmwuc2V0VG9rZW4oYnQsIFwiZW4tPml0XCIsIFwiZ2V0U21hbGxEYXRlRm9ybWF0XCIsIFwiTU0vREQvWVlZWVwiLCBbXCJERC9NTS9ZWVlZXCJdKTtcclxuICAgICAgICBibC5zZXRUb2tlbihidCwgXCJlbi0+aXRcIiwgXCJnZXREZWZhdWx0RGF0ZUZvcm1hdFwiLCBcIk1NL0REL1lZWVlcIiwgW1wiTU0vREQvWVlZWVwiXSk7XHJcbiAgICAgICAgYmwuc2V0VG9rZW4oYnQsIFwiZW4tPml0XCIsIFwiZ2V0U21hbGxEYXRlRGlzcGxheUZvcm1hdFwiLCBcIkREL01NL1lZWVlcIiwgW1wiREQvTU0vWVlZWVwiXSk7XHJcbiAgICAgICAgYmwuc2V0VG9rZW4oYnQsIFwiZW4tPml0XCIsIFwiZ2V0RnVsbERhdGVGb3JtYXRcIiwgXCJNTS9ERC9ZWVlZIEhIOm1tOnNzXCIsIFtcIkREL01NL1lZWVkgSEg6bW06c3NcIl0pO1xyXG4gICAgICAgIGJsLnNldFRva2VuKGJ0LCBcImVuLT5pdFwiLCBcImdldEZ1bGxEYXRlRGlzcGxheUZvcm1hdFwiLCBcIkREL01NL1lZWVkgSEg6bW06c3NcIiwgW1wiREQvTU0vWVlZWSBISDptbTpzc1wiXSk7XHJcbiAgICAgICAgYmwuc2V0VG9rZW4oYnQsIFwiZW4tPml0XCIsIFwiZ2V0RnVsbERhdGVGb3JtYXROb1NlY29uZHNcIiwgXCJNTS9ERC9ZWVlZIEhIOm1tXCIsIFtcIkREL01NL1lZWVkgSEg6bW1cIl0pO1xyXG4gICAgICAgIGJsLnNldFRva2VuKGJ0LCBcImVuLT5pdFwiLCBcImdldEZ1bGxEYXRlRGlzcGxheUZvcm1hdE5vU2Vjb25kc1wiLCBcIkREL01NL1lZWVkgSEg6bW1cIiwgW1wiREQvTU0vWVlZWSBISDptbVwiXSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGxhIGxvY2FsaXp6YXppb25lIGRpIHVuIHRva2VuIGFsbCdpbnRlcm5vIGRlbGxhIGNhY2hlIHNjZWx0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3sgW2lkOiBzdHJpbmddOiBJdGVtTG9jYWxpemF0aW9uIH19IGxvY0NhY2hlIENhY2hlIGFsbCdpbnRlcm5vIGRlbGxhIHF1YWxlIGluc2VyaXJlIGwnaW5mb3JtYXppb25lIGRlbCB0b2tlbiBjb24gbGUgbG9jYWxpenphemlvbmlcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBkaXJlY3Rpb24gRGlyZXppb25lIGRlbGxhIHRyYWR1emlvbmUsIHJhcHByZXNlbnRhIGxhIGxpbmd1YSBiYXNlIGluIGN1aSBhc3BldHRhcnNpIGlsIHRlc3RvIGUgbGUgdmFyaWUgbGluZ3VlIGluIGN1aSB2aWVuZSB0cmFkb3R0YS5cclxuICAgICAqIEFkIGVzZW1waW8sIFwiZW4tPml0XCIgaW5kaWNhIGNoZSBpbCBwYXJhbWV0cm8gKipsZWZ0Kiogw6ggdmFsaWRvIHBlciBsZSBsb2NhbGl6emF6aW9uaSBpbiBpbmdsZXNlLCBtZW50cmUgbmVsbCdlbGVtZW50byAwIGRlbCBwYXJhbWV0cm8gKipyaWdodCoqIFxyXG4gICAgICogw6ggcHJlc2VudGUgbCd1bmljYSB0cmFkdXppb25lIGluIGl0YWxpYW5vLCBwZXIgZGVmaW5pcmUgcGnDuSB0cmFkdXppb25pIHN1bCBsYXRvIGRlc3RybyBkZWxsYSBmcmVjY2lhIGJpc29nbmEgY29uY2F0ZW5hcmxlIGNvbiBsYSB2aXJnb2xhLCBhZCBlc2VtcGlvIFwiZW4tPml0LGpwLGVjY1wiXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdG9rZW4gTm9tZSBkZWwgdG9rZW5cclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsZWZ0IFZhbG9yZSBkZWwgdG9rZW4gcGVyIGxhIGxpbmd1YSBzcGVjaWZpY2F0YSBuZWwgbGF0byBpbW1lZGlhdGFtZW50ZSBzaW5pc3RybyBhbGxhIGZyZWNjaWEgZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gcmlnaHQgQXJyYXkgY29uIGkgdmFsb3JpIGZhY2VudGkgcmlmZXJpbWVudG8gYWxsJ04tZXNpbWEgbGluZ3VhIGRlbCBsYXRvIGRlc3RybyBkZWwgcGFyYW1ldHJvICoqZGlyZWN0aW9uKipcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBzZXRUb2tlbihsb2NDYWNoZTogeyBbaWQ6IHN0cmluZ106IEl0ZW1Mb2NhbGl6YXRpb24gfSwgZGlyZWN0aW9uOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgbGV0IHBhcnNpbmdSZWdleCA9IC8oW2EtekEtWl0rKVtcXHNdKi0+W1xcc10qKFthLXpBLVosXFxzXSspKy9nO1xyXG4gICAgICAgIHZhciBwYXJzaW5nUmVzID0gcGFyc2luZ1JlZ2V4LmV4ZWMoZGlyZWN0aW9uKTtcclxuXHJcbiAgICAgICAgbGV0IGZyb20gPSBwYXJzaW5nUmVzWzFdO1xyXG4gICAgICAgIGxldCB0bzogc3RyaW5nW10gPSBwYXJzaW5nUmVzWzJdLnJlcGxhY2UoL1xccy9nLCAnJykuc3BsaXQoJywnKTtcclxuICAgICAgICBsZXQgbG9jYWxlRnJvbSA9IExvY2FsZURlZmluaXRpb25zLmdldEJ5QWxpYXMoZnJvbSk7XHJcbiAgICAgICAgQmFzZUxvY2FsaXphdGlvbi5fc2V0KGxvY0NhY2hlLCB0b2tlbiwgbG9jYWxlRnJvbS5pZCwgbGVmdCwgdHJ1ZSk7XHJcblxyXG4gICAgICAgIHRvLmZvckVhY2goKHQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBsb2NhbGVUbyA9IExvY2FsZURlZmluaXRpb25zLmdldEJ5QWxpYXModCk7XHJcbiAgICAgICAgICAgIEJhc2VMb2NhbGl6YXRpb24uX3NldChsb2NDYWNoZSwgdG9rZW4sIGxvY2FsZVRvLmlkLCByaWdodFtpbmRleF0sIHRydWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBsYSBsb2NhbGl6emF6aW9uZSBkaSB1bmEgZnJhc2UgYWxsJ2ludGVybm8gZGVsbGEgY2FjaGUgc2NlbHRhXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7eyBbaWQ6IHN0cmluZ106IEl0ZW1Mb2NhbGl6YXRpb24gfX0gbG9jQ2FjaGUgQ2FjaGUgYWxsJ2ludGVybm8gZGVsbGEgcXVhbGUgaW5zZXJpcmUgbCdpbmZvcm1hemlvbmUgZGVsbGEgZnJhc2UgY29uIGxlIGxvY2FsaXp6YXppb25pXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIERpcmV6aW9uZSBkZWxsYSB0cmFkdXppb25lLCByYXBwcmVzZW50YSBsYSBsaW5ndWEgYmFzZSBpbiBjdWkgYXNwZXR0YXJzaSBpbCB0ZXN0byBlIGxlIHZhcmllIGxpbmd1ZSBpbiBjdWkgdmllbmUgdHJhZG90dGEuXHJcbiAgICAgKiBBZCBlc2VtcGlvLCBcImVuLT5pdFwiIGluZGljYSBjaGUgaWwgcGFyYW1ldHJvICoqbGVmdCoqIMOoIHZhbGlkbyBwZXIgbGUgbG9jYWxpenphemlvbmkgaW4gaW5nbGVzZSwgbWVudHJlIG5lbGwnZWxlbWVudG8gMCBkZWwgcGFyYW1ldHJvICoqcmlnaHQqKiBcclxuICAgICAqIMOoIHByZXNlbnRlIGwndW5pY2EgdHJhZHV6aW9uZSBpbiBpdGFsaWFubywgcGVyIGRlZmluaXJlIHBpw7kgdHJhZHV6aW9uaSBzdWwgbGF0byBkZXN0cm8gZGVsbGEgZnJlY2NpYSBiaXNvZ25hIGNvbmNhdGVuYXJsZSBjb24gbGEgdmlyZ29sYSwgYWQgZXNlbXBpbyBcImVuLT5pdCxqcCxlY2NcIlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxlZnQgVmFsb3JlIGRlbGxhIGZyYXNlIHBlciBsYSBsaW5ndWEgc3BlY2lmaWNhdGEgbmVsIGxhdG8gaW1tZWRpYXRhbWVudGUgc2luaXN0cm8gYWxsYSBmcmVjY2lhIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJpZ2h0IEFycmF5IGNvbiBpIHZhbG9yaSBmYWNlbnRpIHJpZmVyaW1lbnRvIGFsbCdOLWVzaW1hIGxpbmd1YSBkZWwgbGF0byBkZXN0cm8gZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgc2V0KGxvY0NhY2hlOiB7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9LCBkaXJlY3Rpb246IHN0cmluZywgbGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nW10pIHtcclxuICAgICAgICBsZXQgcGFyc2luZ1JlZ2V4ID0gLyhbYS16QS1aXSspW1xcc10qLT5bXFxzXSooW2EtekEtWixcXHNdKykrL2c7XHJcbiAgICAgICAgdmFyIHBhcnNpbmdSZXMgPSBwYXJzaW5nUmVnZXguZXhlYyhkaXJlY3Rpb24pO1xyXG5cclxuICAgICAgICBsZXQgZnJvbSA9IHBhcnNpbmdSZXNbMV07XHJcbiAgICAgICAgbGV0IHRvOiBzdHJpbmdbXSA9IHBhcnNpbmdSZXNbMl0ucmVwbGFjZSgvXFxzL2csICcnKS5zcGxpdCgnLCcpO1xyXG4gICAgICAgIGxldCBsb2NhbGVGcm9tID0gTG9jYWxlRGVmaW5pdGlvbnMuZ2V0QnlBbGlhcyhmcm9tKTtcclxuICAgICAgICBCYXNlTG9jYWxpemF0aW9uLl9zZXQobG9jQ2FjaGUsIGxlZnQsIGxvY2FsZUZyb20uaWQsIGxlZnQpO1xyXG5cclxuICAgICAgICB0by5mb3JFYWNoKCh0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbG9jYWxlVG8gPSBMb2NhbGVEZWZpbml0aW9ucy5nZXRCeUFsaWFzKHQpO1xyXG4gICAgICAgICAgICBCYXNlTG9jYWxpemF0aW9uLl9zZXQobG9jQ2FjaGUsIGxlZnQsIGxvY2FsZVRvLmlkLCByaWdodFtpbmRleF0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBhbGwnaW50ZXJubyBkZWxsYSBjYWNoZSBzcGVjaWZpY2F0YSB1bid1bmljYSB0cmFkdXppb25lIHBhcnRlbmRvIGRhIHVuIHRlc3RvIGRpIGJhc2VcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHt7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9fSBsb2NDYWNoZSBDYWNoZSBhbGwnaW50ZXJubyBkZWxsYSBxdWFsZSBpbnNlcmlyZSBsJ2luZm9ybWF6aW9uZSBkZWwgdGVzdG8gY29uIGxlIGxvY2FsaXp6YXppb25pXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSB0cmFkdXJyZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGN1bHR1cmUgTGluZ3VhIHBlciBjdWkgaW5zZXJpcmUgbGEgdHJhZHV6aW9uZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRyYW5zbGF0aW9uIFRyYWR1emlvbmUgZGVsICoqdGV4dCoqIG5lbGxhIGxpbmd1YSBzcGVjaWZpY2F0YSBkYSAqKmN1bHR1cmUqKlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSB0b2tlbiBJbmRpY2Egc2UgaWwgKip0ZXh0Kiogw6ggdW4gdG9rZW4gbyDDqCB1bmEgZnJhc2Ugbm9ybWFsZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIHN0YXRpYyBfc2V0KGxvY0NhY2hlOiB7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9LCB0ZXh0OiBzdHJpbmcsIGN1bHR1cmU6IHN0cmluZywgdHJhbnNsYXRpb246IHN0cmluZywgdG9rZW4/OiBib29sZWFuKSB7XHJcbiAgICAgICAgbGV0IGl0ZW0gPSBCYXNlTG9jYWxpemF0aW9uLmZpbmRCeVRleHQobG9jQ2FjaGUsIHRleHQsIHRva2VuKTtcclxuICAgICAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgICAgICAgbG9jQ2FjaGVbdGV4dF0gPSBuZXcgSXRlbUxvY2FsaXphdGlvbih0b2tlbiwgdGV4dCwgW25ldyBTcGVjaWFsaXplZExvY2FsaXphdGlvbihjdWx0dXJlLCB0cmFuc2xhdGlvbildKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIHRycyA9IEJhc2VMb2NhbGl6YXRpb24udHJhbnNsYXRpb25CeUN1bHR1cmUoaXRlbSwgY3VsdHVyZSk7XHJcbiAgICAgICAgaWYgKHRycykge1xyXG4gICAgICAgICAgICBjb25zb2xlLndhcm4oXCJMb2NhbGl6YXRpb24gYWxyZWFkeSBsb2FkZWQgZm9yIHNlbnRlbmNlICdcIiArIHRleHQgKyBcIicgYW5kIGN1bHR1cmUgXCIgKyBjdWx0dXJlKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaXRlbS50cmFuc2xhdGlvbnMucHVzaChuZXcgU3BlY2lhbGl6ZWRMb2NhbGl6YXRpb24oY3VsdHVyZSwgdHJhbnNsYXRpb24pKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFBhcnRlbmRvIGRhIHVuYSBjYWNoZSBkaSBsb2NhbGl6emF6aW9uZSwgZGF0byB1biB0ZXN0byBjaGUgcHXDsiBlc3NlcmUgbyBtZW5vIHVuIHRva2VuLCBjZXJjYSBxdWVsbCdlbGVtZW50byBhbGwnaW50ZXJubyBkZWxsYSBjYWNoZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3sgW2lkOiBzdHJpbmddOiBJdGVtTG9jYWxpemF0aW9uIH19IGxvY0NhY2hlIENhY2hlIGFsbCdpbnRlcm5vIGRlbCBxdWFsZSBjZXJjYXJlIGlsICoqdGV4dCoqXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSBjZXJjYXJlIG5lbGxhICoqbG9jQ2FjaGUqKlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSBhbGxvd3Rva2VucyBJbmRpY2Egc2UgbCdlbGVtZW50byBjZXJjYXRvIHB1w7IgZXNzZXJlIHVuIHRva2VuIG8gc2UgZGV2J2Vzc2VyZSBwZXIgZm9yemEgdW5hIGZyYXNlIChwZXIgZXZpdGFyZSByYXJpIFxyXG4gICAgICogY2FzaSBkaSBjb2xsaXNpb25lIGluIGN1aSBtYWdhcmkgdW4gdG9rZW4gw6ggdWd1YWxlIGEgdW5hIGZyYXNlIHRyYWRvdHRhKVxyXG4gICAgICogXHJcbiAgICAgKiBAcmV0dXJucyB7SXRlbUxvY2FsaXphdGlvbn0gSW5mb3JtYXppb25pIGRpIGxvY2FsaXp6YXppb25lIHBlciBpbCAqKnRleHQqKiBjZXJjYXRvXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzdGF0aWMgZmluZEJ5VGV4dChsb2NDYWNoZTogeyBbaWQ6IHN0cmluZ106IEl0ZW1Mb2NhbGl6YXRpb24gfSwgdGV4dDogc3RyaW5nLCBhbGxvd3Rva2VuczogYm9vbGVhbik6IEl0ZW1Mb2NhbGl6YXRpb24ge1xyXG4gICAgICAgIGxldCBwb3NzaWJsZUl0ZW06IEl0ZW1Mb2NhbGl6YXRpb24gPSBsb2NDYWNoZVt0ZXh0XTtcclxuICAgICAgICBpZiAoIXBvc3NpYmxlSXRlbSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIHZhciBpdGVtID0gYWxsb3d0b2tlbnMgfHwgIXBvc3NpYmxlSXRlbS50b2tlbiA/IHBvc3NpYmxlSXRlbSA6IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRlIGxlIGluZm9ybWF6aW9uaSBkaSBsb2NhbGl6emF6aW9uZSBwZXIgdW4gdGVzdG8gY2VyY2EgZSByZXN0aXR1aXNjZSBsYSB0cmFkdXppb25lIHBlciB1bmEgbGluZ3VhIHNwZWNpZmljYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0l0ZW1Mb2NhbGl6YXRpb259IEluZm9ybWF6aW9uaSBkaSBsb2NhbGl6emF6aW9uZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGN1bHR1cmUgTGluZ3VhIGRlbGxhIHRyYWR1emlvbmUgcmljaGllc3RhXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtTcGVjaWFsaXplZExvY2FsaXphdGlvbn0gSW5mb3JtYXppb25pIGRpIGxvY2FsaXp6YXppb25lIHNwZWNpZmljaGUgZGVsbGEgbGluZ3VhIHJpY2hpZXN0YVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc3RhdGljIHRyYW5zbGF0aW9uQnlDdWx0dXJlKGl0ZW06IEl0ZW1Mb2NhbGl6YXRpb24sIGN1bHR1cmU6IHN0cmluZyk6IFNwZWNpYWxpemVkTG9jYWxpemF0aW9uIHtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW0udHJhbnNsYXRpb25zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCB0cmwgPSBpdGVtLnRyYW5zbGF0aW9uc1tpXTtcclxuICAgICAgICAgICAgaWYgKHRybC5jdWx0dXJlID09IGN1bHR1cmUpXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn0iXX0=
|
|
91
|
+
type: Injectable,
|
|
92
|
+
args: [{ providedIn: 'root' }]
|
|
93
|
+
}], ctorParameters: function () { return [{ type: i1.LocalePersistor }, { type: undefined, decorators: [{
|
|
94
|
+
type: Inject,
|
|
95
|
+
args: [LOC_LOCALE]
|
|
96
|
+
}] }]; } });
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLmJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvY29yZS9sb2NhbGl6YXRpb24uYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUVsRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFFdkM7OztHQUdHO0FBRUgsTUFBTSxPQUFPLGdCQUFnQjtJQWlCekI7O09BRUc7SUFDSCxZQUFtQixlQUFnQyxFQUFzQixhQUFxQjtRQUEzRSxvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFsQm5EOztXQUVHO1FBQ0ksYUFBUSxHQUF1QyxFQUFFLENBQUM7UUFPekQ7O1dBRUc7UUFDSSxXQUFNLEdBQTBCLElBQUksYUFBYSxDQUFTLENBQUMsQ0FBQyxDQUFDO1FBT2hFLG9IQUFvSDtRQUNwSCxJQUFJLENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFFO1lBQzdELElBQUksQ0FBQyxDQUFDLEVBQUU7Z0JBQ0osQ0FBQyxHQUFHLGFBQWEsQ0FBQztnQkFDbEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDL0M7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUN2QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFMUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLDhCQUE4QixFQUFFLENBQUMsK0JBQStCLENBQUMsQ0FBQyxDQUFDO1FBQ2hHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2xELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDO1FBQzdELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxZQUFZLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUs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bmplY3QsIEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBJdGVtTG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBMb2NhbGl6YXRpb25QZXJzaXN0b3IgfSBmcm9tIFwiLi9sb2NhbGl6YXRpb24ucGVyc2lzdG9yXCI7XHJcbmltcG9ydCB7IEJhc2VMb2NhbGl6YXRpb25Ub2tlbnMgfSBmcm9tIFwiLi4vbW9kZWxzL2NsYXNzZXMvQmFzZUxvY2FsaXphdGlvblRva2Vuc1wiO1xyXG5pbXBvcnQgeyBMb2NhbGVQZXJzaXN0b3IgfSBmcm9tIFwiLi4vbG9jYWxlLXBlcnNpc3Rvci9Mb2NhbGVQZXJzaXN0b3JcIjtcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gXCJyeGpzL29wZXJhdG9yc1wiO1xyXG5pbXBvcnQgeyBSZXBsYXlTdWJqZWN0IH0gZnJvbSBcInJ4anNcIjtcclxuaW1wb3J0IHsgTE9DX0xPQ0FMRSB9IGZyb20gXCIuLi90b2tlbnNcIjtcclxuXHJcbi8qKlxyXG4gKiBDbGFzc2Ugc2luZ2xldG9uIGNoZSBjb250aWVuZSBsZSB0cmFkdXppb25pIGRpIGJhc2UgKHBlciBldml0YXJlIGRpIHJpcGV0ZXJsZSBpbiBvZ2dpIGNsYXNzZSBkaSB0cmFkdXppb25lKSBlIGxlIGZ1bnppb25pIGJhc2UgcGVyIFxyXG4gKiBpbnNlcmlyZSBlIGxlZ2dlcmUgdHJhZHV6aW9uaSBpbi9kYSB1bmEgY2FjaGVcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBCYXNlTG9jYWxpemF0aW9uIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENhY2hlIGRpIHR1dHRlIGxlIGxvY2FsaXp6YXppb25pIGRpIGJhc2VcclxuICAgICAqL1xyXG4gICAgcHVibGljIExvY0NhY2hlOiB7IFtpZDogc3RyaW5nXTogSXRlbUxvY2FsaXphdGlvbiB9ID0ge307XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQZXJzaXN0b3IgZGVsbGUgbG9jYWxpenphemlvbmkgcmVsYXRpdm8gYSBxdWVzdGEgY2xhc3NlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBQZXJzaXN0b3I6IExvY2FsaXphdGlvblBlcnNpc3RvcjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIExvY2FsZSBkaSByaWZlcmltZW50byBwZXIgdHV0dGUgbGUgdHJhZHV6aW9uaVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgTG9jYWxlOiBSZXBsYXlTdWJqZWN0PHN0cmluZz4gPSBuZXcgUmVwbGF5U3ViamVjdDxzdHJpbmc+KDEpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29zdHJ1dHRvcmUuIERhIHF1aSB1dGlsaXp6YW5kbyBpbCBtZXRvZG8gc3RhdGljbyAqKkJhc2VMb2NhbGl6YXRpb24uc2V0Kiogc2kgdmEgYSBwb3BvbGFyZSBsYSBjYWNoZSBkZWxsZSB0cmFkdXppb25pICoqQmFzZVRyYW5zbGF0aW9ucyoqXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBMb2NhbGVQZXJzaXN0b3I6IExvY2FsZVBlcnNpc3RvciwgQEluamVjdChMT0NfTE9DQUxFKSBkZWZhdWx0TG9jYWxlOiBzdHJpbmcpIHtcclxuXHJcbiAgICAgICAgLy8gUmVjdXBlcm8gaWwgbG9jYWxlIGFsbGEgcGFydGVuemEgZGVsIEJhc2VMb2NhbGl6YXRpb24gaW4gbW9kbywgc3Blcm8gZGkgZGFyZSB0ZW1wbyBhbGwnYXBwbGljYXppb25lIGRpIHRpcmFybG8gc3VcclxuICAgICAgICB0aGlzLkxvY2FsZVBlcnNpc3Rvci5yZWNvdmVyKCkucGlwZSh0YWtlKDEpKS5zdWJzY3JpYmUoYXN5bmMgbCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghbCkge1xyXG4gICAgICAgICAgICAgICAgbCA9IGRlZmF1bHRMb2NhbGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLkxvY2FsZVBlcnNpc3Rvci5wZXJzaXN0KGRlZmF1bHRMb2NhbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuTG9jYWxlLm5leHQobClcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3IgPSBuZXcgTG9jYWxpemF0aW9uUGVyc2lzdG9yKHRoaXMuTG9jQ2FjaGUpOyBcclxuXHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiUmVtb3ZlXCIsIFtcIkVsaW1pbmFcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIlBhZ2luZ1wiLCBbXCJQYWdpbmF6aW9uZVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiWWVzXCIsIFtcIlNpXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJOb1wiLCBbXCJOb1wiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiWUVTXCIsIFtcIlNJJ1wiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiTk9cIiwgW1wiTk9cIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkZvdW5kIG9iamVjdHNcIiwgW1wiUmlzdWx0YXRpIHRyb3ZhdGlcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkxvYWRpbmcgZGF0YS4uLlwiLCBbXCJDYXJpY28gaSBkYXRpLi4uXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJFcnJvciBkdXJpbmcgc2F2ZSBvcGVyYXRpb25zXCIsIFtcIkVycm9yaSBkdXJhbnRlIGlsIHNhbHZhdGFnZ2lvXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJFcnJvclwiLCBbXCJFcnJvcmVcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIldhcm5pbmdcIiwgW1wiQXZ2aXNvXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJJbmZvcm1hdGlvblwiLCBbXCJJbmZvcm1hemlvbmVcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIlNhdmVcIiwgW1wiU2FsdmFcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkJhY2tcIiwgW1wiSW5kaWV0cm9cIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkZyb21cIiwgW1wiRGFcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIlRvXCIsIFtcIkFcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIlZpZXcgQ2hhcnRcIiwgW1wiVmVkaSBHcmFmaWNvXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJWaWV3IFRhYmxlXCIsIFtcIlZlZGkgVGFiZWxsYVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiTm90ZXNcIiwgW1wiTm90ZVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiRWRpdCBOb3Rlc1wiLCBbXCJNb2RpZmljYSBOb3RlXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJDYW5jZWxcIiwgW1wiQW5udWxsYVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiQ29uZmlybVwiLCBbXCJDb25mZXJtYVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiVmlld1wiLCBbXCJWaXN1YWxpenphXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJDbG9zZVwiLCBbXCJDaGl1ZGlcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIlNlbGVjdFwiLCBbXCJTZWxlemlvbmFcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIk1ldGVyIFJlYWRpbmcgcmVnaXN0ZXJlZCBzdWNjZXNzZnVsbHlcIiwgW1wiTGV0dHVyYSByZWdpc3RyYXRhIGNvcnJldHRhbWVudGVcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIlZhbGlkYXRpb24gZXJyb3JzIGR1cmluZyBzYXZlIG9wZXJhdGlvbnNcIiwgW1wiRXJyb3JpIGRpIHZhbGlkYXppb25lIGR1cmFudGUgaWwgc2FsdmF0YWdnaW9cIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkNhbid0IHJlZ2lzdGVyIHJlYWRpbmdcIiwgW1wiSW1wb3NzaWJpbGUgcmVnaXN0cmFyZSBsYSBsZXR0dXJhXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJFbGVjdHJpY2l0eVwiLCBbXCJFbGV0dHJpY2l0YVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiR2FzXCIsIFtcIkdhc1wiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiV2F0ZXJcIiwgW1wiQWNxdWFcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIkRlbGV0ZVwiLCBbXCJFbGltaW5hXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJUaGlzIG9wZXJhdGlvbiBjYW5ub3QgYmUgcmV2ZXJ0ZWRcIiwgW1wiUXVlc3RhIG9wZXJhemlvbmUgbm9uIHB1bycgZXNzZXJlIGFubnVsbGF0YVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiSGlkZVwiLCBbXCJOYXNjb25kaVwiXSk7XHJcblxyXG4gICAgICAgIC8vIEhlbHBlciB2YWxpZGF6aW9uZVxyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldChcImVuLT5pdFwiLCBcIlJlcXVpcmVkIGZpZWxkXCIsIFtcIkNhbXBvIHJpY2hpZXN0b1wiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0KFwiZW4tPml0XCIsIFwiV3JvbmcgZmllbGQgZm9ybWF0XCIsIFtcIkZvcm1hdG8gY2FtcG8gZXJyYXRvXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJXcm9uZyBmaWVsZCBmb3JtYXQgb3IgZmllbGQgbWlzc2luZ1wiLCBbXCJGb3JtYXRvIGNhbXBvIGVycmF0byBvIGNhbXBvIG1hbmNhbnRlXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXQoXCJlbi0+aXRcIiwgXCJZb3UgZG9uJ3QgaGF2ZSB0aGUgcmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdmlldyB0aGlzIHBhZ2UuIFRoZSBuYXZpZ2F0aW9uIGhhcyBiZWVuIGJsb2NrZWRcIiwgW1wiTm9uIHNpIGhhbm5vIHByaXZpbGVnaSBhIHN1ZmZpY2llbnphIHBlciBhY2NlZGVyZSBhIHF1ZXN0YSBwYWdpbmEuIExhIG5hdmlnYXppb25lIGUnIHN0YXRhIGJsb2NjYXRhXCJdKTtcclxuXHJcbiAgICAgICAgLy8gSW5mb3JtYXppb25pIHN1bGxlIGRhdGVcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXRUb2tlbihcImVuLT5pdFwiLCBCYXNlTG9jYWxpemF0aW9uVG9rZW5zLmdldERhdGVNb250aFBvc2l0aW9uLCBcIjBcIiwgW1wiMVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0VG9rZW4oXCJlbi0+aXRcIiwgQmFzZUxvY2FsaXphdGlvblRva2Vucy5nZXREaXNwbGF5RGF0ZU1vbnRoUG9zaXRpb24sIFwiMVwiLCBbXCIxXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXRUb2tlbihcImVuLT5pdFwiLCBCYXNlTG9jYWxpemF0aW9uVG9rZW5zLmdldExvY2FsZSwgXCJlbi1VU1wiLCBbXCJpdC1JVFwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0VG9rZW4oXCJlbi0+aXRcIiwgQmFzZUxvY2FsaXphdGlvblRva2Vucy5nZXRTbWFsbERhdGVGb3JtYXQsIFwiTU0vREQvWVlZWVwiLCBbXCJERC9NTS9ZWVlZXCJdKTtcclxuICAgICAgICB0aGlzLlBlcnNpc3Rvci5zZXRUb2tlbihcImVuLT5pdFwiLCBCYXNlTG9jYWxpemF0aW9uVG9rZW5zLmdldERlZmF1bHREYXRlRm9ybWF0LCBcIk1NL0REL1lZWVlcIiwgW1wiTU0vREQvWVlZWVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0VG9rZW4oXCJlbi0+aXRcIiwgQmFzZUxvY2FsaXphdGlvblRva2Vucy5nZXRTbWFsbERhdGVEaXNwbGF5Rm9ybWF0LCBcIkREL01NL1lZWVlcIiwgW1wiREQvTU0vWVlZWVwiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0VG9rZW4oXCJlbi0+aXRcIiwgQmFzZUxvY2FsaXphdGlvblRva2Vucy5nZXRGdWxsRGF0ZUZvcm1hdCwgXCJNTS9ERC9ZWVlZIEhIOm1tOnNzXCIsIFtcIkREL01NL1lZWVkgSEg6bW06c3NcIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldFRva2VuKFwiZW4tPml0XCIsIEJhc2VMb2NhbGl6YXRpb25Ub2tlbnMuZ2V0RnVsbERhdGVEaXNwbGF5Rm9ybWF0LCBcIkREL01NL1lZWVkgSEg6bW06c3NcIiwgW1wiREQvTU0vWVlZWSBISDptbTpzc1wiXSk7XHJcbiAgICAgICAgdGhpcy5QZXJzaXN0b3Iuc2V0VG9rZW4oXCJlbi0+aXRcIiwgQmFzZUxvY2FsaXphdGlvblRva2Vucy5nZXRGdWxsRGF0ZUZvcm1hdE5vU2Vjb25kcywgXCJNTS9ERC9ZWVlZIEhIOm1tXCIsIFtcIkREL01NL1lZWVkgSEg6bW1cIl0pO1xyXG4gICAgICAgIHRoaXMuUGVyc2lzdG9yLnNldFRva2VuKFwiZW4tPml0XCIsIEJhc2VMb2NhbGl6YXRpb25Ub2tlbnMuZ2V0RnVsbERhdGVEaXNwbGF5Rm9ybWF0Tm9TZWNvbmRzLCBcIkREL01NL1lZWVkgSEg6bW1cIiwgW1wiREQvTU0vWVlZWSBISDptbVwiXSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { ItemLocalization, LocaleDefinitions, SpecializedLocalization } from "../models";
|
|
2
|
+
export class LocalizationPersistor {
|
|
3
|
+
constructor(LocCache = null) {
|
|
4
|
+
this.LocCache = LocCache;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Imposta la localizzazione di un token all'interno della cache scelta
|
|
8
|
+
*
|
|
9
|
+
* @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
|
|
10
|
+
* Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
|
|
11
|
+
* è 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"
|
|
12
|
+
* @param {string} token Nome del token
|
|
13
|
+
* @param {string} left Valore del token per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
|
|
14
|
+
* @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
|
|
15
|
+
*/
|
|
16
|
+
setToken(direction, token, left, right) {
|
|
17
|
+
let parsingRegex = /([a-zA-Z]+)[\s]*->[\s]*([a-zA-Z,\s]+)+/g;
|
|
18
|
+
var parsingRes = parsingRegex.exec(direction);
|
|
19
|
+
let from = parsingRes[1];
|
|
20
|
+
let to = parsingRes[2].replace(/\s/g, '').split(',');
|
|
21
|
+
let localeFrom = LocaleDefinitions.getByAlias(from);
|
|
22
|
+
this._set(token, localeFrom.id, left, true);
|
|
23
|
+
to.forEach((t, index) => {
|
|
24
|
+
let localeTo = LocaleDefinitions.getByAlias(t);
|
|
25
|
+
this._set(token, localeTo.id, right[index], true);
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Imposta la localizzazione di una frase all'interno della cache scelta
|
|
30
|
+
*
|
|
31
|
+
* @param {string} direction Direzione della traduzione, rappresenta la lingua base in cui aspettarsi il testo e le varie lingue in cui viene tradotta.
|
|
32
|
+
* Ad esempio, "en->it" indica che il parametro **left** è valido per le localizzazioni in inglese, mentre nell'elemento 0 del parametro **right**
|
|
33
|
+
* è 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"
|
|
34
|
+
* @param {string} left Valore della frase per la lingua specificata nel lato immediatamente sinistro alla freccia del parametro **direction**
|
|
35
|
+
* @param {string} right Array con i valori facenti riferimento all'N-esima lingua del lato destro del parametro **direction**
|
|
36
|
+
*/
|
|
37
|
+
set(direction, left, right) {
|
|
38
|
+
let parsingRegex = /([a-zA-Z]+)[\s]*->[\s]*([a-zA-Z,\s]+)+/g;
|
|
39
|
+
var parsingRes = parsingRegex.exec(direction);
|
|
40
|
+
let from = parsingRes[1];
|
|
41
|
+
let to = parsingRes[2].replace(/\s/g, '').split(',');
|
|
42
|
+
let localeFrom = LocaleDefinitions.getByAlias(from);
|
|
43
|
+
this._set(left, localeFrom.id, left);
|
|
44
|
+
to.forEach((t, index) => {
|
|
45
|
+
let localeTo = LocaleDefinitions.getByAlias(t);
|
|
46
|
+
this._set(left, localeTo.id, right[index]);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Imposta all'interno della cache specificata un'unica traduzione partendo da un testo di base
|
|
51
|
+
*
|
|
52
|
+
* @param {string} text Testo da tradurre
|
|
53
|
+
* @param {string} culture Lingua per cui inserire la traduzione
|
|
54
|
+
* @param {string} translation Traduzione del **text** nella lingua specificata da **culture**
|
|
55
|
+
* @param {boolean} token Indica se il **text** è un token o è una frase normale
|
|
56
|
+
*/
|
|
57
|
+
_set(text, culture, translation, token) {
|
|
58
|
+
let item = this.get(text, token);
|
|
59
|
+
if (!item) {
|
|
60
|
+
this.LocCache[text] = new ItemLocalization(token, text, [new SpecializedLocalization(culture, translation)]);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
var trs = this.translationByCulture(item, culture);
|
|
64
|
+
if (trs) {
|
|
65
|
+
console.warn("Localization already loaded for sentence '" + text + "' and culture " + culture);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
item.translations.push(new SpecializedLocalization(culture, translation));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Partendo da una cache di localizzazione, dato un testo che può essere o meno un token, cerca quell'elemento all'interno della cache
|
|
72
|
+
*
|
|
73
|
+
* @param {string} text Testo da cercare nella **LocCache**
|
|
74
|
+
* @param {boolean} allowtokens Indica se l'elemento cercato può essere un token o se dev'essere per forza una frase (per evitare rari
|
|
75
|
+
* casi di collisione in cui magari un token è uguale a una frase tradotta)
|
|
76
|
+
*
|
|
77
|
+
* @returns {ItemLocalization} Informazioni di localizzazione per il **text** cercato
|
|
78
|
+
*/
|
|
79
|
+
get(text, allowtokens) {
|
|
80
|
+
let possibleItem = this.LocCache[text];
|
|
81
|
+
if (!possibleItem)
|
|
82
|
+
return null;
|
|
83
|
+
var item = allowtokens || !possibleItem.token ? possibleItem : null;
|
|
84
|
+
return item;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Date le informazioni di localizzazione per un testo cerca e restituisce la traduzione per una lingua specifica
|
|
88
|
+
*
|
|
89
|
+
* @param {ItemLocalization} Informazioni di localizzazione
|
|
90
|
+
* @param {string} culture Lingua della traduzione richiesta
|
|
91
|
+
*
|
|
92
|
+
* @returns {SpecializedLocalization} Informazioni di localizzazione specifiche della lingua richiesta
|
|
93
|
+
*/
|
|
94
|
+
translationByCulture(item, culture) {
|
|
95
|
+
for (let i = 0; i < item.translations.length; i++) {
|
|
96
|
+
let trl = item.translations[i];
|
|
97
|
+
if (trl.culture == culture)
|
|
98
|
+
return trl;
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9uLnBlcnNpc3Rvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2xvY2FsaXphdGlvbnMvc3JjL2xpYi9jb3JlL2xvY2FsaXphdGlvbi5wZXJzaXN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLHVCQUF1QixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRXpGLE1BQU0sT0FBTyxxQkFBcUI7SUFFOUIsWUFBb0IsV0FBK0MsSUFBSTtRQUFuRCxhQUFRLEdBQVIsUUFBUSxDQUEyQztJQUFJLENBQUM7SUFFNUU7Ozs7Ozs7OztPQVNHO0lBQ0ksUUFBUSxDQUFDLFNBQWlCLEVBQUUsS0FBYSxFQUFFLElBQVksRUFBRSxLQUFlO1FBQzNFLElBQUksWUFBWSxHQUFHLHlDQUF5QyxDQUFDO1FBQzdELElBQUksVUFBVSxHQUFHLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFOUMsSUFBSSxJQUFJLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pCLElBQUksRUFBRSxHQUFhLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvRCxJQUFJLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFFNUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNwQixJQUFJLFFBQVEsR0FBRyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0MsSUFB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QyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsSUFBSSxHQUFHLENBQUMsT0FBTyxJQUFJLE9BQU87Z0JBQ3RCLE9BQU8sR0FBRyxDQUFDO1NBQ2xCO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSXRlbUxvY2FsaXphdGlvbiwgTG9jYWxlRGVmaW5pdGlvbnMsIFNwZWNpYWxpemVkTG9jYWxpemF0aW9uIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xyXG5cclxuZXhwb3J0IGNsYXNzIExvY2FsaXphdGlvblBlcnNpc3RvciB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBMb2NDYWNoZTogeyBbaWQ6IHN0cmluZ106IEl0ZW1Mb2NhbGl6YXRpb24gfSA9IG51bGwpIHsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSW1wb3N0YSBsYSBsb2NhbGl6emF6aW9uZSBkaSB1biB0b2tlbiBhbGwnaW50ZXJubyBkZWxsYSBjYWNoZSBzY2VsdGFcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGRpcmVjdGlvbiBEaXJlemlvbmUgZGVsbGEgdHJhZHV6aW9uZSwgcmFwcHJlc2VudGEgbGEgbGluZ3VhIGJhc2UgaW4gY3VpIGFzcGV0dGFyc2kgaWwgdGVzdG8gZSBsZSB2YXJpZSBsaW5ndWUgaW4gY3VpIHZpZW5lIHRyYWRvdHRhLlxyXG4gICAgICogQWQgZXNlbXBpbywgXCJlbi0+aXRcIiBpbmRpY2EgY2hlIGlsIHBhcmFtZXRybyAqKmxlZnQqKiDDqCB2YWxpZG8gcGVyIGxlIGxvY2FsaXp6YXppb25pIGluIGluZ2xlc2UsIG1lbnRyZSBuZWxsJ2VsZW1lbnRvIDAgZGVsIHBhcmFtZXRybyAqKnJpZ2h0KiogXHJcbiAgICAgKiDDqCBwcmVzZW50ZSBsJ3VuaWNhIHRyYWR1emlvbmUgaW4gaXRhbGlhbm8sIHBlciBkZWZpbmlyZSBwacO5IHRyYWR1emlvbmkgc3VsIGxhdG8gZGVzdHJvIGRlbGxhIGZyZWNjaWEgYmlzb2duYSBjb25jYXRlbmFybGUgY29uIGxhIHZpcmdvbGEsIGFkIGVzZW1waW8gXCJlbi0+aXQsanAsZWNjXCJcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0b2tlbiBOb21lIGRlbCB0b2tlblxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxlZnQgVmFsb3JlIGRlbCB0b2tlbiBwZXIgbGEgbGluZ3VhIHNwZWNpZmljYXRhIG5lbCBsYXRvIGltbWVkaWF0YW1lbnRlIHNpbmlzdHJvIGFsbGEgZnJlY2NpYSBkZWwgcGFyYW1ldHJvICoqZGlyZWN0aW9uKipcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSByaWdodCBBcnJheSBjb24gaSB2YWxvcmkgZmFjZW50aSByaWZlcmltZW50byBhbGwnTi1lc2ltYSBsaW5ndWEgZGVsIGxhdG8gZGVzdHJvIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0VG9rZW4oZGlyZWN0aW9uOiBzdHJpbmcsIHRva2VuOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgbGV0IHBhcnNpbmdSZWdleCA9IC8oW2EtekEtWl0rKVtcXHNdKi0+W1xcc10qKFthLXpBLVosXFxzXSspKy9nO1xyXG4gICAgICAgIHZhciBwYXJzaW5nUmVzID0gcGFyc2luZ1JlZ2V4LmV4ZWMoZGlyZWN0aW9uKTtcclxuXHJcbiAgICAgICAgbGV0IGZyb20gPSBwYXJzaW5nUmVzWzFdO1xyXG4gICAgICAgIGxldCB0bzogc3RyaW5nW10gPSBwYXJzaW5nUmVzWzJdLnJlcGxhY2UoL1xccy9nLCAnJykuc3BsaXQoJywnKTtcclxuICAgICAgICBsZXQgbG9jYWxlRnJvbSA9IExvY2FsZURlZmluaXRpb25zLmdldEJ5QWxpYXMoZnJvbSk7XHJcbiAgICAgICAgdGhpcy5fc2V0KHRva2VuLCBsb2NhbGVGcm9tLmlkLCBsZWZ0LCB0cnVlKTtcclxuXHJcbiAgICAgICAgdG8uZm9yRWFjaCgodCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbGV0IGxvY2FsZVRvID0gTG9jYWxlRGVmaW5pdGlvbnMuZ2V0QnlBbGlhcyh0KTtcclxuICAgICAgICAgICAgdGhpcy5fc2V0KHRva2VuLCBsb2NhbGVUby5pZCwgcmlnaHRbaW5kZXhdLCB0cnVlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEltcG9zdGEgbGEgbG9jYWxpenphemlvbmUgZGkgdW5hIGZyYXNlIGFsbCdpbnRlcm5vIGRlbGxhIGNhY2hlIHNjZWx0YVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyZWN0aW9uIERpcmV6aW9uZSBkZWxsYSB0cmFkdXppb25lLCByYXBwcmVzZW50YSBsYSBsaW5ndWEgYmFzZSBpbiBjdWkgYXNwZXR0YXJzaSBpbCB0ZXN0byBlIGxlIHZhcmllIGxpbmd1ZSBpbiBjdWkgdmllbmUgdHJhZG90dGEuXHJcbiAgICAgKiBBZCBlc2VtcGlvLCBcImVuLT5pdFwiIGluZGljYSBjaGUgaWwgcGFyYW1ldHJvICoqbGVmdCoqIMOoIHZhbGlkbyBwZXIgbGUgbG9jYWxpenphemlvbmkgaW4gaW5nbGVzZSwgbWVudHJlIG5lbGwnZWxlbWVudG8gMCBkZWwgcGFyYW1ldHJvICoqcmlnaHQqKiBcclxuICAgICAqIMOoIHByZXNlbnRlIGwndW5pY2EgdHJhZHV6aW9uZSBpbiBpdGFsaWFubywgcGVyIGRlZmluaXJlIHBpw7kgdHJhZHV6aW9uaSBzdWwgbGF0byBkZXN0cm8gZGVsbGEgZnJlY2NpYSBiaXNvZ25hIGNvbmNhdGVuYXJsZSBjb24gbGEgdmlyZ29sYSwgYWQgZXNlbXBpbyBcImVuLT5pdCxqcCxlY2NcIlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGxlZnQgVmFsb3JlIGRlbGxhIGZyYXNlIHBlciBsYSBsaW5ndWEgc3BlY2lmaWNhdGEgbmVsIGxhdG8gaW1tZWRpYXRhbWVudGUgc2luaXN0cm8gYWxsYSBmcmVjY2lhIGRlbCBwYXJhbWV0cm8gKipkaXJlY3Rpb24qKlxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHJpZ2h0IEFycmF5IGNvbiBpIHZhbG9yaSBmYWNlbnRpIHJpZmVyaW1lbnRvIGFsbCdOLWVzaW1hIGxpbmd1YSBkZWwgbGF0byBkZXN0cm8gZGVsIHBhcmFtZXRybyAqKmRpcmVjdGlvbioqXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBzZXQoZGlyZWN0aW9uOiBzdHJpbmcsIGxlZnQ6IHN0cmluZywgcmlnaHQ6IHN0cmluZ1tdKSB7XHJcbiAgICAgICAgbGV0IHBhcnNpbmdSZWdleCA9IC8oW2EtekEtWl0rKVtcXHNdKi0+W1xcc10qKFthLXpBLVosXFxzXSspKy9nO1xyXG4gICAgICAgIHZhciBwYXJzaW5nUmVzID0gcGFyc2luZ1JlZ2V4LmV4ZWMoZGlyZWN0aW9uKTtcclxuXHJcbiAgICAgICAgbGV0IGZyb20gPSBwYXJzaW5nUmVzWzFdO1xyXG4gICAgICAgIGxldCB0bzogc3RyaW5nW10gPSBwYXJzaW5nUmVzWzJdLnJlcGxhY2UoL1xccy9nLCAnJykuc3BsaXQoJywnKTtcclxuICAgICAgICBsZXQgbG9jYWxlRnJvbSA9IExvY2FsZURlZmluaXRpb25zLmdldEJ5QWxpYXMoZnJvbSk7XHJcbiAgICAgICAgdGhpcy5fc2V0KGxlZnQsIGxvY2FsZUZyb20uaWQsIGxlZnQpO1xyXG5cclxuICAgICAgICB0by5mb3JFYWNoKCh0LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbG9jYWxlVG8gPSBMb2NhbGVEZWZpbml0aW9ucy5nZXRCeUFsaWFzKHQpO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXQobGVmdCwgbG9jYWxlVG8uaWQsIHJpZ2h0W2luZGV4XSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJbXBvc3RhIGFsbCdpbnRlcm5vIGRlbGxhIGNhY2hlIHNwZWNpZmljYXRhIHVuJ3VuaWNhIHRyYWR1emlvbmUgcGFydGVuZG8gZGEgdW4gdGVzdG8gZGkgYmFzZVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gdGV4dCBUZXN0byBkYSB0cmFkdXJyZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGN1bHR1cmUgTGluZ3VhIHBlciBjdWkgaW5zZXJpcmUgbGEgdHJhZHV6aW9uZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRyYW5zbGF0aW9uIFRyYWR1emlvbmUgZGVsICoqdGV4dCoqIG5lbGxhIGxpbmd1YSBzcGVjaWZpY2F0YSBkYSAqKmN1bHR1cmUqKlxyXG4gICAgICogQHBhcmFtIHtib29sZWFufSB0b2tlbiBJbmRpY2Egc2UgaWwgKip0ZXh0Kiogw6ggdW4gdG9rZW4gbyDDqCB1bmEgZnJhc2Ugbm9ybWFsZVxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9zZXQodGV4dDogc3RyaW5nLCBjdWx0dXJlOiBzdHJpbmcsIHRyYW5zbGF0aW9uOiBzdHJpbmcsIHRva2VuPzogYm9vbGVhbikge1xyXG4gICAgICAgIGxldCBpdGVtID0gdGhpcy5nZXQodGV4dCwgdG9rZW4pO1xyXG4gICAgICAgIGlmICghaXRlbSkge1xyXG4gICAgICAgICAgICB0aGlzLkxvY0NhY2hlW3RleHRdID0gbmV3IEl0ZW1Mb2NhbGl6YXRpb24odG9rZW4sIHRleHQsIFtuZXcgU3BlY2lhbGl6ZWRMb2NhbGl6YXRpb24oY3VsdHVyZSwgdHJhbnNsYXRpb24pXSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciB0cnMgPSB0aGlzLnRyYW5zbGF0aW9uQnlDdWx0dXJlKGl0ZW0sIGN1bHR1cmUpO1xyXG4gICAgICAgIGlmICh0cnMpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwiTG9jYWxpemF0aW9uIGFscmVhZHkgbG9hZGVkIGZvciBzZW50ZW5jZSAnXCIgKyB0ZXh0ICsgXCInIGFuZCBjdWx0dXJlIFwiICsgY3VsdHVyZSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGl0ZW0udHJhbnNsYXRpb25zLnB1c2gobmV3IFNwZWNpYWxpemVkTG9jYWxpemF0aW9uKGN1bHR1cmUsIHRyYW5zbGF0aW9uKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBQYXJ0ZW5kbyBkYSB1bmEgY2FjaGUgZGkgbG9jYWxpenphemlvbmUsIGRhdG8gdW4gdGVzdG8gY2hlIHB1w7IgZXNzZXJlIG8gbWVubyB1biB0b2tlbiwgY2VyY2EgcXVlbGwnZWxlbWVudG8gYWxsJ2ludGVybm8gZGVsbGEgY2FjaGVcclxuICAgICAqIFxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IHRleHQgVGVzdG8gZGEgY2VyY2FyZSBuZWxsYSAqKkxvY0NhY2hlKipcclxuICAgICAqIEBwYXJhbSB7Ym9vbGVhbn0gYWxsb3d0b2tlbnMgSW5kaWNhIHNlIGwnZWxlbWVudG8gY2VyY2F0byBwdcOyIGVzc2VyZSB1biB0b2tlbiBvIHNlIGRldidlc3NlcmUgcGVyIGZvcnphIHVuYSBmcmFzZSAocGVyIGV2aXRhcmUgcmFyaSBcclxuICAgICAqIGNhc2kgZGkgY29sbGlzaW9uZSBpbiBjdWkgbWFnYXJpIHVuIHRva2VuIMOoIHVndWFsZSBhIHVuYSBmcmFzZSB0cmFkb3R0YSlcclxuICAgICAqIFxyXG4gICAgICogQHJldHVybnMge0l0ZW1Mb2NhbGl6YXRpb259IEluZm9ybWF6aW9uaSBkaSBsb2NhbGl6emF6aW9uZSBwZXIgaWwgKip0ZXh0KiogY2VyY2F0b1xyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0KHRleHQ6IHN0cmluZywgYWxsb3d0b2tlbnM6IGJvb2xlYW4pOiBJdGVtTG9jYWxpemF0aW9uIHtcclxuICAgICAgICBsZXQgcG9zc2libGVJdGVtOiBJdGVtTG9jYWxpemF0aW9uID0gdGhpcy5Mb2NDYWNoZVt0ZXh0XTtcclxuICAgICAgICBpZiAoIXBvc3NpYmxlSXRlbSlcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcblxyXG4gICAgICAgIHZhciBpdGVtID0gYWxsb3d0b2tlbnMgfHwgIXBvc3NpYmxlSXRlbS50b2tlbiA/IHBvc3NpYmxlSXRlbSA6IG51bGw7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW07XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBEYXRlIGxlIGluZm9ybWF6aW9uaSBkaSBsb2NhbGl6emF6aW9uZSBwZXIgdW4gdGVzdG8gY2VyY2EgZSByZXN0aXR1aXNjZSBsYSB0cmFkdXppb25lIHBlciB1bmEgbGluZ3VhIHNwZWNpZmljYVxyXG4gICAgICogXHJcbiAgICAgKiBAcGFyYW0ge0l0ZW1Mb2NhbGl6YXRpb259IEluZm9ybWF6aW9uaSBkaSBsb2NhbGl6emF6aW9uZVxyXG4gICAgICogQHBhcmFtIHtzdHJpbmd9IGN1bHR1cmUgTGluZ3VhIGRlbGxhIHRyYWR1emlvbmUgcmljaGllc3RhXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtTcGVjaWFsaXplZExvY2FsaXphdGlvbn0gSW5mb3JtYXppb25pIGRpIGxvY2FsaXp6YXppb25lIHNwZWNpZmljaGUgZGVsbGEgbGluZ3VhIHJpY2hpZXN0YVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgdHJhbnNsYXRpb25CeUN1bHR1cmUoaXRlbTogSXRlbUxvY2FsaXphdGlvbiwgY3VsdHVyZTogc3RyaW5nKTogU3BlY2lhbGl6ZWRMb2NhbGl6YXRpb24ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbS50cmFuc2xhdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IHRybCA9IGl0ZW0udHJhbnNsYXRpb25zW2ldO1xyXG4gICAgICAgICAgICBpZiAodHJsLmN1bHR1cmUgPT0gY3VsdHVyZSlcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cmw7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// Angular
|
|
2
|
+
import { Injectable } from "@angular/core";
|
|
3
|
+
// RXJS
|
|
4
|
+
import { of } from "rxjs";
|
|
5
|
+
import { first } from "rxjs/operators";
|
|
6
|
+
import { LocalePersistor } from "./LocalePersistor";
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
export class LocalStorageLocalePersistor extends LocalePersistor {
|
|
9
|
+
/** @ignore Vedi classe base */
|
|
10
|
+
persist(locale) {
|
|
11
|
+
localStorage.setItem(this.LOCALE, locale);
|
|
12
|
+
return of(true).pipe(first());
|
|
13
|
+
}
|
|
14
|
+
/** @ignore Vedi classe base */
|
|
15
|
+
recover() {
|
|
16
|
+
var ret = localStorage.getItem(this.LOCALE);
|
|
17
|
+
return of(ret).pipe(first());
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
LocalStorageLocalePersistor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LocalStorageLocalePersistor, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
21
|
+
LocalStorageLocalePersistor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LocalStorageLocalePersistor });
|
|
22
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LocalStorageLocalePersistor, decorators: [{
|
|
23
|
+
type: Injectable
|
|
24
|
+
}] });
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxTdG9yYWdlQ2FjaGVQZXJzaXN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvbG9jYWxlLXBlcnNpc3Rvci9Mb2NhbFN0b3JhZ2VDYWNoZVBlcnNpc3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxVQUFVO0FBQ1YsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUzQyxPQUFPO0FBQ1AsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDOztBQUdwRCxNQUFNLE9BQU8sMkJBQTRCLFNBQVEsZUFBZTtJQUU1RCwrQkFBK0I7SUFDeEIsT0FBTyxDQUFDLE1BQWM7UUFDekIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRCwrQkFBK0I7SUFDeEIsT0FBTztRQUNWLElBQUksR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7O3dIQVpRLDJCQUEyQjs0SEFBM0IsMkJBQTJCOzJGQUEzQiwyQkFBMkI7a0JBRHZDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBBbmd1bGFyXHJcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5cclxuLy8gUlhKU1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBvZiB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IGZpcnN0IH0gZnJvbSBcInJ4anMvb3BlcmF0b3JzXCI7XHJcbmltcG9ydCB7IExvY2FsZVBlcnNpc3RvciB9IGZyb20gXCIuL0xvY2FsZVBlcnNpc3RvclwiO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgTG9jYWxTdG9yYWdlTG9jYWxlUGVyc2lzdG9yIGV4dGVuZHMgTG9jYWxlUGVyc2lzdG9yIHtcclxuXHJcbiAgICAvKiogQGlnbm9yZSBWZWRpIGNsYXNzZSBiYXNlICovXHJcbiAgICBwdWJsaWMgcGVyc2lzdChsb2NhbGU6IHN0cmluZyk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuTE9DQUxFLCBsb2NhbGUpO1xyXG4gICAgICAgIHJldHVybiBvZih0cnVlKS5waXBlKGZpcnN0KCkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaWdub3JlIFZlZGkgY2xhc3NlIGJhc2UgKi9cclxuICAgIHB1YmxpYyByZWNvdmVyKCk6IE9ic2VydmFibGU8c3RyaW5nPiB7XHJcbiAgICAgICAgdmFyIHJldCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuTE9DQUxFKTtcclxuICAgICAgICByZXR1cm4gb2YocmV0KS5waXBlKGZpcnN0KCkpO1xyXG4gICAgfVxyXG59Il19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Classe astratta che rappresenta lo stato di persistenza fra la libreria e uno storage */
|
|
2
|
+
export class LocalePersistor {
|
|
3
|
+
constructor() {
|
|
4
|
+
/** Chiave su cui salvare il locale */
|
|
5
|
+
this.LOCALE = "LOCALE";
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9jYWxlUGVyc2lzdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbG9jYWxpemF0aW9ucy9zcmMvbGliL2xvY2FsZS1wZXJzaXN0b3IvTG9jYWxlUGVyc2lzdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLDRGQUE0RjtBQUM1RixNQUFNLE9BQWdCLGVBQWU7SUFBckM7UUFFSSxzQ0FBc0M7UUFDNUIsV0FBTSxHQUFXLFFBQVEsQ0FBQztJQWV4QyxDQUFDO0NBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSBcInJ4anNcIjtcclxuXHJcbi8qKiBDbGFzc2UgYXN0cmF0dGEgY2hlIHJhcHByZXNlbnRhIGxvIHN0YXRvIGRpIHBlcnNpc3RlbnphIGZyYSBsYSBsaWJyZXJpYSBlIHVubyBzdG9yYWdlICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBMb2NhbGVQZXJzaXN0b3Ige1xyXG5cclxuICAgIC8qKiBDaGlhdmUgc3UgY3VpIHNhbHZhcmUgaWwgbG9jYWxlICovXHJcbiAgICBwcm90ZWN0ZWQgTE9DQUxFOiBzdHJpbmcgPSBcIkxPQ0FMRVwiO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogU2FsdmEgaWwgTG9jYWxlXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhbGUgTG9jYWxlIGRhIHNhbHZhcmVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFic3RyYWN0IHBlcnNpc3QobG9jYWxlOiBzdHJpbmcpOiBPYnNlcnZhYmxlPGJvb2xlYW4+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogUmVjdXBlcmEgaWwgTG9jYWxlXHJcbiAgICAgKiBcclxuICAgICAqIEByZXR1cm5zIHtPYnNlcnZhYmxlPHN0cmluZz59IFZhbG9yZSBzYWx2YXRvIHBlciBpbCBsb2NhbGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFic3RyYWN0IHJlY292ZXIoKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xyXG59Il19
|
|
@@ -4,6 +4,8 @@ import { LocalizationService } from './localizations.service';
|
|
|
4
4
|
import { LocDatePipe } from './pipes/loc_date.pipe';
|
|
5
5
|
import { LocalizePipe } from './pipes/localize.pipe';
|
|
6
6
|
import { BaseLocalization } from './core/localization.base';
|
|
7
|
+
import { LocalePersistor } from './locale-persistor/LocalePersistor';
|
|
8
|
+
import { LocalStorageLocalePersistor } from './locale-persistor/LocalStorageCachePersistor';
|
|
7
9
|
import * as i0 from "@angular/core";
|
|
8
10
|
export class LocalizationModule {
|
|
9
11
|
static forRoot(config) {
|
|
@@ -12,7 +14,8 @@ export class LocalizationModule {
|
|
|
12
14
|
providers: [
|
|
13
15
|
LocalizationService,
|
|
14
16
|
BaseLocalization,
|
|
15
|
-
{ provide: LOC_LOCALE, useValue: config?.
|
|
17
|
+
{ provide: LOC_LOCALE, useValue: config?.defaultLocale || 'it-IT' },
|
|
18
|
+
{ provide: LocalePersistor, useClass: config?.localePersistor || LocalStorageLocalePersistor },
|
|
16
19
|
]
|
|
17
20
|
};
|
|
18
21
|
}
|
|
@@ -27,4 +30,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImpor
|
|
|
27
30
|
exports: [LocalizePipe, LocDatePipe]
|
|
28
31
|
}]
|
|
29
32
|
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWxpemF0aW9ucy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9sb2NhbGl6YXRpb25zL3NyYy9saWIvbG9jYWxpemF0aW9ucy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN0QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUU5RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzVELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQzs7QUFNNUYsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixNQUFNLENBQUMsT0FBTyxDQUFDLE1BQWlDO1FBQzlDLE9BQU87WUFDTCxRQUFRLEVBQUUsa0JBQWtCO1lBQzVCLFNBQVMsRUFBRTtnQkFDVCxtQkFBbUI7Z0JBQ25CLGdCQUFnQjtnQkFDaEIsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsYUFBYSxJQUFJLE9BQU8sRUFBRTtnQkFDbkUsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsZUFBZSxJQUFJLDJCQUEyQixFQUFFO2FBQy9GO1NBQ0YsQ0FBQztJQUNKLENBQUM7OytHQVhVLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQUhkLFlBQVksRUFBRSxXQUFXLGFBQzlCLFlBQVksRUFBRSxXQUFXO2dIQUV4QixrQkFBa0I7MkZBQWxCLGtCQUFrQjtrQkFKOUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO29CQUN6QyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO2lCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBNb2R1bGVXaXRoUHJvdmlkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExPQ19MT0NBTEUgfSBmcm9tICcuL3Rva2Vucyc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvblNlcnZpY2UgfSBmcm9tICcuL2xvY2FsaXphdGlvbnMuc2VydmljZSc7XHJcbmltcG9ydCB7IExvY2FsaXphdGlvbk1vZHVsZUNvbmZpZyB9IGZyb20gJy4vbW9kZWxzJztcclxuaW1wb3J0IHsgTG9jRGF0ZVBpcGUgfSBmcm9tICcuL3BpcGVzL2xvY19kYXRlLnBpcGUnO1xyXG5pbXBvcnQgeyBMb2NhbGl6ZVBpcGUgfSBmcm9tICcuL3BpcGVzL2xvY2FsaXplLnBpcGUnO1xyXG5pbXBvcnQgeyBCYXNlTG9jYWxpemF0aW9uIH0gZnJvbSAnLi9jb3JlL2xvY2FsaXphdGlvbi5iYXNlJztcclxuaW1wb3J0IHsgTG9jYWxlUGVyc2lzdG9yIH0gZnJvbSAnLi9sb2NhbGUtcGVyc2lzdG9yL0xvY2FsZVBlcnNpc3Rvcic7XHJcbmltcG9ydCB7IExvY2FsU3RvcmFnZUxvY2FsZVBlcnNpc3RvciB9IGZyb20gJy4vbG9jYWxlLXBlcnNpc3Rvci9Mb2NhbFN0b3JhZ2VDYWNoZVBlcnNpc3Rvcic7XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gIGRlY2xhcmF0aW9uczogW0xvY2FsaXplUGlwZSwgTG9jRGF0ZVBpcGVdLFxyXG4gIGV4cG9ydHM6IFtMb2NhbGl6ZVBpcGUsIExvY0RhdGVQaXBlXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgTG9jYWxpemF0aW9uTW9kdWxlIHtcclxuICBzdGF0aWMgZm9yUm9vdChjb25maWc/OiBMb2NhbGl6YXRpb25Nb2R1bGVDb25maWcpOiBNb2R1bGVXaXRoUHJvdmlkZXJzPExvY2FsaXphdGlvbk1vZHVsZT4ge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IExvY2FsaXphdGlvbk1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgTG9jYWxpemF0aW9uU2VydmljZSxcclxuICAgICAgICBCYXNlTG9jYWxpemF0aW9uLFxyXG4gICAgICAgIHsgcHJvdmlkZTogTE9DX0xPQ0FMRSwgdXNlVmFsdWU6IGNvbmZpZz8uZGVmYXVsdExvY2FsZSB8fCAnaXQtSVQnIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBMb2NhbGVQZXJzaXN0b3IsIHVzZUNsYXNzOiBjb25maWc/LmxvY2FsZVBlcnNpc3RvciB8fCBMb2NhbFN0b3JhZ2VMb2NhbGVQZXJzaXN0b3IgfSxcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn0iXX0=
|