valtech-components 2.0.343 → 2.0.345

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,78 @@ 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
+ this.currentStepTitles = null;
17
+ }
18
+ ngOnInit() {
19
+ this.updateCurrentStep();
20
+ }
21
+ ngOnChanges(changes) {
22
+ if (changes['props']) {
23
+ this.updateCurrentStep();
24
+ this.cdr.markForCheck();
25
+ }
26
+ }
27
+ updateCurrentStep() {
28
+ if (this.props?.steps && this.props?.current) {
29
+ this.currentStep = this.props.steps[this.props.current];
30
+ this.currentStepTitles = this.currentStep?.titles || null;
31
+ }
31
32
  }
32
- ngOnInit() { }
33
- /**
34
- * Cambia el estado del wizard a 'WORKING' y deshabilita los botones del paso actual.
35
- */
36
33
  working() {
37
34
  this.props.state = ComponentStates.WORKING;
38
- this.Current.buttons.map(x => {
39
- x.state = ComponentStates.DISABLED;
40
- });
35
+ if (this.Current?.buttons) {
36
+ this.Current.buttons.forEach(button => {
37
+ button.state = ComponentStates.DISABLED;
38
+ });
39
+ }
40
+ this.cdr.markForCheck();
41
41
  }
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
42
  done() {
47
43
  if (this.props.state === ComponentStates.ENABLED) {
48
44
  return;
49
45
  }
50
46
  this.props.state = ComponentStates.ENABLED;
51
- this.Current.buttons.map(x => {
52
- x.state = ComponentStates.ENABLED;
53
- });
47
+ if (this.Current?.buttons) {
48
+ this.Current.buttons.forEach(button => {
49
+ button.state = ComponentStates.ENABLED;
50
+ });
51
+ }
52
+ this.cdr.markForCheck();
54
53
  }
55
- /**
56
- * Devuelve el paso actual del wizard.
57
- */
58
54
  get Current() {
59
- return this.props.steps[this.props.current];
55
+ if (this.props?.steps && this.props?.current) {
56
+ return this.props.steps[this.props.current];
57
+ }
58
+ return this.currentStep || { titles: null, buttons: [] };
60
59
  }
61
- /**
62
- * Cambia el paso actual del wizard y hace scroll al inicio.
63
- * @param newStep Nuevo índice de paso
64
- */
65
60
  setCurrent(newStep) {
66
61
  if (newStep === this.props.current) {
67
62
  return;
68
63
  }
69
64
  this.props.current = newStep;
65
+ this.updateCurrentStep();
66
+ this.cdr.markForCheck();
70
67
  goToTop(this.wrapperId);
71
68
  }
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
69
  setError(error) {
77
70
  if (this.props.state === ComponentStates.ERROR) {
78
71
  return;
79
72
  }
80
73
  this.props.error.titles.bottomContent.content.bellowTitle.content = error;
81
74
  this.props.state = ComponentStates.ERROR;
75
+ this.cdr.markForCheck();
82
76
  goToTop(this.wrapperId);
83
77
  }
