@litigiovirtual/ius-design-components 1.0.70 → 1.0.71

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,48 +1,109 @@
1
1
  import { CommonModule } from '@angular/common';
2
2
  import { Component, EventEmitter, Input, Output } from '@angular/core';
3
- import { LoadingCircleComponent } from "../loading-circle/loading-circle.component";
4
- import { IconMdComponent } from "../icon-md/icon-md.component";
3
+ import { IconMdComponent } from '../icon-md/icon-md.component';
4
+ import { LoadingCircleComponent } from '../loading-circle/loading-circle.component';
5
5
  import * as i0 from "@angular/core";
6
6
  export class ButtonDynamicComponent {
7
7
  constructor() {
8
- this.textButton = 'Label';
8
+ this.labelDefault = 'Guardar';
9
+ this.labelSuccess = 'Guardado';
10
+ this.labelError = 'Error';
9
11
  this.disabled = false;
10
12
  this.loading = false;
11
- this.success = false;
12
- this.error = false;
13
- this.autoResetDelay = 3000;
13
+ this.autoReset = true;
14
+ this.autoResetDelay = 1500;
14
15
  this.buttonClicked = new EventEmitter();
16
+ this.state = 'default';
15
17
  }
16
- onClick() {
17
- if (!this.disabled && !this.loading) {
18
- this.buttonClicked.emit();
18
+ ngOnChanges(changes) {
19
+ // 1) disabled manda todo a 'disabled'
20
+ if (this.disabled) {
21
+ this.setState('disabled');
22
+ return;
23
+ }
24
+ // 2) loading gobierna mientras es true
25
+ if (changes['loading']) {
26
+ if (this.loading) {
27
+ this.clearTimer();
28
+ this.setState('loading');
29
+ return;
30
+ }
31
+ else {
32
+ // loading → false: mirar result
33
+ this.applyResultState();
34
+ return;
35
+ }
36
+ }
37
+ // 3) Si cambió 'result' y no estamos cargando, aplicar
38
+ if (changes['result'] && !this.loading) {
39
+ this.applyResultState();
40
+ }
41
+ // 4) fallback
42
+ if (!this.loading && !this.result) {
43
+ this.setState('default');
19
44
  }
20
45
  }
21
- get showSpinner() {
22
- return this.loading;
46
+ applyResultState() {
47
+ if (this.result === 'success') {
48
+ this.setState('success');
49
+ this.armAutoReset();
50
+ }
51
+ else if (this.result === 'error') {
52
+ this.setState('error');
53
+ this.armAutoReset();
54
+ }
55
+ else {
56
+ this.setState('default');
57
+ }
23
58
  }
24
- get showSuccess() {
25
- return this.success && !this.loading;
59
+ armAutoReset() {
60
+ this.clearTimer();
61
+ if (!this.autoReset)
62
+ return;
63
+ this.resetTimer = setTimeout(() => {
64
+ this.setState('default');
65
+ }, this.autoResetDelay);
66
+ }
67
+ clearTimer() {
68
+ if (this.resetTimer) {
69
+ clearTimeout(this.resetTimer);
70
+ this.resetTimer = null;
71
+ }
72
+ }
73
+ setState(s) {
74
+ this.state = s;
75
+ }
76
+ onClick() {
77
+ if (this.state === 'loading' || this.state === 'disabled')
78
+ return;
79
+ this.buttonClicked.emit();
80
+ }
81
+ ngOnDestroy() {
82
+ this.clearTimer();
26
83
  }
27
84
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonDynamicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
28
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ButtonDynamicComponent, isStandalone: true, selector: "ius-button-dynamic", inputs: { textButton: "textButton", disabled: "disabled", loading: "loading", success: "success", error: "error", autoResetDelay: "autoResetDelay" }, outputs: { buttonClicked: "buttonClicked" }, ngImport: i0, template: "<button \r\n [disabled]=\"disabled\"\r\n (click)=\"onClick()\"\r\n class=\"ius-btn\"\r\n [class.loading]=\"loading\"\r\n [class.success]=\"success\"\r\n [class.error]=\"error\"\r\n>\r\n@if (loading) {\r\n <ius-loading-circle></ius-loading-circle>\r\n }\r\n @else if (success && !loading) {\r\n <ius-icon-md iconName=\"icon-check-circle\"></ius-icon-md>\r\n {{ textButton }}\r\n }\r\n @else if (error && !loading) {\r\n <ius-icon-md iconName=\"icon-error\"></ius-icon-md>\r\n {{ textButton }}\r\n }\r\n @else {\r\n {{ textButton }}\r\n }\r\n</button>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:40px;padding:12px 24px;border:none;border-radius:14px;background-color:#013169;color:#fff;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;cursor:pointer}.ius-btn:hover:not(:disabled){background-color:#08a6db;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014}.ius-btn:active:not(:disabled){background-color:#0581bc}.ius-btn:disabled{background-color:#f5f5f5;color:#bfbfbf;cursor:not-allowed}button.loading{background-color:#0581bc}button.success{background-color:#7caf25}button.error{background-color:#db2e2a}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: LoadingCircleComponent, selector: "ius-loading-circle", inputs: ["show"] }, { kind: "component", type: IconMdComponent, selector: "ius-icon-md", inputs: ["iconName", "color"] }] }); }
85
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.12", type: ButtonDynamicComponent, isStandalone: true, selector: "ius-button-dynamic", inputs: { labelDefault: "labelDefault", labelSuccess: "labelSuccess", labelError: "labelError", disabled: "disabled", loading: "loading", result: "result", autoReset: "autoReset", autoResetDelay: "autoResetDelay" }, outputs: { buttonClicked: "buttonClicked" }, usesOnChanges: true, ngImport: i0, template: "<button class=\"ius-btn\" [attr.data-state]=\"state\" [disabled]=\"state === 'disabled' || state === 'loading'\"\r\n (click)=\"onClick()\" aria-live=\"polite\">\r\n @switch (state) {\r\n @case ('loading') {\r\n <ius-loading-circle></ius-loading-circle>\r\n }\r\n @case ('success') {\r\n <ius-icon-md iconName=\"icon-check-circle\"></ius-icon-md>\r\n <span>{{ labelSuccess }}</span>\r\n }\r\n @case ('error') {\r\n <ius-icon-md iconName=\"icon-error\"></ius-icon-md>\r\n <span>{{ labelError }}</span>\r\n }\r\n @default {\r\n <span>{{ labelDefault }}</span>\r\n }\r\n }\r\n</button>", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;position:relative;align-items:center;justify-content:center;gap:8px;width:100%;height:40px;padding:12px 24px;border:none;border-radius:14px;background-color:#013169;color:#fff;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;cursor:pointer;transition:background-color .15s ease,box-shadow .15s ease,transform .02s ease}.ius-btn:hover:not(:disabled):not([data-state=loading]):not([data-state=success]):not([data-state=error]){background-color:#08a6db;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014}.ius-btn:active:not(:disabled){background-color:#0581bc}.ius-btn:disabled{background-color:#f5f5f5;color:#bfbfbf;cursor:not-allowed}.ius-btn[data-state=loading]{background-color:#0581bc}.ius-btn[data-state=success]{background-color:#7caf25}.ius-btn[data-state=error]{background-color:#db2e2a}.ius-btn[data-state=disabled]{background-color:#f5f5f5}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: LoadingCircleComponent, selector: "ius-loading-circle", inputs: ["show"] }, { kind: "component", type: IconMdComponent, selector: "ius-icon-md", inputs: ["iconName", "color"] }] }); }
29
86
  }
30
87
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ButtonDynamicComponent, decorators: [{
31
88
  type: Component,
32
- args: [{ selector: 'ius-button-dynamic', standalone: true, imports: [CommonModule, LoadingCircleComponent, IconMdComponent], template: "<button \r\n [disabled]=\"disabled\"\r\n (click)=\"onClick()\"\r\n class=\"ius-btn\"\r\n [class.loading]=\"loading\"\r\n [class.success]=\"success\"\r\n [class.error]=\"error\"\r\n>\r\n@if (loading) {\r\n <ius-loading-circle></ius-loading-circle>\r\n }\r\n @else if (success && !loading) {\r\n <ius-icon-md iconName=\"icon-check-circle\"></ius-icon-md>\r\n {{ textButton }}\r\n }\r\n @else if (error && !loading) {\r\n <ius-icon-md iconName=\"icon-error\"></ius-icon-md>\r\n {{ textButton }}\r\n }\r\n @else {\r\n {{ textButton }}\r\n }\r\n</button>\r\n", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:40px;padding:12px 24px;border:none;border-radius:14px;background-color:#013169;color:#fff;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;cursor:pointer}.ius-btn:hover:not(:disabled){background-color:#08a6db;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014}.ius-btn:active:not(:disabled){background-color:#0581bc}.ius-btn:disabled{background-color:#f5f5f5;color:#bfbfbf;cursor:not-allowed}button.loading{background-color:#0581bc}button.success{background-color:#7caf25}button.error{background-color:#db2e2a}\n"] }]
33
- }], propDecorators: { textButton: [{
89
+ args: [{ selector: 'ius-button-dynamic', standalone: true, imports: [CommonModule, LoadingCircleComponent, IconMdComponent], template: "<button class=\"ius-btn\" [attr.data-state]=\"state\" [disabled]=\"state === 'disabled' || state === 'loading'\"\r\n (click)=\"onClick()\" aria-live=\"polite\">\r\n @switch (state) {\r\n @case ('loading') {\r\n <ius-loading-circle></ius-loading-circle>\r\n }\r\n @case ('success') {\r\n <ius-icon-md iconName=\"icon-check-circle\"></ius-icon-md>\r\n <span>{{ labelSuccess }}</span>\r\n }\r\n @case ('error') {\r\n <ius-icon-md iconName=\"icon-error\"></ius-icon-md>\r\n <span>{{ labelError }}</span>\r\n }\r\n @default {\r\n <span>{{ labelDefault }}</span>\r\n }\r\n }\r\n</button>", styles: [".h1{font-family:Roboto,sans-serif;font-size:2.375rem;font-weight:500;line-height:46px}.h2{font-family:Roboto,sans-serif;font-size:1.875rem;font-weight:700;line-height:38px}.h3{font-family:Roboto,sans-serif;font-size:1.5rem;font-weight:500;line-height:32px}.h4{font-family:Roboto,sans-serif;font-size:1.25rem;font-weight:700;line-height:26px}.h5{font-family:Roboto,sans-serif;font-size:1.125rem;font-weight:500;line-height:24px;letter-spacing:.18px}.label-large{font-family:Roboto,sans-serif;font-size:1rem;font-weight:500;line-height:22px}.body-large{font-family:Rubik,sans-serif;font-size:1rem;font-weight:400;line-height:22px}.label-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;letter-spacing:.28px}.body-base{font-family:Rubik,sans-serif;font-size:.875rem;font-weight:400;line-height:20px;font-style:italic;letter-spacing:.28px}.body-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;letter-spacing:.28px}.body-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:400;line-height:16px;font-style:italic;letter-spacing:.28px}.caption-sm{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;letter-spacing:.28px}.caption-sm-italic{font-family:Rubik,sans-serif;font-size:.75rem;font-weight:500;line-height:16px;font-style:italic;letter-spacing:.28px}.ius-btn{display:flex;position:relative;align-items:center;justify-content:center;gap:8px;width:100%;height:40px;padding:12px 24px;border:none;border-radius:14px;background-color:#013169;color:#fff;font-family:Rubik,sans-serif;font-size:.875rem;font-weight:500;line-height:20px;cursor:pointer;transition:background-color .15s ease,box-shadow .15s ease,transform .02s ease}.ius-btn:hover:not(:disabled):not([data-state=loading]):not([data-state=success]):not([data-state=error]){background-color:#08a6db;box-shadow:0 1px 3px #0000001f,0 1px 2px #00000014}.ius-btn:active:not(:disabled){background-color:#0581bc}.ius-btn:disabled{background-color:#f5f5f5;color:#bfbfbf;cursor:not-allowed}.ius-btn[data-state=loading]{background-color:#0581bc}.ius-btn[data-state=success]{background-color:#7caf25}.ius-btn[data-state=error]{background-color:#db2e2a}.ius-btn[data-state=disabled]{background-color:#f5f5f5}\n"] }]
90
+ }], propDecorators: { labelDefault: [{
91
+ type: Input
92
+ }], labelSuccess: [{
93
+ type: Input
94
+ }], labelError: [{
34
95
  type: Input
35
96
  }], disabled: [{
36
97
  type: Input
37
98
  }], loading: [{
38
99
  type: Input
39
- }], success: [{
100
+ }], result: [{
40
101
  type: Input
41
- }], error: [{
102
+ }], autoReset: [{
42
103
  type: Input
43
104
  }], autoResetDelay: [{
44
105
  type: Input
45
106
  }], buttonClicked: [{
46
107
  type: Output
47
108
  }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWR5bmFtaWMvYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWR5bmFtaWMvYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkUsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDcEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhCQUE4QixDQUFDOztBQVMvRCxNQUFNLE9BQU8sc0JBQXNCO0lBUG5DO1FBUVcsZUFBVSxHQUFXLE9BQU8sQ0FBQztRQUM3QixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFlBQU8sR0FBWSxLQUFLLENBQUM7UUFDekIsWUFBTyxHQUFZLEtBQUssQ0FBQztRQUN6QixVQUFLLEdBQVksS0FBSyxDQUFDO1FBQ3ZCLG1CQUFjLEdBQVcsSUFBSSxDQUFDO1FBQzdCLGtCQUFhLEdBQXVCLElBQUksWUFBWSxFQUFFLENBQUM7S0FlbEU7SUFiQyxPQUFPO1FBQ0wsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFHLENBQUM7WUFDckMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM1QixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN2QyxDQUFDOytHQXJCVSxzQkFBc0I7bUdBQXRCLHNCQUFzQixpUkNabkMsMGtCQXVCQSxxZ0VEZlksWUFBWSwrQkFBRSxzQkFBc0IsaUZBQUUsZUFBZTs7NEZBSXBELHNCQUFzQjtrQkFQbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLHNCQUFzQixFQUFFLGVBQWUsQ0FBQzs4QkFLdkQsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IExvYWRpbmdDaXJjbGVDb21wb25lbnQgfSBmcm9tIFwiLi4vbG9hZGluZy1jaXJjbGUvbG9hZGluZy1jaXJjbGUuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEljb25NZENvbXBvbmVudCB9IGZyb20gXCIuLi9pY29uLW1kL2ljb24tbWQuY29tcG9uZW50XCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2l1cy1idXR0b24tZHluYW1pYycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBMb2FkaW5nQ2lyY2xlQ29tcG9uZW50LCBJY29uTWRDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9idXR0b24tZHluYW1pYy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2J1dHRvbi1keW5hbWljLmNvbXBvbmVudC5zY3NzJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgQnV0dG9uRHluYW1pY0NvbXBvbmVudCAge1xyXG4gIEBJbnB1dCgpIHRleHRCdXR0b246IHN0cmluZyA9ICdMYWJlbCc7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBsb2FkaW5nOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgc3VjY2VzczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGVycm9yOiBib29sZWFuID0gZmFsc2U7XHJcbiAgQElucHV0KCkgYXV0b1Jlc2V0RGVsYXk6IG51bWJlciA9IDMwMDA7IFxyXG4gIEBPdXRwdXQoKSBidXR0b25DbGlja2VkOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIG9uQ2xpY2soKSB7XHJcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMubG9hZGluZyApIHtcclxuICAgICAgdGhpcy5idXR0b25DbGlja2VkLmVtaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldCBzaG93U3Bpbm5lcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmxvYWRpbmc7XHJcbiAgfVxyXG5cclxuICBnZXQgc2hvd1N1Y2Nlc3MoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zdWNjZXNzICYmICF0aGlzLmxvYWRpbmc7XHJcbiAgfVxyXG59XHJcbiIsIjxidXR0b24gXHJcbiAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAoY2xpY2spPVwib25DbGljaygpXCJcclxuICBjbGFzcz1cIml1cy1idG5cIlxyXG4gIFtjbGFzcy5sb2FkaW5nXT1cImxvYWRpbmdcIlxyXG4gIFtjbGFzcy5zdWNjZXNzXT1cInN1Y2Nlc3NcIlxyXG4gIFtjbGFzcy5lcnJvcl09XCJlcnJvclwiXHJcbj5cclxuQGlmIChsb2FkaW5nKSB7XHJcbiAgICA8aXVzLWxvYWRpbmctY2lyY2xlPjwvaXVzLWxvYWRpbmctY2lyY2xlPlxyXG4gIH1cclxuICBAZWxzZSBpZiAoc3VjY2VzcyAmJiAhbG9hZGluZykge1xyXG4gICAgPGl1cy1pY29uLW1kIGljb25OYW1lPVwiaWNvbi1jaGVjay1jaXJjbGVcIj48L2l1cy1pY29uLW1kPlxyXG4gICAge3sgdGV4dEJ1dHRvbiB9fVxyXG4gIH1cclxuICBAZWxzZSBpZiAoZXJyb3IgJiYgIWxvYWRpbmcpIHtcclxuICAgIDxpdXMtaWNvbi1tZCBpY29uTmFtZT1cImljb24tZXJyb3JcIj48L2l1cy1pY29uLW1kPlxyXG4gICAge3sgdGV4dEJ1dHRvbiB9fVxyXG4gIH1cclxuICBAZWxzZSB7XHJcbiAgICB7eyB0ZXh0QnV0dG9uIH19XHJcbiAgfVxyXG48L2J1dHRvbj5cclxuIl19
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWR5bmFtaWMvYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaXVzLWRlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvYnV0dG9uLWR5bmFtaWMvYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBd0IsTUFBTSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUM1RyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sNENBQTRDLENBQUM7O0FBWXBGLE1BQU0sT0FBTyxzQkFBc0I7SUFQbkM7UUFTVyxpQkFBWSxHQUFHLFNBQVMsQ0FBQztRQUN6QixpQkFBWSxHQUFHLFVBQVUsQ0FBQztRQUMxQixlQUFVLEdBQUcsT0FBTyxDQUFDO1FBRXJCLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDakIsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUdoQixjQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLG1CQUFjLEdBQUcsSUFBSSxDQUFDO1FBRXJCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUVuRCxVQUFLLEdBQWdCLFNBQVMsQ0FBQztLQXlFaEM7SUF0RUMsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLHNDQUFzQztRQUN0QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFD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Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUVHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFFSSxhQUFhO3NCQUF0QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEljb25NZENvbXBvbmVudCB9IGZyb20gJy4uL2ljb24tbWQvaWNvbi1tZC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBMb2FkaW5nQ2lyY2xlQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9hZGluZy1jaXJjbGUvbG9hZGluZy1jaXJjbGUuY29tcG9uZW50JztcclxuXHJcbnR5cGUgQnV0dG9uUmVzdWx0ID0gJ3N1Y2Nlc3MnIHwgJ2Vycm9yJyB8IHVuZGVmaW5lZDtcclxudHlwZSBCdXR0b25TdGF0ZSA9ICdkZWZhdWx0JyB8ICdsb2FkaW5nJyB8ICdzdWNjZXNzJyB8ICdlcnJvcicgfCAnZGlzYWJsZWQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpdXMtYnV0dG9uLWR5bmFtaWMnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTG9hZGluZ0NpcmNsZUNvbXBvbmVudCwgSWNvbk1kQ29tcG9uZW50XSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLWR5bmFtaWMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2J1dHRvbi1keW5hbWljLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBCdXR0b25EeW5hbWljQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xyXG5cclxuICBASW5wdXQoKSBsYWJlbERlZmF1bHQgPSAnR3VhcmRhcic7XHJcbiAgQElucHV0KCkgbGFiZWxTdWNjZXNzID0gJ0d1YXJkYWRvJztcclxuICBASW5wdXQoKSBsYWJlbEVycm9yID0gJ0Vycm9yJztcclxuXHJcbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcclxuICBASW5wdXQoKSBsb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgcmVzdWx0OiBCdXR0b25SZXN1bHQ7XHJcblxyXG4gIEBJbnB1dCgpIGF1dG9SZXNldCA9IHRydWU7XHJcbiAgQElucHV0KCkgYXV0b1Jlc2V0RGVsYXkgPSAxNTAwO1xyXG5cclxuICBAT3V0cHV0KCkgYnV0dG9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgc3RhdGU6IEJ1dHRvblN0YXRlID0gJ2RlZmF1bHQnO1xyXG4gIHByaXZhdGUgcmVzZXRUaW1lcjogYW55O1xyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAvLyAxKSBkaXNhYmxlZCBtYW5kYSB0b2RvIGEgJ2Rpc2FibGVkJ1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSgnZGlzYWJsZWQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDIpIGxvYWRpbmcgZ29iaWVybmEgbWllbnRyYXMgZXMgdHJ1ZVxyXG4gICAgaWYgKGNoYW5nZXNbJ2xvYWRpbmcnXSkge1xyXG4gICAgICBpZiAodGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgICAgdGhpcy5jbGVhclRpbWVyKCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSgnbG9hZGluZycpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICAvLyBsb2FkaW5nIOKGkiBmYWxzZTogbWlyYXIgcmVzdWx0XHJcbiAgICAgICAgdGhpcy5hcHBseVJlc3VsdFN0YXRlKCk7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gMykgU2kgY2FtYmnDsyAncmVzdWx0JyB5IG5vIGVzdGFtb3MgY2FyZ2FuZG8sIGFwbGljYXJcclxuICAgIGlmIChjaGFuZ2VzWydyZXN1bHQnXSAmJiAhdGhpcy5sb2FkaW5nKSB7XHJcbiAgICAgIHRoaXMuYXBwbHlSZXN1bHRTdGF0ZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIDQpIGZhbGxiYWNrXHJcbiAgICBpZiAoIXRoaXMubG9hZGluZyAmJiAhdGhpcy5yZXN1bHQpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSgnZGVmYXVsdCcpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXBwbHlSZXN1bHRTdGF0ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlc3VsdCA9PT0gJ3N1Y2Nlc3MnKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ3N1Y2Nlc3MnKTtcclxuICAgICAgdGhpcy5hcm1BdXRvUmVzZXQoKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5yZXN1bHQgPT09ICdlcnJvcicpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSgnZXJyb3InKTtcclxuICAgICAgdGhpcy5hcm1BdXRvUmVzZXQoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ2RlZmF1bHQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFybUF1dG9SZXNldCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xlYXJUaW1lcigpO1xyXG4gICAgaWYgKCF0aGlzLmF1dG9SZXNldCkgcmV0dXJuO1xyXG4gICAgdGhpcy5yZXNldFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoJ2RlZmF1bHQnKTtcclxuICAgIH0sIHRoaXMuYXV0b1Jlc2V0RGVsYXkpO1xyXG4gIH1cclxuXHJcbiAgY2xlYXJUaW1lcigpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlc2V0VGltZXIpIHtcclxuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucmVzZXRUaW1lcik7XHJcbiAgICAgIHRoaXMucmVzZXRUaW1lciA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRTdGF0ZShzOiBCdXR0b25TdGF0ZSkge1xyXG4gICAgdGhpcy5zdGF0ZSA9IHM7XHJcbiAgfVxyXG5cclxuICBvbkNsaWNrKCkge1xyXG4gICAgaWYgKHRoaXMuc3RhdGUgPT09ICdsb2FkaW5nJyB8fCB0aGlzLnN0YXRlID09PSAnZGlzYWJsZWQnKSByZXR1cm47XHJcbiAgICB0aGlzLmJ1dHRvbkNsaWNrZWQuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsZWFyVGltZXIoKTtcclxuICB9XHJcbn1cclxuIiwiPGJ1dHRvbiBjbGFzcz1cIml1cy1idG5cIiBbYXR0ci5kYXRhLXN0YXRlXT1cInN0YXRlXCIgW2Rpc2FibGVkXT1cInN0YXRlID09PSAnZGlzYWJsZWQnIHx8IHN0YXRlID09PSAnbG9hZGluZydcIlxyXG4gIChjbGljayk9XCJvbkNsaWNrKClcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj5cclxuICBAc3dpdGNoIChzdGF0ZSkge1xyXG4gIEBjYXNlICgnbG9hZGluZycpIHtcclxuICA8aXVzLWxvYWRpbmctY2lyY2xlPjwvaXVzLWxvYWRpbmctY2lyY2xlPlxyXG4gIH1cclxuICBAY2FzZSAoJ3N1Y2Nlc3MnKSB7XHJcbiAgPGl1cy1pY29uLW1kIGljb25OYW1lPVwiaWNvbi1jaGVjay1jaXJjbGVcIj48L2l1cy1pY29uLW1kPlxyXG4gIDxzcGFuPnt7IGxhYmVsU3VjY2VzcyB9fTwvc3Bhbj5cclxuICB9XHJcbiAgQGNhc2UgKCdlcnJvcicpIHtcclxuICA8aXVzLWljb24tbWQgaWNvbk5hbWU9XCJpY29uLWVycm9yXCI+PC9pdXMtaWNvbi1tZD5cclxuICA8c3Bhbj57eyBsYWJlbEVycm9yIH19PC9zcGFuPlxyXG4gIH1cclxuICBAZGVmYXVsdCB7XHJcbiAgPHNwYW4+e3sgbGFiZWxEZWZhdWx0IH19PC9zcGFuPlxyXG4gIH1cclxuICB9XHJcbjwvYnV0dG9uPiJdfQ==