@covalent/dynamic-forms 3.1.2-beta.6 → 4.0.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/covalent-dynamic-forms.d.ts +1 -0
- package/dynamic-element.component.d.ts +7 -0
- package/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.d.ts +3 -0
- package/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.d.ts +3 -0
- package/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.scss +1 -0
- package/dynamic-elements/dynamic-file-input/dynamic-file-input.component.d.ts +3 -0
- package/dynamic-elements/dynamic-file-input/dynamic-file-input.component.scss +2 -0
- package/dynamic-elements/dynamic-input/dynamic-input.component.d.ts +3 -0
- package/dynamic-elements/dynamic-input/dynamic-input.component.scss +1 -0
- package/dynamic-elements/dynamic-select/dynamic-select.component.d.ts +3 -0
- package/dynamic-elements/dynamic-select/dynamic-select.component.scss +1 -0
- package/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.d.ts +3 -0
- package/dynamic-elements/dynamic-slider/dynamic-slider.component.d.ts +3 -0
- package/dynamic-elements/dynamic-slider/dynamic-slider.component.scss +2 -0
- package/dynamic-elements/dynamic-textarea/dynamic-textarea.component.d.ts +3 -0
- package/dynamic-elements/dynamic-textarea/dynamic-textarea.component.scss +1 -0
- package/dynamic-forms.component.d.ts +3 -0
- package/dynamic-forms.component.scss +10 -12
- package/dynamic-forms.module.d.ts +27 -0
- package/esm2020/covalent-dynamic-forms.mjs +5 -0
- package/esm2020/dynamic-element.component.mjs +220 -0
- package/esm2020/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.mjs +35 -0
- package/esm2020/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.mjs +58 -0
- package/esm2020/dynamic-elements/dynamic-file-input/dynamic-file-input.component.mjs +84 -0
- package/esm2020/dynamic-elements/dynamic-input/dynamic-input.component.mjs +55 -0
- package/esm2020/dynamic-elements/dynamic-select/dynamic-select.component.mjs +67 -0
- package/esm2020/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.mjs +36 -0
- package/esm2020/dynamic-elements/dynamic-slider/dynamic-slider.component.mjs +62 -0
- package/esm2020/dynamic-elements/dynamic-textarea/dynamic-textarea.component.mjs +50 -0
- package/esm2020/dynamic-forms.component.mjs +220 -0
- package/esm2020/dynamic-forms.module.mjs +118 -0
- package/esm2020/index.mjs +2 -0
- package/esm2020/public_api.mjs +13 -0
- package/esm2020/services/dynamic-forms.service.mjs +125 -0
- package/fesm2015/covalent-dynamic-forms.mjs +1143 -0
- package/fesm2015/covalent-dynamic-forms.mjs.map +1 -0
- package/fesm2020/covalent-dynamic-forms.mjs +1063 -0
- package/fesm2020/covalent-dynamic-forms.mjs.map +1 -0
- package/package.json +29 -12
- package/services/dynamic-forms.service.d.ts +3 -0
- package/bundles/covalent-dynamic-forms.umd.js +0 -1654
- package/bundles/covalent-dynamic-forms.umd.js.map +0 -1
- package/bundles/covalent-dynamic-forms.umd.min.js +0 -16
- package/bundles/covalent-dynamic-forms.umd.min.js.map +0 -1
- package/covalent-dynamic-forms.metadata.json +0 -1
- package/esm2015/covalent-dynamic-forms.js +0 -10
- package/esm2015/dynamic-element.component.js +0 -340
- package/esm2015/dynamic-elements/dynamic-checkbox/dynamic-checkbox.component.js +0 -34
- package/esm2015/dynamic-elements/dynamic-datepicker/dynamic-datepicker.component.js +0 -49
- package/esm2015/dynamic-elements/dynamic-file-input/dynamic-file-input.component.js +0 -47
- package/esm2015/dynamic-elements/dynamic-input/dynamic-input.component.js +0 -55
- package/esm2015/dynamic-elements/dynamic-select/dynamic-select.component.js +0 -46
- package/esm2015/dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component.js +0 -34
- package/esm2015/dynamic-elements/dynamic-slider/dynamic-slider.component.js +0 -64
- package/esm2015/dynamic-elements/dynamic-textarea/dynamic-textarea.component.js +0 -40
- package/esm2015/dynamic-forms.component.js +0 -306
- package/esm2015/dynamic-forms.module.js +0 -73
- package/esm2015/index.js +0 -7
- package/esm2015/public_api.js +0 -18
- package/esm2015/services/dynamic-forms.service.js +0 -201
- package/fesm2015/covalent-dynamic-forms.js +0 -1269
- package/fesm2015/covalent-dynamic-forms.js.map +0 -1
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { Component, Input, ChangeDetectionStrategy, ChangeDetectorRef, ContentChildren, QueryList, } from '@angular/core';
|
|
2
|
+
import { FormBuilder } from '@angular/forms';
|
|
3
|
+
import { TdDynamicFormsService } from './services/dynamic-forms.service';
|
|
4
|
+
import { TdDynamicFormsErrorTemplateDirective } from './dynamic-element.component';
|
|
5
|
+
import { timer, Subject } from 'rxjs';
|
|
6
|
+
import { takeUntil, filter } from 'rxjs/operators';
|
|
7
|
+
import * as i0 from "@angular/core";
|
|
8
|
+
import * as i1 from "@angular/forms";
|
|
9
|
+
import * as i2 from "./services/dynamic-forms.service";
|
|
10
|
+
import * as i3 from "@angular/common";
|
|
11
|
+
import * as i4 from "./dynamic-element.component";
|
|
12
|
+
function TdDynamicFormsComponent_ng_template_2_td_dynamic_element_1_Template(rf, ctx) { if (rf & 1) {
|
|
13
|
+
i0.ɵɵelement(0, "td-dynamic-element", 5, 6);
|
|
14
|
+
} if (rf & 2) {
|
|
15
|
+
const element_r1 = i0.ɵɵnextContext().$implicit;
|
|
16
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
17
|
+
i0.ɵɵproperty("formControlName", element_r1.name)("dynamicControl", ctx_r2.dynamicForm.controls[element_r1.name])("id", element_r1.name)("name", element_r1.name)("label", element_r1.label || element_r1.name)("hint", element_r1.hint)("type", element_r1.type)("required", element_r1.required)("min", element_r1.min)("max", element_r1.max)("minLength", element_r1.minLength)("maxLength", element_r1.maxLength)("selections", element_r1.selections)("multiple", element_r1.multiple)("customConfig", element_r1.customConfig)("errorMessageTemplate", ctx_r2.getErrorTemplateRef(element_r1.name))("placeholder", element_r1.placeholder);
|
|
18
|
+
} }
|
|
19
|
+
function TdDynamicFormsComponent_ng_template_2_Template(rf, ctx) { if (rf & 1) {
|
|
20
|
+
i0.ɵɵelementStart(0, "div", 3);
|
|
21
|
+
i0.ɵɵtemplate(1, TdDynamicFormsComponent_ng_template_2_td_dynamic_element_1_Template, 2, 17, "td-dynamic-element", 4);
|
|
22
|
+
i0.ɵɵelementEnd();
|
|
23
|
+
} if (rf & 2) {
|
|
24
|
+
const element_r1 = ctx.$implicit;
|
|
25
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
26
|
+
i0.ɵɵstyleProp("max-width", element_r1.flex ? element_r1.flex : 100, "%")("flex", "1 1 " + (element_r1.flex ? element_r1.flex : 100) + "%")("-ms-flex", "1 1 " + (element_r1.flex ? element_r1.flex : 100) + "%")("-webkit-box-flex", 1);
|
|
27
|
+
i0.ɵɵadvance(1);
|
|
28
|
+
i0.ɵɵproperty("ngIf", ctx_r0.dynamicForm.controls[element_r1.name]);
|
|
29
|
+
} }
|
|
30
|
+
const _c0 = ["*"];
|
|
31
|
+
export class TdDynamicFormsComponent {
|
|
32
|
+
constructor(_formBuilder, _dynamicFormsService, _changeDetectorRef) {
|
|
33
|
+
this._formBuilder = _formBuilder;
|
|
34
|
+
this._dynamicFormsService = _dynamicFormsService;
|
|
35
|
+
this._changeDetectorRef = _changeDetectorRef;
|
|
36
|
+
this._renderedElements = [];
|
|
37
|
+
this._templateMap = new Map();
|
|
38
|
+
this._destroy$ = new Subject();
|
|
39
|
+
this._destroyControl$ = new Subject();
|
|
40
|
+
this.dynamicForm = this._formBuilder.group({});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* elements: ITdDynamicElementConfig[]
|
|
44
|
+
* JS Object that will render the elements depending on its config.
|
|
45
|
+
* [name] property is required.
|
|
46
|
+
*/
|
|
47
|
+
set elements(elements) {
|
|
48
|
+
if (elements) {
|
|
49
|
+
this._elements = elements;
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
this._elements = [];
|
|
53
|
+
}
|
|
54
|
+
this._rerenderElements();
|
|
55
|
+
}
|
|
56
|
+
get elements() {
|
|
57
|
+
return this._renderedElements;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Getter property for dynamic [FormGroup].
|
|
61
|
+
*/
|
|
62
|
+
get form() {
|
|
63
|
+
return this.dynamicForm;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Getter property for [valid] of dynamic [FormGroup].
|
|
67
|
+
*/
|
|
68
|
+
get valid() {
|
|
69
|
+
if (this.dynamicForm) {
|
|
70
|
+
return this.dynamicForm.valid;
|
|
71
|
+
}
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Getter property for [value] of dynamic [FormGroup].
|
|
76
|
+
*/
|
|
77
|
+
get value() {
|
|
78
|
+
if (this.dynamicForm) {
|
|
79
|
+
return this.dynamicForm.value;
|
|
80
|
+
}
|
|
81
|
+
return {};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Getter property for [errors] of dynamic [FormGroup].
|
|
85
|
+
*/
|
|
86
|
+
get errors() {
|
|
87
|
+
if (this.dynamicForm) {
|
|
88
|
+
const errors = {};
|
|
89
|
+
for (const name of Object.keys(this.dynamicForm.controls)) {
|
|
90
|
+
errors[name] = this.dynamicForm.controls[name].errors;
|
|
91
|
+
}
|
|
92
|
+
return errors;
|
|
93
|
+
}
|
|
94
|
+
return {};
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Getter property for [controls] of dynamic [FormGroup].
|
|
98
|
+
*/
|
|
99
|
+
get controls() {
|
|
100
|
+
if (this.dynamicForm) {
|
|
101
|
+
return this.dynamicForm.controls;
|
|
102
|
+
}
|
|
103
|
+
return {};
|
|
104
|
+
}
|
|
105
|
+
ngAfterContentInit() {
|
|
106
|
+
this._updateErrorTemplates();
|
|
107
|
+
}
|
|
108
|
+
ngOnDestroy() {
|
|
109
|
+
this._destroy$.next();
|
|
110
|
+
this._destroy$.complete();
|
|
111
|
+
this._destroyControl$.complete();
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Refreshes the form and rerenders all validator/element modifications.
|
|
115
|
+
*/
|
|
116
|
+
refresh() {
|
|
117
|
+
this._rerenderElements();
|
|
118
|
+
this._updateErrorTemplates();
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Getter method for error template references
|
|
122
|
+
*/
|
|
123
|
+
getErrorTemplateRef(name) {
|
|
124
|
+
return this._templateMap.get(name);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Loads error templates and sets them in a map for faster access.
|
|
128
|
+
*/
|
|
129
|
+
_updateErrorTemplates() {
|
|
130
|
+
this._templateMap = new Map();
|
|
131
|
+
for (const errorTemplate of this._errorTemplates.toArray()) {
|
|
132
|
+
this._templateMap.set(errorTemplate.tdDynamicFormsError, errorTemplate.templateRef);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
_rerenderElements() {
|
|
136
|
+
this._clearRemovedElements();
|
|
137
|
+
this._renderedElements = [];
|
|
138
|
+
const duplicates = [];
|
|
139
|
+
this._elements.forEach((elem) => {
|
|
140
|
+
this._dynamicFormsService.validateDynamicElementName(elem.name);
|
|
141
|
+
if (duplicates.indexOf(elem.name) > -1) {
|
|
142
|
+
throw new Error(`Dynamic element name: "${elem.name}" is duplicated`);
|
|
143
|
+
}
|
|
144
|
+
duplicates.push(elem.name);
|
|
145
|
+
const dynamicElement = this.dynamicForm.get(elem.name);
|
|
146
|
+
if (!dynamicElement) {
|
|
147
|
+
this.dynamicForm.addControl(elem.name, this._dynamicFormsService.createFormControl(elem));
|
|
148
|
+
this._subscribeToControlStatusChanges(elem.name);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
dynamicElement.setValue(elem.default);
|
|
152
|
+
dynamicElement.markAsPristine();
|
|
153
|
+
dynamicElement.markAsUntouched();
|
|
154
|
+
if (elem.disabled) {
|
|
155
|
+
dynamicElement.disable();
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
dynamicElement.enable();
|
|
159
|
+
}
|
|
160
|
+
dynamicElement.setValidators(this._dynamicFormsService.createValidators(elem));
|
|
161
|
+
}
|
|
162
|
+
// copy objects so they are only changes when calling this method
|
|
163
|
+
this._renderedElements.push(Object.assign({}, elem));
|
|
164
|
+
});
|
|
165
|
+
// call a change detection since the whole form might change
|
|
166
|
+
this._changeDetectorRef.detectChanges();
|
|
167
|
+
timer()
|
|
168
|
+
.toPromise()
|
|
169
|
+
.then(() => {
|
|
170
|
+
// call a markForCheck so elements are rendered correctly in OnPush
|
|
171
|
+
this._changeDetectorRef.markForCheck();
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
_clearRemovedElements() {
|
|
175
|
+
this._renderedElements = this._renderedElements.filter((renderedElement) => !this._elements.some((element) => element.name === renderedElement.name));
|
|
176
|
+
// remove elements that were removed from the array
|
|
177
|
+
this._renderedElements.forEach((elem) => {
|
|
178
|
+
this._destroyControl$.next(elem.name);
|
|
179
|
+
this.dynamicForm.removeControl(elem.name);
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
// Updates component when manually adding errors to controls
|
|
183
|
+
_subscribeToControlStatusChanges(elementName) {
|
|
184
|
+
const control = this.controls[elementName];
|
|
185
|
+
const controlDestroyed$ = this._destroyControl$.pipe(filter((destroyedElementName) => destroyedElementName === elementName));
|
|
186
|
+
control.statusChanges.pipe(takeUntil(this._destroy$), takeUntil(controlDestroyed$)).subscribe(() => {
|
|
187
|
+
this._changeDetectorRef.markForCheck();
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/** @nocollapse */ /** @nocollapse */ TdDynamicFormsComponent.ɵfac = function TdDynamicFormsComponent_Factory(t) { return new (t || TdDynamicFormsComponent)(i0.ɵɵdirectiveInject(i1.FormBuilder), i0.ɵɵdirectiveInject(i2.TdDynamicFormsService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
|
|
192
|
+
/** @nocollapse */ /** @nocollapse */ TdDynamicFormsComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: TdDynamicFormsComponent, selectors: [["td-dynamic-forms"]], contentQueries: function TdDynamicFormsComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
|
|
193
|
+
i0.ɵɵcontentQuery(dirIndex, TdDynamicFormsErrorTemplateDirective, 5);
|
|
194
|
+
} if (rf & 2) {
|
|
195
|
+
let _t;
|
|
196
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx._errorTemplates = _t);
|
|
197
|
+
} }, inputs: { elements: "elements" }, ngContentSelectors: _c0, decls: 4, vars: 2, consts: [["novalidate", "", 3, "formGroup"], [1, "td-dynamic-form-wrapper"], ["ngFor", "", 3, "ngForOf"], [1, "td-dynamic-element-wrapper"], [3, "formControlName", "dynamicControl", "id", "name", "label", "hint", "type", "required", "min", "max", "minLength", "maxLength", "selections", "multiple", "customConfig", "errorMessageTemplate", "placeholder", 4, "ngIf"], [3, "formControlName", "dynamicControl", "id", "name", "label", "hint", "type", "required", "min", "max", "minLength", "maxLength", "selections", "multiple", "customConfig", "errorMessageTemplate", "placeholder"], ["dynamicElement", ""]], template: function TdDynamicFormsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
198
|
+
i0.ɵɵprojectionDef();
|
|
199
|
+
i0.ɵɵelementStart(0, "form", 0);
|
|
200
|
+
i0.ɵɵelementStart(1, "div", 1);
|
|
201
|
+
i0.ɵɵtemplate(2, TdDynamicFormsComponent_ng_template_2_Template, 2, 9, "ng-template", 2);
|
|
202
|
+
i0.ɵɵelementEnd();
|
|
203
|
+
i0.ɵɵprojection(3);
|
|
204
|
+
i0.ɵɵelementEnd();
|
|
205
|
+
} if (rf & 2) {
|
|
206
|
+
i0.ɵɵproperty("formGroup", ctx.dynamicForm);
|
|
207
|
+
i0.ɵɵadvance(2);
|
|
208
|
+
i0.ɵɵproperty("ngForOf", ctx.elements);
|
|
209
|
+
} }, directives: [i1.ɵNgNoValidate, i1.NgControlStatusGroup, i1.FormGroupDirective, i3.NgForOf, i3.NgIf, i4.TdDynamicElementComponent, i1.NgControlStatus, i1.FormControlName, i1.RequiredValidator], styles: [".td-dynamic-form-wrapper[_ngcontent-%COMP%]{-ms-flex-flow:row wrap;flex-flow:row wrap;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;max-width:100%;-ms-flex-pack:start;justify-content:flex-start}.td-dynamic-form-wrapper[_ngcontent-%COMP%] .mat-form-field-infix{width:auto}.td-dynamic-form-wrapper[_ngcontent-%COMP%] .td-dynamic-element-hint{font-size:75%;display:block}.td-dynamic-form-wrapper[_ngcontent-%COMP%] .td-dynamic-element-wrapper[_ngcontent-%COMP%]{max-height:100%;box-sizing:border-box;position:relative;padding:4px 4px 8px}"], changeDetection: 0 });
|
|
210
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdDynamicFormsComponent, [{
|
|
211
|
+
type: Component,
|
|
212
|
+
args: [{ selector: 'td-dynamic-forms', changeDetection: ChangeDetectionStrategy.OnPush, template: "<form [formGroup]=\"dynamicForm\" novalidate>\n <div class=\"td-dynamic-form-wrapper\">\n <ng-template let-element ngFor [ngForOf]=\"elements\">\n <div\n class=\"td-dynamic-element-wrapper\"\n [style.max-width.%]=\"element.flex ? element.flex : 100\"\n [style.flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-ms-flex]=\"'1 1 ' + (element.flex ? element.flex : 100) + '%'\"\n [style.-webkit-box-flex]=\"1\"\n >\n <td-dynamic-element\n #dynamicElement\n *ngIf=\"dynamicForm.controls[element.name]\"\n [formControlName]=\"element.name\"\n [dynamicControl]=\"dynamicForm.controls[element.name]\"\n [id]=\"element.name\"\n [name]=\"element.name\"\n [label]=\"element.label || element.name\"\n [hint]=\"element.hint\"\n [type]=\"element.type\"\n [required]=\"element.required\"\n [min]=\"element.min\"\n [max]=\"element.max\"\n [minLength]=\"element.minLength\"\n [maxLength]=\"element.maxLength\"\n [selections]=\"element.selections\"\n [multiple]=\"element.multiple\"\n [customConfig]=\"element.customConfig\"\n [errorMessageTemplate]=\"getErrorTemplateRef(element.name)\"\n [placeholder]=\"element.placeholder\"\n ></td-dynamic-element>\n </div>\n </ng-template>\n </div>\n <ng-content></ng-content>\n</form>\n", styles: [".td-dynamic-form-wrapper{-ms-flex-flow:row wrap;flex-flow:row wrap;box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;max-width:100%;-ms-flex-pack:start;justify-content:flex-start}.td-dynamic-form-wrapper ::ng-deep .mat-form-field-infix{width:auto}.td-dynamic-form-wrapper ::ng-deep .td-dynamic-element-hint{font-size:75%;display:block}.td-dynamic-form-wrapper .td-dynamic-element-wrapper{max-height:100%;box-sizing:border-box;position:relative;padding:4px 4px 8px}\n"] }]
|
|
213
|
+
}], function () { return [{ type: i1.FormBuilder }, { type: i2.TdDynamicFormsService }, { type: i0.ChangeDetectorRef }]; }, { _errorTemplates: [{
|
|
214
|
+
type: ContentChildren,
|
|
215
|
+
args: [TdDynamicFormsErrorTemplateDirective, { descendants: true }]
|
|
216
|
+
}], elements: [{
|
|
217
|
+
type: Input,
|
|
218
|
+
args: ['elements']
|
|
219
|
+
}] }); })();
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3Jtcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vZHluYW1pYy1mb3Jtcy9keW5hbWljLWZvcm1zLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3NyYy9wbGF0Zm9ybS9keW5hbWljLWZvcm1zL2R5bmFtaWMtZm9ybXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixlQUFlLEVBRWYsU0FBUyxHQUdWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBYSxXQUFXLEVBQW1CLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLHFCQUFxQixFQUEyQixNQUFNLGtDQUFrQyxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRW5GLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7SUNQM0MsMkNBb0JzQjs7OztJQWpCcEIsaURBQWdDLGdFQUFBLHVCQUFBLHlCQUFBLDhDQUFBLHlCQUFBLHlCQUFBLGlDQUFBLHVCQUFBLHVCQUFBLG1DQUFBLG1DQUFBLHFDQUFBLGlDQUFBLHlDQUFBLHFFQUFBLHVDQUFBOzs7SUFWcEMsOEJBTUM7SUFDQyxxSEFvQnNCO0lBQ3hCLGlCQUFNOzs7O0lBMUJKLHlFQUF1RCxrRUFBQSxzRUFBQSx1QkFBQTtJQU9wRCxlQUF3QztJQUF4QyxtRUFBd0M7OztBRGFuRCxNQUFNLE9BQU8sdUJBQXVCO0lBZ0ZsQyxZQUNVLFlBQXlCLEVBQ3pCLG9CQUEyQyxFQUMzQyxrQkFBcUM7UUFGckMsaUJBQVksR0FBWixZQUFZLENBQWE7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e1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgVGVtcGxhdGVSZWYsXG4gIFF1ZXJ5TGlzdCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgT25EZXN0cm95LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIsIEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgVGREeW5hbWljRm9ybXNTZXJ2aWNlLCBJVGREeW5hbWljRWxlbWVudENvbmZpZyB9IGZyb20gJy4vc2VydmljZXMvZHluYW1pYy1mb3Jtcy5zZXJ2aWNlJztcbmltcG9ydCB7IFRkRHluYW1pY0Zvcm1zRXJyb3JUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJy4vZHluYW1pYy1lbGVtZW50LmNvbXBvbmVudCc7XG5cbmltcG9ydCB7IHRpbWVyLCBTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwsIGZpbHRlciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGQtZHluYW1pYy1mb3JtcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9keW5hbWljLWZvcm1zLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZHluYW1pYy1mb3Jtcy5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRm9ybXNDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9yZW5kZXJlZEVsZW1lbnRzOiBJVGREeW5hbWljRWxlbWVudENvbmZpZ1tdID0gW107XG4gIHByaXZhdGUgX2VsZW1lbnRzOiBJVGREeW5hbWljRWxlbWVudENvbmZpZ1tdO1xuICBwcml2YXRlIF90ZW1wbGF0ZU1hcDogTWFwPHN0cmluZywgVGVtcGxhdGVSZWY8YW55Pj4gPSBuZXcgTWFwPHN0cmluZywgVGVtcGxhdGVSZWY8YW55Pj4oKTtcbiAgcHJpdmF0ZSBfZGVzdHJveSQ6IFN1YmplY3Q8YW55PiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgX2Rlc3Ryb3lDb250cm9sJDogU3ViamVjdDxzdHJpbmc+ID0gbmV3IFN1YmplY3QoKTtcblxuICBAQ29udGVudENoaWxkcmVuKFRkRHluYW1pY0Zvcm1zRXJyb3JUZW1wbGF0ZURpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBfZXJyb3JUZW1wbGF0ZXM6IFF1ZXJ5TGlzdDxUZER5bmFtaWNGb3Jtc0Vycm9yVGVtcGxhdGVEaXJlY3RpdmU+O1xuICBkeW5hbWljRm9ybTogRm9ybUdyb3VwO1xuXG4gIC8qKlxuICAgKiBlbGVtZW50czogSVRkRHluYW1pY0VsZW1lbnRDb25maWdbXVxuICAgKiBKUyBPYmplY3QgdGhhdCB3aWxsIHJlbmRlciB0aGUgZWxlbWVudHMgZGVwZW5kaW5nIG9uIGl0cyBjb25maWcuXG4gICAqIFtuYW1lXSBwcm9wZXJ0eSBpcyByZXF1aXJlZC5cbiAgICovXG4gIEBJbnB1dCgnZWxlbWVudHMnKVxuICBzZXQgZWxlbWVudHMoZWxlbWVudHM6IElUZER5bmFtaWNFbGVtZW50Q29uZmlnW10pIHtcbiAgICBpZiAoZWxlbWVudHMpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnRzID0gZWxlbWVudHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2VsZW1lbnRzID0gW107XG4gICAgfVxuICAgIHRoaXMuX3JlcmVuZGVyRWxlbWVudHMoKTtcbiAgfVxuICBnZXQgZWxlbWVudHMoKTogSVRkRHluYW1pY0VsZW1lbnRDb25maWdbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlbmRlcmVkRWxlbWVudHM7XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIHByb3BlcnR5IGZvciBkeW5hbWljIFtGb3JtR3JvdXBdLlxuICAgKi9cbiAgZ2V0IGZvcm0oKTogRm9ybUdyb3VwIHtcbiAgICByZXR1cm4gdGhpcy5keW5hbWljRm9ybTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXR0ZXIgcHJvcGVydHkgZm9yIFt2YWxpZF0gb2YgZHluYW1pYyBbRm9ybUdyb3VwXS5cbiAgICovXG4gIGdldCB2YWxpZCgpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5keW5hbWljRm9ybSkge1xuICAgICAgcmV0dXJuIHRoaXMuZHluYW1pY0Zvcm0udmFsaWQ7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXR0ZXIgcHJvcGVydHkgZm9yIFt2YWx1ZV0gb2YgZHluYW1pYyBbRm9ybUdyb3VwXS5cbiAgICovXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIGlmICh0aGlzLmR5bmFtaWNGb3JtKSB7XG4gICAgICByZXR1cm4gdGhpcy5keW5hbWljRm9ybS52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciBwcm9wZXJ0eSBmb3IgW2Vycm9yc10gb2YgZHluYW1pYyBbRm9ybUdyb3VwXS5cbiAgICovXG4gIGdldCBlcnJvcnMoKTogeyBbbmFtZTogc3RyaW5nXTogYW55IH0ge1xuICAgIGlmICh0aGlzLmR5bmFtaWNGb3JtKSB7XG4gICAgICBjb25zdCBlcnJvcnM6IHsgW25hbWU6IHN0cmluZ106IGFueSB9ID0ge307XG4gICAgICBmb3IgKGNvbnN0IG5hbWUgb2YgT2JqZWN0LmtleXModGhpcy5keW5hbWljRm9ybS5jb250cm9scykpIHtcbiAgICAgICAgZXJyb3JzW25hbWVdID0gdGhpcy5keW5hbWljRm9ybS5jb250cm9sc1tuYW1lXS5lcnJvcnM7XG4gICAgICB9XG4gICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICAvKipcbiAgICogR2V0dGVyIHByb3BlcnR5IGZvciBbY29udHJvbHNdIG9mIGR5bmFtaWMgW0Zvcm1Hcm91cF0uXG4gICAqL1xuICBnZXQgY29udHJvbHMoKTogeyBba2V5OiBzdHJpbmddOiBBYnN0cmFjdENvbnRyb2wgfSB7XG4gICAgaWYgKHRoaXMuZHluYW1pY0Zvcm0pIHtcbiAgICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtLmNvbnRyb2xzO1xuICAgIH1cbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIF9mb3JtQnVpbGRlcjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBfZHluYW1pY0Zvcm1zU2VydmljZTogVGREeW5hbWljRm9ybXNTZXJ2aWNlLFxuICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgKSB7XG4gICAgdGhpcy5keW5hbWljRm9ybSA9IHRoaXMuX2Zvcm1CdWlsZGVyLmdyb3VwKHt9KTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl91cGRhdGVFcnJvclRlbXBsYXRlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fZGVzdHJveUNvbnRyb2wkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBmb3JtIGFuZCByZXJlbmRlcnMgYWxsIHZhbGlkYXRvci9lbGVtZW50IG1vZGlmaWNhdGlvbnMuXG4gICAqL1xuICByZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlcmVuZGVyRWxlbWVudHMoKTtcbiAgICB0aGlzLl91cGRhdGVFcnJvclRlbXBsYXRlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHRlciBtZXRob2QgZm9yIGVycm9yIHRlbXBsYXRlIHJlZmVyZW5jZXNcbiAgICovXG4gIGdldEVycm9yVGVtcGxhdGVSZWYobmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX3RlbXBsYXRlTWFwLmdldChuYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkcyBlcnJvciB0ZW1wbGF0ZXMgYW5kIHNldHMgdGhlbSBpbiBhIG1hcCBmb3IgZmFzdGVyIGFjY2Vzcy5cbiAgICovXG4gIHByaXZhdGUgX3VwZGF0ZUVycm9yVGVtcGxhdGVzKCk6IHZvaWQge1xuICAgIHRoaXMuX3RlbXBsYXRlTWFwID0gbmV3IE1hcDxzdHJpbmcsIFRlbXBsYXRlUmVmPGFueT4+KCk7XG4gICAgZm9yIChjb25zdCBlcnJvclRlbXBsYXRlIG9mIHRoaXMuX2Vycm9yVGVtcGxhdGVzLnRvQXJyYXkoKSkge1xuICAgICAgdGhpcy5fdGVtcGxhdGVNYXAuc2V0KGVycm9yVGVtcGxhdGUudGREeW5hbWljRm9ybXNFcnJvciwgZXJyb3JUZW1wbGF0ZS50ZW1wbGF0ZVJlZik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcmVyZW5kZXJFbGVtZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGVhclJlbW92ZWRFbGVtZW50cygpO1xuICAgIHRoaXMuX3JlbmRlcmVkRWxlbWVudHMgPSBbXTtcbiAgICBjb25zdCBkdXBsaWNhdGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIHRoaXMuX2VsZW1lbnRzLmZvckVhY2goKGVsZW06IElUZER5bmFtaWNFbGVtZW50Q29uZmlnKSA9PiB7XG4gICAgICB0aGlzLl9keW5hbWljRm9ybXNTZXJ2aWNlLnZhbGlkYXRlRHluYW1pY0VsZW1lbnROYW1lKGVsZW0ubmFtZSk7XG4gICAgICBpZiAoZHVwbGljYXRlcy5pbmRleE9mKGVsZW0ubmFtZSkgPiAtMSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYER5bmFtaWMgZWxlbWVudCBuYW1lOiBcIiR7ZWxlbS5uYW1lfVwiIGlzIGR1cGxpY2F0ZWRgKTtcbiAgICAgIH1cbiAgICAgIGR1cGxpY2F0ZXMucHVzaChlbGVtLm5hbWUpO1xuICAgICAgY29uc3QgZHluYW1pY0VsZW1lbnQ6IEFic3RyYWN0Q29udHJvbCA9IHRoaXMuZHluYW1pY0Zvcm0uZ2V0KGVsZW0ubmFtZSk7XG4gICAgICBpZiAoIWR5bmFtaWNFbGVtZW50KSB7XG4gICAgICAgIHRoaXMuZHluYW1pY0Zvcm0uYWRkQ29udHJvbChlbGVtLm5hbWUsIHRoaXMuX2R5bmFtaWNGb3Jtc1NlcnZpY2UuY3JlYXRlRm9ybUNvbnRyb2woZWxlbSkpO1xuICAgICAgICB0aGlzLl9zdWJzY3JpYmVUb0NvbnRyb2xTdGF0dXNDaGFuZ2VzKGVsZW0ubmFtZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkeW5hbWljRWxlbWVudC5zZXRWYWx1ZShlbGVtLmRlZmF1bHQpO1xuICAgICAgICBkeW5hbWljRWxlbWVudC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgICBkeW5hbWljRWxlbWVudC5tYXJrQXNVbnRvdWNoZWQoKTtcbiAgICAgICAgaWYgKGVsZW0uZGlzYWJsZWQpIHtcbiAgICAgICAgICBkeW5hbWljRWxlbWVudC5kaXNhYmxlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZHluYW1pY0VsZW1lbnQuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZHluYW1pY0VsZW1lbnQuc2V0VmFsaWRhdG9ycyh0aGlzLl9keW5hbWljRm9ybXNTZXJ2aWNlLmNyZWF0ZVZhbGlkYXRvcnMoZWxlbSkpO1xuICAgICAgfVxuICAgICAgLy8gY29weSBvYmplY3RzIHNvIHRoZXkgYXJlIG9ubHkgY2hhbmdlcyB3aGVuIGNhbGxpbmcgdGhpcyBtZXRob2RcbiAgICAgIHRoaXMuX3JlbmRlcmVkRWxlbWVudHMucHVzaChPYmplY3QuYXNzaWduKHt9LCBlbGVtKSk7XG4gICAgfSk7XG4gICAgLy8gY2FsbCBhIGNoYW5nZSBkZXRlY3Rpb24gc2luY2UgdGhlIHdob2xlIGZvcm0gbWlnaHQgY2hhbmdlXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIHRpbWVyKClcbiAgICAgIC50b1Byb21pc2UoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAvLyBjYWxsIGEgbWFya0ZvckNoZWNrIHNvIGVsZW1lbnRzIGFyZSByZW5kZXJlZCBjb3JyZWN0bHkgaW4gT25QdXNoXG4gICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhclJlbW92ZWRFbGVtZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW5kZXJlZEVsZW1lbnRzID0gdGhpcy5fcmVuZGVyZWRFbGVtZW50cy5maWx0ZXIoXG4gICAgICAocmVuZGVyZWRFbGVtZW50OiBJVGREeW5hbWljRWxlbWVudENvbmZpZykgPT5cbiAgICAgICAgIXRoaXMuX2VsZW1lbnRzLnNvbWUoKGVsZW1lbnQ6IElUZER5bmFtaWNFbGVtZW50Q29uZmlnKSA9PiBlbGVtZW50Lm5hbWUgPT09IHJlbmRlcmVkRWxlbWVudC5uYW1lKSxcbiAgICApO1xuICAgIC8vIHJlbW92ZSBlbGVtZW50cyB0aGF0IHdlcmUgcmVtb3ZlZCBmcm9tIHRoZSBhcnJheVxuICAgIHRoaXMuX3JlbmRlcmVkRWxlbWVudHMuZm9yRWFjaCgoZWxlbTogSVRkRHluYW1pY0VsZW1lbnRDb25maWcpID0+IHtcbiAgICAgIHRoaXMuX2Rlc3Ryb3lDb250cm9sJC5uZXh0KGVsZW0ubmFtZSk7XG4gICAgICB0aGlzLmR5bmFtaWNGb3JtLnJlbW92ZUNvbnRyb2woZWxlbS5uYW1lKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFVwZGF0ZXMgY29tcG9uZW50IHdoZW4gbWFudWFsbHkgYWRkaW5nIGVycm9ycyB0byBjb250cm9sc1xuICBwcml2YXRlIF9zdWJzY3JpYmVUb0NvbnRyb2xTdGF0dXNDaGFuZ2VzKGVsZW1lbnROYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBjb250cm9sOiBBYnN0cmFjdENvbnRyb2wgPSB0aGlzLmNvbnRyb2xzW2VsZW1lbnROYW1lXTtcblxuICAgIGNvbnN0IGNvbnRyb2xEZXN0cm95ZWQkOiBPYnNlcnZhYmxlPGFueT4gPSB0aGlzLl9kZXN0cm95Q29udHJvbCQucGlwZShcbiAgICAgIGZpbHRlcigoZGVzdHJveWVkRWxlbWVudE5hbWU6IHN0cmluZykgPT4gZGVzdHJveWVkRWxlbWVudE5hbWUgPT09IGVsZW1lbnROYW1lKSxcbiAgICApO1xuXG4gICAgY29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSwgdGFrZVVudGlsKGNvbnRyb2xEZXN0cm95ZWQkKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8Zm9ybSBbZm9ybUdyb3VwXT1cImR5bmFtaWNGb3JtXCIgbm92YWxpZGF0ZT5cbiAgPGRpdiBjbGFzcz1cInRkLWR5bmFtaWMtZm9ybS13cmFwcGVyXCI+XG4gICAgPG5nLXRlbXBsYXRlIGxldC1lbGVtZW50IG5nRm9yIFtuZ0Zvck9mXT1cImVsZW1lbnRzXCI+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwidGQtZHluYW1pYy1lbGVtZW50LXdyYXBwZXJcIlxuICAgICAgICBbc3R5bGUubWF4LXdpZHRoLiVdPVwiZWxlbWVudC5mbGV4ID8gZWxlbWVudC5mbGV4IDogMTAwXCJcbiAgICAgICAgW3N0eWxlLmZsZXhdPVwiJzEgMSAnICsgKGVsZW1lbnQuZmxleCA/IGVsZW1lbnQuZmxleCA6IDEwMCkgKyAnJSdcIlxuICAgICAgICBbc3R5bGUuLW1zLWZsZXhdPVwiJzEgMSAnICsgKGVsZW1lbnQuZmxleCA/IGVsZW1lbnQuZmxleCA6IDEwMCkgKyAnJSdcIlxuICAgICAgICBbc3R5bGUuLXdlYmtpdC1ib3gtZmxleF09XCIxXCJcbiAgICAgID5cbiAgICAgICAgPHRkLWR5bmFtaWMtZWxlbWVudFxuICAgICAgICAgICNkeW5hbWljRWxlbWVudFxuICAgICAgICAgICpuZ0lmPVwiZHluYW1pY0Zvcm0uY29udHJvbHNbZWxlbWVudC5uYW1lXVwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sTmFtZV09XCJlbGVtZW50Lm5hbWVcIlxuICAgICAgICAgIFtkeW5hbWljQ29udHJvbF09XCJkeW5hbWljRm9ybS5jb250cm9sc1tlbGVtZW50Lm5hbWVdXCJcbiAgICAgICAgICBbaWRdPVwiZWxlbWVudC5uYW1lXCJcbiAgICAgICAgICBbbmFtZV09XCJlbGVtZW50Lm5hbWVcIlxuICAgICAgICAgIFtsYWJlbF09XCJlbGVtZW50LmxhYmVsIHx8IGVsZW1lbnQubmFtZVwiXG4gICAgICAgICAgW2hpbnRdPVwiZWxlbWVudC5oaW50XCJcbiAgICAgICAgICBbdHlwZV09XCJlbGVtZW50LnR5cGVcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJlbGVtZW50LnJlcXVpcmVkXCJcbiAgICAgICAgICBbbWluXT1cImVsZW1lbnQubWluXCJcbiAgICAgICAgICBbbWF4XT1cImVsZW1lbnQubWF4XCJcbiAgICAgICAgICBbbWluTGVuZ3RoXT1cImVsZW1lbnQubWluTGVuZ3RoXCJcbiAgICAgICAgICBbbWF4TGVuZ3RoXT1cImVsZW1lbnQubWF4TGVuZ3RoXCJcbiAgICAgICAgICBbc2VsZWN0aW9uc109XCJlbGVtZW50LnNlbGVjdGlvbnNcIlxuICAgICAgICAgIFttdWx0aXBsZV09XCJlbGVtZW50Lm11bHRpcGxlXCJcbiAgICAgICAgICBbY3VzdG9tQ29uZmlnXT1cImVsZW1lbnQuY3VzdG9tQ29uZmlnXCJcbiAgICAgICAgICBbZXJyb3JNZXNzYWdlVGVtcGxhdGVdPVwiZ2V0RXJyb3JUZW1wbGF0ZVJlZihlbGVtZW50Lm5hbWUpXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZWxlbWVudC5wbGFjZWhvbGRlclwiXG4gICAgICAgID48L3RkLWR5bmFtaWMtZWxlbWVudD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvZGl2PlxuICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG48L2Zvcm0+XG4iXX0=
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
+
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
5
|
+
import { MatInputModule } from '@angular/material/input';
|
|
6
|
+
import { MatSelectModule } from '@angular/material/select';
|
|
7
|
+
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
8
|
+
import { MatSliderModule } from '@angular/material/slider';
|
|
9
|
+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
10
|
+
import { MatIconModule } from '@angular/material/icon';
|
|
11
|
+
import { MatButtonModule } from '@angular/material/button';
|
|
12
|
+
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
13
|
+
import { CovalentCommonModule } from '@covalent/core/common';
|
|
14
|
+
import { CovalentFileModule } from '@covalent/core/file';
|
|
15
|
+
import { TdDynamicFormsComponent } from './dynamic-forms.component';
|
|
16
|
+
import { TdDynamicElementComponent, TdDynamicElementDirective, TdDynamicFormsErrorTemplateDirective, } from './dynamic-element.component';
|
|
17
|
+
import { DYNAMIC_FORMS_PROVIDER } from './services/dynamic-forms.service';
|
|
18
|
+
import { TdDynamicInputComponent } from './dynamic-elements/dynamic-input/dynamic-input.component';
|
|
19
|
+
import { TdDynamicFileInputComponent } from './dynamic-elements/dynamic-file-input/dynamic-file-input.component';
|
|
20
|
+
import { TdDynamicTextareaComponent } from './dynamic-elements/dynamic-textarea/dynamic-textarea.component';
|
|
21
|
+
import { TdDynamicSlideToggleComponent } from './dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';
|
|
22
|
+
import { TdDynamicCheckboxComponent } from './dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';
|
|
23
|
+
import { TdDynamicSliderComponent } from './dynamic-elements/dynamic-slider/dynamic-slider.component';
|
|
24
|
+
import { TdDynamicSelectComponent } from './dynamic-elements/dynamic-select/dynamic-select.component';
|
|
25
|
+
import { TdDynamicDatepickerComponent } from './dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';
|
|
26
|
+
import * as i0 from "@angular/core";
|
|
27
|
+
const TD_DYNAMIC_FORMS = [
|
|
28
|
+
TdDynamicFormsComponent,
|
|
29
|
+
TdDynamicElementComponent,
|
|
30
|
+
TdDynamicElementDirective,
|
|
31
|
+
TdDynamicFormsErrorTemplateDirective,
|
|
32
|
+
];
|
|
33
|
+
const TD_DYNAMIC_FORMS_ENTRY_COMPONENTS = [
|
|
34
|
+
TdDynamicInputComponent,
|
|
35
|
+
TdDynamicFileInputComponent,
|
|
36
|
+
TdDynamicTextareaComponent,
|
|
37
|
+
TdDynamicSlideToggleComponent,
|
|
38
|
+
TdDynamicCheckboxComponent,
|
|
39
|
+
TdDynamicSliderComponent,
|
|
40
|
+
TdDynamicSelectComponent,
|
|
41
|
+
TdDynamicDatepickerComponent,
|
|
42
|
+
];
|
|
43
|
+
export class CovalentDynamicFormsModule {
|
|
44
|
+
}
|
|
45
|
+
/** @nocollapse */ /** @nocollapse */ CovalentDynamicFormsModule.ɵfac = function CovalentDynamicFormsModule_Factory(t) { return new (t || CovalentDynamicFormsModule)(); };
|
|
46
|
+
/** @nocollapse */ /** @nocollapse */ CovalentDynamicFormsModule.ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: CovalentDynamicFormsModule });
|
|
47
|
+
/** @nocollapse */ /** @nocollapse */ CovalentDynamicFormsModule.ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ providers: [DYNAMIC_FORMS_PROVIDER], imports: [[
|
|
48
|
+
CommonModule,
|
|
49
|
+
ReactiveFormsModule,
|
|
50
|
+
MatFormFieldModule,
|
|
51
|
+
MatInputModule,
|
|
52
|
+
MatSelectModule,
|
|
53
|
+
MatCheckboxModule,
|
|
54
|
+
MatSliderModule,
|
|
55
|
+
MatSlideToggleModule,
|
|
56
|
+
MatIconModule,
|
|
57
|
+
MatButtonModule,
|
|
58
|
+
MatDatepickerModule,
|
|
59
|
+
CovalentCommonModule,
|
|
60
|
+
CovalentFileModule,
|
|
61
|
+
]] });
|
|
62
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CovalentDynamicFormsModule, [{
|
|
63
|
+
type: NgModule,
|
|
64
|
+
args: [{
|
|
65
|
+
declarations: [TD_DYNAMIC_FORMS, TD_DYNAMIC_FORMS_ENTRY_COMPONENTS],
|
|
66
|
+
imports: [
|
|
67
|
+
CommonModule,
|
|
68
|
+
ReactiveFormsModule,
|
|
69
|
+
MatFormFieldModule,
|
|
70
|
+
MatInputModule,
|
|
71
|
+
MatSelectModule,
|
|
72
|
+
MatCheckboxModule,
|
|
73
|
+
MatSliderModule,
|
|
74
|
+
MatSlideToggleModule,
|
|
75
|
+
MatIconModule,
|
|
76
|
+
MatButtonModule,
|
|
77
|
+
MatDatepickerModule,
|
|
78
|
+
CovalentCommonModule,
|
|
79
|
+
CovalentFileModule,
|
|
80
|
+
],
|
|
81
|
+
exports: [TD_DYNAMIC_FORMS, TD_DYNAMIC_FORMS_ENTRY_COMPONENTS],
|
|
82
|
+
providers: [DYNAMIC_FORMS_PROVIDER],
|
|
83
|
+
}]
|
|
84
|
+
}], null, null); })();
|
|
85
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(CovalentDynamicFormsModule, { declarations: [TdDynamicFormsComponent,
|
|
86
|
+
TdDynamicElementComponent,
|
|
87
|
+
TdDynamicElementDirective,
|
|
88
|
+
TdDynamicFormsErrorTemplateDirective, TdDynamicInputComponent,
|
|
89
|
+
TdDynamicFileInputComponent,
|
|
90
|
+
TdDynamicTextareaComponent,
|
|
91
|
+
TdDynamicSlideToggleComponent,
|
|
92
|
+
TdDynamicCheckboxComponent,
|
|
93
|
+
TdDynamicSliderComponent,
|
|
94
|
+
TdDynamicSelectComponent,
|
|
95
|
+
TdDynamicDatepickerComponent], imports: [CommonModule,
|
|
96
|
+
ReactiveFormsModule,
|
|
97
|
+
MatFormFieldModule,
|
|
98
|
+
MatInputModule,
|
|
99
|
+
MatSelectModule,
|
|
100
|
+
MatCheckboxModule,
|
|
101
|
+
MatSliderModule,
|
|
102
|
+
MatSlideToggleModule,
|
|
103
|
+
MatIconModule,
|
|
104
|
+
MatButtonModule,
|
|
105
|
+
MatDatepickerModule,
|
|
106
|
+
CovalentCommonModule,
|
|
107
|
+
CovalentFileModule], exports: [TdDynamicFormsComponent,
|
|
108
|
+
TdDynamicElementComponent,
|
|
109
|
+
TdDynamicElementDirective,
|
|
110
|
+
TdDynamicFormsErrorTemplateDirective, TdDynamicInputComponent,
|
|
111
|
+
TdDynamicFileInputComponent,
|
|
112
|
+
TdDynamicTextareaComponent,
|
|
113
|
+
TdDynamicSlideToggleComponent,
|
|
114
|
+
TdDynamicCheckboxComponent,
|
|
115
|
+
TdDynamicSliderComponent,
|
|
116
|
+
TdDynamicSelectComponent,
|
|
117
|
+
TdDynamicDatepickerComponent] }); })();
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3Jtcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vZHluYW1pYy1mb3Jtcy9keW5hbWljLWZvcm1zLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFRLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUVyRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDekQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQy9ELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRW5FLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXpELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3BFLE9BQU8sRUFDTCx5QkFBeUIsRUFDekIseUJBQXlCLEVBQ3pCLG9DQUFvQyxHQUNyQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRTFFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ25HLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ2pILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHdFQUF3RSxDQUFDO0FBQ3ZILE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQzVHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDREQUE0RCxDQUFDO0FBQ3RHLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDOztBQUVsSCxNQUFNLGdCQUFnQixHQUFnQjtJQUNwQyx1QkFBdUI7SUFDdkIseUJBQXlCO0lBQ3pCLHlCQUF5QjtJQUN6QixvQ0FBb0M7Q0FDckMsQ0FBQztBQUVGLE1BQU0saUNBQWlDLEdBQWdCO0lBQ3JELHVCQUF1QjtJQUN2QiwyQkFBMkI7SUFDM0IsMEJBQTBCO0lBQzFCLDZCQUE2QjtJQUM3QiwwQkFBMEI7SUFDMUIsd0JBQXdCO0lBQ3hCLHdCQUF3QjtJQUN4Qiw0QkFBNEI7Q0FDN0IsQ0FBQztBQXNCRixNQUFNLE9BQU8sMEJBQTBCOzswSUFBMUIsMEJBQTBCOzhIQUExQiwwQkFBMEI7bUlBRjFCLENBQUMsc0JBQXNCLENBQUMsWUFoQjFCO1lBQ1AsWUFBWTtZQUNaLG1CQUFtQjtZQUNuQixrQkFBa0I7WUFDbEIsY0FBYztZQUNkLGVBQWU7WUFDZixpQkFBaUI7WUFDakIsZUFBZTtZQUNmLG9CQUFvQjtZQUNwQixhQUFhO1lBQ2IsZUFBZTtZQUNmLG1CQUFtQjtZQUNuQixvQkFBb0I7WUFDcEIsa0JBQWtCO1NBQ25CO3VGQUlVLDBCQUEwQjtjQXBCdEMsUUFBUTtlQUFDO2dCQUNSLFlBQVksRUFBRSxDQUFDLGdCQUFnQixFQUFFLGlDQUFpQyxDQUFDO2dCQUNuRSxPQUFPLEVBQUU7b0JBQ1AsWUFBWTtvQkFDWixtQkFBbUI7b0JBQ25CLGtCQUFrQjtvQkFDbEIsY0FBYztvQkFDZCxlQUFlO29CQUNmLGlCQUFpQjtvQkFDakIsZUFBZTtvQkFDZixvQkFBb0I7b0JBQ3BCLGFBQWE7b0JBQ2IsZUFBZTtvQkFDZixtQkFBbUI7b0JBQ25CLG9CQUFvQjtvQkFDcEIsa0JBQWtCO2lCQUNuQjtnQkFDRCxPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSxpQ0FBaUMsQ0FBQztnQkFDOUQsU0FBUyxFQUFFLENBQUMsc0JBQXNCLENBQUM7YUFDcEM7O3dGQUNZLDBCQUEwQixtQkFyQ3JDLHVCQUF1QjtRQUN2Qix5QkFBeUI7UUFDekIseUJBQXlCO1FBQ3pCLG9DQUFvQyxFQUlwQyx1QkFBdUI7UUFDdkIsMkJBQTJCO1FBQzNCLDBCQUEwQjtRQUMxQiw2QkFBNkI7UUFDN0IsMEJBQTBCO1FBQzFCLHdCQUF3QjtRQUN4Qix3QkFBd0I7UUFDeEIsNEJBQTRCLGFBTTFCLFlBQVk7UUFDWixtQkFBbUI7UUFDbkIsa0JBQWtCO1FBQ2xCLGNBQWM7UUFDZCxlQUFlO1FBQ2YsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixvQkFBb0I7UUFDcEIsYUFBYTtRQUNiLGVBQWU7UUFDZixtQkFBbUI7UUFDbkIsb0JBQW9CO1FBQ3BCLGtCQUFrQixhQWhDcEIsdUJBQXVCO1FBQ3ZCLHlCQUF5QjtRQUN6Qix5QkFBeUI7UUFDekIsb0NBQW9DLEVBSXBDLHVCQUF1QjtRQUN2QiwyQkFBMkI7UUFDM0IsMEJBQTBCO1FBQzFCLDZCQUE2QjtRQUM3QiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4Qiw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IE1hdEZvcm1GaWVsZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBNYXRTZWxlY3RNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zZWxlY3QnO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGVja2JveCc7XG5pbXBvcnQgeyBNYXRTbGlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZXInO1xuaW1wb3J0IHsgTWF0U2xpZGVUb2dnbGVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zbGlkZS10b2dnbGUnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcbmltcG9ydCB7IE1hdERhdGVwaWNrZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcblxuaW1wb3J0IHsgQ292YWxlbnRDb21tb25Nb2R1bGUgfSBmcm9tICdAY292YWxlbnQvY29yZS9jb21tb24nO1xuaW1wb3J0IHsgQ292YWxlbnRGaWxlTW9kdWxlIH0gZnJvbSAnQGNvdmFsZW50L2NvcmUvZmlsZSc7XG5cbmltcG9ydCB7IFRkRHluYW1pY0Zvcm1zQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWZvcm1zLmNvbXBvbmVudCc7XG5pbXBvcnQge1xuICBUZER5bmFtaWNFbGVtZW50Q29tcG9uZW50LFxuICBUZER5bmFtaWNFbGVtZW50RGlyZWN0aXZlLFxuICBUZER5bmFtaWNGb3Jtc0Vycm9yVGVtcGxhdGVEaXJlY3RpdmUsXG59IGZyb20gJy4vZHluYW1pYy1lbGVtZW50LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEWU5BTUlDX0ZPUk1TX1BST1ZJREVSIH0gZnJvbSAnLi9zZXJ2aWNlcy9keW5hbWljLWZvcm1zLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBUZER5bmFtaWNJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLWlucHV0L2R5bmFtaWMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRkRHluYW1pY0ZpbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLWZpbGUtaW5wdXQvZHluYW1pYy1maWxlLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZER5bmFtaWNUZXh0YXJlYUNvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLXRleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEuY29tcG9uZW50JztcbmltcG9ydCB7IFRkRHluYW1pY1NsaWRlVG9nZ2xlQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWVsZW1lbnRzL2R5bmFtaWMtc2xpZGUtdG9nZ2xlL2R5bmFtaWMtc2xpZGUtdG9nZ2xlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZER5bmFtaWNDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLWNoZWNrYm94L2R5bmFtaWMtY2hlY2tib3guY29tcG9uZW50JztcbmltcG9ydCB7IFRkRHluYW1pY1NsaWRlckNvbXBvbmVudCB9IGZyb20gJy4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLXNsaWRlci9keW5hbWljLXNsaWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGREeW5hbWljU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWVsZW1lbnRzL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZER5bmFtaWNEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi9keW5hbWljLWVsZW1lbnRzL2R5bmFtaWMtZGF0ZXBpY2tlci9keW5hbWljLWRhdGVwaWNrZXIuY29tcG9uZW50JztcblxuY29uc3QgVERfRFlOQU1JQ19GT1JNUzogVHlwZTxhbnk+W10gPSBbXG4gIFRkRHluYW1pY0Zvcm1zQ29tcG9uZW50LFxuICBUZER5bmFtaWNFbGVtZW50Q29tcG9uZW50LFxuICBUZER5bmFtaWNFbGVtZW50RGlyZWN0aXZlLFxuICBUZER5bmFtaWNGb3Jtc0Vycm9yVGVtcGxhdGVEaXJlY3RpdmUsXG5dO1xuXG5jb25zdCBURF9EWU5BTUlDX0ZPUk1TX0VOVFJZX0NPTVBPTkVOVFM6IFR5cGU8YW55PltdID0gW1xuICBUZER5bmFtaWNJbnB1dENvbXBvbmVudCxcbiAgVGREeW5hbWljRmlsZUlucHV0Q29tcG9uZW50LFxuICBUZER5bmFtaWNUZXh0YXJlYUNvbXBvbmVudCxcbiAgVGREeW5hbWljU2xpZGVUb2dnbGVDb21wb25lbnQsXG4gIFRkRHluYW1pY0NoZWNrYm94Q29tcG9uZW50LFxuICBUZER5bmFtaWNTbGlkZXJDb21wb25lbnQsXG4gIFRkRHluYW1pY1NlbGVjdENvbXBvbmVudCxcbiAgVGREeW5hbWljRGF0ZXBpY2tlckNvbXBvbmVudCxcbl07XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1REX0RZTkFNSUNfRk9STVMsIFREX0RZTkFNSUNfRk9STVNfRU5UUllfQ09NUE9ORU5UU10sXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBNYXRGb3JtRmllbGRNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgTWF0U2VsZWN0TW9kdWxlLFxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgIE1hdFNsaWRlck1vZHVsZSxcbiAgICBNYXRTbGlkZVRvZ2dsZU1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBNYXREYXRlcGlja2VyTW9kdWxlLFxuICAgIENvdmFsZW50Q29tbW9uTW9kdWxlLFxuICAgIENvdmFsZW50RmlsZU1vZHVsZSxcbiAgXSxcbiAgZXhwb3J0czogW1REX0RZTkFNSUNfRk9STVMsIFREX0RZTkFNSUNfRk9STVNfRU5UUllfQ09NUE9ORU5UU10sXG4gIHByb3ZpZGVyczogW0RZTkFNSUNfRk9STVNfUFJPVklERVJdLFxufSlcbmV4cG9ydCBjbGFzcyBDb3ZhbGVudER5bmFtaWNGb3Jtc01vZHVsZSB7fVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './public_api';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcGxhdGZvcm0vZHluYW1pYy1mb3Jtcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export * from './dynamic-forms.module';
|
|
2
|
+
export * from './dynamic-forms.component';
|
|
3
|
+
export * from './dynamic-element.component';
|
|
4
|
+
export * from './services/dynamic-forms.service';
|
|
5
|
+
export * from './dynamic-elements/dynamic-textarea/dynamic-textarea.component';
|
|
6
|
+
export * from './dynamic-elements/dynamic-slider/dynamic-slider.component';
|
|
7
|
+
export * from './dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';
|
|
8
|
+
export * from './dynamic-elements/dynamic-select/dynamic-select.component';
|
|
9
|
+
export * from './dynamic-elements/dynamic-input/dynamic-input.component';
|
|
10
|
+
export * from './dynamic-elements/dynamic-file-input/dynamic-file-input.component';
|
|
11
|
+
export * from './dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';
|
|
12
|
+
export * from './dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';
|
|
13
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wbGF0Zm9ybS9keW5hbWljLWZvcm1zL3B1YmxpY19hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMsNkJBQTZCLENBQUM7QUFDNUMsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdFQUFnRSxDQUFDO0FBQy9FLGNBQWMsNERBQTRELENBQUM7QUFDM0UsY0FBYyx3RUFBd0UsQ0FBQztBQUN2RixjQUFjLDREQUE0RCxDQUFDO0FBQzNFLGNBQWMsMERBQTBELENBQUM7QUFDekUsY0FBYyxvRUFBb0UsQ0FBQztBQUNuRixjQUFjLG9FQUFvRSxDQUFDO0FBQ25GLGNBQWMsZ0VBQWdFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtZm9ybXMubW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1mb3Jtcy5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLWVsZW1lbnQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vc2VydmljZXMvZHluYW1pYy1mb3Jtcy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLXRleHRhcmVhL2R5bmFtaWMtdGV4dGFyZWEuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLXNsaWRlci9keW5hbWljLXNsaWRlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLWVsZW1lbnRzL2R5bmFtaWMtc2xpZGUtdG9nZ2xlL2R5bmFtaWMtc2xpZGUtdG9nZ2xlLmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtZWxlbWVudHMvZHluYW1pYy1zZWxlY3QvZHluYW1pYy1zZWxlY3QuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLWlucHV0L2R5bmFtaWMtaW5wdXQuY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLWZpbGUtaW5wdXQvZHluYW1pYy1maWxlLWlucHV0LmNvbXBvbmVudCc7XG5leHBvcnQgKiBmcm9tICcuL2R5bmFtaWMtZWxlbWVudHMvZHluYW1pYy1kYXRlcGlja2VyL2R5bmFtaWMtZGF0ZXBpY2tlci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9keW5hbWljLWVsZW1lbnRzL2R5bmFtaWMtY2hlY2tib3gvZHluYW1pYy1jaGVja2JveC5jb21wb25lbnQnO1xuIl19
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { Injectable, SkipSelf, Optional } from '@angular/core';
|
|
2
|
+
import { Validators, FormControl } from '@angular/forms';
|
|
3
|
+
import { TdDynamicInputComponent } from '../dynamic-elements/dynamic-input/dynamic-input.component';
|
|
4
|
+
import { TdDynamicFileInputComponent } from '../dynamic-elements/dynamic-file-input/dynamic-file-input.component';
|
|
5
|
+
import { TdDynamicTextareaComponent } from '../dynamic-elements/dynamic-textarea/dynamic-textarea.component';
|
|
6
|
+
import { TdDynamicSlideToggleComponent } from '../dynamic-elements/dynamic-slide-toggle/dynamic-slide-toggle.component';
|
|
7
|
+
import { TdDynamicCheckboxComponent } from '../dynamic-elements/dynamic-checkbox/dynamic-checkbox.component';
|
|
8
|
+
import { TdDynamicSliderComponent } from '../dynamic-elements/dynamic-slider/dynamic-slider.component';
|
|
9
|
+
import { TdDynamicSelectComponent } from '../dynamic-elements/dynamic-select/dynamic-select.component';
|
|
10
|
+
import { TdDynamicDatepickerComponent } from '../dynamic-elements/dynamic-datepicker/dynamic-datepicker.component';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
export var TdDynamicType;
|
|
13
|
+
(function (TdDynamicType) {
|
|
14
|
+
TdDynamicType["Text"] = "text";
|
|
15
|
+
TdDynamicType["Boolean"] = "boolean";
|
|
16
|
+
TdDynamicType["Number"] = "number";
|
|
17
|
+
TdDynamicType["Array"] = "array";
|
|
18
|
+
TdDynamicType["Date"] = "date";
|
|
19
|
+
})(TdDynamicType || (TdDynamicType = {}));
|
|
20
|
+
export var TdDynamicElement;
|
|
21
|
+
(function (TdDynamicElement) {
|
|
22
|
+
TdDynamicElement["Input"] = "input";
|
|
23
|
+
TdDynamicElement["Datepicker"] = "datepicker";
|
|
24
|
+
TdDynamicElement["Password"] = "password";
|
|
25
|
+
TdDynamicElement["Textarea"] = "textarea";
|
|
26
|
+
TdDynamicElement["Slider"] = "slider";
|
|
27
|
+
TdDynamicElement["SlideToggle"] = "slide-toggle";
|
|
28
|
+
TdDynamicElement["Checkbox"] = "checkbox";
|
|
29
|
+
TdDynamicElement["Select"] = "select";
|
|
30
|
+
TdDynamicElement["FileInput"] = "file-input";
|
|
31
|
+
})(TdDynamicElement || (TdDynamicElement = {}));
|
|
32
|
+
export const DYNAMIC_ELEMENT_NAME_REGEX = /^[^0-9][^\@]*$/;
|
|
33
|
+
export class TdDynamicFormsService {
|
|
34
|
+
/**
|
|
35
|
+
* Method to validate if the [name] is a proper element name.
|
|
36
|
+
* Throws error if name is not valid.
|
|
37
|
+
*/
|
|
38
|
+
validateDynamicElementName(name) {
|
|
39
|
+
if (!DYNAMIC_ELEMENT_NAME_REGEX.test(name)) {
|
|
40
|
+
throw new Error('Dynamic element name: "${name}" is not valid.');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Gets component to be rendered depending on [TdDynamicElement | TdDynamicType]
|
|
45
|
+
* Throws error if it does not exists or not supported.
|
|
46
|
+
*/
|
|
47
|
+
getDynamicElement(element) {
|
|
48
|
+
switch (element) {
|
|
49
|
+
case TdDynamicType.Text:
|
|
50
|
+
case TdDynamicType.Number:
|
|
51
|
+
case TdDynamicElement.Input:
|
|
52
|
+
case TdDynamicElement.Password:
|
|
53
|
+
return TdDynamicInputComponent;
|
|
54
|
+
case TdDynamicElement.Textarea:
|
|
55
|
+
return TdDynamicTextareaComponent;
|
|
56
|
+
case TdDynamicType.Boolean:
|
|
57
|
+
case TdDynamicElement.SlideToggle:
|
|
58
|
+
return TdDynamicSlideToggleComponent;
|
|
59
|
+
case TdDynamicElement.Checkbox:
|
|
60
|
+
return TdDynamicCheckboxComponent;
|
|
61
|
+
case TdDynamicElement.Slider:
|
|
62
|
+
return TdDynamicSliderComponent;
|
|
63
|
+
case TdDynamicType.Array:
|
|
64
|
+
case TdDynamicElement.Select:
|
|
65
|
+
return TdDynamicSelectComponent;
|
|
66
|
+
case TdDynamicElement.FileInput:
|
|
67
|
+
return TdDynamicFileInputComponent;
|
|
68
|
+
case TdDynamicElement.Datepicker:
|
|
69
|
+
case TdDynamicType.Date:
|
|
70
|
+
return TdDynamicDatepickerComponent;
|
|
71
|
+
default:
|
|
72
|
+
throw new Error(`Error: type ${element} does not exist or not supported.`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Creates form control for element depending [ITdDynamicElementConfig] properties.
|
|
77
|
+
*/
|
|
78
|
+
createFormControl(config) {
|
|
79
|
+
const validator = this.createValidators(config);
|
|
80
|
+
return new FormControl({ value: config.default, disabled: config.disabled }, validator);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Creates form validationdepending [ITdDynamicElementConfig] properties.
|
|
84
|
+
*/
|
|
85
|
+
createValidators(config) {
|
|
86
|
+
let validator;
|
|
87
|
+
if (config.required) {
|
|
88
|
+
validator = Validators.required;
|
|
89
|
+
}
|
|
90
|
+
if (config.max || config.max === 0) {
|
|
91
|
+
validator = Validators.compose([validator, Validators.max(parseFloat(config.max))]);
|
|
92
|
+
}
|
|
93
|
+
if (config.min || config.min === 0) {
|
|
94
|
+
validator = Validators.compose([validator, Validators.min(parseFloat(config.min))]);
|
|
95
|
+
}
|
|
96
|
+
if (config.maxLength || config.maxLength === 0) {
|
|
97
|
+
validator = Validators.compose([validator, Validators.maxLength(parseFloat(config.maxLength))]);
|
|
98
|
+
}
|
|
99
|
+
if (config.minLength || config.minLength === 0) {
|
|
100
|
+
validator = Validators.compose([validator, Validators.minLength(parseFloat(config.minLength))]);
|
|
101
|
+
}
|
|
102
|
+
// Add provided custom validators to the validator function
|
|
103
|
+
if (config.validators) {
|
|
104
|
+
config.validators.forEach((validatorConfig) => {
|
|
105
|
+
validator = Validators.compose([validator, validatorConfig.validator]);
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
return validator;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/** @nocollapse */ /** @nocollapse */ TdDynamicFormsService.ɵfac = function TdDynamicFormsService_Factory(t) { return new (t || TdDynamicFormsService)(); };
|
|
112
|
+
/** @nocollapse */ /** @nocollapse */ TdDynamicFormsService.ɵprov = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjectable({ token: TdDynamicFormsService, factory: TdDynamicFormsService.ɵfac });
|
|
113
|
+
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TdDynamicFormsService, [{
|
|
114
|
+
type: Injectable
|
|
115
|
+
}], null, null); })();
|
|
116
|
+
export function DYNAMIC_FORMS_PROVIDER_FACTORY(parent) {
|
|
117
|
+
return parent || new TdDynamicFormsService();
|
|
118
|
+
}
|
|
119
|
+
export const DYNAMIC_FORMS_PROVIDER = {
|
|
120
|
+
// If there is already a service available, use that. Otherwise, provide a new one.
|
|
121
|
+
provide: TdDynamicFormsService,
|
|
122
|
+
deps: [[new Optional(), new SkipSelf(), TdDynamicFormsService]],
|
|
123
|
+
useFactory: DYNAMIC_FORMS_PROVIDER_FACTORY,
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3Jtcy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3BsYXRmb3JtL2R5bmFtaWMtZm9ybXMvc2VydmljZXMvZHluYW1pYy1mb3Jtcy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQVksUUFBUSxFQUFFLFFBQVEsRUFBUSxNQUFNLGVBQWUsQ0FBQztBQUMvRSxPQUFPLEVBQUUsVUFBVSxFQUFlLFdBQVcsRUFBbUIsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQztBQUNsSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSx5RUFBeUUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUM3RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw2REFBNkQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxxRUFBcUUsQ0FBQzs7QUFFbkgsTUFBTSxDQUFOLElBQVksYUFNWDtBQU5ELFdBQVksYUFBYTtJQUN2Qiw4QkFBYSxDQUFBO0lBQ2Isb0NBQW1CLENBQUE7SUFDbkIsa0NBQWlCLENBQUE7SUFDakIsZ0NBQWUsQ0FBQTtJQUNmLDhCQUFhLENBQUE7QUFDZixDQUFDLEVBTlcsYUFBYSxLQUFiLGFBQWEsUUFNeEI7QUFFRCxNQUFNLENBQU4sSUFBWSxnQkFVWDtBQVZELFdBQVksZ0JBQWdCO0lBQzFCLG1DQUFlLENBQUE7SUFDZiw2Q0FBeUIsQ0FBQTtJQUN6Qix5Q0FB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QUUsRUFBRSxJQUFJLFFBQVEsRUFBRSxFQUFFLHFCQUFxQixDQUFDLENBQUM7SUFDL0QsVUFBVSxFQUFFLDhCQUE4QjtDQUMzQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgUHJvdmlkZXIsIFNraXBTZWxmLCBPcHRpb25hbCwgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVmFsaWRhdG9ycywgVmFsaWRhdG9yRm4sIEZvcm1Db250cm9sLCBBYnN0cmFjdENvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7IFRkRHluYW1pY0lucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLWlucHV0L2R5bmFtaWMtaW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFRkRHluYW1pY0ZpbGVJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtZWxlbWVudHMvZHluYW1pYy1maWxlLWlucHV0L2R5bmFtaWMtZmlsZS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGREeW5hbWljVGV4dGFyZWFDb21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWVsZW1lbnRzL2R5bmFtaWMtdGV4dGFyZWEvZHluYW1pYy10ZXh0YXJlYS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGREeW5hbWljU2xpZGVUb2dnbGVDb21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWVsZW1lbnRzL2R5bmFtaWMtc2xpZGUtdG9nZ2xlL2R5bmFtaWMtc2xpZGUtdG9nZ2xlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZER5bmFtaWNDaGVja2JveENvbXBvbmVudCB9IGZyb20gJy4uL2R5bmFtaWMtZWxlbWVudHMvZHluYW1pYy1jaGVja2JveC9keW5hbWljLWNoZWNrYm94LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZER5bmFtaWNTbGlkZXJDb21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWVsZW1lbnRzL2R5bmFtaWMtc2xpZGVyL2R5bmFtaWMtc2xpZGVyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZER5bmFtaWNTZWxlY3RDb21wb25lbnQgfSBmcm9tICcuLi9keW5hbWljLWVsZW1lbnRzL2R5bmFtaWMtc2VsZWN0L2R5bmFtaWMtc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZER5bmFtaWNEYXRlcGlja2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vZHluYW1pYy1lbGVtZW50cy9keW5hbWljLWRhdGVwaWNrZXIvZHluYW1pYy1kYXRlcGlja2VyLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBlbnVtIFRkRHluYW1pY1R5cGUge1xuICBUZXh0ID0gJ3RleHQnLFxuICBCb29sZWFuID0gJ2Jvb2xlYW4nLFxuICBOdW1iZXIgPSAnbnVtYmVyJyxcbiAgQXJyYXkgPSAnYXJyYXknLFxuICBEYXRlID0gJ2RhdGUnLFxufVxuXG5leHBvcnQgZW51bSBUZER5bmFtaWNFbGVtZW50IHtcbiAgSW5wdXQgPSAnaW5wdXQnLFxuICBEYXRlcGlja2VyID0gJ2RhdGVwaWNrZXInLFxuICBQYXNzd29yZCA9ICdwYXNzd29yZCcsXG4gIFRleHRhcmVhID0gJ3RleHRhcmVhJyxcbiAgU2xpZGVyID0gJ3NsaWRlcicsXG4gIFNsaWRlVG9nZ2xlID0gJ3NsaWRlLXRvZ2dsZScsXG4gIENoZWNrYm94ID0gJ2NoZWNrYm94JyxcbiAgU2VsZWN0ID0gJ3NlbGVjdCcsXG4gIEZpbGVJbnB1dCA9ICdmaWxlLWlucHV0Jyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJVGREeW5hbWljRWxlbWVudFZhbGlkYXRvciB7XG4gIHZhbGlkYXRvcjogVmFsaWRhdG9yRm47XG59XG5cbi8vIFByb3BlcnR5IHZhbHVlcyB0byBiZSBzZXQgaW4gY3VzdG9tIGNvbXBvbmVudFxuZXhwb3J0IGludGVyZmFjZSBJVGREeW5hbWljRWxlbWVudEN1c3RvbUNvbmZpZyB7XG4gIFtuYW1lOiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRkRHluYW1pY0VsZW1lbnRDb25maWcge1xuICBsYWJlbD86IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBoaW50Pzogc3RyaW5nO1xuICB0eXBlOiBUZER5bmFtaWNUeXBlIHwgVGREeW5hbWljRWxlbWVudCB8IFR5cGU8YW55PjtcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIG1pbj86IGFueTtcbiAgbWF4PzogYW55O1xuICBtaW5MZW5ndGg/OiBhbnk7XG4gIG1heExlbmd0aD86IGFueTtcbiAgc2VsZWN0aW9ucz86IHN0cmluZ1tdIHwgeyB2YWx1ZTogYW55OyBsYWJlbDogc3RyaW5nIH1bXTtcbiAgbXVsdGlwbGU/OiBib29sZWFuO1xuICBkZWZhdWx0PzogYW55O1xuICBmbGV4PzogbnVtYmVyO1xuICB2YWxpZGF0b3JzPzogSVRkRHluYW1pY0VsZW1lbnRWYWxpZGF0b3JbXTtcbiAgY3VzdG9tQ29uZmlnPzogSVRkRHluYW1pY0VsZW1lbnRDdXN0b21Db25maWc7XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgRFlOQU1JQ19FTEVNRU5UX05BTUVfUkVHRVg6IFJlZ0V4cCA9IC9eW14wLTldW15cXEBdKiQvO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgVGREeW5hbWljRm9ybXNTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIE1ldGhvZCB0byB2YWxpZGF0ZSBpZiB0aGUgW25hbWVdIGlzIGEgcHJvcGVyIGVsZW1lbnQgbmFtZS5cbiAgICogVGhyb3dzIGVycm9yIGlmIG5hbWUgaXMgbm90IHZhbGlkLlxuICAgKi9cbiAgdmFsaWRhdGVEeW5hbWljRWxlbWVudE5hbWUobmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKCFEWU5BTUlDX0VMRU1FTlRfTkFNRV9SRUdFWC50ZXN0KG5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0R5bmFtaWMgZWxlbWVudCBuYW1lOiBcIiR7bmFtZX1cIiBpcyBub3QgdmFsaWQuJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgY29tcG9uZW50IHRvIGJlIHJlbmRlcmVkIGRlcGVuZGluZyBvbiBbVGREeW5hbWljRWxlbWVudCB8IFRkRHluYW1pY1R5cGVdXG4gICAqIFRocm93cyBlcnJvciBpZiBpdCBkb2VzIG5vdCBleGlzdHMgb3Igbm90IHN1cHBvcnRlZC5cbiAgICovXG4gIGdldER5bmFtaWNFbGVtZW50KGVsZW1lbnQ6IFRkRHluYW1pY0VsZW1lbnQgfCBUZER5bmFtaWNUeXBlIHwgVHlwZTxhbnk+KTogYW55IHtcbiAgICBzd2l0Y2ggKGVsZW1lbnQpIHtcbiAgICAgIGNhc2UgVGREeW5hbWljVHlwZS5UZXh0OlxuICAgICAgY2FzZSBUZER5bmFtaWNUeXBlLk51bWJlcjpcbiAgICAgIGNhc2UgVGREeW5hbWljRWxlbWVudC5JbnB1dDpcbiAgICAgIGNhc2UgVGREeW5hbWljRWxlbWVudC5QYXNzd29yZDpcbiAgICAgICAgcmV0dXJuIFRkRHluYW1pY0lucHV0Q29tcG9uZW50O1xuICAgICAgY2FzZSBUZER5bmFtaWNFbGVtZW50LlRleHRhcmVhOlxuICAgICAgICByZXR1cm4gVGREeW5hbWljVGV4dGFyZWFDb21wb25lbnQ7XG4gICAgICBjYXNlIFRkRHluYW1pY1R5cGUuQm9vbGVhbjpcbiAgICAgIGNhc2UgVGREeW5hbWljRWxlbWVudC5TbGlkZVRvZ2dsZTpcbiAgICAgICAgcmV0dXJuIFRkRHluYW1pY1NsaWRlVG9nZ2xlQ29tcG9uZW50O1xuICAgICAgY2FzZSBUZER5bmFtaWNFbGVtZW50LkNoZWNrYm94OlxuICAgICAgICByZXR1cm4gVGREeW5hbWljQ2hlY2tib3hDb21wb25lbnQ7XG4gICAgICBjYXNlIFRkRHluYW1pY0VsZW1lbnQuU2xpZGVyOlxuICAgICAgICByZXR1cm4gVGREeW5hbWljU2xpZGVyQ29tcG9uZW50O1xuICAgICAgY2FzZSBUZER5bmFtaWNUeXBlLkFycmF5OlxuICAgICAgY2FzZSBUZER5bmFtaWNFbGVtZW50LlNlbGVjdDpcbiAgICAgICAgcmV0dXJuIFRkRHluYW1pY1NlbGVjdENvbXBvbmVudDtcbiAgICAgIGNhc2UgVGREeW5hbWljRWxlbWVudC5GaWxlSW5wdXQ6XG4gICAgICAgIHJldHVybiBUZER5bmFtaWNGaWxlSW5wdXRDb21wb25lbnQ7XG4gICAgICBjYXNlIFRkRHluYW1pY0VsZW1lbnQuRGF0ZXBpY2tlcjpcbiAgICAgIGNhc2UgVGREeW5hbWljVHlwZS5EYXRlOlxuICAgICAgICByZXR1cm4gVGREeW5hbWljRGF0ZXBpY2tlckNvbXBvbmVudDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3I6IHR5cGUgJHtlbGVtZW50fSBkb2VzIG5vdCBleGlzdCBvciBub3Qgc3VwcG9ydGVkLmApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGZvcm0gY29udHJvbCBmb3IgZWxlbWVudCBkZXBlbmRpbmcgW0lUZER5bmFtaWNFbGVtZW50Q29uZmlnXSBwcm9wZXJ0aWVzLlxuICAgKi9cbiAgY3JlYXRlRm9ybUNvbnRyb2woY29uZmlnOiBJVGREeW5hbWljRWxlbWVudENvbmZpZyk6IEZvcm1Db250cm9sIHtcbiAgICBjb25zdCB2YWxpZGF0b3I6IFZhbGlkYXRvckZuID0gdGhpcy5jcmVhdGVWYWxpZGF0b3JzKGNvbmZpZyk7XG4gICAgcmV0dXJuIG5ldyBGb3JtQ29udHJvbCh7IHZhbHVlOiBjb25maWcuZGVmYXVsdCwgZGlzYWJsZWQ6IGNvbmZpZy5kaXNhYmxlZCB9LCB2YWxpZGF0b3IpO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgZm9ybSB2YWxpZGF0aW9uZGVwZW5kaW5nIFtJVGREeW5hbWljRWxlbWVudENvbmZpZ10gcHJvcGVydGllcy5cbiAgICovXG4gIGNyZWF0ZVZhbGlkYXRvcnMoY29uZmlnOiBJVGREeW5hbWljRWxlbWVudENvbmZpZyk6IFZhbGlkYXRvckZuIHtcbiAgICBsZXQgdmFsaWRhdG9yOiBWYWxpZGF0b3JGbjtcbiAgICBpZiAoY29uZmlnLnJlcXVpcmVkKSB7XG4gICAgICB2YWxpZGF0b3IgPSBWYWxpZGF0b3JzLnJlcXVpcmVkO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLm1heCB8fCBjb25maWcubWF4ID09PSAwKSB7XG4gICAgICB2YWxpZGF0b3IgPSBWYWxpZGF0b3JzLmNvbXBvc2UoW3ZhbGlkYXRvciwgVmFsaWRhdG9ycy5tYXgocGFyc2VGbG9hdChjb25maWcubWF4KSldKTtcbiAgICB9XG4gICAgaWYgKGNvbmZpZy5taW4gfHwgY29uZmlnLm1pbiA9PT0gMCkge1xuICAgICAgdmFsaWRhdG9yID0gVmFsaWRhdG9ycy5jb21wb3NlKFt2YWxpZGF0b3IsIFZhbGlkYXRvcnMubWluKHBhcnNlRmxvYXQoY29uZmlnLm1pbikpXSk7XG4gICAgfVxuICAgIGlmIChjb25maWcubWF4TGVuZ3RoIHx8IGNvbmZpZy5tYXhMZW5ndGggPT09IDApIHtcbiAgICAgIHZhbGlkYXRvciA9IFZhbGlkYXRvcnMuY29tcG9zZShbdmFsaWRhdG9yLCBWYWxpZGF0b3JzLm1heExlbmd0aChwYXJzZUZsb2F0KGNvbmZpZy5tYXhMZW5ndGgpKV0pO1xuICAgIH1cbiAgICBpZiAoY29uZmlnLm1pbkxlbmd0aCB8fCBjb25maWcubWluTGVuZ3RoID09PSAwKSB7XG4gICAgICB2YWxpZGF0b3IgPSBWYWxpZGF0b3JzLmNvbXBvc2UoW3ZhbGlkYXRvciwgVmFsaWRhdG9ycy5taW5MZW5ndGgocGFyc2VGbG9hdChjb25maWcubWluTGVuZ3RoKSldKTtcbiAgICB9XG4gICAgLy8gQWRkIHByb3ZpZGVkIGN1c3RvbSB2YWxpZGF0b3JzIHRvIHRoZSB2YWxpZGF0b3IgZnVuY3Rpb25cbiAgICBpZiAoY29uZmlnLnZhbGlkYXRvcnMpIHtcbiAgICAgIGNvbmZpZy52YWxpZGF0b3JzLmZvckVhY2goKHZhbGlkYXRvckNvbmZpZzogSVRkRHluYW1pY0VsZW1lbnRWYWxpZGF0b3IpID0+IHtcbiAgICAgICAgdmFsaWRhdG9yID0gVmFsaWRhdG9ycy5jb21wb3NlKFt2YWxpZGF0b3IsIHZhbGlkYXRvckNvbmZpZy52YWxpZGF0b3JdKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdmFsaWRhdG9yO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEWU5BTUlDX0ZPUk1TX1BST1ZJREVSX0ZBQ1RPUlkocGFyZW50OiBUZER5bmFtaWNGb3Jtc1NlcnZpY2UpOiBUZER5bmFtaWNGb3Jtc1NlcnZpY2Uge1xuICByZXR1cm4gcGFyZW50IHx8IG5ldyBUZER5bmFtaWNGb3Jtc1NlcnZpY2UoKTtcbn1cblxuZXhwb3J0IGNvbnN0IERZTkFNSUNfRk9STVNfUFJPVklERVI6IFByb3ZpZGVyID0ge1xuICAvLyBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgc2VydmljZSBhdmFpbGFibGUsIHVzZSB0aGF0LiBPdGhlcndpc2UsIHByb3ZpZGUgYSBuZXcgb25lLlxuICBwcm92aWRlOiBUZER5bmFtaWNGb3Jtc1NlcnZpY2UsXG4gIGRlcHM6IFtbbmV3IE9wdGlvbmFsKCksIG5ldyBTa2lwU2VsZigpLCBUZER5bmFtaWNGb3Jtc1NlcnZpY2VdXSxcbiAgdXNlRmFjdG9yeTogRFlOQU1JQ19GT1JNU19QUk9WSURFUl9GQUNUT1JZLFxufTtcbiJdfQ==
|