valtech-components 2.0.1004 → 2.0.1006
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/comment/comment.component.mjs +3 -3
- package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +436 -0
- package/esm2022/lib/components/organisms/about-view/about-view.i18n.mjs +61 -0
- package/esm2022/lib/components/organisms/about-view/about.routes.mjs +36 -0
- package/esm2022/lib/components/organisms/about-view/types.mjs +19 -0
- package/esm2022/lib/components/organisms/profile-view/profile-view.component.mjs +16 -6
- package/esm2022/lib/services/preferences/preferences.service.mjs +11 -36
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/valtech-components.mjs +869 -350
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/about-view/about-view.component.d.ts +88 -0
- package/lib/components/organisms/about-view/about-view.i18n.d.ts +14 -0
- package/lib/components/organisms/about-view/about.routes.d.ts +31 -0
- package/lib/components/organisms/about-view/types.d.ts +76 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
import { Component, computed, inject, Input } from '@angular/core';
|
|
2
|
+
import { ActivatedRoute } from '@angular/router';
|
|
3
|
+
import { IonButton, IonGrid, IonIcon } from '@ionic/angular/standalone';
|
|
4
|
+
import { addIcons } from 'ionicons';
|
|
5
|
+
import { chatbubbleEllipsesOutline, copyOutline, helpCircleOutline, logoFacebook, logoInstagram, logoLinkedin, logoTiktok, logoTwitter, logoYoutube, shareSocialOutline, starOutline, } from 'ionicons/icons';
|
|
6
|
+
import { PillComponent } from '../../molecules/pill/pill.component';
|
|
7
|
+
import { ActionCardComponent } from '../../molecules/action-card/action-card.component';
|
|
8
|
+
import { TextComponent } from '../../atoms/text/text.component';
|
|
9
|
+
import { TitleComponent } from '../../atoms/title/title.component';
|
|
10
|
+
import { ContentReactionComponent } from '../../molecules/content-reaction/content-reaction.component';
|
|
11
|
+
import { I18nService } from '../../../services/i18n';
|
|
12
|
+
import { ModalService } from '../../../services/modal/modal.service';
|
|
13
|
+
import { NavigationService } from '../../../services/navigation/navigation.service';
|
|
14
|
+
import { ToastService } from '../../../services/toast.service';
|
|
15
|
+
import { ABOUT_VIEW_I18N } from './about-view.i18n';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
addIcons({
|
|
18
|
+
copyOutline,
|
|
19
|
+
starOutline,
|
|
20
|
+
chatbubbleEllipsesOutline,
|
|
21
|
+
shareSocialOutline,
|
|
22
|
+
helpCircleOutline,
|
|
23
|
+
logoFacebook,
|
|
24
|
+
logoInstagram,
|
|
25
|
+
logoLinkedin,
|
|
26
|
+
logoTwitter,
|
|
27
|
+
logoYoutube,
|
|
28
|
+
logoTiktok,
|
|
29
|
+
});
|
|
30
|
+
const DEFAULT_NAMESPACE = 'Settings.About';
|
|
31
|
+
const DEFAULT_BRAND_NAME = 'Valtech';
|
|
32
|
+
const DEFAULT_LOGO_SRC = 'assets/images/main-icon.png';
|
|
33
|
+
const DEFAULT_RATING_ENTITY_ID = 'experience';
|
|
34
|
+
/**
|
|
35
|
+
* `val-about-view` — vista About full-feature autocontenida (organism).
|
|
36
|
+
* Promovida desde `showcase` bajo el proceso de ADR-021. Reúne:
|
|
37
|
+
* - **HERO** — logo + nombre de marca + tagline + pill de versión (copiable).
|
|
38
|
+
* - **Descripción** — título + cuerpo.
|
|
39
|
+
* - **Acciones** — action-card de rating built-in (abre `val-content-reaction`
|
|
40
|
+
* DIRECTAMENTE vía `ModalService`, sin wrapper local — decisión CTO) + las
|
|
41
|
+
* acciones genéricas que el consumer aporte por `config.actions`.
|
|
42
|
+
* - **Redes** — links sociales (`config.socialLinks`); sección oculta si vacía.
|
|
43
|
+
* - **Footer** — copyright con el año actual.
|
|
44
|
+
*
|
|
45
|
+
* Lo app-specific (logo, nombre, versión, redes, acciones share/faq) viaja como
|
|
46
|
+
* DATA de config — NO como slots (ADR-021). La versión la pasa el consumer
|
|
47
|
+
* (`config.version` = su `APP_VERSION`); la lib NO importa el `version.ts` de la
|
|
48
|
+
* app. Si no se pasa versión, el pill se oculta.
|
|
49
|
+
*
|
|
50
|
+
* NO renderiza ion-content — vive dentro de val-page-wrapper. `ActivatedRoute`
|
|
51
|
+
* se inyecta `{ optional: true }` solo para leer el route data de config.
|
|
52
|
+
*
|
|
53
|
+
* Auto-registra sus defaults i18n (es/en) en el constructor si el consumer no
|
|
54
|
+
* proveyó el namespace configurado (default `Settings.About`).
|
|
55
|
+
*
|
|
56
|
+
* GOTCHA i18n ContentReaction: `val-content-reaction` exige su namespace
|
|
57
|
+
* `ContentReaction` registrado donde se use (key faltante en binding + CD =
|
|
58
|
+
* navegador congelado en dev). `ContentReactionComponent` se auto-registra ese
|
|
59
|
+
* namespace en SU constructor, y como se abre vía `ModalService` ese constructor
|
|
60
|
+
* corre antes de que su template binde — queda cubierto. Igual lo importamos
|
|
61
|
+
* como dependencia explícita de esta vista para que la garantía sea local.
|
|
62
|
+
*/
|
|
63
|
+
export class AboutViewComponent {
|
|
64
|
+
/** Namespace i18n resuelto (capturado para llamadas no-reactivas). */
|
|
65
|
+
get ns() {
|
|
66
|
+
return this.resolvedConfig().i18nNamespace;
|
|
67
|
+
}
|
|
68
|
+
constructor() {
|
|
69
|
+
this.nav = inject(NavigationService);
|
|
70
|
+
this.i18n = inject(I18nService);
|
|
71
|
+
this.modalService = inject(ModalService);
|
|
72
|
+
this.toast = inject(ToastService);
|
|
73
|
+
this.route = inject(ActivatedRoute, { optional: true });
|
|
74
|
+
this.resolvedConfig = computed(() => {
|
|
75
|
+
const fromRoute = (this.route?.snapshot.data['aboutConfig'] ?? {});
|
|
76
|
+
const merged = { ...fromRoute, ...(this.config ?? {}) };
|
|
77
|
+
return {
|
|
78
|
+
brand: {
|
|
79
|
+
name: merged.brand?.name ?? DEFAULT_BRAND_NAME,
|
|
80
|
+
logoSrc: merged.brand?.logoSrc ?? DEFAULT_LOGO_SRC,
|
|
81
|
+
},
|
|
82
|
+
version: merged.version ?? '',
|
|
83
|
+
socialLinks: merged.socialLinks ?? [],
|
|
84
|
+
showRating: merged.showRating ?? true,
|
|
85
|
+
ratingEntityId: merged.ratingEntityId ?? DEFAULT_RATING_ENTITY_ID,
|
|
86
|
+
actions: merged.actions ?? [],
|
|
87
|
+
i18nNamespace: merged.i18nNamespace ?? DEFAULT_NAMESPACE,
|
|
88
|
+
onRated: merged.onRated,
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
this.brandName = computed(() => this.resolvedConfig().brand.name);
|
|
92
|
+
this.logoSrc = computed(() => this.resolvedConfig().brand.logoSrc);
|
|
93
|
+
this.version = computed(() => this.resolvedConfig().version);
|
|
94
|
+
this.socialLinks = computed(() => this.resolvedConfig().socialLinks);
|
|
95
|
+
this.showRating = computed(() => this.resolvedConfig().showRating);
|
|
96
|
+
this.actions = computed(() => this.resolvedConfig().actions);
|
|
97
|
+
/** Copyright del footer — año actual interpolado en `copyrightText`. */
|
|
98
|
+
this.copyright = computed(() => {
|
|
99
|
+
this.i18n.lang();
|
|
100
|
+
const year = String(new Date().getFullYear());
|
|
101
|
+
return this.tt('copyrightText').replace('{year}', year);
|
|
102
|
+
});
|
|
103
|
+
/** Title metadata para secciones — bold + size small. */
|
|
104
|
+
this.rateActionCard = computed(() => {
|
|
105
|
+
this.i18n.lang();
|
|
106
|
+
return {
|
|
107
|
+
icon: { ionicon: 'star-outline', color: 'primary' },
|
|
108
|
+
title: this.tt('rateTitle'),
|
|
109
|
+
description: this.tt('rateDesc'),
|
|
110
|
+
size: 'medium',
|
|
111
|
+
bordered: false,
|
|
112
|
+
shadowed: false,
|
|
113
|
+
};
|
|
114
|
+
});
|
|
115
|
+
const ns = this.ns;
|
|
116
|
+
if (!this.i18n.hasNamespace(ns)) {
|
|
117
|
+
this.i18n.registerContent(ns, ABOUT_VIEW_I18N);
|
|
118
|
+
}
|
|
119
|
+
this.nav.setBackHeader('pageTitle', ns, { withMenu: true });
|
|
120
|
+
}
|
|
121
|
+
/** Helper i18n bound al namespace resuelto. Reactivo vía `lang()`. */
|
|
122
|
+
tt(key) {
|
|
123
|
+
this.i18n.lang();
|
|
124
|
+
return this.i18n.t(key, this.ns);
|
|
125
|
+
}
|
|
126
|
+
/** Title metadata para secciones — bold + size small. */
|
|
127
|
+
sectionTitle(key) {
|
|
128
|
+
this.i18n.lang();
|
|
129
|
+
return {
|
|
130
|
+
content: this.tt(key),
|
|
131
|
+
size: 'small',
|
|
132
|
+
color: 'dark',
|
|
133
|
+
bold: true,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/** ActionCardMetadata para una acción genérica del consumer. */
|
|
137
|
+
extraActionCard(action) {
|
|
138
|
+
return {
|
|
139
|
+
icon: { ionicon: action.icon ?? 'chatbubble-ellipses-outline', color: 'primary' },
|
|
140
|
+
title: action.label,
|
|
141
|
+
description: action.description,
|
|
142
|
+
size: 'medium',
|
|
143
|
+
bordered: false,
|
|
144
|
+
shadowed: false,
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/** Copia la versión al portapapeles + toast (color dark). */
|
|
148
|
+
async copyVersion() {
|
|
149
|
+
const v = this.version();
|
|
150
|
+
if (!v)
|
|
151
|
+
return;
|
|
152
|
+
try {
|
|
153
|
+
await navigator.clipboard.writeText(v);
|
|
154
|
+
this.toast.show({
|
|
155
|
+
message: this.tt('versionCopied').replace('{v}', v),
|
|
156
|
+
color: 'dark',
|
|
157
|
+
duration: 1500,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
// clipboard no disponible — silencioso
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/** Abre una URL externa en nueva tab. `mailto:` queda en la misma tab. */
|
|
165
|
+
openUrl(url) {
|
|
166
|
+
if (url.startsWith('mailto:')) {
|
|
167
|
+
window.location.href = url;
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
window.open(url, '_blank', 'noopener,noreferrer');
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* "Calificar la app" — abre `val-content-reaction` DIRECTAMENTE como sheet
|
|
174
|
+
* modal (sin wrapper local — decisión CTO). El componente persiste la reacción
|
|
175
|
+
* contra el backend de feedback y muestra su propio estado de "gracias"; el
|
|
176
|
+
* sheet se cierra arrastrando (breakpoint 0). El namespace i18n
|
|
177
|
+
* `ContentReaction` lo auto-registra `ContentReactionComponent` en su
|
|
178
|
+
* constructor, que corre al crear el modal — sin riesgo de key faltante.
|
|
179
|
+
*
|
|
180
|
+
* Sheet (bottom sheet): el contenido scrollea dentro y el botón "Enviar" queda
|
|
181
|
+
* siempre alcanzable, también en viewports chicos.
|
|
182
|
+
*/
|
|
183
|
+
async openRating() {
|
|
184
|
+
const reactionProps = {
|
|
185
|
+
// entityType "app" distingue esta reacción de las de artículos/FAQs.
|
|
186
|
+
entityRef: { entityType: 'app', entityId: this.resolvedConfig().ratingEntityId },
|
|
187
|
+
question: this.tt('rateQuestion'),
|
|
188
|
+
commentPlaceholder: this.tt('rateComment'),
|
|
189
|
+
thankYouMessage: this.tt('rateThanks'),
|
|
190
|
+
showComment: true,
|
|
191
|
+
showThankYou: true,
|
|
192
|
+
// Modal one-shot: NO bloquear el render con el check de rating previo.
|
|
193
|
+
skipInitialCheck: true,
|
|
194
|
+
emojis: ['😕', '🙂', '😍'],
|
|
195
|
+
emojiLabels: [this.tt('rateBad'), this.tt('rateMid'), this.tt('rateGood')],
|
|
196
|
+
};
|
|
197
|
+
await this.modalService.open({
|
|
198
|
+
component: ContentReactionComponent,
|
|
199
|
+
componentProps: { props: reactionProps },
|
|
200
|
+
breakpoints: {
|
|
201
|
+
initialBreakpoint: 0.9,
|
|
202
|
+
breakpoints: [0, 0.9, 1],
|
|
203
|
+
showHandle: true,
|
|
204
|
+
handleBehavior: 'cycle',
|
|
205
|
+
},
|
|
206
|
+
});
|
|
207
|
+
this.resolvedConfig().onRated?.();
|
|
208
|
+
}
|
|
209
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AboutViewComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
210
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: AboutViewComponent, isStandalone: true, selector: "val-about-view", inputs: { config: "config" }, ngImport: i0, template: `
|
|
211
|
+
<ion-grid class="about-grid">
|
|
212
|
+
<!-- HERO: logo + name + version -->
|
|
213
|
+
<div class="about-hero">
|
|
214
|
+
<img class="about-hero__logo" [src]="logoSrc()" [alt]="brandName()" />
|
|
215
|
+
<val-title
|
|
216
|
+
[props]="{
|
|
217
|
+
content: brandName(),
|
|
218
|
+
size: 'xlarge',
|
|
219
|
+
color: 'dark',
|
|
220
|
+
bold: true,
|
|
221
|
+
}"
|
|
222
|
+
/>
|
|
223
|
+
<val-text
|
|
224
|
+
[props]="{
|
|
225
|
+
content: tt('tagline'),
|
|
226
|
+
size: 'medium',
|
|
227
|
+
color: 'dark',
|
|
228
|
+
bold: false,
|
|
229
|
+
}"
|
|
230
|
+
/>
|
|
231
|
+
@if (version()) {
|
|
232
|
+
<div
|
|
233
|
+
class="version-row"
|
|
234
|
+
(click)="copyVersion()"
|
|
235
|
+
role="button"
|
|
236
|
+
[attr.aria-label]="tt('versionLabel') + ' ' + version()"
|
|
237
|
+
>
|
|
238
|
+
<val-pill
|
|
239
|
+
[props]="{
|
|
240
|
+
label: tt('versionLabel') + ' ' + version(),
|
|
241
|
+
color: 'dark',
|
|
242
|
+
weight: 'bold',
|
|
243
|
+
size: 'small',
|
|
244
|
+
}"
|
|
245
|
+
/>
|
|
246
|
+
<ion-icon name="copy-outline" class="version-copy-icon" />
|
|
247
|
+
</div>
|
|
248
|
+
}
|
|
249
|
+
</div>
|
|
250
|
+
|
|
251
|
+
<!-- DESCRIPTION -->
|
|
252
|
+
<section class="about-section">
|
|
253
|
+
<val-title [props]="sectionTitle('descTitle')" />
|
|
254
|
+
<val-text
|
|
255
|
+
[props]="{
|
|
256
|
+
content: tt('descBody'),
|
|
257
|
+
size: 'medium',
|
|
258
|
+
color: 'dark',
|
|
259
|
+
bold: false,
|
|
260
|
+
}"
|
|
261
|
+
/>
|
|
262
|
+
</section>
|
|
263
|
+
|
|
264
|
+
<!-- ACTIONS — rating built-in + acciones del consumer. -->
|
|
265
|
+
@if (showRating() || actions().length > 0) {
|
|
266
|
+
<section class="about-section about-section--reviews">
|
|
267
|
+
<val-title [props]="sectionTitle('actionsTitle')" />
|
|
268
|
+
<div class="about-actions">
|
|
269
|
+
@if (showRating()) {
|
|
270
|
+
<val-action-card [props]="rateActionCard()" (onClick)="openRating()" />
|
|
271
|
+
}
|
|
272
|
+
@for (action of actions(); track action.label) {
|
|
273
|
+
<val-action-card [props]="extraActionCard(action)" (onClick)="action.onClick()" />
|
|
274
|
+
}
|
|
275
|
+
</div>
|
|
276
|
+
</section>
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
<!-- SOCIAL — penúltimo, justo antes del footer de derechos. -->
|
|
280
|
+
@if (socialLinks().length > 0) {
|
|
281
|
+
<section class="about-section">
|
|
282
|
+
<val-title [props]="sectionTitle('socialTitle')" />
|
|
283
|
+
<val-text
|
|
284
|
+
[props]="{
|
|
285
|
+
content: tt('socialDesc'),
|
|
286
|
+
size: 'medium',
|
|
287
|
+
color: 'dark',
|
|
288
|
+
bold: false,
|
|
289
|
+
}"
|
|
290
|
+
/>
|
|
291
|
+
<div class="about-social">
|
|
292
|
+
@for (s of socialLinks(); track s.url) {
|
|
293
|
+
<ion-button
|
|
294
|
+
fill="clear"
|
|
295
|
+
size="small"
|
|
296
|
+
class="social-btn"
|
|
297
|
+
[attr.aria-label]="s.label"
|
|
298
|
+
(click)="openUrl(s.url)"
|
|
299
|
+
>
|
|
300
|
+
<ion-icon [name]="s.icon" slot="icon-only" />
|
|
301
|
+
</ion-button>
|
|
302
|
+
}
|
|
303
|
+
</div>
|
|
304
|
+
</section>
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
<!-- FOOTER -->
|
|
308
|
+
<footer class="about-footer">
|
|
309
|
+
<val-text
|
|
310
|
+
[props]="{
|
|
311
|
+
content: copyright(),
|
|
312
|
+
size: 'small',
|
|
313
|
+
color: 'dark',
|
|
314
|
+
bold: false,
|
|
315
|
+
}"
|
|
316
|
+
/>
|
|
317
|
+
</footer>
|
|
318
|
+
</ion-grid>
|
|
319
|
+
`, isInline: true, styles: [":host{display:block}.about-grid{padding:16px 0;max-width:720px;margin:0 auto}.about-hero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0 16px;text-align:center}.about-hero__logo{height:96px;width:auto;display:block}.version-row{display:flex;align-items:center;gap:6px;cursor:pointer;opacity:.85;transition:opacity .15s ease}.version-row:hover{opacity:1}.version-copy-icon{font-size:14px;color:var(--ion-color-medium)}.about-section{padding:16px 0 8px;display:flex;flex-direction:column;gap:8px}.about-actions{display:flex;flex-direction:column;gap:8px}.about-section--reviews val-action-card{display:block}.about-section--reviews val-action-card ::ng-deep .action-card{background:var(--ion-color-light, #f4f5f8);box-shadow:none}.about-section--reviews val-action-card ::ng-deep .action-card__description{color:var(--ion-color-dark);opacity:.7}.about-social{display:flex;flex-wrap:wrap;gap:10px;padding-top:8px}.about-social .social-btn{--border-radius: 50%;--background: var(--ion-color-light, #f4f5f8);--color: var(--ion-color-dark);--padding-start: 0;--padding-end: 0;width:48px;height:48px;margin:0;transition:transform .15s ease}.about-social .social-btn:hover{--background: var(--ion-color-primary-tint, #8a4ce5);--color: #fff;transform:translateY(-2px)}.about-social .social-btn ion-icon{font-size:22px}.about-footer{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 0;text-align:center}:host-context(body.dark) val-action-card ::ng-deep .action-card,:host-context(html.ion-palette-dark) val-action-card ::ng-deep .action-card,:host-context([data-theme=\"dark\"]) val-action-card ::ng-deep .action-card{background:#ffffff0a}:host-context(body.dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context(html.ion-palette-dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context([data-theme=\"dark\"]) .about-section--reviews val-action-card ::ng-deep .action-card:hover{background:#ffffff14}:host-context(body.dark) .about-social .social-btn,:host-context(html.ion-palette-dark) .about-social .social-btn,:host-context([data-theme=\"dark\"]) .about-social .social-btn{--background: rgba(255, 255, 255, .04)}\n"], dependencies: [{ kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: PillComponent, selector: "val-pill", inputs: ["preset", "props"], outputs: ["pillClick", "pillAction"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: ActionCardComponent, selector: "val-action-card", inputs: ["props"], outputs: ["onClick"] }] }); }
|
|
320
|
+
}
|
|
321
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: AboutViewComponent, decorators: [{
|
|
322
|
+
type: Component,
|
|
323
|
+
args: [{ selector: 'val-about-view', standalone: true, imports: [IonButton, IonGrid, IonIcon, PillComponent, TitleComponent, TextComponent, ActionCardComponent], template: `
|
|
324
|
+
<ion-grid class="about-grid">
|
|
325
|
+
<!-- HERO: logo + name + version -->
|
|
326
|
+
<div class="about-hero">
|
|
327
|
+
<img class="about-hero__logo" [src]="logoSrc()" [alt]="brandName()" />
|
|
328
|
+
<val-title
|
|
329
|
+
[props]="{
|
|
330
|
+
content: brandName(),
|
|
331
|
+
size: 'xlarge',
|
|
332
|
+
color: 'dark',
|
|
333
|
+
bold: true,
|
|
334
|
+
}"
|
|
335
|
+
/>
|
|
336
|
+
<val-text
|
|
337
|
+
[props]="{
|
|
338
|
+
content: tt('tagline'),
|
|
339
|
+
size: 'medium',
|
|
340
|
+
color: 'dark',
|
|
341
|
+
bold: false,
|
|
342
|
+
}"
|
|
343
|
+
/>
|
|
344
|
+
@if (version()) {
|
|
345
|
+
<div
|
|
346
|
+
class="version-row"
|
|
347
|
+
(click)="copyVersion()"
|
|
348
|
+
role="button"
|
|
349
|
+
[attr.aria-label]="tt('versionLabel') + ' ' + version()"
|
|
350
|
+
>
|
|
351
|
+
<val-pill
|
|
352
|
+
[props]="{
|
|
353
|
+
label: tt('versionLabel') + ' ' + version(),
|
|
354
|
+
color: 'dark',
|
|
355
|
+
weight: 'bold',
|
|
356
|
+
size: 'small',
|
|
357
|
+
}"
|
|
358
|
+
/>
|
|
359
|
+
<ion-icon name="copy-outline" class="version-copy-icon" />
|
|
360
|
+
</div>
|
|
361
|
+
}
|
|
362
|
+
</div>
|
|
363
|
+
|
|
364
|
+
<!-- DESCRIPTION -->
|
|
365
|
+
<section class="about-section">
|
|
366
|
+
<val-title [props]="sectionTitle('descTitle')" />
|
|
367
|
+
<val-text
|
|
368
|
+
[props]="{
|
|
369
|
+
content: tt('descBody'),
|
|
370
|
+
size: 'medium',
|
|
371
|
+
color: 'dark',
|
|
372
|
+
bold: false,
|
|
373
|
+
}"
|
|
374
|
+
/>
|
|
375
|
+
</section>
|
|
376
|
+
|
|
377
|
+
<!-- ACTIONS — rating built-in + acciones del consumer. -->
|
|
378
|
+
@if (showRating() || actions().length > 0) {
|
|
379
|
+
<section class="about-section about-section--reviews">
|
|
380
|
+
<val-title [props]="sectionTitle('actionsTitle')" />
|
|
381
|
+
<div class="about-actions">
|
|
382
|
+
@if (showRating()) {
|
|
383
|
+
<val-action-card [props]="rateActionCard()" (onClick)="openRating()" />
|
|
384
|
+
}
|
|
385
|
+
@for (action of actions(); track action.label) {
|
|
386
|
+
<val-action-card [props]="extraActionCard(action)" (onClick)="action.onClick()" />
|
|
387
|
+
}
|
|
388
|
+
</div>
|
|
389
|
+
</section>
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
<!-- SOCIAL — penúltimo, justo antes del footer de derechos. -->
|
|
393
|
+
@if (socialLinks().length > 0) {
|
|
394
|
+
<section class="about-section">
|
|
395
|
+
<val-title [props]="sectionTitle('socialTitle')" />
|
|
396
|
+
<val-text
|
|
397
|
+
[props]="{
|
|
398
|
+
content: tt('socialDesc'),
|
|
399
|
+
size: 'medium',
|
|
400
|
+
color: 'dark',
|
|
401
|
+
bold: false,
|
|
402
|
+
}"
|
|
403
|
+
/>
|
|
404
|
+
<div class="about-social">
|
|
405
|
+
@for (s of socialLinks(); track s.url) {
|
|
406
|
+
<ion-button
|
|
407
|
+
fill="clear"
|
|
408
|
+
size="small"
|
|
409
|
+
class="social-btn"
|
|
410
|
+
[attr.aria-label]="s.label"
|
|
411
|
+
(click)="openUrl(s.url)"
|
|
412
|
+
>
|
|
413
|
+
<ion-icon [name]="s.icon" slot="icon-only" />
|
|
414
|
+
</ion-button>
|
|
415
|
+
}
|
|
416
|
+
</div>
|
|
417
|
+
</section>
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
<!-- FOOTER -->
|
|
421
|
+
<footer class="about-footer">
|
|
422
|
+
<val-text
|
|
423
|
+
[props]="{
|
|
424
|
+
content: copyright(),
|
|
425
|
+
size: 'small',
|
|
426
|
+
color: 'dark',
|
|
427
|
+
bold: false,
|
|
428
|
+
}"
|
|
429
|
+
/>
|
|
430
|
+
</footer>
|
|
431
|
+
</ion-grid>
|
|
432
|
+
`, styles: [":host{display:block}.about-grid{padding:16px 0;max-width:720px;margin:0 auto}.about-hero{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 0 16px;text-align:center}.about-hero__logo{height:96px;width:auto;display:block}.version-row{display:flex;align-items:center;gap:6px;cursor:pointer;opacity:.85;transition:opacity .15s ease}.version-row:hover{opacity:1}.version-copy-icon{font-size:14px;color:var(--ion-color-medium)}.about-section{padding:16px 0 8px;display:flex;flex-direction:column;gap:8px}.about-actions{display:flex;flex-direction:column;gap:8px}.about-section--reviews val-action-card{display:block}.about-section--reviews val-action-card ::ng-deep .action-card{background:var(--ion-color-light, #f4f5f8);box-shadow:none}.about-section--reviews val-action-card ::ng-deep .action-card__description{color:var(--ion-color-dark);opacity:.7}.about-social{display:flex;flex-wrap:wrap;gap:10px;padding-top:8px}.about-social .social-btn{--border-radius: 50%;--background: var(--ion-color-light, #f4f5f8);--color: var(--ion-color-dark);--padding-start: 0;--padding-end: 0;width:48px;height:48px;margin:0;transition:transform .15s ease}.about-social .social-btn:hover{--background: var(--ion-color-primary-tint, #8a4ce5);--color: #fff;transform:translateY(-2px)}.about-social .social-btn ion-icon{font-size:22px}.about-footer{display:flex;flex-direction:column;align-items:center;gap:4px;padding:24px 0;text-align:center}:host-context(body.dark) val-action-card ::ng-deep .action-card,:host-context(html.ion-palette-dark) val-action-card ::ng-deep .action-card,:host-context([data-theme=\"dark\"]) val-action-card ::ng-deep .action-card{background:#ffffff0a}:host-context(body.dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context(html.ion-palette-dark) .about-section--reviews val-action-card ::ng-deep .action-card:hover,:host-context([data-theme=\"dark\"]) .about-section--reviews val-action-card ::ng-deep .action-card:hover{background:#ffffff14}:host-context(body.dark) .about-social .social-btn,:host-context(html.ion-palette-dark) .about-social .social-btn,:host-context([data-theme=\"dark\"]) .about-social .social-btn{--background: rgba(255, 255, 255, .04)}\n"] }]
|
|
433
|
+
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
434
|
+
type: Input
|
|
435
|
+
}] } });
|
|
436
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Fib3V0LXZpZXcvYWJvdXQtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQ0wseUJBQXlCLEVBQ3pCLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsWUFBWSxFQUNaLGFBQWEsRUFDYixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxXQUFXLEVBQ1gsa0JBQWtCLEVBQ2xCLFdBQVcsR0FDWixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUV4RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5FLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDZEQUE2RCxDQUFDO0FBR3ZHLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saURBQWlELENB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNkdUO3dEQStJUSxNQUFNO3NCQUFkLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25CdXR0b24sIElvbkdyaWQsIElvbkljb24gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHtcbiAgY2hhdGJ1YmJsZUVsbGlwc2VzT3V0bGluZSxcbiAgY29weU91dGxpbmUsXG4gIGhlbHBDaXJjbGVPdXRsaW5lLFxuICBsb2dvRmFjZWJvb2ssXG4gIGxvZ29JbnN0YWdyYW0sXG4gIGxvZ29MaW5rZWRpbixcbiAgbG9nb1Rpa3RvayxcbiAgbG9nb1R3aXR0ZXIsXG4gIGxvZ29Zb3V0dWJlLFxuICBzaGFyZVNvY2lhbE91dGxpbmUsXG4gIHN0YXJPdXRsaW5lLFxufSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IFBpbGxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcGlsbC9waWxsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25DYXJkQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2FjdGlvbi1jYXJkL2FjdGlvbi1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBY3Rpb25DYXJkTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvYWN0aW9uLWNhcmQvdHlwZXMnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVNZXRhZGF0YSB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3R5cGVzJztcbmltcG9ydCB7IENvbnRlbnRSZWFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9jb250ZW50LXJlYWN0aW9uL2NvbnRlbnQtcmVhY3Rpb24uY29tcG9uZW50JztcbmltcG9ydCB7IENvbnRlbnRSZWFjdGlvbk1ldGFkYXRhIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NvbnRlbnQtcmVhY3Rpb24vdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTW9kYWxTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbW9kYWwvbW9kYWwuc2VydmljZSc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL25hdmlnYXRpb24vbmF2aWdhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBBYm91dEFjdGlvbiwgQWJvdXRWaWV3Q29uZmlnIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBBQk9VVF9WSUVXX0kxOE4gfSBmcm9tICcuL2Fib3V0LXZpZXcuaTE4bic7XG5cbmFkZEljb25zKHtcbiAgY29weU91dGxpbmUsXG4gIHN0YXJPdXRsaW5lLFxuICBjaGF0YnViYmxlRWxsaXBzZXNPdXRsaW5lLFxuICBzaGFyZVNvY2lhbE91dGxpbmUsXG4gIGhlbHBDaXJjbGVPdXRsaW5lLFxuICBsb2dvRmFjZWJvb2ssXG4gIGxvZ29JbnN0YWdyYW0sXG4gIGxvZ29MaW5rZWRpbixcbiAgbG9nb1R3aXR0ZXIsXG4gIGxvZ29Zb3V0dWJlLFxuICBsb2dvVGlrdG9rLFxufSk7XG5cbmNvbnN0IERFRkFVTFRfTkFNRVNQQUNFID0gJ1NldHRpbmdzLkFib3V0JztcbmNvbnN0IERFRkFVTFRfQlJBTkRfTkFNRSA9ICdWYWx0ZWNoJztcbmNvbnN0IERFRkFVTFRfTE9HT19TUkMgPSAnYXNzZXRzL2ltYWdlcy9tYWluLWljb24ucG5nJztcbmNvbnN0IERFRkFVTFRfUkFUSU5HX0VOVElUWV9JRCA9ICdleHBlcmllbmNlJztcblxuLyoqXG4gKiBgdmFsLWFib3V0LXZpZXdgIOKAlCB2aXN0YSBBYm91dCBmdWxsLWZlYXR1cmUgYXV0b2NvbnRlbmlkYSAob3JnYW5pc20pLlxuICogUHJvbW92aWRhIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuIFJlw7puZTpcbiAqICAtICoqSEVSTyoqIOKAlCBsb2dvICsgbm9tYnJlIGRlIG1hcmNhICsgdGFnbGluZSArIHBpbGwgZGUgdmVyc2nDs24gKGNvcGlhYmxlKS5cbiAqICAtICoqRGVzY3JpcGNpw7NuKiog4oCUIHTDrXR1bG8gKyBjdWVycG8uXG4gKiAgLSAqKkFjY2lvbmVzKiog4oCUIGFjdGlvbi1jYXJkIGRlIHJhdGluZyBidWlsdC1pbiAoYWJyZSBgdmFsLWNvbnRlbnQtcmVhY3Rpb25gXG4gKiAgICBESVJFQ1RBTUVOVEUgdsOtYSBgTW9kYWxTZXJ2aWNlYCwgc2luIHdyYXBwZXIgbG9jYWwg4oCUIGRlY2lzacOzbiBDVE8pICsgbGFzXG4gKiAgICBhY2Npb25lcyBnZW7DqXJpY2FzIHF1ZSBlbCBjb25zdW1lciBhcG9ydGUgcG9yIGBjb25maWcuYWN0aW9uc2AuXG4gKiAgLSAqKlJlZGVzKiog4oCUIGxpbmtzIHNvY2lhbGVzIChgY29uZmlnLnNvY2lhbExpbmtzYCk7IHNlY2Npw7NuIG9jdWx0YSBzaSB2YWPDrWEuXG4gKiAgLSAqKkZvb3RlcioqIOKAlCBjb3B5cmlnaHQgY29uIGVsIGHDsW8gYWN0dWFsLlxuICpcbiAqIExvIGFwcC1zcGVjaWZpYyAobG9nbywgbm9tYnJlLCB2ZXJzacOzbiwgcmVkZXMsIGFjY2lvbmVzIHNoYXJlL2ZhcSkgdmlhamEgY29tb1xuICogREFUQSBkZSBjb25maWcg4oCUIE5PIGNvbW8gc2xvdHMgKEFEUi0wMjEpLiBMYSB2ZXJzacOzbiBsYSBwYXNhIGVsIGNvbnN1bWVyXG4gKiAoYGNvbmZpZy52ZXJzaW9uYCA9IHN1IGBBUFBfVkVSU0lPTmApOyBsYSBsaWIgTk8gaW1wb3J0YSBlbCBgdmVyc2lvbi50c2AgZGUgbGFcbiAqIGFwcC4gU2kgbm8gc2UgcGFzYSB2ZXJzacOzbiwgZWwgcGlsbCBzZSBvY3VsdGEuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSB2YWwtcGFnZS13cmFwcGVyLiBgQWN0aXZhdGVkUm91dGVgXG4gKiBzZSBpbnllY3RhIGB7IG9wdGlvbmFsOiB0cnVlIH1gIHNvbG8gcGFyYSBsZWVyIGVsIHJvdXRlIGRhdGEgZGUgY29uZmlnLlxuICpcbiAqIEF1dG8tcmVnaXN0cmEgc3VzIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBlbCBjb25zdHJ1Y3RvciBzaSBlbCBjb25zdW1lciBub1xuICogcHJvdmV5w7MgZWwgbmFtZXNwYWNlIGNvbmZpZ3VyYWRvIChkZWZhdWx0IGBTZXR0aW5ncy5BYm91dGApLlxuICpcbiAqIEdPVENIQSBpMThuIENvbnRlbnRSZWFjdGlvbjogYHZhbC1jb250ZW50LXJlYWN0aW9uYCBleGlnZSBzdSBuYW1lc3BhY2VcbiAqIGBDb250ZW50UmVhY3Rpb25gIHJlZ2lzdHJhZG8gZG9uZGUgc2UgdXNlIChrZXkgZmFsdGFudGUgZW4gYmluZGluZyArIENEID1cbiAqIG5hdmVnYWRvciBjb25nZWxhZG8gZW4gZGV2KS4gYENvbnRlbnRSZWFjdGlvbkNvbXBvbmVudGAgc2UgYXV0by1yZWdpc3RyYSBlc2VcbiAqIG5hbWVzcGFjZSBlbiBTVSBjb25zdHJ1Y3RvciwgeSBjb21vIHNlIGFicmUgdsOtYSBgTW9kYWxTZXJ2aWNlYCBlc2UgY29uc3RydWN0b3JcbiAqIGNvcnJlIGFudGVzIGRlIHF1ZSBzdSB0ZW1wbGF0ZSBiaW5kZSDigJQgcXVlZGEgY3ViaWVydG8uIElndWFsIGxvIGltcG9ydGFtb3NcbiAqIGNvbW8gZGVwZW5kZW5jaWEgZXhwbMOtY2l0YSBkZSBlc3RhIHZpc3RhIHBhcmEgcXVlIGxhIGdhcmFudMOtYSBzZWEgbG9jYWwuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1hYm91dC12aWV3JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0lvbkJ1dHRvbiwgSW9uR3JpZCwgSW9uSWNvbiwgUGlsbENvbXBvbmVudCwgVGl0bGVDb21wb25lbnQsIFRleHRDb21wb25lbnQsIEFjdGlvbkNhcmRDb21wb25lbnRdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24tZ3JpZCBjbGFzcz1cImFib3V0LWdyaWRcIj5cbiAgICAgIDwhLS0gSEVSTzogbG9nbyArIG5hbWUgKyB2ZXJzaW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImFib3V0LWhlcm9cIj5cbiAgICAgICAgPGltZyBjbGFzcz1cImFib3V0LWhlcm9fX2xvZ29cIiBbc3JjXT1cImxvZ29TcmMoKVwiIFthbHRdPVwiYnJhbmROYW1lKClcIiAvPlxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IGJyYW5kTmFtZSgpLFxuICAgICAgICAgICAgc2l6ZTogJ3hsYXJnZScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogdHJ1ZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCd0YWdsaW5lJyksXG4gICAgICAgICAgICBzaXplOiAnbWVkaXVtJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgQGlmICh2ZXJzaW9uKCkpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInZlcnNpb24tcm93XCJcbiAgICAgICAgICAgIChjbGljayk9XCJjb3B5VmVyc2lvbigpXCJcbiAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJ0dCgndmVyc2lvbkxhYmVsJykgKyAnICcgKyB2ZXJzaW9uKClcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDx2YWwtcGlsbFxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIGxhYmVsOiB0dCgndmVyc2lvbkxhYmVsJykgKyAnICcgKyB2ZXJzaW9uKCksXG4gICAgICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgICAgICB3ZWlnaHQ6ICdib2xkJyxcbiAgICAgICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNvcHktb3V0bGluZVwiIGNsYXNzPVwidmVyc2lvbi1jb3B5LWljb25cIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBERVNDUklQVElPTiAtLT5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJvdXQtc2VjdGlvblwiPlxuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJzZWN0aW9uVGl0bGUoJ2Rlc2NUaXRsZScpXCIgLz5cbiAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdkZXNjQm9keScpLFxuICAgICAgICAgICAgc2l6ZTogJ21lZGl1bScsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gQUNUSU9OUyDigJQgcmF0aW5nIGJ1aWx0LWluICsgYWNjaW9uZXMgZGVsIGNvbnN1bWVyLiAtLT5cbiAgICAgIEBpZiAoc2hvd1JhdGluZygpIHx8IGFjdGlvbnMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiYWJvdXQtc2VjdGlvbiBhYm91dC1zZWN0aW9uLS1yZXZpZXdzXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwic2VjdGlvblRpdGxlKCdhY3Rpb25zVGl0bGUnKVwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LWFjdGlvbnNcIj5cbiAgICAgICAgICAgIEBpZiAoc2hvd1JhdGluZygpKSB7XG4gICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cInJhdGVBY3Rpb25DYXJkKClcIiAob25DbGljayk9XCJvcGVuUmF0aW5nKClcIiAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGZvciAoYWN0aW9uIG9mIGFjdGlvbnMoKTsgdHJhY2sgYWN0aW9uLmxhYmVsKSB7XG4gICAgICAgICAgICAgIDx2YWwtYWN0aW9uLWNhcmQgW3Byb3BzXT1cImV4dHJhQWN0aW9uQ2FyZChhY3Rpb24pXCIgKG9uQ2xpY2spPVwiYWN0aW9uLm9uQ2xpY2soKVwiIC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvc2VjdGlvbj5cbiAgICAgIH1cblxuICAgICAgPCEtLSBTT0NJQUwg4oCUIHBlbsO6bHRpbW8sIGp1c3RvIGFudGVzIGRlbCBmb290ZXIgZGUgZGVyZWNob3MuIC0tPlxuICAgICAgQGlmIChzb2NpYWxMaW5rcygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgPHNlY3Rpb24gY2xhc3M9XCJhYm91dC1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwic2VjdGlvblRpdGxlKCdzb2NpYWxUaXRsZScpXCIgLz5cbiAgICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHR0KCdzb2NpYWxEZXNjJyksXG4gICAgICAgICAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImFib3V0LXNvY2lhbFwiPlxuICAgICAgICAgICAgQGZvciAocyBvZiBzb2NpYWxMaW5rcygpOyB0cmFjayBzLnVybCkge1xuICAgICAgICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInNvY2lhbC1idG5cIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwicy5sYWJlbFwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Vcmwocy51cmwpXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpb24taWNvbiBbbmFtZV09XCJzLmljb25cIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L3NlY3Rpb24+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gRk9PVEVSIC0tPlxuICAgICAgPGZvb3RlciBjbGFzcz1cImFib3V0LWZvb3RlclwiPlxuICAgICAgICA8dmFsLXRleHRcbiAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgY29udGVudDogY29weXJpZ2h0KCksXG4gICAgICAgICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgICAgIGJvbGQ6IGZhbHNlLFxuICAgICAgICAgIH1cIlxuICAgICAgICAvPlxuICAgICAgPC9mb290ZXI+XG4gICAgPC9pb24tZ3JpZD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgOmhvc3Qge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmFib3V0LWdyaWQge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDA7XG4gICAgICAgIG1heC13aWR0aDogNzIwcHg7XG4gICAgICAgIG1hcmdpbjogMCBhdXRvO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVybyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBwYWRkaW5nOiAyNHB4IDAgMTZweDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtaGVyb19fbG9nbyB7XG4gICAgICAgIGhlaWdodDogOTZweDtcbiAgICAgICAgd2lkdGg6IGF1dG87XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuXG4gICAgICAudmVyc2lvbi1yb3cge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBvcGFjaXR5OiAwLjg1O1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzIGVhc2U7XG4gICAgICB9XG5cbiAgICAgIC52ZXJzaW9uLXJvdzpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG5cbiAgICAgIC52ZXJzaW9uLWNvcHktaWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbiB7XG4gICAgICAgIHBhZGRpbmc6IDE2cHggMCA4cHg7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cblxuICAgICAgLmFib3V0LXNlY3Rpb24tLXJldmlld3MgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZF9fZGVzY3JpcHRpb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG5cbiAgICAgIC5hYm91dC1zb2NpYWwge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgcGFkZGluZy10b3A6IDhweDtcbiAgICAgIH1cblxuICAgICAgLmFib3V0LXNvY2lhbCAuc29jaWFsLWJ0biB7XG4gICAgICAgIC0tYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCwgI2Y0ZjVmOCk7XG4gICAgICAgIC0tY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgLS1wYWRkaW5nLXN0YXJ0OiAwO1xuICAgICAgICAtLXBhZGRpbmctZW5kOiAwO1xuICAgICAgICB3aWR0aDogNDhweDtcbiAgICAgICAgaGVpZ2h0OiA0OHB4O1xuICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuOmhvdmVyIHtcbiAgICAgICAgLS1iYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeS10aW50LCAjOGE0Y2U1KTtcbiAgICAgICAgLS1jb2xvcjogI2ZmZjtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuIGlvbi1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xuICAgICAgfVxuXG4gICAgICAuYWJvdXQtZm9vdGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMDtcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xuICAgICAgfVxuXG4gICAgICA6aG9zdC1jb250ZXh0KGJvZHkuZGFyaykgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgdmFsLWFjdGlvbi1jYXJkIDo6bmctZGVlcCAuYWN0aW9uLWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkIHtcbiAgICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjA0KTtcbiAgICAgIH1cblxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkOmhvdmVyLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5hYm91dC1zZWN0aW9uLS1yZXZpZXdzIHZhbC1hY3Rpb24tY2FyZCA6Om5nLWRlZXAgLmFjdGlvbi1jYXJkOmhvdmVyLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAuYWJvdXQtc2VjdGlvbi0tcmV2aWV3cyB2YWwtYWN0aW9uLWNhcmQgOjpuZy1kZWVwIC5hY3Rpb24tY2FyZDpob3ZlciB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wOCk7XG4gICAgICB9XG5cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAuYWJvdXQtc29jaWFsIC5zb2NpYWwtYnRuLFxuICAgICAgOmhvc3QtY29udGV4dChodG1sLmlvbi1wYWxldHRlLWRhcmspIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG4sXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5hYm91dC1zb2NpYWwgLnNvY2lhbC1idG4ge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNCk7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQWJvdXRWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBuYXYgPSBpbmplY3QoTmF2aWdhdGlvblNlcnZpY2UpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG1vZGFsU2VydmljZSA9IGluamVjdChNb2RhbFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgcm91dGUgPSBpbmplY3QoQWN0aXZhdGVkUm91dGUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgLyoqXG4gICAqIENvbmZpZyB2w61hIEBJbnB1dCAob2JqZWN0LWZpcnN0KS4gU2kgbm8gc2UgcGFzYSwgc2UgY2FlIGFsIHJvdXRlIGRhdGFcbiAgICogYGFib3V0Q29uZmlnYCAocG9ibGFkbyBwb3IgYHByb3ZpZGVWYWx0ZWNoQWJvdXRSb3V0ZXNgKS4gYHJlc29sdmVkQ29uZmlnYFxuICAgKiBtZXJnZWEgY29uIGxvcyBkZWZhdWx0cyDigJQgYEBJbnB1dGAgZ2FuYSBzb2JyZSByb3V0ZSBkYXRhLlxuICAgKi9cbiAgQElucHV0KCkgY29uZmlnPzogQWJvdXRWaWV3Q29uZmlnO1xuXG4gIHJlYWRvbmx5IHJlc29sdmVkQ29uZmlnID0gY29tcHV0ZWQ8UmVxdWlyZWQ8T21pdDxBYm91dFZpZXdDb25maWcsICdvblJhdGVkJz4+ICYgUGljazxBYm91dFZpZXdDb25maWcsICdvblJhdGVkJz4+KFxuICAgICgpID0+IHtcbiAgICAgIGNvbnN0IGZyb21Sb3V0ZSA9ICh0aGlzLnJvdXRlPy5zbmFwc2hvdC5kYXRhWydhYm91dENvbmZpZyddID8/IHt9KSBhcyBBYm91dFZpZXdDb25maWc7XG4gICAgICBjb25zdCBtZXJnZWQ6IEFib3V0Vmlld0NvbmZpZyA9IHsgLi4uZnJvbVJvdXRlLCAuLi4odGhpcy5jb25maWcgPz8ge30pIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICBicmFuZDoge1xuICAgICAgICAgIG5hbWU6IG1lcmdlZC5icmFuZD8ubmFtZSA/PyBERUZBVUxUX0JSQU5EX05BTUUsXG4gICAgICAgICAgbG9nb1NyYzogbWVyZ2VkLmJyYW5kPy5sb2dvU3JjID8/IERFRkFVTFRfTE9HT19TUkMsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNpb246IG1lcmdlZC52ZXJzaW9uID8/ICcnLFxuICAgICAgICBzb2NpYWxMaW5rczogbWVyZ2VkLnNvY2lhbExpbmtzID8/IFtdLFxuICAgICAgICBzaG93UmF0aW5nOiBtZXJnZWQuc2hvd1JhdGluZyA/PyB0cnVlLFxuICAgICAgICByYXRpbmdFbnRpdHlJZDogbWVyZ2VkLnJhdGluZ0VudGl0eUlkID8/IERFRkFVTFRfUkFUSU5HX0VOVElUWV9JRCxcbiAgICAgICAgYWN0aW9uczogbWVyZ2VkLmFjdGlvbnMgPz8gW10sXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFLFxuICAgICAgICBvblJhdGVkOiBtZXJnZWQub25SYXRlZCxcbiAgICAgIH07XG4gICAgfVxuICApO1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4biByZXN1ZWx0byAoY2FwdHVyYWRvIHBhcmEgbGxhbWFkYXMgbm8tcmVhY3RpdmFzKS4gKi9cbiAgcHJpdmF0ZSBnZXQgbnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmkxOG5OYW1lc3BhY2U7XG4gIH1cblxuICByZWFkb25seSBicmFuZE5hbWUgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuYnJhbmQubmFtZSEpO1xuICByZWFkb25seSBsb2dvU3JjID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmJyYW5kLmxvZ29TcmMhKTtcbiAgcmVhZG9ubHkgdmVyc2lvbiA9IGNvbXB1dGVkKCgpID0+IHRoaXMucmVzb2x2ZWRDb25maWcoKS52ZXJzaW9uKTtcbiAgcmVhZG9ubHkgc29jaWFsTGlua3MgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuc29jaWFsTGlua3MpO1xuICByZWFkb25seSBzaG93UmF0aW5nID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLnNob3dSYXRpbmcpO1xuICByZWFkb25seSBhY3Rpb25zID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5yZXNvbHZlZENvbmZpZygpLmFjdGlvbnMpO1xuXG4gIC8qKiBDb3B5cmlnaHQgZGVsIGZvb3RlciDigJQgYcOxbyBhY3R1YWwgaW50ZXJwb2xhZG8gZW4gYGNvcHlyaWdodFRleHRgLiAqL1xuICByZWFkb25seSBjb3B5cmlnaHQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCB5ZWFyID0gU3RyaW5nKG5ldyBEYXRlKCkuZ2V0RnVsbFllYXIoKSk7XG4gICAgcmV0dXJuIHRoaXMudHQoJ2NvcHlyaWdodFRleHQnKS5yZXBsYWNlKCd7eWVhcn0nLCB5ZWFyKTtcbiAgfSk7XG5cbiAgLyoqIFRpdGxlIG1ldGFkYXRhIHBhcmEgc2VjY2lvbmVzIOKAlCBib2xkICsgc2l6ZSBzbWFsbC4gKi9cbiAgcmVhZG9ubHkgcmF0ZUFjdGlvbkNhcmQgPSBjb21wdXRlZDxBY3Rpb25DYXJkTWV0YWRhdGE+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB7IGlvbmljb246ICdzdGFyLW91dGxpbmUnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAgICB0aXRsZTogdGhpcy50dCgncmF0ZVRpdGxlJyksXG4gICAgICBkZXNjcmlwdGlvbjogdGhpcy50dCgncmF0ZURlc2MnKSxcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgc2hhZG93ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IG5zID0gdGhpcy5ucztcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UobnMpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KG5zLCBBQk9VVF9WSUVXX0kxOE4pO1xuICAgIH1cbiAgICB0aGlzLm5hdi5zZXRCYWNrSGVhZGVyKCdwYWdlVGl0bGUnLCBucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgfVxuXG4gIC8qKiBIZWxwZXIgaTE4biBib3VuZCBhbCBuYW1lc3BhY2UgcmVzdWVsdG8uIFJlYWN0aXZvIHbDrWEgYGxhbmcoKWAuICovXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxuXG4gIC8qKiBUaXRsZSBtZXRhZGF0YSBwYXJhIHNlY2Npb25lcyDigJQgYm9sZCArIHNpemUgc21hbGwuICovXG4gIHByb3RlY3RlZCBzZWN0aW9uVGl0bGUoa2V5OiBzdHJpbmcpOiBUaXRsZU1ldGFkYXRhIHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIHJldHVybiB7XG4gICAgICBjb250ZW50OiB0aGlzLnR0KGtleSksXG4gICAgICBzaXplOiAnc21hbGwnLFxuICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgIGJvbGQ6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBBY3Rpb25DYXJkTWV0YWRhdGEgcGFyYSB1bmEgYWNjacOzbiBnZW7DqXJpY2EgZGVsIGNvbnN1bWVyLiAqL1xuICBwcm90ZWN0ZWQgZXh0cmFBY3Rpb25DYXJkKGFjdGlvbjogQWJvdXRBY3Rpb24pOiBBY3Rpb25DYXJkTWV0YWRhdGEge1xuICAgIHJldHVybiB7XG4gICAgICBpY29uOiB7IGlvbmljb246IGFjdGlvbi5pY29uID8/ICdjaGF0YnViYmxlLWVsbGlwc2VzLW91dGxpbmUnLCBjb2xvcjogJ3ByaW1hcnknIH0sXG4gICAgICB0aXRsZTogYWN0aW9uLmxhYmVsLFxuICAgICAgZGVzY3JpcHRpb246IGFjdGlvbi5kZXNjcmlwdGlvbixcbiAgICAgIHNpemU6ICdtZWRpdW0nLFxuICAgICAgYm9yZGVyZWQ6IGZhbHNlLFxuICAgICAgc2hhZG93ZWQ6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICAvKiogQ29waWEgbGEgdmVyc2nDs24gYWwgcG9ydGFwYXBlbGVzICsgdG9hc3QgKGNvbG9yIGRhcmspLiAqL1xuICBhc3luYyBjb3B5VmVyc2lvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB2ID0gdGhpcy52ZXJzaW9uKCk7XG4gICAgaWYgKCF2KSByZXR1cm47XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHYpO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdGhpcy50dCgndmVyc2lvbkNvcGllZCcpLnJlcGxhY2UoJ3t2fScsIHYpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMTUwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gY2xpcGJvYXJkIG5vIGRpc3BvbmlibGUg4oCUIHNpbGVuY2lvc29cbiAgICB9XG4gIH1cblxuICAvKiogQWJyZSB1bmEgVVJMIGV4dGVybmEgZW4gbnVldmEgdGFiLiBgbWFpbHRvOmAgcXVlZGEgZW4gbGEgbWlzbWEgdGFiLiAqL1xuICBvcGVuVXJsKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdtYWlsdG86JykpIHtcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnLCAnbm9vcGVuZXIsbm9yZWZlcnJlcicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFwiQ2FsaWZpY2FyIGxhIGFwcFwiIOKAlCBhYnJlIGB2YWwtY29udGVudC1yZWFjdGlvbmAgRElSRUNUQU1FTlRFIGNvbW8gc2hlZXRcbiAgICogbW9kYWwgKHNpbiB3cmFwcGVyIGxvY2FsIOKAlCBkZWNpc2nDs24gQ1RPKS4gRWwgY29tcG9uZW50ZSBwZXJzaXN0ZSBsYSByZWFjY2nDs25cbiAgICogY29udHJhIGVsIGJhY2tlbmQgZGUgZmVlZGJhY2sgeSBtdWVzdHJhIHN1IHByb3BpbyBlc3RhZG8gZGUgXCJncmFjaWFzXCI7IGVsXG4gICAqIHNoZWV0IHNlIGNpZXJyYSBhcnJhc3RyYW5kbyAoYnJlYWtwb2ludCAwKS4gRWwgbmFtZXNwYWNlIGkxOG5cbiAgICogYENvbnRlbnRSZWFjdGlvbmAgbG8gYXV0by1yZWdpc3RyYSBgQ29udGVudFJlYWN0aW9uQ29tcG9uZW50YCBlbiBzdVxuICAgKiBjb25zdHJ1Y3RvciwgcXVlIGNvcnJlIGFsIGNyZWFyIGVsIG1vZGFsIOKAlCBzaW4gcmllc2dvIGRlIGtleSBmYWx0YW50ZS5cbiAgICpcbiAgICogU2hlZXQgKGJvdHRvbSBzaGVldCk6IGVsIGNvbnRlbmlkbyBzY3JvbGxlYSBkZW50cm8geSBlbCBib3TDs24gXCJFbnZpYXJcIiBxdWVkYVxuICAgKiBzaWVtcHJlIGFsY2FuemFibGUsIHRhbWJpw6luIGVuIHZpZXdwb3J0cyBjaGljb3MuXG4gICAqL1xuICBhc3luYyBvcGVuUmF0aW5nKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlYWN0aW9uUHJvcHM6IFBhcnRpYWw8Q29udGVudFJlYWN0aW9uTWV0YWRhdGE+ID0ge1xuICAgICAgLy8gZW50aXR5VHlwZSBcImFwcFwiIGRpc3Rpbmd1ZSBlc3RhIHJlYWNjacOzbiBkZSBsYXMgZGUgYXJ0w61jdWxvcy9GQVFzLlxuICAgICAgZW50aXR5UmVmOiB7IGVudGl0eVR5cGU6ICdhcHAnLCBlbnRpdHlJZDogdGhpcy5yZXNvbHZlZENvbmZpZygpLnJhdGluZ0VudGl0eUlkIH0sXG4gICAgICBxdWVzdGlvbjogdGhpcy50dCgncmF0ZVF1ZXN0aW9uJyksXG4gICAgICBjb21tZW50UGxhY2Vob2xkZXI6IHRoaXMudHQoJ3JhdGVDb21tZW50JyksXG4gICAgICB0aGFua1lvdU1lc3NhZ2U6IHRoaXMudHQoJ3JhdGVUaGFua3MnKSxcbiAgICAgIHNob3dDb21tZW50OiB0cnVlLFxuICAgICAgc2hvd1RoYW5rWW91OiB0cnVlLFxuICAgICAgLy8gTW9kYWwgb25lLXNob3Q6IE5PIGJsb3F1ZWFyIGVsIHJlbmRlciBjb24gZWwgY2hlY2sgZGUgcmF0aW5nIHByZXZpby5cbiAgICAgIHNraXBJbml0aWFsQ2hlY2s6IHRydWUsXG4gICAgICBlbW9qaXM6IFsn8J+YlScsICfwn5mCJywgJ/CfmI0nXSxcbiAgICAgIGVtb2ppTGFiZWxzOiBbdGhpcy50dCgncmF0ZUJhZCcpLCB0aGlzLnR0KCdyYXRlTWlkJyksIHRoaXMudHQoJ3JhdGVHb29kJyldLFxuICAgIH07XG4gICAgYXdhaXQgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbjxDb250ZW50UmVhY3Rpb25Db21wb25lbnQ+KHtcbiAgICAgIGNvbXBvbmVudDogQ29udGVudFJlYWN0aW9uQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHsgcHJvcHM6IHJlYWN0aW9uUHJvcHMgfSxcbiAgICAgIGJyZWFrcG9pbnRzOiB7XG4gICAgICAgIGluaXRpYWxCcmVha3BvaW50OiAwLjksXG4gICAgICAgIGJyZWFrcG9pbnRzOiBbMCwgMC45LCAxXSxcbiAgICAgICAgc2hvd0hhbmRsZTogdHJ1ZSxcbiAgICAgICAgaGFuZGxlQmVoYXZpb3I6ICdjeWNsZScsXG4gICAgICB9LFxuICAgIH0pO1xuICAgIHRoaXMucmVzb2x2ZWRDb25maWcoKS5vblJhdGVkPy4oKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Defaults i18n (es/en) embebidos en `val-about-view`. Auto-registrados en el
|
|
3
|
+
* constructor del componente si el consumer no proveyó el namespace
|
|
4
|
+
* (`Settings.About` por default). SOLO incluye las keys que la vista usa.
|
|
5
|
+
*
|
|
6
|
+
* Textos portados EXACTOS del override `Settings.About` de showcase
|
|
7
|
+
* (`frontend/showcase/src/i18n/index.ts`). Las keys de las acciones
|
|
8
|
+
* showcase-specific (`feedback*`, `share*`, `faq*`, `donate*`) NO se incluyen:
|
|
9
|
+
* esas acciones se modelan ahora como `actions[]` de la config (el consumer
|
|
10
|
+
* aporta sus propios textos). `copyrightText` se incluye aquí (antes salía del
|
|
11
|
+
* namespace `Layout`) para que la vista sea autocontenida.
|
|
12
|
+
*/
|
|
13
|
+
export const ABOUT_VIEW_I18N = {
|
|
14
|
+
es: {
|
|
15
|
+
pageTitle: 'Acerca de',
|
|
16
|
+
pageDescription: 'Demo del factory Valtech',
|
|
17
|
+
tagline: 'App de demo — explora las funcionalidades en vivo',
|
|
18
|
+
descTitle: 'Acerca de Showcase',
|
|
19
|
+
descBody: 'Showcase es la app de referencia del factory Valtech. Aquí puedes explorar el flujo completo en vivo: autenticación, perfil, organizaciones, notificaciones y ajustes de cuenta.',
|
|
20
|
+
actionsTitle: 'Acciones',
|
|
21
|
+
rateTitle: 'Calificar la app',
|
|
22
|
+
rateDesc: 'Cuéntanos qué te ha parecido la experiencia.',
|
|
23
|
+
rateModalTitle: 'Tu opinión',
|
|
24
|
+
rateQuestion: '¿Qué te ha parecido la experiencia hasta ahora?',
|
|
25
|
+
rateComment: 'Cuéntanos más (opcional)…',
|
|
26
|
+
rateThanks: '¡Gracias por tu opinión!',
|
|
27
|
+
rateClose: 'Cerrar',
|
|
28
|
+
rateBad: 'No tanto',
|
|
29
|
+
rateMid: 'Bien',
|
|
30
|
+
rateGood: '¡Me encanta!',
|
|
31
|
+
socialTitle: 'Síguenos',
|
|
32
|
+
socialDesc: 'Estamos en redes sociales.',
|
|
33
|
+
versionLabel: 'Versión',
|
|
34
|
+
versionCopied: 'v{v} copiado',
|
|
35
|
+
copyrightText: '© {year}, Soluciones Valtech Ltda. o sus afiliados. Todos los derechos reservados.',
|
|
36
|
+
},
|
|
37
|
+
en: {
|
|
38
|
+
pageTitle: 'About',
|
|
39
|
+
pageDescription: 'Valtech factory demo',
|
|
40
|
+
tagline: 'Demo app — explore features live',
|
|
41
|
+
descTitle: 'About Showcase',
|
|
42
|
+
descBody: 'Showcase is the reference app for the Valtech factory. Explore the full flow live: authentication, profile, organizations, notifications and account settings.',
|
|
43
|
+
actionsTitle: 'Actions',
|
|
44
|
+
rateTitle: 'Rate the app',
|
|
45
|
+
rateDesc: 'Tell us how your experience has been.',
|
|
46
|
+
rateModalTitle: 'Your feedback',
|
|
47
|
+
rateQuestion: 'How has your experience been so far?',
|
|
48
|
+
rateComment: 'Tell us more (optional)…',
|
|
49
|
+
rateThanks: 'Thanks for your feedback!',
|
|
50
|
+
rateClose: 'Close',
|
|
51
|
+
rateBad: 'Not great',
|
|
52
|
+
rateMid: 'Good',
|
|
53
|
+
rateGood: 'Love it!',
|
|
54
|
+
socialTitle: 'Follow us',
|
|
55
|
+
socialDesc: "We're on social media.",
|
|
56
|
+
versionLabel: 'Version',
|
|
57
|
+
versionCopied: 'v{v} copied',
|
|
58
|
+
copyrightText: '© {year}, Soluciones Valtech Ltda. or its affiliates. All rights reserved.',
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQtdmlldy5pMThuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hYm91dC12aWV3L2Fib3V0LXZpZXcuaTE4bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQTs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBcUI7SUFDL0MsRUFBRSxFQUFFO1FBQ0YsU0FBUyxFQUFFLFdBQVc7UUFDdEIsZUFBZSxFQUFFLDBCQUEwQjtRQUMzQyxPQUFPLEVBQUUsbURBQW1EO1FBQzVELFNBQVMsRUFBRSxvQkFBb0I7UUFDL0IsUUFBUSxFQUNOLGtMQUFrTDtRQUNwTCxZQUFZLEVBQUUsVUFBVTtRQUN4QixTQUFTLEVBQUUsa0JBQWtCO1FBQzdCLFFBQVEsRUFBRSw4Q0FBOEM7UUFDeEQsY0FBYyxFQUFFLFlBQVk7UUFDNUIsWUFBWSxFQUFFLGlEQUFpRDtRQUMvRCxXQUFXLEVBQUUsMkJBQTJCO1FBQ3hDLFVBQVUsRUFBRSwwQkFBMEI7UUFDdEMsU0FBUyxFQUFFLFFBQVE7UUFDbkIsT0FBTyxFQUFFLFVBQVU7UUFDbkIsT0FBTyxFQUFFLE1BQU07UUFDZixRQUFRLEVBQUUsY0FBYztRQUN4QixXQUFXLEVBQUUsVUFBVTtRQUN2QixVQUFVLEVBQUUsNEJBQTRCO1FBQ3hDLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLGFBQWEsRUFBRSxjQUFjO1FBQzdCLGFBQWEsRUFDWCxvRkFBb0Y7S0FDdkY7SUFDRCxFQUFFLEVBQUU7UUFDRixTQUFTLEVBQUUsT0FBTztRQUNsQixlQUFlLEVBQUUsc0JBQXNCO1FBQ3ZDLE9BQU8sRUFBRSxrQ0FBa0M7UUFDM0MsU0FBUyxFQUFFLGdCQUFnQjtRQUMzQixRQUFRLEVBQ04sZ0tBQWdLO1FBQ2xLLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLFNBQVMsRUFBRSxjQUFjO1FBQ3pCLFFBQVEsRUFBRSx1Q0FBdUM7UUFDakQsY0FBYyxFQUFFLGVBQWU7UUFDL0IsWUFBWSxFQUFFLHNDQUFzQztRQUNwRCxXQUFXLEVBQUUsMEJBQTBCO1FBQ3ZDLFVBQVUsRUFBRSwyQkFBMkI7UUFDdkMsU0FBUyxFQUFFLE9BQU87UUFDbEIsT0FBTyxFQUFFLFdBQVc7UUFDcEIsT0FBTyxFQUFFLE1BQU07UUFDZixRQUFRLEVBQUUsVUFBVTtRQUNwQixXQUFXLEVBQUUsV0FBVztRQUN4QixVQUFVLEVBQUUsd0JBQXdCO1FBQ3BDLFlBQVksRUFBRSxTQUFTO1FBQ3ZCLGFBQWEsRUFBRSxhQUFhO1FBQzVCLGFBQWEsRUFBRSw0RUFBNEU7S0FDNUY7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGFuZ3VhZ2VzQ29udGVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4vdHlwZXMnO1xuXG4vKipcbiAqIERlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbWJlYmlkb3MgZW4gYHZhbC1hYm91dC12aWV3YC4gQXV0by1yZWdpc3RyYWRvcyBlbiBlbFxuICogY29uc3RydWN0b3IgZGVsIGNvbXBvbmVudGUgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiAoYFNldHRpbmdzLkFib3V0YCBwb3IgZGVmYXVsdCkuIFNPTE8gaW5jbHV5ZSBsYXMga2V5cyBxdWUgbGEgdmlzdGEgdXNhLlxuICpcbiAqIFRleHRvcyBwb3J0YWRvcyBFWEFDVE9TIGRlbCBvdmVycmlkZSBgU2V0dGluZ3MuQWJvdXRgIGRlIHNob3djYXNlXG4gKiAoYGZyb250ZW5kL3Nob3djYXNlL3NyYy9pMThuL2luZGV4LnRzYCkuIExhcyBrZXlzIGRlIGxhcyBhY2Npb25lc1xuICogc2hvd2Nhc2Utc3BlY2lmaWMgKGBmZWVkYmFjaypgLCBgc2hhcmUqYCwgYGZhcSpgLCBgZG9uYXRlKmApIE5PIHNlIGluY2x1eWVuOlxuICogZXNhcyBhY2Npb25lcyBzZSBtb2RlbGFuIGFob3JhIGNvbW8gYGFjdGlvbnNbXWAgZGUgbGEgY29uZmlnIChlbCBjb25zdW1lclxuICogYXBvcnRhIHN1cyBwcm9waW9zIHRleHRvcykuIGBjb3B5cmlnaHRUZXh0YCBzZSBpbmNsdXllIGFxdcOtIChhbnRlcyBzYWzDrWEgZGVsXG4gKiBuYW1lc3BhY2UgYExheW91dGApIHBhcmEgcXVlIGxhIHZpc3RhIHNlYSBhdXRvY29udGVuaWRhLlxuICovXG5leHBvcnQgY29uc3QgQUJPVVRfVklFV19JMThOOiBMYW5ndWFnZXNDb250ZW50ID0ge1xuICBlczoge1xuICAgIHBhZ2VUaXRsZTogJ0FjZXJjYSBkZScsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnRGVtbyBkZWwgZmFjdG9yeSBWYWx0ZWNoJyxcbiAgICB0YWdsaW5lOiAnQXBwIGRlIGRlbW8g4oCUIGV4cGxvcmEgbGFzIGZ1bmNpb25hbGlkYWRlcyBlbiB2aXZvJyxcbiAgICBkZXNjVGl0bGU6ICdBY2VyY2EgZGUgU2hvd2Nhc2UnLFxuICAgIGRlc2NCb2R5OlxuICAgICAgJ1Nob3djYXNlIGVzIGxhIGFwcCBkZSByZWZlcmVuY2lhIGRlbCBmYWN0b3J5IFZhbHRlY2guIEFxdcOtIHB1ZWRlcyBleHBsb3JhciBlbCBmbHVqbyBjb21wbGV0byBlbiB2aXZvOiBhdXRlbnRpY2FjacOzbiwgcGVyZmlsLCBvcmdhbml6YWNpb25lcywgbm90aWZpY2FjaW9uZXMgeSBhanVzdGVzIGRlIGN1ZW50YS4nLFxuICAgIGFjdGlvbnNUaXRsZTogJ0FjY2lvbmVzJyxcbiAgICByYXRlVGl0bGU6ICdDYWxpZmljYXIgbGEgYXBwJyxcbiAgICByYXRlRGVzYzogJ0N1w6ludGFub3MgcXXDqSB0ZSBoYSBwYXJlY2lkbyBsYSBleHBlcmllbmNpYS4nLFxuICAgIHJhdGVNb2RhbFRpdGxlOiAnVHUgb3BpbmnDs24nLFxuICAgIHJhdGVRdWVzdGlvbjogJ8K/UXXDqSB0ZSBoYSBwYXJlY2lkbyBsYSBleHBlcmllbmNpYSBoYXN0YSBhaG9yYT8nLFxuICAgIHJhdGVDb21tZW50OiAnQ3XDqW50YW5vcyBtw6FzIChvcGNpb25hbCnigKYnLFxuICAgIHJhdGVUaGFua3M6ICfCoUdyYWNpYXMgcG9yIHR1IG9waW5pw7NuIScsXG4gICAgcmF0ZUNsb3NlOiAnQ2VycmFyJyxcbiAgICByYXRlQmFkOiAnTm8gdGFudG8nLFxuICAgIHJhdGVNaWQ6ICdCaWVuJyxcbiAgICByYXRlR29vZDogJ8KhTWUgZW5jYW50YSEnLFxuICAgIHNvY2lhbFRpdGxlOiAnU8OtZ3Vlbm9zJyxcbiAgICBzb2NpYWxEZXNjOiAnRXN0YW1vcyBlbiByZWRlcyBzb2NpYWxlcy4nLFxuICAgIHZlcnNpb25MYWJlbDogJ1ZlcnNpw7NuJyxcbiAgICB2ZXJzaW9uQ29waWVkOiAndnt2fSBjb3BpYWRvJyxcbiAgICBjb3B5cmlnaHRUZXh0OlxuICAgICAgJ8KpIHt5ZWFyfSwgU29sdWNpb25lcyBWYWx0ZWNoIEx0ZGEuIG8gc3VzIGFmaWxpYWRvcy4gVG9kb3MgbG9zIGRlcmVjaG9zIHJlc2VydmFkb3MuJyxcbiAgfSxcbiAgZW46IHtcbiAgICBwYWdlVGl0bGU6ICdBYm91dCcsXG4gICAgcGFnZURlc2NyaXB0aW9uOiAnVmFsdGVjaCBmYWN0b3J5IGRlbW8nLFxuICAgIHRhZ2xpbmU6ICdEZW1vIGFwcCDigJQgZXhwbG9yZSBmZWF0dXJlcyBsaXZlJyxcbiAgICBkZXNjVGl0bGU6ICdBYm91dCBTaG93Y2FzZScsXG4gICAgZGVzY0JvZHk6XG4gICAgICAnU2hvd2Nhc2UgaXMgdGhlIHJlZmVyZW5jZSBhcHAgZm9yIHRoZSBWYWx0ZWNoIGZhY3RvcnkuIEV4cGxvcmUgdGhlIGZ1bGwgZmxvdyBsaXZlOiBhdXRoZW50aWNhdGlvbiwgcHJvZmlsZSwgb3JnYW5pemF0aW9ucywgbm90aWZpY2F0aW9ucyBhbmQgYWNjb3VudCBzZXR0aW5ncy4nLFxuICAgIGFjdGlvbnNUaXRsZTogJ0FjdGlvbnMnLFxuICAgIHJhdGVUaXRsZTogJ1JhdGUgdGhlIGFwcCcsXG4gICAgcmF0ZURlc2M6ICdUZWxsIHVzIGhvdyB5b3VyIGV4cGVyaWVuY2UgaGFzIGJlZW4uJyxcbiAgICByYXRlTW9kYWxUaXRsZTogJ1lvdXIgZmVlZGJhY2snLFxuICAgIHJhdGVRdWVzdGlvbjogJ0hvdyBoYXMgeW91ciBleHBlcmllbmNlIGJlZW4gc28gZmFyPycsXG4gICAgcmF0ZUNvbW1lbnQ6ICdUZWxsIHVzIG1vcmUgKG9wdGlvbmFsKeKApicsXG4gICAgcmF0ZVRoYW5rczogJ1RoYW5rcyBmb3IgeW91ciBmZWVkYmFjayEnLFxuICAgIHJhdGVDbG9zZTogJ0Nsb3NlJyxcbiAgICByYXRlQmFkOiAnTm90IGdyZWF0JyxcbiAgICByYXRlTWlkOiAnR29vZCcsXG4gICAgcmF0ZUdvb2Q6ICdMb3ZlIGl0IScsXG4gICAgc29jaWFsVGl0bGU6ICdGb2xsb3cgdXMnLFxuICAgIHNvY2lhbERlc2M6IFwiV2UncmUgb24gc29jaWFsIG1lZGlhLlwiLFxuICAgIHZlcnNpb25MYWJlbDogJ1ZlcnNpb24nLFxuICAgIHZlcnNpb25Db3BpZWQ6ICd2e3Z9IGNvcGllZCcsXG4gICAgY29weXJpZ2h0VGV4dDogJ8KpIHt5ZWFyfSwgU29sdWNpb25lcyBWYWx0ZWNoIEx0ZGEuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLicsXG4gIH0sXG59O1xuIl19
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { AboutViewComponent } from './about-view.component';
|
|
2
|
+
/**
|
|
3
|
+
* Helper para montar la vista About (`val-about-view`) como ruta en una app del
|
|
4
|
+
* factory. El `config` se pasa por route `data` (`aboutConfig`) y el componente
|
|
5
|
+
* lo lee como fallback de su `@Input() config` (el `@Input` gana).
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```ts
|
|
9
|
+
* // settings.routes.ts
|
|
10
|
+
* import { APP_VERSION } from '../version';
|
|
11
|
+
*
|
|
12
|
+
* export const settingsRoutes: Routes = [
|
|
13
|
+
* ...provideValtechAboutRoutes({ config: { version: APP_VERSION } }), // → /app/about
|
|
14
|
+
* { path: 'preferences', loadComponent: () => ... },
|
|
15
|
+
* ];
|
|
16
|
+
*
|
|
17
|
+
* // con redes y acciones extra:
|
|
18
|
+
* ...provideValtechAboutRoutes({
|
|
19
|
+
* config: {
|
|
20
|
+
* version: APP_VERSION,
|
|
21
|
+
* socialLinks: VALTECH_SOCIAL_LINKS.map(s => ({ icon: s.icon, url: s.url, label: s.name })),
|
|
22
|
+
* actions: [{ label: 'Compartir', icon: 'share-social-outline', onClick: () => share() }],
|
|
23
|
+
* },
|
|
24
|
+
* }),
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export function provideValtechAboutRoutes(opts) {
|
|
28
|
+
return [
|
|
29
|
+
{
|
|
30
|
+
path: opts?.path ?? 'about',
|
|
31
|
+
component: AboutViewComponent,
|
|
32
|
+
data: { aboutConfig: opts?.config },
|
|
33
|
+
},
|
|
34
|
+
];
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJvdXQucm91dGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9hYm91dC12aWV3L2Fib3V0LnJvdXRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUc1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JHO0FBQ0gsTUFBTSxVQUFVLHlCQUF5QixDQUFDLElBR3pDO0lBQ0MsT0FBTztRQUNMO1lBQ0UsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLElBQUksT0FBTztZQUMzQixTQUFTLEVBQUUsa0JBQWtCO1lBQzdCLElBQUksRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ3BDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZXMgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBBYm91dFZpZXdDb21wb25lbnQgfSBmcm9tICcuL2Fib3V0LXZpZXcuY29tcG9uZW50JztcbmltcG9ydCB7IEFib3V0Vmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIEhlbHBlciBwYXJhIG1vbnRhciBsYSB2aXN0YSBBYm91dCAoYHZhbC1hYm91dC12aWV3YCkgY29tbyBydXRhIGVuIHVuYSBhcHAgZGVsXG4gKiBmYWN0b3J5LiBFbCBgY29uZmlnYCBzZSBwYXNhIHBvciByb3V0ZSBgZGF0YWAgKGBhYm91dENvbmZpZ2ApIHkgZWwgY29tcG9uZW50ZVxuICogbG8gbGVlIGNvbW8gZmFsbGJhY2sgZGUgc3UgYEBJbnB1dCgpIGNvbmZpZ2AgKGVsIGBASW5wdXRgIGdhbmEpLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gc2V0dGluZ3Mucm91dGVzLnRzXG4gKiBpbXBvcnQgeyBBUFBfVkVSU0lPTiB9IGZyb20gJy4uL3ZlcnNpb24nO1xuICpcbiAqIGV4cG9ydCBjb25zdCBzZXR0aW5nc1JvdXRlczogUm91dGVzID0gW1xuICogICAuLi5wcm92aWRlVmFsdGVjaEFib3V0Um91dGVzKHsgY29uZmlnOiB7IHZlcnNpb246IEFQUF9WRVJTSU9OIH0gfSksIC8vIOKGkiAvYXBwL2Fib3V0XG4gKiAgIHsgcGF0aDogJ3ByZWZlcmVuY2VzJywgbG9hZENvbXBvbmVudDogKCkgPT4gLi4uIH0sXG4gKiBdO1xuICpcbiAqIC8vIGNvbiByZWRlcyB5IGFjY2lvbmVzIGV4dHJhOlxuICogLi4ucHJvdmlkZVZhbHRlY2hBYm91dFJvdXRlcyh7XG4gKiAgIGNvbmZpZzoge1xuICogICAgIHZlcnNpb246IEFQUF9WRVJTSU9OLFxuICogICAgIHNvY2lhbExpbmtzOiBWQUxURUNIX1NPQ0lBTF9MSU5LUy5tYXAocyA9PiAoeyBpY29uOiBzLmljb24sIHVybDogcy51cmwsIGxhYmVsOiBzLm5hbWUgfSkpLFxuICogICAgIGFjdGlvbnM6IFt7IGxhYmVsOiAnQ29tcGFydGlyJywgaWNvbjogJ3NoYXJlLXNvY2lhbC1vdXRsaW5lJywgb25DbGljazogKCkgPT4gc2hhcmUoKSB9XSxcbiAqICAgfSxcbiAqIH0pLFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlVmFsdGVjaEFib3V0Um91dGVzKG9wdHM/OiB7XG4gIHBhdGg/OiBzdHJpbmc7XG4gIGNvbmZpZz86IEFib3V0Vmlld0NvbmZpZztcbn0pOiBSb3V0ZXMge1xuICByZXR1cm4gW1xuICAgIHtcbiAgICAgIHBhdGg6IG9wdHM/LnBhdGggPz8gJ2Fib3V0JyxcbiAgICAgIGNvbXBvbmVudDogQWJvdXRWaWV3Q29tcG9uZW50LFxuICAgICAgZGF0YTogeyBhYm91dENvbmZpZzogb3B0cz8uY29uZmlnIH0sXG4gICAgfSxcbiAgXTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuración acotada de `val-about-view` (object-first). La vista About es
|
|
3
|
+
* app-specific por naturaleza (logo, nombre, versión, redes, acciones extra),
|
|
4
|
+
* así que lo propio de cada app se parametriza como **DATA de config** — NO como
|
|
5
|
+
* slots arbitrarios (ADR-021: una vista full-feature no abre slots; si falta
|
|
6
|
+
* algo, se promueve un nuevo punto de extensión).
|
|
7
|
+
*
|
|
8
|
+
* Ejes de variación permitidos:
|
|
9
|
+
* - **branding** — `brand.name` / `brand.logoSrc` (qué muestra el HERO).
|
|
10
|
+
* - **versión** — `version` la pasa el consumer (la lib NO puede importar el
|
|
11
|
+
* `version.ts` de la app). Si no se pasa, se oculta el pill de versión.
|
|
12
|
+
* - **redes** — `socialLinks`; si está vacío se oculta la sección social.
|
|
13
|
+
* - **rating** — `showRating` + `ratingEntityId` + `onRated`.
|
|
14
|
+
* - **acciones extra** — `actions[]` genéricas que el consumer agrega junto a
|
|
15
|
+
* la acción de rating built-in.
|
|
16
|
+
* - **branding i18n** — `i18nNamespace` (default `'Settings.About'`).
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2Fib3V0LXZpZXcvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQkciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbmZpZ3VyYWNpw7NuIGFjb3RhZGEgZGUgYHZhbC1hYm91dC12aWV3YCAob2JqZWN0LWZpcnN0KS4gTGEgdmlzdGEgQWJvdXQgZXNcbiAqIGFwcC1zcGVjaWZpYyBwb3IgbmF0dXJhbGV6YSAobG9nbywgbm9tYnJlLCB2ZXJzacOzbiwgcmVkZXMsIGFjY2lvbmVzIGV4dHJhKSxcbiAqIGFzw60gcXVlIGxvIHByb3BpbyBkZSBjYWRhIGFwcCBzZSBwYXJhbWV0cml6YSBjb21vICoqREFUQSBkZSBjb25maWcqKiDigJQgTk8gY29tb1xuICogc2xvdHMgYXJiaXRyYXJpb3MgKEFEUi0wMjE6IHVuYSB2aXN0YSBmdWxsLWZlYXR1cmUgbm8gYWJyZSBzbG90czsgc2kgZmFsdGFcbiAqIGFsZ28sIHNlIHByb211ZXZlIHVuIG51ZXZvIHB1bnRvIGRlIGV4dGVuc2nDs24pLlxuICpcbiAqIEVqZXMgZGUgdmFyaWFjacOzbiBwZXJtaXRpZG9zOlxuICogIC0gKipicmFuZGluZyoqIOKAlCBgYnJhbmQubmFtZWAgLyBgYnJhbmQubG9nb1NyY2AgKHF1w6kgbXVlc3RyYSBlbCBIRVJPKS5cbiAqICAtICoqdmVyc2nDs24qKiDigJQgYHZlcnNpb25gIGxhIHBhc2EgZWwgY29uc3VtZXIgKGxhIGxpYiBOTyBwdWVkZSBpbXBvcnRhciBlbFxuICogICAgYHZlcnNpb24udHNgIGRlIGxhIGFwcCkuIFNpIG5vIHNlIHBhc2EsIHNlIG9jdWx0YSBlbCBwaWxsIGRlIHZlcnNpw7NuLlxuICogIC0gKipyZWRlcyoqIOKAlCBgc29jaWFsTGlua3NgOyBzaSBlc3TDoSB2YWPDrW8gc2Ugb2N1bHRhIGxhIHNlY2Npw7NuIHNvY2lhbC5cbiAqICAtICoqcmF0aW5nKiog4oCUIGBzaG93UmF0aW5nYCArIGByYXRpbmdFbnRpdHlJZGAgKyBgb25SYXRlZGAuXG4gKiAgLSAqKmFjY2lvbmVzIGV4dHJhKiog4oCUIGBhY3Rpb25zW11gIGdlbsOpcmljYXMgcXVlIGVsIGNvbnN1bWVyIGFncmVnYSBqdW50byBhXG4gKiAgICBsYSBhY2Npw7NuIGRlIHJhdGluZyBidWlsdC1pbi5cbiAqICAtICoqYnJhbmRpbmcgaTE4bioqIOKAlCBgaTE4bk5hbWVzcGFjZWAgKGRlZmF1bHQgYCdTZXR0aW5ncy5BYm91dCdgKS5cbiAqL1xuXG4vKiogTWFyY2EgYSBtb3N0cmFyIGVuIGVsIEhFUk8gKGxvZ28gKyBub21icmUpLiAqL1xuZXhwb3J0IGludGVyZmFjZSBBYm91dEJyYW5kIHtcbiAgLyoqIE5vbWJyZSBkZSBsYSBtYXJjYS4gRGVmYXVsdCBgJ1ZhbHRlY2gnYC4gKi9cbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIFJ1dGEgZGVsIGxvZ28uIERlZmF1bHQgYCdhc3NldHMvaW1hZ2VzL21haW4taWNvbi5wbmcnYC4gKi9cbiAgbG9nb1NyYz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBY2Npw7NuIGdlbsOpcmljYSBleHRyYSBkZSBsYSBzZWNjacOzbiBcIkFjY2lvbmVzXCIgKGFkZW3DoXMgZGVsIHJhdGluZyBidWlsdC1pbikuXG4gKiBFbCBjb25zdW1lciBsYSBtb2RlbGEgY29tcGxldGEgKGxhYmVsL2Rlc2NyaXBjacOzbi/DrWNvbm8gKyBoYW5kbGVyKS4gTGFzXG4gKiBhY2Npb25lcyBzaGFyZS9mYXEgZGUgc2hvd2Nhc2UgTk8gc29uIGdlbsOpcmljYXMgKFdlYiBTaGFyZSBBUEkgeSBydXRhIGludGVybmFcbiAqIGRlIGxhIGFwcCksIHBvciBlc28gc2UgZXhwb25lbiBjb21vIGBhY3Rpb25zYCBwYXJhIHF1ZSBjYWRhIGFwcCBhcG9ydGUgbGFzXG4gKiBzdXlhcyBlbiB2ZXogZGUgaGFyZGNvZGVhcmxhcyBlbiBsYSBsaWIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWJvdXRBY3Rpb24ge1xuICAvKiogVGV4dG8gcHJpbmNpcGFsIGRlIGxhIGFjdGlvbi1jYXJkLiAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogVGV4dG8gc2VjdW5kYXJpbyAob3BjaW9uYWwpLiAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIElvbmljb24gbmFtZSAoZWouIGAnc2hhcmUtc29jaWFsLW91dGxpbmUnYCkuICovXG4gIGljb24/OiBzdHJpbmc7XG4gIC8qKiBIYW5kbGVyIGRlbCBjbGljay4gKi9cbiAgb25DbGljazogKCkgPT4gdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBYm91dFZpZXdDb25maWcge1xuICAvKiogTWFyY2EgZGVsIEhFUk8gKGxvZ28gKyBub21icmUpLiBEZWZhdWx0IFZhbHRlY2guICovXG4gIGJyYW5kPzogQWJvdXRCcmFuZDtcblxuICAvKipcbiAgICogVmVyc2nDs24gYSBtb3N0cmFyIGVuIGVsIHBpbGwgKGVsIGNvbnN1bWVyIHBhc2Egc3UgYEFQUF9WRVJTSU9OYCkuIExhIGxpYiBOT1xuICAgKiBpbXBvcnRhIGVsIGB2ZXJzaW9uLnRzYCBkZSBsYSBhcHAuIFNpIG5vIHNlIHBhc2EsIGVsIHBpbGwgZGUgdmVyc2nDs24gc2VcbiAgICogb2N1bHRhLlxuICAgKi9cbiAgdmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogUmVkZXMgc29jaWFsZXMuIFNpIGVzdMOhIHZhY8OtbyAobyBubyBzZSBwYXNhKSwgbGEgc2VjY2nDs24gc29jaWFsIHNlIG9jdWx0YS5cbiAgICogYGljb25gID0gaW9uaWNvbiBuYW1lOyBgdXJsYCA9IGRlc3Rpbm87IGBsYWJlbGAgPSBhcmlhLWxhYmVsLlxuICAgKi9cbiAgc29jaWFsTGlua3M/OiB7IGljb246IHN0cmluZzsgdXJsOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfVtdO1xuXG4gIC8qKiBNdWVzdHJhIGxhIGFjdGlvbi1jYXJkIGRlIHJhdGluZyBidWlsdC1pbi4gRGVmYXVsdCBgdHJ1ZWAuICovXG4gIHNob3dSYXRpbmc/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBgZW50aXR5SWRgIGRlbCBgZW50aXR5UmVmYCBxdWUgcmVjaWJlIGB2YWwtY29udGVudC1yZWFjdGlvbmAgYWwgY2FsaWZpY2FyXG4gICAqIChlbCBgZW50aXR5VHlwZWAgZXMgc2llbXByZSBgJ2FwcCdgKS4gRGVmYXVsdCBgJ2V4cGVyaWVuY2UnYC5cbiAgICovXG4gIHJhdGluZ0VudGl0eUlkPzogc3RyaW5nO1xuXG4gIC8qKiBBY2Npb25lcyBnZW7DqXJpY2FzIGV4dHJhIGRlIGxhIHNlY2Npw7NuIFwiQWNjaW9uZXNcIi4gRGVmYXVsdCBgW11gLiAqL1xuICBhY3Rpb25zPzogQWJvdXRBY3Rpb25bXTtcblxuICAvKipcbiAgICogTmFtZXNwYWNlIGkxOG4gY29uIGVsIHF1ZSBsYSB2aXN0YSByZXN1ZWx2ZSBzdXMgdGV4dG9zLlxuICAgKiBEZWZhdWx0IGAnU2V0dGluZ3MuQWJvdXQnYC5cbiAgICovXG4gIGkxOG5OYW1lc3BhY2U/OiBzdHJpbmc7XG5cbiAgLyoqIEhvb2sgdHJhcyBlbnZpYXIgbGEgY2FsaWZpY2FjacOzbiAocmF0aW5nKSBkZXNkZSBgdmFsLWNvbnRlbnQtcmVhY3Rpb25gLiAqL1xuICBvblJhdGVkPzogKCkgPT4gdm9pZDtcbn1cbiJdfQ==
|