ng-easycommerce 0.0.655-beta.1 → 0.0.655
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/README.md +1 -1
- package/bundles/ng-easycommerce.umd.js +741 -376
- package/bundles/ng-easycommerce.umd.js.map +1 -1
- package/bundles/ng-easycommerce.umd.min.js +1 -1
- package/bundles/ng-easycommerce.umd.min.js.map +1 -1
- package/esm2015/lib/ec-component/footer-ec/footer-ec.component.js +174 -5
- package/esm2015/lib/ec-component/widgets-ec/price-ec/price-ec.component.js +3 -3
- package/esm2015/lib/interfaces/footer.types.js +1 -0
- package/esm2015/lib/services/footer/footer.adapters.js +72 -0
- package/esm2015/lib/services/footer/footer.pick.js +8 -0
- package/esm2015/lib/services/footer/footer.service.js +115 -0
- package/esm2015/public-api.js +4 -1
- package/esm5/lib/ec-component/footer-ec/footer-ec.component.js +174 -5
- package/esm5/lib/ec-component/widgets-ec/price-ec/price-ec.component.js +3 -3
- package/esm5/lib/interfaces/footer.types.js +1 -0
- package/esm5/lib/services/footer/footer.adapters.js +73 -0
- package/esm5/lib/services/footer/footer.pick.js +8 -0
- package/esm5/lib/services/footer/footer.service.js +123 -0
- package/esm5/public-api.js +4 -1
- package/fesm2015/ng-easycommerce.js +726 -378
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +736 -379
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/footer-ec/footer-ec.component.d.ts +58 -1
- package/lib/interfaces/footer.types.d.ts +96 -0
- package/lib/services/footer/footer.adapters.d.ts +24 -0
- package/lib/services/footer/footer.pick.d.ts +3 -0
- package/lib/services/footer/footer.service.d.ts +28 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +4 -0
|
@@ -4,17 +4,29 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
4
4
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
|
-
|
|
7
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
8
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
9
|
+
};
|
|
10
|
+
import { Component, Inject, PLATFORM_ID } from '@angular/core';
|
|
11
|
+
import { debounceTime, distinctUntilChanged, map } from 'rxjs/operators';
|
|
8
12
|
import { ComponentHelper } from '../../classes/component-helper';
|
|
9
13
|
import { Constants } from '../../core.consts';
|
|
10
14
|
import { OptionsService } from '../../services/options.service';
|
|
11
15
|
import { ParametersService } from '../../services/parameters.service';
|
|
16
|
+
import { fromEvent, merge, of } from 'rxjs';
|
|
17
|
+
import { toHref, toText, getSectionPages } from '../../services/footer/footer.adapters';
|
|
18
|
+
import { FooterService } from '../../services/footer/footer.service';
|
|
19
|
+
import { Router } from '@angular/router';
|
|
20
|
+
import { isPlatformBrowser } from '@angular/common';
|
|
12
21
|
let FooterEcComponent = class FooterEcComponent extends ComponentHelper {
|
|
13
|
-
constructor(optionsService, paramsService, consts) {
|
|
22
|
+
constructor(optionsService, paramsService, consts, footerService, router, platformId) {
|
|
14
23
|
super();
|
|
15
24
|
this.optionsService = optionsService;
|
|
16
25
|
this.paramsService = paramsService;
|
|
17
26
|
this.consts = consts;
|
|
27
|
+
this.footerService = footerService;
|
|
28
|
+
this.router = router;
|
|
29
|
+
this.platformId = platformId;
|
|
18
30
|
this.menuItemsCategories = [];
|
|
19
31
|
this.menuItemsSections = [];
|
|
20
32
|
this.menuItemsAttributes = [];
|
|
@@ -22,6 +34,9 @@ let FooterEcComponent = class FooterEcComponent extends ComponentHelper {
|
|
|
22
34
|
this.categories = [];
|
|
23
35
|
this.attributes = [];
|
|
24
36
|
this.params = {};
|
|
37
|
+
// helpers a mano para el template
|
|
38
|
+
this.toHref = toHref;
|
|
39
|
+
this.toText = toText;
|
|
25
40
|
this.updateCategories = (categories) => {
|
|
26
41
|
this.menuItemsCategories = this.optionsService.generateMenu(categories);
|
|
27
42
|
this.menuItemsCategories = this.ecUpdateMenuItemCategories(this.menuItemsCategories);
|
|
@@ -55,6 +70,9 @@ let FooterEcComponent = class FooterEcComponent extends ComponentHelper {
|
|
|
55
70
|
this.ecUpdateMenuItemAttributes = (menuItems) => {
|
|
56
71
|
return menuItems;
|
|
57
72
|
};
|
|
73
|
+
/* ----------------- Trackers para *ngFor ----------------- */
|
|
74
|
+
this.trackById = (_, it) => { var _a, _b; return _b = (_a = it) === null || _a === void 0 ? void 0 : _a.id, (_b !== null && _b !== void 0 ? _b : _); };
|
|
75
|
+
this.trackByPos = (_, it) => { var _a, _b; return _b = (_a = it) === null || _a === void 0 ? void 0 : _a.position, (_b !== null && _b !== void 0 ? _b : _); };
|
|
58
76
|
this.optionsService.sections.subscribe(res => (res.length > 0) && this.updateMenuItem(res));
|
|
59
77
|
this.optionsService.categories.subscribe(res => (res.length > 0) && this.updateCategories(res));
|
|
60
78
|
this.optionsService.attributes.subscribe(res => (res.length > 0) && this.updateAttributes(res));
|
|
@@ -63,20 +81,171 @@ let FooterEcComponent = class FooterEcComponent extends ComponentHelper {
|
|
|
63
81
|
}
|
|
64
82
|
ngOnInit() {
|
|
65
83
|
this.paramsService.parameters.subscribe(res => this.params = res);
|
|
84
|
+
// API: nos suscribimos a las columnas
|
|
85
|
+
this.columns$ = this.footerService.columns$;
|
|
86
|
+
this.extras$ = this.footerService.extras$;
|
|
87
|
+
// Carga inicial UNA sola vez con el device actual
|
|
88
|
+
const initialDevice = this.getDevice();
|
|
89
|
+
this.footerService.loadOnce(initialDevice);
|
|
90
|
+
// Conmutación por resize SIN llamar a la API
|
|
91
|
+
if (isPlatformBrowser(this.platformId)) {
|
|
92
|
+
this.deviceSub = merge(of(initialDevice), fromEvent(window, 'resize').pipe(debounceTime(150), map(() => this.getDevice()), distinctUntilChanged())).subscribe(d => this.footerService.setDevice(d));
|
|
93
|
+
}
|
|
66
94
|
this.ecOnInit();
|
|
67
95
|
}
|
|
96
|
+
getDevice() {
|
|
97
|
+
if (!isPlatformBrowser(this.platformId))
|
|
98
|
+
return 'desktop';
|
|
99
|
+
return window.innerWidth < 750 ? 'mobile' : 'desktop';
|
|
100
|
+
}
|
|
101
|
+
// ¿El string "parece" una URL de imagen (por extensión)?
|
|
102
|
+
isImageUrl(v) {
|
|
103
|
+
return !!v && /\.(png|jpe?g|svg|webp)$/i.test(v);
|
|
104
|
+
}
|
|
105
|
+
// Convierte un path relativo del media server en URL absoluta, o deja pasar si ya es http(s)
|
|
106
|
+
absOrMedia(v) {
|
|
107
|
+
// Si "v" viene con "/media/image/", sacar esa parte
|
|
108
|
+
let path = v.startsWith('/media/image/') ? v.replace('/media/image/', '') : v;
|
|
109
|
+
return /^https?:\/\//i.test(path) ? path : (this.mediaUrl + path);
|
|
110
|
+
}
|
|
111
|
+
/* ----------------- Helpers para items tipo parameter ----------------- */
|
|
112
|
+
// Devuelve el string del value del parámetro
|
|
113
|
+
paramValue(it) {
|
|
114
|
+
return (it && it.link && it.link.parameter && typeof it.link.parameter.value === 'string')
|
|
115
|
+
? it.link.parameter.value
|
|
116
|
+
: '';
|
|
117
|
+
}
|
|
118
|
+
// Devuelve SOLO el path de imagen del parámetro (si existe en images[0].path,
|
|
119
|
+
// si no, usa value si luce como imagen). No agrega mediaUrl todavía.
|
|
120
|
+
paramImagePath(it) {
|
|
121
|
+
var _a, _b;
|
|
122
|
+
const p = (_b = (_a = it) === null || _a === void 0 ? void 0 : _a.link) === null || _b === void 0 ? void 0 : _b.parameter;
|
|
123
|
+
if (!p)
|
|
124
|
+
return '';
|
|
125
|
+
const imgPath = p.images && p.images[0] && p.images[0].path ? p.images[0].path : '';
|
|
126
|
+
if (imgPath)
|
|
127
|
+
return imgPath;
|
|
128
|
+
return this.isImageUrl(p.value) ? p.value : '';
|
|
129
|
+
}
|
|
130
|
+
// ¿El parámetro representa una imagen?
|
|
131
|
+
isImageParam(it) {
|
|
132
|
+
const path = this.paramImagePath(it);
|
|
133
|
+
return !!path;
|
|
134
|
+
}
|
|
135
|
+
/* ----------------- Secciones → páginas (helpers neutrales) ----------------- */
|
|
136
|
+
sectionPages(item) {
|
|
137
|
+
return getSectionPages(item).filter(p => { var _a, _b, _c; return (_b = (_a = p) === null || _a === void 0 ? void 0 : _a.enabled, (_b !== null && _b !== void 0 ? _b : true)) && !!((_c = p) === null || _c === void 0 ? void 0 : _c.code); });
|
|
138
|
+
}
|
|
139
|
+
sectionHasPages(item) {
|
|
140
|
+
return this.sectionPages(item).length > 0;
|
|
141
|
+
}
|
|
142
|
+
sectionPageText(page) {
|
|
143
|
+
var _a, _b;
|
|
144
|
+
return (((_a = page) === null || _a === void 0 ? void 0 : _a.name) || ((_b = page) === null || _b === void 0 ? void 0 : _b.code) || '').toString();
|
|
145
|
+
}
|
|
146
|
+
sectionPageHref(page) {
|
|
147
|
+
var _a, _b, _c;
|
|
148
|
+
const base = (((_b = (_a = this.consts).getSectionsRoute) === null || _b === void 0 ? void 0 : _b.call(_a)) || 'section/');
|
|
149
|
+
const seg = (((_c = page) === null || _c === void 0 ? void 0 : _c.code) || '').toString();
|
|
150
|
+
if (!seg)
|
|
151
|
+
return '#';
|
|
152
|
+
const pref = base.startsWith('/') ? base : `/${base}`;
|
|
153
|
+
return `${pref}${encodeURIComponent(seg)}`;
|
|
154
|
+
}
|
|
155
|
+
/* ----------------- Helpers para EXTRAS ----------------- */
|
|
156
|
+
logoUrl(extras) {
|
|
157
|
+
var _a, _b, _c;
|
|
158
|
+
const p = (_c = (_b = (_a = extras) === null || _a === void 0 ? void 0 : _a.logo) === null || _b === void 0 ? void 0 : _b.image) === null || _c === void 0 ? void 0 : _c.path;
|
|
159
|
+
return p ? this.absOrMedia(p) : '';
|
|
160
|
+
}
|
|
161
|
+
legalHtml(extras) {
|
|
162
|
+
var _a, _b;
|
|
163
|
+
return ((_b = (_a = extras) === null || _a === void 0 ? void 0 : _a.legal) === null || _b === void 0 ? void 0 : _b.html) || '';
|
|
164
|
+
}
|
|
165
|
+
fiscalQrUrl(extras) {
|
|
166
|
+
var _a, _b, _c;
|
|
167
|
+
const p = (_c = (_b = (_a = extras) === null || _a === void 0 ? void 0 : _a.fiscalQr) === null || _b === void 0 ? void 0 : _b.image) === null || _c === void 0 ? void 0 : _c.path;
|
|
168
|
+
return p ? this.absOrMedia(p) : '';
|
|
169
|
+
}
|
|
170
|
+
whatsappFloating(extras) {
|
|
171
|
+
var _a, _b, _c, _d, _e;
|
|
172
|
+
const e = (_a = extras) === null || _a === void 0 ? void 0 : _a.whatsappFloating;
|
|
173
|
+
const url = ((_b = e) === null || _b === void 0 ? void 0 : _b.url) || '';
|
|
174
|
+
const img = ((_d = (_c = e) === null || _c === void 0 ? void 0 : _c.image) === null || _d === void 0 ? void 0 : _d.path) ? this.absOrMedia(e.image.path) : '';
|
|
175
|
+
return { enabled: !!((_e = e) === null || _e === void 0 ? void 0 : _e.enabled), url, imageUrl: img };
|
|
176
|
+
}
|
|
177
|
+
styleFor(it) {
|
|
178
|
+
var _a, _b;
|
|
179
|
+
const s = ((_a = it) === null || _a === void 0 ? void 0 : _a.style) || {};
|
|
180
|
+
// coerción: si viene string, lo paso a number; si null/0, no seteo
|
|
181
|
+
const fs = (_b = s.fontSize, (_b !== null && _b !== void 0 ? _b : undefined));
|
|
182
|
+
const fsNum = typeof fs === 'string' ? parseInt(fs, 10) : fs;
|
|
183
|
+
return {
|
|
184
|
+
'font-weight': s.bold ? 600 : null,
|
|
185
|
+
'font-style': s.italic ? 'italic' : null,
|
|
186
|
+
'text-decoration': s.underline ? 'underline' : null,
|
|
187
|
+
'font-size.px': Number.isFinite(fsNum) ? fsNum : null,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
// en FooterComponent (hijo)
|
|
191
|
+
isInternalUrl(url) {
|
|
192
|
+
return !!url && url.startsWith('/');
|
|
193
|
+
}
|
|
194
|
+
makeAbsolute(url) {
|
|
195
|
+
// para abrir rutas internas en nueva pestaña/ventana
|
|
196
|
+
try {
|
|
197
|
+
return this.isInternalUrl(url) ? (window.location.origin + url) : url;
|
|
198
|
+
}
|
|
199
|
+
catch ( // SSR/seguridad
|
|
200
|
+
_a) { // SSR/seguridad
|
|
201
|
+
return url;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
openLink(ev, url, target) {
|
|
205
|
+
if (!url) {
|
|
206
|
+
ev.preventDefault();
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const isInternal = this.isInternalUrl(url);
|
|
210
|
+
if (target === 'same_tab') {
|
|
211
|
+
if (isInternal) {
|
|
212
|
+
ev.preventDefault();
|
|
213
|
+
this.router.navigateByUrl(url);
|
|
214
|
+
}
|
|
215
|
+
// si es externo, dejamos que el <a href> lo maneje en la misma pestaña
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
// new_tab | new_window ⇒ window.open
|
|
219
|
+
ev.preventDefault();
|
|
220
|
+
const full = this.makeAbsolute(url);
|
|
221
|
+
// para ambos usamos _blank, la diferencia son los "features"
|
|
222
|
+
const features = (target === 'new_window')
|
|
223
|
+
? 'noopener,noreferrer,width=1024,height=768' // ajustá tamaño/props a gusto
|
|
224
|
+
: 'noopener,noreferrer';
|
|
225
|
+
try {
|
|
226
|
+
window.open(full, '_blank', features);
|
|
227
|
+
}
|
|
228
|
+
catch (_a) {
|
|
229
|
+
// fallback por si un popup blocker interfiere
|
|
230
|
+
window.location.href = full;
|
|
231
|
+
}
|
|
232
|
+
}
|
|
68
233
|
};
|
|
69
234
|
FooterEcComponent.ctorParameters = () => [
|
|
70
235
|
{ type: OptionsService },
|
|
71
236
|
{ type: ParametersService },
|
|
72
|
-
{ type: Constants }
|
|
237
|
+
{ type: Constants },
|
|
238
|
+
{ type: FooterService },
|
|
239
|
+
{ type: Router },
|
|
240
|
+
{ type: Object, decorators: [{ type: Inject, args: [PLATFORM_ID,] }] }
|
|
73
241
|
];
|
|
74
242
|
FooterEcComponent = __decorate([
|
|
75
243
|
Component({
|
|
76
244
|
selector: 'app-footer-ec',
|
|
77
245
|
template: "",
|
|
78
246
|
styles: [""]
|
|
79
|
-
})
|
|
247
|
+
}),
|
|
248
|
+
__param(5, Inject(PLATFORM_ID))
|
|
80
249
|
], FooterEcComponent);
|
|
81
250
|
export { FooterEcComponent };
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9lYy1jb21wb25lbnQvZm9vdGVyLWVjL2Zvb3Rlci1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFHMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUU5QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFRdEUsSUFBYSxpQkFBaUIsR0FBOUIsTUFBYSxpQkFBa0IsU0FBUSxlQUFlO0lBWWxELFlBQXNCLGNBQThCLEVBQVMsYUFBZ0MsRUFBWSxNQUFpQjtRQUN0SCxLQUFLLEVBQUUsQ0FBQztRQURVLG1CQUFjLEdBQWQsY0FBYyxDQUFnQjtRQUFTLGtCQUFhLEdBQWIsYUFBYSxDQUFtQjtRQUFZLFdBQU0sR0FBTixNQUFNLENBQVc7UUFYbkgsd0JBQW1CLEdBQVcsRUFBRSxDQUFDO1FBQ2pDLHNCQUFpQixHQUFXLEVBQUUsQ0FBQztRQUMvQix3QkFBbUIsR0FBVyxFQUFFLENBQUM7UUFFakMsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNkLGVBQVUsR0FBRyxFQUFFLENBQUM7UUFDaEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUVoQixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBbUJkLHFCQUFnQixHQUFHLENBQUMsVUFBVSxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxtQkFBbUIsR0FB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SUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQzVGLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsY0FBYyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQTtJQUV4QixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBRW5CLENBQUM7Q0FnREosQ0FBQTs7WUE5RHlDLGNBQWM7WUFBd0IsaUJBQWlCO1lBQW9CLFNBQVM7O0FBWmpILGlCQUFpQjtJQU43QixTQUFTLENBQUM7UUFDUCxRQUFRLEVBQUUsZUFBZTtRQUN6QixZQUF1Qzs7S0FFMUMsQ0FBQztHQUVXLGlCQUFpQixDQTBFN0I7U0ExRVksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbmF2YmFyLWl0ZW1zJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGFyYW1ldGVycy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtZm9vdGVyLWVjJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2Zvb3Rlci1lYy5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJ2Zvb3Rlci1lYy5jb21wb25lbnQuc2NzcyddXG59KVxuXG5leHBvcnQgY2xhc3MgRm9vdGVyRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIHB1YmxpYyBtZW51SXRlbXNDYXRlZ29yaWVzOiBNZW51W10gPSBbXTtcbiAgICBwdWJsaWMgbWVudUl0ZW1zU2VjdGlvbnM6IE1lbnVbXSA9IFtdO1xuICAgIHB1YmxpYyBtZW51SXRlbXNBdHRyaWJ1dGVzOiBNZW51W10gPSBbXTtcblxuICAgIHB1YmxpYyBzZWN0aW9ucyA9IFtdO1xuICAgIHB1YmxpYyBjYXRlZ29yaWVzID0gW107XG4gICAgcHVibGljIGF0dHJpYnV0ZXMgPSBbXTtcbiAgICBwdWJsaWMgbWVkaWFVcmw6IHN0cmluZztcbiAgICBwdWJsaWMgcGFyYW1zOiBhbnkgPSB7fTtcblxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSwgcHVibGljIHBhcmFtc1NlcnZpY2U6IFBhcmFtZXRlcnNTZXJ2aWNlLCBwcm90ZWN0ZWQgY29uc3RzOiBDb25zdGFudHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5vcHRpb25zU2VydmljZS5zZWN0aW9ucy5zdWJzY3JpYmUocmVzID0+IChyZXMubGVuZ3RoID4gMCkgJiYgdGhpcy51cGRhdGVNZW51SXRlbShyZXMpKTtcbiAgICAgICAgdGhpcy5vcHRpb25zU2VydmljZS5jYXRlZ29yaWVzLnN1YnNjcmliZShyZXMgPT4gKHJlcy5sZW5ndGggPiAwKSAmJiB0aGlzLnVwZGF0ZUNhdGVnb3JpZXMocmVzKSk7XG4gICAgICAgIHRoaXMub3B0aW9uc1NlcnZpY2UuYXR0cmlidXRlcy5zdWJzY3JpYmUocmVzID0+IChyZXMubGVuZ3RoID4gMCkgJiYgdGhpcy51cGRhdGVBdHRyaWJ1dGVzKHJlcykpO1xuICAgICAgICB0aGlzLm1lZGlhVXJsID0gdGhpcy5jb25zdHMubWVkaWFVcmwoKTtcbiAgICAgICAgdGhpcy5lY09uQ29uc3RydWN0KClcblxuICAgIH1cblxuICAgIG5nT25Jbml0KCkge1xuICAgICAgICB0aGlzLnBhcmFtc1NlcnZpY2UucGFyYW1ldGVycy5zdWJzY3JpYmUocmVzID0+IHRoaXMucGFyYW1zID0gcmVzKTtcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpXG5cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlQ2F0ZWdvcmllcyA9IChjYXRlZ29yaWVzKSA9PiB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zQ2F0ZWdvcmllcyA9IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2VuZXJhdGVNZW51KGNhdGVnb3JpZXMpO1xuICAgICAgICB0aGlzLm1lbnVJdGVtc0NhdGVnb3JpZXMgPSB0aGlzLmVjVXBkYXRlTWVudUl0ZW1DYXRlZ29yaWVzKHRoaXMubWVudUl0ZW1zQ2F0ZWdvcmllcylcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzID0gdGhpcy5tZW51SXRlbXNDYXRlZ29yaWVzXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUF0dHJpYnV0ZXMgPSAoYXR0cmlidXRlcykgPT4ge1xuICAgICAgICB0aGlzLm1lbnVJdGVtc0F0dHJpYnV0ZXMgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdlbmVyYXRlTWVudShhdHRyaWJ1dGVzKTtcbiAgICAgICAgdGhpcy5tZW51SXRlbXNBdHRyaWJ1dGVzID0gdGhpcy5lY1VwZGF0ZU1lbnVJdGVtQXR0cmlidXRlcyh0aGlzLm1lbnVJdGVtc0F0dHJpYnV0ZXMpXG4gICAgICAgIHRoaXMuYXR0cmlidXRlcyA9IHRoaXMubWVudUl0ZW1zQXR0cmlidXRlc1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVNZW51SXRlbSA9IChlbGVtZW50cykgPT4ge1xuICAgICAgICB0aGlzLm1lbnVJdGVtc1NlY3Rpb25zID0gdGhpcy5vcHRpb25zU2VydmljZS5nZW5lcmF0ZU1lbnUoZWxlbWVudHMpO1xuICAgICAgICB0aGlzLm1lbnVJdGVtc1NlY3Rpb25zID0gdGhpcy5lY1VwZGF0ZU1lbnVJdGVtU2VjdGlvbih0aGlzLm1lbnVJdGVtc1NlY3Rpb25zKVxuICAgICAgICB0aGlzLnNlY3Rpb25zID0gdGhpcy5tZW51SXRlbXNTZWN0aW9ucztcbiAgICB9XG5cbiAgICBoYXNQYXJhbXMgPSAocGFyYW1zLCBzZWFyY2hlZCkgPT4gXG4gICAgICAgIHBhcmFtcyAmJiBcbiAgICAgICAgcGFyYW1zICE9IG51bGwgJiYgXG4gICAgICAgIHBhcmFtcy5maW5kKHBhcmFtID0+IHBhcmFtLmNvZGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlYXJjaGVkLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgbW9iaWxlID0gKCkgPT4gdGhpcy5jb25zdHMubW9iaWxlKCk7XG5cbiAgICBwdWJsaWMgYWRkQ2hpbGRyZW4gPSAobWVudUl0ZW1zLCBjb2RlLCBpdGVtLCBzdGFja1BsYWNlID0gJ2VuZCcpID0+IHtcbiAgICAgICAgKHN0YWNrUGxhY2UgPT0gJ3N0YXJ0JylcbiAgICAgICAgICAgID8gbWVudUl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY29kZSkpPy5jaGlsZHJlbi51bnNoaWZ0KFxuICAgICAgICAgICAgICAgIHsgY29kZTogJ3NkJywgbmFtZTogJ3NkJywgcGF0aDogJy9ob21lJywgdGl0bGU6ICdzZCcsIC4uLml0ZW0gfVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBtZW51SXRlbXMuZmluZChpdGVtID0+IGl0ZW0uY29kZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjb2RlKSk/LmNoaWxkcmVuLnB1c2goXG4gICAgICAgICAgICAgICAgeyBjb2RlOiAnc2QnLCBuYW1lOiAnc2QnLCBwYXRoOiAnL2hvbWUnLCB0aXRsZTogJ3NkJywgLi4uaXRlbSB9XG4gICAgICAgICAgICApXG4gICAgfVxuXG4gICAgcHVibGljIGVjVXBkYXRlTWVudUl0ZW1TZWN0aW9uID0gKG1lbnVJdGVtcykgPT4ge1xuICAgICAgICByZXR1cm4gbWVudUl0ZW1zXG4gICAgfVxuXG4gICAgcHVibGljIGVjVXBkYXRlTWVudUl0ZW1DYXRlZ29yaWVzID0gKG1lbnVJdGVtcykgPT4ge1xuICAgICAgICByZXR1cm4gbWVudUl0ZW1zXG4gICAgfVxuXG4gICAgcHVibGljIGVjVXBkYXRlTWVudUl0ZW1BdHRyaWJ1dGVzID0gKG1lbnVJdGVtcykgPT4ge1xuICAgICAgICByZXR1cm4gbWVudUl0ZW1zXG4gICAgfVxufSJdfQ==
|
|
251
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWVhc3ljb21tZXJjZS8iLCJzb3VyY2VzIjpbImxpYi9lYy1jb21wb25lbnQvZm9vdGVyLWVjL2Zvb3Rlci1lYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBZ0IsTUFBTSxFQUF5QixXQUFXLEVBQWUsTUFBTSxlQUFlLENBQUM7QUFFakgsT0FBTyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQVEsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRTlDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUN0RSxPQUFPLEVBQWMsU0FBUyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBRXRFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRcEQsSUFBYSxpQkFBaUIsR0FBOUIsTUFBYSxpQkFBa0IsU0FBUSxlQUFlO0lBc0JsRCxZQUFzQixjQUE4QixFQUN6QyxhQUFnQyxFQUM3QixNQUFpQixFQUNuQixhQUE0QixFQUM3QixNQUFjLEVBQ1EsVUFBa0I7UUFDL0MsS0FBSyxFQUFFLENBQUM7UUFOVSxtQkFBYyxHQUFkLGNBQWMs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YSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQ2xDO1lBQ0QsdUVBQXVFO1lBQ3ZFLE9BQU87U0FDVjtRQUVELHFDQUFxQztRQUNyQyxFQUFFLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDcEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVwQyw2REFBNkQ7UUFDN0QsTUFBTSxRQUFRLEdBQUcsQ0FBQyxNQUFNLEtBQUssWUFBWSxDQUFDO1lBQ3RDLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyw4QkFBOEI7WUFDNUUsQ0FBQyxDQUFDLHFCQUFxQixDQUFDO1FBRTVCLElBQUk7WUFDQSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDekM7UUFBQyxXQUFNO1lBQ0osOENBQThDO1lBQzlDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUMvQjtJQUNMLENBQUM7Q0FLSixDQUFBOztZQTFPeUMsY0FBYztZQUMxQixpQkFBaUI7WUFDckIsU0FBUztZQUNKLGFBQWE7WUFDckIsTUFBTTtZQUNvQixNQUFNLHVCQUE5QyxNQUFNLFNBQUMsV0FBVzs7QUEzQmQsaUJBQWlCO0lBTjdCLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxlQUFlO1FBQ3pCLFlBQXVDOztLQUUxQyxDQUFDO0lBNkJPLFdBQUEsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFBO0dBM0JmLGlCQUFpQixDQWdRN0I7U0FoUVksaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBQTEFURk9STV9JRCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDb21wb25lbnRIZWxwZXIgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NvbXBvbmVudC1oZWxwZXInO1xuaW1wb3J0IHsgQ29uc3RhbnRzIH0gZnJvbSAnLi4vLi4vY29yZS5jb25zdHMnO1xuaW1wb3J0IHsgTWVudSB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvbmF2YmFyLWl0ZW1zJztcbmltcG9ydCB7IE9wdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvb3B0aW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBhcmFtZXRlcnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcGFyYW1ldGVycy5zZXJ2aWNlJztcbmltcG9ydCB7IE9ic2VydmFibGUsIGZyb21FdmVudCwgbWVyZ2UsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEZvb3RlckNvbHVtblZpZXcsIEZvb3RlckV4dHJhc1ZpZXcsIEZvb3Rlckl0ZW1WaWV3IH0gZnJvbSAnLi4vLi4vaW50ZXJmYWNlcy9mb290ZXIudHlwZXMnO1xuaW1wb3J0IHsgdG9IcmVmLCB0b1RleHQsIGdldFNlY3Rpb25QYWdlcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvb3Rlci9mb290ZXIuYWRhcHRlcnMnO1xuaW1wb3J0IHsgRm9vdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvb3Rlci9mb290ZXIuc2VydmljZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC1mb290ZXItZWMnLFxuICAgIHRlbXBsYXRlVXJsOiAnZm9vdGVyLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnZm9vdGVyLWVjLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5cbmV4cG9ydCBjbGFzcyBGb290ZXJFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gICAgcHVibGljIG1lbnVJdGVtc0NhdGVnb3JpZXM6IE1lbnVbXSA9IFtdO1xuICAgIHB1YmxpYyBtZW51SXRlbXNTZWN0aW9uczogTWVudVtdID0gW107XG4gICAgcHVibGljIG1lbnVJdGVtc0F0dHJpYnV0ZXM6IE1lbnVbXSA9IFtdO1xuXG4gICAgcHVibGljIHNlY3Rpb25zID0gW107XG4gICAgcHVibGljIGNhdGVnb3JpZXMgPSBbXTtcbiAgICBwdWJsaWMgYXR0cmlidXRlcyA9IFtdO1xuICAgIHB1YmxpYyBtZWRpYVVybDogc3RyaW5nO1xuICAgIHB1YmxpYyBwYXJhbXM6IGFueSA9IHt9O1xuXG4gICAgLyoqIENvbHVtbnMgcHJvdmVuaWVudGVzIGRlbCBlbmRwb2ludCAqL1xuICAgIGNvbHVtbnMkOiBPYnNlcnZhYmxlPEZvb3RlckNvbHVtblZpZXdbXT47XG4gICAgZXh0cmFzJDogT2JzZXJ2YWJsZTxGb290ZXJFeHRyYXNWaWV3IHwge30+O1xuXG4gICAgcHJpdmF0ZSBkZXZpY2VTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgICAvLyBoZWxwZXJzIGEgbWFubyBwYXJhIGVsIHRlbXBsYXRlXG4gICAgdG9IcmVmID0gdG9IcmVmO1xuICAgIHRvVGV4dCA9IHRvVGV4dDtcblxuXG4gICAgY29uc3RydWN0b3IocHJvdGVjdGVkIG9wdGlvbnNTZXJ2aWNlOiBPcHRpb25zU2VydmljZSxcbiAgICAgICAgcHVibGljIHBhcmFtc1NlcnZpY2U6IFBhcmFtZXRlcnNTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgY29uc3RzOiBDb25zdGFudHMsXG4gICAgICAgIHByaXZhdGUgZm9vdGVyU2VydmljZTogRm9vdGVyU2VydmljZSxcbiAgICAgICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgICAgICBASW5qZWN0KFBMQVRGT1JNX0lEKSBwcml2YXRlIHBsYXRmb3JtSWQ6IE9iamVjdCkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLnNlY3Rpb25zLnN1YnNjcmliZShyZXMgPT4gKHJlcy5sZW5ndGggPiAwKSAmJiB0aGlzLnVwZGF0ZU1lbnVJdGVtKHJlcykpO1xuICAgICAgICB0aGlzLm9wdGlvbnNTZXJ2aWNlLmNhdGVnb3JpZXMuc3Vic2NyaWJlKHJlcyA9PiAocmVzLmxlbmd0aCA+IDApICYmIHRoaXMudXBkYXRlQ2F0ZWdvcmllcyhyZXMpKTtcbiAgICAgICAgdGhpcy5vcHRpb25zU2VydmljZS5hdHRyaWJ1dGVzLnN1YnNjcmliZShyZXMgPT4gKHJlcy5sZW5ndGggPiAwKSAmJiB0aGlzLnVwZGF0ZUF0dHJpYnV0ZXMocmVzKSk7XG4gICAgICAgIHRoaXMubWVkaWFVcmwgPSB0aGlzLmNvbnN0cy5tZWRpYVVybCgpO1xuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKVxuXG4gICAgfVxuXG4gICAgbmdPbkluaXQoKSB7XG4gICAgICAgIHRoaXMucGFyYW1zU2VydmljZS5wYXJhbWV0ZXJzLnN1YnNjcmliZShyZXMgPT4gdGhpcy5wYXJhbXMgPSByZXMpO1xuXG4gICAgICAgIC8vIEFQSTogbm9zIHN1c2NyaWJpbW9zIGEgbGFzIGNvbHVtbmFzXG4gICAgICAgIHRoaXMuY29sdW1ucyQgPSB0aGlzLmZvb3RlclNlcnZpY2UuY29sdW1ucyQ7XG4gICAgICAgIHRoaXMuZXh0cmFzJCA9IHRoaXMuZm9vdGVyU2VydmljZS5leHRyYXMkO1xuXG4gICAgICAgIC8vIENhcmdhIGluaWNpYWwgVU5BIHNvbGEgdmV6IGNvbiBlbCBkZXZpY2UgYWN0dWFsXG4gICAgICAgIGNvbnN0IGluaXRpYWxEZXZpY2UgPSB0aGlzLmdldERldmljZSgpO1xuICAgICAgICB0aGlzLmZvb3RlclNlcnZpY2UubG9hZE9uY2UoaW5pdGlhbERldmljZSk7XG5cbiAgICAgICAgLy8gQ29ubXV0YWNpw7NuIHBvciByZXNpemUgU0lOIGxsYW1hciBhIGxhIEFQSVxuICAgICAgICBpZiAoaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKSkge1xuICAgICAgICAgICAgdGhpcy5kZXZpY2VTdWIgPSBtZXJnZShcbiAgICAgICAgICAgICAgICBvZihpbml0aWFsRGV2aWNlKSxcbiAgICAgICAgICAgICAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJykucGlwZShcbiAgICAgICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDE1MCksXG4gICAgICAgICAgICAgICAgICAgIG1hcCgoKSA9PiB0aGlzLmdldERldmljZSgpKSxcbiAgICAgICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkuc3Vic2NyaWJlKGQgPT4gdGhpcy5mb290ZXJTZXJ2aWNlLnNldERldmljZShkKSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVjT25Jbml0KClcblxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGV2aWNlKCk6ICdkZXNrdG9wJyB8ICdtb2JpbGUnIHtcbiAgICAgICAgaWYgKCFpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpKSByZXR1cm4gJ2Rlc2t0b3AnO1xuICAgICAgICByZXR1cm4gd2luZG93LmlubmVyV2lkdGggPCA3NTAgPyAnbW9iaWxlJyA6ICdkZXNrdG9wJztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgdXBkYXRlQ2F0ZWdvcmllcyA9IChjYXRlZ29yaWVzKSA9PiB7XG4gICAgICAgIHRoaXMubWVudUl0ZW1zQ2F0ZWdvcmllcyA9IHRoaXMub3B0aW9uc1NlcnZpY2UuZ2VuZXJhdGVNZW51KGNhdGVnb3JpZXMpO1xuICAgICAgICB0aGlzLm1lbnVJdGVtc0NhdGVnb3JpZXMgPSB0aGlzLmVjVXBkYXRlTWVudUl0ZW1DYXRlZ29yaWVzKHRoaXMubWVudUl0ZW1zQ2F0ZWdvcmllcylcbiAgICAgICAgdGhpcy5jYXRlZ29yaWVzID0gdGhpcy5tZW51SXRlbXNDYXRlZ29yaWVzXG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHVwZGF0ZUF0dHJpYnV0ZXMgPSAoYXR0cmlidXRlcykgPT4ge1xuICAgICAgICB0aGlzLm1lbnVJdGVtc0F0dHJpYnV0ZXMgPSB0aGlzLm9wdGlvbnNTZXJ2aWNlLmdlbmVyYXRlTWVudShhdHRyaWJ1dGVzKTtcbiAgICAgICAgdGhpcy5tZW51SXRlbXNBdHRyaWJ1dGVzID0gdGhpcy5lY1VwZGF0ZU1lbnVJdGVtQXR0cmlidXRlcyh0aGlzLm1lbnVJdGVtc0F0dHJpYnV0ZXMpXG4gICAgICAgIHRoaXMuYXR0cmlidXRlcyA9IHRoaXMubWVudUl0ZW1zQXR0cmlidXRlc1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB1cGRhdGVNZW51SXRlbSA9IChlbGVtZW50cykgPT4ge1xuICAgICAgICB0aGlzLm1lbnVJdGVtc1NlY3Rpb25zID0gdGhpcy5vcHRpb25zU2VydmljZS5nZW5lcmF0ZU1lbnUoZWxlbWVudHMpO1xuICAgICAgICB0aGlzLm1lbnVJdGVtc1NlY3Rpb25zID0gdGhpcy5lY1VwZGF0ZU1lbnVJdGVtU2VjdGlvbih0aGlzLm1lbnVJdGVtc1NlY3Rpb25zKVxuICAgICAgICB0aGlzLnNlY3Rpb25zID0gdGhpcy5tZW51SXRlbXNTZWN0aW9ucztcbiAgICB9XG5cbiAgICBoYXNQYXJhbXMgPSAocGFyYW1zLCBzZWFyY2hlZCkgPT5cbiAgICAgICAgcGFyYW1zICYmXG4gICAgICAgIHBhcmFtcyAhPSBudWxsICYmXG4gICAgICAgIHBhcmFtcy5maW5kKHBhcmFtID0+IHBhcmFtLmNvZGU/LnRvTG93ZXJDYXNlKCkgPT09IHNlYXJjaGVkLnRvTG93ZXJDYXNlKCkpO1xuXG4gICAgbW9iaWxlID0gKCkgPT4gdGhpcy5jb25zdHMubW9iaWxlKCk7XG5cbiAgICBwdWJsaWMgYWRkQ2hpbGRyZW4gPSAobWVudUl0ZW1zLCBjb2RlLCBpdGVtLCBzdGFja1BsYWNlID0gJ2VuZCcpID0+IHtcbiAgICAgICAgKHN0YWNrUGxhY2UgPT0gJ3N0YXJ0JylcbiAgICAgICAgICAgID8gbWVudUl0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmNvZGU/LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoY29kZSkpPy5jaGlsZHJlbi51bnNoaWZ0KFxuICAgICAgICAgICAgICAgIHsgY29kZTogJ3NkJywgbmFtZTogJ3NkJywgcGF0aDogJy9ob21lJywgdGl0bGU6ICdzZCcsIC4uLml0ZW0gfVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgOiBtZW51SXRlbXMuZmluZChpdGVtID0+IGl0ZW0uY29kZT8udG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhjb2RlKSk/LmNoaWxkcmVuLnB1c2goXG4gICAgICAgICAgICAgICAgeyBjb2RlOiAnc2QnLCBuYW1lOiAnc2QnLCBwYXRoOiAnL2hvbWUnLCB0aXRsZTogJ3NkJywgLi4uaXRlbSB9XG4gICAgICAgICAgICApXG4gICAgfVxuXG4gICAgcHVibGljIGVjVXBkYXRlTWVudUl0ZW1TZWN0aW9uID0gKG1lbnVJdGVtcykgPT4ge1xuICAgICAgICByZXR1cm4gbWVudUl0ZW1zXG4gICAgfVxuXG4gICAgcHVibGljIGVjVXBkYXRlTWVudUl0ZW1DYXRlZ29yaWVzID0gKG1lbnVJdGVtcykgPT4ge1xuICAgICAgICByZXR1cm4gbWVudUl0ZW1zXG4gICAgfVxuXG4gICAgcHVibGljIGVjVXBkYXRlTWVudUl0ZW1BdHRyaWJ1dGVzID0gKG1lbnVJdGVtcykgPT4ge1xuICAgICAgICByZXR1cm4gbWVudUl0ZW1zXG4gICAgfVxuXG4gICAgLy8gwr9FbCBzdHJpbmcgXCJwYXJlY2VcIiB1bmEgVVJMIGRlIGltYWdlbiAocG9yIGV4dGVuc2nDs24pP1xuICAgIGlzSW1hZ2VVcmwodj86IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF2ICYmIC9cXC4ocG5nfGpwZT9nfHN2Z3x3ZWJwKSQvaS50ZXN0KHYpO1xuICAgIH1cblxuICAgIC8vIENvbnZpZXJ0ZSB1biBwYXRoIHJlbGF0aXZvIGRlbCBtZWRpYSBzZXJ2ZXIgZW4gVVJMIGFic29sdXRhLCBvIGRlamEgcGFzYXIgc2kgeWEgZXMgaHR0cChzKVxuICAgIGFic09yTWVkaWEodjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgLy8gU2kgXCJ2XCIgdmllbmUgY29uIFwiL21lZGlhL2ltYWdlL1wiLCBzYWNhciBlc2EgcGFydGVcbiAgICAgICAgbGV0IHBhdGggPSB2LnN0YXJ0c1dpdGgoJy9tZWRpYS9pbWFnZS8nKSA/IHYucmVwbGFjZSgnL21lZGlhL2ltYWdlLycsICcnKSA6IHY7XG4gICAgICAgIHJldHVybiAvXmh0dHBzPzpcXC9cXC8vaS50ZXN0KHBhdGgpID8gcGF0aCA6ICh0aGlzLm1lZGlhVXJsICsgcGF0aCk7XG4gICAgfVxuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0gSGVscGVycyBwYXJhIGl0ZW1zIHRpcG8gcGFyYW1ldGVyIC0tLS0tLS0tLS0tLS0tLS0tICovXG4gICAgLy8gRGV2dWVsdmUgZWwgc3RyaW5nIGRlbCB2YWx1ZSBkZWwgcGFyw6FtZXRyb1xuICAgIHBhcmFtVmFsdWUoaXQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAoaXQgJiYgaXQubGluayAmJiBpdC5saW5rLnBhcmFtZXRlciAmJiB0eXBlb2YgaXQubGluay5wYXJhbWV0ZXIudmFsdWUgPT09ICdzdHJpbmcnKVxuICAgICAgICAgICAgPyBpdC5saW5rLnBhcmFtZXRlci52YWx1ZVxuICAgICAgICAgICAgOiAnJztcbiAgICB9XG5cbiAgICAvLyBEZXZ1ZWx2ZSBTT0xPIGVsIHBhdGggZGUgaW1hZ2VuIGRlbCBwYXLDoW1ldHJvIChzaSBleGlzdGUgZW4gaW1hZ2VzWzBdLnBhdGgsXG4gICAgLy8gc2kgbm8sIHVzYSB2YWx1ZSBzaSBsdWNlIGNvbW8gaW1hZ2VuKS4gTm8gYWdyZWdhIG1lZGlhVXJsIHRvZGF2w61hLlxuICAgIHBhcmFtSW1hZ2VQYXRoKGl0OiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwID0gaXQ/Lmxpbms/LnBhcmFtZXRlcjtcbiAgICAgICAgaWYgKCFwKSByZXR1cm4gJyc7XG4gICAgICAgIGNvbnN0IGltZ1BhdGggPSBwLmltYWdlcyAmJiBwLmltYWdlc1swXSAmJiBwLmltYWdlc1swXS5wYXRoID8gcC5pbWFnZXNbMF0ucGF0aCA6ICcnO1xuICAgICAgICBpZiAoaW1nUGF0aCkgcmV0dXJuIGltZ1BhdGg7XG4gICAgICAgIHJldHVybiB0aGlzLmlzSW1hZ2VVcmwocC52YWx1ZSkgPyBwLnZhbHVlIDogJyc7XG4gICAgfVxuXG4gICAgLy8gwr9FbCBwYXLDoW1ldHJvIHJlcHJlc2VudGEgdW5hIGltYWdlbj9cbiAgICBpc0ltYWdlUGFyYW0oaXQ6IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBwYXRoID0gdGhpcy5wYXJhbUltYWdlUGF0aChpdCk7XG4gICAgICAgIHJldHVybiAhIXBhdGg7XG4gICAgfVxuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0gU2VjY2lvbmVzIOKGkiBww6FnaW5hcyAoaGVscGVycyBuZXV0cmFsZXMpIC0tLS0tLS0tLS0tLS0tLS0tICovXG4gICAgc2VjdGlvblBhZ2VzKGl0ZW06IGFueSkge1xuICAgICAgICByZXR1cm4gZ2V0U2VjdGlvblBhZ2VzKGl0ZW0pLmZpbHRlcihwID0+IChwPy5lbmFibGVkID8/IHRydWUpICYmICEhcD8uY29kZSk7XG4gICAgfVxuXG4gICAgc2VjdGlvbkhhc1BhZ2VzKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWN0aW9uUGFnZXMoaXRlbSkubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICBzZWN0aW9uUGFnZVRleHQocGFnZTogeyBuYW1lOiBzdHJpbmcgfCBudWxsOyBjb2RlOiBzdHJpbmcgfCBudWxsIH0pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHBhZ2U/Lm5hbWUgfHwgcGFnZT8uY29kZSB8fCAnJykudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBzZWN0aW9uUGFnZUhyZWYocGFnZTogeyBjb2RlOiBzdHJpbmcgfCBudWxsIH0pOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBiYXNlID0gKHRoaXMuY29uc3RzLmdldFNlY3Rpb25zUm91dGU/LigpIHx8ICdzZWN0aW9uLycpO1xuICAgICAgICBjb25zdCBzZWcgPSAocGFnZT8uY29kZSB8fCAnJykudG9TdHJpbmcoKTtcbiAgICAgICAgaWYgKCFzZWcpIHJldHVybiAnIyc7XG4gICAgICAgIGNvbnN0IHByZWYgPSBiYXNlLnN0YXJ0c1dpdGgoJy8nKSA/IGJhc2UgOiBgLyR7YmFzZX1gO1xuICAgICAgICByZXR1cm4gYCR7cHJlZn0ke2VuY29kZVVSSUNvbXBvbmVudChzZWcpfWA7XG4gICAgfVxuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0gSGVscGVycyBwYXJhIEVYVFJBUyAtLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIGxvZ29VcmwoZXh0cmFzOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBwID0gZXh0cmFzPy5sb2dvPy5pbWFnZT8ucGF0aDtcbiAgICAgICAgcmV0dXJuIHAgPyB0aGlzLmFic09yTWVkaWEocCkgOiAnJztcbiAgICB9XG5cbiAgICBsZWdhbEh0bWwoZXh0cmFzOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gZXh0cmFzPy5sZWdhbD8uaHRtbCB8fCAnJztcbiAgICB9XG5cbiAgICBmaXNjYWxRclVybChleHRyYXM6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHAgPSBleHRyYXM/LmZpc2NhbFFyPy5pbWFnZT8ucGF0aDtcbiAgICAgICAgcmV0dXJuIHAgPyB0aGlzLmFic09yTWVkaWEocCkgOiAnJztcbiAgICB9XG5cbiAgICB3aGF0c2FwcEZsb2F0aW5nKGV4dHJhczogYW55KTogeyBlbmFibGVkOiBib29sZWFuOyB1cmw6IHN0cmluZzsgaW1hZ2VVcmw6IHN0cmluZyB9IHtcbiAgICAgICAgY29uc3QgZSA9IGV4dHJhcz8ud2hhdHNhcHBGbG9hdGluZztcbiAgICAgICAgY29uc3QgdXJsID0gZT8udXJsIHx8ICcnO1xuICAgICAgICBjb25zdCBpbWcgPSBlPy5pbWFnZT8ucGF0aCA/IHRoaXMuYWJzT3JNZWRpYShlLmltYWdlLnBhdGgpIDogJyc7XG4gICAgICAgIHJldHVybiB7IGVuYWJsZWQ6ICEhZT8uZW5hYmxlZCwgdXJsLCBpbWFnZVVybDogaW1nIH07XG4gICAgfVxuXG4gICAgc3R5bGVGb3IoaXQ6IGFueSkge1xuICAgICAgICBjb25zdCBzID0gaXQ/LnN0eWxlIHx8IHt9O1xuICAgICAgICAvLyBjb2VyY2nDs246IHNpIHZpZW5lIHN0cmluZywgbG8gcGFzbyBhIG51bWJlcjsgc2kgbnVsbC8wLCBubyBzZXRlb1xuICAgICAgICBjb25zdCBmcyA9IChzLmZvbnRTaXplID8/IHVuZGVmaW5lZCk7XG4gICAgICAgIGNvbnN0IGZzTnVtID0gdHlwZW9mIGZzID09PSAnc3RyaW5nJyA/IHBhcnNlSW50KGZzLCAxMCkgOiBmcztcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdmb250LXdlaWdodCc6IHMuYm9sZCA/IDYwMCA6IG51bGwsXG4gICAgICAgICAgICAnZm9udC1zdHlsZSc6IHMuaXRhbGljID8gJ2l0YWxpYycgOiBudWxsLFxuICAgICAgICAgICAgJ3RleHQtZGVjb3JhdGlvbic6IHMudW5kZXJsaW5lID8gJ3VuZGVybGluZScgOiBudWxsLFxuICAgICAgICAgICAgJ2ZvbnQtc2l6ZS5weCc6IE51bWJlci5pc0Zpbml0ZShmc051bSkgPyBmc051bSA6IG51bGwsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gZW4gRm9vdGVyQ29tcG9uZW50IChoaWpvKVxuICAgIGlzSW50ZXJuYWxVcmwodXJsPzogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXVybCAmJiB1cmwuc3RhcnRzV2l0aCgnLycpO1xuICAgIH1cblxuICAgIG1ha2VBYnNvbHV0ZSh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIC8vIHBhcmEgYWJyaXIgcnV0YXMgaW50ZXJuYXMgZW4gbnVldmEgcGVzdGHDsWEvdmVudGFuYVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXNJbnRlcm5hbFVybCh1cmwpID8gKHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB1cmwpIDogdXJsO1xuICAgICAgICB9IGNhdGNoIHsgLy8gU1NSL3NlZ3VyaWRhZFxuICAgICAgICAgICAgcmV0dXJuIHVybDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9wZW5MaW5rKGV2OiBNb3VzZUV2ZW50LCB1cmw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIHRhcmdldDogJ3NhbWVfdGFiJyB8ICduZXdfdGFiJyB8ICduZXdfd2luZG93Jykge1xuICAgICAgICBpZiAoIXVybCkgeyBldi5wcmV2ZW50RGVmYXVsdCgpOyByZXR1cm47IH1cblxuICAgICAgICBjb25zdCBpc0ludGVybmFsID0gdGhpcy5pc0ludGVybmFsVXJsKHVybCk7XG5cbiAgICAgICAgaWYgKHRhcmdldCA9PT0gJ3NhbWVfdGFiJykge1xuICAgICAgICAgICAgaWYgKGlzSW50ZXJuYWwpIHtcbiAgICAgICAgICAgICAgICBldi5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlQnlVcmwodXJsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIHNpIGVzIGV4dGVybm8sIGRlamFtb3MgcXVlIGVsIDxhIGhyZWY+IGxvIG1hbmVqZSBlbiBsYSBtaXNtYSBwZXN0YcOxYVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbmV3X3RhYiB8IG5ld193aW5kb3cg4oeSIHdpbmRvdy5vcGVuXG4gICAgICAgIGV2LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGZ1bGwgPSB0aGlzLm1ha2VBYnNvbHV0ZSh1cmwpO1xuXG4gICAgICAgIC8vIHBhcmEgYW1ib3MgdXNhbW9zIF9ibGFuaywgbGEgZGlmZXJlbmNpYSBzb24gbG9zIFwiZmVhdHVyZXNcIlxuICAgICAgICBjb25zdCBmZWF0dXJlcyA9ICh0YXJnZXQgPT09ICduZXdfd2luZG93JylcbiAgICAgICAgICAgID8gJ25vb3BlbmVyLG5vcmVmZXJyZXIsd2lkdGg9MTAyNCxoZWlnaHQ9NzY4JyAvLyBhanVzdMOhIHRhbWHDsW8vcHJvcHMgYSBndXN0b1xuICAgICAgICAgICAgOiAnbm9vcGVuZXIsbm9yZWZlcnJlcic7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHdpbmRvdy5vcGVuKGZ1bGwsICdfYmxhbmsnLCBmZWF0dXJlcyk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgICAgLy8gZmFsbGJhY2sgcG9yIHNpIHVuIHBvcHVwIGJsb2NrZXIgaW50ZXJmaWVyZVxuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBmdWxsO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0gVHJhY2tlcnMgcGFyYSAqbmdGb3IgLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICB0cmFja0J5SWQgPSAoXzogbnVtYmVyLCBpdDogeyBpZD86IG51bWJlciB9KSA9PiBpdD8uaWQgPz8gXztcbiAgICB0cmFja0J5UG9zID0gKF86IG51bWJlciwgaXQ6IHsgcG9zaXRpb24/OiBudW1iZXIgfSkgPT4gaXQ/LnBvc2l0aW9uID8/IF87XG59Il19
|
|
@@ -93,9 +93,9 @@ __decorate([
|
|
|
93
93
|
PriceEcComponent = __decorate([
|
|
94
94
|
Component({
|
|
95
95
|
selector: 'app-price-ec',
|
|
96
|
-
template: "<!-- Si hay templates personalizados, se proyectan -->\n<ng-container *ngIf=\"customSalePriceTemplate || customPriceTemplate; else defaultPriceBlock\">\n <ng-container *ngTemplateOutlet=\"customPriceTemplate || defaultPriceBlock\"></ng-container>\n</ng-container>\n\n<ng-template #defaultPriceBlock>\n <div *ngIf=\"saleprice; else onlyprice\" class=\"line-height-custom\">\n <div [class]=\"(priceSize ? 'price-sm' : 'price')\"\n *ngIf=\"price && price.split(' - ').length > 1; else simplePriceDel\">\n <del class=\"tachado\">\n {{ price.split(' - ')[0] | ecCurrencySymbol }}\n {{ price.split(' - ')[1] | ecCurrencySymbol }}\n </del>\n </div>\n <div [class]=\"(priceSize ? 'price-sm' : 'price')\"\n *ngIf=\"saleprice && saleprice.split(' - ').length > 1; else simpleSalePrice\">\n {{ saleprice.split(' - ')[0] | ecCurrencySymbol }}\n {{ saleprice.split(' - ')[1] | ecCurrencySymbol }}\n </div>\n </div>\n\n <ng-template #onlyprice>\n <div [class]=\"(priceSize ? 'price-sm' : 'price')\"\n *ngIf=\"price && price.split(' - ').length > 1; else simplePrice\">\n {{ price.split(' - ')[0] | ecCurrencySymbol }} -\n {{ price.split(' - ')[1] | ecCurrencySymbol }}\n </div>\n </ng-template>\n\n <ng-template #simplePrice>\n <ng-container *ngIf=\"customSimplePriceTemplate; else fallbackSimplePrice\">\n <ng-container *ngTemplateOutlet=\"customSimplePriceTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #fallbackSimplePrice>\n <div [class]=\"'uno line-height-custom ' + (priceSize ? 'price-sm' : 'price')\">\n {{ price | ecCurrencySymbol }}\n </div>\n </ng-template>\n\n <ng-template #simplePriceDel>\n <div [class]=\"'dos line-height-custom ' + (priceSize ? 'price-sm' : 'price')\">\n <span class=\"lnth\">{{ price | ecCurrencySymbol }}</span>\n </div>\n </ng-template>\n\n <ng-template #simpleSalePrice>\n <ng-container *ngIf=\"customSimpleSalePriceTemplate; else fallbackSimpleSalePrice\">\n <ng-container *ngTemplateOutlet=\"customSimpleSalePriceTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #fallbackSimpleSalePrice>\n <div [class]=\"'tres line-height-custom ' + (priceSize ? 'price-sm' : 'price')\">\n {{ saleprice | ecCurrencySymbol }}\n </div>\n </ng-template>\n</ng-template>\n\n<!-- Secci\u00F3n de impuestos -->\n<ng-container *ngIf=\"shouldShowTaxes\">\n <ng-container *ngIf=\"showTaxLegendOnly; else detailedTaxBlock\">\n <ng-container *ngIf=\"customOnlyTaxLabelTemplate; else defaultOnlyTaxLabelBlock\">\n <ng-container *ngTemplateOutlet=\"customOnlyTaxLabelTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultOnlyTaxLabelBlock>\n <p class=\"taxes-title\">{{'price-without-national-taxes' | translate }}: {{ basePrice | ecCurrencySymbol }}
|
|
97
|
-
styles: [".price-sm{font-size:13px}.price{font-size:18px}.lnth{text-decoration:line-through;color:gray}.taxes-section{margin-top:.5rem;border-radius:.5rem;font-size:.95rem;color:#333;line-height:1.4;max-width:400px}.taxes-title{font-weight:500;margin-bottom:.2rem;font-size:.7rem;color:#222}.taxes-list{list-style-type:none;padding-left:0;margin:0}.taxes-list li{margin-bottom:.05rem;font-size:.65rem;display:flex;justify-content:space-between}"]
|
|
96
|
+
template: "<!-- Si hay templates personalizados, se proyectan -->\n<ng-container *ngIf=\"customSalePriceTemplate || customPriceTemplate; else defaultPriceBlock\">\n <ng-container *ngTemplateOutlet=\"customPriceTemplate || defaultPriceBlock\"></ng-container>\n</ng-container>\n\n<ng-template #defaultPriceBlock>\n <div *ngIf=\"saleprice; else onlyprice\" class=\"line-height-custom\">\n <div [class]=\"(priceSize ? 'price-sm' : 'price')\"\n *ngIf=\"price && price.split(' - ').length > 1; else simplePriceDel\">\n <del class=\"tachado\">\n {{ price.split(' - ')[0] | ecCurrencySymbol }}\n {{ price.split(' - ')[1] | ecCurrencySymbol }}\n </del>\n </div>\n <div [class]=\"(priceSize ? 'price-sm' : 'price')\"\n *ngIf=\"saleprice && saleprice.split(' - ').length > 1; else simpleSalePrice\">\n {{ saleprice.split(' - ')[0] | ecCurrencySymbol }}\n {{ saleprice.split(' - ')[1] | ecCurrencySymbol }}\n </div>\n </div>\n\n <ng-template #onlyprice>\n <div [class]=\"(priceSize ? 'price-sm' : 'price')\"\n *ngIf=\"price && price.split(' - ').length > 1; else simplePrice\">\n {{ price.split(' - ')[0] | ecCurrencySymbol }} -\n {{ price.split(' - ')[1] | ecCurrencySymbol }}\n </div>\n </ng-template>\n\n <ng-template #simplePrice>\n <ng-container *ngIf=\"customSimplePriceTemplate; else fallbackSimplePrice\">\n <ng-container *ngTemplateOutlet=\"customSimplePriceTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #fallbackSimplePrice>\n <div [class]=\"'uno line-height-custom ' + (priceSize ? 'price-sm' : 'price')\">\n {{ price | ecCurrencySymbol }}\n </div>\n </ng-template>\n\n <ng-template #simplePriceDel>\n <div [class]=\"'dos line-height-custom ' + (priceSize ? 'price-sm' : 'price')\">\n <span class=\"lnth\">{{ price | ecCurrencySymbol }}</span>\n </div>\n </ng-template>\n\n <ng-template #simpleSalePrice>\n <ng-container *ngIf=\"customSimpleSalePriceTemplate; else fallbackSimpleSalePrice\">\n <ng-container *ngTemplateOutlet=\"customSimpleSalePriceTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #fallbackSimpleSalePrice>\n <div [class]=\"'tres line-height-custom ' + (priceSize ? 'price-sm' : 'price')\">\n {{ saleprice | ecCurrencySymbol }}\n </div>\n </ng-template>\n</ng-template>\n\n<!-- Secci\u00F3n de impuestos -->\n<ng-container *ngIf=\"shouldShowTaxes\">\n <ng-container *ngIf=\"showTaxLegendOnly; else detailedTaxBlock\">\n <ng-container *ngIf=\"customOnlyTaxLabelTemplate; else defaultOnlyTaxLabelBlock\">\n <ng-container *ngTemplateOutlet=\"customOnlyTaxLabelTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultOnlyTaxLabelBlock>\n <p class=\"taxes-title\">{{'price-without-national-taxes' | translate }}: <span class=\"nowrap-price\">{{ basePrice | ecCurrencySymbol }}</span>\n </p>\n </ng-template>\n </ng-container>\n\n <ng-template #detailedTaxBlock>\n <ng-container *ngIf=\"customTaxTemplate; else defaultTaxBlock\">\n <ng-container *ngTemplateOutlet=\"customTaxTemplate\"></ng-container>\n </ng-container>\n </ng-template>\n</ng-container>\n\n<ng-template #defaultTaxBlock>\n <div class=\"taxes-section\">\n <p class=\"taxes-title\">{{'price-without-national-taxes' | translate }}: <span class=\"nowrap-price\">{{ basePrice | ecCurrencySymbol }}</span></p>\n <ul class=\"taxes-list\">\n <li>\n {{ taxes.Name }}: {{ taxeAmount | ecCurrencySymbol }}\n </li>\n </ul>\n </div>\n</ng-template>",
|
|
97
|
+
styles: [".price-sm{font-size:13px}.price{font-size:18px}.lnth{text-decoration:line-through;color:gray}.taxes-section{margin-top:.5rem;border-radius:.5rem;font-size:.95rem;color:#333;line-height:1.4;max-width:400px}.taxes-title{font-weight:500;margin-bottom:.2rem;font-size:.7rem;color:#222}.taxes-list{list-style-type:none;padding-left:0;margin:0}.taxes-list li{margin-bottom:.05rem;font-size:.65rem;display:flex;justify-content:space-between}.nowrap-price{white-space:nowrap}"]
|
|
98
98
|
})
|
|
99
99
|
], PriceEcComponent);
|
|
100
100
|
export { PriceEcComponent };
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpY2UtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC93aWRnZXRzLWVjL3ByaWNlLWVjL3ByaWNlLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQVFoRixJQUFhLGdCQUFnQixHQUE3QixNQUFhLGdCQUFpQixTQUFRLGVBQWU7SUF3QmpELFlBQW1CLGVBQWdDLEVBQVUsb0JBQTBDO1FBQ25HLEtBQUssRUFBRSxDQUFDO1FBRE8sb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQVUseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQW5COUYsY0FBUyxHQUFZLElBQUksQ0FBQztRQUcxQixlQUFVLEdBQVcsQ0FBQyxDQUFDO1FBQ3ZCLFVBQUssR0FBdUMsRUFBRSxDQUFDO1FBQy9DLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQUNuQyxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQVVsQyxrQkFBYSxHQUFZLEtBQUssQ0FBQztRQUMvQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBSTlCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUTtRQUNKLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxFQUFFOztZQUN6RCxJQUFJLENBQUMsYUFBYSxTQUFHLE9BQU8sMENBQUUsYUFBYSxDQUFDO1lBQzVDLElBQUksQ0FBQyxTQUFTLGVBQUcsT0FBTywwQ0FBRSxTQUFTLHVDQUFJLEtBQUssRUFBQSxDQUFDO1FBQ2pELENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDZixPQUFPLENBQUMsSUFBSSxDQUFDLGNBQWM7WUFDdkIsSUFBSSxDQUFDLGFBQWE7WUFDbEIsQ0FBQyxJQUFJLENBQUMsU0FBUztZQUNmLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUztZQUNoQixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMxQixDQUFDO0NBQ0osQ0FBQTs7WUFwQnVDLGVBQWU7WUFBZ0Msb0JBQW9COztBQXRCOUY7SUFBUixLQUFLLEVBQUU7K0NBQWU7QUFDZDtJQUFSLEtBQUssRUFBRTttREFBbUI7QUFDbEI7SUFBUixLQUFLLEVBQUU7MkRBQTJCO0FBQzFCO0lBQVIsS0FBSyxFQUFFO21EQUEyQjtBQUMxQjtJQUFSLEtBQUssRUFBRTt5REFBeUI7QUFDeEI7SUFBUixLQUFLLEVBQUU7bURBQW1CO0FBQ2xCO0lBQVIsS0FBSyxFQUFFO29EQUF3QjtBQUN2QjtJQUFSLEtBQUssRUFBRTsrQ0FBZ0Q7QUFDL0M7SUFBUixLQUFLLEVBQUU7MkRBQW9DO0FBQ25DO0lBQVIsS0FBSyxFQUFFO3dEQUFpQztBQUdoQztJQUFSLEtBQUssRUFBRTs2REFBdUM7QUFDdEM7SUFBUixLQUFLLEVBQUU7aUVBQTJDO0FBQzFDO0lBQVIsS0FBSyxFQUFFO21FQUE2QztBQUM1QztJQUFSLEtBQUssRUFBRTt1RUFBaUQ7QUFDaEQ7SUFBUixLQUFLLEVBQUU7MkRBQXFDO0FBQ3BDO0lBQVIsS0FBSyxFQUFFO29FQUE4QztBQW5CN0MsZ0JBQWdCO0lBTDVCLFNBQVMsQ0FBQztRQUNQLFFBQVEsRUFBRSxjQUFjO1FBQ3hCLG16SEFBc0M7O0tBRXpDLENBQUM7R0FDVyxnQkFBZ0IsQ0E0QzVCO1NBNUNZLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb2R1Y3RzU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3Byb2R1Y3RzL3Byb2R1Y3RzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29tcG9uZW50SGVscGVyIH0gZnJvbSAnLi4vLi4vLi4vY2xhc3Nlcy9jb21wb25lbnQtaGVscGVyJztcbmltcG9ydCB7IENoYW5uZWxDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvY2hhbm5lbC1jb25maWcuc2VydmljZSc7XG5cblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdhcHAtcHJpY2UtZWMnLFxuICAgIHRlbXBsYXRlVXJsOiAncHJpY2UtZWMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWydwcmljZS1lYy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFByaWNlRWNDb21wb25lbnQgZXh0ZW5kcyBDb21wb25lbnRIZWxwZXIgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgQElucHV0KCkgcHJpY2U6IHN0cmluZztcbiAgICBASW5wdXQoKSBzYWxlcHJpY2U6IHN0cmluZztcbiAgICBASW5wdXQoKSBwcmljZVdpdGhvdXRUYXhlczogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHByaWNlU2l6ZTogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgY2xhc3NTdHJTcGFjaW5nOiBzdHJpbmc7XG4gICAgQElucHV0KCkgYmFzZVByaWNlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgdGF4ZUFtb3VudDogbnVtYmVyID0gMDtcbiAgICBASW5wdXQoKSB0YXhlczogeyBuYW1lOiBzdHJpbmcsIGFtb3VudDogbnVtYmVyIH1bXSA9IFtdO1xuICAgIEBJbnB1dCgpIHNob3dUYXhMZWdlbmRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZGlzYWJsZVRheEluZm86IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIFRlbXBsYXRlcyBleHRlcm5vc1xuICAgIEBJbnB1dCgpIGN1c3RvbVByaWNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgY3VzdG9tU2FsZVByaWNlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgY3VzdG9tU2ltcGxlUHJpY2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBASW5wdXQoKSBjdXN0b21TaW1wbGVTYWxlUHJpY2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBASW5wdXQoKSBjdXN0b21UYXhUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBASW5wdXQoKSBjdXN0b21Pbmx5VGF4TGFiZWxUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIHB1YmxpYyBzaG93VGF4TGVnZW5kOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIGhpZGVUYXhlczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHVibGljIHByb2R1Y3RzU2VydmljZTogUHJvZHVjdHNTZXJ2aWNlLCBwcml2YXRlIGNoYW5uZWxDb25maWdTZXJ2aWNlOiBDaGFubmVsQ29uZmlnU2VydmljZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKTtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpIHtcbiAgICAgICAgdGhpcy5jaGFubmVsQ29uZmlnU2VydmljZS5jaGFubmVsQ29uZmlnJC5zdWJzY3JpYmUoY2hhbm5lbCA9PiB7XG4gICAgICAgICAgICB0aGlzLnNob3dUYXhMZWdlbmQgPSBjaGFubmVsPy5zaG93VGF4TGVnZW5kO1xuICAgICAgICAgICAgdGhpcy5oaWRlVGF4ZXMgPSBjaGFubmVsPy5oaWRlVGF4ZXMgPz8gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVjT25Jbml0KCk7XG4gICAgfVxuXG4gICAgZ2V0IHNob3VsZFNob3dUYXhlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmRpc2FibGVUYXhJbmZvICYmXG4gICAgICAgICAgICB0aGlzLnNob3dUYXhMZWdlbmQgJiZcbiAgICAgICAgICAgICF0aGlzLmhpZGVUYXhlcyAmJlxuICAgICAgICAgICAgISF0aGlzLmJhc2VQcmljZSAmJlxuICAgICAgICAgICAgISF0aGlzLnRheGVBbW91bnQ7XG4gICAgfVxufSJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLnR5cGVzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2ludGVyZmFjZXMvZm9vdGVyLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBEaXNwbGF5TW9kZSA9ICdib3RoJyB8ICdkZXNrdG9wJyB8ICdtb2JpbGUnO1xuZXhwb3J0IHR5cGUgRm9vdGVySXRlbVR5cGUgPSAndXJsJyB8ICdzZWN0aW9uJyB8ICdjYXRlZ29yeScgfCAncGFyYW1ldGVyJyB8ICd0ZXh0JztcbmV4cG9ydCB0eXBlIExpbmtUYXJnZXQgPSAnc2FtZV90YWInIHwgJ25ld190YWInIHwgJ25ld193aW5kb3cnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvb3RlclZpZXcge1xuICAgIGNoYW5uZWw6IHN0cmluZztcbiAgICBmb290ZXI6IHsgaWQ6IG51bWJlcjsgbmFtZTogc3RyaW5nOyBkaXNwbGF5TW9kZTogRGlzcGxheU1vZGUgfTtcbiAgICBjb2x1bW5zOiBGb290ZXJDb2x1bW5WaWV3W107XG4gICAgZXh0cmFzPzogRm9vdGVyRXh0cmFzVmlldyB8IG51bGw7XG4gICAgZ2VuZXJhdGVkX2F0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9vdGVyRXh0cmFzVmlldyB7XG4gICAgbG9nbz86IHsgaW1hZ2U/OiB7IHBhdGg6IHN0cmluZzsgYWx0Pzogc3RyaW5nIHwgbnVsbCB9IH0gfCBudWxsO1xuICAgIGxlZ2FsPzogeyBodG1sOiBzdHJpbmcgfSB8IG51bGw7XG4gICAgZmlzY2FsUXI/OiB7IGltYWdlPzogeyBwYXRoOiBzdHJpbmc7IGFsdD86IHN0cmluZyB8IG51bGwgfSB9IHwgbnVsbDtcbiAgICB3aGF0c2FwcEZsb2F0aW5nPzogeyB1cmw/OiBzdHJpbmcgfCBudWxsOyBpbWFnZT86IHsgcGF0aDogc3RyaW5nOyBhbHQ/OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsOyBlbmFibGVkPzogYm9vbGVhbiB9IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb290ZXJDb2x1bW5WaWV3IHtcbiAgICBpZDogbnVtYmVyO1xuICAgIG5hbWU6IHN0cmluZyB8IG51bGw7XG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgICBpdGVtczogRm9vdGVySXRlbVZpZXdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb290ZXJJdGVtVmlldyB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICB0eXBlOiBGb290ZXJJdGVtVHlwZTtcbiAgICBsYWJlbDogc3RyaW5nIHwgbnVsbDtcbiAgICBzdHlsZToge1xuICAgICAgICBib2xkOiBib29sZWFuO1xuICAgICAgICBpdGFsaWM6IGJvb2xlYW47XG4gICAgICAgIHVuZGVybGluZTogYm9vbGVhbjtcbiAgICAgICAgZm9udFNpemU6IG51bWJlciB8IG51bGw7XG4gICAgfTtcbiAgICB0YXJnZXQ6IExpbmtUYXJnZXQ7XG4gICAgcG9zaXRpb246IG51bWJlcjtcbiAgICBsaW5rOiBGb290ZXJJdGVtTGluaztcbn1cblxuZXhwb3J0IHR5cGUgRm9vdGVySXRlbUxpbmsgPVxuICAgIHwgeyB0eXBlOiAndXJsJzsgdXJsOiBzdHJpbmcgfVxuICAgIHwge1xuICAgICAgICB0eXBlOiAnc2VjdGlvbic7XG4gICAgICAgIHNlY3Rpb246IHsgaWQ6IG51bWJlcjsgY29kZTogc3RyaW5nOyBuYW1lOiBzdHJpbmcgfCBudWxsIH0gfCBudWxsO1xuICAgICAgICAvKiogTlVFVk86IGNvbnRlbmlkbyBtw61uaW1vIGRlIGxhIHNlY2Npw7NuIHF1ZSBlbnZpYW1vcyBkZXNkZSBiYWNrZW5kICovXG4gICAgICAgIGNvbnRlbnQ/OiB7XG4gICAgICAgICAgICBwYWdlczogQXJyYXk8eyBjb2RlOiBzdHJpbmcgfCBudWxsOyBzbHVnOiBzdHJpbmcgfCBudWxsOyBuYW1lOiBzdHJpbmcgfCBudWxsOyBlbmFibGVkOiBib29sZWFuIHwgbnVsbCB9PjtcbiAgICAgICAgfSB8IG51bGw7XG4gICAgfVxuICAgIHwgeyB0eXBlOiAnY2F0ZWdvcnknOyBjYXRlZ29yeTogeyBpZDogbnVtYmVyOyBjb2RlOiBzdHJpbmcgfCBudWxsOyBzbHVnOiBzdHJpbmcgfCBudWxsOyBuYW1lOiBzdHJpbmcgfCBudWxsIH0gfCBudWxsIH1cbiAgICB8IHsgdHlwZTogJ3BhcmFtZXRlcic7IHBhcmFtZXRlcjogeyBpZDogbnVtYmVyOyBjb2RlOiBzdHJpbmcgfCBudWxsOyB2YWx1ZTogc3RyaW5nIHwgbnVsbCB9IHwgbnVsbCB9XG4gICAgfCB7IHR5cGU6ICd0ZXh0JyB9OyJdfQ==
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
function withLeadingSlash(path) {
|
|
2
|
+
return path.startsWith('/') ? path : '/' + path;
|
|
3
|
+
}
|
|
4
|
+
export function toHref(item) {
|
|
5
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
6
|
+
switch (item.type) {
|
|
7
|
+
case 'url':
|
|
8
|
+
return ((_a = item.link) === null || _a === void 0 ? void 0 : _a.url) || '#';
|
|
9
|
+
case 'category': {
|
|
10
|
+
const c = (_b = item.link) === null || _b === void 0 ? void 0 : _b.category;
|
|
11
|
+
return ((_c = c) === null || _c === void 0 ? void 0 : _c.slug) ? `/collection/categories/${encodeURIComponent(c.slug)}` : '#';
|
|
12
|
+
}
|
|
13
|
+
case 'section':
|
|
14
|
+
return '#';
|
|
15
|
+
case 'parameter': {
|
|
16
|
+
const p = (_d = item.link) === null || _d === void 0 ? void 0 : _d.parameter;
|
|
17
|
+
if (((_f = (_e = p) === null || _e === void 0 ? void 0 : _e.code) === null || _f === void 0 ? void 0 : _f.startsWith('link_')) && ((_g = p) === null || _g === void 0 ? void 0 : _g.value))
|
|
18
|
+
return p.value;
|
|
19
|
+
const key = encodeURIComponent((_j = (_h = p) === null || _h === void 0 ? void 0 : _h.code, (_j !== null && _j !== void 0 ? _j : 'param')));
|
|
20
|
+
const val = encodeURIComponent((_l = (_k = p) === null || _k === void 0 ? void 0 : _k.value, (_l !== null && _l !== void 0 ? _l : '')));
|
|
21
|
+
return `/buscar?${key}=${val}`;
|
|
22
|
+
}
|
|
23
|
+
case 'text':
|
|
24
|
+
default:
|
|
25
|
+
return '#';
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
export function toText(item) {
|
|
29
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
|
|
30
|
+
if (item.label)
|
|
31
|
+
return item.label;
|
|
32
|
+
switch (item.type) {
|
|
33
|
+
case 'category': return _f = (_c = (_b = (_a = item.link) === null || _a === void 0 ? void 0 : _a.category) === null || _b === void 0 ? void 0 : _b.name, (_c !== null && _c !== void 0 ? _c : (_e = (_d = item.link) === null || _d === void 0 ? void 0 : _d.category) === null || _e === void 0 ? void 0 : _e.code)), (_f !== null && _f !== void 0 ? _f : 'Categoría');
|
|
34
|
+
case 'section': return _m = (_j = (_h = (_g = item.link) === null || _g === void 0 ? void 0 : _g.section) === null || _h === void 0 ? void 0 : _h.name, (_j !== null && _j !== void 0 ? _j : (_l = (_k = item.link) === null || _k === void 0 ? void 0 : _k.section) === null || _l === void 0 ? void 0 : _l.code)), (_m !== null && _m !== void 0 ? _m : 'Sección');
|
|
35
|
+
case 'parameter': return _q = (_p = (_o = item.link) === null || _o === void 0 ? void 0 : _o.parameter) === null || _p === void 0 ? void 0 : _p.code, (_q !== null && _q !== void 0 ? _q : 'Parámetro');
|
|
36
|
+
case 'url': return 'Enlace';
|
|
37
|
+
case 'text': return '';
|
|
38
|
+
default: return 'Enlace';
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** Devuelve el array de páginas de una sección (puede ser []). */
|
|
42
|
+
export function getSectionPages(item) {
|
|
43
|
+
var _a, _b, _c;
|
|
44
|
+
if (item.type !== 'section')
|
|
45
|
+
return [];
|
|
46
|
+
return (_c = (_b = (_a = item.link) === null || _a === void 0 ? void 0 : _a.content) === null || _b === void 0 ? void 0 : _b.pages, (_c !== null && _c !== void 0 ? _c : []));
|
|
47
|
+
}
|
|
48
|
+
/** Helper para saber si una sección trae al menos una página habilitada (o cualquiera si no validás enabled). */
|
|
49
|
+
export function hasSectionPages(item, onlyEnabled = true) {
|
|
50
|
+
const pages = getSectionPages(item);
|
|
51
|
+
return onlyEnabled ? pages.some(p => { var _a; return (_a = p) === null || _a === void 0 ? void 0 : _a.enabled; }) : pages.length > 0;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Arma el href de UNA página de sección.
|
|
55
|
+
* @param item FooterItemView de tipo 'section'
|
|
56
|
+
* @param pageCode code de la página (obligatorio)
|
|
57
|
+
* @param sectionsBase base que te da consts.getSectionsRoute(), ej: 'section/' o '/section/'
|
|
58
|
+
*/
|
|
59
|
+
export function toSectionPageHref(item, pageCode, sectionsBase) {
|
|
60
|
+
if (item.type !== 'section')
|
|
61
|
+
return '#';
|
|
62
|
+
if (!pageCode)
|
|
63
|
+
return '#';
|
|
64
|
+
const base = withLeadingSlash(sectionsBase || 'section/');
|
|
65
|
+
return `${base}${encodeURIComponent(pageCode)}`;
|
|
66
|
+
}
|
|
67
|
+
/** Texto a mostrar para la página (fallback name -> code). */
|
|
68
|
+
export function toSectionPageText(page) {
|
|
69
|
+
var _a, _b, _c, _d;
|
|
70
|
+
return (_d = (_b = (_a = page) === null || _a === void 0 ? void 0 : _a.name, (_b !== null && _b !== void 0 ? _b : (_c = page) === null || _c === void 0 ? void 0 : _c.code)), (_d !== null && _d !== void 0 ? _d : '')).toString();
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLmFkYXB0ZXJzLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2Zvb3Rlci9mb290ZXIuYWRhcHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsU0FBUyxnQkFBZ0IsQ0FBQyxJQUFZO0lBQ2xDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDO0FBQ3BELENBQUM7QUFFRCxNQUFNLFVBQVUsTUFBTSxDQUFDLElBQW9COztJQUN2QyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDZixLQUFLLEtBQUs7WUFDTixPQUFPLE9BQUMsSUFBSSxDQUFDLElBQVksMENBQUUsR0FBRyxLQUFJLEdBQUcsQ0FBQztRQUUxQyxLQUFLLFVBQVUsQ0FBQyxDQUFDO1lBQ2IsTUFBTSxDQUFDLFNBQUksSUFBSSxDQUFDLElBQVksMENBQUUsUUFBUSxDQUFDO1lBQ3ZDLE9BQU8sT0FBQSxDQUFDLDBDQUFFLElBQUksRUFBQyxDQUFDLENBQUMsMEJBQTBCLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7U0FDakY7UUFFRCxLQUFLLFNBQVM7WUFDVixPQUFPLEdBQUcsQ0FBQztRQUVmLEtBQUssV0FBVyxDQUFDLENBQUM7WUFDZCxNQUFNLENBQUMsU0FBSSxJQUFJLENBQUMsSUFBWSwwQ0FBRSxTQUFTLENBQUM7WUFDeEMsSUFBSSxhQUFBLENBQUMsMENBQUUsSUFBSSwwQ0FBRSxVQUFVLENBQUMsT0FBTyxhQUFLLENBQUMsMENBQUUsS0FBSyxDQUFBO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUM3RCxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsYUFBQyxDQUFDLDBDQUFFLElBQUksdUNBQUksT0FBTyxHQUFDLENBQUM7WUFDbkQsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLGFBQUMsQ0FBQywwQ0FBRSxLQUFLLHVDQUFJLEVBQUUsR0FBQyxDQUFDO1lBQy9DLE9BQU8sV0FBVyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7U0FDbEM7UUFFRCxLQUFLLE1BQU0sQ0FBQztRQUNaO1lBQ0ksT0FBTyxHQUFHLENBQUM7S0FDbEI7QUFDTCxDQUFDO0FBRUQsTUFBTSxVQUFVLE1BQU0sQ0FBQyxJQUFvQjs7SUFDdkMsSUFBSSxJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNsQyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7UUFDZixLQUFLLFVBQVUsQ0FBQyxDQUFDLDhCQUFRLElBQUksQ0FBQyxJQUFZLDBDQUFFLFFBQVEsMENBQUUsSUFBSSxtREFBSyxJQUFJLENBQUMsSUFBWSwwQ0FBRSxRQUFRLDBDQUFFLElBQUkseUNBQUksV0FBVyxFQUFDO1FBQ2hILEtBQUssU0FBUyxDQUFDLENBQUMsOEJBQVEsSUFBSSxDQUFDLElBQVksMENBQUUsT0FBTywwQ0FBRSxJQUFJLG1EQUFLLElBQUksQ0FBQyxJQUFZLDBDQUFFLE9BQU8sMENBQUUsSUFBSSx5Q0FBSSxTQUFTLEVBQUM7UUFDM0csS0FBSyxXQUFXLENBQUMsQ0FBQyx3QkFBUSxJQUFJLENBQUMsSUFBWSwwQ0FBRSxTQUFTLDBDQUFFLElBQUksdUNBQUksV0FBVyxFQUFDO1FBQzVFLEtBQUssS0FBSyxDQUFDLENBQUMsT0FBTyxRQUFRLENBQUM7UUFDNUIsS0FBSyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUN2QixPQUFPLENBQUMsQ0FBQyxPQUFPLFFBQVEsQ0FBQztLQUM1QjtBQUNMLENBQUM7QUFFRCxrRUFBa0U7QUFDbEUsTUFBTSxVQUFVLGVBQWUsQ0FBQyxJQUFvQjs7SUFDaEQsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUN2QyxPQUFPLGtCQUFFLElBQUksQ0FBQyxJQUFZLDBDQUFFLE9BQU8sMENBQUUsS0FBSyx1Q0FBSSxFQUFFLEVBRTlDLENBQUM7QUFDUCxDQUFDO0FBRUQsaUhBQWlIO0FBQ2pILE1BQU0sVUFBVSxlQUFlLENBQUMsSUFBb0IsRUFBRSxXQUFXLEdBQUcsSUFBSTtJQUNwRSxNQUFNLEtBQUssR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDcEMsT0FBTyxXQUFXLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsd0JBQUMsQ0FBQywwQ0FBRSxPQUFPLEdBQUEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQzdCLElBQW9CLEVBQ3BCLFFBQW1DLEVBQ25DLFlBQW9CO0lBRXBCLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFDeEMsSUFBSSxDQUFDLFFBQVE7UUFBRSxPQUFPLEdBQUcsQ0FBQztJQUMxQixNQUFNLElBQUksR0FBRyxnQkFBZ0IsQ0FBQyxZQUFZLElBQUksVUFBVSxDQUFDLENBQUM7SUFDMUQsT0FBTyxHQUFHLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO0FBQ3BELENBQUM7QUFFRCw4REFBOEQ7QUFDOUQsTUFBTSxVQUFVLGlCQUFpQixDQUFDLElBQWtEOztJQUNoRixPQUFPLGtCQUFDLElBQUksMENBQUUsSUFBSSw2Q0FBSSxJQUFJLDBDQUFFLElBQUkseUNBQUksRUFBRSxFQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDdkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvb3Rlckl0ZW1WaWV3IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvZm9vdGVyLnR5cGVzXCI7XG5cbmZ1bmN0aW9uIHdpdGhMZWFkaW5nU2xhc2gocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKCcvJykgPyBwYXRoIDogJy8nICsgcGF0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRvSHJlZihpdGVtOiBGb290ZXJJdGVtVmlldyk6IHN0cmluZyB7XG4gICAgc3dpdGNoIChpdGVtLnR5cGUpIHtcbiAgICAgICAgY2FzZSAndXJsJzpcbiAgICAgICAgICAgIHJldHVybiAoaXRlbS5saW5rIGFzIGFueSk/LnVybCB8fCAnIyc7XG5cbiAgICAgICAgY2FzZSAnY2F0ZWdvcnknOiB7XG4gICAgICAgICAgICBjb25zdCBjID0gKGl0ZW0ubGluayBhcyBhbnkpPy5jYXRlZ29yeTtcbiAgICAgICAgICAgIHJldHVybiBjPy5zbHVnID8gYC9jb2xsZWN0aW9uL2NhdGVnb3JpZXMvJHtlbmNvZGVVUklDb21wb25lbnQoYy5zbHVnKX1gIDogJyMnO1xuICAgICAgICB9XG5cbiAgICAgICAgY2FzZSAnc2VjdGlvbic6XG4gICAgICAgICAgICByZXR1cm4gJyMnO1xuXG4gICAgICAgIGNhc2UgJ3BhcmFtZXRlcic6IHtcbiAgICAgICAgICAgIGNvbnN0IHAgPSAoaXRlbS5saW5rIGFzIGFueSk/LnBhcmFtZXRlcjtcbiAgICAgICAgICAgIGlmIChwPy5jb2RlPy5zdGFydHNXaXRoKCdsaW5rXycpICYmIHA/LnZhbHVlKSByZXR1cm4gcC52YWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IGVuY29kZVVSSUNvbXBvbmVudChwPy5jb2RlID8/ICdwYXJhbScpO1xuICAgICAgICAgICAgY29uc3QgdmFsID0gZW5jb2RlVVJJQ29tcG9uZW50KHA/LnZhbHVlID8/ICcnKTtcbiAgICAgICAgICAgIHJldHVybiBgL2J1c2Nhcj8ke2tleX09JHt2YWx9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNhc2UgJ3RleHQnOlxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuICcjJztcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0b1RleHQoaXRlbTogRm9vdGVySXRlbVZpZXcpOiBzdHJpbmcge1xuICAgIGlmIChpdGVtLmxhYmVsKSByZXR1cm4gaXRlbS5sYWJlbDtcbiAgICBzd2l0Y2ggKGl0ZW0udHlwZSkge1xuICAgICAgICBjYXNlICdjYXRlZ29yeSc6IHJldHVybiAoaXRlbS5saW5rIGFzIGFueSk/LmNhdGVnb3J5Py5uYW1lID8/IChpdGVtLmxpbmsgYXMgYW55KT8uY2F0ZWdvcnk/LmNvZGUgPz8gJ0NhdGVnb3LDrWEnO1xuICAgICAgICBjYXNlICdzZWN0aW9uJzogcmV0dXJuIChpdGVtLmxpbmsgYXMgYW55KT8uc2VjdGlvbj8ubmFtZSA/PyAoaXRlbS5saW5rIGFzIGFueSk/LnNlY3Rpb24/LmNvZGUgPz8gJ1NlY2Npw7NuJztcbiAgICAgICAgY2FzZSAncGFyYW1ldGVyJzogcmV0dXJuIChpdGVtLmxpbmsgYXMgYW55KT8ucGFyYW1ldGVyPy5jb2RlID8/ICdQYXLDoW1ldHJvJztcbiAgICAgICAgY2FzZSAndXJsJzogcmV0dXJuICdFbmxhY2UnO1xuICAgICAgICBjYXNlICd0ZXh0JzogcmV0dXJuICcnO1xuICAgICAgICBkZWZhdWx0OiByZXR1cm4gJ0VubGFjZSc7XG4gICAgfVxufVxuXG4vKiogRGV2dWVsdmUgZWwgYXJyYXkgZGUgcMOhZ2luYXMgZGUgdW5hIHNlY2Npw7NuIChwdWVkZSBzZXIgW10pLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNlY3Rpb25QYWdlcyhpdGVtOiBGb290ZXJJdGVtVmlldykge1xuICAgIGlmIChpdGVtLnR5cGUgIT09ICdzZWN0aW9uJykgcmV0dXJuIFtdO1xuICAgIHJldHVybiAoKGl0ZW0ubGluayBhcyBhbnkpPy5jb250ZW50Py5wYWdlcyA/PyBbXSkgYXMgQXJyYXk8e1xuICAgICAgICBjb2RlOiBzdHJpbmcgfCBudWxsOyBzbHVnOiBzdHJpbmcgfCBudWxsOyBuYW1lOiBzdHJpbmcgfCBudWxsOyBlbmFibGVkOiBib29sZWFuIHwgbnVsbDtcbiAgICB9Pjtcbn1cblxuLyoqIEhlbHBlciBwYXJhIHNhYmVyIHNpIHVuYSBzZWNjacOzbiB0cmFlIGFsIG1lbm9zIHVuYSBww6FnaW5hIGhhYmlsaXRhZGEgKG8gY3VhbHF1aWVyYSBzaSBubyB2YWxpZMOhcyBlbmFibGVkKS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNTZWN0aW9uUGFnZXMoaXRlbTogRm9vdGVySXRlbVZpZXcsIG9ubHlFbmFibGVkID0gdHJ1ZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHBhZ2VzID0gZ2V0U2VjdGlvblBhZ2VzKGl0ZW0pO1xuICAgIHJldHVybiBvbmx5RW5hYmxlZCA/IHBhZ2VzLnNvbWUocCA9PiBwPy5lbmFibGVkKSA6IHBhZ2VzLmxlbmd0aCA+IDA7XG59XG5cbi8qKlxuICogQXJtYSBlbCBocmVmIGRlIFVOQSBww6FnaW5hIGRlIHNlY2Npw7NuLlxuICogQHBhcmFtIGl0ZW0gRm9vdGVySXRlbVZpZXcgZGUgdGlwbyAnc2VjdGlvbidcbiAqIEBwYXJhbSBwYWdlQ29kZSBjb2RlIGRlIGxhIHDDoWdpbmEgKG9ibGlnYXRvcmlvKVxuICogQHBhcmFtIHNlY3Rpb25zQmFzZSBiYXNlIHF1ZSB0ZSBkYSBjb25zdHMuZ2V0U2VjdGlvbnNSb3V0ZSgpLCBlajogJ3NlY3Rpb24vJyBvICcvc2VjdGlvbi8nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b1NlY3Rpb25QYWdlSHJlZihcbiAgICBpdGVtOiBGb290ZXJJdGVtVmlldyxcbiAgICBwYWdlQ29kZTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgICBzZWN0aW9uc0Jhc2U6IHN0cmluZ1xuKTogc3RyaW5nIHtcbiAgICBpZiAoaXRlbS50eXBlICE9PSAnc2VjdGlvbicpIHJldHVybiAnIyc7XG4gICAgaWYgKCFwYWdlQ29kZSkgcmV0dXJuICcjJztcbiAgICBjb25zdCBiYXNlID0gd2l0aExlYWRpbmdTbGFzaChzZWN0aW9uc0Jhc2UgfHwgJ3NlY3Rpb24vJyk7XG4gICAgcmV0dXJuIGAke2Jhc2V9JHtlbmNvZGVVUklDb21wb25lbnQocGFnZUNvZGUpfWA7XG59XG5cbi8qKiBUZXh0byBhIG1vc3RyYXIgcGFyYSBsYSBww6FnaW5hIChmYWxsYmFjayBuYW1lIC0+IGNvZGUpLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU2VjdGlvblBhZ2VUZXh0KHBhZ2U6IHsgbmFtZTogc3RyaW5nIHwgbnVsbDsgY29kZTogc3RyaW5nIHwgbnVsbCB9KTogc3RyaW5nIHtcbiAgICByZXR1cm4gKHBhZ2U/Lm5hbWUgPz8gcGFnZT8uY29kZSA/PyAnJykudG9TdHJpbmcoKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function pickFooterForDevice(footers, device) {
|
|
2
|
+
const exact = footers.find(f => f.footer.displayMode === device);
|
|
3
|
+
if (exact)
|
|
4
|
+
return exact;
|
|
5
|
+
const both = footers.find(f => f.footer.displayMode === 'both');
|
|
6
|
+
return both || null;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLnBpY2suanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZm9vdGVyL2Zvb3Rlci5waWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sVUFBVSxtQkFBbUIsQ0FBQyxPQUFxQixFQUFFLE1BQWtCO0lBQ3pFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUMsQ0FBQztJQUNqRSxJQUFJLEtBQUs7UUFBRSxPQUFPLEtBQUssQ0FBQztJQUN4QixNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDaEUsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDO0FBQ3hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb290ZXJWaWV3IH0gZnJvbSBcIi4uLy4uL2ludGVyZmFjZXMvZm9vdGVyLnR5cGVzXCI7XG5cblxuZXhwb3J0IHR5cGUgRGV2aWNlS2luZCA9ICdkZXNrdG9wJyB8ICdtb2JpbGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcGlja0Zvb3RlckZvckRldmljZShmb290ZXJzOiBGb290ZXJWaWV3W10sIGRldmljZTogRGV2aWNlS2luZCk6IEZvb3RlclZpZXcgfCBudWxsIHtcbiAgICBjb25zdCBleGFjdCA9IGZvb3RlcnMuZmluZChmID0+IGYuZm9vdGVyLmRpc3BsYXlNb2RlID09PSBkZXZpY2UpO1xuICAgIGlmIChleGFjdCkgcmV0dXJuIGV4YWN0O1xuICAgIGNvbnN0IGJvdGggPSBmb290ZXJzLmZpbmQoZiA9PiBmLmZvb3Rlci5kaXNwbGF5TW9kZSA9PT0gJ2JvdGgnKTtcbiAgICByZXR1cm4gYm90aCB8fCBudWxsO1xufVxuIl19
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { Injectable } from '@angular/core';
|
|
8
|
+
import { ConnectionService } from '../../api/connection.service';
|
|
9
|
+
import { Constants } from '../../core.consts';
|
|
10
|
+
import { BehaviorSubject, of } from 'rxjs';
|
|
11
|
+
import { catchError, first } from 'rxjs/operators';
|
|
12
|
+
import 'rxjs/add/operator/catch';
|
|
13
|
+
import { pickFooterForDevice } from './footer.pick';
|
|
14
|
+
import * as i0 from "@angular/core";
|
|
15
|
+
import * as i1 from "../../../public-api";
|
|
16
|
+
let FooterService = class FooterService {
|
|
17
|
+
constructor(conn, consts) {
|
|
18
|
+
this.conn = conn;
|
|
19
|
+
this.consts = consts;
|
|
20
|
+
this.columnsSubject = new BehaviorSubject([]);
|
|
21
|
+
this.columns$ = this.columnsSubject.asObservable();
|
|
22
|
+
this.extrasSubject = new BehaviorSubject(null);
|
|
23
|
+
this.extras$ = this.extrasSubject.asObservable();
|
|
24
|
+
// === NUEVO: cache en memoria ===
|
|
25
|
+
this.cachedList = [];
|
|
26
|
+
this.currentDevice = 'desktop';
|
|
27
|
+
this.loaded = false;
|
|
28
|
+
this.footerApi = () => 'shop-api/' + this.consts.getChannel() + '/footer' + '?locale=' + this.consts.getLocale();
|
|
29
|
+
this.byPos = (a, b) => { var _a, _b; return (((_a = a) === null || _a === void 0 ? void 0 : _a.position) || 0) - (((_b = b) === null || _b === void 0 ? void 0 : _b.position) || 0); };
|
|
30
|
+
this.isMobile = () => (typeof window !== 'undefined') && window.innerWidth < 750;
|
|
31
|
+
}
|
|
32
|
+
load(device) {
|
|
33
|
+
this.conn.get(this.footerApi())
|
|
34
|
+
.pipe(catchError(() => of([])))
|
|
35
|
+
.subscribe((res) => {
|
|
36
|
+
var _a, _b, _c;
|
|
37
|
+
const list = Array.isArray(res) ? res : [];
|
|
38
|
+
const d = device || (this.isMobile() ? 'mobile' : 'desktop');
|
|
39
|
+
const chosen = pickFooterForDevice(list, d);
|
|
40
|
+
const cols = (((_a = chosen) === null || _a === void 0 ? void 0 : _a.columns) || []).slice().sort(this.byPos);
|
|
41
|
+
cols.forEach(c => c.items && c.items.sort(this.byPos));
|
|
42
|
+
this.columnsSubject.next(cols);
|
|
43
|
+
this.extrasSubject.next((_c = (_b = chosen) === null || _b === void 0 ? void 0 : _b.extras, (_c !== null && _c !== void 0 ? _c : null)));
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/** Carga UNA SOLA VEZ y cachea todo. Luego aplica según device actual. */
|
|
47
|
+
loadOnce(initialDevice) {
|
|
48
|
+
if (this.loaded) {
|
|
49
|
+
// ya tengo datos: solo (re)aplico el device actual o el que me pasen
|
|
50
|
+
if (initialDevice && initialDevice !== this.currentDevice) {
|
|
51
|
+
this.currentDevice = initialDevice;
|
|
52
|
+
this.applyDevice();
|
|
53
|
+
}
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
this.currentDevice = initialDevice || this.getDeviceByWidth();
|
|
57
|
+
this.conn.get(this.footerApi())
|
|
58
|
+
.pipe(catchError(() => of([])))
|
|
59
|
+
.subscribe((res) => {
|
|
60
|
+
this.cachedList = Array.isArray(res) ? res : [];
|
|
61
|
+
this.loaded = true;
|
|
62
|
+
this.applyDevice(); // pinta columns/extras según this.currentDevice
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
/** Cambia el device y re-arma columnas/extras desde el cache (sin API). */
|
|
66
|
+
setDevice(device) {
|
|
67
|
+
if (device === this.currentDevice)
|
|
68
|
+
return;
|
|
69
|
+
this.currentDevice = device;
|
|
70
|
+
if (!this.loaded)
|
|
71
|
+
return; // todavía no llegó la data
|
|
72
|
+
this.applyDevice();
|
|
73
|
+
}
|
|
74
|
+
/** Recalcula columns/extras para el currentDevice usando el cache. */
|
|
75
|
+
applyDevice() {
|
|
76
|
+
var _a, _b, _c;
|
|
77
|
+
const chosen = pickFooterForDevice(this.cachedList, this.currentDevice);
|
|
78
|
+
const cols = (((_a = chosen) === null || _a === void 0 ? void 0 : _a.columns) || []).slice().sort(this.byPos);
|
|
79
|
+
cols.forEach(c => c.items && c.items.sort(this.byPos));
|
|
80
|
+
this.columnsSubject.next(cols);
|
|
81
|
+
this.extrasSubject.next((_c = (_b = chosen) === null || _b === void 0 ? void 0 : _b.extras, (_c !== null && _c !== void 0 ? _c : null)));
|
|
82
|
+
}
|
|
83
|
+
getDeviceByWidth() {
|
|
84
|
+
return (typeof window !== 'undefined' && window.innerWidth < 750) ? 'mobile' : 'desktop';
|
|
85
|
+
}
|
|
86
|
+
prefetch(device) {
|
|
87
|
+
return new Promise(resolve => {
|
|
88
|
+
this.conn.get(this.footerApi())
|
|
89
|
+
.pipe(catchError(() => of([])), first())
|
|
90
|
+
.subscribe((res) => {
|
|
91
|
+
var _a, _b, _c;
|
|
92
|
+
const list = Array.isArray(res) ? res : [];
|
|
93
|
+
const d = device || (this.isMobile() ? 'mobile' : 'desktop');
|
|
94
|
+
const chosen = pickFooterForDevice(list, d);
|
|
95
|
+
const cols = (((_a = chosen) === null || _a === void 0 ? void 0 : _a.columns) || []).slice().sort(this.byPos);
|
|
96
|
+
cols.forEach(c => c.items && c.items.sort(this.byPos));
|
|
97
|
+
this.columnsSubject.next(cols);
|
|
98
|
+
this.extrasSubject.next((_c = (_b = chosen) === null || _b === void 0 ? void 0 : _b.extras, (_c !== null && _c !== void 0 ? _c : null)));
|
|
99
|
+
resolve();
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
FooterService.ctorParameters = () => [
|
|
105
|
+
{ type: ConnectionService },
|
|
106
|
+
{ type: Constants }
|
|
107
|
+
];
|
|
108
|
+
FooterService.ɵprov = i0.ɵɵdefineInjectable({ factory: function FooterService_Factory() { return new i1.FooterService(i0.ɵɵinject(i1.ConnectionService), i0.ɵɵinject(i1.Constants)); }, token: i1.FooterService, providedIn: "root" });
|
|
109
|
+
FooterService = __decorate([
|
|
110
|
+
Injectable({
|
|
111
|
+
providedIn: 'root'
|
|
112
|
+
})
|
|
113
|
+
], FooterService);
|
|
114
|
+
export { FooterService };
|
|
115
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9vdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1lYXN5Y29tbWVyY2UvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZm9vdGVyL2Zvb3Rlci5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyx5QkFBeUIsQ0FBQztBQUVqQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxlQUFlLENBQUM7OztBQUtwRCxJQUFhLGFBQWEsR0FBMUIsTUFBYSxhQUFhO0lBWXRCLFlBQW9CLElBQXVCLEVBQVUsTUFBaUI7UUFBbEQsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBWDlELG1CQUFjLEdBQUcsSUFBSSxlQUFlLENBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQzlELGFBQVEsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTdDLGtCQUFhLEdBQUcsSUFBSSxlQUFlLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBQ3BFLFlBQU8sR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRW5ELGtDQUFrQztRQUMxQixlQUFVLEdBQWlCLEVBQUUsQ0FBQztRQUM5QixrQkFBYSxHQUF5QixTQUFTLENBQUM7UUFDaEQsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUloQixjQUFTLEdBQUcsR0FBRyxFQUFFLENBQ3BCLFdBQVcs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QUFPLEVBQUUsQ0FBQztZQUNkLENBQUMsQ0FBQyxDQUFDO1FBQ1gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0osQ0FBQTs7WUF6RjZCLGlCQUFpQjtZQUFrQixTQUFTOzs7QUFaN0QsYUFBYTtJQUh6QixVQUFVLENBQUM7UUFDUixVQUFVLEVBQUUsTUFBTTtLQUNyQixDQUFDO0dBQ1csYUFBYSxDQXFHekI7U0FyR1ksYUFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbm5lY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vYXBpL2Nvbm5lY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi8uLi9jb3JlLmNvbnN0cyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaXJzdCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCAncnhqcy9hZGQvb3BlcmF0b3IvY2F0Y2gnO1xuaW1wb3J0IHsgRm9vdGVyQ29sdW1uVmlldywgRm9vdGVyRXh0cmFzVmlldywgRm9vdGVyVmlldyB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMvZm9vdGVyLnR5cGVzJztcbmltcG9ydCB7IHBpY2tGb290ZXJGb3JEZXZpY2UgfSBmcm9tICcuL2Zvb3Rlci5waWNrJztcblxuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb290ZXJTZXJ2aWNlIHtcbiAgICBwcml2YXRlIGNvbHVtbnNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb290ZXJDb2x1bW5WaWV3W10+KFtdKTtcbiAgICBwdWJsaWMgY29sdW1ucyQgPSB0aGlzLmNvbHVtbnNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuXG4gICAgcHJpdmF0ZSBleHRyYXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxGb290ZXJFeHRyYXNWaWV3IHwgbnVsbD4obnVsbCk7XG4gICAgcHVibGljIGV4dHJhcyQgPSB0aGlzLmV4dHJhc1N1YmplY3QuYXNPYnNlcnZhYmxlKCk7XG5cbiAgICAvLyA9PT0gTlVFVk86IGNhY2hlIGVuIG1lbW9yaWEgPT09XG4gICAgcHJpdmF0ZSBjYWNoZWRMaXN0OiBGb290ZXJWaWV3W10gPSBbXTtcbiAgICBwcml2YXRlIGN1cnJlbnREZXZpY2U6ICdkZXNrdG9wJyB8ICdtb2JpbGUnID0gJ2Rlc2t0b3AnO1xuICAgIHByaXZhdGUgbG9hZGVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbm46IENvbm5lY3Rpb25TZXJ2aWNlLCBwcml2YXRlIGNvbnN0czogQ29uc3RhbnRzKSB7IH1cblxuICAgIHB1YmxpYyBmb290ZXJBcGkgPSAoKSA9PlxuICAgICAgICAnc2hvcC1hcGkvJyArIHRoaXMuY29uc3RzLmdldENoYW5uZWwoKSArICcvZm9vdGVyJyArICc/bG9jYWxlPScgKyB0aGlzLmNvbnN0cy5nZXRMb2NhbGUoKTtcblxuICAgIGxvYWQoZGV2aWNlPzogJ2Rlc2t0b3AnIHwgJ21vYmlsZScpIHtcbiAgICAgICAgdGhpcy5jb25uLmdldCh0aGlzLmZvb3RlckFwaSgpKVxuICAgICAgICAgICAgLnBpcGUoY2F0Y2hFcnJvcigoKSA9PiBvZihbXSkpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgocmVzOiBGb290ZXJWaWV3W10gfCBhbnlbXSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxpc3Q6IEZvb3RlclZpZXdbXSA9IEFycmF5LmlzQXJyYXkocmVzKSA/IChyZXMgYXMgRm9vdGVyVmlld1tdKSA6IFtdO1xuICAgICAgICAgICAgICAgIGNvbnN0IGQ6ICdkZXNrdG9wJyB8ICdtb2JpbGUnID0gZGV2aWNlIHx8ICh0aGlzLmlzTW9iaWxlKCkgPyAnbW9iaWxlJyA6ICdkZXNrdG9wJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hvc2VuID0gcGlja0Zvb3RlckZvckRldmljZShsaXN0LCBkKTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHMgPSAoY2hvc2VuPy5jb2x1bW5zIHx8IFtdKS5zbGljZSgpLnNvcnQodGhpcy5ieVBvcyk7XG4gICAgICAgICAgICAgICAgY29scy5mb3JFYWNoKGMgPT4gYy5pdGVtcyAmJiBjLml0ZW1zLnNvcnQodGhpcy5ieVBvcykpO1xuICAgICAgICAgICAgICAgIHRoaXMuY29sdW1uc1N1YmplY3QubmV4dChjb2xzKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuZXh0cmFzU3ViamVjdC5uZXh0KGNob3Nlbj8uZXh0cmFzID8/IG51bGwpO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIENhcmdhIFVOQSBTT0xBIFZFWiB5IGNhY2hlYSB0b2RvLiBMdWVnbyBhcGxpY2Egc2Vnw7puIGRldmljZSBhY3R1YWwuICovXG4gICAgbG9hZE9uY2UoaW5pdGlhbERldmljZT86ICdkZXNrdG9wJyB8ICdtb2JpbGUnKSB7XG4gICAgICAgIGlmICh0aGlzLmxvYWRlZCkge1xuICAgICAgICAgICAgLy8geWEgdGVuZ28gZGF0b3M6IHNvbG8gKHJlKWFwbGljbyBlbCBkZXZpY2UgYWN0dWFsIG8gZWwgcXVlIG1lIHBhc2VuXG4gICAgICAgICAgICBpZiAoaW5pdGlhbERldmljZSAmJiBpbml0aWFsRGV2aWNlICE9PSB0aGlzLmN1cnJlbnREZXZpY2UpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnREZXZpY2UgPSBpbml0aWFsRGV2aWNlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlEZXZpY2UoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY3VycmVudERldmljZSA9IGluaXRpYWxEZXZpY2UgfHwgdGhpcy5nZXREZXZpY2VCeVdpZHRoKCk7XG4gICAgICAgIHRoaXMuY29ubi5nZXQodGhpcy5mb290ZXJBcGkoKSlcbiAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10gYXMgRm9vdGVyVmlld1tdKSkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IEZvb3RlclZpZXdbXSB8IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5jYWNoZWRMaXN0ID0gQXJyYXkuaXNBcnJheShyZXMpID8gKHJlcyBhcyBGb290ZXJWaWV3W10pIDogW107XG4gICAgICAgICAgICAgICAgdGhpcy5sb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlEZXZpY2UoKTsgLy8gcGludGEgY29sdW1ucy9leHRyYXMgc2Vnw7puIHRoaXMuY3VycmVudERldmljZVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIENhbWJpYSBlbCBkZXZpY2UgeSByZS1hcm1hIGNvbHVtbmFzL2V4dHJhcyBkZXNkZSBlbCBjYWNoZSAoc2luIEFQSSkuICovXG4gICAgc2V0RGV2aWNlKGRldmljZTogJ2Rlc2t0b3AnIHwgJ21vYmlsZScpIHtcbiAgICAgICAgaWYgKGRldmljZSA9PT0gdGhpcy5jdXJyZW50RGV2aWNlKSByZXR1cm47XG4gICAgICAgIHRoaXMuY3VycmVudERldmljZSA9IGRldmljZTtcbiAgICAgICAgaWYgKCF0aGlzLmxvYWRlZCkgcmV0dXJuOyAvLyB0b2RhdsOtYSBubyBsbGVnw7MgbGEgZGF0YVxuICAgICAgICB0aGlzLmFwcGx5RGV2aWNlKCk7XG4gICAgfVxuXG4gICAgLyoqIFJlY2FsY3VsYSBjb2x1bW5zL2V4dHJhcyBwYXJhIGVsIGN1cnJlbnREZXZpY2UgdXNhbmRvIGVsIGNhY2hlLiAqL1xuICAgIHByaXZhdGUgYXBwbHlEZXZpY2UoKSB7XG4gICAgICAgIGNvbnN0IGNob3NlbiA9IHBpY2tGb290ZXJGb3JEZXZpY2UodGhpcy5jYWNoZWRMaXN0LCB0aGlzLmN1cnJlbnREZXZpY2UpO1xuXG4gICAgICAgIGNvbnN0IGNvbHMgPSAoY2hvc2VuPy5jb2x1bW5zIHx8IFtdKS5zbGljZSgpLnNvcnQodGhpcy5ieVBvcyk7XG4gICAgICAgIGNvbHMuZm9yRWFjaChjID0+IGMuaXRlbXMgJiYgYy5pdGVtcy5zb3J0KHRoaXMuYnlQb3MpKTtcbiAgICAgICAgdGhpcy5jb2x1bW5zU3ViamVjdC5uZXh0KGNvbHMpO1xuXG4gICAgICAgIHRoaXMuZXh0cmFzU3ViamVjdC5uZXh0KGNob3Nlbj8uZXh0cmFzID8/IG51bGwpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYnlQb3MgPSAoYTogeyBwb3NpdGlvbjogbnVtYmVyIH0sIGI6IHsgcG9zaXRpb246IG51bWJlciB9KSA9PlxuICAgICAgICAoYT8ucG9zaXRpb24gfHwgMCkgLSAoYj8ucG9zaXRpb24gfHwgMCk7XG5cbiAgICBwcml2YXRlIGdldERldmljZUJ5V2lkdGgoKTogJ2Rlc2t0b3AnIHwgJ21vYmlsZScge1xuICAgICAgICByZXR1cm4gKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5pbm5lcldpZHRoIDwgNzUwKSA/ICdtb2JpbGUnIDogJ2Rlc2t0b3AnO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNNb2JpbGUgPSAoKSA9PiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpICYmIHdpbmRvdy5pbm5lcldpZHRoIDwgNzUwO1xuXG4gICAgcHJlZmV0Y2goZGV2aWNlPzogJ2Rlc2t0b3AnIHwgJ21vYmlsZScpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPHZvaWQ+KHJlc29sdmUgPT4ge1xuICAgICAgICAgICAgdGhpcy5jb25uLmdldCh0aGlzLmZvb3RlckFwaSgpKVxuICAgICAgICAgICAgICAgIC5waXBlKGNhdGNoRXJyb3IoKCkgPT4gb2YoW10pKSwgZmlyc3QoKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChyZXM6IGFueVtdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGxpc3QgPSBBcnJheS5pc0FycmF5KHJlcykgPyByZXMgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZDogJ2Rlc2t0b3AnIHwgJ21vYmlsZScgPSBkZXZpY2UgfHwgKHRoaXMuaXNNb2JpbGUoKSA/ICdtb2JpbGUnIDogJ2Rlc2t0b3AnKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hvc2VuID0gcGlja0Zvb3RlckZvckRldmljZShsaXN0IGFzIGFueSwgZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29scyA9IChjaG9zZW4/LmNvbHVtbnMgfHwgW10pLnNsaWNlKCkuc29ydCh0aGlzLmJ5UG9zKTtcbiAgICAgICAgICAgICAgICAgICAgY29scy5mb3JFYWNoKGMgPT4gYy5pdGVtcyAmJiBjLml0ZW1zLnNvcnQodGhpcy5ieVBvcykpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbHVtbnNTdWJqZWN0Lm5leHQoY29scyk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5leHRyYXNTdWJqZWN0Lm5leHQoKGNob3NlbiBhcyBGb290ZXJWaWV3IHwgdW5kZWZpbmVkKT8uZXh0cmFzID8/IG51bGwpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
|