valtech-components 2.0.970 → 2.0.972
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/hint/hint.component.mjs +3 -3
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/pin-input/pin-input.component.mjs +3 -3
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +3 -3
- package/esm2022/lib/components/organisms/form/form.component.mjs +54 -12
- package/esm2022/lib/components/organisms/preferences-view/preferences-view.component.mjs +263 -0
- package/esm2022/lib/components/organisms/preferences-view/preferences-view.i18n.mjs +37 -0
- package/esm2022/lib/components/organisms/preferences-view/preferences.routes.mjs +29 -0
- package/esm2022/lib/components/organisms/preferences-view/types.mjs +2 -0
- package/esm2022/lib/components/organisms/profile-view/profile-view.component.mjs +601 -0
- package/esm2022/lib/components/organisms/profile-view/profile-view.i18n.mjs +75 -0
- package/esm2022/lib/components/organisms/profile-view/profile.routes.mjs +28 -0
- package/esm2022/lib/components/organisms/profile-view/types.mjs +2 -0
- package/esm2022/lib/components/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +7 -2
- package/fesm2022/valtech-components.mjs +1351 -395
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/article/article.component.d.ts +4 -1
- package/lib/components/organisms/form/form.component.d.ts +23 -0
- package/lib/components/organisms/preferences-view/preferences-view.component.d.ts +53 -0
- package/lib/components/organisms/preferences-view/preferences-view.i18n.d.ts +12 -0
- package/lib/components/organisms/preferences-view/preferences.routes.d.ts +24 -0
- package/lib/components/organisms/preferences-view/types.d.ts +35 -0
- package/lib/components/organisms/profile-view/profile-view.component.d.ts +84 -0
- package/lib/components/organisms/profile-view/profile-view.i18n.d.ts +12 -0
- package/lib/components/organisms/profile-view/profile.routes.d.ts +23 -0
- package/lib/components/organisms/profile-view/types.d.ts +32 -0
- package/lib/components/types.d.ts +14 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +6 -1
- package/esm2022/lib/components/organisms/form/form-footer/form-footer.component.mjs +0 -83
- package/lib/components/organisms/form/form-footer/form-footer.component.d.ts +0 -17
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import { CommonModule } from '@angular/common';
|
|
2
|
+
import { Component, computed, inject, Input, signal } from '@angular/core';
|
|
3
|
+
import { ActivatedRoute } from '@angular/router';
|
|
4
|
+
import { DisplayComponent } from '../../atoms/display/display.component';
|
|
5
|
+
import { TextComponent } from '../../atoms/text/text.component';
|
|
6
|
+
import { TitleComponent } from '../../atoms/title/title.component';
|
|
7
|
+
import { LanguageSelectorComponent } from '../../molecules/language-selector/language-selector.component';
|
|
8
|
+
import { SegmentControlComponent } from '../../molecules/segment-control/segment-control.component';
|
|
9
|
+
import { I18nService } from '../../../services/i18n';
|
|
10
|
+
import { NavigationService } from '../../../services/navigation/navigation.service';
|
|
11
|
+
import { PreferencesService } from '../../../services/preferences/preferences.service';
|
|
12
|
+
import { ValtechErrorService } from '../../../services/errors/valtech-error.service';
|
|
13
|
+
import { PREFERENCES_VIEW_I18N } from './preferences-view.i18n';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
const DEFAULT_NAMESPACE = 'Settings.General';
|
|
16
|
+
const DEFAULT_LANGUAGES = ['es', 'en'];
|
|
17
|
+
/**
|
|
18
|
+
* `val-preferences-view` — vista de preferencias de UI cross-app (tema +
|
|
19
|
+
* idioma) full-feature autocontenida (organism). Promovida desde `showcase`
|
|
20
|
+
* bajo el proceso de ADR-021.
|
|
21
|
+
*
|
|
22
|
+
* Backend integration 100% en `PreferencesService`:
|
|
23
|
+
* - Read: listener Firestore reactivo (`prefs.theme()` / `prefs.language()`).
|
|
24
|
+
* - Write: `PUT /v2/auth/preferences` (`prefs.setTheme` / `prefs.setLanguage`).
|
|
25
|
+
* El cliente NUNCA escribe Firestore directo.
|
|
26
|
+
*
|
|
27
|
+
* NO renderiza ion-content — vive dentro de val-page-wrapper.
|
|
28
|
+
*
|
|
29
|
+
* Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
|
|
30
|
+
* proveyó el namespace configurado (default `Settings.General`).
|
|
31
|
+
*/
|
|
32
|
+
export class PreferencesViewComponent {
|
|
33
|
+
/** Namespace i18n resuelto (capturado para llamadas no-reactivas). */
|
|
34
|
+
get ns() {
|
|
35
|
+
return this.resolvedConfig().i18nNamespace;
|
|
36
|
+
}
|
|
37
|
+
constructor() {
|
|
38
|
+
this.nav = inject(NavigationService);
|
|
39
|
+
this.prefs = inject(PreferencesService);
|
|
40
|
+
this.i18n = inject(I18nService);
|
|
41
|
+
this.errors = inject(ValtechErrorService);
|
|
42
|
+
this.route = inject(ActivatedRoute, { optional: true });
|
|
43
|
+
/** Config mergeada con defaults. @Input gana sobre route data. */
|
|
44
|
+
this.resolvedConfig = computed(() => {
|
|
45
|
+
const fromRoute = (this.route?.snapshot.data['preferencesConfig'] ?? {});
|
|
46
|
+
const merged = { ...fromRoute, ...(this.config ?? {}) };
|
|
47
|
+
return {
|
|
48
|
+
showTheme: merged.showTheme ?? true,
|
|
49
|
+
showLanguage: merged.showLanguage ?? true,
|
|
50
|
+
supportedLanguages: merged.supportedLanguages ?? DEFAULT_LANGUAGES,
|
|
51
|
+
i18nNamespace: merged.i18nNamespace ?? DEFAULT_NAMESPACE,
|
|
52
|
+
onThemeChanged: merged.onThemeChanged,
|
|
53
|
+
onLanguageChanged: merged.onLanguageChanged,
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
this.saving = signal(false);
|
|
57
|
+
this.pageTitle = computed(() => this.t('pageTitle'));
|
|
58
|
+
this.pageDescription = computed(() => this.t('pageDescription'));
|
|
59
|
+
this.themeTitle = computed(() => this.t('themeTitle'));
|
|
60
|
+
this.themeHint = computed(() => this.t('themeHint'));
|
|
61
|
+
this.langTitle = computed(() => this.t('languageTitle'));
|
|
62
|
+
this.langHint = computed(() => this.t('languageHint'));
|
|
63
|
+
this.themeProps = computed(() => ({
|
|
64
|
+
value: this.prefs.theme(),
|
|
65
|
+
disabled: this.saving(),
|
|
66
|
+
options: [
|
|
67
|
+
{ value: 'light', label: this.t('themeLight') },
|
|
68
|
+
{ value: 'dark', label: this.t('themeDark') },
|
|
69
|
+
{ value: 'auto', label: this.t('themeAuto') },
|
|
70
|
+
],
|
|
71
|
+
}));
|
|
72
|
+
this.langProps = computed(() => ({
|
|
73
|
+
currentLanguage: this.prefs.language(),
|
|
74
|
+
availableLanguages: this.resolvedConfig().supportedLanguages,
|
|
75
|
+
showLabel: false,
|
|
76
|
+
disabled: this.saving(),
|
|
77
|
+
expand: 'block',
|
|
78
|
+
fill: 'outline',
|
|
79
|
+
}));
|
|
80
|
+
// Auto-registro i18n — respeta override del consumer. El namespace puede
|
|
81
|
+
// venir de @Input.config o del route data; lo resolvemos acá.
|
|
82
|
+
const ns = this.ns;
|
|
83
|
+
if (!this.i18n.hasNamespace(ns)) {
|
|
84
|
+
this.i18n.registerContent(ns, PREFERENCES_VIEW_I18N);
|
|
85
|
+
}
|
|
86
|
+
this.nav.setBackHeader('pageTitle', ns, { withMenu: true });
|
|
87
|
+
}
|
|
88
|
+
async onThemeChange(value) {
|
|
89
|
+
if (this.saving() || value === this.prefs.theme())
|
|
90
|
+
return;
|
|
91
|
+
const theme = value;
|
|
92
|
+
await this.dispatch(() => this.prefs.setTheme(theme), () => this.resolvedConfig().onThemeChanged?.(theme));
|
|
93
|
+
}
|
|
94
|
+
async onLanguageChange(value) {
|
|
95
|
+
const lang = value;
|
|
96
|
+
if (!this.resolvedConfig().supportedLanguages.includes(lang))
|
|
97
|
+
return;
|
|
98
|
+
if (this.saving() || value === this.prefs.language())
|
|
99
|
+
return;
|
|
100
|
+
await this.dispatch(() => this.prefs.setLanguage(lang), () => this.resolvedConfig().onLanguageChanged?.(lang));
|
|
101
|
+
}
|
|
102
|
+
async dispatch(fn, onSuccess) {
|
|
103
|
+
this.saving.set(true);
|
|
104
|
+
try {
|
|
105
|
+
await fn();
|
|
106
|
+
onSuccess?.();
|
|
107
|
+
}
|
|
108
|
+
catch (err) {
|
|
109
|
+
this.errors.handle(err, {
|
|
110
|
+
context: 'settings.preferences.save',
|
|
111
|
+
fallbackKey: 'saveError',
|
|
112
|
+
i18nNamespace: this.ns,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
this.saving.set(false);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
/** Lee del namespace configurado. */
|
|
120
|
+
t(key) {
|
|
121
|
+
return this.i18n.t(key, this.ns);
|
|
122
|
+
}
|
|
123
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PreferencesViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
124
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: PreferencesViewComponent, isStandalone: true, selector: "val-preferences-view", inputs: { config: "config" }, ngImport: i0, template: `
|
|
125
|
+
<div class="page">
|
|
126
|
+
<header class="page-header">
|
|
127
|
+
<val-display [props]="{ size: 'small', color: 'dark', content: pageTitle() }" />
|
|
128
|
+
<val-title
|
|
129
|
+
[props]="{
|
|
130
|
+
size: 'large',
|
|
131
|
+
color: 'dark',
|
|
132
|
+
bold: false,
|
|
133
|
+
content: pageDescription(),
|
|
134
|
+
}"
|
|
135
|
+
/>
|
|
136
|
+
</header>
|
|
137
|
+
|
|
138
|
+
@if (resolvedConfig().showTheme) {
|
|
139
|
+
<section class="settings-section">
|
|
140
|
+
<val-title
|
|
141
|
+
[props]="{
|
|
142
|
+
size: 'medium',
|
|
143
|
+
color: 'dark',
|
|
144
|
+
bold: true,
|
|
145
|
+
content: themeTitle(),
|
|
146
|
+
}"
|
|
147
|
+
/>
|
|
148
|
+
<div class="section-body">
|
|
149
|
+
<val-text
|
|
150
|
+
[props]="{
|
|
151
|
+
size: 'medium',
|
|
152
|
+
color: 'dark',
|
|
153
|
+
bold: false,
|
|
154
|
+
content: themeHint(),
|
|
155
|
+
}"
|
|
156
|
+
/>
|
|
157
|
+
<val-segment-control [props]="themeProps()" (segmentChange)="onThemeChange($event)" />
|
|
158
|
+
</div>
|
|
159
|
+
</section>
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
@if (resolvedConfig().showLanguage) {
|
|
163
|
+
<section class="settings-section">
|
|
164
|
+
<val-title
|
|
165
|
+
[props]="{
|
|
166
|
+
size: 'medium',
|
|
167
|
+
color: 'dark',
|
|
168
|
+
bold: true,
|
|
169
|
+
content: langTitle(),
|
|
170
|
+
}"
|
|
171
|
+
/>
|
|
172
|
+
<div class="section-body">
|
|
173
|
+
<val-text
|
|
174
|
+
[props]="{
|
|
175
|
+
size: 'medium',
|
|
176
|
+
color: 'dark',
|
|
177
|
+
bold: false,
|
|
178
|
+
content: langHint(),
|
|
179
|
+
}"
|
|
180
|
+
/>
|
|
181
|
+
<val-language-selector [props]="langProps()" (languageChange)="onLanguageChange($event)" />
|
|
182
|
+
</div>
|
|
183
|
+
</section>
|
|
184
|
+
}
|
|
185
|
+
</div>
|
|
186
|
+
`, isInline: true, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.section-body{display:flex;flex-direction:column;gap:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: SegmentControlComponent, selector: "val-segment-control", inputs: ["preset", "props"], outputs: ["segmentChange"] }, { kind: "component", type: LanguageSelectorComponent, selector: "val-language-selector", inputs: ["props"], outputs: ["languageChange"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }] }); }
|
|
187
|
+
}
|
|
188
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PreferencesViewComponent, decorators: [{
|
|
189
|
+
type: Component,
|
|
190
|
+
args: [{ selector: 'val-preferences-view', standalone: true, imports: [
|
|
191
|
+
CommonModule,
|
|
192
|
+
SegmentControlComponent,
|
|
193
|
+
LanguageSelectorComponent,
|
|
194
|
+
DisplayComponent,
|
|
195
|
+
TitleComponent,
|
|
196
|
+
TextComponent,
|
|
197
|
+
], template: `
|
|
198
|
+
<div class="page">
|
|
199
|
+
<header class="page-header">
|
|
200
|
+
<val-display [props]="{ size: 'small', color: 'dark', content: pageTitle() }" />
|
|
201
|
+
<val-title
|
|
202
|
+
[props]="{
|
|
203
|
+
size: 'large',
|
|
204
|
+
color: 'dark',
|
|
205
|
+
bold: false,
|
|
206
|
+
content: pageDescription(),
|
|
207
|
+
}"
|
|
208
|
+
/>
|
|
209
|
+
</header>
|
|
210
|
+
|
|
211
|
+
@if (resolvedConfig().showTheme) {
|
|
212
|
+
<section class="settings-section">
|
|
213
|
+
<val-title
|
|
214
|
+
[props]="{
|
|
215
|
+
size: 'medium',
|
|
216
|
+
color: 'dark',
|
|
217
|
+
bold: true,
|
|
218
|
+
content: themeTitle(),
|
|
219
|
+
}"
|
|
220
|
+
/>
|
|
221
|
+
<div class="section-body">
|
|
222
|
+
<val-text
|
|
223
|
+
[props]="{
|
|
224
|
+
size: 'medium',
|
|
225
|
+
color: 'dark',
|
|
226
|
+
bold: false,
|
|
227
|
+
content: themeHint(),
|
|
228
|
+
}"
|
|
229
|
+
/>
|
|
230
|
+
<val-segment-control [props]="themeProps()" (segmentChange)="onThemeChange($event)" />
|
|
231
|
+
</div>
|
|
232
|
+
</section>
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
@if (resolvedConfig().showLanguage) {
|
|
236
|
+
<section class="settings-section">
|
|
237
|
+
<val-title
|
|
238
|
+
[props]="{
|
|
239
|
+
size: 'medium',
|
|
240
|
+
color: 'dark',
|
|
241
|
+
bold: true,
|
|
242
|
+
content: langTitle(),
|
|
243
|
+
}"
|
|
244
|
+
/>
|
|
245
|
+
<div class="section-body">
|
|
246
|
+
<val-text
|
|
247
|
+
[props]="{
|
|
248
|
+
size: 'medium',
|
|
249
|
+
color: 'dark',
|
|
250
|
+
bold: false,
|
|
251
|
+
content: langHint(),
|
|
252
|
+
}"
|
|
253
|
+
/>
|
|
254
|
+
<val-language-selector [props]="langProps()" (languageChange)="onLanguageChange($event)" />
|
|
255
|
+
</div>
|
|
256
|
+
</section>
|
|
257
|
+
}
|
|
258
|
+
</div>
|
|
259
|
+
`, styles: [".page{padding:16px 0;max-width:720px;margin:0 auto}.settings-section{padding:16px 0}.settings-section+.settings-section{border-top:1px solid var(--val-border-color, rgba(0, 0, 0, .08))}.section-body{display:flex;flex-direction:column;gap:10px}\n"] }]
|
|
260
|
+
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
261
|
+
type: Input
|
|
262
|
+
}] } });
|
|
263
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3ByZWZlcmVuY2VzLXZpZXcvcHJlZmVyZW5jZXMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVqRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLCtEQUErRCxDQUFDO0FBRTFHLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJEQUEyRCxDQUFDO0FBR3BHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNwRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV2RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQztBQUdyRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7QUFFaEUsTUFBTSxpQkFBaUIsR0FBRyxrQkFBa0IsQ0FBQztBQUM3QyxNQUFNLGlCQUFpQixHQUEwQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FB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LEdBQVc7UUFDckIsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7K0dBakhVLHdCQUF3QjttR0FBeEIsd0JBQXdCLDhHQXBGekI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBOERULDhUQXJFQyxZQUFZLCtCQUNaLHVCQUF1Qix5SEFDdkIseUJBQXlCLGtIQUN6QixnQkFBZ0IsMkVBQ2hCLGNBQWMseUVBQ2QsYUFBYTs7NEZBc0ZKLHdCQUF3QjtrQkEvRnBDLFNBQVM7K0JBQ0Usc0JBQXNCLGNBQ3BCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLHVCQUF1Qjt3QkFDdkIseUJBQXlCO3dCQUN6QixnQkFBZ0I7d0JBQ2hCLGNBQWM7d0JBQ2QsYUFBYTtxQkFDZCxZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThEVDt3REFrQ1EsTUFBTTtzQkFBZCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2xhbmd1YWdlLXNlbGVjdG9yL2xhbmd1YWdlLXNlbGVjdG9yLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvbGFuZ3VhZ2Utc2VsZWN0b3IvdHlwZXMnO1xuaW1wb3J0IHsgU2VnbWVudENvbnRyb2xDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc2VnbWVudC1jb250cm9sL3NlZ21lbnQtY29udHJvbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VnbWVudENvbnRyb2xNZXRhZGF0YSB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWdtZW50LWNvbnRyb2wvdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBQcmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVmZXJlbmNlcy9wcmVmZXJlbmNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFByZWZlcmVuY2VzTGFuZ3VhZ2UsIFByZWZlcmVuY2VzVGhlbWUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVmZXJlbmNlcy9wcmVmZXJlbmNlcy50eXBlcyc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IFByZWZlcmVuY2VzVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgUFJFRkVSRU5DRVNfVklFV19JMThOIH0gZnJvbSAnLi9wcmVmZXJlbmNlcy12aWV3LmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5HZW5lcmFsJztcbmNvbnN0IERFRkFVTFRfTEFOR1VBR0VTOiBQcmVmZXJlbmNlc0xhbmd1YWdlW10gPSBbJ2VzJywgJ2VuJ107XG5cbi8qKlxuICogYHZhbC1wcmVmZXJlbmNlcy12aWV3YCDigJQgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIFVJIGNyb3NzLWFwcCAodGVtYSArXG4gKiBpZGlvbWEpIGZ1bGwtZmVhdHVyZSBhdXRvY29udGVuaWRhIChvcmdhbmlzbSkuIFByb21vdmlkYSBkZXNkZSBgc2hvd2Nhc2VgXG4gKiBiYWpvIGVsIHByb2Nlc28gZGUgQURSLTAyMS5cbiAqXG4gKiBCYWNrZW5kIGludGVncmF0aW9uIDEwMCUgZW4gYFByZWZlcmVuY2VzU2VydmljZWA6XG4gKiAgLSBSZWFkOiBsaXN0ZW5lciBGaXJlc3RvcmUgcmVhY3Rpdm8gKGBwcmVmcy50aGVtZSgpYCAvIGBwcmVmcy5sYW5ndWFnZSgpYCkuXG4gKiAgLSBXcml0ZTogYFBVVCAvdjIvYXV0aC9wcmVmZXJlbmNlc2AgKGBwcmVmcy5zZXRUaGVtZWAgLyBgcHJlZnMuc2V0TGFuZ3VhZ2VgKS5cbiAqICAgIEVsIGNsaWVudGUgTlVOQ0EgZXNjcmliZSBGaXJlc3RvcmUgZGlyZWN0by5cbiAqXG4gKiBOTyByZW5kZXJpemEgaW9uLWNvbnRlbnQg4oCUIHZpdmUgZGVudHJvIGRlIHZhbC1wYWdlLXdyYXBwZXIuXG4gKlxuICogQXV0by1yZWdpc3RyYSBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIGVuIGVsIGNvbnN0cnVjdG9yIHNpIGVsIGNvbnN1bWVyIG5vXG4gKiBwcm92ZXnDsyBlbCBuYW1lc3BhY2UgY29uZmlndXJhZG8gKGRlZmF1bHQgYFNldHRpbmdzLkdlbmVyYWxgKS5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXByZWZlcmVuY2VzLXZpZXcnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIFNlZ21lbnRDb250cm9sQ29tcG9uZW50LFxuICAgIExhbmd1YWdlU2VsZWN0b3JDb21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJwYWdlXCI+XG4gICAgICA8aGVhZGVyIGNsYXNzPVwicGFnZS1oZWFkZXJcIj5cbiAgICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGNvbnRlbnQ6IHBhZ2VUaXRsZSgpIH1cIiAvPlxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICBjb250ZW50OiBwYWdlRGVzY3JpcHRpb24oKSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICBAaWYgKHJlc29sdmVkQ29uZmlnKCkuc2hvd1RoZW1lKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2V0dGluZ3Mtc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtdGl0bGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiB0cnVlLFxuICAgICAgICAgICAgICBjb250ZW50OiB0aGVtZVRpdGxlKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uLWJvZHlcIj5cbiAgICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgICAgICAgY29udGVudDogdGhlbWVIaW50KCksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx2YWwtc2VnbWVudC1jb250cm9sIFtwcm9wc109XCJ0aGVtZVByb3BzKClcIiAoc2VnbWVudENoYW5nZSk9XCJvblRoZW1lQ2hhbmdlKCRldmVudClcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocmVzb2x2ZWRDb25maWcoKS5zaG93TGFuZ3VhZ2UpIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJzZXR0aW5ncy1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICAgIGJvbGQ6IHRydWUsXG4gICAgICAgICAgICAgIGNvbnRlbnQ6IGxhbmdUaXRsZSgpLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgLz5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbi1ib2R5XCI+XG4gICAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGxhbmdIaW50KCksXG4gICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx2YWwtbGFuZ3VhZ2Utc2VsZWN0b3IgW3Byb3BzXT1cImxhbmdQcm9wcygpXCIgKGxhbmd1YWdlQ2hhbmdlKT1cIm9uTGFuZ3VhZ2VDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLnBhZ2Uge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuICAgICAgLnNldHRpbmdzLXNlY3Rpb24ge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICB9XG4gICAgICAuc2V0dGluZ3Mtc2VjdGlvbiArIC5zZXR0aW5ncy1zZWN0aW9uIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgfVxuICAgICAgLnNlY3Rpb24tYm9keSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICBgLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQcmVmZXJlbmNlc1ZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgcHJlZnMgPSBpbmplY3QoUHJlZmVyZW5jZXNTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYHByZWZlcmVuY2VzQ29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoUHJlZmVyZW5jZXNSb3V0ZXNgKS5cbiAgICogYHJlc29sdmVkQ29uZmlnYCBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cy5cbiAgICovXG4gIEBJbnB1dCgpIGNvbmZpZz86IFByZWZlcmVuY2VzVmlld0NvbmZpZztcblxuICAvKiogQ29uZmlnIG1lcmdlYWRhIGNvbiBkZWZhdWx0cy4gQElucHV0IGdhbmEgc29icmUgcm91dGUgZGF0YS4gKi9cbiAgcmVhZG9ubHkgcmVzb2x2ZWRDb25maWcgPSBjb21wdXRlZDxcbiAgICBSZXF1aXJlZDxPbWl0PFByZWZlcmVuY2VzVmlld0NvbmZpZywgJ29uVGhlbWVDaGFuZ2VkJyB8ICdvbkxhbmd1YWdlQ2hhbmdlZCc+PiAmXG4gICAgICBQaWNrPFByZWZlcmVuY2VzVmlld0NvbmZpZywgJ29uVGhlbWVDaGFuZ2VkJyB8ICdvbkxhbmd1YWdlQ2hhbmdlZCc+XG4gID4oKCkgPT4ge1xuICAgIGNvbnN0IGZyb21Sb3V0ZSA9ICh0aGlzLnJvdXRlPy5zbmFwc2hvdC5kYXRhWydwcmVmZXJlbmNlc0NvbmZpZyddID8/IHt9KSBhcyBQcmVmZXJlbmNlc1ZpZXdDb25maWc7XG4gICAgY29uc3QgbWVyZ2VkOiBQcmVmZXJlbmNlc1ZpZXdDb25maWcgPSB7IC4uLmZyb21Sb3V0ZSwgLi4uKHRoaXMuY29uZmlnID8/IHt9KSB9O1xuICAgIHJldHVybiB7XG4gICAgICBzaG93VGhlbWU6IG1lcmdlZC5zaG93VGhlbWUgPz8gdHJ1ZSxcbiAgICAgIHNob3dMYW5ndWFnZTogbWVyZ2VkLnNob3dMYW5ndWFnZSA/PyB0cnVlLFxuICAgICAgc3VwcG9ydGVkTGFuZ3VhZ2VzOiBtZXJnZWQuc3VwcG9ydGVkTGFuZ3VhZ2VzID8/IERFRkFVTFRfTEFOR1VBR0VTLFxuICAgICAgaTE4bk5hbWVzcGFjZTogbWVyZ2VkLmkxOG5OYW1lc3BhY2UgPz8gREVGQVVMVF9OQU1FU1BBQ0UsXG4gICAgICBvblRoZW1lQ2hhbmdlZDogbWVyZ2VkLm9uVGhlbWVDaGFuZ2VkLFxuICAgICAgb25MYW5ndWFnZUNoYW5nZWQ6IG1lcmdlZC5vbkxhbmd1YWdlQ2hhbmdlZCxcbiAgICB9O1xuICB9KTtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gcmVzdWVsdG8gKGNhcHR1cmFkbyBwYXJhIGxsYW1hZGFzIG5vLXJlYWN0aXZhcykuICovXG4gIHByaXZhdGUgZ2V0IG5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRDb25maWcoKS5pMThuTmFtZXNwYWNlO1xuICB9XG5cbiAgcmVhZG9ubHkgc2F2aW5nID0gc2lnbmFsKGZhbHNlKTtcblxuICByZWFkb25seSBwYWdlVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ3BhZ2VUaXRsZScpKTtcbiAgcmVhZG9ubHkgcGFnZURlc2NyaXB0aW9uID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCdwYWdlRGVzY3JpcHRpb24nKSk7XG4gIHJlYWRvbmx5IHRoZW1lVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ3RoZW1lVGl0bGUnKSk7XG4gIHJlYWRvbmx5IHRoZW1lSGludCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudCgndGhlbWVIaW50JykpO1xuICByZWFkb25seSBsYW5nVGl0bGUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnQoJ2xhbmd1YWdlVGl0bGUnKSk7XG4gIHJlYWRvbmx5IGxhbmdIaW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy50KCdsYW5ndWFnZUhpbnQnKSk7XG5cbiAgcmVhZG9ubHkgdGhlbWVQcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8U2VnbWVudENvbnRyb2xNZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdmFsdWU6IHRoaXMucHJlZnMudGhlbWUoKSxcbiAgICBkaXNhYmxlZDogdGhpcy5zYXZpbmcoKSxcbiAgICBvcHRpb25zOiBbXG4gICAgICB7IHZhbHVlOiAnbGlnaHQnLCBsYWJlbDogdGhpcy50KCd0aGVtZUxpZ2h0JykgfSxcbiAgICAgIHsgdmFsdWU6ICdkYXJrJywgbGFiZWw6IHRoaXMudCgndGhlbWVEYXJrJykgfSxcbiAgICAgIHsgdmFsdWU6ICdhdXRvJywgbGFiZWw6IHRoaXMudCgndGhlbWVBdXRvJykgfSxcbiAgICBdLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgbGFuZ1Byb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxMYW5ndWFnZVNlbGVjdG9yTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIGN1cnJlbnRMYW5ndWFnZTogdGhpcy5wcmVmcy5sYW5ndWFnZSgpLFxuICAgIGF2YWlsYWJsZUxhbmd1YWdlczogdGhpcy5yZXNvbHZlZENvbmZpZygpLnN1cHBvcnRlZExhbmd1YWdlcyxcbiAgICBzaG93TGFiZWw6IGZhbHNlLFxuICAgIGRpc2FibGVkOiB0aGlzLnNhdmluZygpLFxuICAgIGV4cGFuZDogJ2Jsb2NrJyxcbiAgICBmaWxsOiAnb3V0bGluZScsXG4gIH0pKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyBBdXRvLXJlZ2lzdHJvIGkxOG4g4oCUIHJlc3BldGEgb3ZlcnJpZGUgZGVsIGNvbnN1bWVyLiBFbCBuYW1lc3BhY2UgcHVlZGVcbiAgICAvLyB2ZW5pciBkZSBASW5wdXQuY29uZmlnIG8gZGVsIHJvdXRlIGRhdGE7IGxvIHJlc29sdmVtb3MgYWPDoS5cbiAgICBjb25zdCBucyA9IHRoaXMubnM7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKG5zKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChucywgUFJFRkVSRU5DRVNfVklFV19JMThOKTtcbiAgICB9XG5cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgfVxuXG4gIGFzeW5jIG9uVGhlbWVDaGFuZ2UodmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLnNhdmluZygpIHx8IHZhbHVlID09PSB0aGlzLnByZWZzLnRoZW1lKCkpIHJldHVybjtcbiAgICBjb25zdCB0aGVtZSA9IHZhbHVlIGFzIFByZWZlcmVuY2VzVGhlbWU7XG4gICAgYXdhaXQgdGhpcy5kaXNwYXRjaChcbiAgICAgICgpID0+IHRoaXMucHJlZnMuc2V0VGhlbWUodGhlbWUpLFxuICAgICAgKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLm9uVGhlbWVDaGFuZ2VkPy4odGhlbWUpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIG9uTGFuZ3VhZ2VDaGFuZ2UodmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGxhbmcgPSB2YWx1ZSBhcyBQcmVmZXJlbmNlc0xhbmd1YWdlO1xuICAgIGlmICghdGhpcy5yZXNvbHZlZENvbmZpZygpLnN1cHBvcnRlZExhbmd1YWdlcy5pbmNsdWRlcyhsYW5nKSkgcmV0dXJuO1xuICAgIGlmICh0aGlzLnNhdmluZygpIHx8IHZhbHVlID09PSB0aGlzLnByZWZzLmxhbmd1YWdlKCkpIHJldHVybjtcbiAgICBhd2FpdCB0aGlzLmRpc3BhdGNoKFxuICAgICAgKCkgPT4gdGhpcy5wcmVmcy5zZXRMYW5ndWFnZShsYW5nKSxcbiAgICAgICgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS5vbkxhbmd1YWdlQ2hhbmdlZD8uKGxhbmcpXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZGlzcGF0Y2goZm46ICgpID0+IFByb21pc2U8dW5rbm93bj4sIG9uU3VjY2Vzcz86ICgpID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0aGlzLnNhdmluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZuKCk7XG4gICAgICBvblN1Y2Nlc3M/LigpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnc2V0dGluZ3MucHJlZmVyZW5jZXMuc2F2ZScsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnc2F2ZUVycm9yJyxcbiAgICAgICAgaTE4bk5hbWVzcGFjZTogdGhpcy5ucyxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNhdmluZy5zZXQoZmFsc2UpO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBMZWUgZGVsIG5hbWVzcGFjZSBjb25maWd1cmFkby4gKi9cbiAgcHJvdGVjdGVkIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMubnMpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defaults i18n (es/en) embebidos en `val-preferences-view`. Auto-registrados
|
|
3
|
+
* en el constructor del componente si el consumer no proveyó el namespace
|
|
4
|
+
* (`Settings.General` por default). Garantiza que nunca haya una key faltante
|
|
5
|
+
* evaluada por cada change-detection (ver nota en valtech-components/CLAUDE.md
|
|
6
|
+
* sobre el storm de CD con `val-debug-console`). El consumer puede override
|
|
7
|
+
* registrando el mismo namespace antes de que el componente monte.
|
|
8
|
+
*
|
|
9
|
+
* SOLO incluye las keys que la vista realmente usa.
|
|
10
|
+
*/
|
|
11
|
+
export const PREFERENCES_VIEW_I18N = {
|
|
12
|
+
es: {
|
|
13
|
+
pageTitle: 'General',
|
|
14
|
+
pageDescription: 'Apariencia e idioma',
|
|
15
|
+
themeTitle: 'Tema',
|
|
16
|
+
themeHint: 'Cómo se ve la app: claro, oscuro o según tu sistema.',
|
|
17
|
+
themeLight: 'Claro',
|
|
18
|
+
themeDark: 'Oscuro',
|
|
19
|
+
themeAuto: 'Auto',
|
|
20
|
+
languageTitle: 'Idioma',
|
|
21
|
+
languageHint: 'Idioma de la interfaz y de los correos que recibes.',
|
|
22
|
+
saveError: 'No se pudo guardar la preferencia.',
|
|
23
|
+
},
|
|
24
|
+
en: {
|
|
25
|
+
pageTitle: 'General',
|
|
26
|
+
pageDescription: 'Appearance and language',
|
|
27
|
+
themeTitle: 'Theme',
|
|
28
|
+
themeHint: 'How the app looks: light, dark, or matching your system.',
|
|
29
|
+
themeLight: 'Light',
|
|
30
|
+
themeDark: 'Dark',
|
|
31
|
+
themeAuto: 'Auto',
|
|
32
|
+
languageTitle: 'Language',
|
|
33
|
+
languageHint: 'Language of the interface and of the emails you receive.',
|
|
34
|
+
saveError: 'Could not save preference.',
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMtdmlldy5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9wcmVmZXJlbmNlcy12aWV3L3ByZWZlcmVuY2VzLXZpZXcuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBcUI7SUFDckQsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLFNBQVM7UUFDcEIsZUFBZSxFQUFFLHFCQUFxQjtRQUN0QyxVQUFVLEVBQUUsTUFBTTtRQUNsQixTQUFTLEVBQUUsc0RBQXNEO1FBQ2pFLFVBQVUsRUFBRSxPQUFPO1FBQ25CLFNBQVMsRUFBRSxRQUFRO1FBQ25CLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLGFBQWEsRUFBRSxRQUFRO1FBQ3ZCLFlBQVksRUFBRSxxREFBcUQ7UUFDbkUsU0FBUyxFQUFFLG9DQUFvQztLQUNoRDtJQUNELEVBQUUsRUFBRTtRQUNGLFNBQVMsRUFBRSxTQUFTO1FBQ3BCLGVBQWUsRUFBRSx5QkFBeUI7UUFDMUMsVUFBVSxFQUFFLE9BQU87UUFDbkIsU0FBUyxFQUFFLDBEQUEwRDtRQUNyRSxVQUFVLEVBQUUsT0FBTztRQUNuQixTQUFTLEVBQUUsTUFBTTtRQUNqQixTQUFTLEVBQUUsTUFBTTtRQUNqQixhQUFhLEVBQUUsVUFBVTtRQUN6QixZQUFZLEVBQUUsMERBQTBEO1FBQ3hFLFNBQVMsRUFBRSw0QkFBNEI7S0FDeEM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFuZ3VhZ2VzQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbWJlYmlkb3MgZW4gYHZhbC1wcmVmZXJlbmNlcy12aWV3YC4gQXV0by1yZWdpc3RyYWRvc1xuICogZW4gZWwgY29uc3RydWN0b3IgZGVsIGNvbXBvbmVudGUgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiAoYFNldHRpbmdzLkdlbmVyYWxgIHBvciBkZWZhdWx0KS4gR2FyYW50aXphIHF1ZSBudW5jYSBoYXlhIHVuYSBrZXkgZmFsdGFudGVcbiAqIGV2YWx1YWRhIHBvciBjYWRhIGNoYW5nZS1kZXRlY3Rpb24gKHZlciBub3RhIGVuIHZhbHRlY2gtY29tcG9uZW50cy9DTEFVREUubWRcbiAqIHNvYnJlIGVsIHN0b3JtIGRlIENEIGNvbiBgdmFsLWRlYnVnLWNvbnNvbGVgKS4gRWwgY29uc3VtZXIgcHVlZGUgb3ZlcnJpZGVcbiAqIHJlZ2lzdHJhbmRvIGVsIG1pc21vIG5hbWVzcGFjZSBhbnRlcyBkZSBxdWUgZWwgY29tcG9uZW50ZSBtb250ZS5cbiAqXG4gKiBTT0xPIGluY2x1eWUgbGFzIGtleXMgcXVlIGxhIHZpc3RhIHJlYWxtZW50ZSB1c2EuXG4gKi9cbmV4cG9ydCBjb25zdCBQUkVGRVJFTkNFU19WSUVXX0kxOE46IExhbmd1YWdlc0NvbnRlbnQgPSB7XG4gIGVzOiB7XG4gICAgcGFnZVRpdGxlOiAnR2VuZXJhbCcsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnQXBhcmllbmNpYSBlIGlkaW9tYScsXG4gICAgdGhlbWVUaXRsZTogJ1RlbWEnLFxuICAgIHRoZW1lSGludDogJ0PDs21vIHNlIHZlIGxhIGFwcDogY2xhcm8sIG9zY3VybyBvIHNlZ8O6biB0dSBzaXN0ZW1hLicsXG4gICAgdGhlbWVMaWdodDogJ0NsYXJvJyxcbiAgICB0aGVtZURhcms6ICdPc2N1cm8nLFxuICAgIHRoZW1lQXV0bzogJ0F1dG8nLFxuICAgIGxhbmd1YWdlVGl0bGU6ICdJZGlvbWEnLFxuICAgIGxhbmd1YWdlSGludDogJ0lkaW9tYSBkZSBsYSBpbnRlcmZheiB5IGRlIGxvcyBjb3JyZW9zIHF1ZSByZWNpYmVzLicsXG4gICAgc2F2ZUVycm9yOiAnTm8gc2UgcHVkbyBndWFyZGFyIGxhIHByZWZlcmVuY2lhLicsXG4gIH0sXG4gIGVuOiB7XG4gICAgcGFnZVRpdGxlOiAnR2VuZXJhbCcsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnQXBwZWFyYW5jZSBhbmQgbGFuZ3VhZ2UnLFxuICAgIHRoZW1lVGl0bGU6ICdUaGVtZScsXG4gICAgdGhlbWVIaW50OiAnSG93IHRoZSBhcHAgbG9va3M6IGxpZ2h0LCBkYXJrLCBvciBtYXRjaGluZyB5b3VyIHN5c3RlbS4nLFxuICAgIHRoZW1lTGlnaHQ6ICdMaWdodCcsXG4gICAgdGhlbWVEYXJrOiAnRGFyaycsXG4gICAgdGhlbWVBdXRvOiAnQXV0bycsXG4gICAgbGFuZ3VhZ2VUaXRsZTogJ0xhbmd1YWdlJyxcbiAgICBsYW5ndWFnZUhpbnQ6ICdMYW5ndWFnZSBvZiB0aGUgaW50ZXJmYWNlIGFuZCBvZiB0aGUgZW1haWxzIHlvdSByZWNlaXZlLicsXG4gICAgc2F2ZUVycm9yOiAnQ291bGQgbm90IHNhdmUgcHJlZmVyZW5jZS4nLFxuICB9LFxufTtcbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { PreferencesViewComponent } from './preferences-view.component';
|
|
2
|
+
/**
|
|
3
|
+
* Helper para montar la vista de preferencias (`val-preferences-view`) como
|
|
4
|
+
* ruta en una app del factory. El `config` se pasa por route `data`
|
|
5
|
+
* (`preferencesConfig`) y el componente lo lee como fallback de su
|
|
6
|
+
* `@Input() config`.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* // settings.routes.ts
|
|
11
|
+
* export const settingsRoutes: Routes = [
|
|
12
|
+
* ...provideValtechPreferencesRoutes(),
|
|
13
|
+
* { path: 'profile', loadComponent: () => ... },
|
|
14
|
+
* ];
|
|
15
|
+
*
|
|
16
|
+
* // con config acotada:
|
|
17
|
+
* ...provideValtechPreferencesRoutes({ config: { showLanguage: false } }),
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export function provideValtechPreferencesRoutes(opts) {
|
|
21
|
+
return [
|
|
22
|
+
{
|
|
23
|
+
path: opts?.path ?? 'preferences',
|
|
24
|
+
component: PreferencesViewComponent,
|
|
25
|
+
data: { preferencesConfig: opts?.config },
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZmVyZW5jZXMucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9wcmVmZXJlbmNlcy12aWV3L3ByZWZlcmVuY2VzLnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUd4RTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFNLFVBQVUsK0JBQStCLENBQUMsSUFHL0M7SUFDQyxPQUFPO1FBQ0w7WUFDRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksSUFBSSxhQUFhO1lBQ2pDLFNBQVMsRUFBRSx3QkFBd0I7WUFDbkMsSUFBSSxFQUFFLEVBQUUsaUJBQWlCLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtTQUMxQztLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGVzIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcblxuaW1wb3J0IHsgUHJlZmVyZW5jZXNWaWV3Q29tcG9uZW50IH0gZnJvbSAnLi9wcmVmZXJlbmNlcy12aWV3LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBQcmVmZXJlbmNlc1ZpZXdDb25maWcgfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBIZWxwZXIgcGFyYSBtb250YXIgbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIChgdmFsLXByZWZlcmVuY2VzLXZpZXdgKSBjb21vXG4gKiBydXRhIGVuIHVuYSBhcHAgZGVsIGZhY3RvcnkuIEVsIGBjb25maWdgIHNlIHBhc2EgcG9yIHJvdXRlIGBkYXRhYFxuICogKGBwcmVmZXJlbmNlc0NvbmZpZ2ApIHkgZWwgY29tcG9uZW50ZSBsbyBsZWUgY29tbyBmYWxsYmFjayBkZSBzdVxuICogYEBJbnB1dCgpIGNvbmZpZ2AuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyBzZXR0aW5ncy5yb3V0ZXMudHNcbiAqIGV4cG9ydCBjb25zdCBzZXR0aW5nc1JvdXRlczogUm91dGVzID0gW1xuICogICAuLi5wcm92aWRlVmFsdGVjaFByZWZlcmVuY2VzUm91dGVzKCksXG4gKiAgIHsgcGF0aDogJ3Byb2ZpbGUnLCBsb2FkQ29tcG9uZW50OiAoKSA9PiAuLi4gfSxcbiAqIF07XG4gKlxuICogLy8gY29uIGNvbmZpZyBhY290YWRhOlxuICogLi4ucHJvdmlkZVZhbHRlY2hQcmVmZXJlbmNlc1JvdXRlcyh7IGNvbmZpZzogeyBzaG93TGFuZ3VhZ2U6IGZhbHNlIH0gfSksXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb3ZpZGVWYWx0ZWNoUHJlZmVyZW5jZXNSb3V0ZXMob3B0cz86IHtcbiAgcGF0aD86IHN0cmluZztcbiAgY29uZmlnPzogUHJlZmVyZW5jZXNWaWV3Q29uZmlnO1xufSk6IFJvdXRlcyB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgcGF0aDogb3B0cz8ucGF0aCA/PyAncHJlZmVyZW5jZXMnLFxuICAgICAgY29tcG9uZW50OiBQcmVmZXJlbmNlc1ZpZXdDb21wb25lbnQsXG4gICAgICBkYXRhOiB7IHByZWZlcmVuY2VzQ29uZmlnOiBvcHRzPy5jb25maWcgfSxcbiAgICB9LFxuICBdO1xufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3ByZWZlcmVuY2VzLXZpZXcvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFByZWZlcmVuY2VzTGFuZ3VhZ2UsXG4gIFByZWZlcmVuY2VzVGhlbWUsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZWZlcmVuY2VzL3ByZWZlcmVuY2VzLnR5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBhY290YWRhIGRlIGB2YWwtcHJlZmVyZW5jZXMtdmlld2AgKG9iamVjdC1maXJzdCkuIEVqZXNcbiAqIHBlcm1pdGlkb3M6XG4gKiAgLSAqKnNlY2Npb25lcyB2aXNpYmxlcyoqIOKAlCBnYXRlYW4gZWwgcmVuZGVyIGRlIGNhZGEgYDxzZWN0aW9uPmAgKHRlbWEgL1xuICogICAgaWRpb21hKS5cbiAqICAtICoqZGF0YS9icmFuZGluZyoqIOKAlCBgc3VwcG9ydGVkTGFuZ3VhZ2VzYCBwYXJhIGVsIHNlbGVjdG9yIGRlIGlkaW9tYSBlXG4gKiAgICBgaTE4bk5hbWVzcGFjZWAgcGFyYSByZXNvbHZlciBsb3MgdGV4dG9zIChkZWZhdWx0IGAnU2V0dGluZ3MuR2VuZXJhbCdgKS5cbiAqICAgIEVsIGNvbnN1bWVyIHB1ZWRlIHJlZ2lzdHJhciBlc2UgbmFtZXNwYWNlIHBhcmEgb3ZlcnJpZGUgZGUgbG9zIGRlZmF1bHRzXG4gKiAgICBlbWJlYmlkb3MuXG4gKiAgLSAqKmNhbGxiYWNrcyoqIOKAlCBob29rcyB0cmFzIHVuIGNhbWJpbyBkZSB0ZW1hIC8gaWRpb21hIGV4aXRvc28gKGFkZW3DoXMgZGVsXG4gKiAgICBlZmVjdG8gaW50ZXJubyBlbiBgUHJlZmVyZW5jZXNTZXJ2aWNlYCkuXG4gKlxuICogTk8gYWRtaXRlIHNsb3RzIGFyYml0cmFyaW9zIG5pIG92ZXJyaWRlIGRlbCBsYXlvdXQ6IGxhIHZpc3RhIGVzIGZ1bGwtZmVhdHVyZVxuICogeSBhdXRvY29udGVuaWRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFByZWZlcmVuY2VzVmlld0NvbmZpZyB7XG4gIC8qKiBNdWVzdHJhIGxhIHNlY2Npw7NuIGRlIHRlbWEgKHNlZ21lbnQgY2xhcm8vb3NjdXJvL2F1dG8pLiBEZWZhdWx0IGB0cnVlYC4gKi9cbiAgc2hvd1RoZW1lPzogYm9vbGVhbjtcbiAgLyoqIE11ZXN0cmEgbGEgc2VjY2nDs24gZGUgaWRpb21hIChsYW5ndWFnZSBzZWxlY3RvcikuIERlZmF1bHQgYHRydWVgLiAqL1xuICBzaG93TGFuZ3VhZ2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZGlvbWFzIG9mcmVjaWRvcyBlbiBlbCBzZWxlY3Rvci4gRGVmYXVsdCBgWydlcycsICdlbiddYC5cbiAgICovXG4gIHN1cHBvcnRlZExhbmd1YWdlcz86IFByZWZlcmVuY2VzTGFuZ3VhZ2VbXTtcblxuICAvKipcbiAgICogTmFtZXNwYWNlIGkxOG4gY29uIGVsIHF1ZSBsYSB2aXN0YSByZXN1ZWx2ZSBzdXMgdGV4dG9zLlxuICAgKiBEZWZhdWx0IGAnU2V0dGluZ3MuR2VuZXJhbCdgLlxuICAgKi9cbiAgaTE4bk5hbWVzcGFjZT86IHN0cmluZztcblxuICAvKiogQ2FsbGJhY2sgdHJhcyB1biBjYW1iaW8gZGUgdGVtYSBleGl0b3NvLiAqL1xuICBvblRoZW1lQ2hhbmdlZD86ICh0aGVtZTogUHJlZmVyZW5jZXNUaGVtZSkgPT4gdm9pZDtcbiAgLyoqIENhbGxiYWNrIHRyYXMgdW4gY2FtYmlvIGRlIGlkaW9tYSBleGl0b3NvLiAqL1xuICBvbkxhbmd1YWdlQ2hhbmdlZD86IChsYW5nOiBQcmVmZXJlbmNlc0xhbmd1YWdlKSA9PiB2b2lkO1xufVxuIl19
|