84
- /**
85
- * Reinicia el estado de error y vuelve a estado 'ENABLED'.
86
- */
87
78
  reset() {
88
79
  this.props.error.titles.bottomContent.content.bellowTitle.content = '';
89
80
  this.done();
90
81
  }
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
82
  clickHandler(token) {
97
83
  if (!token) {
98
84
  return;
@@ -102,11 +88,11 @@ export class WizardComponent {
102
88
  }
103
89
  this.onClick.emit({ current: this.props.current, motion: MOTION.RETRY });
104
90
  }
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: `
91
+ 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 }); }
92
+ 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
93
  <div [id]="wrapperId" class="wrapper">
108
94
  <ng-container *ngIf="props.state !== 'ERROR'">
109
- <val-no-content [props]="Current.titles"></val-no-content>
95
+ <val-no-content [props]="currentStepTitles"></val-no-content>
110
96
  <div class="step">
111
97
  <div *ngIf="props.state === 'WORKING'">
112
98
  <val-content-loader
@@ -132,7 +118,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
132
118
  args: [{ selector: 'val-wizard', standalone: true, imports: [CommonModule, NoContentComponent, ContentLoaderComponent], template: `
133
119
  <div [id]="wrapperId" class="wrapper">
134
120
  <ng-container *ngIf="props.state !== 'ERROR'">
135
- <val-no-content [props]="Current.titles"></val-no-content>
121
+ <val-no-content [props]="currentStepTitles"></val-no-content>
136
122
  <div class="step">
137
123
  <div *ngIf="props.state === 'WORKING'">
138
124
  <val-content-loader
@@ -152,9 +138,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
152
138
  </ng-container>
153
139
  </div>
154
140
  `, 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: [{
141
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { props: [{
156
142
  type: Input
157
143
  }], onClick: [{
158
144
  type: Output
159
145
  }] } });
160
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQXdCLE1BQU0sU0FBUyxDQUFDOzs7QUErQnZEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLE9BQU8sZUFBZTtJQWUxQjtRQVJBOztXQUVHO1FBRUgsWUFBTyxHQUFHLElBQUksWUFBWSxFQUF1QyxDQUFDO1FBRWxFLGNBQVMsR0FBRyxnQkFBZ0IsQ0FBQztJQUVkLENBQUM7SUFFaEIsUUFBUSxLQUFJLENBQUM7SUFFYjs7T0FFRztJQUNILE9BQU87UUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUMzQixDQUFDLENBQUMsS0FBSyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBSTtRQUNGLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pELE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLE9BQU8sQ0FBQztRQUMzQyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDM0IsQ0FBQyxDQUFDLEtBQUssR0FBRyxlQUFlLENBQUMsT0FBTyxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxVQUFVLENBQUMsT0FBZTtRQUN4QixJQUFJLE9BQU8sS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25DLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQzdCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssZUFBZSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQy9DLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDMUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztRQUN6QyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN2RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2YsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztJQUMzRSxDQUFDOytHQW5HVSxlQUFlO21HQUFmLGVBQWUsbUlBdkNoQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVCxrd0ZBdkJTLFlBQVksbUlBQUUsa0JBQWtCLG9HQUFFLHNCQUFzQjs7NEZBd0N2RCxlQUFlO2tCQTNDM0IsU0FBUzsrQkFDRSxZQUFZLGNBQ1YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixDQUFDLFlBQ3pEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JUO3dEQXNCRCxLQUFLO3NCQURKLEtBQUs7Z0JBT04sT0FBTztzQkFETixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdvVG9Ub3AgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZG9tJztcbmltcG9ydCB7IENvbnRlbnRMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY29udGVudC1sb2FkZXIvY29udGVudC1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IE5vQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL25vLWNvbnRlbnQvbm8tY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTU9USU9OLCBTdGVwLCBXaXphcmRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtd2l6YXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTm9Db250ZW50Q29tcG9uZW50LCBDb250ZW50TG9hZGVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtpZF09XCJ3cmFwcGVySWRcIiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy5zdGF0ZSAhPT0gJ0VSUk9SJ1wiPlxuICAgICAgICA8dmFsLW5vLWNvbnRlbnQgW3Byb3BzXT1cIkN1cnJlbnQudGl0bGVzXCI+PC92YWwtbm8tY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcHMuc3RhdGUgPT09ICdXT1JLSU5HJ1wiPlxuICAgICAgICAgICAgPHZhbC1jb250ZW50LWxvYWRlclxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjaXJjdWxhcicsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICAgIHRleHQ6ICdQb3IgZmF2b3IgZXNwZXJlLi4uJyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdGVwXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy5zdGF0ZSA9PT0gJ0VSUk9SJ1wiPlxuICAgICAgICA8dmFsLW5vLWNvbnRlbnQgW3Byb3BzXT1cInByb3BzLmVycm9yLnRpdGxlc1wiIChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcigkZXZlbnQpXCI+PC92YWwtbm8tY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi93aXphcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIFdpemFyZENvbXBvbmVudFxuICpcbiAqIENvbXBvbmVudGUgcGFyYSBmbHVqb3MgZGUgcGFzb3MgKHdpemFyZCkgcmV1dGlsaXphYmxlLCBjb24gc29wb3J0ZSBwYXJhIGVzdGFkb3MsIGVycm9yZXMgeSBuYXZlZ2FjacOzbiBlbnRyZSBwYXNvcy5cbiAqIFBlcm1pdGUgbW9zdHJhciBjb250ZW5pZG8gcGVyc29uYWxpemFkbyBwb3IgcGFzbyB5IG1hbmVqYXIgYWNjaW9uZXMgZGUgbmF2ZWdhY2nDs24uXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtd2l6YXJkIFtwcm9wc109XCJ3aXphcmRQcm9wc1wiIChvbkNsaWNrKT1cImhhbmRsZVdpemFyZE5hdigkZXZlbnQpXCI+XG4gKiAgIDxkaXYgc3RlcD5Db250ZW5pZG8gZGVsIHBhc288L2Rpdj5cbiAqIDwvdmFsLXdpemFyZD5cbiAqXG4gKiBAaW5wdXQgcHJvcHMge1dpemFyZE1ldGFkYXRhfSAtIE1ldGFkYXRvcyBkZWwgd2l6YXJkLCBwYXNvcyB5IGVzdGFkby5cbiAqIEBvdXRwdXQgb25DbGljayAtIEVtaXRlIGVsIHBhc28gYWN0dWFsIHkgbGEgYWNjacOzbiBkZSBuYXZlZ2FjacOzbiAoTU9USU9OKS5cbiAqL1xuZXhwb3J0IGNsYXNzIFdpemFyZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8qKlxuICAgKiBNZXRhZGF0b3MgZGVsIHdpemFyZCwgcGFzb3MgeSBlc3RhZG8uXG4gICAqL1xuICBASW5wdXQoKVxuICBwcm9wczogV2l6YXJkTWV0YWRhdGE7XG5cbiAgLyoqXG4gICAqIEV2ZW50byBlbWl0aWRvIGFsIGhhY2VyIGNsaWNrIGVuIHVuYSBhY2Npw7NuIGRlIG5hdmVnYWNpw7NuLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY3VycmVudDogbnVtYmVyOyBtb3Rpb246IE1PVElPTiB9PigpO1xuXG4gIHdyYXBwZXJJZCA9ICd3aXphcmQtd3JhcHBlcic7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICAvKipcbiAgICogQ2FtYmlhIGVsIGVzdGFkbyBkZWwgd2l6YXJkIGEgJ1dPUktJTkcnIHkgZGVzaGFiaWxpdGEgbG9zIGJvdG9uZXMgZGVsIHBhc28gYWN0dWFsLlxuICAgKi9cbiAgd29ya2luZygpIHtcbiAgICB0aGlzLnByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLldPUktJTkc7XG4gICAgdGhpcy5DdXJyZW50LmJ1dHRvbnMubWFwKHggPT4ge1xuICAgICAgeC5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5ESVNBQkxFRDtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYW1iaWEgZWwgZXN0YWRvIGRlbCB3aXphcmQgYSAnRU5BQkxFRCcgeSBoYWJpbGl0YSBsb3MgYm90b25lcyBkZWwgcGFzbyBhY3R1YWwuXG4gICAqIE5vIHJlYWxpemEgY2FtYmlvcyBzaSB5YSBlc3TDoSBlbiBlc3RhZG8gJ0VOQUJMRUQnLlxuICAgKi9cbiAgZG9uZSgpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQ7XG4gICAgdGhpcy5DdXJyZW50LmJ1dHRvbnMubWFwKHggPT4ge1xuICAgICAgeC5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIERldnVlbHZlIGVsIHBhc28gYWN0dWFsIGRlbCB3aXphcmQuXG4gICAqL1xuICBnZXQgQ3VycmVudCgpOiBTdGVwIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5zdGVwc1t0aGlzLnByb3BzLmN1cnJlbnRdO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbWJpYSBlbCBwYXNvIGFjdHVhbCBkZWwgd2l6YXJkIHkgaGFjZSBzY3JvbGwgYWwgaW5pY2lvLlxuICAgKiBAcGFyYW0gbmV3U3RlcCBOdWV2byDDrW5kaWNlIGRlIHBhc29cbiAgICovXG4gIHNldEN1cnJlbnQobmV3U3RlcDogbnVtYmVyKSB7XG4gICAgaWYgKG5ld1N0ZXAgPT09IHRoaXMucHJvcHMuY3VycmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnByb3BzLmN1cnJlbnQgPSBuZXdTdGVwO1xuICAgIGdvVG9Ub3AodGhpcy53cmFwcGVySWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVzdGFibGVjZSBlbCBlc3RhZG8gZGUgZXJyb3IgeSBtdWVzdHJhIGVsIG1lbnNhamUgZGUgZXJyb3IgZW4gZWwgYmFubmVyIGluZmVyaW9yLlxuICAgKiBAcGFyYW0gZXJyb3IgTWVuc2FqZSBkZSBlcnJvciBhIG1vc3RyYXJcbiAgICovXG4gIHNldEVycm9yKGVycm9yOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5wcm9wcy5zdGF0ZSA9PT0gQ29tcG9uZW50U3RhdGVzLkVSUk9SKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcm9wcy5lcnJvci50aXRsZXMuYm90dG9tQ29udGVudC5jb250ZW50LmJlbGxvd1RpdGxlLmNvbnRlbnQgPSBlcnJvcjtcbiAgICB0aGlzLnByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLkVSUk9SO1xuICAgIGdvVG9Ub3AodGhpcy53cmFwcGVySWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlaW5pY2lhIGVsIGVzdGFkbyBkZSBlcnJvciB5IHZ1ZWx2ZSBhIGVzdGFkbyAnRU5BQkxFRCcuXG4gICAqL1xuICByZXNldCgpIHtcbiAgICB0aGlzLnByb3BzLmVycm9yLnRpdGxlcy5ib3R0b21Db250ZW50LmNvbnRlbnQuYmVsbG93VGl0bGUuY29udGVudCA9ICcnO1xuICAgIHRoaXMuZG9uZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbmVqYSBlbCBjbGljayBlbiBlbCBiYW5uZXIgZGUgZXJyb3IgeSBlbWl0ZSBlbCBldmVudG8gZGUgbmF2ZWdhY2nDs24uXG4gICAqIFNpIGVsIHRva2VuIGNvbnRpZW5lICdyZXRyeScsIHJlaW5pY2lhIGVsIHdpemFyZC5cbiAgICogQHBhcmFtIHRva2VuIFRva2VuIGRlIGxhIGFjY2nDs24gY2xpY2FkYVxuICAgKi9cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodG9rZW4uaW5jbHVkZXMoJ3JldHJ5JykpIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IGN1cnJlbnQ6IHRoaXMucHJvcHMuY3VycmVudCwgbW90aW9uOiBNT1RJT04uUkVUUlkgfSk7XG4gIH1cbn1cbiJdfQ==
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ZhbHRlY2gtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL3dpemFyZC93aXphcmQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUNqRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxNQUFNLEVBQXdCLE1BQU0sU0FBUyxDQUFDOzs7QUErQnZELE1BQU0sT0FBTyxlQUFlO0lBVzFCLFlBQW9CLEdBQXNCO1FBQXRCLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBTjFDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBdUMsQ0FBQztRQUVsRSxjQUFTLEdBQUcsZ0JBQWdCLENBQUM7UUFDN0IsZ0JBQVcsR0FBZ0IsSUFBSSxDQUFDO1FBQ2hDLHNCQUFpQixHQUFRLElBQUksQ0FBQztJQUVlLENBQUM7SUFFOUMsUUFBUTtRQUNOLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUN6QixJQUFJLENBQUMsR0FBRyxD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LENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztRQUN2RSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQWM7UUFDekIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDZixDQUFDO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7K0dBakdVLGVBQWU7bUdBQWYsZUFBZSx3SkF6QmhCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JULGt3RkF2QlMsWUFBWSxtSUFBRSxrQkFBa0Isb0dBQUUsc0JBQXNCOzs0RkEwQnZELGVBQWU7a0JBN0IzQixTQUFTOytCQUNFLFlBQVksY0FDVixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsc0JBQXNCLENBQUMsWUFDekQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7c0ZBS0QsS0FBSztzQkFESixLQUFLO2dCQUlOLE9BQU87c0JBRE4sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGdvVG9Ub3AgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvdXRpbHMvZG9tJztcbmltcG9ydCB7IENvbnRlbnRMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY29udGVudC1sb2FkZXIvY29udGVudC1sb2FkZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcyB9IGZyb20gJy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IE5vQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4uL25vLWNvbnRlbnQvbm8tY29udGVudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgTU9USU9OLCBTdGVwLCBXaXphcmRNZXRhZGF0YSB9IGZyb20gJy4vdHlwZXMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtd2l6YXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTm9Db250ZW50Q29tcG9uZW50LCBDb250ZW50TG9hZGVyQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IFtpZF09XCJ3cmFwcGVySWRcIiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy5zdGF0ZSAhPT0gJ0VSUk9SJ1wiPlxuICAgICAgICA8dmFsLW5vLWNvbnRlbnQgW3Byb3BzXT1cImN1cnJlbnRTdGVwVGl0bGVzXCI+PC92YWwtbm8tY29udGVudD5cbiAgICAgICAgPGRpdiBjbGFzcz1cInN0ZXBcIj5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwicHJvcHMuc3RhdGUgPT09ICdXT1JLSU5HJ1wiPlxuICAgICAgICAgICAgPHZhbC1jb250ZW50LWxvYWRlclxuICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgIG5hbWU6ICdjaXJjdWxhcicsXG4gICAgICAgICAgICAgICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICAgICAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgICAgICAgIHRleHQ6ICdQb3IgZmF2b3IgZXNwZXJlLi4uJyxcbiAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltzdGVwXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJwcm9wcy5zdGF0ZSA9PT0gJ0VSUk9SJ1wiPlxuICAgICAgICA8dmFsLW5vLWNvbnRlbnQgW3Byb3BzXT1cInByb3BzLmVycm9yLnRpdGxlc1wiIChvbkNsaWNrKT1cImNsaWNrSGFuZGxlcigkZXZlbnQpXCI+PC92YWwtbm8tY29udGVudD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi93aXphcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgV2l6YXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwcm9wczogV2l6YXJkTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpXG4gIG9uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHsgY3VycmVudDogbnVtYmVyOyBtb3Rpb246IE1PVElPTiB9PigpO1xuXG4gIHdyYXBwZXJJZCA9ICd3aXphcmQtd3JhcHBlcic7XG4gIGN1cnJlbnRTdGVwOiBTdGVwIHwgbnVsbCA9IG51bGw7XG4gIGN1cnJlbnRTdGVwVGl0bGVzOiBhbnkgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge31cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZUN1cnJlbnRTdGVwKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgaWYgKGNoYW5nZXNbJ3Byb3BzJ10pIHtcbiAgICAgIHRoaXMudXBkYXRlQ3VycmVudFN0ZXAoKTtcbiAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQ3VycmVudFN0ZXAoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHM/LnN0ZXBzICYmIHRoaXMucHJvcHM/LmN1cnJlbnQpIHtcbiAgICAgIHRoaXMuY3VycmVudFN0ZXAgPSB0aGlzLnByb3BzLnN0ZXBzW3RoaXMucHJvcHMuY3VycmVudF07XG4gICAgICB0aGlzLmN1cnJlbnRTdGVwVGl0bGVzID0gdGhpcy5jdXJyZW50U3RlcD8udGl0bGVzIHx8IG51bGw7XG4gICAgfVxuICB9XG5cbiAgd29ya2luZygpIHtcbiAgICB0aGlzLnByb3BzLnN0YXRlID0gQ29tcG9uZW50U3RhdGVzLldPUktJTkc7XG4gICAgaWYgKHRoaXMuQ3VycmVudD8uYnV0dG9ucykge1xuICAgICAgdGhpcy5DdXJyZW50LmJ1dHRvbnMuZm9yRWFjaChidXR0b24gPT4ge1xuICAgICAgICBidXR0b24uc3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRElTQUJMRUQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBkb25lKCkge1xuICAgIGlmICh0aGlzLnByb3BzLnN0YXRlID09PSBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJvcHMuc3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRDtcbiAgICBpZiAodGhpcy5DdXJyZW50Py5idXR0b25zKSB7XG4gICAgICB0aGlzLkN1cnJlbnQuYnV0dG9ucy5mb3JFYWNoKGJ1dHRvbiA9PiB7XG4gICAgICAgIGJ1dHRvbi5zdGF0ZSA9IENvbXBvbmVudFN0YXRlcy5FTkFCTEVEO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgZ2V0IEN1cnJlbnQoKTogU3RlcCB7XG4gICAgaWYgKHRoaXMucHJvcHM/LnN0ZXBzICYmIHRoaXMucHJvcHM/LmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnN0ZXBzW3RoaXMucHJvcHMuY3VycmVudF07XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRTdGVwIHx8IHsgdGl0bGVzOiBudWxsLCBidXR0b25zOiBbXSB9O1xuICB9XG5cbiAgc2V0Q3VycmVudChuZXdTdGVwOiBudW1iZXIpIHtcbiAgICBpZiAobmV3U3RlcCA9PT0gdGhpcy5wcm9wcy5jdXJyZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucHJvcHMuY3VycmVudCA9IG5ld1N0ZXA7XG4gICAgdGhpcy51cGRhdGVDdXJyZW50U3RlcCgpO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIGdvVG9Ub3AodGhpcy53cmFwcGVySWQpO1xuICB9XG5cbiAgc2V0RXJyb3IoZXJyb3I6IHN0cmluZykge1xuICAgIGlmICh0aGlzLnByb3BzLnN0YXRlID09PSBDb21wb25lbnRTdGF0ZXMuRVJST1IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnByb3BzLmVycm9yLnRpdGxlcy5ib3R0b21Db250ZW50LmNvbnRlbnQuYmVsbG93VGl0bGUuY29udGVudCA9IGVycm9yO1xuICAgIHRoaXMucHJvcHMuc3RhdGUgPSBDb21wb25lbnRTdGF0ZXMuRVJST1I7XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgZ29Ub1RvcCh0aGlzLndyYXBwZXJJZCk7XG4gIH1cblxuICByZXNldCgpIHtcbiAgICB0aGlzLnByb3BzLmVycm9yLnRpdGxlcy5ib3R0b21Db250ZW50LmNvbnRlbnQuYmVsbG93VGl0bGUuY29udGVudCA9ICcnO1xuICAgIHRoaXMuZG9uZSgpO1xuICB9XG5cbiAgY2xpY2tIYW5kbGVyKHRva2VuPzogc3RyaW5nKSB7XG4gICAgaWYgKCF0b2tlbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodG9rZW4uaW5jbHVkZXMoJ3JldHJ5JykpIHtcbiAgICAgIHRoaXMucmVzZXQoKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2xpY2suZW1pdCh7IGN1cnJlbnQ6IHRoaXMucHJvcHMuY3VycmVudCwgbW90aW9uOiBNT1RJT04uUkVUUlkgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -7825,92 +7825,78 @@ 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
+ this.currentStepTitles = null;
7835
+ }
7836
+ ngOnInit() {
7837
+ this.updateCurrentStep();
7838
+ }
7839
+ ngOnChanges(changes) {
7840
+ if (changes['props']) {
7841
+ this.updateCurrentStep();
7842
+ this.cdr.markForCheck();
7843
+ }
7844
+ }
7845
+ updateCurrentStep() {
7846
+ if (this.props?.steps && this.props?.current) {
7847
+ this.currentStep = this.props.steps[this.props.current];
7848
+ this.currentStepTitles = this.currentStep?.titles || null;
7849
+ }
7849
7850
  }
7850
- ngOnInit() { }
7851
- /**
7852
- * Cambia el estado del wizard a 'WORKING' y deshabilita los botones del paso actual.
7853
- */
7854
7851
  working() {
7855
7852
  this.props.state = ComponentStates.WORKING;
7856
- this.Current.buttons.map(x => {
7857
- x.state = ComponentStates.DISABLED;
7858
- });
7853
+ if (this.Current?.buttons) {
7854
+ this.Current.buttons.forEach(button => {
7855
+ button.state = ComponentStates.DISABLED;
7856
+ });
7857
+ }
7858
+ this.cdr.markForCheck();
7859
7859
  }
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
7860
  done() {
7865
7861
  if (this.props.state === ComponentStates.ENABLED) {
7866
7862
  return;
7867
7863
  }
7868
7864
  this.props.state = ComponentStates.ENABLED;
7869
- this.Current.buttons.map(x => {
7870
- x.state = ComponentStates.ENABLED;
7871
- });
7865
+ if (this.Current?.buttons) {
7866
+ this.Current.buttons.forEach(button => {
7867
+ button.state = ComponentStates.ENABLED;
7868
+ });
7869
+ }
7870
+ this.cdr.markForCheck();
7872
7871
  }
7873
- /**
7874
- * Devuelve el paso actual del wizard.
7875
- */
7876
7872
  get Current() {
7877
- return this.props.steps[this.props.current];
7873
+ if (this.props?.steps && this.props?.current) {
7874
+ return this.props.steps[this.props.current];
7875
+ }
7876
+ return this.currentStep || { titles: null, buttons: [] };
7878
7877
  }
7879
- /**
7880
- * Cambia el paso actual del wizard y hace scroll al inicio.
7881
- * @param newStep Nuevo índice de paso
7882
- */
7883
7878
  setCurrent(newStep) {
7884
7879
  if (newStep === this.props.current) {
7885
7880
  return;
7886
7881
  }
7887
7882
  this.props.current = newStep;
7883
+ this.updateCurrentStep();
7884
+ this.cdr.markForCheck();
7888
7885
  goToTop(this.wrapperId);
7889
7886
  }
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
7887
  setError(error) {
7895
7888
  if (this.props.state === ComponentStates.ERROR) {
7896
7889
  return;
7897
7890
  }
7898
7891
  this.props.error.titles.bottomContent.content.bellowTitle.content = error;
7899
7892
  this.props.state = ComponentStates.ERROR;
7893
+ this.cdr.markForCheck();
7900
7894
  goToTop(this.wrapperId);
7901
7895
  }
7902
- /**
7903
- * Reinicia el estado de error y vuelve a estado 'ENABLED'.
7904
- */
7905
7896
  reset() {
7906
7897
  this.props.error.titles.bottomContent.content.bellowTitle.content = '';
7907
7898
  this.done();
7908
7899
  }
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
7900
  clickHandler(token) {
7915
7901
  if (!token) {
7916
7902
  return;
@@ -7920,11 +7906,11 @@ class WizardComponent {
7920
7906
  }
7921
7907
  this.onClick.emit({ current: this.props.current, motion: MOTION.RETRY });
7922
7908
  }
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: `
7909
+ 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 }); }
7910
+ 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
7911
  <div [id]="wrapperId" class="wrapper">
7926
7912
  <ng-container *ngIf="props.state !== 'ERROR'">
7927
- <val-no-content [props]="Current.titles"></val-no-content>
7913
+ <val-no-content [props]="currentStepTitles"></val-no-content>
7928
7914
  <div class="step">
7929
7915
  <div *ngIf="props.state === 'WORKING'">
7930
7916
  <val-content-loader
@@ -7950,7 +7936,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7950
7936
  args: [{ selector: 'val-wizard', standalone: true, imports: [CommonModule, NoContentComponent, ContentLoaderComponent], template: `
7951
7937
  <div [id]="wrapperId" class="wrapper">
7952
7938
  <ng-container *ngIf="props.state !== 'ERROR'">
7953
- <val-no-content [props]="Current.titles"></val-no-content>
7939
+ <val-no-content [props]="currentStepTitles"></val-no-content>
7954
7940
  <div class="step">
7955
7941
  <div *ngIf="props.state === 'WORKING'">
7956
7942
  <val-content-loader
@@ -7970,7 +7956,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
7970
7956
  </ng-container>
7971
7957
  </div>
7972
7958
  `, 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: [{
7959
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { props: [{
7974
7960
  type: Input
7975
7961
  }], onClick: [{
7976
7962
  type: Output