ng-easycommerce 0.0.681 → 0.0.682
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 +14 -0
- package/bundles/ng-easycommerce.umd.js +870 -57
- 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/cart-ec/cart-ec.component.js +230 -2
- package/esm2015/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +6 -3
- package/esm2015/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +13 -4
- package/esm2015/lib/ec-component/index.js +4 -1
- package/esm2015/lib/ec-component/sidebar-ec/sidebar-ec.component.js +61 -1
- package/esm2015/lib/ec-component/widgets-ec/unit-promotion-price-ec/unit-promotion-price-ec.component.js +268 -0
- package/esm2015/lib/interfaces/cart-item.js +1 -1
- package/esm2015/lib/services/cart.service.js +186 -14
- package/esm2015/lib/services/checkout/checkout.service.js +2 -2
- package/esm2015/lib/utils/order-util.service.js +87 -1
- package/esm2015/public-api.js +2 -1
- package/esm5/lib/ec-component/cart-ec/cart-ec.component.js +236 -2
- package/esm5/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.js +6 -3
- package/esm5/lib/ec-component/checkout-ec/detail-checkout-block-ec/detail-checkout-block-ec.component.js +13 -4
- package/esm5/lib/ec-component/index.js +4 -1
- package/esm5/lib/ec-component/sidebar-ec/sidebar-ec.component.js +61 -1
- package/esm5/lib/ec-component/widgets-ec/unit-promotion-price-ec/unit-promotion-price-ec.component.js +248 -0
- package/esm5/lib/interfaces/cart-item.js +1 -1
- package/esm5/lib/services/cart.service.js +188 -14
- package/esm5/lib/services/checkout/checkout.service.js +2 -2
- package/esm5/lib/utils/order-util.service.js +88 -1
- package/esm5/public-api.js +2 -1
- package/fesm2015/ng-easycommerce.js +882 -59
- package/fesm2015/ng-easycommerce.js.map +1 -1
- package/fesm5/ng-easycommerce.js +871 -59
- package/fesm5/ng-easycommerce.js.map +1 -1
- package/lib/ec-component/cart-ec/cart-ec.component.d.ts +139 -0
- package/lib/ec-component/checkout-ec/dataform-ec/dataform-ec.component.d.ts +3 -1
- package/lib/ec-component/index.d.ts +1 -0
- package/lib/ec-component/sidebar-ec/sidebar-ec.component.d.ts +52 -0
- package/lib/ec-component/widgets-ec/unit-promotion-price-ec/unit-promotion-price-ec.component.d.ts +117 -0
- package/lib/interfaces/cart-item.d.ts +54 -0
- package/lib/services/cart.service.d.ts +98 -1
- package/lib/utils/order-util.service.d.ts +58 -0
- package/ng-easycommerce.metadata.json +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -0,0 +1,268 @@
|
|
|
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 { Component, HostListener, Input } from '@angular/core';
|
|
8
|
+
import { CartService } from '../../../services/cart.service';
|
|
9
|
+
let UnitPromotionPriceEcComponent =
|
|
10
|
+
/**
|
|
11
|
+
* Renderiza el precio unitario final de un ítem con soporte para promociones unitarias.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* Este componente resuelve la UX del precio neto con promociones unitarias:
|
|
15
|
+
* - precio final unitario visible
|
|
16
|
+
* - icono de información
|
|
17
|
+
* - popover desktop/mobile con el desglose de descuentos
|
|
18
|
+
*
|
|
19
|
+
* El badge `% OFF` y el precio tachado legacy quedan fuera del componente
|
|
20
|
+
* para que cada frontend pueda ubicarlos donde quiera.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* ```html
|
|
24
|
+
* <div class="price-block">
|
|
25
|
+
* <div class="discount-badge" *ngIf="getItemDiscount(item) as discount">{{ discount }}% OFF</div>
|
|
26
|
+
* <del *ngIf="shouldShowLegacyPriceOrigin(item)">{{ getStrikeThroughUnitPrice(item) | ecCurrencySymbol }}</del>
|
|
27
|
+
* <app-unit-promotion-price-ec [item]="item" [mobile]="true"></app-unit-promotion-price-ec>
|
|
28
|
+
* </div>
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
class UnitPromotionPriceEcComponent {
|
|
32
|
+
constructor(cartService) {
|
|
33
|
+
this.cartService = cartService;
|
|
34
|
+
/** Indica si el componente se está usando en un layout mobile. */
|
|
35
|
+
this.mobile = false;
|
|
36
|
+
this.summaryOpen = false;
|
|
37
|
+
this.summaryStyles = {};
|
|
38
|
+
this.supportsHover = false;
|
|
39
|
+
/** @returns `true` cuando el ítem tiene promociones unitarias informadas por backend. */
|
|
40
|
+
this.hasUnitPromotions = () => { var _a; return Boolean((_a = this.cartService.getItemPricing(this.item)) === null || _a === void 0 ? void 0 : _a.hasUnitPromotions); };
|
|
41
|
+
/** @returns `true` cuando el popover/resumen está abierto. */
|
|
42
|
+
this.isSummaryOpen = () => this.summaryOpen;
|
|
43
|
+
/** @returns El precio base histórico del ítem (`saleprice` si existe, si no `price`). */
|
|
44
|
+
this.getOriginalUnitPrice = () => { var _a; return Number(((_a = this.cartService.getItemPricing(this.item)) === null || _a === void 0 ? void 0 : _a.basePrice) || 0); };
|
|
45
|
+
/** @returns La suma de los descuentos/promociones unitarios aplicados al ítem. */
|
|
46
|
+
this.getUnitPromotionTotal = () => { var _a; return Number(((_a = this.cartService.getItemPricing(this.item)) === null || _a === void 0 ? void 0 : _a.unitPromotionTotal) || 0); };
|
|
47
|
+
/** @returns El precio unitario final luego de aplicar promociones unitarias. */
|
|
48
|
+
this.getFinalUnitPrice = () => { var _a; return Number(((_a = this.cartService.getItemPricing(this.item)) === null || _a === void 0 ? void 0 : _a.finalPrice) || 0); };
|
|
49
|
+
/** @returns El precio principal que se renderiza junto al icono de ayuda. */
|
|
50
|
+
this.getDisplayedUnitPrice = () => { var _a; return Number(((_a = this.cartService.getItemPricing(this.item)) === null || _a === void 0 ? void 0 : _a.finalPrice) || 0); };
|
|
51
|
+
/** @returns Etiqueta del bloque final dentro del popover. */
|
|
52
|
+
this.getUnitPromotionFinalPriceLabel = () => this.hasUnitPromotions() ? 'Precio final' : 'Precio unitario';
|
|
53
|
+
/** @returns Lista cruda de promociones unitarias a mostrar en el detalle. */
|
|
54
|
+
this.getUnitPromotions = () => { var _a; return Array.isArray((_a = this.item) === null || _a === void 0 ? void 0 : _a.unitPromotions) ? this.item.unitPromotions : []; };
|
|
55
|
+
/**
|
|
56
|
+
* Abre el popover al pasar el mouse en dispositivos con hover real.
|
|
57
|
+
*
|
|
58
|
+
* @param anchor Elemento usado como referencia visual del popover.
|
|
59
|
+
* @returns `void`
|
|
60
|
+
*/
|
|
61
|
+
this.handleMouseEnter = (anchor) => {
|
|
62
|
+
if (!this.supportsHover) {
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
this.openSummary(anchor);
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Cierra el popover al salir con el mouse en desktop.
|
|
69
|
+
*
|
|
70
|
+
* @returns `void`
|
|
71
|
+
*/
|
|
72
|
+
this.handleMouseLeave = () => {
|
|
73
|
+
if (!this.supportsHover) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
this.closeSummary();
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Alterna la apertura del popover con click/tap en dispositivos sin hover.
|
|
80
|
+
*
|
|
81
|
+
* @param anchor Elemento usado como ancla para posicionar el detalle.
|
|
82
|
+
* @param event Evento del click/tap sobre el bloque de precio.
|
|
83
|
+
* @returns `void`
|
|
84
|
+
*/
|
|
85
|
+
this.handlePriceClick = (anchor, event) => {
|
|
86
|
+
if (this.supportsHover) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
this.toggleSummary(anchor, event);
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* Alterna manualmente el estado del resumen.
|
|
93
|
+
*
|
|
94
|
+
* @param anchor Elemento usado como ancla visual del popover.
|
|
95
|
+
* @param event Evento que dispara la interacción.
|
|
96
|
+
* @returns `void`
|
|
97
|
+
*/
|
|
98
|
+
this.toggleSummary = (anchor, event) => {
|
|
99
|
+
event.preventDefault();
|
|
100
|
+
event.stopPropagation();
|
|
101
|
+
if (!this.hasUnitPromotions()) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (this.isSummaryOpen()) {
|
|
105
|
+
this.closeSummary();
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
this.openSummary(anchor);
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* Cierra el popover y limpia los estilos calculados para mobile.
|
|
112
|
+
*
|
|
113
|
+
* @returns `void`
|
|
114
|
+
*/
|
|
115
|
+
this.closeSummary = () => {
|
|
116
|
+
this.summaryOpen = false;
|
|
117
|
+
this.summaryStyles = {};
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Evita que un click dentro del popover se propague y lo cierre.
|
|
121
|
+
*
|
|
122
|
+
* @param event Evento del puntero.
|
|
123
|
+
* @returns `void`
|
|
124
|
+
*/
|
|
125
|
+
this.stopSummaryEvent = (event) => {
|
|
126
|
+
event.stopPropagation();
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Abre el resumen y recalcula su posición.
|
|
130
|
+
*
|
|
131
|
+
* @param anchor Elemento de referencia para el posicionamiento.
|
|
132
|
+
* @returns `void`
|
|
133
|
+
*/
|
|
134
|
+
this.openSummary = (anchor) => {
|
|
135
|
+
if (!this.hasUnitPromotions()) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
this.summaryOpen = true;
|
|
139
|
+
this.updateSummaryStyles(anchor);
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* Detecta si la interacción debe comportarse como desktop (`hover`) o mobile (`click`).
|
|
143
|
+
*
|
|
144
|
+
* @returns `void`
|
|
145
|
+
*/
|
|
146
|
+
this.updateViewportMode = () => {
|
|
147
|
+
this.supportsHover = typeof window !== 'undefined'
|
|
148
|
+
&& typeof window.matchMedia === 'function'
|
|
149
|
+
&& window.matchMedia('(hover: hover) and (pointer: fine)').matches
|
|
150
|
+
&& window.innerWidth >= 768;
|
|
151
|
+
};
|
|
152
|
+
/**
|
|
153
|
+
* Calcula estilos inline para que el resumen mobile quede dentro del viewport.
|
|
154
|
+
*
|
|
155
|
+
* @param anchor Elemento tocado por el usuario.
|
|
156
|
+
* @returns `void`
|
|
157
|
+
*/
|
|
158
|
+
this.updateSummaryStyles = (anchor) => {
|
|
159
|
+
if (this.supportsHover || !anchor || typeof window === 'undefined') {
|
|
160
|
+
this.summaryStyles = {};
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
const viewportPadding = 12;
|
|
164
|
+
const rect = anchor.getBoundingClientRect();
|
|
165
|
+
const estimatedPopupHeight = 260;
|
|
166
|
+
const nextTop = rect.bottom + 8;
|
|
167
|
+
const maxTop = window.innerHeight - estimatedPopupHeight - viewportPadding;
|
|
168
|
+
const top = Math.max(viewportPadding, Math.min(nextTop, maxTop));
|
|
169
|
+
this.summaryStyles = {
|
|
170
|
+
left: `${viewportPadding}px`,
|
|
171
|
+
right: `${viewportPadding}px`,
|
|
172
|
+
top: `${top}px`,
|
|
173
|
+
width: 'auto',
|
|
174
|
+
'max-width': 'none',
|
|
175
|
+
'max-height': `calc(100vh - ${top + viewportPadding}px)`,
|
|
176
|
+
overflow: 'auto',
|
|
177
|
+
position: 'fixed'
|
|
178
|
+
};
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Inicializa el modo de interacción según el dispositivo actual.
|
|
183
|
+
*
|
|
184
|
+
* @returns `void`
|
|
185
|
+
*/
|
|
186
|
+
ngOnInit() {
|
|
187
|
+
this.updateViewportMode();
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Cierra el resumen cuando se hace click fuera del componente en desktop.
|
|
191
|
+
*
|
|
192
|
+
* @returns `void`
|
|
193
|
+
*/
|
|
194
|
+
handleDocumentClick() {
|
|
195
|
+
if (!this.supportsHover) {
|
|
196
|
+
return;
|
|
197
|
+
}
|
|
198
|
+
this.closeSummary();
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Recalcula el modo de interacción al cambiar el viewport.
|
|
202
|
+
*
|
|
203
|
+
* @returns `void`
|
|
204
|
+
*/
|
|
205
|
+
handleWindowResize() {
|
|
206
|
+
this.updateViewportMode();
|
|
207
|
+
this.closeSummary();
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Cierra el resumen en mobile al hacer scroll para evitar que quede desacoplado del trigger.
|
|
211
|
+
*
|
|
212
|
+
* @returns `void`
|
|
213
|
+
*/
|
|
214
|
+
handleWindowScroll() {
|
|
215
|
+
if (this.supportsHover) {
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
this.closeSummary();
|
|
219
|
+
}
|
|
220
|
+
};
|
|
221
|
+
UnitPromotionPriceEcComponent.ctorParameters = () => [
|
|
222
|
+
{ type: CartService }
|
|
223
|
+
];
|
|
224
|
+
__decorate([
|
|
225
|
+
Input()
|
|
226
|
+
], UnitPromotionPriceEcComponent.prototype, "item", void 0);
|
|
227
|
+
__decorate([
|
|
228
|
+
Input()
|
|
229
|
+
], UnitPromotionPriceEcComponent.prototype, "mobile", void 0);
|
|
230
|
+
__decorate([
|
|
231
|
+
HostListener('document:click')
|
|
232
|
+
], UnitPromotionPriceEcComponent.prototype, "handleDocumentClick", null);
|
|
233
|
+
__decorate([
|
|
234
|
+
HostListener('window:resize')
|
|
235
|
+
], UnitPromotionPriceEcComponent.prototype, "handleWindowResize", null);
|
|
236
|
+
__decorate([
|
|
237
|
+
HostListener('window:scroll')
|
|
238
|
+
], UnitPromotionPriceEcComponent.prototype, "handleWindowScroll", null);
|
|
239
|
+
UnitPromotionPriceEcComponent = __decorate([
|
|
240
|
+
Component({
|
|
241
|
+
selector: 'app-unit-promotion-price-ec',
|
|
242
|
+
template: "<div\n class=\"ec-unit-promotion-price\"\n [class.ec-unit-promotion-price--mobile]=\"mobile\"\n [class.ec-unit-promotion-price--desktop]=\"!mobile\"\n>\n <div class=\"ec-unit-promotion-price__detail\">\n <div\n class=\"ec-unit-promotion-price__current-wrapper\"\n #priceAnchor\n (mouseenter)=\"handleMouseEnter(priceAnchor)\"\n (mouseleave)=\"handleMouseLeave()\"\n (click)=\"handlePriceClick(priceAnchor, $event)\"\n >\n <span\n class=\"ec-unit-promotion-price__current\"\n [class.ec-unit-promotion-price__current--clickable]=\"hasUnitPromotions() && !supportsHover\"\n >\n <strong class=\"ec-unit-promotion-price__value\">{{ getDisplayedUnitPrice() | ecCurrencySymbol }}</strong>\n\n <button\n *ngIf=\"hasUnitPromotions()\"\n type=\"button\"\n class=\"ec-unit-promotion-price__trigger\"\n [attr.aria-expanded]=\"isSummaryOpen()\"\n aria-label=\"Ver detalle de promociones unitarias\"\n (click)=\"toggleSummary(priceAnchor, $event)\"\n >\n <i class=\"bi bi-info-circle ec-unit-promotion-price__icon\"></i>\n </button>\n </span>\n\n <ng-container *ngIf=\"supportsHover && isSummaryOpen()\">\n <ng-container *ngTemplateOutlet=\"summaryTemplate\"></ng-container>\n </ng-container>\n </div>\n </div>\n\n <ng-container *ngIf=\"mobile && !supportsHover && isSummaryOpen()\">\n <button\n type=\"button\"\n class=\"ec-unit-promotion-price__backdrop\"\n aria-label=\"Cerrar detalle de promociones unitarias\"\n (click)=\"closeSummary()\"\n ></button>\n\n <ng-container *ngTemplateOutlet=\"summaryTemplate\"></ng-container>\n </ng-container>\n</div>\n\n<ng-template #summaryTemplate>\n <div\n class=\"ec-unit-promotion-price__summary\"\n [class.ec-unit-promotion-price__summary--mobile]=\"mobile\"\n [ngStyle]=\"summaryStyles\"\n (click)=\"stopSummaryEvent($event)\"\n >\n <div class=\"ec-unit-promotion-price__row ec-unit-promotion-price__row--original\">\n <span>Precio original</span>\n <span>{{ getOriginalUnitPrice() | ecCurrencySymbol }}</span>\n </div>\n\n <div class=\"ec-unit-promotion-price__row\" *ngFor=\"let promotion of getUnitPromotions()\">\n <span>{{ promotion.name }}</span>\n <span>{{ promotion.amount | ecCurrencySymbol }}</span>\n </div>\n\n <div class=\"ec-unit-promotion-price__divider\"></div>\n\n <div class=\"ec-unit-promotion-price__row ec-unit-promotion-price__row--total\">\n <span>Total descuentos</span>\n <span>{{ getUnitPromotionTotal() | ecCurrencySymbol }}</span>\n </div>\n\n <div class=\"ec-unit-promotion-price__row ec-unit-promotion-price__row--final\">\n <span>{{ getUnitPromotionFinalPriceLabel() }}</span>\n <span>{{ getFinalUnitPrice() | ecCurrencySymbol }}</span>\n </div>\n </div>\n</ng-template>\n",
|
|
243
|
+
styles: [":host{display:inline-block;--ec-unit-promotion-current-gap:0.35rem;--ec-unit-promotion-current-font-size:1.25rem;--ec-unit-promotion-current-font-weight:700;--ec-unit-promotion-current-color:inherit;--ec-unit-promotion-icon-color:#6c757d;--ec-unit-promotion-icon-size:0.95rem;--ec-unit-promotion-summary-bg:#ffffff;--ec-unit-promotion-summary-shadow:0 12px 28px rgba(0, 0, 0, 0.18);--ec-unit-promotion-summary-padding:1rem 1.1rem;--ec-unit-promotion-summary-min-width:18rem;--ec-unit-promotion-summary-width:22rem;--ec-unit-promotion-summary-max-width:84vw;--ec-unit-promotion-summary-z-index:20;--ec-unit-promotion-row-color:#333333;--ec-unit-promotion-row-font-size:0.95rem;--ec-unit-promotion-row-line-height:1.35;--ec-unit-promotion-original-color:#c24a2a;--ec-unit-promotion-total-color:#16347a;--ec-unit-promotion-divider-color:#d9d9d9}.ec-unit-promotion-price{display:inline-flex;align-items:center}.ec-unit-promotion-price__detail{position:relative;display:inline-flex;flex-direction:column;align-items:flex-start}.ec-unit-promotion-price__current-wrapper{position:relative}.ec-unit-promotion-price__current{display:inline-flex;align-items:center;gap:var(--ec-unit-promotion-current-gap);color:var(--ec-unit-promotion-current-color);font-size:var(--ec-unit-promotion-current-font-size)}.ec-unit-promotion-price__current--clickable{cursor:pointer}.ec-unit-promotion-price__value{display:inline-flex}.ec-unit-promotion-price__current strong{font-weight:var(--ec-unit-promotion-current-font-weight)}.ec-unit-promotion-price__trigger{align-items:center;background:0 0;border:0;cursor:pointer;display:inline-flex;justify-content:center;padding:0}.ec-unit-promotion-price__icon{color:var(--ec-unit-promotion-icon-color);cursor:pointer;font-size:var(--ec-unit-promotion-icon-size);line-height:1}.ec-unit-promotion-price__summary{background:var(--ec-unit-promotion-summary-bg);box-shadow:var(--ec-unit-promotion-summary-shadow);min-width:var(--ec-unit-promotion-summary-min-width);padding:var(--ec-unit-promotion-summary-padding);position:absolute;right:0;top:calc(100% + .35rem);width:var(--ec-unit-promotion-summary-width);max-width:var(--ec-unit-promotion-summary-max-width);z-index:var(--ec-unit-promotion-summary-z-index)}.ec-unit-promotion-price__summary::before{background:var(--ec-unit-promotion-summary-bg);content:'';height:.9rem;position:absolute;right:.9rem;top:-.35rem;transform:rotate(45deg);width:.9rem}.ec-unit-promotion-price__summary--mobile{position:fixed;max-width:none;min-width:0;width:auto}.ec-unit-promotion-price__summary--mobile::before{display:none}.ec-unit-promotion-price__backdrop{background:0 0;border:0;inset:0;padding:0;position:fixed;z-index:calc(var(--ec-unit-promotion-summary-z-index) - 1)}.ec-unit-promotion-price__row{align-items:flex-start;color:var(--ec-unit-promotion-row-color);-moz-column-gap:.75rem;column-gap:.75rem;display:flex;font-size:var(--ec-unit-promotion-row-font-size);justify-content:space-between;line-height:var(--ec-unit-promotion-row-line-height)}.ec-unit-promotion-price__row+.ec-unit-promotion-price__row{margin-top:.65rem}.ec-unit-promotion-price__row span:first-child{flex:1 1 auto;font-weight:500}.ec-unit-promotion-price__row span:last-child{flex:0 0 auto;text-align:right;white-space:nowrap}.ec-unit-promotion-price__row--original{color:var(--ec-unit-promotion-original-color)}.ec-unit-promotion-price__row--final,.ec-unit-promotion-price__row--total{color:var(--ec-unit-promotion-total-color);font-weight:700}.ec-unit-promotion-price__divider{border-top:1px solid var(--ec-unit-promotion-divider-color);margin:.85rem 0}"]
|
|
244
|
+
})
|
|
245
|
+
/**
|
|
246
|
+
* Renderiza el precio unitario final de un ítem con soporte para promociones unitarias.
|
|
247
|
+
*
|
|
248
|
+
* @remarks
|
|
249
|
+
* Este componente resuelve la UX del precio neto con promociones unitarias:
|
|
250
|
+
* - precio final unitario visible
|
|
251
|
+
* - icono de información
|
|
252
|
+
* - popover desktop/mobile con el desglose de descuentos
|
|
253
|
+
*
|
|
254
|
+
* El badge `% OFF` y el precio tachado legacy quedan fuera del componente
|
|
255
|
+
* para que cada frontend pueda ubicarlos donde quiera.
|
|
256
|
+
*
|
|
257
|
+
* @example
|
|
258
|
+
* ```html
|
|
259
|
+
* <div class="price-block">
|
|
260
|
+
* <div class="discount-badge" *ngIf="getItemDiscount(item) as discount">{{ discount }}% OFF</div>
|
|
261
|
+
* <del *ngIf="shouldShowLegacyPriceOrigin(item)">{{ getStrikeThroughUnitPrice(item) | ecCurrencySymbol }}</del>
|
|
262
|
+
* <app-unit-promotion-price-ec [item]="item" [mobile]="true"></app-unit-promotion-price-ec>
|
|
263
|
+
* </div>
|
|
264
|
+
* ```
|
|
265
|
+
*/
|
|
266
|
+
], UnitPromotionPriceEcComponent);
|
|
267
|
+
export { UnitPromotionPriceEcComponent };
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC1wcm9tb3Rpb24tcHJpY2UtZWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2VjLWNvbXBvbmVudC93aWRnZXRzLWVjL3VuaXQtcHJvbW90aW9uLXByaWNlLWVjL3VuaXQtcHJvbW90aW9uLXByaWNlLWVjLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBNEI3RCxJQUFhLDZCQUE2QjtBQXJCMUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0JHO0FBQ0gsTUFBYSw2QkFBNkI7SUFXdEMsWUFBbUIsV0FBd0I7UUFBeEIsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFQM0Msa0VBQWtFO1FBQ3pELFdBQU0sR0FBWSxLQUFLLENBQUM7UUFFMUIsZ0JBQVcsR0FBWSxLQUFLLENBQUM7UUFDN0Isa0JBQWEsR0FBOEIsRUFBRSxDQUFDO1FBQzlDLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBYXRDLHlGQUF5RjtRQUN6RixzQkFBaUIsR0FBRyxHQUFZLEVBQUUsV0FBQyxPQUFBLE9BQU8sT0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBDQUFFLGlCQUFpQixDQUFDLENBQUEsRUFBQSxDQUFDO1FBRTFHLDhEQUE4RDtRQUM5RCxrQkFBYSxHQUFHLEdBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFFaEQseUZBQXlGO1FBQ3pGLHlCQUFvQixHQUFHLEdBQVcsRUFBRSxXQUFDLE9BQUEsTUFBTSxDQUFDLE9BQUEsSUFBSSxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQywwQ0FBRSxTQUFT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QUFRRDtJQURDLFlBQVksQ0FBQyxlQUFlLENBQUM7dUVBTzdCO0FBeEtRLDZCQUE2QjtJQTFCekMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLDZCQUE2QjtRQUN2Qyx5dEdBQXVEOztLQUUxRCxDQUFDO0lBQ0Y7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09Bb0JHO0dBQ1UsNkJBQTZCLENBbU96QztTQW5PWSw2QkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FydFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9jYXJ0LnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FwcC11bml0LXByb21vdGlvbi1wcmljZS1lYycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3VuaXQtcHJvbW90aW9uLXByaWNlLWVjLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91bml0LXByb21vdGlvbi1wcmljZS1lYy5jb21wb25lbnQuc2NzcyddXG59KVxuLyoqXG4gKiBSZW5kZXJpemEgZWwgcHJlY2lvIHVuaXRhcmlvIGZpbmFsIGRlIHVuIMOtdGVtIGNvbiBzb3BvcnRlIHBhcmEgcHJvbW9jaW9uZXMgdW5pdGFyaWFzLlxuICpcbiAqIEByZW1hcmtzXG4gKiBFc3RlIGNvbXBvbmVudGUgcmVzdWVsdmUgbGEgVVggZGVsIHByZWNpbyBuZXRvIGNvbiBwcm9tb2Npb25lcyB1bml0YXJpYXM6XG4gKiAtIHByZWNpbyBmaW5hbCB1bml0YXJpbyB2aXNpYmxlXG4gKiAtIGljb25vIGRlIGluZm9ybWFjacOzblxuICogLSBwb3BvdmVyIGRlc2t0b3AvbW9iaWxlIGNvbiBlbCBkZXNnbG9zZSBkZSBkZXNjdWVudG9zXG4gKlxuICogRWwgYmFkZ2UgYCUgT0ZGYCB5IGVsIHByZWNpbyB0YWNoYWRvIGxlZ2FjeSBxdWVkYW4gZnVlcmEgZGVsIGNvbXBvbmVudGVcbiAqIHBhcmEgcXVlIGNhZGEgZnJvbnRlbmQgcHVlZGEgdWJpY2FybG9zIGRvbmRlIHF1aWVyYS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPGRpdiBjbGFzcz1cInByaWNlLWJsb2NrXCI+XG4gKiAgIDxkaXYgY2xhc3M9XCJkaXNjb3VudC1iYWRnZVwiICpuZ0lmPVwiZ2V0SXRlbURpc2NvdW50KGl0ZW0pIGFzIGRpc2NvdW50XCI+e3sgZGlzY291bnQgfX0lIE9GRjwvZGl2PlxuICogICA8ZGVsICpuZ0lmPVwic2hvdWxkU2hvd0xlZ2FjeVByaWNlT3JpZ2luKGl0ZW0pXCI+e3sgZ2V0U3RyaWtlVGhyb3VnaFVuaXRQcmljZShpdGVtKSB8IGVjQ3VycmVuY3lTeW1ib2wgfX08L2RlbD5cbiAqICAgPGFwcC11bml0LXByb21vdGlvbi1wcmljZS1lYyBbaXRlbV09XCJpdGVtXCIgW21vYmlsZV09XCJ0cnVlXCI+PC9hcHAtdW5pdC1wcm9tb3Rpb24tcHJpY2UtZWM+XG4gKiA8L2Rpdj5cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgVW5pdFByb21vdGlvblByaWNlRWNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gICAgLyoqIMONdGVtIGRlbCBjYXJyaXRvIG5vcm1hbGl6YWRvIHF1ZSBzZSB2YSBhIHJlbmRlcml6YXIuICovXG4gICAgQElucHV0KCkgaXRlbTogYW55O1xuICAgIC8qKiBJbmRpY2Egc2kgZWwgY29tcG9uZW50ZSBzZSBlc3TDoSB1c2FuZG8gZW4gdW4gbGF5b3V0IG1vYmlsZS4gKi9cbiAgICBASW5wdXQoKSBtb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHB1YmxpYyBzdW1tYXJ5T3BlbjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBzdW1tYXJ5U3R5bGVzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG4gICAgcHVibGljIHN1cHBvcnRzSG92ZXI6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBjYXJ0U2VydmljZTogQ2FydFNlcnZpY2UpIHsgfVxuXG4gICAgLyoqXG4gICAgICogSW5pY2lhbGl6YSBlbCBtb2RvIGRlIGludGVyYWNjacOzbiBzZWfDum4gZWwgZGlzcG9zaXRpdm8gYWN0dWFsLlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHZvaWRgXG4gICAgICovXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnRNb2RlKCk7XG4gICAgfVxuXG4gICAgLyoqIEByZXR1cm5zIGB0cnVlYCBjdWFuZG8gZWwgw610ZW0gdGllbmUgcHJvbW9jaW9uZXMgdW5pdGFyaWFzIGluZm9ybWFkYXMgcG9yIGJhY2tlbmQuICovXG4gICAgaGFzVW5pdFByb21vdGlvbnMgPSAoKTogYm9vbGVhbiA9PiBCb29sZWFuKHRoaXMuY2FydFNlcnZpY2UuZ2V0SXRlbVByaWNpbmcodGhpcy5pdGVtKT8uaGFzVW5pdFByb21vdGlvbnMpO1xuXG4gICAgLyoqIEByZXR1cm5zIGB0cnVlYCBjdWFuZG8gZWwgcG9wb3Zlci9yZXN1bWVuIGVzdMOhIGFiaWVydG8uICovXG4gICAgaXNTdW1tYXJ5T3BlbiA9ICgpOiBib29sZWFuID0+IHRoaXMuc3VtbWFyeU9wZW47XG5cbiAgICAvKiogQHJldHVybnMgRWwgcHJlY2lvIGJhc2UgaGlzdMOzcmljbyBkZWwgw610ZW0gKGBzYWxlcHJpY2VgIHNpIGV4aXN0ZSwgc2kgbm8gYHByaWNlYCkuICovXG4gICAgZ2V0T3JpZ2luYWxVbml0UHJpY2UgPSAoKTogbnVtYmVyID0+IE51bWJlcih0aGlzLmNhcnRTZXJ2aWNlLmdldEl0ZW1QcmljaW5nKHRoaXMuaXRlbSk/LmJhc2VQcmljZSB8fCAwKTtcblxuICAgIC8qKiBAcmV0dXJucyBMYSBzdW1hIGRlIGxvcyBkZXNjdWVudG9zL3Byb21vY2lvbmVzIHVuaXRhcmlvcyBhcGxpY2Fkb3MgYWwgw610ZW0uICovXG4gICAgZ2V0VW5pdFByb21vdGlvblRvdGFsID0gKCk6IG51bWJlciA9PiBOdW1iZXIodGhpcy5jYXJ0U2VydmljZS5nZXRJdGVtUHJpY2luZyh0aGlzLml0ZW0pPy51bml0UHJvbW90aW9uVG90YWwgfHwgMCk7XG5cbiAgICAvKiogQHJldHVybnMgRWwgcHJlY2lvIHVuaXRhcmlvIGZpbmFsIGx1ZWdvIGRlIGFwbGljYXIgcHJvbW9jaW9uZXMgdW5pdGFyaWFzLiAqL1xuICAgIGdldEZpbmFsVW5pdFByaWNlID0gKCk6IG51bWJlciA9PiBOdW1iZXIodGhpcy5jYXJ0U2VydmljZS5nZXRJdGVtUHJpY2luZyh0aGlzLml0ZW0pPy5maW5hbFByaWNlIHx8IDApO1xuXG4gICAgLyoqIEByZXR1cm5zIEVsIHByZWNpbyBwcmluY2lwYWwgcXVlIHNlIHJlbmRlcml6YSBqdW50byBhbCBpY29ubyBkZSBheXVkYS4gKi9cbiAgICBnZXREaXNwbGF5ZWRVbml0UHJpY2UgPSAoKTogbnVtYmVyID0+IE51bWJlcih0aGlzLmNhcnRTZXJ2aWNlLmdldEl0ZW1QcmljaW5nKHRoaXMuaXRlbSk/LmZpbmFsUHJpY2UgfHwgMCk7XG5cbiAgICAvKiogQHJldHVybnMgRXRpcXVldGEgZGVsIGJsb3F1ZSBmaW5hbCBkZW50cm8gZGVsIHBvcG92ZXIuICovXG4gICAgZ2V0VW5pdFByb21vdGlvbkZpbmFsUHJpY2VMYWJlbCA9ICgpOiBzdHJpbmcgPT4gdGhpcy5oYXNVbml0UHJvbW90aW9ucygpID8gJ1ByZWNpbyBmaW5hbCcgOiAnUHJlY2lvIHVuaXRhcmlvJztcblxuICAgIC8qKiBAcmV0dXJucyBMaXN0YSBjcnVkYSBkZSBwcm9tb2Npb25lcyB1bml0YXJpYXMgYSBtb3N0cmFyIGVuIGVsIGRldGFsbGUuICovXG4gICAgZ2V0VW5pdFByb21vdGlvbnMgPSAoKTogYW55W10gPT4gQXJyYXkuaXNBcnJheSh0aGlzLml0ZW0/LnVuaXRQcm9tb3Rpb25zKSA/IHRoaXMuaXRlbS51bml0UHJvbW90aW9ucyA6IFtdO1xuXG4gICAgLyoqXG4gICAgICogQWJyZSBlbCBwb3BvdmVyIGFsIHBhc2FyIGVsIG1vdXNlIGVuIGRpc3Bvc2l0aXZvcyBjb24gaG92ZXIgcmVhbC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhbmNob3IgRWxlbWVudG8gdXNhZG8gY29tbyByZWZlcmVuY2lhIHZpc3VhbCBkZWwgcG9wb3Zlci5cbiAgICAgKiBAcmV0dXJucyBgdm9pZGBcbiAgICAgKi9cbiAgICBoYW5kbGVNb3VzZUVudGVyID0gKGFuY2hvcjogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnN1cHBvcnRzSG92ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3BlblN1bW1hcnkoYW5jaG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaWVycmEgZWwgcG9wb3ZlciBhbCBzYWxpciBjb24gZWwgbW91c2UgZW4gZGVza3RvcC5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB2b2lkYFxuICAgICAqL1xuICAgIGhhbmRsZU1vdXNlTGVhdmUgPSAoKTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5zdXBwb3J0c0hvdmVyKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNsb3NlU3VtbWFyeSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEFsdGVybmEgbGEgYXBlcnR1cmEgZGVsIHBvcG92ZXIgY29uIGNsaWNrL3RhcCBlbiBkaXNwb3NpdGl2b3Mgc2luIGhvdmVyLlxuICAgICAqXG4gICAgICogQHBhcmFtIGFuY2hvciBFbGVtZW50byB1c2FkbyBjb21vIGFuY2xhIHBhcmEgcG9zaWNpb25hciBlbCBkZXRhbGxlLlxuICAgICAqIEBwYXJhbSBldmVudCBFdmVudG8gZGVsIGNsaWNrL3RhcCBzb2JyZSBlbCBibG9xdWUgZGUgcHJlY2lvLlxuICAgICAqIEByZXR1cm5zIGB2b2lkYFxuICAgICAqL1xuICAgIGhhbmRsZVByaWNlQ2xpY2sgPSAoYW5jaG9yOiBIVE1MRWxlbWVudCwgZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGlmICh0aGlzLnN1cHBvcnRzSG92ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudG9nZ2xlU3VtbWFyeShhbmNob3IsIGV2ZW50KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBbHRlcm5hIG1hbnVhbG1lbnRlIGVsIGVzdGFkbyBkZWwgcmVzdW1lbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhbmNob3IgRWxlbWVudG8gdXNhZG8gY29tbyBhbmNsYSB2aXN1YWwgZGVsIHBvcG92ZXIuXG4gICAgICogQHBhcmFtIGV2ZW50IEV2ZW50byBxdWUgZGlzcGFyYSBsYSBpbnRlcmFjY2nDs24uXG4gICAgICogQHJldHVybnMgYHZvaWRgXG4gICAgICovXG4gICAgdG9nZ2xlU3VtbWFyeSA9IChhbmNob3I6IEhUTUxFbGVtZW50LCBldmVudDogRXZlbnQpOiB2b2lkID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmhhc1VuaXRQcm9tb3Rpb25zKCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzU3VtbWFyeU9wZW4oKSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZVN1bW1hcnkoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMub3BlblN1bW1hcnkoYW5jaG9yKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDaWVycmEgZWwgcG9wb3ZlciB5IGxpbXBpYSBsb3MgZXN0aWxvcyBjYWxjdWxhZG9zIHBhcmEgbW9iaWxlLlxuICAgICAqXG4gICAgICogQHJldHVybnMgYHZvaWRgXG4gICAgICovXG4gICAgY2xvc2VTdW1tYXJ5ID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnN1bW1hcnlPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc3VtbWFyeVN0eWxlcyA9IHt9O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEV2aXRhIHF1ZSB1biBjbGljayBkZW50cm8gZGVsIHBvcG92ZXIgc2UgcHJvcGFndWUgeSBsbyBjaWVycmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZXZlbnQgRXZlbnRvIGRlbCBwdW50ZXJvLlxuICAgICAqIEByZXR1cm5zIGB2b2lkYFxuICAgICAqL1xuICAgIHN0b3BTdW1tYXJ5RXZlbnQgPSAoZXZlbnQ6IEV2ZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENpZXJyYSBlbCByZXN1bWVuIGN1YW5kbyBzZSBoYWNlIGNsaWNrIGZ1ZXJhIGRlbCBjb21wb25lbnRlIGVuIGRlc2t0b3AuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdm9pZGBcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycpXG4gICAgaGFuZGxlRG9jdW1lbnRDbGljaygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnN1cHBvcnRzSG92ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2VTdW1tYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmVjYWxjdWxhIGVsIG1vZG8gZGUgaW50ZXJhY2Npw7NuIGFsIGNhbWJpYXIgZWwgdmlld3BvcnQuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdm9pZGBcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJylcbiAgICBoYW5kbGVXaW5kb3dSZXNpemUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlVmlld3BvcnRNb2RlKCk7XG4gICAgICAgIHRoaXMuY2xvc2VTdW1tYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2llcnJhIGVsIHJlc3VtZW4gZW4gbW9iaWxlIGFsIGhhY2VyIHNjcm9sbCBwYXJhIGV2aXRhciBxdWUgcXVlZGUgZGVzYWNvcGxhZG8gZGVsIHRyaWdnZXIuXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBgdm9pZGBcbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJylcbiAgICBoYW5kbGVXaW5kb3dTY3JvbGwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnN1cHBvcnRzSG92ZXIpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2xvc2VTdW1tYXJ5KCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWJyZSBlbCByZXN1bWVuIHkgcmVjYWxjdWxhIHN1IHBvc2ljacOzbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBhbmNob3IgRWxlbWVudG8gZGUgcmVmZXJlbmNpYSBwYXJhIGVsIHBvc2ljaW9uYW1pZW50by5cbiAgICAgKiBAcmV0dXJucyBgdm9pZGBcbiAgICAgKi9cbiAgICBwcml2YXRlIG9wZW5TdW1tYXJ5ID0gKGFuY2hvcj86IEhUTUxFbGVtZW50KTogdm9pZCA9PiB7XG4gICAgICAgIGlmICghdGhpcy5oYXNVbml0UHJvbW90aW9ucygpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnN1bW1hcnlPcGVuID0gdHJ1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVTdW1tYXJ5U3R5bGVzKGFuY2hvcik7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZWN0YSBzaSBsYSBpbnRlcmFjY2nDs24gZGViZSBjb21wb3J0YXJzZSBjb21vIGRlc2t0b3AgKGBob3ZlcmApIG8gbW9iaWxlIChgY2xpY2tgKS5cbiAgICAgKlxuICAgICAqIEByZXR1cm5zIGB2b2lkYFxuICAgICAqL1xuICAgIHByaXZhdGUgdXBkYXRlVmlld3BvcnRNb2RlID0gKCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLnN1cHBvcnRzSG92ZXIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJ1xuICAgICAgICAgICAgJiYgdHlwZW9mIHdpbmRvdy5tYXRjaE1lZGlhID09PSAnZnVuY3Rpb24nXG4gICAgICAgICAgICAmJiB3aW5kb3cubWF0Y2hNZWRpYSgnKGhvdmVyOiBob3ZlcikgYW5kIChwb2ludGVyOiBmaW5lKScpLm1hdGNoZXNcbiAgICAgICAgICAgICYmIHdpbmRvdy5pbm5lcldpZHRoID49IDc2ODtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDYWxjdWxhIGVzdGlsb3MgaW5saW5lIHBhcmEgcXVlIGVsIHJlc3VtZW4gbW9iaWxlIHF1ZWRlIGRlbnRybyBkZWwgdmlld3BvcnQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gYW5jaG9yIEVsZW1lbnRvIHRvY2FkbyBwb3IgZWwgdXN1YXJpby5cbiAgICAgKiBAcmV0dXJucyBgdm9pZGBcbiAgICAgKi9cbiAgICBwcml2YXRlIHVwZGF0ZVN1bW1hcnlTdHlsZXMgPSAoYW5jaG9yPzogSFRNTEVsZW1lbnQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKHRoaXMuc3VwcG9ydHNIb3ZlciB8fCAhYW5jaG9yIHx8IHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICB0aGlzLnN1bW1hcnlTdHlsZXMgPSB7fTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZpZXdwb3J0UGFkZGluZyA9IDEyO1xuICAgICAgICBjb25zdCByZWN0ID0gYW5jaG9yLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICBjb25zdCBlc3RpbWF0ZWRQb3B1cEhlaWdodCA9IDI2MDtcbiAgICAgICAgY29uc3QgbmV4dFRvcCA9IHJlY3QuYm90dG9tICsgODtcbiAgICAgICAgY29uc3QgbWF4VG9wID0gd2luZG93LmlubmVySGVpZ2h0IC0gZXN0aW1hdGVkUG9wdXBIZWlnaHQgLSB2aWV3cG9ydFBhZGRpbmc7XG4gICAgICAgIGNvbnN0IHRvcCA9IE1hdGgubWF4KHZpZXdwb3J0UGFkZGluZywgTWF0aC5taW4obmV4dFRvcCwgbWF4VG9wKSk7XG5cbiAgICAgICAgdGhpcy5zdW1tYXJ5U3R5bGVzID0ge1xuICAgICAgICAgICAgbGVmdDogYCR7dmlld3BvcnRQYWRkaW5nfXB4YCxcbiAgICAgICAgICAgIHJpZ2h0OiBgJHt2aWV3cG9ydFBhZGRpbmd9cHhgLFxuICAgICAgICAgICAgdG9wOiBgJHt0b3B9cHhgLFxuICAgICAgICAgICAgd2lkdGg6ICdhdXRvJyxcbiAgICAgICAgICAgICdtYXgtd2lkdGgnOiAnbm9uZScsXG4gICAgICAgICAgICAnbWF4LWhlaWdodCc6IGBjYWxjKDEwMHZoIC0gJHt0b3AgKyB2aWV3cG9ydFBhZGRpbmd9cHgpYCxcbiAgICAgICAgICAgIG92ZXJmbG93OiAnYXV0bycsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2ZpeGVkJ1xuICAgICAgICB9O1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FydC1pdGVtLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmctZWFzeWNvbW1lcmNlLyIsInNvdXJjZXMiOlsibGliL2ludGVyZmFjZXMvY2FydC1pdGVtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgeyBMb3QgfSBmcm9tICcuL2xvdCc7XG5pbXBvcnQgeyBQcm9kdWN0IH0gZnJvbSAnLi9wcm9kdWN0JztcblxuLyoqXG4gKiBQcm9tb2Npw7NuIGFwbGljYWRhIGEgdW5hIHVuaWRhZCBkZWwgcHJvZHVjdG8uXG4gKlxuICogQHJlbWFya3NcbiAqIEVsIGJhY2tlbmQgbnVldm8gaW5mb3JtYSBlc3RhcyBwcm9tb2Npb25lcyBlbiBgaXRlbXNbXS51bml0UHJvbW90aW9uc2AuXG4gKiBTdXMgbW9udG9zIHNvbiBuZWdhdGl2b3MgY3VhbmRvIHJlcHJlc2VudGFuIGRlc2N1ZW50b3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2FydEl0ZW1Qcm9tb3Rpb24ge1xuICAgIC8qKiBNb250byBmaXJtYWRvIGFwbGljYWRvIHNvYnJlIHVuYSB1bmlkYWQgZGVsIHByb2R1Y3RvLiAqL1xuICAgIGFtb3VudDogbnVtYmVyO1xuICAgIC8qKiBUaXBvIHTDqWNuaWNvIGRlIHByb21vY2nDs24gaW5mb3JtYWRvIHBvciBiYWNrZW5kLiAqL1xuICAgIHR5cGU6IHN0cmluZztcbiAgICAvKiogTm9tYnJlIGxlZ2libGUgZGUgbGEgcHJvbW9jacOzbiBvIGRlc2N1ZW50by4gKi9cbiAgICBuYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJlY2lvcyBkZWwgw610ZW0gbm9ybWFsaXphZG9zIHBvciBlbCBjb3JlIHBhcmEgZXZpdGFyIGR1cGxpY2FyIGzDs2dpY2EgZW4gY2FkYSBmcm9udGVuZC5cbiAqXG4gKiBAcmVtYXJrc1xuICogRXN0YSBlc3RydWN0dXJhIHNlcGFyYSB0cmVzIGNvbmNlcHRvcyBkaXN0aW50b3M6XG4gKiAtIGBiYXNlUHJpY2VgOiBwcmVjaW8gdW5pdGFyaW8gaGlzdMOzcmljbyBkZSBsYSB0YWJsYSAoYHNhbGVwcmljZWAgc2kgZXhpc3RlLCBzaSBubyBgcHJpY2VgKVxuICogLSBgc3RyaWtlUHJpY2VgOiBwcmVjaW8gdGFjaGFkbyBkZSBsYSBsw7NnaWNhIGxlZ2FjeSBgcHJpY2Uvc2FsZXByaWNlYFxuICogLSBgZmluYWxQcmljZWA6IHByZWNpbyB1bml0YXJpbyBuZXRvIGx1ZWdvIGRlIGFwbGljYXIgYHVuaXRQcm9tb3Rpb25zYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENhcnRJdGVtUHJpY2luZyB7XG4gICAgLyoqIFByZWNpbyB1bml0YXJpbyBiYXNlIHF1ZSB5YSB1c2FiYSBlbCBmcm9udGVuZCBhbnRlcyBkZSBzb3BvcnRhciBwcm9tb2Npb25lcyB1bml0YXJpYXMuICovXG4gICAgYmFzZVByaWNlOiBudW1iZXI7XG4gICAgLyoqIFByZWNpbyB1bml0YXJpbyB0YWNoYWRvLCBvIGBudWxsYCBjdWFuZG8gbm8gY29ycmVzcG9uZGUgbW9zdHJhcmxvLiAqL1xuICAgIHN0cmlrZVByaWNlOiBudW1iZXIgfCBudWxsO1xuICAgIC8qKiBQcmVjaW8gdW5pdGFyaW8gZmluYWwgbHVlZ28gZGUgYXBsaWNhciBwcm9tb2Npb25lcyBwb3IgdW5pZGFkLiAqL1xuICAgIGZpbmFsUHJpY2U6IG51bWJlcjtcbiAgICAvKiogU3VtYSBkZSB0b2RvcyBsb3MgZGVzY3VlbnRvcy9wcm9tb2Npb25lcyB1bml0YXJpb3MuICovXG4gICAgdW5pdFByb21vdGlvblRvdGFsOiBudW1iZXI7XG4gICAgLyoqIEluZGljYSBzaSBlbCDDrXRlbSB0aWVuZSBwcmVjaW8gdGFjaGFkbyBsZWdhY3kuICovXG4gICAgaGFzU3RyaWtlUHJpY2U6IGJvb2xlYW47XG4gICAgLyoqIEluZGljYSBzaSBlbCDDrXRlbSByZWNpYmnDsyBwcm9tb2Npb25lcyB1bml0YXJpYXMgZGVzZGUgYmFja2VuZC4gKi9cbiAgICBoYXNVbml0UHJvbW90aW9uczogYm9vbGVhbjtcbiAgICAvKiogUG9yY2VudGFqZSBkZSBkZXNjdWVudG8gbGVnYWN5IGEgbW9zdHJhciBlbiBiYWRnZSAoYHByaWNlYCB2cyBgc2FsZXByaWNlYCkuICovXG4gICAgZGlzY291bnRQZXJjZW50OiBudW1iZXI7XG4gICAgLyoqIFBvcmNlbnRhamUgZWZlY3Rpdm8gdXNhbmRvIGNvbW8gcmVmZXJlbmNpYSBlbCBwcmVjaW8gZmluYWwgdW5pdGFyaW8gbHVlZ28gZGUgcHJvbW9jaW9uZXMuICovXG4gICAgZWZmZWN0aXZlRGlzY291bnRQZXJjZW50OiBudW1iZXI7XG59XG5cbi8qKlxuICogw410ZW0gZGVsIGNhcnJpdG8gbm9ybWFsaXphZG8gcG9yIGVsIGNvcmUuXG4gKlxuICogQHJlbWFya3NcbiAqIEVzdGUgY29udHJhdG8gZXMgZWwgcXVlIGNvbnN1bWVuIGxvcyBjb21wb25lbnRlcyBkZSBjYXJyaXRvLCBzaWRlYmFyIHkgY2hlY2tvdXQuXG4gKiBTZSBtYW50aWVuZSBjb21wYXRpYmxlIGNvbiBiYWNrZW5kcyB2aWVqb3M6IGN1YW5kbyBubyBleGlzdGUgYHVuaXRQcm9tb3Rpb25zYCxcbiAqIGVsIGNvcmUgY29tcGxldGEgYHByaWNpbmdgIHNpbiBhbHRlcmFyIGxhIHNlbcOhbnRpY2EgbGVnYWN5IGRlIGBwcm9kdWN0LnByaWNlYC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDYXJ0SXRlbSB7XG4gICAgcHJvZHVjdENvZGU6IGFueSxcbiAgICBwcm9kdWN0PzogUHJvZHVjdDtcbiAgICBxdWFudGl0eTogbnVtYmVyO1xuICAgIHZhcmlhbnRfaWQ6IG51bWJlcjtcbiAgICB0b3RhbDogbnVtYmVyO1xuICAgIC8qKiBQcm9tb2Npb25lcyB1bml0YXJpYXMgY3J1ZGFzIGRldnVlbHRhcyBwb3IgYmFja2VuZC4gKi9cbiAgICB1bml0UHJvbW90aW9ucz86IENhcnRJdGVtUHJvbW90aW9uW107XG4gICAgLyoqIFByZWNpb3MgZGVyaXZhZG9zIGxpc3RvcyBwYXJhIHVzYXIgZW4gbGEgVUkuICovXG4gICAgcHJpY2luZz86IENhcnRJdGVtUHJpY2luZztcbn1cbiJdfQ==
|