ng-easycommerce-v18 0.3.13 → 0.3.14-beta.1
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 +2 -7
- package/esm2022/lib/classes/filters/filter.mjs +27 -2
- package/esm2022/lib/constants/api.constants.service.mjs +28 -42
- package/esm2022/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.mjs +1 -5
- package/esm2022/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.mjs +1 -5
- package/esm2022/lib/ec-components/blocks-ec/block-products-ec/block-products-ec.component.mjs +5 -3
- package/esm2022/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.mjs +2 -6
- package/esm2022/lib/ec-components/header-ec/header-ec.component.mjs +34 -45
- package/esm2022/lib/ec-components/product-ec/product-ec.component.mjs +5 -95
- package/esm2022/lib/ec-components/related-products-ec/related-products-ec.component.mjs +6 -4
- package/esm2022/lib/ec-components/widgets-ec/index.mjs +1 -2
- package/esm2022/lib/ec-components/widgets-ec/magnizoom-ec/magnizoom-ec.component.mjs +4 -2
- package/esm2022/lib/ec-services/analytics/facebook-pixel.service.mjs +4 -2
- package/esm2022/lib/ec-services/analytics/google-analytics.service.mjs +4 -2
- package/esm2022/lib/ec-services/options.service.mjs +27 -3
- package/fesm2022/ng-easycommerce-v18.mjs +152 -348
- package/fesm2022/ng-easycommerce-v18.mjs.map +1 -1
- package/lib/constants/api.constants.service.d.ts +8 -23
- package/lib/ec-components/auth-ec/login-form-ec/login-form-ec.component.d.ts +0 -2
- package/lib/ec-components/auth-ec/register-form-ec/register-form-ec.component.d.ts +0 -2
- package/lib/ec-components/cart-ec/cart-item-ec/cart-item-ec.component.d.ts +0 -5
- package/lib/ec-components/header-ec/header-ec.component.d.ts +1 -5
- package/lib/ec-components/product-ec/product-ec.component.d.ts +1 -10
- package/lib/ec-components/widgets-ec/index.d.ts +0 -1
- package/lib/ec-services/options.service.d.ts +4 -0
- package/package.json +1 -1
- package/esm2022/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.mjs +0 -138
- package/lib/ec-components/widgets-ec/redsys-catch-ec/redsys-catch-ec.component.d.ts +0 -26
|
@@ -1,48 +1,33 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
/**
|
|
3
|
-
* Servicio que provee de datos
|
|
4
|
-
* @export
|
|
5
|
-
* @class ApiConstantsService
|
|
3
|
+
* Servicio que provee de datos relacionados con las peticiones a la API
|
|
6
4
|
*/
|
|
7
5
|
export declare class ApiConstantsService {
|
|
6
|
+
private ssrApiUrl;
|
|
8
7
|
private _localStorage;
|
|
9
8
|
private _translate;
|
|
10
|
-
/**
|
|
11
|
-
* Contiene los datos provisto por el frontend en el archivo environment.ts
|
|
12
|
-
*/
|
|
13
9
|
private environment;
|
|
14
|
-
|
|
15
|
-
* Canal actual del frontend
|
|
16
|
-
*/
|
|
17
|
-
get CHANNEL(): string;
|
|
18
|
-
set CHANNEL(value: string);
|
|
10
|
+
private platformId;
|
|
19
11
|
private _channel;
|
|
20
|
-
/**
|
|
21
|
-
* Locale actual del frontend
|
|
22
|
-
*/
|
|
23
12
|
LOCALE: string;
|
|
24
|
-
/**
|
|
25
|
-
* URL para las peticiones a shop-api
|
|
26
|
-
*/
|
|
27
13
|
readonly SHOP_API_URL: string;
|
|
14
|
+
readonly CMS_URL: string;
|
|
15
|
+
constructor(ssrApiUrl: string);
|
|
28
16
|
/**
|
|
29
|
-
*
|
|
17
|
+
* Canal actual del frontend
|
|
30
18
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
19
|
+
get CHANNEL(): string;
|
|
20
|
+
set CHANNEL(value: string);
|
|
33
21
|
/**
|
|
34
22
|
* URL del backend para realizar las peticiones
|
|
35
23
|
*/
|
|
36
24
|
get API_URL(): string;
|
|
37
25
|
/**
|
|
38
26
|
* Retorna la url base
|
|
39
|
-
* @returns {string}
|
|
40
27
|
*/
|
|
41
28
|
getUrlBase(): string;
|
|
42
29
|
/**
|
|
43
30
|
* Cambia el canal actual
|
|
44
|
-
* @param code
|
|
45
|
-
* @returns
|
|
46
31
|
*/
|
|
47
32
|
setChannel(code: string): void;
|
|
48
33
|
setLocale(locale: string): void;
|
|
@@ -6,7 +6,6 @@ export declare class LoginFormEcComponent {
|
|
|
6
6
|
private _formBuilder;
|
|
7
7
|
private _toastService;
|
|
8
8
|
private _router;
|
|
9
|
-
showPassword: boolean;
|
|
10
9
|
/**
|
|
11
10
|
* Parametro para indicar si tras loguear
|
|
12
11
|
* debe redireccionar o no.
|
|
@@ -39,7 +38,6 @@ export declare class LoginFormEcComponent {
|
|
|
39
38
|
* De lo contrario redirige al contenido de la variable `redirectTo`.
|
|
40
39
|
*/
|
|
41
40
|
redirectHome(): void;
|
|
42
|
-
togglePassword(): void;
|
|
43
41
|
static ɵfac: i0.ɵɵFactoryDeclaration<LoginFormEcComponent, never>;
|
|
44
42
|
static ɵcmp: i0.ɵɵComponentDeclaration<LoginFormEcComponent, "app-login-form-ec", never, { "redirect": { "alias": "redirect"; "required": false; }; "redirectTo": { "alias": "redirectTo"; "required": false; }; "inCart": { "alias": "inCart"; "required": false; }; }, { "ready": "ready"; }, never, never, true, never>;
|
|
45
43
|
}
|
|
@@ -8,7 +8,6 @@ export declare class RegisterFormEcComponent {
|
|
|
8
8
|
private _analyticsService;
|
|
9
9
|
private _formBuilder;
|
|
10
10
|
private channelConfigService;
|
|
11
|
-
showPassword: boolean;
|
|
12
11
|
/**
|
|
13
12
|
* Indica si debe redireccionar o se queda en la misma pantalla
|
|
14
13
|
*/
|
|
@@ -42,7 +41,6 @@ export declare class RegisterFormEcComponent {
|
|
|
42
41
|
* @returns
|
|
43
42
|
*/
|
|
44
43
|
register(event: Event): void;
|
|
45
|
-
togglePassword(): void;
|
|
46
44
|
static ɵfac: i0.ɵɵFactoryDeclaration<RegisterFormEcComponent, never>;
|
|
47
45
|
static ɵcmp: i0.ɵɵComponentDeclaration<RegisterFormEcComponent, "app-register-form-ec", never, { "redirect": { "alias": "redirect"; "required": false; }; }, { "ready": "ready"; }, never, never, true, never>;
|
|
48
46
|
}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { OnInit } from '@angular/core';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
|
-
import { Parameter } from '../../../interfaces';
|
|
4
2
|
import * as i0 from "@angular/core";
|
|
5
3
|
export declare class CartItemEcComponent implements OnInit {
|
|
6
4
|
item: any;
|
|
@@ -8,7 +6,6 @@ export declare class CartItemEcComponent implements OnInit {
|
|
|
8
6
|
private _cartService;
|
|
9
7
|
private _toastService;
|
|
10
8
|
private _constants;
|
|
11
|
-
private parametersService;
|
|
12
9
|
mediaUrl: string;
|
|
13
10
|
quantity: number;
|
|
14
11
|
variantsToShow: string[];
|
|
@@ -22,8 +19,6 @@ export declare class CartItemEcComponent implements OnInit {
|
|
|
22
19
|
getVariants(product: any): any;
|
|
23
20
|
createDiscountMessage(saleprice: number, price: number): string;
|
|
24
21
|
checkStock(product: any): any;
|
|
25
|
-
parameters$: Observable<Parameter[] | null>;
|
|
26
|
-
hasParams: (params: any, code: string) => any;
|
|
27
22
|
static ɵfac: i0.ɵɵFactoryDeclaration<CartItemEcComponent, never>;
|
|
28
23
|
static ɵcmp: i0.ɵɵComponentDeclaration<CartItemEcComponent, "app-cart-item-ec", never, { "item": { "alias": "item"; "required": true; }; "inSidebar": { "alias": "inSidebar"; "required": false; }; }, {}, never, never, true, never>;
|
|
29
24
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { MenuEcComponent } from '../abstractions-components';
|
|
2
|
-
import { Observable } from 'rxjs';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
/**
|
|
5
4
|
* Componente que se encarga de manejar la funcionalidad del Header.
|
|
@@ -14,15 +13,12 @@ export declare class HeaderEcComponent extends MenuEcComponent {
|
|
|
14
13
|
hidePrices: boolean;
|
|
15
14
|
private __authService;
|
|
16
15
|
private _channelService;
|
|
17
|
-
private changeDetector;
|
|
18
|
-
private appRouter;
|
|
19
|
-
private platformId;
|
|
20
|
-
logged$: Observable<boolean>;
|
|
21
16
|
isAuthenticated$: boolean;
|
|
22
17
|
constructor();
|
|
23
18
|
private coreConstantsService;
|
|
24
19
|
private router;
|
|
25
20
|
private cdr;
|
|
21
|
+
protected platformId: Object;
|
|
26
22
|
ngOnInit(): void;
|
|
27
23
|
ngAfterViewInit(): void;
|
|
28
24
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { EventEmitter, OnInit, Injector
|
|
1
|
+
import { EventEmitter, OnInit, Injector } from '@angular/core';
|
|
2
2
|
import { Product } from '../../interfaces';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
/**
|
|
@@ -8,10 +8,6 @@ import * as i0 from "@angular/core";
|
|
|
8
8
|
export declare class ProductEcComponent implements OnInit {
|
|
9
9
|
injector: Injector;
|
|
10
10
|
private routerService;
|
|
11
|
-
private _cartService;
|
|
12
|
-
private _toastService;
|
|
13
|
-
isAddingToCart: WritableSignal<boolean>;
|
|
14
|
-
quantity: WritableSignal<number>;
|
|
15
11
|
/**
|
|
16
12
|
* Navega al detalle del producto y sube al inicio de la página
|
|
17
13
|
* @param productId ID del producto
|
|
@@ -47,11 +43,6 @@ export declare class ProductEcComponent implements OnInit {
|
|
|
47
43
|
get shouldShowPrice(): boolean;
|
|
48
44
|
get hasDiscount(): boolean;
|
|
49
45
|
get discountPercentage(): number | null;
|
|
50
|
-
plus(stock?: number, multipleQuantity?: number): void;
|
|
51
|
-
less(multipleQuantity?: number): void;
|
|
52
|
-
addToCart(): void;
|
|
53
|
-
checkStock(stock: number): void;
|
|
54
|
-
onQuantityChange(event: Event): void;
|
|
55
46
|
static ɵfac: i0.ɵɵFactoryDeclaration<ProductEcComponent, never>;
|
|
56
47
|
static ɵcmp: i0.ɵɵComponentDeclaration<ProductEcComponent, "app-product-ec", never, { "product": { "alias": "product"; "required": true; }; "isProductBox": { "alias": "isProductBox"; "required": false; }; "isCollection": { "alias": "isCollection"; "required": false; }; }, { "loaded": "loaded"; }, never, never, true, never>;
|
|
57
48
|
}
|
package/package.json
CHANGED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { Component, Inject } from '@angular/core';
|
|
2
|
-
import { combineLatest } from 'rxjs';
|
|
3
|
-
import { ComponentHelper } from '../../../classes/component-helper';
|
|
4
|
-
import { CommonModule } from '@angular/common';
|
|
5
|
-
import { DOCUMENT } from '@angular/common';
|
|
6
|
-
import { LoadingFullEcComponent } from '../loading/loading-full-ec/loading-full-ec.component';
|
|
7
|
-
import * as i0 from "@angular/core";
|
|
8
|
-
import * as i1 from "@angular/router";
|
|
9
|
-
import * as i2 from "../../../ec-services";
|
|
10
|
-
import * as i3 from "@angular/common";
|
|
11
|
-
export class RedsysCatchEcComponent extends ComponentHelper {
|
|
12
|
-
activedRoute;
|
|
13
|
-
router;
|
|
14
|
-
checkoutService;
|
|
15
|
-
renderer;
|
|
16
|
-
elementRef;
|
|
17
|
-
document;
|
|
18
|
-
message = '';
|
|
19
|
-
subscription = null;
|
|
20
|
-
constructor(activedRoute, router, checkoutService, renderer, elementRef, document) {
|
|
21
|
-
super();
|
|
22
|
-
this.activedRoute = activedRoute;
|
|
23
|
-
this.router = router;
|
|
24
|
-
this.checkoutService = checkoutService;
|
|
25
|
-
this.renderer = renderer;
|
|
26
|
-
this.elementRef = elementRef;
|
|
27
|
-
this.document = document;
|
|
28
|
-
this.hideHeaderFooter();
|
|
29
|
-
this.ecOnConstruct();
|
|
30
|
-
}
|
|
31
|
-
ngOnInit() {
|
|
32
|
-
this.subscription = combineLatest([
|
|
33
|
-
this.activedRoute.params,
|
|
34
|
-
this.activedRoute.queryParams
|
|
35
|
-
]).subscribe(([queryRouter, queryParams]) => {
|
|
36
|
-
let state;
|
|
37
|
-
state = queryRouter['state'];
|
|
38
|
-
if (state && state === 'statuspayment') {
|
|
39
|
-
state = queryParams['status'];
|
|
40
|
-
}
|
|
41
|
-
console.log('PARAMETROS STATE -> ', state);
|
|
42
|
-
this.handlePaymentState(state, queryParams);
|
|
43
|
-
});
|
|
44
|
-
this.ecOnInit();
|
|
45
|
-
}
|
|
46
|
-
ngOnDestroy() {
|
|
47
|
-
if (this.subscription) {
|
|
48
|
-
this.subscription.unsubscribe();
|
|
49
|
-
}
|
|
50
|
-
this.showHeaderFooter();
|
|
51
|
-
// this.ecOnDestroy(); // Removido si no existe en ComponentHelper
|
|
52
|
-
}
|
|
53
|
-
hideHeaderFooter() {
|
|
54
|
-
// Usar Renderer2 en lugar de jQuery para manipular el DOM
|
|
55
|
-
const header = this.document.querySelector('header');
|
|
56
|
-
const footer = this.document.querySelector('footer');
|
|
57
|
-
if (header) {
|
|
58
|
-
this.renderer.setStyle(header, 'display', 'none');
|
|
59
|
-
}
|
|
60
|
-
if (footer) {
|
|
61
|
-
this.renderer.setStyle(footer, 'display', 'none');
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
showHeaderFooter() {
|
|
65
|
-
// Restaurar la visibilidad al destruir el componente
|
|
66
|
-
const header = this.document.querySelector('header');
|
|
67
|
-
const footer = this.document.querySelector('footer');
|
|
68
|
-
if (header) {
|
|
69
|
-
this.renderer.removeStyle(header, 'display');
|
|
70
|
-
}
|
|
71
|
-
if (footer) {
|
|
72
|
-
this.renderer.removeStyle(footer, 'display');
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
handlePaymentState(state, queryParams) {
|
|
76
|
-
switch (state) {
|
|
77
|
-
case '200':
|
|
78
|
-
this.setStateInLocal('Su pago fue procesado con éxito.', 'success');
|
|
79
|
-
this.storeTotalAmount(queryParams);
|
|
80
|
-
break;
|
|
81
|
-
case 'success':
|
|
82
|
-
this.setStateInLocal('Su pago fue procesado con éxito.', state);
|
|
83
|
-
this.storeTotalAmount(queryParams);
|
|
84
|
-
break;
|
|
85
|
-
case 'pending':
|
|
86
|
-
this.setStateInLocal('Su pago fue procesado con éxito.', state);
|
|
87
|
-
break;
|
|
88
|
-
case 'failure':
|
|
89
|
-
this.setStateInLocal('Se ha cancelado el proceso de pago.', state);
|
|
90
|
-
this.storeTotalAmount(queryParams);
|
|
91
|
-
break;
|
|
92
|
-
case 'cancel':
|
|
93
|
-
this.setStateInLocal('Se ha cancelado el proceso de pago.', state);
|
|
94
|
-
break;
|
|
95
|
-
case 'ok':
|
|
96
|
-
this.setStateInSesion('Su pago fue procesado con éxito.', state);
|
|
97
|
-
break;
|
|
98
|
-
case 'challenge':
|
|
99
|
-
this.setStateInSesion('Redirigiendo a autenticación del banco emisor.', state);
|
|
100
|
-
break;
|
|
101
|
-
case 'error':
|
|
102
|
-
this.setStateInSesion('Algo no salio bien en la validación de sus datos.', state);
|
|
103
|
-
break;
|
|
104
|
-
case '0':
|
|
105
|
-
this.setStateInLocal('Se ha cancelado el proceso de pago.', 'failure');
|
|
106
|
-
break;
|
|
107
|
-
default:
|
|
108
|
-
break;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
storeTotalAmount(queryParams) {
|
|
112
|
-
const totalAmount = queryParams['total_amount'];
|
|
113
|
-
if (totalAmount) {
|
|
114
|
-
localStorage.setItem('total_amount', totalAmount);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
setStateInLocal = (mensaje, state) => {
|
|
118
|
-
this.message = mensaje;
|
|
119
|
-
localStorage.setItem('state', state);
|
|
120
|
-
sessionStorage.setItem('modalnews', 'false');
|
|
121
|
-
};
|
|
122
|
-
setStateInSesion = (mensaje, state) => {
|
|
123
|
-
this.message = mensaje;
|
|
124
|
-
sessionStorage.setItem('state', state);
|
|
125
|
-
localStorage.setItem('state', state);
|
|
126
|
-
sessionStorage.setItem('modalnews', 'false');
|
|
127
|
-
};
|
|
128
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedsysCatchEcComponent, deps: [{ token: i1.ActivatedRoute }, { token: i1.Router }, { token: i2.CheckoutService }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
129
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: RedsysCatchEcComponent, isStandalone: true, selector: "app-redsys-catch-ec", usesInheritance: true, ngImport: i0, template: "<div id=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h4 class=\"titpage center-block text-center font-nexa font-lg my-3\">{{ message | uppercase }}</h4>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h5 class=\"center-block text-center font-nexa my-3\">Redirigiendo en segundos...</h5>\r\n <br>\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".loader{border:16px solid #f3f3f3;border-top:16px solid #dc3545;border-radius:50%;width:50px;height:50px;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.flex-container{display:flex;justify-content:center;align-items:center;height:80vh;width:100%}.flex-container>div{width:90%;height:100px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i3.UpperCasePipe, name: "uppercase" }, { kind: "component", type: LoadingFullEcComponent, selector: "app-loading-full-ec" }] });
|
|
130
|
-
}
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: RedsysCatchEcComponent, decorators: [{
|
|
132
|
-
type: Component,
|
|
133
|
-
args: [{ selector: 'app-redsys-catch-ec', standalone: true, imports: [CommonModule, LoadingFullEcComponent], template: "<div id=\"container\">\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h4 class=\"titpage center-block text-center font-nexa font-lg my-3\">{{ message | uppercase }}</h4>\r\n </div>\r\n </div>\r\n <div class=\"row\">\r\n <div class=\"col align-self-center\">\r\n <h5 class=\"center-block text-center font-nexa my-3\">Redirigiendo en segundos...</h5>\r\n <br>\r\n <div class=\"d-flex flex-column jusitfy-content-center align-items-center\">\r\n <app-loading-full-ec></app-loading-full-ec>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".loader{border:16px solid #f3f3f3;border-top:16px solid #dc3545;border-radius:50%;width:50px;height:50px;animation:spin 2s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.flex-container{display:flex;justify-content:center;align-items:center;height:80vh;width:100%}.flex-container>div{width:90%;height:100px}\n"] }]
|
|
134
|
-
}], ctorParameters: () => [{ type: i1.ActivatedRoute }, { type: i1.Router }, { type: i2.CheckoutService }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: Document, decorators: [{
|
|
135
|
-
type: Inject,
|
|
136
|
-
args: [DOCUMENT]
|
|
137
|
-
}] }] });
|
|
138
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkc3lzLWNhdGNoLWVjLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWVhc3ljb21tZXJjZS12MTgvc3JjL2xpYi9lYy1jb21wb25lbnRzL3dpZGdldHMtZWMvcmVkc3lzLWNhdGNoLWVjL3JlZHN5cy1jYXRjaC1lYy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1lYXN5Y29tbWVyY2UtdjE4L3NyYy9saWIvZWMtY29tcG9uZW50cy93aWRnZXRzLWVjL3JlZHN5cy1jYXRjaC1lYy9yZWRzeXMtY2F0Y2gtZWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBNEMsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTVGLE9BQU8sRUFBRSxhQUFhLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUdwRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNEQUFzRCxDQUFDOzs7OztBQVM5RixNQUFNLE9BQU8sc0JBQXVCLFNBQVEsZUFBZTtJQU01QztJQUNBO0lBQ0E7SUFDQztJQUNBO0lBQ2tCO0lBVHZCLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDWixZQUFZLEdBQXdCLElBQUksQ0FBQztJQUVqRCxZQUNXLFlBQTRCLEVBQzVCLE1BQWMsRUFDZCxlQUFnQyxFQUMvQixRQUFtQixFQUNuQixVQUFzQixFQUNKLFFBQWtCO1FBRTVDLEtBQUssRUFBRSxDQUFDO1FBUEQsaUJBQVksR0FBWixZQUFZLENBQWdCO1FBQzVCLFdBQU0sR0FBTixNQUFNLENBQVE7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QUFlLEdBQUcsQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFRLEVBQUU7UUFDL0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFBO0lBRU8sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsS0FBYSxFQUFRLEVBQUU7UUFDaEUsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDdkMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDckMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUFBO3dHQTVIUSxzQkFBc0Isd0pBV25CLFFBQVE7NEZBWFgsc0JBQXNCLHNHQ2pCbkMseXBCQWVNLG1aREZRLFlBQVksNEZBQUUsc0JBQXNCOzs0RkFJckMsc0JBQXNCO2tCQVBsQyxTQUFTOytCQUNJLHFCQUFxQixjQUNuQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLENBQUM7OzBCQWUxQyxNQUFNOzJCQUFDLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95LCBSZW5kZXJlcjIsIEVsZW1lbnRSZWYsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgUm91dGVyIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IENvbXBvbmVudEhlbHBlciB9IGZyb20gJy4uLy4uLy4uL2NsYXNzZXMvY29tcG9uZW50LWhlbHBlcic7XHJcbmltcG9ydCB7IENhcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vZWMtc2VydmljZXMnO1xyXG5pbXBvcnQgeyBDaGVja291dFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9lYy1zZXJ2aWNlcyc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgTG9hZGluZ0Z1bGxFY0NvbXBvbmVudCB9IGZyb20gJy4uL2xvYWRpbmcvbG9hZGluZy1mdWxsLWVjL2xvYWRpbmctZnVsbC1lYy5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2FwcC1yZWRzeXMtY2F0Y2gtZWMnLFxyXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIExvYWRpbmdGdWxsRWNDb21wb25lbnRdLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3JlZHN5cy1jYXRjaC1lYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9yZWRzeXMtY2F0Y2gtZWMuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVkc3lzQ2F0Y2hFY0NvbXBvbmVudCBleHRlbmRzIENvbXBvbmVudEhlbHBlciBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuXHJcbiAgICBwdWJsaWMgbWVzc2FnZSA9ICcnO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHB1YmxpYyBhY3RpdmVkUm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuICAgICAgICBwdWJsaWMgY2hlY2tvdXRTZXJ2aWNlOiBDaGVja291dFNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxyXG4gICAgICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudFxyXG4gICAgKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLmhpZGVIZWFkZXJGb290ZXIoKTtcclxuICAgICAgICB0aGlzLmVjT25Db25zdHJ1Y3QoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHtcclxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IGNvbWJpbmVMYXRlc3QoW1xyXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZWRSb3V0ZS5wYXJhbXMsXHJcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlZFJvdXRlLnF1ZXJ5UGFyYW1zXHJcbiAgICAgICAgXSkuc3Vic2NyaWJlKChbcXVlcnlSb3V0ZXIsIHF1ZXJ5UGFyYW1zXSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgc3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICAgICAgICAgICAgc3RhdGUgPSBxdWVyeVJvdXRlclsnc3RhdGUnXTtcclxuICAgICAgICAgICAgaWYgKHN0YXRlICYmIHN0YXRlID09PSAnc3RhdHVzcGF5bWVudCcpIHtcclxuICAgICAgICAgICAgICAgIHN0YXRlID0gcXVlcnlQYXJhbXNbJ3N0YXR1cyddO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdQQVJBTUVUUk9TIFNUQVRFICAtPiAnLCBzdGF0ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlUGF5bWVudFN0YXRlKHN0YXRlLCBxdWVyeVBhcmFtcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5lY09uSW5pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xyXG4gICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNob3dIZWFkZXJGb290ZXIoKTtcclxuICAgICAgICAvLyB0aGlzLmVjT25EZXN0cm95KCk7IC8vIFJlbW92aWRvIHNpIG5vIGV4aXN0ZSBlbiBDb21wb25lbnRIZWxwZXJcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGhpZGVIZWFkZXJGb290ZXIoKTogdm9pZCB7XHJcbiAgICAgICAgLy8gVXNhciBSZW5kZXJlcjIgZW4gbHVnYXIgZGUgalF1ZXJ5IHBhcmEgbWFuaXB1bGFyIGVsIERPTVxyXG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZGVyJyk7XHJcbiAgICAgICAgY29uc3QgZm9vdGVyID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb290ZXInKTtcclxuXHJcbiAgICAgICAgaWYgKGhlYWRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKGhlYWRlciwgJ2Rpc3BsYXknLCAnbm9uZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZm9vdGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUoZm9vdGVyLCAnZGlzcGxheScsICdub25lJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2hvd0hlYWRlckZvb3RlcigpOiB2b2lkIHtcclxuICAgICAgICAvLyBSZXN0YXVyYXIgbGEgdmlzaWJpbGlkYWQgYWwgZGVzdHJ1aXIgZWwgY29tcG9uZW50ZVxyXG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHRoaXMuZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZGVyJyk7XHJcbiAgICAgICAgY29uc3QgZm9vdGVyID0gdGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdmb290ZXInKTtcclxuXHJcbiAgICAgICAgaWYgKGhlYWRlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGhlYWRlciwgJ2Rpc3BsYXknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZvb3Rlcikge1xyXG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZVN0eWxlKGZvb3RlciwgJ2Rpc3BsYXknKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoYW5kbGVQYXltZW50U3RhdGUoc3RhdGU6IHN0cmluZyB8IHVuZGVmaW5lZCwgcXVlcnlQYXJhbXM6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHN3aXRjaCAoc3RhdGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnMjAwJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJbkxvY2FsKCdTdSBwYWdvIGZ1ZSBwcm9jZXNhZG8gY29uIMOpeGl0by4nLCAnc3VjY2VzcycpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zdG9yZVRvdGFsQW1vdW50KHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdzdWNjZXNzJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJbkxvY2FsKCdTdSBwYWdvIGZ1ZSBwcm9jZXNhZG8gY29uIMOpeGl0by4nLCBzdGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnN0b3JlVG90YWxBbW91bnQocXVlcnlQYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ3BlbmRpbmcnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1N1IHBhZ28gZnVlIHByb2Nlc2FkbyBjb24gw6l4aXRvLicsIHN0YXRlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdmYWlsdXJlJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJbkxvY2FsKCdTZSBoYSBjYW5jZWxhZG8gZWwgcHJvY2VzbyBkZSBwYWdvLicsIHN0YXRlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmVUb3RhbEFtb3VudChxdWVyeVBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnY2FuY2VsJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGVJbkxvY2FsKCdTZSBoYSBjYW5jZWxhZG8gZWwgcHJvY2VzbyBkZSBwYWdvLicsIHN0YXRlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdvayc6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlSW5TZXNpb24oJ1N1IHBhZ28gZnVlIHByb2Nlc2FkbyBjb24gw6l4aXRvLicsIHN0YXRlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdjaGFsbGVuZ2UnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluU2VzaW9uKCdSZWRpcmlnaWVuZG8gYSBhdXRlbnRpY2FjacOzbiBkZWwgYmFuY28gZW1pc29yLicsIHN0YXRlKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlICdlcnJvcic6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlSW5TZXNpb24oJ0FsZ28gbm8gc2FsaW8gYmllbiBlbiBsYSB2YWxpZGFjacOzbiBkZSBzdXMgZGF0b3MuJywgc3RhdGUpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJzAnOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZUluTG9jYWwoJ1NlIGhhIGNhbmNlbGFkbyBlbCBwcm9jZXNvIGRlIHBhZ28uJywgJ2ZhaWx1cmUnKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RvcmVUb3RhbEFtb3VudChxdWVyeVBhcmFtczogYW55KTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdG90YWxBbW91bnQgPSBxdWVyeVBhcmFtc1sndG90YWxfYW1vdW50J107XHJcbiAgICAgICAgaWYgKHRvdGFsQW1vdW50KSB7XHJcbiAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCd0b3RhbF9hbW91bnQnLCB0b3RhbEFtb3VudCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIHNldFN0YXRlSW5Mb2NhbCA9IChtZW5zYWplOiBzdHJpbmcsIHN0YXRlOiBzdHJpbmcpOiB2b2lkID0+IHtcclxuICAgICAgICB0aGlzLm1lc3NhZ2UgPSBtZW5zYWplO1xyXG4gICAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsIHN0YXRlKTtcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdtb2RhbG5ld3MnLCAnZmFsc2UnKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFN0YXRlSW5TZXNpb24gPSAobWVuc2FqZTogc3RyaW5nLCBzdGF0ZTogc3RyaW5nKTogdm9pZCA9PiB7XHJcbiAgICAgICAgdGhpcy5tZXNzYWdlID0gbWVuc2FqZTtcclxuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdzdGF0ZScsIHN0YXRlKTtcclxuICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnc3RhdGUnLCBzdGF0ZSk7XHJcbiAgICAgICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbSgnbW9kYWxuZXdzJywgJ2ZhbHNlJyk7XHJcbiAgICB9XHJcblxyXG59XHJcbiIsIjxkaXYgaWQ9XCJjb250YWluZXJcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxoNCBjbGFzcz1cInRpdHBhZ2UgY2VudGVyLWJsb2NrIHRleHQtY2VudGVyIGZvbnQtbmV4YSBmb250LWxnIG15LTNcIj57eyBtZXNzYWdlIHwgdXBwZXJjYXNlIH19PC9oND5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGg1IGNsYXNzPVwiY2VudGVyLWJsb2NrIHRleHQtY2VudGVyIGZvbnQtbmV4YSBteS0zXCI+UmVkaXJpZ2llbmRvIGVuIHNlZ3VuZG9zLi4uPC9oNT5cclxuICAgICAgICAgICAgPGJyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtY29sdW1uIGp1c2l0ZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8YXBwLWxvYWRpbmctZnVsbC1lYz48L2FwcC1sb2FkaW5nLWZ1bGwtZWM+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvZGl2PiJdfQ==
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { OnInit, OnDestroy, Renderer2, ElementRef } from '@angular/core';
|
|
2
|
-
import { ActivatedRoute, Router } from '@angular/router';
|
|
3
|
-
import { ComponentHelper } from '../../../classes/component-helper';
|
|
4
|
-
import { CheckoutService } from '../../../ec-services';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export declare class RedsysCatchEcComponent extends ComponentHelper implements OnInit, OnDestroy {
|
|
7
|
-
activedRoute: ActivatedRoute;
|
|
8
|
-
router: Router;
|
|
9
|
-
checkoutService: CheckoutService;
|
|
10
|
-
private renderer;
|
|
11
|
-
private elementRef;
|
|
12
|
-
private document;
|
|
13
|
-
message: string;
|
|
14
|
-
private subscription;
|
|
15
|
-
constructor(activedRoute: ActivatedRoute, router: Router, checkoutService: CheckoutService, renderer: Renderer2, elementRef: ElementRef, document: Document);
|
|
16
|
-
ngOnInit(): void;
|
|
17
|
-
ngOnDestroy(): void;
|
|
18
|
-
private hideHeaderFooter;
|
|
19
|
-
private showHeaderFooter;
|
|
20
|
-
private handlePaymentState;
|
|
21
|
-
private storeTotalAmount;
|
|
22
|
-
private setStateInLocal;
|
|
23
|
-
private setStateInSesion;
|
|
24
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<RedsysCatchEcComponent, never>;
|
|
25
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<RedsysCatchEcComponent, "app-redsys-catch-ec", never, {}, {}, never, never, true, never>;
|
|
26
|
-
}
|