valtech-components 2.0.343 → 2.0.344

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.
@@ -1,5 +1,5 @@
1
1
  import { CommonModule } from '@angular/common';
2
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { Component, EventEmitter, Input, Output, } from '@angular/core';
3
3
  import { goToTop } from '../../../shared/utils/dom';
4
4
  import { ContentLoaderComponent } from '../../molecules/content-loader/content-loader.component';
5
5
  import { ComponentStates } from '../../types';
@@ -7,92 +7,73 @@ import { NoContentComponent } from '../no-content/no-content.component';
7
7
  import { MOTION } from './types';
8
8
  import * as i0 from "@angular/core";
9
9
  import * as i1 from "@angular/common";
10
- /**
11
- * WizardComponent
12
- *
13
- * Componente para flujos de pasos (wizard) reutilizable, con soporte para estados, errores y navegación entre pasos.
14
- * Permite mostrar contenido personalizado por paso y manejar acciones de navegación.
15
- *
16
- * @example
17
- * <val-wizard [props]="wizardProps" (onClick)="handleWizardNav($event)">
18
- * <div step>Contenido del paso</div>
19
- * </val-wizard>
20
- *
21
- * @input props {WizardMetadata} - Metadatos del wizard, pasos y estado.
22
- * @output onClick - Emite el paso actual y la acción de navegación (MOTION).
23
- */
24
10
  export class WizardComponent {
25
- constructor() {
26
- /**
27
- * Evento emitido al hacer click en una acción de navegación.
28
- */
11
+ constructor(cdr) {
12
+ this.cdr = cdr;
29
13
  this.onClick = new EventEmitter();
30
14
  this.wrapperId = 'wizard-wrapper';
15
+ this.currentStep = null;
16
+ }
17
+ ngOnInit() {
18
+ this.updateCurrentStep();
19
+ }
20
+ ngOnChanges(changes) {
21
+ if (changes['props']) {
22
+ this.updateCurrentStep();
23
+ this.cdr.detectChanges();
24
+ }
25
+ }
26
+ updateCurrentStep() {
27
+ if (this.props?.steps && this.props.current) {
28
+ this.currentStep = this.props.steps[this.props.current];
29
+ }
31
30
  }
32
- ngOnInit() { }
33
- /**
34
- * Cambia el estado del wizard a 'WORKING' y deshabilita los botones del paso actual.
35
- */
36
31
  working() {
37
32
  this.props.state = ComponentStates.WORKING;
38
- this.Current.buttons.map(x => {
39
- x.state = ComponentStates.DISABLED;
40
- });
33
+ if (this.currentStep?.buttons) {
34
+ this.currentStep.buttons.forEach(button => {
35
+ button.state = ComponentStates.DISABLED;
36
+ });
37
+ }
38
+ this.cdr.detectChanges();
41
39
  }
42
- /**
43
- * Cambia el estado del wizard a 'ENABLED' y habilita los botones del paso actual.
44
- * No realiza cambios si ya está en estado 'ENABLED'.
45
- */
46
40
  done() {
47
41
  if (this.props.state === ComponentStates.ENABLED) {
48
42
  return;
49
43
  }
50
44
  this.props.state = ComponentStates.ENABLED;
51
- this.Current.buttons.map(x => {
52
- x.state = ComponentStates.ENABLED;
53
- });
45
+ if (this.currentStep?.buttons) {
46
+ this.currentStep.buttons.forEach(button => {
47
+ button.state = ComponentStates.ENABLED;
48
+ });
49
+ }
50
+ this.cdr.detectChanges();
54
51
  }
55
- /**
56
- * Devuelve el paso actual del wizard.
57
- */
58
52
  get Current() {
59
- return this.props.steps[this.props.current];
53
+ return this.currentStep || this.props.steps[this.props.current];
60
54
  }
61
- /**
62
- * Cambia el paso actual del wizard y hace scroll al inicio.
63
- * @param newStep Nuevo índice de paso
64
- */
65
55
  setCurrent(newStep) {
66
56
  if (newStep === this.props.current) {
67
57
  return;
68
58
  }
69
59
  this.props.current = newStep;
60
+ this.updateCurrentStep();
61
+ this.cdr.detectChanges();
70
62
  goToTop(this.wrapperId);
71
63
  }
72
- /**
73
- * Establece el estado de error y muestra el mensaje de error en el banner inferior.
74
- * @param error Mensaje de error a mostrar
75
- */
76
64
  setError(error) {
77
65
  if (this.props.state === ComponentStates.ERROR) {
78
66
  return;
79
67
  }
80
68
  this.props.error.titles.bottomContent.content.bellowTitle.content = error;
81
69
  this.props.state = ComponentStates.ERROR;
70
+ this.cdr.detectChanges();
82
71
  goToTop(this.wrapperId);
83
72
  }
84
- /**
85
- * Reinicia el estado de error y vuelve a estado 'ENABLED'.
86
- */
87
73
  reset() {
88
74
  this.props.error.titles.bottomContent.content.bellowTitle.content = '';
89
75
  this.done();
90
76
  }
91
- /**
92
- * Maneja el click en el banner de error y emite el evento de navegación.
93
- * Si el token contiene 'retry', reinicia el wizard.
94
- * @param token Token de la acción clicada
95
- */
96
77
  clickHandler(token) {
97
78
  if (!token) {
98
79
  return;
@@ -102,11 +83,11 @@ export class WizardComponent {
102
83
  }
103
84
  this.onClick.emit({ current: this.props.current, motion: MOTION.RETRY });
104
85
  }
105
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
106
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardComponent, isStandalone: true, selector: "val-wizard", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
86
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
87
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardComponent, isStandalone: true, selector: "val-wizard", inputs: { props: "props" }, outputs: { onClick: "onClick" }, usesOnChanges: true, ngImport: i0, template: `
107
88
  <div [id]="wrapperId" class="wrapper">
108
89
  <ng-container *ngIf="props.state !== 'ERROR'">
109
- <val-no-content [props]="Current.titles"></val-no-content>
90
+ <val-no-content *ngIf="currentStep" [props]="currentStep.titles"></val-no-content>
110
91
  <div class="step">
111
92
  <div *ngIf="props.state === 'WORKING'">
112
93
  <val-content-loader
@@ -132,7 +113,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
132
113
  args: [{ selector: 'val-wizard', standalone: true, imports: [CommonModule, NoContentComponent, ContentLoaderComponent], template: `
133
114
  <div [id]="wrapperId" class="wrapper">
134
115
  <ng-container *ngIf="props.state !== 'ERROR'">
135
- <val-no-content [props]="Current.titles"></val-no-content>
116
+ <val-no-content *ngIf="currentStep" [props]="currentStep.titles"></val-no-content>
136
117
  <div class="step">
137
118
  <div *ngIf="props.state === 'WORKING'">
138
119
  <val-content-loader
@@ -152,9 +133,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
152
133
  </ng-container>
153
134
  </div>
154
135
  `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.wrapper{height:auto;display:flex;flex-direction:column;justify-content:space-between;position:relative;min-height:320px}.step{min-height:9.375rem;margin:16px 0;text-align:center}\n"] }]
155
- }], ctorParameters: () => [], propDecorators: { props: [{
136
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { props: [{
156
137
  type: Input
157
138
  }], onClick: [{
158
139
  type: Output
159
140
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQXdCLE1BQU0sU0FBUyxDQUFDOzs7QUErQnZEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQWUxQjtRQVJBOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksWUFBWSxFQUF1QyxDQUFDO1FBRWxFLGNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztJQUVkLENBQUM7SUFFaEIsUUFBUSxLQUFJLENBQUM7SUFFYjs7T0FFRztJQUNILE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQixDQUFDLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0IsQ0FBQyxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsT0FBZTtRQUN4QixJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25DLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9DLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDMUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN2RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDOytHQW5HVSxlQUFlO21HQUFmLGVBQWUsbUlBdkNoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVCxrd0ZBdkJTLFlBQVksbUlBQUUsa0JBQWtCLG9HQUFFLHNCQUFzQjs7NEZBd0N2RCxlQUFlO2tCQTNDM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixDQUFDLFlBQ3pEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUO3dEQXNCRCxLQUFLO3NCQURKLEtBQUs7Z0JBT04sT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdvVG9Ub3AgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZG9tJztcbmltcG9ydCB7IENvbnRlbnRMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY29udGVudC1sb2FkZXIvY29udGVudC1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IE5vQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL25vLWNvbnRlbnQvbm8tY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTU9USU9OLCBTdGVwLCBXaXphcmRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtd2l6YXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTm9Db250ZW50Q29tcG9uZW50LCBDb250ZW50TG9hZGVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtpZF09XCJ3cmFwcGVySWRcIiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy5zdGF0ZSAhPT0gJ0VSUk9SJ1wiPlxuICAgICAgICA8dmFsLW5vLWNvbnRlbnQgW3Byb3BzXT1cIkN1cnJlbnQudGl0bGVzXCI+PC92YWwtbm8tY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcHMuc3RhdGUgPT09ICdXT1JLSU5HJ1wiPlxuICAgICAgICAgICAgPHZhbC1jb250ZW50LWxvYWRlclxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjaXJjdWxhcicsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICAgIHRleHQ6ICdQb3IgZmF2b3IgZXNwZXJlLi4uJyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdGVwXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy5zdGF0ZSA9PT0gJ0VSUk9SJ1wiPlxuICAgICAgICA8dmFsLW5vLWNvbnRlbnQgW3Byb3BzXT1cInByb3BzLmVycm9yLnRpdGxlc1wiIChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcigkZXZlbnQpXCI+PC92YWwtbm8tY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi93aXphcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIFdpemFyZENvbXBvbmVudFxuICpcbiAqIENvbXBvbmVudGUgcGFyYSBmbHVqb3MgZGUgcGFzb3MgKHdpemFyZCkgcmV1dGlsaXphYmxlLCBjb24gc29wb3J0ZSBwYXJhIGVzdGFkb3MsIGVycm9yZXMgeSBuYXZlZ2FjacOzbiBlbnRyZSBwYXNvcy5cbiAqIFBlcm1pdGUgbW9zdHJhciBjb250ZW5pZG8gcGVyc29uYWxpemFkbyBwb3IgcGFzbyB5IG1hbmVqYXIgYWNjaW9uZXMgZGUgbmF2ZWdhY2nDs24uXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtd2l6YXJkIFtwcm9wc109XCJ3aXphcmRQcm9wc1wiIChvbkNsaWNrKT1cImhhbmRsZVdpemFyZE5hdigkZXZlbnQpXCI+XG4gKiAgIDxkaXYgc3RlcD5Db250ZW5pZG8gZGVsIHBhc288L2Rpdj5cbiAqIDwvdmFsLXdpemFyZD5cbiAqXG4gKiBAaW5wdXQgcHJvcHMge1dpemFyZE1ldGFkYXRhfSAtIE1ldGFkYXRvcyBkZWwgd2l6YXJkLCBwYXNvcyB5IGVzdGFkby5cbiAqIEBvdXRwdXQgb25DbGljayAtIEVtaXRlIGVsIHBhc28gYWN0dWFsIHkgbGEgYWNjacOzbiBkZSBuYXZlZ2FjacOzbiAoTU9USU9OKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBNZXRhZGF0b3MgZGVsIHdpemFyZCwgcGFzb3MgeSBlc3RhZG8uXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wczogV2l6YXJkTWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEV2ZW50byBlbWl0aWRvIGFsIGhhY2VyIGNsaWNrIGVuIHVuYSBhY2Npw7NuIGRlIG5hdmVnYWNpw7NuLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY3VycmVudDogbnVtYmVyOyBtb3Rpb246IE1PVElPTiB9PigpO1xuXG4gIHdyYXBwZXJJZCA9ICd3aXphcmQtd3JhcHBlcic7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICAvKipcbiAgICogQ2FtYmlhIGVsIGVzdGFkbyBkZWwgd2l6YXJkIGEgJ1dPUktJTkcnIHkgZGVzaGFiaWxpdGEgbG9zIGJvdG9uZXMgZGVsIHBhc28gYWN0dWFsLlxuICAgKi9cbiAgd29ya2luZygpIHtcbiAgICB0aGlzLnByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLldPUktJTkc7XG4gICAgdGhpcy5DdXJyZW50LmJ1dHRvbnMubWFwKHggPT4ge1xuICAgICAgeC5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW1iaWEgZWwgZXN0YWRvIGRlbCB3aXphcmQgYSAnRU5BQkxFRCcgeSBoYWJpbGl0YSBsb3MgYm90b25lcyBkZWwgcGFzbyBhY3R1YWwuXG4gICAqIE5vIHJlYWxpemEgY2FtYmlvcyBzaSB5YSBlc3TDoSBlbiBlc3RhZG8gJ0VOQUJMRUQnLlxuICAgKi9cbiAgZG9uZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQ7XG4gICAgdGhpcy5DdXJyZW50LmJ1dHRvbnMubWFwKHggPT4ge1xuICAgICAgeC5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldnVlbHZlIGVsIHBhc28gYWN0dWFsIGRlbCB3aXphcmQuXG4gICAqL1xuICBnZXQgQ3VycmVudCgpOiBTdGVwIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zdGVwc1t0aGlzLnByb3BzLmN1cnJlbnRdO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbWJpYSBlbCBwYXNvIGFjdHVhbCBkZWwgd2l6YXJkIHkgaGFjZSBzY3JvbGwgYWwgaW5pY2lvLlxuICAgKiBAcGFyYW0gbmV3U3RlcCBOdWV2byDDrW5kaWNlIGRlIHBhc29cbiAgICovXG4gIHNldEN1cnJlbnQobmV3U3RlcDogbnVtYmVyKSB7XG4gICAgaWYgKG5ld1N0ZXAgPT09IHRoaXMucHJvcHMuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByb3BzLmN1cnJlbnQgPSBuZXdTdGVwO1xuICAgIGdvVG9Ub3AodGhpcy53cmFwcGVySWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzdGFibGVjZSBlbCBlc3RhZG8gZGUgZXJyb3IgeSBtdWVzdHJhIGVsIG1lbnNhamUgZGUgZXJyb3IgZW4gZWwgYmFubmVyIGluZmVyaW9yLlxuICAgKiBAcGFyYW0gZXJyb3IgTWVuc2FqZSBkZSBlcnJvciBhIG1vc3RyYXJcbiAgICovXG4gIHNldEVycm9yKGVycm9yOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkVSUk9SKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcm9wcy5lcnJvci50aXRsZXMuYm90dG9tQ29udGVudC5jb250ZW50LmJlbGxvd1RpdGxlLmNvbnRlbnQgPSBlcnJvcjtcbiAgICB0aGlzLnByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVSUk9SO1xuICAgIGdvVG9Ub3AodGhpcy53cmFwcGVySWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlaW5pY2lhIGVsIGVzdGFkbyBkZSBlcnJvciB5IHZ1ZWx2ZSBhIGVzdGFkbyAnRU5BQkxFRCcuXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLnByb3BzLmVycm9yLnRpdGxlcy5ib3R0b21Db250ZW50LmNvbnRlbnQuYmVsbG93VGl0bGUuY29udGVudCA9ICcnO1xuICAgIHRoaXMuZG9uZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbmVqYSBlbCBjbGljayBlbiBlbCBiYW5uZXIgZGUgZXJyb3IgeSBlbWl0ZSBlbCBldmVudG8gZGUgbmF2ZWdhY2nDs24uXG4gICAqIFNpIGVsIHRva2VuIGNvbnRpZW5lICdyZXRyeScsIHJlaW5pY2lhIGVsIHdpemFyZC5cbiAgICogQHBhcmFtIHRva2VuIFRva2VuIGRlIGxhIGFjY2nDs24gY2xpY2FkYVxuICAgKi9cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodG9rZW4uaW5jbHVkZXMoJ3JldHJ5JykpIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IGN1cnJlbnQ6IHRoaXMucHJvcHMuY3VycmVudCwgbW90aW9uOiBNT1RJT04uUkVUUlkgfSk7XG4gIH1cbn1cbiJdfQ==
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQXdCLE1BQU0sU0FBUyxDQUFDOzs7QUErQnZELE1BQU0sT0FBTyxlQUFlO0lBVTFCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBTDFDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBdUMsQ0FBQztRQUVsRSxjQUFTLEdBQUcsZ0JBQWdCLENBQUM7UUFDN0IsZ0JBQVcsR0FBZ0IsSUFBSSxDQUFDO0lBRWEsQ0FBQztJQUU5QyxRQUFRO1FBQ04sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFzQjtRQUNoQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDM0IsQ0FB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LEtBQWM7UUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7K0dBNUZVLGVBQWU7bUdBQWYsZUFBZSx3SkF6QmhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JULGt3RkF2QlMsWUFBWSxtSUFBRSxrQkFBa0Isb0dBQUUsc0JBQXNCOzs0RkEwQnZELGVBQWU7a0JBN0IzQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLENBQUMsWUFDekQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7c0ZBS0QsS0FBSztzQkFESixLQUFLO2dCQUlOLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdvVG9Ub3AgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZG9tJztcbmltcG9ydCB7IENvbnRlbnRMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY29udGVudC1sb2FkZXIvY29udGVudC1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IE5vQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL25vLWNvbnRlbnQvbm8tY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTU9USU9OLCBTdGVwLCBXaXphcmRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtd2l6YXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTm9Db250ZW50Q29tcG9uZW50LCBDb250ZW50TG9hZGVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtpZF09XCJ3cmFwcGVySWRcIiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy5zdGF0ZSAhPT0gJ0VSUk9SJ1wiPlxuICAgICAgICA8dmFsLW5vLWNvbnRlbnQgKm5nSWY9XCJjdXJyZW50U3RlcFwiIFtwcm9wc109XCJjdXJyZW50U3RlcC50aXRsZXNcIj48L3ZhbC1uby1jb250ZW50PlxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcFwiPlxuICAgICAgICAgIDxkaXYgKm5nSWY9XCJwcm9wcy5zdGF0ZSA9PT0gJ1dPUktJTkcnXCI+XG4gICAgICAgICAgICA8dmFsLWNvbnRlbnQtbG9hZGVyXG4gICAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgICAgbmFtZTogJ2NpcmN1bGFyJyxcbiAgICAgICAgICAgICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgICAgICAgICAgICAgIHNpemU6ICdsYXJnZScsXG4gICAgICAgICAgICAgICAgdGV4dDogJ1BvciBmYXZvciBlc3BlcmUuLi4nLFxuICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW3N0ZXBdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByb3BzLnN0YXRlID09PSAnRVJST1InXCI+XG4gICAgICAgIDx2YWwtbm8tY29udGVudCBbcHJvcHNdPVwicHJvcHMuZXJyb3IudGl0bGVzXCIgKG9uQ2xpY2spPVwiY2xpY2tIYW5kbGVyKCRldmVudClcIj48L3ZhbC1uby1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL3dpemFyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBXaXphcmRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpXG4gIHByb3BzOiBXaXphcmRNZXRhZGF0YTtcblxuICBAT3V0cHV0KClcbiAgb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8eyBjdXJyZW50OiBudW1iZXI7IG1vdGlvbjogTU9USU9OIH0+KCk7XG5cbiAgd3JhcHBlcklkID0gJ3dpemFyZC13cmFwcGVyJztcbiAgY3VycmVudFN0ZXA6IFN0ZXAgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUN1cnJlbnRTdGVwKCk7XG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVDdXJyZW50U3RlcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5wcm9wcz8uc3RlcHMgJiYgdGhpcy5wcm9wcy5jdXJyZW50KSB7XG4gICAgICB0aGlzLmN1cnJlbnRTdGVwID0gdGhpcy5wcm9wcy5zdGVwc1t0aGlzLnByb3BzLmN1cnJlbnRdO1xuICAgIH1cbiAgfVxuXG4gIHdvcmtpbmcoKSB7XG4gICAgdGhpcy5wcm9wcy5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5XT1JLSU5HO1xuICAgIGlmICh0aGlzLmN1cnJlbnRTdGVwPy5idXR0b25zKSB7XG4gICAgICB0aGlzLmN1cnJlbnRTdGVwLmJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgICAgICBidXR0b24uc3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRElTQUJMRUQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZG9uZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQ7XG4gICAgaWYgKHRoaXMuY3VycmVudFN0ZXA/LmJ1dHRvbnMpIHtcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAuYnV0dG9ucy5mb3JFYWNoKGJ1dHRvbiA9PiB7XG4gICAgICAgIGJ1dHRvbi5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIGdldCBDdXJyZW50KCk6IFN0ZXAge1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGVwIHx8IHRoaXMucHJvcHMuc3RlcHNbdGhpcy5wcm9wcy5jdXJyZW50XTtcbiAgfVxuXG4gIHNldEN1cnJlbnQobmV3U3RlcDogbnVtYmVyKSB7XG4gICAgaWYgKG5ld1N0ZXAgPT09IHRoaXMucHJvcHMuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByb3BzLmN1cnJlbnQgPSBuZXdTdGVwO1xuICAgIHRoaXMudXBkYXRlQ3VycmVudFN0ZXAoKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgZ29Ub1RvcCh0aGlzLndyYXBwZXJJZCk7XG4gIH1cblxuICBzZXRFcnJvcihlcnJvcjogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMucHJvcHMuc3RhdGUgPT09IENvbXBvbmVudFN0YXRlcy5FUlJPUikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMuZXJyb3IudGl0bGVzLmJvdHRvbUNvbnRlbnQuY29udGVudC5iZWxsb3dUaXRsZS5jb250ZW50ID0gZXJyb3I7XG4gICAgdGhpcy5wcm9wcy5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5FUlJPUjtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgZ29Ub1RvcCh0aGlzLndyYXBwZXJJZCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnByb3BzLmVycm9yLnRpdGxlcy5ib3R0b21Db250ZW50LmNvbnRlbnQuYmVsbG93VGl0bGUuY29udGVudCA9ICcnO1xuICAgIHRoaXMuZG9uZSgpO1xuICB9XG5cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodG9rZW4uaW5jbHVkZXMoJ3JldHJ5JykpIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IGN1cnJlbnQ6IHRoaXMucHJvcHMuY3VycmVudCwgbW90aW9uOiBNT1RJT04uUkVUUlkgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -7825,92 +7825,73 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7825
7825
  type: Output
7826
7826
  }] } });
7827
7827
 
7828
- /**
7829
- * WizardComponent
7830
- *
7831
- * Componente para flujos de pasos (wizard) reutilizable, con soporte para estados, errores y navegación entre pasos.
7832
- * Permite mostrar contenido personalizado por paso y manejar acciones de navegación.
7833
- *
7834
- * @example
7835
- * <val-wizard [props]="wizardProps" (onClick)="handleWizardNav($event)">
7836
- * <div step>Contenido del paso</div>
7837
- * </val-wizard>
7838
- *
7839
- * @input props {WizardMetadata} - Metadatos del wizard, pasos y estado.
7840
- * @output onClick - Emite el paso actual y la acción de navegación (MOTION).
7841
- */
7842
7828
  class WizardComponent {
7843
- constructor() {
7844
- /**
7845
- * Evento emitido al hacer click en una acción de navegación.
7846
- */
7829
+ constructor(cdr) {
7830
+ this.cdr = cdr;
7847
7831
  this.onClick = new EventEmitter();
7848
7832
  this.wrapperId = 'wizard-wrapper';
7833
+ this.currentStep = null;
7834
+ }
7835
+ ngOnInit() {
7836
+ this.updateCurrentStep();
7837
+ }
7838
+ ngOnChanges(changes) {
7839
+ if (changes['props']) {
7840
+ this.updateCurrentStep();
7841
+ this.cdr.detectChanges();
7842
+ }
7843
+ }
7844
+ updateCurrentStep() {
7845
+ if (this.props?.steps && this.props.current) {
7846
+ this.currentStep = this.props.steps[this.props.current];
7847
+ }
7849
7848
  }
7850
- ngOnInit() { }
7851
- /**
7852
- * Cambia el estado del wizard a 'WORKING' y deshabilita los botones del paso actual.
7853
- */
7854
7849
  working() {
7855
7850
  this.props.state = ComponentStates.WORKING;
7856
- this.Current.buttons.map(x => {
7857
- x.state = ComponentStates.DISABLED;
7858
- });
7851
+ if (this.currentStep?.buttons) {
7852
+ this.currentStep.buttons.forEach(button => {
7853
+ button.state = ComponentStates.DISABLED;
7854
+ });
7855
+ }
7856
+ this.cdr.detectChanges();
7859
7857
  }
7860
- /**
7861
- * Cambia el estado del wizard a 'ENABLED' y habilita los botones del paso actual.
7862
- * No realiza cambios si ya está en estado 'ENABLED'.
7863
- */
7864
7858
  done() {
7865
7859
  if (this.props.state === ComponentStates.ENABLED) {
7866
7860
  return;
7867
7861
  }
7868
7862
  this.props.state = ComponentStates.ENABLED;
7869
- this.Current.buttons.map(x => {
7870
- x.state = ComponentStates.ENABLED;
7871
- });
7863
+ if (this.currentStep?.buttons) {
7864
+ this.currentStep.buttons.forEach(button => {
7865
+ button.state = ComponentStates.ENABLED;
7866
+ });
7867
+ }
7868
+ this.cdr.detectChanges();
7872
7869
  }
7873
- /**
7874
- * Devuelve el paso actual del wizard.
7875
- */
7876
7870
  get Current() {
7877
- return this.props.steps[this.props.current];
7871
+ return this.currentStep || this.props.steps[this.props.current];
7878
7872
  }
7879
- /**
7880
- * Cambia el paso actual del wizard y hace scroll al inicio.
7881
- * @param newStep Nuevo índice de paso
7882
- */
7883
7873
  setCurrent(newStep) {
7884
7874
  if (newStep === this.props.current) {
7885
7875
  return;
7886
7876
  }
7887
7877
  this.props.current = newStep;
7878
+ this.updateCurrentStep();
7879
+ this.cdr.detectChanges();
7888
7880
  goToTop(this.wrapperId);
7889
7881
  }
7890
- /**
7891
- * Establece el estado de error y muestra el mensaje de error en el banner inferior.
7892
- * @param error Mensaje de error a mostrar
7893
- */
7894
7882
  setError(error) {
7895
7883
  if (this.props.state === ComponentStates.ERROR) {
7896
7884
  return;
7897
7885
  }
7898
7886
  this.props.error.titles.bottomContent.content.bellowTitle.content = error;
7899
7887
  this.props.state = ComponentStates.ERROR;
7888
+ this.cdr.detectChanges();
7900
7889
  goToTop(this.wrapperId);
7901
7890
  }
7902
- /**
7903
- * Reinicia el estado de error y vuelve a estado 'ENABLED'.
7904
- */
7905
7891
  reset() {
7906
7892
  this.props.error.titles.bottomContent.content.bellowTitle.content = '';
7907
7893
  this.done();
7908
7894
  }
7909
- /**
7910
- * Maneja el click en el banner de error y emite el evento de navegación.
7911
- * Si el token contiene 'retry', reinicia el wizard.
7912
- * @param token Token de la acción clicada
7913
- */
7914
7895
  clickHandler(token) {
7915
7896
  if (!token) {
7916
7897
  return;
@@ -7920,11 +7901,11 @@ class WizardComponent {
7920
7901
  }
7921
7902
  this.onClick.emit({ current: this.props.current, motion: MOTION.RETRY });
7922
7903
  }
7923
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
7924
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardComponent, isStandalone: true, selector: "val-wizard", inputs: { props: "props" }, outputs: { onClick: "onClick" }, ngImport: i0, template: `
7904
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
7905
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardComponent, isStandalone: true, selector: "val-wizard", inputs: { props: "props" }, outputs: { onClick: "onClick" }, usesOnChanges: true, ngImport: i0, template: `
7925
7906
  <div [id]="wrapperId" class="wrapper">
7926
7907
  <ng-container *ngIf="props.state !== 'ERROR'">
7927
- <val-no-content [props]="Current.titles"></val-no-content>
7908
+ <val-no-content *ngIf="currentStep" [props]="currentStep.titles"></val-no-content>
7928
7909
  <div class="step">
7929
7910
  <div *ngIf="props.state === 'WORKING'">
7930
7911
  <val-content-loader
@@ -7950,7 +7931,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7950
7931
  args: [{ selector: 'val-wizard', standalone: true, imports: [CommonModule, NoContentComponent, ContentLoaderComponent], template: `
7951
7932
  <div [id]="wrapperId" class="wrapper">
7952
7933
  <ng-container *ngIf="props.state !== 'ERROR'">
7953
- <val-no-content [props]="Current.titles"></val-no-content>
7934
+ <val-no-content *ngIf="currentStep" [props]="currentStep.titles"></val-no-content>
7954
7935
  <div class="step">
7955
7936
  <div *ngIf="props.state === 'WORKING'">
7956
7937
  <val-content-loader
@@ -7970,7 +7951,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7970
7951
  </ng-container>
7971
7952
  </div>
7972
7953
  `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.wrapper{height:auto;display:flex;flex-direction:column;justify-content:space-between;position:relative;min-height:320px}.step{min-height:9.375rem;margin:16px 0;text-align:center}\n"] }]
7973
- }], ctorParameters: () => [], propDecorators: { props: [{
7954
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { props: [{
7974
7955
  type: Input
7975
7956
  }], onClick: [{
7976
7957
  type: Output