@kato-lee/components 1.1.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/assets/_fields.scss +82 -21
- package/assets/_grids.scss +8 -0
- package/assets/assets.scss +4 -0
- package/assets/bundle.css +1 -0
- package/assets/{themes/_default.scss → colors.scss} +7 -6
- package/assets/components/_checkbox.scss +11 -0
- package/assets/components/_fields.scss +53 -13
- package/assets/components/_scroll-bar.scss +8 -0
- package/assets/components/_snack-bar.scss +21 -10
- package/assets/components/_tables.scss +75 -84
- package/assets/components/main.scss +9 -10
- package/assets/material/theme.scss +91 -0
- package/box-form/index.d.ts +51 -3
- package/box-form/package.json +3 -0
- package/capsule/index.d.ts +25 -2
- package/capsule/package.json +3 -0
- package/cards/index.d.ts +18 -2
- package/cards/package.json +3 -0
- package/dialogs/index.d.ts +18 -2
- package/dialogs/package.json +3 -0
- package/fesm2022/kato-lee-components-box-form.mjs +9 -9
- package/fesm2022/kato-lee-components-box-form.mjs.map +1 -1
- package/fesm2022/kato-lee-components-capsule.mjs +20 -20
- package/fesm2022/kato-lee-components-capsule.mjs.map +1 -1
- package/fesm2022/kato-lee-components-cards.mjs +8 -8
- package/fesm2022/kato-lee-components-cards.mjs.map +1 -1
- package/fesm2022/kato-lee-components-dialogs.mjs +9 -9
- package/fesm2022/kato-lee-components-dialogs.mjs.map +1 -1
- package/fesm2022/kato-lee-components-fields.mjs +60 -64
- package/fesm2022/kato-lee-components-fields.mjs.map +1 -1
- package/fesm2022/kato-lee-components-modal.mjs +16 -12
- package/fesm2022/kato-lee-components-modal.mjs.map +1 -1
- package/fesm2022/kato-lee-components-pretty-box.mjs +5 -5
- package/fesm2022/kato-lee-components-pretty-box.mjs.map +1 -1
- package/fesm2022/kato-lee-components-tables.mjs +60 -20
- package/fesm2022/kato-lee-components-tables.mjs.map +1 -1
- package/fesm2022/kato-lee-components-toast.mjs +3 -3
- package/fesm2022/kato-lee-components-toast.mjs.map +1 -1
- package/fields/index.d.ts +464 -15
- package/fields/package.json +3 -0
- package/index.d.ts +2 -1
- package/modal/index.d.ts +66 -4
- package/modal/package.json +3 -0
- package/package.json +4 -24
- package/pretty-box/index.d.ts +27 -1
- package/pretty-box/package.json +3 -0
- package/tables/index.d.ts +27 -3
- package/tables/package.json +3 -0
- package/toast/index.d.ts +25 -1
- package/toast/package.json +3 -0
- package/assets/components/_material.scss +0 -15
- package/assets/main.scss +0 -4
- package/assets/material/themes/dark.scss +0 -52
- package/assets/material/themes/default.scss +0 -105
- package/assets/material/themes/main.scss +0 -2907
- package/assets/themes/_dark.scss +0 -16
- package/assets/themes/main.scss +0 -2
- package/assets/variables.scss +0 -7
- package/box-form/common.d.ts +0 -5
- package/box-form/component.d.ts +0 -34
- package/box-form/module.d.ts +0 -8
- package/capsule/component.d.ts +0 -14
- package/capsule/module.d.ts +0 -8
- package/cards/component.d.ts +0 -8
- package/cards/module.d.ts +0 -8
- package/dialogs/dismiss-dialog-button.component.d.ts +0 -8
- package/dialogs/module.d.ts +0 -8
- package/esm2022/box-form/common.mjs +0 -2
- package/esm2022/box-form/component.mjs +0 -112
- package/esm2022/box-form/index.mjs +0 -7
- package/esm2022/box-form/kato-lee-components-box-form.mjs +0 -5
- package/esm2022/box-form/module.mjs +0 -17
- package/esm2022/capsule/component.mjs +0 -78
- package/esm2022/capsule/index.mjs +0 -6
- package/esm2022/capsule/kato-lee-components-capsule.mjs +0 -5
- package/esm2022/capsule/module.mjs +0 -17
- package/esm2022/cards/component.mjs +0 -48
- package/esm2022/cards/index.mjs +0 -6
- package/esm2022/cards/kato-lee-components-cards.mjs +0 -5
- package/esm2022/cards/module.mjs +0 -18
- package/esm2022/dialogs/dismiss-dialog-button.component.mjs +0 -46
- package/esm2022/dialogs/index.mjs +0 -6
- package/esm2022/dialogs/kato-lee-components-dialogs.mjs +0 -5
- package/esm2022/dialogs/module.mjs +0 -18
- package/esm2022/fields/autocomplete/component.mjs +0 -259
- package/esm2022/fields/common.mjs +0 -11
- package/esm2022/fields/date/component.mjs +0 -163
- package/esm2022/fields/date-range/component.mjs +0 -85
- package/esm2022/fields/error/component.mjs +0 -57
- package/esm2022/fields/error/error-equals.pipe.mjs +0 -19
- package/esm2022/fields/error/error.msg.pipe.mjs +0 -19
- package/esm2022/fields/error/lang/_en.mjs +0 -12
- package/esm2022/fields/error/lang/_es.mjs +0 -12
- package/esm2022/fields/error/lang/index.mjs +0 -3
- package/esm2022/fields/general/component.mjs +0 -202
- package/esm2022/fields/index.mjs +0 -19
- package/esm2022/fields/kato-lee-components-fields.mjs +0 -5
- package/esm2022/fields/module.mjs +0 -82
- package/esm2022/fields/money/component.mjs +0 -202
- package/esm2022/fields/number/component.mjs +0 -179
- package/esm2022/fields/remote-autocomplete/component.mjs +0 -188
- package/esm2022/fields/select/component.mjs +0 -158
- package/esm2022/fields/text-area/component.mjs +0 -186
- package/esm2022/fields/validators.mjs +0 -11
- package/esm2022/index.mjs +0 -2
- package/esm2022/kato-lee-components.mjs +0 -5
- package/esm2022/modal/component.mjs +0 -66
- package/esm2022/modal/config.mjs +0 -2
- package/esm2022/modal/index.mjs +0 -8
- package/esm2022/modal/kato-lee-components-modal.mjs +0 -5
- package/esm2022/modal/module.mjs +0 -17
- package/esm2022/modal/service.mjs +0 -33
- package/esm2022/pretty-box/component.mjs +0 -94
- package/esm2022/pretty-box/index.mjs +0 -5
- package/esm2022/pretty-box/kato-lee-components-pretty-box.mjs +0 -5
- package/esm2022/tables/index.mjs +0 -7
- package/esm2022/tables/kato-lee-components-tables.mjs +0 -5
- package/esm2022/tables/mat-paginator.translation.mjs +0 -22
- package/esm2022/tables/module.mjs +0 -22
- package/esm2022/tables/no-records.component.mjs +0 -58
- package/esm2022/toast/index.mjs +0 -5
- package/esm2022/toast/kato-lee-components-toast.mjs +0 -5
- package/esm2022/toast/service.mjs +0 -42
- package/fields/autocomplete/component.d.ts +0 -65
- package/fields/common.d.ts +0 -8
- package/fields/date/component.d.ts +0 -46
- package/fields/date-range/component.d.ts +0 -23
- package/fields/error/component.d.ts +0 -22
- package/fields/error/error-equals.pipe.d.ts +0 -7
- package/fields/error/error.msg.pipe.d.ts +0 -7
- package/fields/error/lang/_en.d.ts +0 -1
- package/fields/error/lang/_es.d.ts +0 -1
- package/fields/error/lang/index.d.ts +0 -2
- package/fields/general/component.d.ts +0 -56
- package/fields/module.d.ts +0 -19
- package/fields/money/component.d.ts +0 -53
- package/fields/number/component.d.ts +0 -52
- package/fields/remote-autocomplete/component.d.ts +0 -43
- package/fields/select/component.d.ts +0 -44
- package/fields/text-area/component.d.ts +0 -55
- package/fields/validators.d.ts +0 -9
- package/modal/component.d.ts +0 -35
- package/modal/config.d.ts +0 -9
- package/modal/module.d.ts +0 -8
- package/modal/service.d.ts +0 -13
- package/pretty-box/component.d.ts +0 -24
- package/tables/mat-paginator.translation.d.ts +0 -2
- package/tables/module.d.ts +0 -10
- package/tables/no-records.component.d.ts +0 -12
- package/toast/service.d.ts +0 -21
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Public API Surface of @kato-lee/components/dialogs
|
|
3
|
-
*/
|
|
4
|
-
export * from './module';
|
|
5
|
-
export * from './dismiss-dialog-button.component';
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJyYXJpZXMvY29tcG9uZW50cy9kaWFsb2dzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxVQUFVLENBQUM7QUFDekIsY0FBYyxtQ0FBbUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBAa2F0by1sZWUvY29tcG9uZW50cy9kaWFsb2dzXHJcbiAqL1xyXG5cclxuZXhwb3J0ICogZnJvbSAnLi9tb2R1bGUnO1xyXG5leHBvcnQgKiBmcm9tICcuL2Rpc21pc3MtZGlhbG9nLWJ1dHRvbi5jb21wb25lbnQnO1xyXG4iXX0=
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2F0by1sZWUtY29tcG9uZW50cy1kaWFsb2dzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvbXBvbmVudHMvZGlhbG9ncy9rYXRvLWxlZS1jb21wb25lbnRzLWRpYWxvZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { TakDismissDialogButtonComponent } from './dismiss-dialog-button.component';
|
|
3
|
-
import { MatDialogModule } from '@kato-lee/material/dialog';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
const components = [TakDismissDialogButtonComponent];
|
|
6
|
-
export class TakDialogModule {
|
|
7
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TakDialogModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
8
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.3", ngImport: i0, type: TakDialogModule, imports: [TakDismissDialogButtonComponent], exports: [TakDismissDialogButtonComponent, MatDialogModule] }); }
|
|
9
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TakDialogModule, imports: [components, MatDialogModule] }); }
|
|
10
|
-
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TakDialogModule, decorators: [{
|
|
12
|
-
type: NgModule,
|
|
13
|
-
args: [{
|
|
14
|
-
imports: [...components],
|
|
15
|
-
exports: [...components, MatDialogModule],
|
|
16
|
-
}]
|
|
17
|
-
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvbXBvbmVudHMvZGlhbG9ncy9tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRTVELE1BQU0sVUFBVSxHQUFHLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQU1yRCxNQUFNLE9BQU8sZUFBZTs4R0FBZixlQUFlOytHQUFmLGVBQWUsWUFOUiwrQkFBK0IsYUFBL0IsK0JBQStCLEVBSXhCLGVBQWU7K0dBRTdCLGVBQWUsWUFIYixVQUFVLEVBQ0UsZUFBZTs7MkZBRTdCLGVBQWU7a0JBSjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUM7b0JBQ3hCLE9BQU8sRUFBRSxDQUFDLEdBQUcsVUFBVSxFQUFFLGVBQWUsQ0FBQztpQkFDMUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUYWtEaXNtaXNzRGlhbG9nQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9kaXNtaXNzLWRpYWxvZy1idXR0b24uY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0RGlhbG9nTW9kdWxlIH0gZnJvbSAnQGthdG8tbGVlL21hdGVyaWFsL2RpYWxvZyc7XHJcblxyXG5jb25zdCBjb21wb25lbnRzID0gW1Rha0Rpc21pc3NEaWFsb2dCdXR0b25Db21wb25lbnRdO1xyXG5cclxuQE5nTW9kdWxlKHtcclxuICBpbXBvcnRzOiBbLi4uY29tcG9uZW50c10sXHJcbiAgZXhwb3J0czogWy4uLmNvbXBvbmVudHMsIE1hdERpYWxvZ01vZHVsZV0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWtEaWFsb2dNb2R1bGUge31cclxuIl19
|
|
@@ -1,259 +0,0 @@
|
|
|
1
|
-
import { Component, Optional, Input, Self, Output, EventEmitter, } from '@angular/core';
|
|
2
|
-
import { FormsModule, ReactiveFormsModule, } from '@angular/forms';
|
|
3
|
-
import { debounceTime, map, Subject, takeUntil } from 'rxjs';
|
|
4
|
-
import { TAK_DEFAULT_APPEARANCE_FORM, TAK_PRESS_ESC_KEY, } from '../common';
|
|
5
|
-
import { CommonModule } from '@angular/common';
|
|
6
|
-
import { MatProgressSpinnerModule } from '@kato-lee/material/progress-spinner';
|
|
7
|
-
import { MatAutocompleteModule } from '@kato-lee/material/autocomplete';
|
|
8
|
-
import { MatFormFieldModule } from '@kato-lee/material/form-field';
|
|
9
|
-
import { TakErrorComponent } from '../error/component';
|
|
10
|
-
import { MatButtonModule } from '@kato-lee/material/button';
|
|
11
|
-
import { MatInputModule } from '@kato-lee/material/input';
|
|
12
|
-
import { MatIconModule } from '@kato-lee/material/icon';
|
|
13
|
-
import * as i0 from "@angular/core";
|
|
14
|
-
import * as i1 from "@angular/forms";
|
|
15
|
-
import * as i2 from "@angular/common";
|
|
16
|
-
import * as i3 from "@kato-lee/material/progress-spinner";
|
|
17
|
-
import * as i4 from "@kato-lee/material/form-field";
|
|
18
|
-
import * as i5 from "@kato-lee/material/button";
|
|
19
|
-
import * as i6 from "@kato-lee/material/autocomplete";
|
|
20
|
-
import * as i7 from "@kato-lee/material/core";
|
|
21
|
-
import * as i8 from "@kato-lee/material/icon";
|
|
22
|
-
import * as i9 from "@kato-lee/material/input";
|
|
23
|
-
export class TakAutocompleteFieldComponent {
|
|
24
|
-
constructor(_ngControl, _formGroupDirective, _cd) {
|
|
25
|
-
this._ngControl = _ngControl;
|
|
26
|
-
this._formGroupDirective = _formGroupDirective;
|
|
27
|
-
this._cd = _cd;
|
|
28
|
-
this._unsubscribe$ = new Subject();
|
|
29
|
-
this.option = 'option';
|
|
30
|
-
this.extraInfo = '';
|
|
31
|
-
this.autocomplete = 'off';
|
|
32
|
-
this.appearance = TAK_DEFAULT_APPEARANCE_FORM;
|
|
33
|
-
this.color = 'primary';
|
|
34
|
-
this.hasClearButton = true;
|
|
35
|
-
this.suggestions = [];
|
|
36
|
-
this.disabled = false;
|
|
37
|
-
this.hasTitle = false;
|
|
38
|
-
this.isLoading = false;
|
|
39
|
-
this.isRemoteSearch = false;
|
|
40
|
-
this.debounceTimeForRemoteSearch = 500;
|
|
41
|
-
this.onSelect = new EventEmitter();
|
|
42
|
-
this.onSearch = new EventEmitter();
|
|
43
|
-
this.onChangeFn = (_) => { };
|
|
44
|
-
this.onTouchFn = (_) => { };
|
|
45
|
-
this._isSubmitted = false;
|
|
46
|
-
this._isInvalid = false;
|
|
47
|
-
this._required = false;
|
|
48
|
-
this._value = '';
|
|
49
|
-
this._notSuggestions = false;
|
|
50
|
-
this._lastValue = '';
|
|
51
|
-
if (_ngControl)
|
|
52
|
-
this._ngControl.valueAccessor = this;
|
|
53
|
-
if (_formGroupDirective) {
|
|
54
|
-
_formGroupDirective.ngSubmit.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {
|
|
55
|
-
this._isSubmitted = true;
|
|
56
|
-
_cd.markForCheck();
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
ngOnInit() {
|
|
61
|
-
const form = this.control;
|
|
62
|
-
if (form?._rawValidators) {
|
|
63
|
-
form._rawValidators.map((r) => {
|
|
64
|
-
if (r.name.includes('required'))
|
|
65
|
-
this._required = true;
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
this._filteredOptions = this.control.valueChanges.pipe(takeUntil(this._unsubscribe$), map(() => this._filter()));
|
|
69
|
-
if (this.isRemoteSearch) {
|
|
70
|
-
this.control.valueChanges
|
|
71
|
-
.pipe(takeUntil(this._unsubscribe$), debounceTime(this.debounceTimeForRemoteSearch))
|
|
72
|
-
.subscribe(() => {
|
|
73
|
-
if (this._lastValue !== `${this._value}` && `${this._value}` && !this.control.value) {
|
|
74
|
-
this.onSearch.emit(`${this._value}`);
|
|
75
|
-
this._setValue(`${this._value}`);
|
|
76
|
-
}
|
|
77
|
-
this._lastValue = `${this._value}`;
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
if (this.disabled)
|
|
81
|
-
this.control.disable();
|
|
82
|
-
}
|
|
83
|
-
_filter() {
|
|
84
|
-
const value = typeof `${this._value}` === 'string'
|
|
85
|
-
? `${this._value}`.toLowerCase()
|
|
86
|
-
: `${this.control.value[this.option]}`.toLowerCase();
|
|
87
|
-
const option = this.suggestions.filter(res => `${res[this.option]}`.toLowerCase().includes(value));
|
|
88
|
-
if (!option.length)
|
|
89
|
-
this._notSuggestions = true;
|
|
90
|
-
else
|
|
91
|
-
this._notSuggestions = false;
|
|
92
|
-
return option;
|
|
93
|
-
}
|
|
94
|
-
writeValue(value) {
|
|
95
|
-
if (value === null)
|
|
96
|
-
this._isInvalid = false;
|
|
97
|
-
this._value = value || '';
|
|
98
|
-
this._isSubmitted = false;
|
|
99
|
-
this._cd.markForCheck();
|
|
100
|
-
}
|
|
101
|
-
registerOnChange(fn) {
|
|
102
|
-
this.onChangeFn = fn;
|
|
103
|
-
}
|
|
104
|
-
registerOnTouched(fn) {
|
|
105
|
-
this.onTouchFn = fn;
|
|
106
|
-
}
|
|
107
|
-
onChange(event) {
|
|
108
|
-
if (event.target.value !== `${this._value}`) {
|
|
109
|
-
this._value = event.target.value;
|
|
110
|
-
if (!this.isRemoteSearch)
|
|
111
|
-
this._setValue(`${this._value}`);
|
|
112
|
-
this.onChangeFn(this.suggestions.filter(sug => `${sug[this.option]}`.toLowerCase() === `${`${this._value}`}`.toLowerCase())[0] || null);
|
|
113
|
-
if (this.control.touched) {
|
|
114
|
-
this._onValidate();
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
_setValue(value) {
|
|
119
|
-
if (!this.isRemoteSearch) {
|
|
120
|
-
const suggestionsFiltered = value
|
|
121
|
-
? this.suggestions.filter(el => `${el[this.option]}`.toLowerCase().trim() === value.toLowerCase().trim())
|
|
122
|
-
: [];
|
|
123
|
-
if (suggestionsFiltered.length) {
|
|
124
|
-
document.body.dispatchEvent(TAK_PRESS_ESC_KEY);
|
|
125
|
-
}
|
|
126
|
-
try {
|
|
127
|
-
this.control.setValue(suggestionsFiltered[0][this.option], {
|
|
128
|
-
emitEvent: false,
|
|
129
|
-
});
|
|
130
|
-
this.onSelect.emit(suggestionsFiltered[0]);
|
|
131
|
-
}
|
|
132
|
-
catch (error) { }
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
emit(el) {
|
|
136
|
-
if (el && el.isUserInput)
|
|
137
|
-
this._isInvalid = false;
|
|
138
|
-
}
|
|
139
|
-
emitWithClick(suggestionOption) {
|
|
140
|
-
this.control.setValue(suggestionOption);
|
|
141
|
-
this._value = `${suggestionOption[this.option]}`;
|
|
142
|
-
this._isInvalid = false;
|
|
143
|
-
}
|
|
144
|
-
onFocusout() {
|
|
145
|
-
this.onTouchFn(true);
|
|
146
|
-
this._onValidate();
|
|
147
|
-
}
|
|
148
|
-
setValue(value) {
|
|
149
|
-
this.control.setValue(value);
|
|
150
|
-
this._value = `${value[this.option]}`;
|
|
151
|
-
}
|
|
152
|
-
onUpdateSuggestions(suggestions) {
|
|
153
|
-
this.suggestions = suggestions;
|
|
154
|
-
this._cd.markForCheck();
|
|
155
|
-
this.onChangeFn(this.suggestions.filter(sug => `${sug[this.option]}`.toLowerCase() === `${this._value}`.toLowerCase())[0] || null);
|
|
156
|
-
}
|
|
157
|
-
_onValidate() {
|
|
158
|
-
if (this.control.invalid)
|
|
159
|
-
this._isInvalid = true;
|
|
160
|
-
else
|
|
161
|
-
this._isInvalid = false;
|
|
162
|
-
}
|
|
163
|
-
onFocus() {
|
|
164
|
-
if (!`${this._value}`) {
|
|
165
|
-
this.control.setValue('');
|
|
166
|
-
this._value = '';
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
onClearControl() {
|
|
170
|
-
this.control.setValue('', { emitEvent: false });
|
|
171
|
-
this._value = '';
|
|
172
|
-
}
|
|
173
|
-
ngOnDestroy() {
|
|
174
|
-
this._unsubscribe$.next();
|
|
175
|
-
this._unsubscribe$.complete();
|
|
176
|
-
}
|
|
177
|
-
get control() {
|
|
178
|
-
return this._ngControl?.control;
|
|
179
|
-
}
|
|
180
|
-
get directive() {
|
|
181
|
-
return this._formGroupDirective;
|
|
182
|
-
}
|
|
183
|
-
get isDisabled() {
|
|
184
|
-
return this._ngControl.disabled;
|
|
185
|
-
}
|
|
186
|
-
get isSubmitted() {
|
|
187
|
-
return this._isSubmitted;
|
|
188
|
-
}
|
|
189
|
-
get isInvalid() {
|
|
190
|
-
return this._isInvalid;
|
|
191
|
-
}
|
|
192
|
-
get required() {
|
|
193
|
-
return this._required;
|
|
194
|
-
}
|
|
195
|
-
get value() {
|
|
196
|
-
return `${this._value}`;
|
|
197
|
-
}
|
|
198
|
-
get filteredOptions() {
|
|
199
|
-
return this._filteredOptions;
|
|
200
|
-
}
|
|
201
|
-
get notSuggestions() {
|
|
202
|
-
return this._notSuggestions;
|
|
203
|
-
}
|
|
204
|
-
get lastValue() {
|
|
205
|
-
return this._lastValue;
|
|
206
|
-
}
|
|
207
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TakAutocompleteFieldComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i1.FormGroupDirective, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
208
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: TakAutocompleteFieldComponent, isStandalone: true, selector: "tak-autocomplete-field", inputs: { option: "option", extraInfo: "extraInfo", autocomplete: "autocomplete", appearance: "appearance", color: "color", hasClearButton: "hasClearButton", suggestions: "suggestions", disabled: "disabled", hasTitle: "hasTitle", isLoading: "isLoading", isRemoteSearch: "isRemoteSearch", debounceTimeForRemoteSearch: "debounceTimeForRemoteSearch" }, outputs: { onSelect: "onSelect", onSearch: "onSearch" }, ngImport: i0, template: "<div class=\"tak-form-container\">\r\n <mat-form-field\r\n [class.mat-form-field-invalid]=\"isInvalid || (isSubmitted && control.invalid)\"\r\n [appearance]=\"appearance\"\r\n [color]=\"color\"\r\n >\r\n <mat-label>\r\n <ng-content />{{ ' ' }}\r\n @if (required) {\r\n <span class=\"tak-field__danger-x\">*</span>\r\n }\r\n </mat-label>\r\n <input\r\n matInput\r\n [autocomplete]=\"autocomplete\"\r\n [matAutocomplete]=\"auto\"\r\n [value]=\"value\"\r\n (keyup)=\"onChange($event)\"\r\n (change)=\"onChange($event)\"\r\n [disabled]=\"isDisabled\"\r\n (focus)=\"onFocus()\"\r\n (focusout)=\"onFocusout()\"\r\n />\r\n @if (isRemoteSearch && isLoading) {\r\n <button matSuffix mat-icon-button type=\"button\">\r\n <mat-spinner [diameter]=\"15\" mode=\"indeterminate\"></mat-spinner>\r\n </button>\r\n }\r\n @if ((control.value || value) && hasClearButton && !disabled) {\r\n <button matSuffix mat-icon-button type=\"button\" (click)=\"onClearControl()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n @for (suggestion of filteredOptions | async; track suggestion) {\r\n <mat-option\r\n [value]=\"suggestion[option]\"\r\n [class.tak-option-extra]=\"extraInfo\"\r\n (onSelectionChange)=\"emit($event)\"\r\n (click)=\"emitWithClick(suggestion)\"\r\n title=\"{{ suggestion[option] }} {{ extraInfo ? '(' + suggestion[extraInfo] + ')' : '' }}\"\r\n >\r\n <span>{{ suggestion[option] }}</span>\r\n @if (extraInfo) {\r\n <span class=\"tak-option-span-extra\">{{ suggestion[extraInfo] }}</span>\r\n }\r\n </mat-option>\r\n }\r\n @if (notSuggestions && control.invalid) {\r\n <mat-option>\r\n <span class=\"tak-autocomplete-not-records\"> No se encuentran resultados </span>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n @if (isInvalid || (isSubmitted && control.invalid)) {\r\n <tak-error [control]=\"control\"></tak-error>\r\n }\r\n</div>\r\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "component", type: TakErrorComponent, selector: "tak-error", inputs: ["control", "start", "end", "isDateField", "isNumberField", "marginTop"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatProgressSpinnerModule }, { kind: "component", type: i3.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "diameter", "strokeWidth", "mode", "value"], exportAs: ["matProgressSpinner"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix]" }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i6.MatAutocomplete, selector: "mat-autocomplete", inputs: ["disableRipple"], exportAs: ["matAutocomplete"] }, { kind: "directive", type: i6.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", exportAs: ["matAutocompleteTrigger"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
|
|
209
|
-
}
|
|
210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TakAutocompleteFieldComponent, decorators: [{
|
|
211
|
-
type: Component,
|
|
212
|
-
args: [{ standalone: true, imports: [
|
|
213
|
-
FormsModule,
|
|
214
|
-
CommonModule,
|
|
215
|
-
TakErrorComponent,
|
|
216
|
-
ReactiveFormsModule,
|
|
217
|
-
MatProgressSpinnerModule,
|
|
218
|
-
MatFormFieldModule,
|
|
219
|
-
MatButtonModule,
|
|
220
|
-
MatAutocompleteModule,
|
|
221
|
-
MatIconModule,
|
|
222
|
-
MatInputModule,
|
|
223
|
-
], selector: 'tak-autocomplete-field', template: "<div class=\"tak-form-container\">\r\n <mat-form-field\r\n [class.mat-form-field-invalid]=\"isInvalid || (isSubmitted && control.invalid)\"\r\n [appearance]=\"appearance\"\r\n [color]=\"color\"\r\n >\r\n <mat-label>\r\n <ng-content />{{ ' ' }}\r\n @if (required) {\r\n <span class=\"tak-field__danger-x\">*</span>\r\n }\r\n </mat-label>\r\n <input\r\n matInput\r\n [autocomplete]=\"autocomplete\"\r\n [matAutocomplete]=\"auto\"\r\n [value]=\"value\"\r\n (keyup)=\"onChange($event)\"\r\n (change)=\"onChange($event)\"\r\n [disabled]=\"isDisabled\"\r\n (focus)=\"onFocus()\"\r\n (focusout)=\"onFocusout()\"\r\n />\r\n @if (isRemoteSearch && isLoading) {\r\n <button matSuffix mat-icon-button type=\"button\">\r\n <mat-spinner [diameter]=\"15\" mode=\"indeterminate\"></mat-spinner>\r\n </button>\r\n }\r\n @if ((control.value || value) && hasClearButton && !disabled) {\r\n <button matSuffix mat-icon-button type=\"button\" (click)=\"onClearControl()\">\r\n <mat-icon>close</mat-icon>\r\n </button>\r\n }\r\n <mat-autocomplete #auto=\"matAutocomplete\">\r\n @for (suggestion of filteredOptions | async; track suggestion) {\r\n <mat-option\r\n [value]=\"suggestion[option]\"\r\n [class.tak-option-extra]=\"extraInfo\"\r\n (onSelectionChange)=\"emit($event)\"\r\n (click)=\"emitWithClick(suggestion)\"\r\n title=\"{{ suggestion[option] }} {{ extraInfo ? '(' + suggestion[extraInfo] + ')' : '' }}\"\r\n >\r\n <span>{{ suggestion[option] }}</span>\r\n @if (extraInfo) {\r\n <span class=\"tak-option-span-extra\">{{ suggestion[extraInfo] }}</span>\r\n }\r\n </mat-option>\r\n }\r\n @if (notSuggestions && control.invalid) {\r\n <mat-option>\r\n <span class=\"tak-autocomplete-not-records\"> No se encuentran resultados </span>\r\n </mat-option>\r\n }\r\n </mat-autocomplete>\r\n </mat-form-field>\r\n @if (isInvalid || (isSubmitted && control.invalid)) {\r\n <tak-error [control]=\"control\"></tak-error>\r\n }\r\n</div>\r\n" }]
|
|
224
|
-
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
225
|
-
type: Self
|
|
226
|
-
}, {
|
|
227
|
-
type: Optional
|
|
228
|
-
}] }, { type: i1.FormGroupDirective, decorators: [{
|
|
229
|
-
type: Optional
|
|
230
|
-
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { option: [{
|
|
231
|
-
type: Input
|
|
232
|
-
}], extraInfo: [{
|
|
233
|
-
type: Input
|
|
234
|
-
}], autocomplete: [{
|
|
235
|
-
type: Input
|
|
236
|
-
}], appearance: [{
|
|
237
|
-
type: Input
|
|
238
|
-
}], color: [{
|
|
239
|
-
type: Input
|
|
240
|
-
}], hasClearButton: [{
|
|
241
|
-
type: Input
|
|
242
|
-
}], suggestions: [{
|
|
243
|
-
type: Input
|
|
244
|
-
}], disabled: [{
|
|
245
|
-
type: Input
|
|
246
|
-
}], hasTitle: [{
|
|
247
|
-
type: Input
|
|
248
|
-
}], isLoading: [{
|
|
249
|
-
type: Input
|
|
250
|
-
}], isRemoteSearch: [{
|
|
251
|
-
type: Input
|
|
252
|
-
}], debounceTimeForRemoteSearch: [{
|
|
253
|
-
type: Input
|
|
254
|
-
}], onSelect: [{
|
|
255
|
-
type: Output
|
|
256
|
-
}], onSearch: [{
|
|
257
|
-
type: Output
|
|
258
|
-
}] } });
|
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvbXBvbmVudHMvZmllbGRzL2F1dG9jb21wbGV0ZS9jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJyYXJpZXMvY29tcG9uZW50cy9maWVsZHMvYXV0b2NvbXBsZXRlL2NvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsUUFBUSxFQUNSLEtBQUssRUFDTCxJQUFJLEVBR0osTUFBTSxFQUNOLFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBS0wsV0FBVyxFQUNYLG1CQUFtQixHQUNwQixNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFjLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHekUsT0FBTyxFQUVMLDJCQUEyQixFQUMzQixpQkFBaUIsR0FDbEIsTUFBTSxXQUFXLENBQUM7QUFDbkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQy9FLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ25FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDMUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7OztBQW1CeEQsTUFBTSxPQUFPLDZCQUE2QjtJQStCeEMsWUFDOEIsVUFBcUIsRUFDN0IsbUJBQXVDLEVBQ25ELEdBQXNCO1FBRkYsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUM3Qix3QkFBbUIsR0FBbkIsbUJBQW1CLENBQW9CO1FBQ25ELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBakN4QixrQkFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFFbkMsV0FBTSxHQUFHLFFBQVEsQ0FBQztRQUNsQixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsaUJBQVksR0FBNkIsS0FBSyxDQUFDO1FBQy9DLGVBQVUsR0FBMkIsMkJBQTJCLENBQUM7UUFDakUsVUFBSyxHQUFpQixTQUFTLENBQUM7UUFDaEMsbUJBQWMsR0FBRyxJQUFJLENBQUM7UUFDdEIsZ0JBQVcsR0FBVSxFQUFFLENBQUM7UUFDeEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUNqQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWpCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbEIsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIsZ0NBQTJCLEdBQUcsR0FBRyxDQUFDO1FBRWpDLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQ25DLGFBQVEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRXRDLGVBQVUsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxDQUFDLENBQU0sRUFBRSxFQUFFLEdBQUUsQ0FBQyxDQUFDO1FBRTFCLGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLGVBQVUsR0FBRyxLQUFLLENBQUM7UUFDbkIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUNsQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQU90QixJQUFJLFVBQVU7WUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDckQsSUFBSSxtQkFBbUIsRUFBRTtZQUN2QixtQkFBbUIsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUM5RSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztnQkFDekIsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLE1BQU0sSUFBSSxHQUFRLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFL0IsSUFBSSxJQUFJLEVBQUUsY0FBYyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO29CQUFFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3pELENBQUMsQ0FBQyxDQUFDO1NBQ0o7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUNwRCxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUM3QixHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQzFCLENBQUM7UUFFRixJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZO2lCQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxZQUFZLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7aUJBQ25GLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2QsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUU7b0JBQ25GLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7b0JBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztpQkFDbEM7Z0JBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztTQUNOO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVPLE9BQU87UUFDYixNQUFNLEtBQUssR0FDVCxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLFFBQVE7WUFDbEMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFdBQVcsRUFBRTtZQUNoQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUMzQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQ3BELENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU07WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQzs7WUFDM0MsSUFBSSxDQUFDLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDbEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVNLFVBQVUsQ0FBQyxLQUFhO1FBQzdCLElBQUksS0FBSyxLQUFLLElBQUk7WUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUM1QyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBTztRQUM3QixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBTztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU0sUUFBUSxDQUFDLEtBQVU7UUFDeEIsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBRWpDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYztnQkFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7WUFFM0QsSUFBSSxDQUFDLFVBQVUsQ0FDYixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FDckIsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQ25GLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUNiLENBQUM7WUFFRixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO2dCQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7U0FDRjtJQUNILENBQUM7SUFFTyxTQUFTLENBQUMsS0FBYTtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUN4QixNQUFNLG1CQUFtQixHQUFHLEtBQUs7Z0JBQy9CLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FDckIsRUFBRSxDQUFDLEVBQUUsQ0FDSCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBTSxLQUFnQixDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxDQUN2RjtnQkFDSCxDQUFDLENBQUMsRUFBRSxDQUFDO1lBRVAsSUFBSSxtQkFBbUIsQ0FBQyxNQUFNLEVBQUU7Z0JBQzlCLFFBQVEsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDLENBQUM7YUFDaEQ7WUFFRCxJQUFJO2dCQUNGLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDekQsU0FBUyxFQUFFLEtBQUs7aUJBQ2pCLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQzVDO1lBQUMsT0FBTyxLQUFLLEVBQUUsR0FBRTtTQUNuQjtJQUNILENBQUM7SUFFTSxJQUFJLENBQUMsRUFBNEI7UUFDdEMsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLFdBQVc7WUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNwRCxDQUFDO0lBRU0sYUFBYSxDQUFDLGdCQUFxQjtRQUN4QyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLEdBQUcsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNqRCxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMxQixDQUFDO0lBRU0sVUFBVTtRQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDckIsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxRQUFRLENBQUMsS0FBVTtRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxXQUFrQjtRQUMzQyxJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRXhCLElBQUksQ0FBQyxVQUFVLENBQ2IsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQ3JCLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsV0FBVyxFQUFFLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQzlFLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUNiLENBQUM7SUFDSixDQUFDO0lBRU8sV0FBVztRQUNqQixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTztZQUFFLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDOztZQUM1QyxJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRU0sT0FBTztRQUNaLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMxQixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztTQUNsQjtJQUNILENBQUM7SUFFTSxjQUFjO1FBQ25CLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQXNCLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLG1CQUF5QyxDQUFDO0lBQ3hELENBQUM7SUFFRCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDL0IsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDOzhHQXpPVSw2QkFBNkI7a0dBQTdCLDZCQUE2Qix5ZUNyRDFDLHNxRUEyREEsMkNEcEJJLFdBQVcsOEJBQ1gsWUFBWSxvRkFDWixpQkFBaUIsdUlBQ2pCLG1CQUFtQiw4QkFDbkIsd0JBQXdCLGtPQUN4QixrQkFBa0IsMlZBQ2xCLGVBQWUsMFZBQ2YscUJBQXFCLGdhQUNyQixhQUFhLG1MQUNiLGNBQWM7OzJGQUtMLDZCQUE2QjtrQkFqQnpDLFNBQVM7aUNBQ0ksSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixpQkFBaUI7d0JBQ2pCLG1CQUFtQjt3QkFDbkIsd0JBQXdCO3dCQUN4QixrQkFBa0I7d0JBQ2xCLGVBQWU7d0JBQ2YscUJBQXFCO3dCQUNyQixhQUFhO3dCQUNiLGNBQWM7cUJBQ2YsWUFDUyx3QkFBd0I7OzBCQW1DL0IsSUFBSTs7MEJBQUksUUFBUTs7MEJBQ2hCLFFBQVE7eUVBOUJGLE1BQU07c0JBQWQsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFFRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIE9uRGVzdHJveSxcclxuICBPcHRpb25hbCxcclxuICBJbnB1dCxcclxuICBTZWxmLFxyXG4gIE9uSW5pdCxcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge1xyXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxyXG4gIEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuICBGb3JtQ29udHJvbCxcclxuICBOZ0NvbnRyb2wsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgbWFwLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB9IGZyb20gJ0BrYXRvLWxlZS9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgTWF0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlLCBUaGVtZVBhbGV0dGUgfSBmcm9tICdAa2F0by1sZWUvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgVGFrQXV0b2NvbXBsZXRlRmllbGRUeXBlLFxyXG4gIFRBS19ERUZBVUxUX0FQUEVBUkFOQ0VfRk9STSxcclxuICBUQUtfUFJFU1NfRVNDX0tFWSxcclxufSBmcm9tICcuLi9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUgfSBmcm9tICdAa2F0by1sZWUvbWF0ZXJpYWwvcHJvZ3Jlc3Mtc3Bpbm5lcic7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZU1vZHVsZSB9IGZyb20gJ0BrYXRvLWxlZS9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRNb2R1bGUgfSBmcm9tICdAa2F0by1sZWUvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IFRha0Vycm9yQ29tcG9uZW50IH0gZnJvbSAnLi4vZXJyb3IvY29tcG9uZW50JztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGthdG8tbGVlL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdElucHV0TW9kdWxlIH0gZnJvbSAnQGthdG8tbGVlL21hdGVyaWFsL2lucHV0JztcclxuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0BrYXRvLWxlZS9tYXRlcmlhbC9pY29uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUYWtFcnJvckNvbXBvbmVudCxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc1NwaW5uZXJNb2R1bGUsXHJcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNYXRBdXRvY29tcGxldGVNb2R1bGUsXHJcbiAgICBNYXRJY29uTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgXSxcclxuICBzZWxlY3RvcjogJ3Rhay1hdXRvY29tcGxldGUtZmllbGQnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb21wb25lbnQuaHRtbCcsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWtBdXRvY29tcGxldGVGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmUkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcbiAgQElucHV0KCkgb3B0aW9uID0gJ29wdGlvbic7XHJcbiAgQElucHV0KCkgZXh0cmFJbmZvID0gJyc7XHJcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBUYWtBdXRvY29tcGxldGVGaWVsZFR5cGUgPSAnb2ZmJztcclxuICBASW5wdXQoKSBhcHBlYXJhbmNlOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gVEFLX0RFRkFVTFRfQVBQRUFSQU5DRV9GT1JNO1xyXG4gIEBJbnB1dCgpIGNvbG9yOiBUaGVtZVBhbGV0dGUgPSAncHJpbWFyeSc7XHJcbiAgQElucHV0KCkgaGFzQ2xlYXJCdXR0b24gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHN1Z2dlc3Rpb25zOiBhbnlbXSA9IFtdO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaGFzVGl0bGUgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgaXNMb2FkaW5nID0gZmFsc2U7XHJcbiAgQElucHV0KCkgaXNSZW1vdGVTZWFyY2ggPSBmYWxzZTtcclxuICBASW5wdXQoKSBkZWJvdW5jZVRpbWVGb3JSZW1vdGVTZWFyY2ggPSA1MDA7XHJcblxyXG4gIEBPdXRwdXQoKSBvblNlbGVjdCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gIEBPdXRwdXQoKSBvblNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBwdWJsaWMgb25DaGFuZ2VGbiA9IChfOiBhbnkpID0+IHt9O1xyXG4gIHB1YmxpYyBvblRvdWNoRm4gPSAoXzogYW55KSA9PiB7fTtcclxuXHJcbiAgcHJpdmF0ZSBfaXNTdWJtaXR0ZWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9pc0ludmFsaWQgPSBmYWxzZTtcclxuICBwcml2YXRlIF9yZXF1aXJlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3ZhbHVlID0gJyc7XHJcbiAgcHJpdmF0ZSBfZmlsdGVyZWRPcHRpb25zITogT2JzZXJ2YWJsZTxhbnlbXT47XHJcbiAgcHJpdmF0ZSBfbm90U3VnZ2VzdGlvbnMgPSBmYWxzZTtcclxuICBwcml2YXRlIF9sYXN0VmFsdWUgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgX25nQ29udHJvbDogTmdDb250cm9sLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZm9ybUdyb3VwRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIGlmIChfbmdDb250cm9sKSB0aGlzLl9uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICBpZiAoX2Zvcm1Hcm91cERpcmVjdGl2ZSkge1xyXG4gICAgICBfZm9ybUdyb3VwRGlyZWN0aXZlLm5nU3VibWl0LnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5faXNTdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgICAgIF9jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtOiBhbnkgPSB0aGlzLmNvbnRyb2w7XHJcblxyXG4gICAgaWYgKGZvcm0/Ll9yYXdWYWxpZGF0b3JzKSB7XHJcbiAgICAgIGZvcm0uX3Jhd1ZhbGlkYXRvcnMubWFwKChyOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoci5uYW1lLmluY2x1ZGVzKCdyZXF1aXJlZCcpKSB0aGlzLl9yZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuX2ZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXMucGlwZShcclxuICAgICAgdGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCksXHJcbiAgICAgIG1hcCgoKSA9PiB0aGlzLl9maWx0ZXIoKSlcclxuICAgICk7XHJcblxyXG4gICAgaWYgKHRoaXMuaXNSZW1vdGVTZWFyY2gpIHtcclxuICAgICAgdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlc1xyXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl91bnN1YnNjcmliZSQpLCBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWVGb3JSZW1vdGVTZWFyY2gpKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuX2xhc3RWYWx1ZSAhPT0gYCR7dGhpcy5fdmFsdWV9YCAmJiBgJHt0aGlzLl92YWx1ZX1gICYmICF0aGlzLmNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5vblNlYXJjaC5lbWl0KGAke3RoaXMuX3ZhbHVlfWApO1xyXG4gICAgICAgICAgICB0aGlzLl9zZXRWYWx1ZShgJHt0aGlzLl92YWx1ZX1gKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB0aGlzLl9sYXN0VmFsdWUgPSBgJHt0aGlzLl92YWx1ZX1gO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWx0ZXIoKTogYW55W10ge1xyXG4gICAgY29uc3QgdmFsdWUgPVxyXG4gICAgICB0eXBlb2YgYCR7dGhpcy5fdmFsdWV9YCA9PT0gJ3N0cmluZydcclxuICAgICAgICA/IGAke3RoaXMuX3ZhbHVlfWAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIDogYCR7dGhpcy5jb250cm9sLnZhbHVlW3RoaXMub3B0aW9uXX1gLnRvTG93ZXJDYXNlKCk7XHJcbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLnN1Z2dlc3Rpb25zLmZpbHRlcihyZXMgPT5cclxuICAgICAgYCR7cmVzW3RoaXMub3B0aW9uXX1gLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModmFsdWUpXHJcbiAgICApO1xyXG4gICAgaWYgKCFvcHRpb24ubGVuZ3RoKSB0aGlzLl9ub3RTdWdnZXN0aW9ucyA9IHRydWU7XHJcbiAgICBlbHNlIHRoaXMuX25vdFN1Z2dlc3Rpb25zID0gZmFsc2U7XHJcbiAgICByZXR1cm4gb3B0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKHZhbHVlID09PSBudWxsKSB0aGlzLl9pc0ludmFsaWQgPSBmYWxzZTtcclxuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWUgfHwgJyc7XHJcbiAgICB0aGlzLl9pc1N1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uQ2hhbmdlRm4gPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hGbiA9IGZuO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2hhbmdlKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChldmVudC50YXJnZXQudmFsdWUgIT09IGAke3RoaXMuX3ZhbHVlfWApIHtcclxuICAgICAgdGhpcy5fdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcblxyXG4gICAgICBpZiAoIXRoaXMuaXNSZW1vdGVTZWFyY2gpIHRoaXMuX3NldFZhbHVlKGAke3RoaXMuX3ZhbHVlfWApO1xyXG5cclxuICAgICAgdGhpcy5vbkNoYW5nZUZuKFxyXG4gICAgICAgIHRoaXMuc3VnZ2VzdGlvbnMuZmlsdGVyKFxyXG4gICAgICAgICAgc3VnID0+IGAke3N1Z1t0aGlzLm9wdGlvbl19YC50b0xvd2VyQ2FzZSgpID09PSBgJHtgJHt0aGlzLl92YWx1ZX1gfWAudG9Mb3dlckNhc2UoKVxyXG4gICAgICAgIClbMF0gfHwgbnVsbFxyXG4gICAgICApO1xyXG5cclxuICAgICAgaWYgKHRoaXMuY29udHJvbC50b3VjaGVkKSB7XHJcbiAgICAgICAgdGhpcy5fb25WYWxpZGF0ZSgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuaXNSZW1vdGVTZWFyY2gpIHtcclxuICAgICAgY29uc3Qgc3VnZ2VzdGlvbnNGaWx0ZXJlZCA9IHZhbHVlXHJcbiAgICAgICAgPyB0aGlzLnN1Z2dlc3Rpb25zLmZpbHRlcihcclxuICAgICAgICAgICAgZWwgPT5cclxuICAgICAgICAgICAgICBgJHtlbFt0aGlzLm9wdGlvbl19YC50b0xvd2VyQ2FzZSgpLnRyaW0oKSA9PT0gKHZhbHVlIGFzIHN0cmluZykudG9Mb3dlckNhc2UoKS50cmltKClcclxuICAgICAgICAgIClcclxuICAgICAgICA6IFtdO1xyXG5cclxuICAgICAgaWYgKHN1Z2dlc3Rpb25zRmlsdGVyZWQubGVuZ3RoKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuYm9keS5kaXNwYXRjaEV2ZW50KFRBS19QUkVTU19FU0NfS0VZKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdHJ5IHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoc3VnZ2VzdGlvbnNGaWx0ZXJlZFswXVt0aGlzLm9wdGlvbl0sIHtcclxuICAgICAgICAgIGVtaXRFdmVudDogZmFsc2UsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KHN1Z2dlc3Rpb25zRmlsdGVyZWRbMF0pO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge31cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBlbWl0KGVsOiBNYXRPcHRpb25TZWxlY3Rpb25DaGFuZ2UpIHtcclxuICAgIGlmIChlbCAmJiBlbC5pc1VzZXJJbnB1dCkgdGhpcy5faXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZW1pdFdpdGhDbGljayhzdWdnZXN0aW9uT3B0aW9uOiBhbnkpIHtcclxuICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShzdWdnZXN0aW9uT3B0aW9uKTtcclxuICAgIHRoaXMuX3ZhbHVlID0gYCR7c3VnZ2VzdGlvbk9wdGlvblt0aGlzLm9wdGlvbl19YDtcclxuICAgIHRoaXMuX2lzSW52YWxpZCA9IGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uRm9jdXNvdXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9uVG91Y2hGbih0cnVlKTtcclxuICAgIHRoaXMuX29uVmFsaWRhdGUoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRWYWx1ZSh2YWx1ZTogYW55KSB7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgdGhpcy5fdmFsdWUgPSBgJHt2YWx1ZVt0aGlzLm9wdGlvbl19YDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvblVwZGF0ZVN1Z2dlc3Rpb25zKHN1Z2dlc3Rpb25zOiBhbnlbXSkge1xyXG4gICAgdGhpcy5zdWdnZXN0aW9ucyA9IHN1Z2dlc3Rpb25zO1xyXG4gICAgdGhpcy5fY2QubWFya0ZvckNoZWNrKCk7XHJcblxyXG4gICAgdGhpcy5vbkNoYW5nZUZuKFxyXG4gICAgICB0aGlzLnN1Z2dlc3Rpb25zLmZpbHRlcihcclxuICAgICAgICBzdWcgPT4gYCR7c3VnW3RoaXMub3B0aW9uXX1gLnRvTG93ZXJDYXNlKCkgPT09IGAke3RoaXMuX3ZhbHVlfWAudG9Mb3dlckNhc2UoKVxyXG4gICAgICApWzBdIHx8IG51bGxcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vblZhbGlkYXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbC5pbnZhbGlkKSB0aGlzLl9pc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgZWxzZSB0aGlzLl9pc0ludmFsaWQgPSBmYWxzZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkZvY3VzKCkge1xyXG4gICAgaWYgKCFgJHt0aGlzLl92YWx1ZX1gKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSgnJyk7XHJcbiAgICAgIHRoaXMuX3ZhbHVlID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25DbGVhckNvbnRyb2woKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUoJycsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIHRoaXMuX3ZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY29udHJvbCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmdDb250cm9sPy5jb250cm9sIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpcmVjdGl2ZSgpOiBGb3JtR3JvdXBEaXJlY3RpdmUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZSBhcyBGb3JtR3JvdXBEaXJlY3RpdmU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNEaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9uZ0NvbnRyb2wuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNTdWJtaXR0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNTdWJtaXR0ZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNJbnZhbGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzSW52YWxpZDtcclxuICB9XHJcblxyXG4gIGdldCByZXF1aXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpIHtcclxuICAgIHJldHVybiBgJHt0aGlzLl92YWx1ZX1gO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGZpbHRlcmVkT3B0aW9ucygpIHtcclxuICAgIHJldHVybiB0aGlzLl9maWx0ZXJlZE9wdGlvbnM7XHJcbiAgfVxyXG5cclxuICBnZXQgbm90U3VnZ2VzdGlvbnMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fbm90U3VnZ2VzdGlvbnM7XHJcbiAgfVxyXG5cclxuICBnZXQgbGFzdFZhbHVlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2xhc3RWYWx1ZTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cInRhay1mb3JtLWNvbnRhaW5lclwiPlxyXG4gIDxtYXQtZm9ybS1maWVsZFxyXG4gICAgW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWludmFsaWRdPVwiaXNJbnZhbGlkIHx8IChpc1N1Ym1pdHRlZCAmJiBjb250cm9sLmludmFsaWQpXCJcclxuICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxyXG4gICAgW2NvbG9yXT1cImNvbG9yXCJcclxuICA+XHJcbiAgICA8bWF0LWxhYmVsPlxyXG4gICAgICA8bmctY29udGVudCAvPnt7ICcgJyB9fVxyXG4gICAgICBAaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0YWstZmllbGRfX2Rhbmdlci14XCI+Kjwvc3Bhbj5cclxuICAgICAgfVxyXG4gICAgPC9tYXQtbGFiZWw+XHJcbiAgICA8aW5wdXRcclxuICAgICAgbWF0SW5wdXRcclxuICAgICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvY29tcGxldGVcIlxyXG4gICAgICBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIlxyXG4gICAgICBbdmFsdWVdPVwidmFsdWVcIlxyXG4gICAgICAoa2V5dXApPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkXCJcclxuICAgICAgKGZvY3VzKT1cIm9uRm9jdXMoKVwiXHJcbiAgICAgIChmb2N1c291dCk9XCJvbkZvY3Vzb3V0KClcIlxyXG4gICAgLz5cclxuICAgIEBpZiAoaXNSZW1vdGVTZWFyY2ggJiYgaXNMb2FkaW5nKSB7XHJcbiAgICAgIDxidXR0b24gbWF0U3VmZml4IG1hdC1pY29uLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgPG1hdC1zcGlubmVyIFtkaWFtZXRlcl09XCIxNVwiIG1vZGU9XCJpbmRldGVybWluYXRlXCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICB9XHJcbiAgICBAaWYgKChjb250cm9sLnZhbHVlIHx8IHZhbHVlKSAmJiBoYXNDbGVhckJ1dHRvbiAmJiAhZGlzYWJsZWQpIHtcclxuICAgICAgPGJ1dHRvbiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DbGVhckNvbnRyb2woKVwiPlxyXG4gICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgPG1hdC1hdXRvY29tcGxldGUgI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIj5cclxuICAgICAgQGZvciAoc3VnZ2VzdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnMgfCBhc3luYzsgdHJhY2sgc3VnZ2VzdGlvbikge1xyXG4gICAgICAgIDxtYXQtb3B0aW9uXHJcbiAgICAgICAgICBbdmFsdWVdPVwic3VnZ2VzdGlvbltvcHRpb25dXCJcclxuICAgICAgICAgIFtjbGFzcy50YWstb3B0aW9uLWV4dHJhXT1cImV4dHJhSW5mb1wiXHJcbiAgICAgICAgICAob25TZWxlY3Rpb25DaGFuZ2UpPVwiZW1pdCgkZXZlbnQpXCJcclxuICAgICAgICAgIChjbGljayk9XCJlbWl0V2l0aENsaWNrKHN1Z2dlc3Rpb24pXCJcclxuICAgICAgICAgIHRpdGxlPVwie3sgc3VnZ2VzdGlvbltvcHRpb25dIH19IHt7IGV4dHJhSW5mbyA/ICcoJyArIHN1Z2dlc3Rpb25bZXh0cmFJbmZvXSArICcpJyA6ICcnIH19XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3Bhbj57eyBzdWdnZXN0aW9uW29wdGlvbl0gfX08L3NwYW4+XHJcbiAgICAgICAgICBAaWYgKGV4dHJhSW5mbykge1xyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhay1vcHRpb24tc3Bhbi1leHRyYVwiPnt7IHN1Z2dlc3Rpb25bZXh0cmFJbmZvXSB9fTwvc3Bhbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgIH1cclxuICAgICAgQGlmIChub3RTdWdnZXN0aW9ucyAmJiBjb250cm9sLmludmFsaWQpIHtcclxuICAgICAgICA8bWF0LW9wdGlvbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGFrLWF1dG9jb21wbGV0ZS1ub3QtcmVjb3Jkc1wiPiBObyBzZSBlbmN1ZW50cmFuIHJlc3VsdGFkb3MgPC9zcGFuPlxyXG4gICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgfVxyXG4gICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgQGlmIChpc0ludmFsaWQgfHwgKGlzU3VibWl0dGVkICYmIGNvbnRyb2wuaW52YWxpZCkpIHtcclxuICAgIDx0YWstZXJyb3IgW2NvbnRyb2xdPVwiY29udHJvbFwiPjwvdGFrLWVycm9yPlxyXG4gIH1cclxuPC9kaXY+XHJcbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { ESCAPE } from '@kato-lee/cdk/keycodes';
|
|
2
|
-
export const TAK_DEFAULT_APPEARANCE_FORM = 'standard';
|
|
3
|
-
export const TAK_PRESS_ESC_KEY = new KeyboardEvent('keydown', {
|
|
4
|
-
bubbles: true,
|
|
5
|
-
cancelable: true,
|
|
6
|
-
keyCode: ESCAPE,
|
|
7
|
-
});
|
|
8
|
-
export const TAK_PTRN_EMAIL = '^[^@]+@[^@]+.[a-zA-Z]{2,}$';
|
|
9
|
-
export const TAK_PTRN_NUMRC = /^[0-9.]+$/;
|
|
10
|
-
export const TAK_PTRN_NONSP = /^[^\s]+$/;
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvbXBvbmVudHMvZmllbGRzL2NvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHaEQsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQTJCLFVBQVUsQ0FBQztBQUs5RSxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLGFBQWEsQ0FBQyxTQUFTLEVBQUU7SUFDNUQsT0FBTyxFQUFFLElBQUk7SUFDYixVQUFVLEVBQUUsSUFBSTtJQUNoQixPQUFPLEVBQUUsTUFBTTtDQUNoQixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsNEJBQTRCLENBQUM7QUFDM0QsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLFdBQVcsQ0FBQztBQUMxQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRVNDQVBFIH0gZnJvbSAnQGthdG8tbGVlL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgfSBmcm9tICdAa2F0by1sZWUvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcblxyXG5leHBvcnQgY29uc3QgVEFLX0RFRkFVTFRfQVBQRUFSQU5DRV9GT1JNOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gJ3N0YW5kYXJkJztcclxuXHJcbmV4cG9ydCB0eXBlIFRha0dlbmVyYWxGaWVsZFR5cGUgPSAndGV4dCcgfCAncGFzc3dvcmQnIHwgJ2ZpbHRlcic7XHJcbmV4cG9ydCB0eXBlIFRha0F1dG9jb21wbGV0ZUZpZWxkVHlwZSA9ICdvZmYnIHwgJ29uJztcclxuXHJcbmV4cG9ydCBjb25zdCBUQUtfUFJFU1NfRVNDX0tFWSA9IG5ldyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywge1xyXG4gIGJ1YmJsZXM6IHRydWUsXHJcbiAgY2FuY2VsYWJsZTogdHJ1ZSxcclxuICBrZXlDb2RlOiBFU0NBUEUsXHJcbn0pO1xyXG5cclxuZXhwb3J0IGNvbnN0IFRBS19QVFJOX0VNQUlMID0gJ15bXkBdK0BbXkBdKy5bYS16QS1aXXsyLH0kJztcclxuZXhwb3J0IGNvbnN0IFRBS19QVFJOX05VTVJDID0gL15bMC05Ll0rJC87XHJcbmV4cG9ydCBjb25zdCBUQUtfUFRSTl9OT05TUCA9IC9eW15cXHNdKyQvO1xyXG4iXX0=
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import { Component, Optional, Input, Self, } from '@angular/core';
|
|
2
|
-
import { Subject } from 'rxjs';
|
|
3
|
-
import { takeUntil } from 'rxjs/operators';
|
|
4
|
-
import { MAT_DATE_LOCALE, MatNativeDateModule } from '@kato-lee/material/core';
|
|
5
|
-
import { FormsModule, ReactiveFormsModule, } from '@angular/forms';
|
|
6
|
-
import { TAK_DEFAULT_APPEARANCE_FORM } from '../common';
|
|
7
|
-
import { CommonModule } from '@angular/common';
|
|
8
|
-
import { MatDatepickerModule } from '@kato-lee/material/datepicker';
|
|
9
|
-
import { MatFormFieldModule } from '@kato-lee/material/form-field';
|
|
10
|
-
import { TakErrorComponent } from '../error/component';
|
|
11
|
-
import { MatInputModule } from '@kato-lee/material/input';
|
|
12
|
-
import * as i0 from "@angular/core";
|
|
13
|
-
import * as i1 from "@angular/forms";
|
|
14
|
-
import * as i2 from "@kato-lee/material/form-field";
|
|
15
|
-
import * as i3 from "@kato-lee/material/datepicker";
|
|
16
|
-
import * as i4 from "@kato-lee/material/input";
|
|
17
|
-
export class TakDateFieldComponent {
|
|
18
|
-
constructor(_ngControl, _formGroupDirective, _cd) {
|
|
19
|
-
this._ngControl = _ngControl;
|
|
20
|
-
this._formGroupDirective = _formGroupDirective;
|
|
21
|
-
this._cd = _cd;
|
|
22
|
-
this._unsubscribe$ = new Subject();
|
|
23
|
-
this.appearance = TAK_DEFAULT_APPEARANCE_FORM;
|
|
24
|
-
this.autocomplete = 'off';
|
|
25
|
-
this.color = 'primary';
|
|
26
|
-
this.placeholder = '';
|
|
27
|
-
this.notInput = false;
|
|
28
|
-
this.disabled = false;
|
|
29
|
-
this.onChangeFn = (_) => { };
|
|
30
|
-
this.onTouchFn = (_) => { };
|
|
31
|
-
this._isSubmitted = false;
|
|
32
|
-
this._isInvalid = false;
|
|
33
|
-
this._required = false;
|
|
34
|
-
this._value = '';
|
|
35
|
-
if (_ngControl)
|
|
36
|
-
this._ngControl.valueAccessor = this;
|
|
37
|
-
if (_formGroupDirective) {
|
|
38
|
-
_formGroupDirective.ngSubmit.pipe(takeUntil(this._unsubscribe$)).subscribe(() => {
|
|
39
|
-
this._isSubmitted = true;
|
|
40
|
-
_cd.markForCheck();
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
ngOnInit() {
|
|
45
|
-
const form = this.control;
|
|
46
|
-
if (form?._rawValidators) {
|
|
47
|
-
form._rawValidators.map((r) => {
|
|
48
|
-
if (r.name.includes('required')) {
|
|
49
|
-
this._required = true;
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
if (this.disabled)
|
|
54
|
-
this.control.disable();
|
|
55
|
-
}
|
|
56
|
-
ngAfterViewInit() {
|
|
57
|
-
const isValidDate = Date.parse(this.control.value);
|
|
58
|
-
if (isNaN(isValidDate))
|
|
59
|
-
this.control.setValue(null);
|
|
60
|
-
else
|
|
61
|
-
this.control.setValue(new Date(this.control.value));
|
|
62
|
-
}
|
|
63
|
-
writeValue(value) {
|
|
64
|
-
if (value === null)
|
|
65
|
-
this._isInvalid = false;
|
|
66
|
-
this._value = value;
|
|
67
|
-
}
|
|
68
|
-
registerOnChange(fn) {
|
|
69
|
-
this.onChangeFn = fn;
|
|
70
|
-
}
|
|
71
|
-
registerOnTouched(fn) {
|
|
72
|
-
this.onTouchFn = fn;
|
|
73
|
-
}
|
|
74
|
-
onChange(event) {
|
|
75
|
-
this._value = event.target.value;
|
|
76
|
-
this.onChangeFn(event.target.value);
|
|
77
|
-
if (this.control.touched)
|
|
78
|
-
this._onValidate();
|
|
79
|
-
}
|
|
80
|
-
onFocusout() {
|
|
81
|
-
this.onTouchFn(true);
|
|
82
|
-
this._onValidate();
|
|
83
|
-
}
|
|
84
|
-
onCloseDatePicker() {
|
|
85
|
-
this.onTouchFn(true);
|
|
86
|
-
this._onValidate();
|
|
87
|
-
}
|
|
88
|
-
_onValidate() {
|
|
89
|
-
const isValidDate = Date.parse(this.control.value);
|
|
90
|
-
if (this.control.invalid ||
|
|
91
|
-
([undefined, null, ''].indexOf(this.control.value) < 0 &&
|
|
92
|
-
this.control.valid &&
|
|
93
|
-
isNaN(isValidDate))) {
|
|
94
|
-
this._isInvalid = true;
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
this._isInvalid = false;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
ngOnDestroy() {
|
|
101
|
-
this._unsubscribe$.next();
|
|
102
|
-
this._unsubscribe$.complete();
|
|
103
|
-
}
|
|
104
|
-
get control() {
|
|
105
|
-
return this._ngControl?.control;
|
|
106
|
-
}
|
|
107
|
-
get directive() {
|
|
108
|
-
return this._formGroupDirective;
|
|
109
|
-
}
|
|
110
|
-
get isDisabled() {
|
|
111
|
-
return this._ngControl.disabled;
|
|
112
|
-
}
|
|
113
|
-
get isSubmitted() {
|
|
114
|
-
return this._isSubmitted;
|
|
115
|
-
}
|
|
116
|
-
get isInvalid() {
|
|
117
|
-
return this._isInvalid;
|
|
118
|
-
}
|
|
119
|
-
get required() {
|
|
120
|
-
return this._required;
|
|
121
|
-
}
|
|
122
|
-
get value() {
|
|
123
|
-
return this._value;
|
|
124
|
-
}
|
|
125
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TakDateFieldComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: i1.FormGroupDirective, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
126
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", type: TakDateFieldComponent, isStandalone: true, selector: "tak-date-field", inputs: { appearance: "appearance", autocomplete: "autocomplete", color: "color", placeholder: "placeholder", notInput: "notInput", minDate: "minDate", maxDate: "maxDate", disabled: "disabled" }, providers: [{ provide: MAT_DATE_LOCALE, useValue: 'es-ES' }], ngImport: i0, template: "@if (!notInput) {\r\n <div class=\"tak-form-container\">\r\n <mat-form-field\r\n [class.mat-form-field-invalid]=\"isInvalid || (isSubmitted && control.invalid)\"\r\n [appearance]=\"appearance\"\r\n [color]=\"color\"\r\n >\r\n <mat-label>\r\n <ng-content />{{ ' ' }}\r\n @if (required) {\r\n <span class=\"tak-field__danger-x\">*</span>\r\n }\r\n </mat-label>\r\n <input\r\n matInput\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n [autocomplete]=\"autocomplete\"\r\n [matDatepicker]=\"picker\"\r\n [value]=\"value\"\r\n (keyup)=\"onChange($event)\"\r\n (dateChange)=\"onChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"isDisabled\"\r\n (focusout)=\"onFocusout()\"\r\n />\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker (closed)=\"onCloseDatePicker()\" #picker></mat-datepicker>\r\n </mat-form-field>\r\n @if (isInvalid || (isSubmitted && control.invalid)) {\r\n <tak-error [control]=\"control\" [isDateField]=\"true\"> </tak-error>\r\n }\r\n </div>\r\n}\r\n@if (notInput) {\r\n <div>\r\n <div\r\n class=\"tak__date-not-input__picker-container\"\r\n [class.mat-form-field-invalid]=\"isInvalid || (isSubmitted && control.invalid)\"\r\n >\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker (closed)=\"onCloseDatePicker()\" #picker></mat-datepicker>\r\n </div>\r\n <div class=\"tak__date-not-input__field-container\">\r\n <mat-form-field [color]=\"color\">\r\n <input\r\n matInput\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n autocomplete=\"off\"\r\n [matDatepicker]=\"picker\"\r\n [value]=\"value\"\r\n (keyup)=\"onChange($event)\"\r\n (dateChange)=\"onChange($event)\"\r\n [disabled]=\"isDisabled\"\r\n (focusout)=\"onFocusout()\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n @if (isInvalid || (isSubmitted && control.invalid)) {\r\n <tak-error [control]=\"control\" [isDateField]=\"true\" [marginTop]=\"-60\"> </tak-error>\r\n }\r\n </div>\r\n}\r\n", dependencies: [{ kind: "component", type: TakErrorComponent, selector: "tak-error", inputs: ["control", "start", "end", "isDateField", "isNumberField", "marginTop"] }, { kind: "ngmodule", type: FormsModule }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatNativeDateModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i2.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i2.MatSuffix, selector: "[matSuffix]" }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i4.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] }); }
|
|
127
|
-
}
|
|
128
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: TakDateFieldComponent, decorators: [{
|
|
129
|
-
type: Component,
|
|
130
|
-
args: [{ standalone: true, imports: [
|
|
131
|
-
TakErrorComponent,
|
|
132
|
-
FormsModule,
|
|
133
|
-
CommonModule,
|
|
134
|
-
MatNativeDateModule,
|
|
135
|
-
ReactiveFormsModule,
|
|
136
|
-
MatFormFieldModule,
|
|
137
|
-
MatDatepickerModule,
|
|
138
|
-
MatInputModule,
|
|
139
|
-
], providers: [{ provide: MAT_DATE_LOCALE, useValue: 'es-ES' }], selector: 'tak-date-field', template: "@if (!notInput) {\r\n <div class=\"tak-form-container\">\r\n <mat-form-field\r\n [class.mat-form-field-invalid]=\"isInvalid || (isSubmitted && control.invalid)\"\r\n [appearance]=\"appearance\"\r\n [color]=\"color\"\r\n >\r\n <mat-label>\r\n <ng-content />{{ ' ' }}\r\n @if (required) {\r\n <span class=\"tak-field__danger-x\">*</span>\r\n }\r\n </mat-label>\r\n <input\r\n matInput\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n [autocomplete]=\"autocomplete\"\r\n [matDatepicker]=\"picker\"\r\n [value]=\"value\"\r\n (keyup)=\"onChange($event)\"\r\n (dateChange)=\"onChange($event)\"\r\n [placeholder]=\"placeholder\"\r\n [disabled]=\"isDisabled\"\r\n (focusout)=\"onFocusout()\"\r\n />\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker (closed)=\"onCloseDatePicker()\" #picker></mat-datepicker>\r\n </mat-form-field>\r\n @if (isInvalid || (isSubmitted && control.invalid)) {\r\n <tak-error [control]=\"control\" [isDateField]=\"true\"> </tak-error>\r\n }\r\n </div>\r\n}\r\n@if (notInput) {\r\n <div>\r\n <div\r\n class=\"tak__date-not-input__picker-container\"\r\n [class.mat-form-field-invalid]=\"isInvalid || (isSubmitted && control.invalid)\"\r\n >\r\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\r\n <mat-datepicker (closed)=\"onCloseDatePicker()\" #picker></mat-datepicker>\r\n </div>\r\n <div class=\"tak__date-not-input__field-container\">\r\n <mat-form-field [color]=\"color\">\r\n <input\r\n matInput\r\n [min]=\"minDate\"\r\n [max]=\"maxDate\"\r\n autocomplete=\"off\"\r\n [matDatepicker]=\"picker\"\r\n [value]=\"value\"\r\n (keyup)=\"onChange($event)\"\r\n (dateChange)=\"onChange($event)\"\r\n [disabled]=\"isDisabled\"\r\n (focusout)=\"onFocusout()\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n @if (isInvalid || (isSubmitted && control.invalid)) {\r\n <tak-error [control]=\"control\" [isDateField]=\"true\" [marginTop]=\"-60\"> </tak-error>\r\n }\r\n </div>\r\n}\r\n" }]
|
|
140
|
-
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
141
|
-
type: Self
|
|
142
|
-
}, {
|
|
143
|
-
type: Optional
|
|
144
|
-
}] }, { type: i1.FormGroupDirective, decorators: [{
|
|
145
|
-
type: Optional
|
|
146
|
-
}] }, { type: i0.ChangeDetectorRef }], propDecorators: { appearance: [{
|
|
147
|
-
type: Input
|
|
148
|
-
}], autocomplete: [{
|
|
149
|
-
type: Input
|
|
150
|
-
}], color: [{
|
|
151
|
-
type: Input
|
|
152
|
-
}], placeholder: [{
|
|
153
|
-
type: Input
|
|
154
|
-
}], notInput: [{
|
|
155
|
-
type: Input
|
|
156
|
-
}], minDate: [{
|
|
157
|
-
type: Input
|
|
158
|
-
}], maxDate: [{
|
|
159
|
-
type: Input
|
|
160
|
-
}], disabled: [{
|
|
161
|
-
type: Input
|
|
162
|
-
}] } });
|
|
163
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvbXBvbmVudHMvZmllbGRzL2RhdGUvY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvbXBvbmVudHMvZmllbGRzL2RhdGUvY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUlMLFNBQVMsRUFDVCxRQUFRLEVBRVIsS0FBSyxFQUNMLElBQUksR0FDTCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFnQixNQUFNLHlCQUF5QixDQUFDO0FBRTdGLE9BQU8sRUFJTCxXQUFXLEVBRVgsbUJBQW1CLEdBQ3BCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLDJCQUEyQixFQUE0QixNQUFNLFdBQVcsQ0FBQztBQUNsRixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFDbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7QUFrQjFELE1BQU0sT0FBTyxxQkFBcUI7SUF3QmhDLFlBQzhCLFVBQXFCLEVBQzdCLG1CQUF1QyxFQUNuRCxHQUFzQjtRQUZGLGVBQVUsR0FBVixVQUFVLENBQVc7UUFDN0Isd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFvQjtRQUNuRCxRQUFHLEdBQUgsR0FBRyxDQUFt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clZpZXdJbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBDb21wb25lbnQsXHJcbiAgT3B0aW9uYWwsXHJcbiAgT25Jbml0LFxyXG4gIElucHV0LFxyXG4gIFNlbGYsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBNQVRfREFURV9MT0NBTEUsIE1hdE5hdGl2ZURhdGVNb2R1bGUsIFRoZW1lUGFsZXR0ZSB9IGZyb20gJ0BrYXRvLWxlZS9tYXRlcmlhbC9jb3JlJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB9IGZyb20gJ0BrYXRvLWxlZS9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHtcclxuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgRm9ybXNNb2R1bGUsXHJcbiAgTmdDb250cm9sLFxyXG4gIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUQUtfREVGQVVMVF9BUFBFQVJBTkNFX0ZPUk0sIFRha0F1dG9jb21wbGV0ZUZpZWxkVHlwZSB9IGZyb20gJy4uL2NvbW1vbic7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAa2F0by1sZWUvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0BrYXRvLWxlZS9tYXRlcmlhbC9mb3JtLWZpZWxkJztcclxuaW1wb3J0IHsgVGFrRXJyb3JDb21wb25lbnQgfSBmcm9tICcuLi9lcnJvci9jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBNYXRJbnB1dE1vZHVsZSB9IGZyb20gJ0BrYXRvLWxlZS9tYXRlcmlhbC9pbnB1dCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIFRha0Vycm9yQ29tcG9uZW50LFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXROYXRpdmVEYXRlTW9kdWxlLFxyXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcclxuICAgIE1hdEZvcm1GaWVsZE1vZHVsZSxcclxuICAgIE1hdERhdGVwaWNrZXJNb2R1bGUsXHJcbiAgICBNYXRJbnB1dE1vZHVsZSxcclxuICBdLFxyXG4gIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTUFUX0RBVEVfTE9DQUxFLCB1c2VWYWx1ZTogJ2VzLUVTJyB9XSxcclxuICBzZWxlY3RvcjogJ3Rhay1kYXRlLWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vY29tcG9uZW50Lmh0bWwnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVGFrRGF0ZUZpZWxkQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Jcclxue1xyXG4gIHByaXZhdGUgX3Vuc3Vic2NyaWJlJCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGFwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgPSBUQUtfREVGQVVMVF9BUFBFQVJBTkNFX0ZPUk07XHJcbiAgQElucHV0KCkgYXV0b2NvbXBsZXRlOiBUYWtBdXRvY29tcGxldGVGaWVsZFR5cGUgPSAnb2ZmJztcclxuICBASW5wdXQoKSBjb2xvcjogVGhlbWVQYWxldHRlID0gJ3ByaW1hcnknO1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XHJcbiAgQElucHV0KCkgbm90SW5wdXQgPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgbWluRGF0ZSE6IERhdGUgfCBzdHJpbmc7XHJcbiAgQElucHV0KCkgbWF4RGF0ZSE6IERhdGUgfCBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZUZuID0gKF86IGFueSkgPT4ge307XHJcbiAgcHVibGljIG9uVG91Y2hGbiA9IChfOiBhbnkpID0+IHt9O1xyXG5cclxuICBwcml2YXRlIF9pc1N1Ym1pdHRlZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2lzSW52YWxpZCA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX3JlcXVpcmVkID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfdmFsdWUgPSAnJztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBAU2VsZigpIEBPcHRpb25hbCgpIHByaXZhdGUgX25nQ29udHJvbDogTmdDb250cm9sLFxyXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZm9ybUdyb3VwRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmUsXHJcbiAgICBwcml2YXRlIF9jZDogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuICApIHtcclxuICAgIGlmIChfbmdDb250cm9sKSB0aGlzLl9uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XHJcbiAgICBpZiAoX2Zvcm1Hcm91cERpcmVjdGl2ZSkge1xyXG4gICAgICBfZm9ybUdyb3VwRGlyZWN0aXZlLm5nU3VibWl0LnBpcGUodGFrZVVudGlsKHRoaXMuX3Vuc3Vic2NyaWJlJCkpLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5faXNTdWJtaXR0ZWQgPSB0cnVlO1xyXG4gICAgICAgIF9jZC5tYXJrRm9yQ2hlY2soKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBmb3JtOiBhbnkgPSB0aGlzLmNvbnRyb2w7XHJcbiAgICBpZiAoZm9ybT8uX3Jhd1ZhbGlkYXRvcnMpIHtcclxuICAgICAgZm9ybS5fcmF3VmFsaWRhdG9ycy5tYXAoKHI6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyLm5hbWUuaW5jbHVkZXMoJ3JlcXVpcmVkJykpIHtcclxuICAgICAgICAgIHRoaXMuX3JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHRoaXMuY29udHJvbC5kaXNhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgaXNWYWxpZERhdGUgPSBEYXRlLnBhcnNlKHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgICBpZiAoaXNOYU4oaXNWYWxpZERhdGUpKSB0aGlzLmNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XHJcbiAgICBlbHNlIHRoaXMuY29udHJvbC5zZXRWYWx1ZShuZXcgRGF0ZSh0aGlzLmNvbnRyb2wudmFsdWUpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkgdGhpcy5faXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vbkNoYW5nZUZuID0gZm47XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoRm4gPSBmbjtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkNoYW5nZShldmVudDogYW55KTogdm9pZCB7XHJcbiAgICB0aGlzLl92YWx1ZSA9IGV2ZW50LnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMub25DaGFuZ2VGbihldmVudC50YXJnZXQudmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuY29udHJvbC50b3VjaGVkKSB0aGlzLl9vblZhbGlkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25Gb2N1c291dCgpOiB2b2lkIHtcclxuICAgIHRoaXMub25Ub3VjaEZuKHRydWUpO1xyXG4gICAgdGhpcy5fb25WYWxpZGF0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uQ2xvc2VEYXRlUGlja2VyKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vblRvdWNoRm4odHJ1ZSk7XHJcbiAgICB0aGlzLl9vblZhbGlkYXRlKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vblZhbGlkYXRlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgaXNWYWxpZERhdGUgPSBEYXRlLnBhcnNlKHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuY29udHJvbC5pbnZhbGlkIHx8XHJcbiAgICAgIChbdW5kZWZpbmVkLCBudWxsLCAnJ10uaW5kZXhPZih0aGlzLmNvbnRyb2wudmFsdWUpIDwgMCAmJlxyXG4gICAgICAgIHRoaXMuY29udHJvbC52YWxpZCAmJlxyXG4gICAgICAgIGlzTmFOKGlzVmFsaWREYXRlKSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLl9pc0ludmFsaWQgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5faXNJbnZhbGlkID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLl91bnN1YnNjcmliZSQubmV4dCgpO1xyXG4gICAgdGhpcy5fdW5zdWJzY3JpYmUkLmNvbXBsZXRlKCk7XHJcbiAgfVxyXG5cclxuICBnZXQgY29udHJvbCgpOiBGb3JtQ29udHJvbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbmdDb250cm9sPy5jb250cm9sIGFzIEZvcm1Db250cm9sO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGRpcmVjdGl2ZSgpOiBGb3JtR3JvdXBEaXJlY3RpdmUge1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1Hcm91cERpcmVjdGl2ZSBhcyBGb3JtR3JvdXBEaXJlY3RpdmU7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNEaXNhYmxlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9uZ0NvbnRyb2wuZGlzYWJsZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNTdWJtaXR0ZWQoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5faXNTdWJtaXR0ZWQ7XHJcbiAgfVxyXG5cclxuICBnZXQgaXNJbnZhbGlkKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzSW52YWxpZDtcclxuICB9XHJcblxyXG4gIGdldCByZXF1aXJlZCgpIHtcclxuICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcclxuICB9XHJcblxyXG4gIGdldCB2YWx1ZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcclxuICB9XHJcbn1cclxuIiwiQGlmICghbm90SW5wdXQpIHtcclxuICA8ZGl2IGNsYXNzPVwidGFrLWZvcm0tY29udGFpbmVyXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGRcclxuICAgICAgW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWludmFsaWRdPVwiaXNJbnZhbGlkIHx8IChpc1N1Ym1pdHRlZCAmJiBjb250cm9sLmludmFsaWQpXCJcclxuICAgICAgW2FwcGVhcmFuY2VdPVwiYXBwZWFyYW5jZVwiXHJcbiAgICAgIFtjb2xvcl09XCJjb2xvclwiXHJcbiAgICA+XHJcbiAgICAgIDxtYXQtbGFiZWw+XHJcbiAgICAgICAgPG5nLWNvbnRlbnQgLz57eyAnICcgfX1cclxuICAgICAgICBAaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRhay1maWVsZF9fZGFuZ2VyLXhcIj4qPC9zcGFuPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgIDxpbnB1dFxyXG4gICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgW21pbl09XCJtaW5EYXRlXCJcclxuICAgICAgICBbbWF4XT1cIm1heERhdGVcIlxyXG4gICAgICAgIFthdXRvY29tcGxldGVdPVwiYXV0b2NvbXBsZXRlXCJcclxuICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIlxyXG4gICAgICAgIFt2YWx1ZV09XCJ2YWx1ZVwiXHJcbiAgICAgICAgKGtleXVwKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIChkYXRlQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgIChmb2N1c291dCk9XCJvbkZvY3Vzb3V0KClcIlxyXG4gICAgICAvPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXIgKGNsb3NlZCk9XCJvbkNsb3NlRGF0ZVBpY2tlcigpXCIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIEBpZiAoaXNJbnZhbGlkIHx8IChpc1N1Ym1pdHRlZCAmJiBjb250cm9sLmludmFsaWQpKSB7XHJcbiAgICAgIDx0YWstZXJyb3IgW2NvbnRyb2xdPVwiY29udHJvbFwiIFtpc0RhdGVGaWVsZF09XCJ0cnVlXCI+IDwvdGFrLWVycm9yPlxyXG4gICAgfVxyXG4gIDwvZGl2PlxyXG59XHJcbkBpZiAobm90SW5wdXQpIHtcclxuICA8ZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cInRha19fZGF0ZS1ub3QtaW5wdXRfX3BpY2tlci1jb250YWluZXJcIlxyXG4gICAgICBbY2xhc3MubWF0LWZvcm0tZmllbGQtaW52YWxpZF09XCJpc0ludmFsaWQgfHwgKGlzU3VibWl0dGVkICYmIGNvbnRyb2wuaW52YWxpZClcIlxyXG4gICAgPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXItdG9nZ2xlIG1hdFN1ZmZpeCBbZm9yXT1cInBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICA8bWF0LWRhdGVwaWNrZXIgKGNsb3NlZCk9XCJvbkNsb3NlRGF0ZVBpY2tlcigpXCIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwidGFrX19kYXRlLW5vdC1pbnB1dF9fZmllbGQtY29udGFpbmVyXCI+XHJcbiAgICAgIDxtYXQtZm9ybS1maWVsZCBbY29sb3JdPVwiY29sb3JcIj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICBbbWluXT1cIm1pbkRhdGVcIlxyXG4gICAgICAgICAgW21heF09XCJtYXhEYXRlXCJcclxuICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICBbbWF0RGF0ZXBpY2tlcl09XCJwaWNrZXJcIlxyXG4gICAgICAgICAgW3ZhbHVlXT1cInZhbHVlXCJcclxuICAgICAgICAgIChrZXl1cCk9XCJvbkNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgIChkYXRlQ2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWRcIlxyXG4gICAgICAgICAgKGZvY3Vzb3V0KT1cIm9uRm9jdXNvdXQoKVwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgQGlmIChpc0ludmFsaWQgfHwgKGlzU3VibWl0dGVkICYmIGNvbnRyb2wuaW52YWxpZCkpIHtcclxuICAgICAgPHRhay1lcnJvciBbY29udHJvbF09XCJjb250cm9sXCIgW2lzRGF0ZUZpZWxkXT1cInRydWVcIiBbbWFyZ2luVG9wXT1cIi02MFwiPiA8L3Rhay1lcnJvcj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxufVxyXG4iXX0=
|