@bizdoc/core 1.16.27 → 1.16.29
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/assets/system/google.svg +13 -0
- package/assets/themes/brown.min.css +8 -8
- package/assets/themes/dark.min.css +8 -8
- package/assets/themes/deep-purple-light-blue.min.css +8 -8
- package/assets/themes/deep-purple-teal.min.css +8 -8
- package/assets/themes/default.min.css +8 -8
- package/assets/themes/green.min.css +8 -8
- package/assets/themes/indigo.min.css +8 -8
- package/esm2020/lib/admin/configuration-designer/declarations.mjs +2 -1
- package/esm2020/lib/admin/configuration-designer/designer.component.mjs +5 -3
- package/esm2020/lib/admin/configuration-designer/elements/cube.component.mjs +3 -3
- package/esm2020/lib/admin/configuration-designer/elements/node.component.mjs +18 -0
- package/esm2020/lib/admin/localized-string.component.mjs +52 -0
- package/esm2020/lib/core/controls/signature.input.mjs +149 -0
- package/esm2020/lib/core/mailbox.service.mjs +11 -2
- package/esm2020/lib/core/models.mjs +1 -1
- package/esm2020/lib/core/pipes/localized-string.pipe.mjs +24 -0
- package/esm2020/lib/core/slots/pane-ref.mjs +3 -2
- package/esm2020/lib/core/translations.mjs +49 -4
- package/esm2020/lib/reports/report-ref.mjs +1 -1
- package/esm2020/lib/reports/report-viewer.component.mjs +5 -2
- package/esm2020/lib/shared.module.mjs +11 -8
- package/esm2020/lib/system.module.mjs +11 -13
- package/esm2020/public-api.mjs +3 -2
- package/fesm2015/bizdoc-core.mjs +369 -327
- package/fesm2015/bizdoc-core.mjs.map +1 -1
- package/fesm2020/bizdoc-core.mjs +369 -324
- package/fesm2020/bizdoc-core.mjs.map +1 -1
- package/lib/admin/configuration-designer/declarations.d.ts +4 -0
- package/lib/admin/configuration-designer/designer-element.component.d.ts +1 -0
- package/lib/admin/configuration-designer/elements/node.component.d.ts +7 -0
- package/lib/admin/localized-string.component.d.ts +20 -0
- package/lib/core/controls/signature.input.d.ts +53 -0
- package/lib/core/mailbox.service.d.ts +2 -1
- package/lib/core/models.d.ts +7 -0
- package/lib/core/pipes/localized-string.pipe.d.ts +11 -0
- package/lib/core/slots/pane-ref.d.ts +10 -9
- package/lib/core/translations.d.ts +45 -0
- package/lib/reports/report-ref.d.ts +2 -0
- package/lib/shared.module.d.ts +137 -136
- package/lib/system.module.d.ts +59 -59
- package/package.json +11 -9
- package/public-api.d.ts +3 -2
- package/esm2020/lib/admin/configuration-designer/elements/survey-form.component.mjs +0 -44
- package/esm2020/lib/admin/form/survey/survey.component.mjs +0 -180
- package/esm2020/lib/compose/survey/survey.component.mjs +0 -73
- package/lib/admin/configuration-designer/elements/survey-form.component.d.ts +0 -18
- package/lib/admin/form/survey/survey.component.d.ts +0 -123
- package/lib/compose/survey/survey.component.d.ts +0 -17
@@ -1,44 +0,0 @@
|
|
1
|
-
import { __decorate } from "tslib";
|
2
|
-
import { Component, Inject } from "@angular/core";
|
3
|
-
import { BizDoc } from "../../../core/decorators";
|
4
|
-
import { DesignerRef } from "../declarations";
|
5
|
-
import { DesignerElementComponentBase } from "../designer.base";
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "@angular/forms";
|
8
|
-
import * as i2 from "../../../core/slots/router.service";
|
9
|
-
import * as i3 from "@angular/common";
|
10
|
-
import * as i4 from "@angular/material/button";
|
11
|
-
import * as i5 from "@angular/material/icon";
|
12
|
-
import * as i6 from "../../../core/popup/tooltip.directive";
|
13
|
-
import * as i7 from "../../../core/pipes/translate.pipe";
|
14
|
-
import * as i8 from "../declarations";
|
15
|
-
let SurveyFormDesignComponent = class SurveyFormDesignComponent extends DesignerElementComponentBase {
|
16
|
-
constructor(fb, element, ref, _router) {
|
17
|
-
super(fb, element, ref);
|
18
|
-
this._router = _router;
|
19
|
-
this.form = this._fb.group({
|
20
|
-
questions: []
|
21
|
-
});
|
22
|
-
}
|
23
|
-
ngOnInit() {
|
24
|
-
if (!this.model.icon)
|
25
|
-
this.model.icon = 'list_alt';
|
26
|
-
}
|
27
|
-
design() {
|
28
|
-
this._router.navigate(['admin/tools/survey-designer'], { queryParams: { formId: this.model.name } });
|
29
|
-
}
|
30
|
-
};
|
31
|
-
SurveyFormDesignComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SurveyFormDesignComponent, deps: [{ token: i1.FormBuilder }, { token: i0.ElementRef }, { token: DesignerRef }, { token: i2.PanesRouter }], target: i0.ɵɵFactoryTarget.Component });
|
32
|
-
SurveyFormDesignComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SurveyFormDesignComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<ng-container *ngIf=\"mode === 'widget'\">\r\n <div class=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"design()\" [bizdocTooltip]=\"'Designer'|translate\" [disabled]=\"model.draft\"><mat-icon>list_alt</mat-icon></button>\r\n </div>\r\n</ng-container>\r\n", dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.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: "component", type: i5.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i6.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "pipe", type: i7.TranslatePipe, name: "translate" }] });
|
33
|
-
SurveyFormDesignComponent = __decorate([
|
34
|
-
BizDoc({ selector: 'survey-designer' })
|
35
|
-
], SurveyFormDesignComponent);
|
36
|
-
export { SurveyFormDesignComponent };
|
37
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SurveyFormDesignComponent, decorators: [{
|
38
|
-
type: Component,
|
39
|
-
args: [{ template: "<ng-container *ngIf=\"mode === 'widget'\">\r\n <div class=\"row\">\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"design()\" [bizdocTooltip]=\"'Designer'|translate\" [disabled]=\"model.draft\"><mat-icon>list_alt</mat-icon></button>\r\n </div>\r\n</ng-container>\r\n" }]
|
40
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i0.ElementRef }, { type: i8.DesignerRef, decorators: [{
|
41
|
-
type: Inject,
|
42
|
-
args: [DesignerRef]
|
43
|
-
}] }, { type: i2.PanesRouter }]; } });
|
44
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicmFyaWVzL2NvcmUvc3JjL2xpYi9hZG1pbi9jb25maWd1cmF0aW9uLWRlc2lnbmVyL2VsZW1lbnRzL3N1cnZleS1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vY29uZmlndXJhdGlvbi1kZXNpZ25lci9lbGVtZW50cy9zdXJ2ZXktZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxNQUFNLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFFdEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBR2xELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM5QyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7OztBQUl6RCxJQUFNLHlCQUF5QixHQUEvQixNQUFNLHlCQUEwQixTQUFRLDRCQUE0QztJQUl6RixZQUFZLEVBQWUsRUFDekIsT0FBd0IsRUFDSCxHQUFnQixFQUM3QixPQUFvQjtRQUM1QixLQUFLLENBQUMsRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztRQURoQixZQUFPLEdBQVAsT0FBTyxDQUFhO1FBTnJCLFNBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUM3QixTQUFTLEVBQUUsRUFBRTtTQUNkLENBQUMsQ0FBQztJQU1ILENBQUM7SUFDRCxRQUFRO1FBQ04sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSTtZQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQztJQUNyRCxDQUFDO0lBQ0QsTUFBTTtRQUNKLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsNkJBQTZCLENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN2RyxDQUFDOztzSEFmVSx5QkFBeUIsdUVBTTFCLFdBQVc7MEdBTlYseUJBQXlCLDJFQ1Z0Qyw4U0FNQTtBRElhLHlCQUF5QjtJQURuQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsQ0FBQztHQUM3Qix5QkFBeUIsQ0FnQnJDO1NBaEJZLHlCQUF5QjsyRkFBekIseUJBQXlCO2tCQUZyQyxTQUFTOzs7MEJBUUwsTUFBTTsyQkFBQyxXQUFXIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbmplY3QsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IEJpekRvYyB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL2RlY29yYXRvcnNcIjtcclxuaW1wb3J0IHsgUGFuZXNSb3V0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zbG90cy9yb3V0ZXIuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTdXJ2ZXlNZXRhZGF0YSB9IGZyb20gXCIuLi8uLi9mb3JtL3N1cnZleS9zdXJ2ZXkuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IERlc2lnbmVyUmVmIH0gZnJvbSBcIi4uL2RlY2xhcmF0aW9uc1wiO1xyXG5pbXBvcnQgeyBEZXNpZ25lckVsZW1lbnRDb21wb25lbnRCYXNlIH0gZnJvbSBcIi4uL2Rlc2lnbmVyLmJhc2VcIjtcclxuXHJcbkBDb21wb25lbnQoeyB0ZW1wbGF0ZVVybDogJ3N1cnZleS1mb3JtLmNvbXBvbmVudC5odG1sJyB9KVxyXG4gIEBCaXpEb2MoeyBzZWxlY3RvcjogJ3N1cnZleS1kZXNpZ25lcicgfSlcclxuZXhwb3J0IGNsYXNzIFN1cnZleUZvcm1EZXNpZ25Db21wb25lbnQgZXh0ZW5kcyBEZXNpZ25lckVsZW1lbnRDb21wb25lbnRCYXNlPFN1cnZleU1ldGFkYXRhPiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcmVhZG9ubHkgZm9ybSA9IHRoaXMuX2ZiLmdyb3VwKHtcclxuICAgIHF1ZXN0aW9uczogW11cclxuICB9KTtcclxuICBjb25zdHJ1Y3RvcihmYjogRm9ybUJ1aWxkZXIsXHJcbiAgICBlbGVtZW50OiBFbGVtZW50UmVmPGFueT4sXHJcbiAgICBASW5qZWN0KERlc2lnbmVyUmVmKSByZWY6IERlc2lnbmVyUmVmLFxyXG4gICAgcHJpdmF0ZSBfcm91dGVyOiBQYW5lc1JvdXRlcikge1xyXG4gICAgc3VwZXIoZmIsIGVsZW1lbnQsIHJlZik7XHJcbiAgfVxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKCF0aGlzLm1vZGVsLmljb24pIHRoaXMubW9kZWwuaWNvbiA9ICdsaXN0X2FsdCc7XHJcbiAgfVxyXG4gIGRlc2lnbigpIHtcclxuICAgIHRoaXMuX3JvdXRlci5uYXZpZ2F0ZShbJ2FkbWluL3Rvb2xzL3N1cnZleS1kZXNpZ25lciddLCB7IHF1ZXJ5UGFyYW1zOiB7IGZvcm1JZDogdGhpcy5tb2RlbC5uYW1lIH0gfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJtb2RlID09PSAnd2lkZ2V0J1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZGl2aWRlclwiPjwvc3Bhbj5cclxuICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJkZXNpZ24oKVwiIFtiaXpkb2NUb29sdGlwXT1cIidEZXNpZ25lcid8dHJhbnNsYXRlXCIgW2Rpc2FibGVkXT1cIm1vZGVsLmRyYWZ0XCI+PG1hdC1pY29uPmxpc3RfYWx0PC9tYXQtaWNvbj48L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==
|
@@ -1,180 +0,0 @@
|
|
1
|
-
import { __decorate } from "tslib";
|
2
|
-
import { Component, HostListener } from "@angular/core";
|
3
|
-
import { Validators } from "@angular/forms";
|
4
|
-
import { BizDoc } from "../../../core/decorators";
|
5
|
-
import { cleanup } from "../../../core/functions";
|
6
|
-
import * as i0 from "@angular/core";
|
7
|
-
import * as i1 from "@angular/forms";
|
8
|
-
import * as i2 from "../../../core/slots/pane-ref";
|
9
|
-
import * as i3 from "../../../core/prompt.service";
|
10
|
-
import * as i4 from "../../../core/session.service";
|
11
|
-
import * as i5 from "../../utility-ref";
|
12
|
-
import * as i6 from "@angular/common";
|
13
|
-
import * as i7 from "@angular/cdk/drag-drop";
|
14
|
-
import * as i8 from "@angular/material/toolbar";
|
15
|
-
import * as i9 from "@angular/material/core";
|
16
|
-
import * as i10 from "@angular/material/form-field";
|
17
|
-
import * as i11 from "@angular/material/select";
|
18
|
-
import * as i12 from "@angular/material/button";
|
19
|
-
import * as i13 from "@angular/material/checkbox";
|
20
|
-
import * as i14 from "@angular/cdk/text-field";
|
21
|
-
import * as i15 from "@angular/material/input";
|
22
|
-
import * as i16 from "@angular/material/icon";
|
23
|
-
import * as i17 from "@angular/material/menu";
|
24
|
-
import * as i18 from "../../../core/popup/tooltip.directive";
|
25
|
-
import * as i19 from "../../core/ace.input";
|
26
|
-
import * as i20 from "../../../core/pipes/translate.pipe";
|
27
|
-
const NAME = /^[A-Za-z]+\w*$/;
|
28
|
-
/** */
|
29
|
-
let SurveyDesignerComponent = class SurveyDesignerComponent {
|
30
|
-
constructor(_fb, _pane, _cd, _ps, _session, _el, _ref) {
|
31
|
-
this._fb = _fb;
|
32
|
-
this._pane = _pane;
|
33
|
-
this._cd = _cd;
|
34
|
-
this._ps = _ps;
|
35
|
-
this._session = _session;
|
36
|
-
this._el = _el;
|
37
|
-
this._ref = _ref;
|
38
|
-
this.loading = true;
|
39
|
-
this.tools = true;
|
40
|
-
this.saving = false;
|
41
|
-
this.history = [];
|
42
|
-
this.historyIndex = -1;
|
43
|
-
this.questions = this._fb.array([]);
|
44
|
-
this.form = this._fb.group({
|
45
|
-
questions: this.questions
|
46
|
-
});
|
47
|
-
this.settings = false;
|
48
|
-
this.datatypes = this._session.profile.types;
|
49
|
-
this.cubes = this._session.profile.cubes;
|
50
|
-
}
|
51
|
-
ngOnInit() {
|
52
|
-
this._pane.queryParamsChange.subscribe(p => {
|
53
|
-
const { formId } = p;
|
54
|
-
formId && this._open(formId);
|
55
|
-
});
|
56
|
-
this.form.valueChanges.pipe().
|
57
|
-
subscribe(v => {
|
58
|
-
//this._notifyChange();
|
59
|
-
});
|
60
|
-
}
|
61
|
-
_open(formId) {
|
62
|
-
this._ref.populate(formId).subscribe(r => {
|
63
|
-
this._formId = formId;
|
64
|
-
this._assign(r);
|
65
|
-
this.loading = false;
|
66
|
-
});
|
67
|
-
}
|
68
|
-
_assign(model) {
|
69
|
-
this.model = model || { questions: [] };
|
70
|
-
this.questions.clear({ emitEvent: false });
|
71
|
-
this.form.patchValue(this.model, { emitEvent: false });
|
72
|
-
model.questions?.forEach(q => this.questions.push(this._questionform(q), { emitEvent: false }));
|
73
|
-
}
|
74
|
-
_questionform(model) {
|
75
|
-
const name = this._fb.control(model.name, [Validators.required, Validators.pattern(NAME)]), label = this._fb.control(model.label, Validators.required);
|
76
|
-
return this._fb.group({
|
77
|
-
name,
|
78
|
-
label,
|
79
|
-
description: model.description,
|
80
|
-
type: model.type,
|
81
|
-
defaultValue: model.defaultValue,
|
82
|
-
dataType: model.dataType,
|
83
|
-
placeholder: model.placeholder,
|
84
|
-
pattern: model.pattern,
|
85
|
-
kind: model.kind,
|
86
|
-
minLength: model.minLength,
|
87
|
-
maxLength: model.maxLength,
|
88
|
-
min: model.min,
|
89
|
-
max: model.max,
|
90
|
-
required: model.required,
|
91
|
-
options: this._fb.array(model.options ? [] : [])
|
92
|
-
});
|
93
|
-
}
|
94
|
-
add(type, evt) {
|
95
|
-
let n = 0, name, label;
|
96
|
-
do {
|
97
|
-
n++;
|
98
|
-
name = 'question' + '_' + n;
|
99
|
-
label = 'Question' + ' ' + n;
|
100
|
-
} while (this.questions.controls.
|
101
|
-
find(c => c.get('name').value === name || c.get('label').value === label));
|
102
|
-
this._notifyChange();
|
103
|
-
this.questions.push(this._questionform({
|
104
|
-
type,
|
105
|
-
name,
|
106
|
-
label,
|
107
|
-
}));
|
108
|
-
this._cd.detectChanges();
|
109
|
-
setTimeout(() => this._el.nativeElement.querySelector('.designer-field:last-child input')?.focus());
|
110
|
-
}
|
111
|
-
remove(question) {
|
112
|
-
this._notifyChange();
|
113
|
-
this.questions.controls.remove(question);
|
114
|
-
}
|
115
|
-
_notifyChange() {
|
116
|
-
this.history.push(JSON.stringify(this.form.value));
|
117
|
-
this.historyIndex = this.history.length - 1;
|
118
|
-
this.form.markAsDirty();
|
119
|
-
}
|
120
|
-
undo() {
|
121
|
-
this._restore();
|
122
|
-
this.historyIndex--;
|
123
|
-
}
|
124
|
-
redo() {
|
125
|
-
this._restore();
|
126
|
-
this.historyIndex++;
|
127
|
-
}
|
128
|
-
_restore() {
|
129
|
-
this._assign(JSON.parse(this.history[this.historyIndex]));
|
130
|
-
}
|
131
|
-
/**
|
132
|
-
* Ctrl-s save; Ctrl-z undo
|
133
|
-
* @param event
|
134
|
-
*/
|
135
|
-
handleKeyboardEvent(event) {
|
136
|
-
if (event.ctrlKey) {
|
137
|
-
if (event.which === 83 || event.which === 115) {
|
138
|
-
this.form.dirty && this.save();
|
139
|
-
event.preventDefault();
|
140
|
-
event.stopPropagation();
|
141
|
-
}
|
142
|
-
}
|
143
|
-
}
|
144
|
-
drop(event, collection) {
|
145
|
-
this._notifyChange();
|
146
|
-
const element = collection.at(event.previousIndex);
|
147
|
-
collection.removeAt(event.previousIndex);
|
148
|
-
collection.insert(event.currentIndex, element);
|
149
|
-
//moveItemInArray(event.container.data, event.previousIndex, event.currentIndex);
|
150
|
-
}
|
151
|
-
save() {
|
152
|
-
this.saving = true;
|
153
|
-
Object.assign(this.model, this.form.value);
|
154
|
-
this._ref.execute({ metadata: cleanup(this.model), formId: this._formId }).subscribe(() => {
|
155
|
-
this._ps.toast('ChangesSaved');
|
156
|
-
this.form.markAsPristine();
|
157
|
-
const form = this._session.profile.forms.find(f => f.name == this._formId);
|
158
|
-
if (form)
|
159
|
-
form.options = this.model;
|
160
|
-
this.saving = false;
|
161
|
-
}, () => {
|
162
|
-
this._ps.error();
|
163
|
-
this.saving = false;
|
164
|
-
});
|
165
|
-
}
|
166
|
-
};
|
167
|
-
SurveyDesignerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SurveyDesignerComponent, deps: [{ token: i1.FormBuilder }, { token: i2.PaneRef }, { token: i0.ChangeDetectorRef }, { token: i3.PromptService }, { token: i4.SessionService }, { token: i0.ElementRef }, { token: i5.UtilityRef }], target: i0.ɵɵFactoryTarget.Component });
|
168
|
-
SurveyDesignerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SurveyDesignerComponent, selector: "ng-component", host: { listeners: { "document:keydown": "handleKeyboardEvent($event)" } }, ngImport: i0, template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!form.dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n <button mat-icon-button (click)=\"undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"historyIndex === -1\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"historyIndex === history.length - 1\"><mat-icon>redo</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings = !settings\" [bizdocTooltip]=\"'Settings'|translate\" type=\"button\"><mat-icon>settings</mat-icon></button>\r\n</mat-toolbar>\r\n<form autocomplete=\"off\" [formGroup]=\"form\" *ngIf=\"model\">\r\n <div class=\"column\" *ngIf=\"settings\">\r\n <mat-form-field>\r\n <mat-label>{{'Value'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"value\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Subject'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"subject\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Summary'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"summary\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n </div>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event, questions)\">\r\n <div class=\"column\" *ngFor=\"let q of questions.controls; let i = index\" cdkDrag [attr.data-index]=\"i\">\r\n <mat-icon class=\"section-drag\" cdkDragHandle>drag_indicator</mat-icon>\r\n <div class=\"column\" [formGroup]=\"q\">\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput required formControlName=\"name\" />\r\n <mat-error *ngIf=\"q.get('name').hasError('pattern')\" [innerHTML]=\"'ProgramPatternErr'|translate\"></mat-error>\r\n <mat-error *ngIf=\"q.get('name').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:'Field'\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Label'|translate}}</mat-label>\r\n <input matInput required formControlName=\"label\" />\r\n <mat-error *ngIf=\"q.get('label').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:'Label'\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Description'|translate}}</mat-label>\r\n <textarea matInput formControlName=\"description\" cdkTextareaAutosize></textarea>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=\"required\">{{'Mandatory'|translate}}</mat-checkbox>\r\n <ng-container [ngSwitch]=\"q.get('type').value\">\r\n <div *ngSwitchCase=\"'Date'\">\r\n </div>\r\n <div *ngSwitchCase=\"'Text'\">\r\n <mat-form-field>\r\n <mat-label>{{'Type'|translate}}</mat-label>\r\n <mat-select formControlName=\"kind\">\r\n <mat-option value=\"String\">{{'Text'|translate}}</mat-option>\r\n <mat-option value=\"PhoneNumber\">{{'Tel'|translate}}</mat-option>\r\n <mat-option value=\"EmailAddress\">{{'Email'|translate}}</mat-option>\r\n <mat-option value=\"Address\">{{'Address'|translate}}</mat-option>\r\n <mat-option value=\"Url\">{{'Url'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div *ngSwitchCase=\"'Number'\">\r\n </div>\r\n <div *ngSwitchCase=\"'Choice'\">\r\n </div>\r\n <mat-form-field *ngSwitchCase=\"'Select'\">\r\n <mat-label>{{'DataType'|translate}}</mat-label>\r\n <mat-select formControlName=\"dataType\" required>\r\n <mat-option *ngFor=\"let t of datatypes\" [value]=\"t.name\">{{t.title}}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"q.get('dataType').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:'DataType'\"></mat-error>\r\n </mat-form-field>\r\n <div *ngSwitchDefault>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"actions\">\r\n <button mat-stroked-button (click)=\"remove(q)\" [bizdocTooltip]=\"'Discard'|translate\" type=\"button\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n <!--<div *cdkDragPlaceholder class=\"drag-placeholder\"></div>-->\r\n </div>\r\n </div>\r\n <div class=\"column\">\r\n <button mat-stroked-button [matMenuTriggerFor]=\"questionTypeMenu\" [bizdocTooltip]=\"'Add'|translate\" type=\"button\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #questionTypeMenu>\r\n <button mat-menu-item (click)=\"add('Text', $event)\">{{'Text'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('HTML', $event)\">{{'HTML'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('Number', $event)\">{{'Numeric'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('Date', $event)\">{{'Date'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('Select', $event)\">{{'Select'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('Choice', $event)\">{{'Choice'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('YesNo', $event)\">{{'YesNo'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('Checkbox', $event)\">{{'Checkbox'|translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</form>\r\n", styles: ["form{margin:8px}section,.designer-row,.designer-field{border:2px solid transparent;border-radius:3px;padding:8px}section:hover,.designer-row:hover,.designer-field:hover{border:2px dotted}section .designer-row{margin:5px 0}section .designer-row .designer-field{flex:1}.drag-placeholder{border:2px dashed}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i6.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i6.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i6.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i7.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i7.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: i7.CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "component", type: i8.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "component", type: i9.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "directive", type: i10.MatError, selector: "mat-error", inputs: ["id"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "component", type: i11.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i12.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: "component", type: i13.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i14.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i15.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"] }, { kind: "component", type: i16.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i17.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i17.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i17.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i18.TooltipDirective, selector: "[bizdocTooltip]", inputs: ["bizdocTooltip", "bizdocTooltipTemplate", "bizdocTooltipContext", "bizdocTooltipPosition", "bizdocTooltipDuration", "bizdocTooltipDisabled"] }, { kind: "component", type: i19.AceInput, selector: "bizdoc-ace-input", inputs: ["params", "placeholder", "required", "disabled", "value"] }, { kind: "pipe", type: i20.TranslatePipe, name: "translate" }] });
|
169
|
-
SurveyDesignerComponent = __decorate([
|
170
|
-
BizDoc({ selector: 'bizdoc-survey-designer' })
|
171
|
-
], SurveyDesignerComponent);
|
172
|
-
export { SurveyDesignerComponent };
|
173
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SurveyDesignerComponent, decorators: [{
|
174
|
-
type: Component,
|
175
|
-
args: [{ template: "<mat-toolbar>\r\n <button mat-icon-button (click)=\"save()\" [disabled]=\"!form.dirty || loading || saving\" [bizdocTooltip]=\"'Save'|translate\"><mat-icon>save</mat-icon></button>\r\n <button mat-icon-button (click)=\"undo()\" [bizdocTooltip]=\"'Undo' | translate\" [disabled]=\"historyIndex === -1\"><mat-icon>undo</mat-icon></button>\r\n <button mat-icon-button (click)=\"redo()\" [bizdocTooltip]=\"'Redo' | translate\" [disabled]=\"historyIndex === history.length - 1\"><mat-icon>redo</mat-icon></button>\r\n <span class=\"divider\"></span>\r\n <button mat-icon-button (click)=\"settings = !settings\" [bizdocTooltip]=\"'Settings'|translate\" type=\"button\"><mat-icon>settings</mat-icon></button>\r\n</mat-toolbar>\r\n<form autocomplete=\"off\" [formGroup]=\"form\" *ngIf=\"model\">\r\n <div class=\"column\" *ngIf=\"settings\">\r\n <mat-form-field>\r\n <mat-label>{{'Value'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"value\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Subject'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"subject\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Summary'|translate}}</mat-label>\r\n <bizdoc-ace-input formControlName=\"summary\"></bizdoc-ace-input>\r\n <mat-hint> {{ 'Expression'|translate }}</mat-hint>\r\n </mat-form-field>\r\n </div>\r\n <div cdkDropList (cdkDropListDropped)=\"drop($event, questions)\">\r\n <div class=\"column\" *ngFor=\"let q of questions.controls; let i = index\" cdkDrag [attr.data-index]=\"i\">\r\n <mat-icon class=\"section-drag\" cdkDragHandle>drag_indicator</mat-icon>\r\n <div class=\"column\" [formGroup]=\"q\">\r\n <mat-form-field>\r\n <mat-label>{{'Name'|translate}}</mat-label>\r\n <input matInput required formControlName=\"name\" />\r\n <mat-error *ngIf=\"q.get('name').hasError('pattern')\" [innerHTML]=\"'ProgramPatternErr'|translate\"></mat-error>\r\n <mat-error *ngIf=\"q.get('name').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:'Field'\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Label'|translate}}</mat-label>\r\n <input matInput required formControlName=\"label\" />\r\n <mat-error *ngIf=\"q.get('label').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:'Label'\"></mat-error>\r\n </mat-form-field>\r\n <mat-form-field>\r\n <mat-label>{{'Description'|translate}}</mat-label>\r\n <textarea matInput formControlName=\"description\" cdkTextareaAutosize></textarea>\r\n </mat-form-field>\r\n <mat-checkbox formControlName=\"required\">{{'Mandatory'|translate}}</mat-checkbox>\r\n <ng-container [ngSwitch]=\"q.get('type').value\">\r\n <div *ngSwitchCase=\"'Date'\">\r\n </div>\r\n <div *ngSwitchCase=\"'Text'\">\r\n <mat-form-field>\r\n <mat-label>{{'Type'|translate}}</mat-label>\r\n <mat-select formControlName=\"kind\">\r\n <mat-option value=\"String\">{{'Text'|translate}}</mat-option>\r\n <mat-option value=\"PhoneNumber\">{{'Tel'|translate}}</mat-option>\r\n <mat-option value=\"EmailAddress\">{{'Email'|translate}}</mat-option>\r\n <mat-option value=\"Address\">{{'Address'|translate}}</mat-option>\r\n <mat-option value=\"Url\">{{'Url'|translate}}</mat-option>\r\n </mat-select>\r\n </mat-form-field>\r\n </div>\r\n <div *ngSwitchCase=\"'Number'\">\r\n </div>\r\n <div *ngSwitchCase=\"'Choice'\">\r\n </div>\r\n <mat-form-field *ngSwitchCase=\"'Select'\">\r\n <mat-label>{{'DataType'|translate}}</mat-label>\r\n <mat-select formControlName=\"dataType\" required>\r\n <mat-option *ngFor=\"let t of datatypes\" [value]=\"t.name\">{{t.title}}</mat-option>\r\n </mat-select>\r\n <mat-error *ngIf=\"q.get('dataType').hasError('required')\" [innerHTML]=\"'RequiredErr'|translate:'DataType'\"></mat-error>\r\n </mat-form-field>\r\n <div *ngSwitchDefault>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"actions\">\r\n <button mat-stroked-button (click)=\"remove(q)\" [bizdocTooltip]=\"'Discard'|translate\" type=\"button\"><mat-icon>delete</mat-icon></button>\r\n </div>\r\n <!--<div *cdkDragPlaceholder class=\"drag-placeholder\"></div>-->\r\n </div>\r\n </div>\r\n <div class=\"column\">\r\n <button mat-stroked-button [matMenuTriggerFor]=\"questionTypeMenu\" [bizdocTooltip]=\"'Add'|translate\" type=\"button\"><mat-icon>add</mat-icon></button>\r\n <mat-menu #questionTypeMenu>\r\n <button mat-menu-item (click)=\"add('Text', $event)\">{{'Text'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('HTML', $event)\">{{'HTML'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('Number', $event)\">{{'Numeric'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('Date', $event)\">{{'Date'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('Select', $event)\">{{'Select'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('Choice', $event)\">{{'Choice'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('YesNo', $event)\">{{'YesNo'|translate}}</button>\r\n <button mat-menu-item (click)=\"add('Checkbox', $event)\">{{'Checkbox'|translate}}</button>\r\n </mat-menu>\r\n </div>\r\n</form>\r\n", styles: ["form{margin:8px}section,.designer-row,.designer-field{border:2px solid transparent;border-radius:3px;padding:8px}section:hover,.designer-row:hover,.designer-field:hover{border:2px dotted}section .designer-row{margin:5px 0}section .designer-row .designer-field{flex:1}.drag-placeholder{border:2px dashed}\n"] }]
|
176
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.PaneRef }, { type: i0.ChangeDetectorRef }, { type: i3.PromptService }, { type: i4.SessionService }, { type: i0.ElementRef }, { type: i5.UtilityRef }]; }, propDecorators: { handleKeyboardEvent: [{
|
177
|
-
type: HostListener,
|
178
|
-
args: ['document:keydown', ['$event']]
|
179
|
-
}] } });
|
180
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vZm9ybS9zdXJ2ZXkvc3VydmV5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvYWRtaW4vZm9ybS9zdXJ2ZXkvc3VydmV5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQXFCLFNBQVMsRUFBYyxZQUFZLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDL0YsT0FBTyxFQUFrRCxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM1RixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBT2xELE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDO0FBRTlCLE1BQU07QUFNQyxJQUFNLHVCQUF1QixHQUE3QixNQUFNLHVCQUF1QjtJQWdCbEMsWUFDVSxHQUFnQixFQUNoQixLQUFtQixFQUNuQixHQUFzQixFQUN0QixHQUFrQixFQUNsQixRQUF3QixFQUN4QixHQUFlLEVBQ2YsSUFBK0Y7UUFOL0YsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUNoQixVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQ25CLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ3RCLFFBQUcsR0FBSCxHQUFHLENBQWU7UUFDbEIsYUFBUSxHQUFSLFFBQVEsQ0FBZ0I7UUFDeEIsUUFBRyxHQUFILEdBQUcsQ0FBWTtRQUNmLFNBQUksR0FBSixJQUFJLENBQTJGO1FBdEJ6RyxZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsVUFBSyxHQUFHLElBQUksQ0FBQztRQUNiLFdBQU0sR0FBRyxLQUFLLENBQUM7UUFFTixZ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SSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzNFLElBQUksSUFBSTtnQkFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7WUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEIsQ0FBQyxFQUFFLEdBQUcsRUFBRTtZQUNOLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOztvSEFsSlUsdUJBQXVCO3dHQUF2Qix1QkFBdUIsZ0lDbkJwQyx5c0xBK0ZBO0FENUVhLHVCQUF1QjtJQURuQyxNQUFNLENBQUMsRUFBRSxRQUFRLEVBQUUsd0JBQXdCLEVBQUUsQ0FBQztHQUNsQyx1QkFBdUIsQ0FtSm5DO1NBbkpZLHVCQUF1QjsyRkFBdkIsdUJBQXVCO2tCQUxuQyxTQUFTOzttUUEwSFIsbUJBQW1CO3NCQURsQixZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0TGlzdGVuZXIsIE9uSW5pdCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1BcnJheSwgRm9ybUJ1aWxkZXIsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgQml6RG9jIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvZGVjb3JhdG9yc1wiO1xyXG5pbXBvcnQgeyBjbGVhbnVwIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCB7IEN1YmUsIEZpZWxkS2luZCwgVHlwZSB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL21vZGVsc1wiO1xyXG5pbXBvcnQgeyBQcm9tcHRTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL2NvcmUvcHJvbXB0LnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU2Vzc2lvblNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vY29yZS9zZXNzaW9uLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgUGFuZVJlZiB9IGZyb20gXCIuLi8uLi8uLi9jb3JlL3Nsb3RzL3BhbmUtcmVmXCI7XHJcbmltcG9ydCB7IFV0aWxpdHlSZWYgfSBmcm9tIFwiLi4vLi4vdXRpbGl0eS1yZWZcIjtcclxuXHJcbmNvbnN0IE5BTUUgPSAvXltBLVphLXpdK1xcdyokLztcclxuXHJcbi8qKiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICB0ZW1wbGF0ZVVybDogJ3N1cnZleS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJ3N1cnZleS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbkBCaXpEb2MoeyBzZWxlY3RvcjogJ2JpemRvYy1zdXJ2ZXktZGVzaWduZXInIH0pXHJcbmV4cG9ydCBjbGFzcyBTdXJ2ZXlEZXNpZ25lckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgbG9hZGluZyA9IHRydWU7XHJcbiAgdG9vbHMgPSB0cnVlO1xyXG4gIHNhdmluZyA9IGZhbHNlO1xyXG4gIG1vZGVsOiBTdXJ2ZXlNZXRhZGF0YTtcclxuICByZWFkb25seSBoaXN0b3J5OiBzdHJpbmdbXSA9IFtdO1xyXG4gIGhpc3RvcnlJbmRleCA9IC0xO1xyXG4gIHJlYWRvbmx5IGRhdGF0eXBlczogVHlwZVtdO1xyXG4gIHJlYWRvbmx5IGN1YmVzOiBDdWJlW107XHJcbiAgcmVhZG9ubHkgcXVlc3Rpb25zID0gdGhpcy5fZmIuYXJyYXkoW10pO1xyXG4gIHJlYWRvbmx5IGZvcm0gPSB0aGlzLl9mYi5ncm91cCh7XHJcbiAgICBxdWVzdGlvbnM6IHRoaXMucXVlc3Rpb25zXHJcbiAgfSk7XHJcbiAgdGl0bGU6IHN0cmluZztcclxuICBzZXR0aW5ncyA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2Zvcm1JZDogc3RyaW5nO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZmI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfcGFuZTogUGFuZVJlZjxhbnk+LFxyXG4gICAgcHJpdmF0ZSBfY2Q6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBfcHM6IFByb21wdFNlcnZpY2UsXHJcbiAgICBwcml2YXRlIF9zZXNzaW9uOiBTZXNzaW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgX2VsOiBFbGVtZW50UmVmLFxyXG4gICAgcHJpdmF0ZSBfcmVmOiBVdGlsaXR5UmVmPGJvb2xlYW4sIHsgbWV0YWRhdGE6IFN1cnZleU1ldGFkYXRhLCBmb3JtSWQ6IHN0cmluZyB9LCBTdXJ2ZXlNZXRhZGF0YSwgc3RyaW5nPikge1xyXG4gICAgdGhpcy5kYXRhdHlwZXMgPSB0aGlzLl9zZXNzaW9uLnByb2ZpbGUudHlwZXM7XHJcbiAgICB0aGlzLmN1YmVzID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmN1YmVzO1xyXG4gIH1cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3BhbmUucXVlcnlQYXJhbXNDaGFuZ2Uuc3Vic2NyaWJlKHAgPT4ge1xyXG4gICAgICBjb25zdCB7IGZvcm1JZCB9ID0gcDtcclxuICAgICAgZm9ybUlkICYmIHRoaXMuX29wZW4oZm9ybUlkKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5mb3JtLnZhbHVlQ2hhbmdlcy5waXBlKCkuXHJcbiAgICAgIHN1YnNjcmliZSh2ID0+IHtcclxuICAgICAgICAvL3RoaXMuX25vdGlmeUNoYW5nZSgpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfb3Blbihmb3JtSWQ6IHN0cmluZykge1xyXG4gICAgdGhpcy5fcmVmLnBvcHVsYXRlKGZvcm1JZCkuc3Vic2NyaWJlKHIgPT4ge1xyXG4gICAgICB0aGlzLl9mb3JtSWQgPSBmb3JtSWQ7XHJcbiAgICAgIHRoaXMuX2Fzc2lnbihyKTtcclxuICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcHJpdmF0ZSBfYXNzaWduKG1vZGVsOiBTdXJ2ZXlNZXRhZGF0YSkge1xyXG4gICAgdGhpcy5tb2RlbCA9IG1vZGVsIHx8IHsgcXVlc3Rpb25zOiBbXSB9O1xyXG4gICAgdGhpcy5xdWVzdGlvbnMuY2xlYXIoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUodGhpcy5tb2RlbCBhcyBhbnksIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgIG1vZGVsLnF1ZXN0aW9ucz8uZm9yRWFjaChxID0+IHRoaXMucXVlc3Rpb25zLnB1c2godGhpcy5fcXVlc3Rpb25mb3JtKHEpIGFzIGFueSwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcXVlc3Rpb25mb3JtKG1vZGVsOiBRdWVzdGlvbik6IGFueSB7XHJcbiAgICBjb25zdCBuYW1lID0gdGhpcy5fZmIuY29udHJvbChtb2RlbC5uYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5wYXR0ZXJuKE5BTUUpXSksXHJcbiAgICAgIGxhYmVsID0gdGhpcy5fZmIuY29udHJvbChtb2RlbC5sYWJlbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICByZXR1cm4gdGhpcy5fZmIuZ3JvdXAoe1xyXG4gICAgICBuYW1lLFxyXG4gICAgICBsYWJlbCxcclxuICAgICAgZGVzY3JpcHRpb246IG1vZGVsLmRlc2NyaXB0aW9uLFxyXG4gICAgICB0eXBlOiBtb2RlbC50eXBlLFxyXG4gICAgICBkZWZhdWx0VmFsdWU6IChtb2RlbCBhcyBOdW1iZXIpLmRlZmF1bHRWYWx1ZSxcclxuICAgICAgZGF0YVR5cGU6IChtb2RlbCBhcyBTZWxlY3QpLmRhdGFUeXBlLFxyXG4gICAgICBwbGFjZWhvbGRlcjogKG1vZGVsIGFzIFRleHQpLnBsYWNlaG9sZGVyLFxyXG4gICAgICBwYXR0ZXJuOiAobW9kZWwgYXMgVGV4dCkucGF0dGVybixcclxuICAgICAga2luZDogKG1vZGVsIGFzIFRleHQpLmtpbmQsXHJcbiAgICAgIG1pbkxlbmd0aDogKG1vZGVsIGFzIFRleHQpLm1pbkxlbmd0aCxcclxuICAgICAgbWF4TGVuZ3RoOiAobW9kZWwgYXMgVGV4dCkubWF4TGVuZ3RoLFxyXG4gICAgICBtaW46IChtb2RlbCBhcyBOdW1iZXIpLm1pbixcclxuICAgICAgbWF4OiAobW9kZWwgYXMgTnVtYmVyKS5tYXgsXHJcbiAgICAgIHJlcXVpcmVkOiBtb2RlbC5yZXF1aXJlZCxcclxuICAgICAgb3B0aW9uczogdGhpcy5fZmIuYXJyYXkoKG1vZGVsIGFzIENob2ljZSkub3B0aW9ucyA/IFtdOiBbXSlcclxuICAgIH0pXHJcbiAgfVxyXG4gIGFkZCh0eXBlOiBhbnksIGV2dD86IEV2ZW50KSB7XHJcbiAgICBsZXQgbiA9IDAsIG5hbWUsIGxhYmVsO1xyXG4gICAgZG8ge1xyXG4gICAgICBuKys7XHJcbiAgICAgIG5hbWUgPSAncXVlc3Rpb24nICsgJ18nICsgbjtcclxuICAgICAgbGFiZWwgPSAnUXVlc3Rpb24nICsgJyAnICsgbjtcclxuICAgIH0gd2hpbGUgKHRoaXMucXVlc3Rpb25zLmNvbnRyb2xzLlxyXG4gICAgICAgIGZpbmQoYyA9PiBjLmdldCgnbmFtZScpLnZhbHVlID09PSBuYW1lIHx8IGMuZ2V0KCdsYWJlbCcpLnZhbHVlID09PSBsYWJlbCkpO1xyXG4gICAgdGhpcy5fbm90aWZ5Q2hhbmdlKCk7XHJcbiAgICB0aGlzLnF1ZXN0aW9ucy5wdXNoKHRoaXMuX3F1ZXN0aW9uZm9ybSh7XHJcbiAgICAgIHR5cGUsXHJcbiAgICAgIG5hbWUsXHJcbiAgICAgIGxhYmVsLFxyXG4gICAgfSkpO1xyXG4gICAgdGhpcy5fY2QuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgc2V0VGltZW91dCgoKSA9PlxyXG4gICAgICB0aGlzLl9lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5kZXNpZ25lci1maWVsZDpsYXN0LWNoaWxkIGlucHV0Jyk/LmZvY3VzKClcclxuICAgIClcclxuICB9XHJcbiAgcmVtb3ZlKHF1ZXN0aW9uOiBGb3JtR3JvdXApIHtcclxuICAgIHRoaXMuX25vdGlmeUNoYW5nZSgpO1xyXG4gICAgdGhpcy5xdWVzdGlvbnMuY29udHJvbHMucmVtb3ZlKHF1ZXN0aW9uIGFzIGFueSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgX25vdGlmeUNoYW5nZSgpIHtcclxuICAgIHRoaXMuaGlzdG9yeS5wdXNoKEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybS52YWx1ZSkpO1xyXG4gICAgdGhpcy5oaXN0b3J5SW5kZXggPSB0aGlzLmhpc3RvcnkubGVuZ3RoIC0gMTtcclxuICAgIHRoaXMuZm9ybS5tYXJrQXNEaXJ0eSgpO1xyXG4gIH1cclxuICB1bmRvKCkge1xyXG4gICAgdGhpcy5fcmVzdG9yZSgpO1xyXG4gICAgdGhpcy5oaXN0b3J5SW5kZXgtLTtcclxuICB9XHJcbiAgcmVkbygpIHtcclxuICAgIHRoaXMuX3Jlc3RvcmUoKTtcclxuICAgIHRoaXMuaGlzdG9yeUluZGV4Kys7XHJcbiAgfVxyXG4gIHByaXZhdGUgX3Jlc3RvcmUoKSB7XHJcbiAgICB0aGlzLl9hc3NpZ24oSlNPTi5wYXJzZSh0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5SW5kZXhdKSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEN0cmwtcyBzYXZlOyBDdHJsLXogdW5kb1xyXG4gICAqIEBwYXJhbSBldmVudFxyXG4gICAqL1xyXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxyXG4gIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIGlmIChldmVudC5jdHJsS2V5KSB7XHJcbiAgICAgIGlmIChldmVudC53aGljaCA9PT0gODMgfHwgZXZlbnQud2hpY2ggPT09IDExNSkge1xyXG4gICAgICAgIHRoaXMuZm9ybS5kaXJ0eSAmJiB0aGlzLnNhdmUoKTtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPEZvcm1Hcm91cD4sIGNvbGxlY3Rpb246IEZvcm1BcnJheSkge1xyXG4gICAgdGhpcy5fbm90aWZ5Q2hhbmdlKCk7XHJcbiAgICBjb25zdCBlbGVtZW50ID0gY29sbGVjdGlvbi5hdChldmVudC5wcmV2aW91c0luZGV4KTtcclxuICAgIGNvbGxlY3Rpb24ucmVtb3ZlQXQoZXZlbnQucHJldmlvdXNJbmRleCk7XHJcbiAgICBjb2xsZWN0aW9uLmluc2VydChldmVudC5jdXJyZW50SW5kZXgsIGVsZW1lbnQpO1xyXG4gICAgLy9tb3ZlSXRlbUluQXJyYXkoZXZlbnQuY29udGFpbmVyLmRhdGEsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgfVxyXG4gIHNhdmUoKSB7XHJcbiAgICB0aGlzLnNhdmluZyA9IHRydWU7XHJcbiAgICBPYmplY3QuYXNzaWduKHRoaXMubW9kZWwsIHRoaXMuZm9ybS52YWx1ZSk7XHJcbiAgICB0aGlzLl9yZWYuZXhlY3V0ZSh7IG1ldGFkYXRhOiBjbGVhbnVwKHRoaXMubW9kZWwpLCBmb3JtSWQ6IHRoaXMuX2Zvcm1JZCB9KS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICB0aGlzLl9wcy50b2FzdCgnQ2hhbmdlc1NhdmVkJyk7XHJcbiAgICAgIHRoaXMuZm9ybS5tYXJrQXNQcmlzdGluZSgpO1xyXG4gICAgICBjb25zdCBmb3JtID0gdGhpcy5fc2Vzc2lvbi5wcm9maWxlLmZvcm1zLmZpbmQoZiA9PiBmLm5hbWUgPT0gdGhpcy5fZm9ybUlkKTtcclxuICAgICAgaWYgKGZvcm0pIGZvcm0ub3B0aW9ucyA9IHRoaXMubW9kZWw7XHJcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICB9LCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuX3BzLmVycm9yKCk7XHJcbiAgICAgIHRoaXMuc2F2aW5nID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTdXJ2ZXlNZXRhZGF0YSB7XHJcbiAgcXVlc3Rpb25zOiBRdWVzdGlvbltdO1xyXG59XHJcbmV4cG9ydCB0eXBlIFF1ZXN0aW9uID0gVGV4dCB8IEh0bWwgfCBEYXRlIHwgTnVtYmVyIHwgU2VsZWN0IHwgQ2hvaWNlIHwgWWVzTm8gfCBDaGVja2JveDtcclxuaW50ZXJmYWNlIFF1ZXN0aW9uQmFzZSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGxhYmVsOiBzdHJpbmc7XHJcbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xyXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgSHRtbCBleHRlbmRzIFF1ZXN0aW9uQmFzZSB7XHJcbiAgdHlwZTogJ0h0bWwnO1xyXG4gIGxpbmVzPzogbnVtYmVyO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgVGV4dCBleHRlbmRzIFF1ZXN0aW9uQmFzZSB7XHJcbiAgdHlwZTogJ1RleHQnO1xyXG4gIHBhdHRlcm4/OiBzdHJpbmc7XHJcbiAgbWluTGVuZ3RoPzogbnVtYmVyO1xyXG4gIG1heExlbmd0aD86IG51bWJlcjtcclxuICBwcmVmaXhJY29uPzogc3RyaW5nO1xyXG4gIHN1Zml4SWNvbj86IHN0cmluZztcclxuICBsaW5lcz86IG51bWJlcjtcclxuICBraW5kPzogRmllbGRLaW5kO1xyXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xyXG59XHJcbmV4cG9ydCBpbnRlcmZhY2UgQ2hlY2tib3ggZXh0ZW5kcyBRdWVzdGlvbkJhc2Uge1xyXG4gIHR5cGU6ICdDaGVja2JveCc7XHJcbiAgZGVmYXVsdFZhbHVlPzogYm9vbGVhbjtcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIFllc05vIGV4dGVuZHMgUXVlc3Rpb25CYXNlIHtcclxuICB0eXBlOiAnWWVzTm8nO1xyXG4gIGRlZmF1bHRWYWx1ZT86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBEYXRlIGV4dGVuZHMgUXVlc3Rpb25CYXNlIHtcclxuICB0eXBlOiAnRGF0ZSc7XHJcbiAgcHJlZml4SWNvbj86IHN0cmluZztcclxuICBzdWZpeEljb24/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdFZhbHVlPzogRGF0ZTtcclxuICBwbGFjZWhvbGRlcj86IHN0cmluZztcclxufVxyXG5leHBvcnQgaW50ZXJmYWNlIE51bWJlciBleHRlbmRzIFF1ZXN0aW9uQmFzZSB7XHJcbiAgdHlwZTogJ051bWJlcic7XHJcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XHJcbiAgZGVmYXVsdFZhbHVlPzogbnVtYmVyO1xyXG4gIHByZWZpeEljb24/OiBzdHJpbmc7XHJcbiAgc3VmaXhJY29uPzogc3RyaW5nO1xyXG4gIG1pbj86IG51bWJlcjtcclxuICBtYXg/OiBudW1iZXI7XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBTZWxlY3QgZXh0ZW5kcyBRdWVzdGlvbkJhc2Uge1xyXG4gIHR5cGU6ICdTZWxlY3QnO1xyXG4gIHByZWZpeEljb24/OiBzdHJpbmc7XHJcbiAgc3VmaXhJY29uPzogc3RyaW5nO1xyXG4gIGRhdGFUeXBlPzogc3RyaW5nO1xyXG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcclxuICBtdWx0aXBsZT86IGJvb2xlYW47XHJcbn1cclxuZXhwb3J0IGludGVyZmFjZSBDaG9pY2UgZXh0ZW5kcyBRdWVzdGlvbkJhc2Uge1xyXG4gIHR5cGU6ICdDaG9pY2UnO1xyXG4gIG9wdGlvbnM6IHsgW25hbWU6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gIGRlZmF1bHRWYWx1ZT86IHN0cmluZztcclxufVxyXG4iLCI8bWF0LXRvb2xiYXI+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInNhdmUoKVwiIFtkaXNhYmxlZF09XCIhZm9ybS5kaXJ0eSB8fCBsb2FkaW5nIHx8IHNhdmluZ1wiIFtiaXpkb2NUb29sdGlwXT1cIidTYXZlJ3x0cmFuc2xhdGVcIj48bWF0LWljb24+c2F2ZTwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInVuZG8oKVwiIFtiaXpkb2NUb29sdGlwXT1cIidVbmRvJyB8IHRyYW5zbGF0ZVwiIFtkaXNhYmxlZF09XCJoaXN0b3J5SW5kZXggPT09IC0xXCI+PG1hdC1pY29uPnVuZG88L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJyZWRvKClcIiBbYml6ZG9jVG9vbHRpcF09XCInUmVkbycgfCB0cmFuc2xhdGVcIiBbZGlzYWJsZWRdPVwiaGlzdG9yeUluZGV4ID09PSBoaXN0b3J5Lmxlbmd0aCAtIDFcIj48bWF0LWljb24+cmVkbzwvbWF0LWljb24+PC9idXR0b24+XHJcbiAgPHNwYW4gY2xhc3M9XCJkaXZpZGVyXCI+PC9zcGFuPlxyXG4gIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJzZXR0aW5ncyA9ICFzZXR0aW5nc1wiIFtiaXpkb2NUb29sdGlwXT1cIidTZXR0aW5ncyd8dHJhbnNsYXRlXCIgdHlwZT1cImJ1dHRvblwiPjxtYXQtaWNvbj5zZXR0aW5nczwvbWF0LWljb24+PC9idXR0b24+XHJcbjwvbWF0LXRvb2xiYXI+XHJcbjxmb3JtIGF1dG9jb21wbGV0ZT1cIm9mZlwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiICpuZ0lmPVwibW9kZWxcIj5cclxuICA8ZGl2IGNsYXNzPVwiY29sdW1uXCIgKm5nSWY9XCJzZXR0aW5nc1wiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICA8bWF0LWxhYmVsPnt7J1ZhbHVlJ3x0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICA8Yml6ZG9jLWFjZS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ2YWx1ZVwiPjwvYml6ZG9jLWFjZS1pbnB1dD5cclxuICAgICAgPG1hdC1oaW50PiB7eyAnRXhwcmVzc2lvbid8dHJhbnNsYXRlIH19PC9tYXQtaGludD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3snU3ViamVjdCd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgPGJpemRvYy1hY2UtaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwic3ViamVjdFwiPjwvYml6ZG9jLWFjZS1pbnB1dD5cclxuICAgICAgPG1hdC1oaW50PiB7eyAnRXhwcmVzc2lvbid8dHJhbnNsYXRlIH19PC9tYXQtaGludD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDxtYXQtbGFiZWw+e3snU3VtbWFyeSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgPGJpemRvYy1hY2UtaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwic3VtbWFyeVwiPjwvYml6ZG9jLWFjZS1pbnB1dD5cclxuICAgICAgPG1hdC1oaW50PiB7eyAnRXhwcmVzc2lvbid8dHJhbnNsYXRlIH19PC9tYXQtaGludD5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjZGtEcm9wTGlzdCAoY2RrRHJvcExpc3REcm9wcGVkKT1cImRyb3AoJGV2ZW50LCBxdWVzdGlvbnMpXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sdW1uXCIgKm5nRm9yPVwibGV0IHEgb2YgcXVlc3Rpb25zLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4XCIgY2RrRHJhZyBbYXR0ci5kYXRhLWluZGV4XT1cImlcIj5cclxuICAgICAgPG1hdC1pY29uIGNsYXNzPVwic2VjdGlvbi1kcmFnXCIgY2RrRHJhZ0hhbmRsZT5kcmFnX2luZGljYXRvcjwvbWF0LWljb24+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjb2x1bW5cIiBbZm9ybUdyb3VwXT1cInFcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPnt7J05hbWUnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcmVxdWlyZWQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiIC8+XHJcbiAgICAgICAgICA8bWF0LWVycm9yICpuZ0lmPVwicS5nZXQoJ25hbWUnKS5oYXNFcnJvcigncGF0dGVybicpXCIgW2lubmVySFRNTF09XCInUHJvZ3JhbVBhdHRlcm5FcnInfHRyYW5zbGF0ZVwiPjwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInEuZ2V0KCduYW1lJykuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiBbaW5uZXJIVE1MXT1cIidSZXF1aXJlZEVycid8dHJhbnNsYXRlOidGaWVsZCdcIj48L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+e3snTGFiZWwnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgcmVxdWlyZWQgZm9ybUNvbnRyb2xOYW1lPVwibGFiZWxcIiAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInEuZ2V0KCdsYWJlbCcpLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgW2lubmVySFRNTF09XCInUmVxdWlyZWRFcnInfHRyYW5zbGF0ZTonTGFiZWwnXCI+PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsPnt7J0Rlc2NyaXB0aW9uJ3x0cmFuc2xhdGV9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImRlc2NyaXB0aW9uXCIgY2RrVGV4dGFyZWFBdXRvc2l6ZT48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBmb3JtQ29udHJvbE5hbWU9XCJyZXF1aXJlZFwiPnt7J01hbmRhdG9yeSd8dHJhbnNsYXRlfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJxLmdldCgndHlwZScpLnZhbHVlXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInRGF0ZSdcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ1RleHQnXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7J1R5cGUnfHRyYW5zbGF0ZX19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwia2luZFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJTdHJpbmdcIj57eydUZXh0J3x0cmFuc2xhdGV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiUGhvbmVOdW1iZXJcIj57eydUZWwnfHRyYW5zbGF0ZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJFbWFpbEFkZHJlc3NcIj57eydFbWFpbCd8dHJhbnNsYXRlfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIkFkZHJlc3NcIj57eydBZGRyZXNzJ3x0cmFuc2xhdGV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiVXJsXCI+e3snVXJsJ3x0cmFuc2xhdGV9fTwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidOdW1iZXInXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidDaG9pY2UnXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiJ1NlbGVjdCdcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD57eydEYXRhVHlwZSd8dHJhbnNsYXRlfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZGF0YVR5cGVcIiByZXF1aXJlZD5cclxuICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgdCBvZiBkYXRhdHlwZXNcIiBbdmFsdWVdPVwidC5uYW1lXCI+e3t0LnRpdGxlfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgIDwvbWF0LXNlbGVjdD5cclxuICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdJZj1cInEuZ2V0KCdkYXRhVHlwZScpLmhhc0Vycm9yKCdyZXF1aXJlZCcpXCIgW2lubmVySFRNTF09XCInUmVxdWlyZWRFcnInfHRyYW5zbGF0ZTonRGF0YVR5cGUnXCI+PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYWN0aW9uc1wiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIChjbGljayk9XCJyZW1vdmUocSlcIiBbYml6ZG9jVG9vbHRpcF09XCInRGlzY2FyZCd8dHJhbnNsYXRlXCIgdHlwZT1cImJ1dHRvblwiPjxtYXQtaWNvbj5kZWxldGU8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPCEtLTxkaXYgKmNka0RyYWdQbGFjZWhvbGRlciBjbGFzcz1cImRyYWctcGxhY2Vob2xkZXJcIj48L2Rpdj4tLT5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJjb2x1bW5cIj5cclxuICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJxdWVzdGlvblR5cGVNZW51XCIgW2JpemRvY1Rvb2x0aXBdPVwiJ0FkZCd8dHJhbnNsYXRlXCIgdHlwZT1cImJ1dHRvblwiPjxtYXQtaWNvbj5hZGQ8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgPG1hdC1tZW51ICNxdWVzdGlvblR5cGVNZW51PlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFkZCgnVGV4dCcsICRldmVudClcIj57eydUZXh0J3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFkZCgnSFRNTCcsICRldmVudClcIj57eydIVE1MJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFkZCgnTnVtYmVyJywgJGV2ZW50KVwiPnt7J051bWVyaWMnfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYWRkKCdEYXRlJywgJGV2ZW50KVwiPnt7J0RhdGUnfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiYWRkKCdTZWxlY3QnLCAkZXZlbnQpXCI+e3snU2VsZWN0J3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFkZCgnQ2hvaWNlJywgJGV2ZW50KVwiPnt7J0Nob2ljZSd8dHJhbnNsYXRlfX08L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJhZGQoJ1llc05vJywgJGV2ZW50KVwiPnt7J1llc05vJ3x0cmFuc2xhdGV9fTwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImFkZCgnQ2hlY2tib3gnLCAkZXZlbnQpXCI+e3snQ2hlY2tib3gnfHRyYW5zbGF0ZX19PC9idXR0b24+XHJcbiAgICA8L21hdC1tZW51PlxyXG4gIDwvZGl2PlxyXG48L2Zvcm0+XHJcbiJdfQ==
|
@@ -1,73 +0,0 @@
|
|
1
|
-
import { __decorate } from "tslib";
|
2
|
-
import { Component } from "@angular/core";
|
3
|
-
import { Validators } from "@angular/forms";
|
4
|
-
import { BizDoc } from "../../core/decorators";
|
5
|
-
import * as i0 from "@angular/core";
|
6
|
-
import * as i1 from "@angular/forms";
|
7
|
-
import * as i2 from "../form-ref";
|
8
|
-
import * as i3 from "@angular/common";
|
9
|
-
import * as i4 from "@angular/flex-layout/flex";
|
10
|
-
import * as i5 from "@syncfusion/ej2-angular-richtexteditor";
|
11
|
-
import * as i6 from "@angular/material/datepicker";
|
12
|
-
import * as i7 from "@angular/material/radio";
|
13
|
-
import * as i8 from "@angular/material/form-field";
|
14
|
-
import * as i9 from "@angular/material/checkbox";
|
15
|
-
import * as i10 from "@angular/cdk/text-field";
|
16
|
-
import * as i11 from "@angular/material/input";
|
17
|
-
import * as i12 from "../../core/controls/select.input";
|
18
|
-
import * as i13 from "../../core/controls/auto-complete.input";
|
19
|
-
import * as i14 from "../../core/controls/address.input";
|
20
|
-
import * as i15 from "../../core/pipes/calendar.pipe";
|
21
|
-
import * as i16 from "../../core/pipes/translate.pipe";
|
22
|
-
import * as i17 from "../../core/pipes/sanitize-html.pipe";
|
23
|
-
let SurveyFormComponent = class SurveyFormComponent {
|
24
|
-
constructor(_fb, ref) {
|
25
|
-
this._fb = _fb;
|
26
|
-
this.metadata = ref.options;
|
27
|
-
this.form = _fb.group({});
|
28
|
-
this.metadata.questions.forEach(q => {
|
29
|
-
const ctrl = _fb.control(null);
|
30
|
-
if (q.required)
|
31
|
-
ctrl.addValidators(Validators.required);
|
32
|
-
if (q.defaultValue !== undefined)
|
33
|
-
ctrl.setValue(q.defaultValue);
|
34
|
-
if (q.type === 'Text') {
|
35
|
-
if (q.pattern)
|
36
|
-
ctrl.addValidators(Validators.pattern(q.pattern));
|
37
|
-
if (q.minLength)
|
38
|
-
ctrl.addValidators(Validators.minLength(q.minLength));
|
39
|
-
if (q.maxLength)
|
40
|
-
ctrl.addValidators(Validators.minLength(q.maxLength));
|
41
|
-
}
|
42
|
-
else if (q.type === 'YesNo') {
|
43
|
-
if (q.defaultValue && q.required)
|
44
|
-
ctrl.addValidators(Validators.requiredTrue);
|
45
|
-
}
|
46
|
-
else if (q.type === 'Checkbox') {
|
47
|
-
if (q.required)
|
48
|
-
ctrl.addValidators(Validators.requiredTrue);
|
49
|
-
}
|
50
|
-
else if (q.type === 'Number') {
|
51
|
-
if (q.min)
|
52
|
-
ctrl.addValidators(Validators.max(q.max));
|
53
|
-
if (q.min)
|
54
|
-
ctrl.addValidators(Validators.max(q.max));
|
55
|
-
}
|
56
|
-
this.form.addControl(q.name, ctrl);
|
57
|
-
});
|
58
|
-
}
|
59
|
-
onBind(data, version) {
|
60
|
-
this.data = data;
|
61
|
-
}
|
62
|
-
};
|
63
|
-
SurveyFormComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SurveyFormComponent, deps: [{ token: i1.FormBuilder }, { token: i2.FormRef }], target: i0.ɵɵFactoryTarget.Component });
|
64
|
-
SurveyFormComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.0", type: SurveyFormComponent, selector: "ng-component", ngImport: i0, template: "<ng-container [ngSwitch]=\"mode\">\r\n <form [formGroup]=\"form\" autocomplete=\"off\" *ngSwitchCase=\"'edit'\">\r\n <section *ngFor=\"let q of metadata.questions\">\r\n <h2 class=\"mat-title\">{{q.label}}</h2>\r\n <p class=\"mat-body\" *ngIf=\"q.description\">{{q.description}}</p>\r\n <ng-container [ngSwitch]=\"q.type\">\r\n <mat-form-field *ngSwitchCase=\"'Select'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <bizdoc-select [placeholder]=\"q.placeholder\" [type]=\"q.dataType\" [formControlName]=\"q.name\" [required]=\"q.required\"></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Autocomplete'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <bizdoc-autocomplete [type]=\"q.dataType\" [formControlName]=\"q.name\" [required]=\"q.required\"></bizdoc-autocomplete>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Date'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <input matInput\r\n [placeholder]=\"q.placeholder\"\r\n [formControlName]=\"q.name\"\r\n [required]=\"q.required\"\r\n [min]=\"q.min\"\r\n [max]=\"q.max\"\r\n [matDatepicker]=\"picker\" />\r\n <mat-datepicker-toggle [for]=\"picker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Text'\" appearance=\"outline\">\r\n <textarea [placeholder]=\"q.placeholder\" matInput [formControlName]=\"q.name\" cdkTextareaAutosize\r\n [required]=\"q.required\" [minlength]=\"q.minLength\" [maxlength]=\"q.maxLength\"></textarea>\r\n </mat-form-field>\r\n <ejs-richtexteditor *ngSwitchCase=\"'Html'\"\r\n [placeholder]=\"q.placeholder\" [formControlName]=\"q.name\"\r\n [required]=\"q.required\" [minlength]=\"q.minLength\" [maxlength]=\"q.maxLength\"></ejs-richtexteditor>\r\n <mat-checkbox [formControlName]=\"q.name\" *ngSwitchCase=\"'Checkbox'\">{{q.label}}</mat-checkbox>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'Choice'\">\r\n <mat-radio-button [value]=\"o.key\" *ngFor=\"let o of q.options | keyvalue\">{{o.value}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field appearance=\"outline\" fxFlex *ngSwitchCase=\"'Number'\">\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"number\" />\r\n </mat-form-field>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'YesNo'\">\r\n <mat-radio-button [value]=\"true\">{{'Yes'|translate}}</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">{{'No'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field appearance=\"outline\" fxFlex *ngSwitchDefault>\r\n <ng-container [ngSwitch]=\"q.kind\">\r\n <bizdoc-address [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" *ngSwitchCase=\"'Address'\"></bizdoc-address>\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"tel\" *ngSwitchCase=\"'PhoneNumber'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"email\" *ngSwitchCase=\"'EmailAddress'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"url\" *ngSwitchCase=\"'Url'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"password\" *ngSwitchCase=\"'Password'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" *ngSwitchDefault />\r\n </ng-container>\r\n </mat-form-field>\r\n \r\n </ng-container>\r\n </section>\r\n </form>\r\n <div *ngSwitchDefault>\r\n <section *ngFor=\"let q of metadata.questions\">\r\n <h2 class=\"mat-title\">{{q.label}}</h2>\r\n <p class=\"mat-body\" *ngIf=\"q.description\">{{q.description}}</p>\r\n <ng-container [ngSwitch]=\"q.type\">\r\n <div *ngSwitchCase=\"'Select'\">\r\n <span>{{model[q.name] | dataType: q.dataType | async}}</span>\r\n </div>\r\n <div *ngSwitchCase=\"'Autocomplete'\">\r\n <span>{{model[q.name] | dataType: q.dataType | async}}</span>\r\n </div>\r\n <div *ngSwitchCase=\"'Date'\">\r\n <span>{{model[q.name] | amCalendar}}</span>\r\n </div>\r\n <p *ngSwitchCase=\"'Text'\" [innerHTML]=\"model[q.name]\"></p>\r\n <p *ngSwitchCase=\"'Html'\" [innerHTML]=\"model[q.name]|sanitizeHtml\"></p>\r\n <mat-checkbox [formControlName]=\"q.name\" *ngSwitchCase=\"'Checkbox'\">{{q.label}}</mat-checkbox>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'Choice'\" disabled>\r\n <mat-radio-button [value]=\"o.key\" *ngFor=\"let o of q.options | keyvalue\">{{o.value}}</mat-radio-button>\r\n </mat-radio-group>\r\n <div *ngSwitchCase=\"'Number'\">\r\n <span>{{model[q.name]|number}}</span>\r\n </div>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'YesNo'\" disabled>\r\n <mat-radio-button [value]=\"true\">{{'Yes'|translate}}</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">{{'No'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <div fxFlex *ngSwitchDefault>\r\n <ng-container [ngSwitch]=\"q.kind\">\r\n <a *ngSwitchCase=\"'PhoneNumber'\" [href]=\"'tel:'+model[q.name]\">{{model[q.name]}}</a>\r\n <a *ngSwitchCase=\"'EmailAddress'\" [href]=\"model[q.name]\">{{model[q.name]}}</a>\r\n <a *ngSwitchCase=\"'Url'\" [href]=\"model[q.name]\">\r\n {{model[q.name]}}\r\n </a>\r\n <span *ngSwitchCase=\"'Password'\">\r\n </span>\r\n <span *ngSwitchDefault>{{model[q.name]}}</span>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </section>\r\n </div>\r\n</ng-container>\r\n", styles: ["form{padding:8px}section{display:block}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i3.NgSwitchDefault, selector: "[ngSwitchDefault]" }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "component", type: i5.RichTextEditorComponent, selector: "ejs-richtexteditor", inputs: ["autoSaveOnIdle", "backgroundColor", "bulletFormatList", "cssClass", "editorMode", "enableAutoUrl", "enableHtmlEncode", "enableHtmlSanitizer", "enablePersistence", "enableResize", "enableRtl", "enableTabKey", "enableXhtml", "enabled", "enterKey", "fileManagerSettings", "floatingToolbarOffset", "fontColor", "fontFamily", "fontSize", "format", "formatter", "height", "htmlAttributes", "iframeSettings", "inlineMode", "insertImageSettings", "keyConfig", "locale", "maxLength", "numberFormatList", "pasteCleanupSettings", "placeholder", "quickToolbarSettings", "readonly", "saveInterval", "shiftEnterKey", "showCharCount", "tableSettings", "toolbarSettings", "undoRedoSteps", "undoRedoTimer", "value", "valueTemplate", "width"], outputs: ["actionBegin", "actionComplete", "afterImageDelete", "afterPasteCleanup", "beforeDialogClose", "beforeDialogOpen", "beforeImageDrop", "beforeImageUpload", "beforePasteCleanup", "beforeQuickToolbarOpen", "beforeSanitizeHtml", "blur", "change", "created", "destroyed", "dialogClose", "dialogOpen", "focus", "imageRemoving", "imageSelected", "imageUploadFailed", "imageUploadSuccess", "imageUploading", "quickToolbarClose", "quickToolbarOpen", "resizeStart", "resizeStop", "resizing", "toolbarClick", "toolbarStatusUpdate", "updatedToolbarStatus", "valueChange"] }, { kind: "component", type: i6.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i6.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i6.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "directive", type: i7.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i7.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i9.MatCheckbox, selector: "mat-checkbox", inputs: ["disableRipple", "color", "tabIndex"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i10.CdkTextareaAutosize, selector: "textarea[cdkTextareaAutosize]", inputs: ["cdkAutosizeMinRows", "cdkAutosizeMaxRows", "cdkTextareaAutosize", "placeholder"], exportAs: ["cdkTextareaAutosize"] }, { kind: "directive", type: i11.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"] }, { kind: "component", type: i12.TypeSelect, selector: "bizdoc-select", inputs: ["type", "scope", "multiple", "placeholder", "required", "disabled", "text", "value"], outputs: ["selectionChange", "textChange"] }, { kind: "component", type: i13.TypeAutocomplete, selector: "bizdoc-autocomplete", inputs: ["type", "placeholder", "text", "required", "disabled", "value", "minimumChars", "textFormControlName", "textFormControl"], outputs: ["textChange", "optionSelected"] }, { kind: "component", type: i14.AddressInput, selector: "bizdoc-address", inputs: ["debounce", "location", "country", "placeholder", "required", "disabled", "value"], outputs: ["optionSelected"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.DecimalPipe, name: "number" }, { kind: "pipe", type: i3.KeyValuePipe, name: "keyvalue" }, { kind: "pipe", type: i15.CalendarPipe, name: "amCalendar" }, { kind: "pipe", type: i16.TranslatePipe, name: "translate" }, { kind: "pipe", type: i17.SanitizeHtmlPipe, name: "sanitizeHtml" }] });
|
65
|
-
SurveyFormComponent = __decorate([
|
66
|
-
BizDoc({ selector: 'bizdoc-survey-form' })
|
67
|
-
], SurveyFormComponent);
|
68
|
-
export { SurveyFormComponent };
|
69
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.0", ngImport: i0, type: SurveyFormComponent, decorators: [{
|
70
|
-
type: Component,
|
71
|
-
args: [{ template: "<ng-container [ngSwitch]=\"mode\">\r\n <form [formGroup]=\"form\" autocomplete=\"off\" *ngSwitchCase=\"'edit'\">\r\n <section *ngFor=\"let q of metadata.questions\">\r\n <h2 class=\"mat-title\">{{q.label}}</h2>\r\n <p class=\"mat-body\" *ngIf=\"q.description\">{{q.description}}</p>\r\n <ng-container [ngSwitch]=\"q.type\">\r\n <mat-form-field *ngSwitchCase=\"'Select'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <bizdoc-select [placeholder]=\"q.placeholder\" [type]=\"q.dataType\" [formControlName]=\"q.name\" [required]=\"q.required\"></bizdoc-select>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Autocomplete'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <bizdoc-autocomplete [type]=\"q.dataType\" [formControlName]=\"q.name\" [required]=\"q.required\"></bizdoc-autocomplete>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Date'\" appearance=\"outline\">\r\n <mat-label>{{q.placeholder}}</mat-label>\r\n <input matInput\r\n [placeholder]=\"q.placeholder\"\r\n [formControlName]=\"q.name\"\r\n [required]=\"q.required\"\r\n [min]=\"q.min\"\r\n [max]=\"q.max\"\r\n [matDatepicker]=\"picker\" />\r\n <mat-datepicker-toggle [for]=\"picker\" matSuffix></mat-datepicker-toggle>\r\n <mat-datepicker #picker></mat-datepicker>\r\n </mat-form-field>\r\n <mat-form-field *ngSwitchCase=\"'Text'\" appearance=\"outline\">\r\n <textarea [placeholder]=\"q.placeholder\" matInput [formControlName]=\"q.name\" cdkTextareaAutosize\r\n [required]=\"q.required\" [minlength]=\"q.minLength\" [maxlength]=\"q.maxLength\"></textarea>\r\n </mat-form-field>\r\n <ejs-richtexteditor *ngSwitchCase=\"'Html'\"\r\n [placeholder]=\"q.placeholder\" [formControlName]=\"q.name\"\r\n [required]=\"q.required\" [minlength]=\"q.minLength\" [maxlength]=\"q.maxLength\"></ejs-richtexteditor>\r\n <mat-checkbox [formControlName]=\"q.name\" *ngSwitchCase=\"'Checkbox'\">{{q.label}}</mat-checkbox>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'Choice'\">\r\n <mat-radio-button [value]=\"o.key\" *ngFor=\"let o of q.options | keyvalue\">{{o.value}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field appearance=\"outline\" fxFlex *ngSwitchCase=\"'Number'\">\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"number\" />\r\n </mat-form-field>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'YesNo'\">\r\n <mat-radio-button [value]=\"true\">{{'Yes'|translate}}</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">{{'No'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <mat-form-field appearance=\"outline\" fxFlex *ngSwitchDefault>\r\n <ng-container [ngSwitch]=\"q.kind\">\r\n <bizdoc-address [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" *ngSwitchCase=\"'Address'\"></bizdoc-address>\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"tel\" *ngSwitchCase=\"'PhoneNumber'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"email\" *ngSwitchCase=\"'EmailAddress'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"url\" *ngSwitchCase=\"'Url'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" type=\"password\" *ngSwitchCase=\"'Password'\" />\r\n <input matInput [placeholder]=\"q.placeholder\" [required]=\"q.required\" [formControlName]=\"q.name\" *ngSwitchDefault />\r\n </ng-container>\r\n </mat-form-field>\r\n \r\n </ng-container>\r\n </section>\r\n </form>\r\n <div *ngSwitchDefault>\r\n <section *ngFor=\"let q of metadata.questions\">\r\n <h2 class=\"mat-title\">{{q.label}}</h2>\r\n <p class=\"mat-body\" *ngIf=\"q.description\">{{q.description}}</p>\r\n <ng-container [ngSwitch]=\"q.type\">\r\n <div *ngSwitchCase=\"'Select'\">\r\n <span>{{model[q.name] | dataType: q.dataType | async}}</span>\r\n </div>\r\n <div *ngSwitchCase=\"'Autocomplete'\">\r\n <span>{{model[q.name] | dataType: q.dataType | async}}</span>\r\n </div>\r\n <div *ngSwitchCase=\"'Date'\">\r\n <span>{{model[q.name] | amCalendar}}</span>\r\n </div>\r\n <p *ngSwitchCase=\"'Text'\" [innerHTML]=\"model[q.name]\"></p>\r\n <p *ngSwitchCase=\"'Html'\" [innerHTML]=\"model[q.name]|sanitizeHtml\"></p>\r\n <mat-checkbox [formControlName]=\"q.name\" *ngSwitchCase=\"'Checkbox'\">{{q.label}}</mat-checkbox>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'Choice'\" disabled>\r\n <mat-radio-button [value]=\"o.key\" *ngFor=\"let o of q.options | keyvalue\">{{o.value}}</mat-radio-button>\r\n </mat-radio-group>\r\n <div *ngSwitchCase=\"'Number'\">\r\n <span>{{model[q.name]|number}}</span>\r\n </div>\r\n <mat-radio-group [formControlName]=\"q.name\" *ngSwitchCase=\"'YesNo'\" disabled>\r\n <mat-radio-button [value]=\"true\">{{'Yes'|translate}}</mat-radio-button>\r\n <mat-radio-button [value]=\"false\">{{'No'|translate}}</mat-radio-button>\r\n </mat-radio-group>\r\n <div fxFlex *ngSwitchDefault>\r\n <ng-container [ngSwitch]=\"q.kind\">\r\n <a *ngSwitchCase=\"'PhoneNumber'\" [href]=\"'tel:'+model[q.name]\">{{model[q.name]}}</a>\r\n <a *ngSwitchCase=\"'EmailAddress'\" [href]=\"model[q.name]\">{{model[q.name]}}</a>\r\n <a *ngSwitchCase=\"'Url'\" [href]=\"model[q.name]\">\r\n {{model[q.name]}}\r\n </a>\r\n <span *ngSwitchCase=\"'Password'\">\r\n </span>\r\n <span *ngSwitchDefault>{{model[q.name]}}</span>\r\n </ng-container>\r\n </div>\r\n </ng-container>\r\n </section>\r\n </div>\r\n</ng-container>\r\n", styles: ["form{padding:8px}section{display:block}\n"] }]
|
72
|
-
}], ctorParameters: function () { return [{ type: i1.FormBuilder }, { type: i2.FormRef }]; } });
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VydmV5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS9zdXJ2ZXkvc3VydmV5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnJhcmllcy9jb3JlL3NyYy9saWIvY29tcG9zZS9zdXJ2ZXkvc3VydmV5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFDLE9BQU8sRUFBMEIsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHcEUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHVCQUF1QixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBU3hDLElBQU0sbUJBQW1CLEdBQXpCLE1BQU0sbUJBQW1CO0lBRzlCLFlBQW9CLEdBQWdCLEVBQ2xDLEdBQWlDO1FBRGYsUUFBRyxHQUFILEdBQUcsQ0FBYTtRQUVsQyxJQUFJLENBQUMsUUFBUSxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQ3JCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQyxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksQ0FBQyxDQUFDLFFBQVE7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsSUFBSyxDQUFZLENBQUMsWUFBWSxLQUFLLFNBQVM7Z0JBQzFDLElBQUksQ0FBQyxRQUFRLENBQUUsQ0FBWSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxNQUFNLEVBQUU7Z0JBQ3JCLElBQUssQ0FBVSxDQUFDLE9BQU87b0JBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBRSxDQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztnQkFDOUQsSUFBSyxDQUFVLENBQUMsU0FBUztvQkFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFFLENBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2dCQUNsRSxJQUFLLENBQVUsQ0FBQyxTQUFTO29CQUN2QixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUUsQ0FBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7YUFDbkU7aUJBQ0ksSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtnQkFDM0IsSUFBSSxDQUFDLENBQUMsWUFBWSxJQUFJLENBQUMsQ0FBQyxRQUFRO29CQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUMvQztpQkFDSSxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssVUFBVSxFQUFFO2dCQUM5QixJQUFJLENBQUMsQ0FBQyxRQUFRO29CQUNaLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDO2FBQy9DO2lCQUNJLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQzVCLElBQUssQ0FBWSxDQUFDLEdBQUc7b0JBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBRSxDQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztnQkFDeEQsSUFBSyxDQUFZLENBQUMsR0FBRztvQkFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFFLENBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQ3pEO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQTtRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFHRCxNQUFNLENBQUMsSUFBd0IsRUFBRSxPQUFhO1FBQzVDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0lBQ25CLENBQUM7O2dIQTNDVSxtQkFBbUI7b0dBQW5CLG1CQUFtQixvRENiaEMsMjRNQXFHQTtBRHhGYSxtQkFBbUI7SUFEL0IsTUFBTSxDQUFDLEVBQUUsUUFBUSxFQUFFLG9CQUFvQixFQUFFLENBQUM7R0FDOUIsbUJBQW1CLENBK0MvQjtTQS9DWSxtQkFBbUI7MkZBQW5CLG1CQUFtQjtrQkFML0IsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU3VydmV5TWV0YWRhdGEsIFRleHQsIE51bWJlciB9IGZyb20gXCIuLi8uLi9hZG1pbi9mb3JtL3N1cnZleS9zdXJ2ZXkuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IEZvcm1Db21wb25lbnQsIFZpZXdNb2RlIH0gZnJvbSBcIi4uLy4uL2NvcmUvYmFzZVwiO1xyXG5pbXBvcnQgeyBCaXpEb2MgfSBmcm9tIFwiLi4vLi4vY29yZS9kZWNvcmF0b3JzXCI7XHJcbmltcG9ydCB7IERvY3VtZW50TW9kZWwgfSBmcm9tIFwiLi4vLi4vY29yZS9tb2RlbHNcIjtcclxuaW1wb3J0IHsgRm9ybVJlZiB9IGZyb20gXCIuLi9mb3JtLXJlZlwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgdGVtcGxhdGVVcmw6ICdzdXJ2ZXkuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWydzdXJ2ZXkuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuQEJpekRvYyh7IHNlbGVjdG9yOiAnYml6ZG9jLXN1cnZleS1mb3JtJyB9KVxyXG5leHBvcnQgY2xhc3MgU3VydmV5Rm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIEZvcm1Db21wb25lbnQ8YW55PiB7XHJcbiAgbWV0YWRhdGE6IFN1cnZleU1ldGFkYXRhO1xyXG4gIGRhdGE6IERvY3VtZW50TW9kZWw8YW55PjtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9mYjogRm9ybUJ1aWxkZXIsXHJcbiAgICByZWY6IEZvcm1SZWY8YW55LCBTdXJ2ZXlNZXRhZGF0YT4pIHtcclxuICAgIHRoaXMubWV0YWRhdGEgPSByZWYub3B0aW9ucztcclxuICAgIHRoaXMuZm9ybSA9IF9mYi5ncm91cCh7XHJcbiAgICB9KTtcclxuICAgIHRoaXMubWV0YWRhdGEucXVlc3Rpb25zLmZvckVhY2gocSA9PiB7XHJcbiAgICAgIGNvbnN0IGN0cmwgPSBfZmIuY29udHJvbChudWxsKTtcclxuICAgICAgaWYgKHEucmVxdWlyZWQpXHJcbiAgICAgICAgY3RybC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICBpZiAoKHEgYXMgTnVtYmVyKS5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZClcclxuICAgICAgICBjdHJsLnNldFZhbHVlKChxIGFzIE51bWJlcikuZGVmYXVsdFZhbHVlKTtcclxuICAgICAgaWYgKHEudHlwZSA9PT0gJ1RleHQnKSB7XHJcbiAgICAgICAgaWYgKChxIGFzIFRleHQpLnBhdHRlcm4pXHJcbiAgICAgICAgICBjdHJsLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5wYXR0ZXJuKChxIGFzIFRleHQpLnBhdHRlcm4pKTtcclxuICAgICAgICBpZiAoKHEgYXMgVGV4dCkubWluTGVuZ3RoKVxyXG4gICAgICAgICAgY3RybC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMubWluTGVuZ3RoKChxIGFzIFRleHQpLm1pbkxlbmd0aCkpO1xyXG4gICAgICAgIGlmICgocSBhcyBUZXh0KS5tYXhMZW5ndGgpXHJcbiAgICAgICAgICBjdHJsLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5taW5MZW5ndGgoKHEgYXMgVGV4dCkubWF4TGVuZ3RoKSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAocS50eXBlID09PSAnWWVzTm8nKSB7XHJcbiAgICAgICAgaWYgKHEuZGVmYXVsdFZhbHVlICYmIHEucmVxdWlyZWQpXHJcbiAgICAgICAgICBjdHJsLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZFRydWUpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHEudHlwZSA9PT0gJ0NoZWNrYm94Jykge1xyXG4gICAgICAgIGlmIChxLnJlcXVpcmVkKVxyXG4gICAgICAgICAgY3RybC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWRUcnVlKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChxLnR5cGUgPT09ICdOdW1iZXInKSB7XHJcbiAgICAgICAgaWYgKChxIGFzIE51bWJlcikubWluKVxyXG4gICAgICAgICAgY3RybC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMubWF4KChxIGFzIE51bWJlcikubWF4KSk7XHJcbiAgICAgICAgaWYgKChxIGFzIE51bWJlcikubWluKVxyXG4gICAgICAgICAgY3RybC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMubWF4KChxIGFzIE51bWJlcikubWF4KSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5mb3JtLmFkZENvbnRyb2wocS5uYW1lLCBjdHJsKVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHJlYWRvbmx5IGZvcm06IEZvcm1Hcm91cDxhbnk+O1xyXG4gIG1vZGU6IFZpZXdNb2RlO1xyXG4gIG9uQmluZChkYXRhOiBEb2N1bWVudE1vZGVsPGFueT4sIHZlcnNpb24/OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XHJcbiAgfVxyXG4gIC8vICBvblNhdmUoKSB7XHJcbiAgLy8gICAgcmV0dXJuIHRydWU7XHJcbiAgLy8gIH1cclxufVxyXG4iLCI8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJtb2RlXCI+XHJcbiAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmb3JtXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKm5nU3dpdGNoQ2FzZT1cIidlZGl0J1wiPlxyXG4gICAgPHNlY3Rpb24gKm5nRm9yPVwibGV0IHEgb2YgbWV0YWRhdGEucXVlc3Rpb25zXCI+XHJcbiAgICAgIDxoMiBjbGFzcz1cIm1hdC10aXRsZVwiPnt7cS5sYWJlbH19PC9oMj5cclxuICAgICAgPHAgY2xhc3M9XCJtYXQtYm9keVwiICpuZ0lmPVwicS5kZXNjcmlwdGlvblwiPnt7cS5kZXNjcmlwdGlvbn19PC9wPlxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJxLnR5cGVcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidTZWxlY3QnXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+e3txLnBsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxiaXpkb2Mtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCJxLnBsYWNlaG9sZGVyXCIgW3R5cGVdPVwicS5kYXRhVHlwZVwiIFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCIgW3JlcXVpcmVkXT1cInEucmVxdWlyZWRcIj48L2JpemRvYy1zZWxlY3Q+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIidBdXRvY29tcGxldGUnXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgIDxtYXQtbGFiZWw+e3txLnBsYWNlaG9sZGVyfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxiaXpkb2MtYXV0b2NvbXBsZXRlIFt0eXBlXT1cInEuZGF0YVR5cGVcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInEubmFtZVwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCI+PC9iaXpkb2MtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInRGF0ZSdcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbD57e3EucGxhY2Vob2xkZXJ9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0IG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInEucGxhY2Vob2xkZXJcIlxyXG4gICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCJcclxuICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicS5yZXF1aXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgW21pbl09XCJxLm1pblwiXHJcbiAgICAgICAgICAgICAgICAgW21heF09XCJxLm1heFwiXHJcbiAgICAgICAgICAgICAgICAgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgLz5cclxuICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgW2Zvcl09XCJwaWNrZXJcIiBtYXRTdWZmaXg+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCInVGV4dCdcIiBhcHBlYXJhbmNlPVwib3V0bGluZVwiPlxyXG4gICAgICAgICAgPHRleHRhcmVhIFtwbGFjZWhvbGRlcl09XCJxLnBsYWNlaG9sZGVyXCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiBjZGtUZXh0YXJlYUF1dG9zaXplXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInEucmVxdWlyZWRcIiBbbWlubGVuZ3RoXT1cInEubWluTGVuZ3RoXCIgW21heGxlbmd0aF09XCJxLm1heExlbmd0aFwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8ZWpzLXJpY2h0ZXh0ZWRpdG9yICpuZ1N3aXRjaENhc2U9XCInSHRtbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInEucGxhY2Vob2xkZXJcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInEubmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwicS5yZXF1aXJlZFwiIFttaW5sZW5ndGhdPVwicS5taW5MZW5ndGhcIiBbbWF4bGVuZ3RoXT1cInEubWF4TGVuZ3RoXCI+PC9lanMtcmljaHRleHRlZGl0b3I+XHJcbiAgICAgICAgPG1hdC1jaGVja2JveCBbZm9ybUNvbnRyb2xOYW1lXT1cInEubmFtZVwiICpuZ1N3aXRjaENhc2U9XCInQ2hlY2tib3gnXCI+e3txLmxhYmVsfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidDaG9pY2UnXCI+XHJcbiAgICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiBbdmFsdWVdPVwiby5rZXlcIiAqbmdGb3I9XCJsZXQgbyBvZiBxLm9wdGlvbnMgfCBrZXl2YWx1ZVwiPnt7by52YWx1ZX19PC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGZ4RmxleCAqbmdTd2l0Y2hDYXNlPVwiJ051bWJlcidcIj5cclxuICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicS5wbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiB0eXBlPVwibnVtYmVyXCIgLz5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ1llc05vJ1wiPlxyXG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gW3ZhbHVlXT1cInRydWVcIj57eydZZXMnfHRyYW5zbGF0ZX19PC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgICAgPG1hdC1yYWRpby1idXR0b24gW3ZhbHVlXT1cImZhbHNlXCI+e3snTm8nfHRyYW5zbGF0ZX19PC9tYXQtcmFkaW8tYnV0dG9uPlxyXG4gICAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBhcHBlYXJhbmNlPVwib3V0bGluZVwiIGZ4RmxleCAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicS5raW5kXCI+XHJcbiAgICAgICAgICAgIDxiaXpkb2MtYWRkcmVzcyBbcGxhY2Vob2xkZXJdPVwicS5wbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ0FkZHJlc3MnXCI+PC9iaXpkb2MtYWRkcmVzcz5cclxuICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJxLnBsYWNlaG9sZGVyXCIgW3JlcXVpcmVkXT1cInEucmVxdWlyZWRcIiBbZm9ybUNvbnRyb2xOYW1lXT1cInEubmFtZVwiIHR5cGU9XCJ0ZWxcIiAqbmdTd2l0Y2hDYXNlPVwiJ1Bob25lTnVtYmVyJ1wiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicS5wbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiB0eXBlPVwiZW1haWxcIiAqbmdTd2l0Y2hDYXNlPVwiJ0VtYWlsQWRkcmVzcydcIiAvPlxyXG4gICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cInEucGxhY2Vob2xkZXJcIiBbcmVxdWlyZWRdPVwicS5yZXF1aXJlZFwiIFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCIgdHlwZT1cInVybFwiICpuZ1N3aXRjaENhc2U9XCInVXJsJ1wiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicS5wbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiB0eXBlPVwicGFzc3dvcmRcIiAqbmdTd2l0Y2hDYXNlPVwiJ1Bhc3N3b3JkJ1wiIC8+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwicS5wbGFjZWhvbGRlclwiIFtyZXF1aXJlZF09XCJxLnJlcXVpcmVkXCIgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiAqbmdTd2l0Y2hEZWZhdWx0IC8+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICZuYnNwO1xyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvc2VjdGlvbj5cclxuICA8L2Zvcm0+XHJcbiAgPGRpdiAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgPHNlY3Rpb24gKm5nRm9yPVwibGV0IHEgb2YgbWV0YWRhdGEucXVlc3Rpb25zXCI+XHJcbiAgICAgIDxoMiBjbGFzcz1cIm1hdC10aXRsZVwiPnt7cS5sYWJlbH19PC9oMj5cclxuICAgICAgPHAgY2xhc3M9XCJtYXQtYm9keVwiICpuZ0lmPVwicS5kZXNjcmlwdGlvblwiPnt7cS5kZXNjcmlwdGlvbn19PC9wPlxyXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJxLnR5cGVcIj5cclxuICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCInU2VsZWN0J1wiPlxyXG4gICAgICAgICAgPHNwYW4+e3ttb2RlbFtxLm5hbWVdIHwgZGF0YVR5cGU6IHEuZGF0YVR5cGUgfCBhc3luY319PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIidBdXRvY29tcGxldGUnXCI+XHJcbiAgICAgICAgICA8c3Bhbj57e21vZGVsW3EubmFtZV0gfCBkYXRhVHlwZTogcS5kYXRhVHlwZSB8IGFzeW5jfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ0RhdGUnXCI+XHJcbiAgICAgICAgICA8c3Bhbj57e21vZGVsW3EubmFtZV0gfCBhbUNhbGVuZGFyfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPHAgKm5nU3dpdGNoQ2FzZT1cIidUZXh0J1wiIFtpbm5lckhUTUxdPVwibW9kZWxbcS5uYW1lXVwiPjwvcD5cclxuICAgICAgICA8cCAqbmdTd2l0Y2hDYXNlPVwiJ0h0bWwnXCIgW2lubmVySFRNTF09XCJtb2RlbFtxLm5hbWVdfHNhbml0aXplSHRtbFwiPjwvcD5cclxuICAgICAgICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidDaGVja2JveCdcIj57e3EubGFiZWx9fTwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgW2Zvcm1Db250cm9sTmFtZV09XCJxLm5hbWVcIiAqbmdTd2l0Y2hDYXNlPVwiJ0Nob2ljZSdcIiBkaXNhYmxlZD5cclxuICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJvLmtleVwiICpuZ0Zvcj1cImxldCBvIG9mIHEub3B0aW9ucyB8IGtleXZhbHVlXCI+e3tvLnZhbHVlfX08L21hdC1yYWRpby1idXR0b24+XHJcbiAgICAgICAgPC9tYXQtcmFkaW8tZ3JvdXA+XHJcbiAgICAgICAgPGRpdiAqbmdTd2l0Y2hDYXNlPVwiJ051bWJlcidcIj5cclxuICAgICAgICAgIDxzcGFuPnt7bW9kZWxbcS5uYW1lXXxudW1iZXJ9fTwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LXJhZGlvLWdyb3VwIFtmb3JtQ29udHJvbE5hbWVdPVwicS5uYW1lXCIgKm5nU3dpdGNoQ2FzZT1cIidZZXNObydcIiBkaXNhYmxlZD5cclxuICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJ0cnVlXCI+e3snWWVzJ3x0cmFuc2xhdGV9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uIFt2YWx1ZV09XCJmYWxzZVwiPnt7J05vJ3x0cmFuc2xhdGV9fTwvbWF0LXJhZGlvLWJ1dHRvbj5cclxuICAgICAgICA8L21hdC1yYWRpby1ncm91cD5cclxuICAgICAgICA8ZGl2IGZ4RmxleCAqbmdTd2l0Y2hEZWZhdWx0PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwicS5raW5kXCI+XHJcbiAgICAgICAgICAgIDxhICpuZ1N3aXRjaENhc2U9XCInUGhvbmVOdW1iZXInXCIgW2hyZWZdPVwiJ3RlbDonK21vZGVsW3EubmFtZV1cIj57e21vZGVsW3EubmFtZV19fTwvYT5cclxuICAgICAgICAgICAgPGEgKm5nU3dpdGNoQ2FzZT1cIidFbWFpbEFkZHJlc3MnXCIgW2hyZWZdPVwibW9kZWxbcS5uYW1lXVwiPnt7bW9kZWxbcS5uYW1lXX19PC9hPlxyXG4gICAgICAgICAgICA8YSAqbmdTd2l0Y2hDYXNlPVwiJ1VybCdcIiBbaHJlZl09XCJtb2RlbFtxLm5hbWVdXCI+XHJcbiAgICAgICAgICAgICAge3ttb2RlbFtxLm5hbWVdfX1cclxuICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdTd2l0Y2hDYXNlPVwiJ1Bhc3N3b3JkJ1wiPlxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ1N3aXRjaERlZmF1bHQ+e3ttb2RlbFtxLm5hbWVdfX08L3NwYW4+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L3NlY3Rpb24+XHJcbiAgPC9kaXY+XHJcbjwvbmctY29udGFpbmVyPlxyXG4iXX0=
|
@@ -1,18 +0,0 @@
|
|
1
|
-
import { ElementRef, OnInit } from "@angular/core";
|
2
|
-
import { FormBuilder } from "@angular/forms";
|
3
|
-
import { PanesRouter } from "../../../core/slots/router.service";
|
4
|
-
import { SurveyMetadata } from "../../form/survey/survey.component";
|
5
|
-
import { DesignerRef } from "../declarations";
|
6
|
-
import { DesignerElementComponentBase } from "../designer.base";
|
7
|
-
import * as i0 from "@angular/core";
|
8
|
-
export declare class SurveyFormDesignComponent extends DesignerElementComponentBase<SurveyMetadata> implements OnInit {
|
9
|
-
private _router;
|
10
|
-
readonly form: import("@angular/forms").FormGroup<{
|
11
|
-
questions: import("@angular/forms").FormControl<any>;
|
12
|
-
}>;
|
13
|
-
constructor(fb: FormBuilder, element: ElementRef<any>, ref: DesignerRef, _router: PanesRouter);
|
14
|
-
ngOnInit(): void;
|
15
|
-
design(): void;
|
16
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<SurveyFormDesignComponent, never>;
|
17
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<SurveyFormDesignComponent, "ng-component", never, {}, {}, never, never, false>;
|
18
|
-
}
|