@glowgreen/gg-questionnaire-v2 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/glowgreen-gg-questionnaire-v2.umd.js +2102 -0
- package/bundles/glowgreen-gg-questionnaire-v2.umd.js.map +1 -0
- package/bundles/glowgreen-gg-questionnaire-v2.umd.min.js +2 -0
- package/bundles/glowgreen-gg-questionnaire-v2.umd.min.js.map +1 -0
- package/esm2015/glowgreen-gg-questionnaire-v2.js +11 -0
- package/esm2015/lib/enums/condition-relationship.enum.js +11 -0
- package/esm2015/lib/enums/condition-type.enum.js +15 -0
- package/esm2015/lib/enums/input-type.enum.js +20 -0
- package/esm2015/lib/enums/question-type.enum.js +17 -0
- package/esm2015/lib/enums/repeater-question-type.enum.js +11 -0
- package/esm2015/lib/enums/validation-type.enum.js +15 -0
- package/esm2015/lib/gg-questionnaire-v2.module.js +41 -0
- package/esm2015/lib/interfaces/attachment.js +15 -0
- package/esm2015/lib/interfaces/checklist-item.js +15 -0
- package/esm2015/lib/interfaces/condition-group.js +15 -0
- package/esm2015/lib/interfaces/condition.js +17 -0
- package/esm2015/lib/interfaces/question.js +41 -0
- package/esm2015/lib/interfaces/questionnaire-options.js +21 -0
- package/esm2015/lib/interfaces/questionnaire.js +15 -0
- package/esm2015/lib/interfaces/repeater-question.js +27 -0
- package/esm2015/lib/interfaces/section.js +19 -0
- package/esm2015/lib/interfaces/select-option.js +15 -0
- package/esm2015/lib/interfaces/validator.js +15 -0
- package/esm2015/lib/services/filter.service.js +258 -0
- package/esm2015/lib/services/form-constructor.service.js +245 -0
- package/esm2015/lib/services/questionnaire.service.js +644 -0
- package/esm2015/public_api.js +16 -0
- package/esm5/glowgreen-gg-questionnaire-v2.js +11 -0
- package/esm5/lib/enums/condition-relationship.enum.js +11 -0
- package/esm5/lib/enums/condition-type.enum.js +15 -0
- package/esm5/lib/enums/input-type.enum.js +20 -0
- package/esm5/lib/enums/question-type.enum.js +17 -0
- package/esm5/lib/enums/repeater-question-type.enum.js +11 -0
- package/esm5/lib/enums/validation-type.enum.js +15 -0
- package/esm5/lib/gg-questionnaire-v2.module.js +49 -0
- package/esm5/lib/interfaces/attachment.js +15 -0
- package/esm5/lib/interfaces/checklist-item.js +15 -0
- package/esm5/lib/interfaces/condition-group.js +15 -0
- package/esm5/lib/interfaces/condition.js +17 -0
- package/esm5/lib/interfaces/question.js +41 -0
- package/esm5/lib/interfaces/questionnaire-options.js +21 -0
- package/esm5/lib/interfaces/questionnaire.js +15 -0
- package/esm5/lib/interfaces/repeater-question.js +27 -0
- package/esm5/lib/interfaces/section.js +19 -0
- package/esm5/lib/interfaces/select-option.js +15 -0
- package/esm5/lib/interfaces/validator.js +15 -0
- package/esm5/lib/services/filter.service.js +445 -0
- package/esm5/lib/services/form-constructor.service.js +460 -0
- package/esm5/lib/services/questionnaire.service.js +943 -0
- package/esm5/public_api.js +16 -0
- package/fesm2015/glowgreen-gg-questionnaire-v2.js +1194 -0
- package/fesm2015/glowgreen-gg-questionnaire-v2.js.map +1 -0
- package/fesm5/glowgreen-gg-questionnaire-v2.js +1897 -0
- package/fesm5/glowgreen-gg-questionnaire-v2.js.map +1 -0
- package/glowgreen-gg-questionnaire-v2.d.ts +6 -0
- package/glowgreen-gg-questionnaire-v2.metadata.json +1 -0
- package/lib/enums/condition-relationship.enum.d.ts +4 -0
- package/lib/enums/condition-type.enum.d.ts +8 -0
- package/lib/enums/input-type.enum.d.ts +13 -0
- package/lib/enums/question-type.enum.d.ts +10 -0
- package/lib/enums/repeater-question-type.enum.d.ts +4 -0
- package/lib/enums/validation-type.enum.d.ts +8 -0
- package/lib/gg-questionnaire-v2.module.d.ts +5 -0
- package/lib/interfaces/attachment.d.ts +4 -0
- package/lib/interfaces/checklist-item.d.ts +4 -0
- package/lib/interfaces/condition-group.d.ts +6 -0
- package/lib/interfaces/condition.d.ts +6 -0
- package/lib/interfaces/question.d.ts +24 -0
- package/lib/interfaces/questionnaire-options.d.ts +7 -0
- package/lib/interfaces/questionnaire.d.ts +5 -0
- package/lib/interfaces/repeater-question.d.ts +15 -0
- package/lib/interfaces/section.d.ts +8 -0
- package/lib/interfaces/select-option.d.ts +4 -0
- package/lib/interfaces/validator.d.ts +5 -0
- package/lib/services/filter.service.d.ts +62 -0
- package/lib/services/form-constructor.service.d.ts +78 -0
- package/lib/services/questionnaire.service.d.ts +163 -0
- package/package.json +21 -0
- package/public_api.d.ts +17 -0
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import * as tslib_1 from "tslib";
|
|
6
|
+
import { Injectable } from '@angular/core';
|
|
7
|
+
import { FormBuilder, Validators } from '@angular/forms';
|
|
8
|
+
import { QuestionType } from '../enums/question-type.enum';
|
|
9
|
+
import { FilterService } from './filter.service';
|
|
10
|
+
import { ValidationType } from '../enums/validation-type.enum';
|
|
11
|
+
import * as i0 from "@angular/core";
|
|
12
|
+
import * as i1 from "@angular/forms";
|
|
13
|
+
import * as i2 from "./filter.service";
|
|
14
|
+
var FormConstructorService = /** @class */ (function () {
|
|
15
|
+
function FormConstructorService(fb, filterService) {
|
|
16
|
+
this.fb = fb;
|
|
17
|
+
this.filterService = filterService;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Constructs a form group based on the questionnaire data.
|
|
21
|
+
* This form group has been filtered down based on the conditions of the sections and questions.
|
|
22
|
+
* @param questionnaire The questionnaire data to build the form group on.
|
|
23
|
+
* @returns A filted form group.
|
|
24
|
+
* @author Will Poulson
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Constructs a form group based on the questionnaire data.
|
|
28
|
+
* This form group has been filtered down based on the conditions of the sections and questions.
|
|
29
|
+
* @author Will Poulson
|
|
30
|
+
* @param {?} questionnaire The questionnaire data to build the form group on.
|
|
31
|
+
* @param {?} currentQuestionnaireForm
|
|
32
|
+
* @param {?=} skipFilter
|
|
33
|
+
* @return {?} A filted form group.
|
|
34
|
+
*/
|
|
35
|
+
FormConstructorService.prototype.generateFormsForQuestionnaire = /**
|
|
36
|
+
* Constructs a form group based on the questionnaire data.
|
|
37
|
+
* This form group has been filtered down based on the conditions of the sections and questions.
|
|
38
|
+
* @author Will Poulson
|
|
39
|
+
* @param {?} questionnaire The questionnaire data to build the form group on.
|
|
40
|
+
* @param {?} currentQuestionnaireForm
|
|
41
|
+
* @param {?=} skipFilter
|
|
42
|
+
* @return {?} A filted form group.
|
|
43
|
+
*/
|
|
44
|
+
function (questionnaire, currentQuestionnaireForm, skipFilter) {
|
|
45
|
+
/** @type {?} */
|
|
46
|
+
var sections = skipFilter ?
|
|
47
|
+
questionnaire.sections :
|
|
48
|
+
this.filterService.filterSections(questionnaire.sections, currentQuestionnaireForm);
|
|
49
|
+
/** @type {?} */
|
|
50
|
+
var questionnaireForms = this.generateFormsForSections(sections, currentQuestionnaireForm);
|
|
51
|
+
return { sections: sections, forms: questionnaireForms };
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* @private
|
|
55
|
+
* @param {?} sections
|
|
56
|
+
* @param {?} currentQuestionnaireForm
|
|
57
|
+
* @return {?}
|
|
58
|
+
*/
|
|
59
|
+
FormConstructorService.prototype.generateFormsForSections = /**
|
|
60
|
+
* @private
|
|
61
|
+
* @param {?} sections
|
|
62
|
+
* @param {?} currentQuestionnaireForm
|
|
63
|
+
* @return {?}
|
|
64
|
+
*/
|
|
65
|
+
function (sections, currentQuestionnaireForm) {
|
|
66
|
+
var e_1, _a;
|
|
67
|
+
/** @type {?} */
|
|
68
|
+
var questionnaireForms = this.fb.group({});
|
|
69
|
+
try {
|
|
70
|
+
for (var sections_1 = tslib_1.__values(sections), sections_1_1 = sections_1.next(); !sections_1_1.done; sections_1_1 = sections_1.next()) {
|
|
71
|
+
var section = sections_1_1.value;
|
|
72
|
+
/** @type {?} */
|
|
73
|
+
var sectionForms = this.generateFormsForSection(section, currentQuestionnaireForm);
|
|
74
|
+
questionnaireForms.addControl(section.name, sectionForms);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
78
|
+
finally {
|
|
79
|
+
try {
|
|
80
|
+
if (sections_1_1 && !sections_1_1.done && (_a = sections_1.return)) _a.call(sections_1);
|
|
81
|
+
}
|
|
82
|
+
finally { if (e_1) throw e_1.error; }
|
|
83
|
+
}
|
|
84
|
+
return questionnaireForms;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Constructs a form group based on the section data.
|
|
88
|
+
* This form group has been filtered down based on the conditions of the questions.
|
|
89
|
+
* @param section The section data to build the form group on.
|
|
90
|
+
* @returns A filtered form group.
|
|
91
|
+
* @author Will Poulson
|
|
92
|
+
*/
|
|
93
|
+
/**
|
|
94
|
+
* Constructs a form group based on the section data.
|
|
95
|
+
* This form group has been filtered down based on the conditions of the questions.
|
|
96
|
+
* @author Will Poulson
|
|
97
|
+
* @private
|
|
98
|
+
* @param {?} section The section data to build the form group on.
|
|
99
|
+
* @param {?} currentQuestionnaireForm
|
|
100
|
+
* @return {?} A filtered form group.
|
|
101
|
+
*/
|
|
102
|
+
FormConstructorService.prototype.generateFormsForSection = /**
|
|
103
|
+
* Constructs a form group based on the section data.
|
|
104
|
+
* This form group has been filtered down based on the conditions of the questions.
|
|
105
|
+
* @author Will Poulson
|
|
106
|
+
* @private
|
|
107
|
+
* @param {?} section The section data to build the form group on.
|
|
108
|
+
* @param {?} currentQuestionnaireForm
|
|
109
|
+
* @return {?} A filtered form group.
|
|
110
|
+
*/
|
|
111
|
+
function (section, currentQuestionnaireForm) {
|
|
112
|
+
var e_2, _a;
|
|
113
|
+
/** @type {?} */
|
|
114
|
+
var sectionForms = this.fb.group({});
|
|
115
|
+
try {
|
|
116
|
+
for (var _b = tslib_1.__values(section.questions), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
117
|
+
var question = _c.value;
|
|
118
|
+
/** @type {?} */
|
|
119
|
+
var questionControl = this.generateControlForQuestion(question, section, currentQuestionnaireForm);
|
|
120
|
+
sectionForms.addControl(question.name, questionControl);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
124
|
+
finally {
|
|
125
|
+
try {
|
|
126
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
127
|
+
}
|
|
128
|
+
finally { if (e_2) throw e_2.error; }
|
|
129
|
+
}
|
|
130
|
+
return sectionForms;
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* Constructs an astract form control based on the question data.
|
|
134
|
+
* @param question The question data to build the abstract control on.
|
|
135
|
+
* @returns An abstract control.
|
|
136
|
+
* @author Will Poulson
|
|
137
|
+
*/
|
|
138
|
+
/**
|
|
139
|
+
* Constructs an astract form control based on the question data.
|
|
140
|
+
* @author Will Poulson
|
|
141
|
+
* @private
|
|
142
|
+
* @param {?} question The question data to build the abstract control on.
|
|
143
|
+
* @param {?} section
|
|
144
|
+
* @param {?} currentQuestionnaireForm
|
|
145
|
+
* @return {?} An abstract control.
|
|
146
|
+
*/
|
|
147
|
+
FormConstructorService.prototype.generateControlForQuestion = /**
|
|
148
|
+
* Constructs an astract form control based on the question data.
|
|
149
|
+
* @author Will Poulson
|
|
150
|
+
* @private
|
|
151
|
+
* @param {?} question The question data to build the abstract control on.
|
|
152
|
+
* @param {?} section
|
|
153
|
+
* @param {?} currentQuestionnaireForm
|
|
154
|
+
* @return {?} An abstract control.
|
|
155
|
+
*/
|
|
156
|
+
function (question, section, currentQuestionnaireForm) {
|
|
157
|
+
/** @type {?} */
|
|
158
|
+
var convertedValidators = this.convertValidators(question.validators);
|
|
159
|
+
switch (question.type) {
|
|
160
|
+
case QuestionType.Repeater:
|
|
161
|
+
/** @type {?} */
|
|
162
|
+
var currentArray = currentQuestionnaireForm ? ((/** @type {?} */ (currentQuestionnaireForm.get([section.name, question.name])))) : false;
|
|
163
|
+
/** @type {?} */
|
|
164
|
+
var newArray = currentArray ? currentArray.controls : [];
|
|
165
|
+
return this.fb.array(newArray, convertedValidators);
|
|
166
|
+
case QuestionType.Checklist:
|
|
167
|
+
return this.generateGroupForChecklist(question, convertedValidators);
|
|
168
|
+
default:
|
|
169
|
+
return this.fb.control(null, { validators: convertedValidators, updateOn: 'blur' });
|
|
170
|
+
}
|
|
171
|
+
};
|
|
172
|
+
/**
|
|
173
|
+
* Generates the form group for a checklist question.
|
|
174
|
+
* @param question The question. Must be of type checklist or else null is returned.
|
|
175
|
+
* @returns A form group.
|
|
176
|
+
* @author Will Poulson
|
|
177
|
+
*/
|
|
178
|
+
/**
|
|
179
|
+
* Generates the form group for a checklist question.
|
|
180
|
+
* @author Will Poulson
|
|
181
|
+
* @private
|
|
182
|
+
* @param {?} question The question. Must be of type checklist or else null is returned.
|
|
183
|
+
* @param {?} convertedValidators
|
|
184
|
+
* @return {?} A form group.
|
|
185
|
+
*/
|
|
186
|
+
FormConstructorService.prototype.generateGroupForChecklist = /**
|
|
187
|
+
* Generates the form group for a checklist question.
|
|
188
|
+
* @author Will Poulson
|
|
189
|
+
* @private
|
|
190
|
+
* @param {?} question The question. Must be of type checklist or else null is returned.
|
|
191
|
+
* @param {?} convertedValidators
|
|
192
|
+
* @return {?} A form group.
|
|
193
|
+
*/
|
|
194
|
+
function (question, convertedValidators) {
|
|
195
|
+
var e_3, _a;
|
|
196
|
+
if (question.type !== QuestionType.Checklist || question.checklistItems.length === 0) {
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
/** @type {?} */
|
|
200
|
+
var checklistForms = this.fb.group({}, convertedValidators);
|
|
201
|
+
try {
|
|
202
|
+
for (var _b = tslib_1.__values(question.checklistItems), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
203
|
+
var checklistItem = _c.value;
|
|
204
|
+
/** @type {?} */
|
|
205
|
+
var checklistItemControl = this.fb.control(false, { updateOn: 'blur' });
|
|
206
|
+
checklistForms.addControl(checklistItem.name, checklistItemControl);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
210
|
+
finally {
|
|
211
|
+
try {
|
|
212
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
213
|
+
}
|
|
214
|
+
finally { if (e_3) throw e_3.error; }
|
|
215
|
+
}
|
|
216
|
+
return checklistForms;
|
|
217
|
+
};
|
|
218
|
+
/**
|
|
219
|
+
* Generates the form template for a repeater question.
|
|
220
|
+
* @param question The question. Must be of type repeater or else null is returned.
|
|
221
|
+
* @returns A form group.
|
|
222
|
+
* @author Will Poulson
|
|
223
|
+
*/
|
|
224
|
+
/**
|
|
225
|
+
* Generates the form template for a repeater question.
|
|
226
|
+
* @author Will Poulson
|
|
227
|
+
* @param {?} question The question. Must be of type repeater or else null is returned.
|
|
228
|
+
* @return {?} A form group.
|
|
229
|
+
*/
|
|
230
|
+
FormConstructorService.prototype.generateFormsForRepeater = /**
|
|
231
|
+
* Generates the form template for a repeater question.
|
|
232
|
+
* @author Will Poulson
|
|
233
|
+
* @param {?} question The question. Must be of type repeater or else null is returned.
|
|
234
|
+
* @return {?} A form group.
|
|
235
|
+
*/
|
|
236
|
+
function (question) {
|
|
237
|
+
var e_4, _a;
|
|
238
|
+
if (question.type !== QuestionType.Repeater || question.repeaterQuestions.length === 0) {
|
|
239
|
+
console.log('Question isnt a repeater or has no questions, returning null');
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
/** @type {?} */
|
|
243
|
+
var repeaterForms = this.fb.group({});
|
|
244
|
+
try {
|
|
245
|
+
for (var _b = tslib_1.__values(question.repeaterQuestions), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
246
|
+
var repeaterQuestion = _c.value;
|
|
247
|
+
/** @type {?} */
|
|
248
|
+
var repeaterQuestionControl = this.generateControlForRepeaterQuestion(repeaterQuestion);
|
|
249
|
+
repeaterForms.addControl(repeaterQuestion.name, repeaterQuestionControl);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
253
|
+
finally {
|
|
254
|
+
try {
|
|
255
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
256
|
+
}
|
|
257
|
+
finally { if (e_4) throw e_4.error; }
|
|
258
|
+
}
|
|
259
|
+
return repeaterForms;
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* Generates a control for a repeaters question.
|
|
263
|
+
* @param repeaterQuestion A repeater question.
|
|
264
|
+
* @returns An abstract control.
|
|
265
|
+
* @author Will Poulson
|
|
266
|
+
*/
|
|
267
|
+
/**
|
|
268
|
+
* Generates a control for a repeaters question.
|
|
269
|
+
* @author Will Poulson
|
|
270
|
+
* @private
|
|
271
|
+
* @param {?} repeaterQuestion A repeater question.
|
|
272
|
+
* @return {?} An abstract control.
|
|
273
|
+
*/
|
|
274
|
+
FormConstructorService.prototype.generateControlForRepeaterQuestion = /**
|
|
275
|
+
* Generates a control for a repeaters question.
|
|
276
|
+
* @author Will Poulson
|
|
277
|
+
* @private
|
|
278
|
+
* @param {?} repeaterQuestion A repeater question.
|
|
279
|
+
* @return {?} An abstract control.
|
|
280
|
+
*/
|
|
281
|
+
function (repeaterQuestion) {
|
|
282
|
+
/** @type {?} */
|
|
283
|
+
var convertedValidators = this.convertValidators(repeaterQuestion.validators);
|
|
284
|
+
return this.fb.control(null, { validators: convertedValidators, updateOn: 'blur' });
|
|
285
|
+
};
|
|
286
|
+
/**
|
|
287
|
+
* Converts an array of validators into form validators.
|
|
288
|
+
* @param validators The uncoverted array of validators.
|
|
289
|
+
* @returns A convered array of form validators.
|
|
290
|
+
* @author Will Poulson
|
|
291
|
+
*/
|
|
292
|
+
/**
|
|
293
|
+
* Converts an array of validators into form validators.
|
|
294
|
+
* @author Will Poulson
|
|
295
|
+
* @private
|
|
296
|
+
* @param {?} validators The uncoverted array of validators.
|
|
297
|
+
* @return {?} A convered array of form validators.
|
|
298
|
+
*/
|
|
299
|
+
FormConstructorService.prototype.convertValidators = /**
|
|
300
|
+
* Converts an array of validators into form validators.
|
|
301
|
+
* @author Will Poulson
|
|
302
|
+
* @private
|
|
303
|
+
* @param {?} validators The uncoverted array of validators.
|
|
304
|
+
* @return {?} A convered array of form validators.
|
|
305
|
+
*/
|
|
306
|
+
function (validators) {
|
|
307
|
+
var e_5, _a;
|
|
308
|
+
if (!validators || validators.length === 0) {
|
|
309
|
+
return [];
|
|
310
|
+
}
|
|
311
|
+
/** @type {?} */
|
|
312
|
+
var convertedValidators = [];
|
|
313
|
+
try {
|
|
314
|
+
for (var validators_1 = tslib_1.__values(validators), validators_1_1 = validators_1.next(); !validators_1_1.done; validators_1_1 = validators_1.next()) {
|
|
315
|
+
var validator = validators_1_1.value;
|
|
316
|
+
/** @type {?} */
|
|
317
|
+
var convertedValidator = this.convertValidator(validator);
|
|
318
|
+
if (convertedValidator) {
|
|
319
|
+
convertedValidators.push(convertedValidator);
|
|
320
|
+
}
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
324
|
+
finally {
|
|
325
|
+
try {
|
|
326
|
+
if (validators_1_1 && !validators_1_1.done && (_a = validators_1.return)) _a.call(validators_1);
|
|
327
|
+
}
|
|
328
|
+
finally { if (e_5) throw e_5.error; }
|
|
329
|
+
}
|
|
330
|
+
return convertedValidators;
|
|
331
|
+
};
|
|
332
|
+
/**
|
|
333
|
+
* Converts a single validator into a form validator.
|
|
334
|
+
* @param validator The unconverted validator.
|
|
335
|
+
* @returns A converted form validator.
|
|
336
|
+
* @author Will Poulson
|
|
337
|
+
*/
|
|
338
|
+
/**
|
|
339
|
+
* Converts a single validator into a form validator.
|
|
340
|
+
* @author Will Poulson
|
|
341
|
+
* @private
|
|
342
|
+
* @param {?} validator The unconverted validator.
|
|
343
|
+
* @return {?} A converted form validator.
|
|
344
|
+
*/
|
|
345
|
+
FormConstructorService.prototype.convertValidator = /**
|
|
346
|
+
* Converts a single validator into a form validator.
|
|
347
|
+
* @author Will Poulson
|
|
348
|
+
* @private
|
|
349
|
+
* @param {?} validator The unconverted validator.
|
|
350
|
+
* @return {?} A converted form validator.
|
|
351
|
+
*/
|
|
352
|
+
function (validator) {
|
|
353
|
+
switch (validator.type) {
|
|
354
|
+
case ValidationType.Required:
|
|
355
|
+
return Validators.required;
|
|
356
|
+
default:
|
|
357
|
+
return null;
|
|
358
|
+
}
|
|
359
|
+
};
|
|
360
|
+
/**
|
|
361
|
+
* Constructs the forms for repeaters from saved state.
|
|
362
|
+
* @param savedState The saved state to load.
|
|
363
|
+
* @param sections The sections already generated by the form constructor.
|
|
364
|
+
*/
|
|
365
|
+
/**
|
|
366
|
+
* Constructs the forms for repeaters from saved state.
|
|
367
|
+
* @param {?} savedState The saved state to load.
|
|
368
|
+
* @param {?} sections The sections already generated by the form constructor.
|
|
369
|
+
* @param {?} currentQuestionnaireForm
|
|
370
|
+
* @return {?}
|
|
371
|
+
*/
|
|
372
|
+
FormConstructorService.prototype.constructRepeaterFromsFromState = /**
|
|
373
|
+
* Constructs the forms for repeaters from saved state.
|
|
374
|
+
* @param {?} savedState The saved state to load.
|
|
375
|
+
* @param {?} sections The sections already generated by the form constructor.
|
|
376
|
+
* @param {?} currentQuestionnaireForm
|
|
377
|
+
* @return {?}
|
|
378
|
+
*/
|
|
379
|
+
function (savedState, sections, currentQuestionnaireForm) {
|
|
380
|
+
var e_6, _a, e_7, _b, e_8, _c;
|
|
381
|
+
try {
|
|
382
|
+
for (var sections_2 = tslib_1.__values(sections), sections_2_1 = sections_2.next(); !sections_2_1.done; sections_2_1 = sections_2.next()) {
|
|
383
|
+
var section = sections_2_1.value;
|
|
384
|
+
try {
|
|
385
|
+
for (var _d = tslib_1.__values(section.questions), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
386
|
+
var question = _e.value;
|
|
387
|
+
if (question.type !== QuestionType.Repeater) {
|
|
388
|
+
continue;
|
|
389
|
+
}
|
|
390
|
+
/** @type {?} */
|
|
391
|
+
var repeaterArray = savedState[section.name][question.name];
|
|
392
|
+
if (!repeaterArray || repeaterArray.length === 0) {
|
|
393
|
+
continue;
|
|
394
|
+
}
|
|
395
|
+
/** @type {?} */
|
|
396
|
+
var repeaterFormArray = (/** @type {?} */ (currentQuestionnaireForm.get([section.name, question.name])));
|
|
397
|
+
if (repeaterFormArray.controls.length === repeaterArray.length) {
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
try {
|
|
401
|
+
for (var repeaterArray_1 = tslib_1.__values(repeaterArray), repeaterArray_1_1 = repeaterArray_1.next(); !repeaterArray_1_1.done; repeaterArray_1_1 = repeaterArray_1.next()) {
|
|
402
|
+
var repeaterItem = repeaterArray_1_1.value;
|
|
403
|
+
/** @type {?} */
|
|
404
|
+
var repeaterItemTemplate = this.generateFormsForRepeater(question);
|
|
405
|
+
repeaterFormArray.push(repeaterItemTemplate);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
catch (e_8_1) { e_8 = { error: e_8_1 }; }
|
|
409
|
+
finally {
|
|
410
|
+
try {
|
|
411
|
+
if (repeaterArray_1_1 && !repeaterArray_1_1.done && (_c = repeaterArray_1.return)) _c.call(repeaterArray_1);
|
|
412
|
+
}
|
|
413
|
+
finally { if (e_8) throw e_8.error; }
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
418
|
+
finally {
|
|
419
|
+
try {
|
|
420
|
+
if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
|
|
421
|
+
}
|
|
422
|
+
finally { if (e_7) throw e_7.error; }
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
427
|
+
finally {
|
|
428
|
+
try {
|
|
429
|
+
if (sections_2_1 && !sections_2_1.done && (_a = sections_2.return)) _a.call(sections_2);
|
|
430
|
+
}
|
|
431
|
+
finally { if (e_6) throw e_6.error; }
|
|
432
|
+
}
|
|
433
|
+
};
|
|
434
|
+
FormConstructorService.decorators = [
|
|
435
|
+
{ type: Injectable, args: [{
|
|
436
|
+
providedIn: 'root'
|
|
437
|
+
},] }
|
|
438
|
+
];
|
|
439
|
+
/** @nocollapse */
|
|
440
|
+
FormConstructorService.ctorParameters = function () { return [
|
|
441
|
+
{ type: FormBuilder },
|
|
442
|
+
{ type: FilterService }
|
|
443
|
+
]; };
|
|
444
|
+
/** @nocollapse */ FormConstructorService.ngInjectableDef = i0.defineInjectable({ factory: function FormConstructorService_Factory() { return new FormConstructorService(i0.inject(i1.FormBuilder), i0.inject(i2.FilterService)); }, token: FormConstructorService, providedIn: "root" });
|
|
445
|
+
return FormConstructorService;
|
|
446
|
+
}());
|
|
447
|
+
export { FormConstructorService };
|
|
448
|
+
if (false) {
|
|
449
|
+
/**
|
|
450
|
+
* @type {?}
|
|
451
|
+
* @private
|
|
452
|
+
*/
|
|
453
|
+
FormConstructorService.prototype.fb;
|
|
454
|
+
/**
|
|
455
|
+
* @type {?}
|
|
456
|
+
* @private
|
|
457
|
+
*/
|
|
458
|
+
FormConstructorService.prototype.filterService;
|
|
459
|
+
}
|
|
460
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb25zdHJ1Y3Rvci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdsb3dncmVlbi9nZy1xdWVzdGlvbm5haXJlLXYyLyIsInNvdXJjZXMiOlsibGliL3NlcnZpY2VzL2Zvcm0tY29uc3RydWN0b3Iuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBd0QsVUFBVSxFQUFhLE1BQU0sZ0JBQWdCLENBQUM7QUFJMUgsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUVqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7QUFLL0Q7SUFLRSxnQ0FDVSxFQUFlLEVBQ2YsYUFBNEI7UUFENUIsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQUNmLGtCQUFhLEdBQWIsYUFBYSxDQUFlO0lBQ2xDLENBQUM7SUFFTDs7Ozs7O09BTUc7Ozs7Ozs7Ozs7SUFDSSw4REFBNkI7Ozs7Ozs7OztJQUFwQyxVQUNFLGFBQTRCLEVBQzVCLHdCQUFtQyxFQUNuQyxVQUFvQjs7WUFFZCxRQUFRLEdBQUcsVUFBVSxDQUFDLENBQUM7WUFDM0IsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxhQUFhLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLENBQUM7O1lBQy9FLGtCQUFrQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLEVBQUUsd0JBQXdCLENBQUM7UUFDNUYsT0FBTyxFQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLGtCQUFrQixFQUFDLENBQUM7SUFDekQsQ0FBQzs7Ozs7OztJQUVPLHlEQUF3Qjs7Ozs7O0lBQWhDLFVBQWlDLFFBQXdC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WUFBWSxDQUFDLFFBQVEsRUFBRTs0QkFDM0MsU0FBUzt5QkFDVjs7NEJBRUssYUFBYSxHQUFHLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQzt3QkFDN0QsSUFBSSxDQUFDLGFBQWEsSUFBSSxhQUFhLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTs0QkFDaEQsU0FBUzt5QkFDVjs7NEJBRUssaUJBQWlCLEdBQUcsbUJBQUEsd0JBQXdCLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBYTt3QkFFbEcsSUFBSSxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsTUFBTSxLQUFLLGFBQWEsQ0FBQyxNQUFNLEVBQUU7NEJBQzlELFNBQVM7eUJBQ1Y7OzRCQUVELEtBQTJCLElBQUEsa0JBQUEsaUJBQUEsYUFBYSxDQUFBLDRDQUFBLHVFQUFFO2dDQUFyQyxJQUFNLFlBQVksMEJBQUE7O29DQUNmLG9CQUFvQixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxRQUFRLENBQUM7Z0NBQ3BFLGlCQUFpQixDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDOzZCQUM5Qzs7Ozs7Ozs7O3FCQUNGOzs7Ozs7Ozs7YUFDRjs7Ozs7Ozs7O0lBQ0gsQ0FBQzs7Z0JBN0xGLFVBQVUsU0FBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkI7Ozs7Z0JBZFEsV0FBVztnQkFLWCxhQUFhOzs7aUNBTnRCO0NBMk1DLEFBOUxELElBOExDO1NBM0xZLHNCQUFzQjs7Ozs7O0lBRy9CLG9DQUF1Qjs7Ozs7SUFDdkIsK0NBQW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIsIEZvcm1Hcm91cCwgRm9ybUNvbnRyb2wsIEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMsIEZvcm1BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFNlY3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3NlY3Rpb24nO1xuaW1wb3J0IHsgUXVlc3Rpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL3F1ZXN0aW9uJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmUgfSBmcm9tICcuLi9pbnRlcmZhY2VzL3F1ZXN0aW9ubmFpcmUnO1xuaW1wb3J0IHsgUXVlc3Rpb25UeXBlIH0gZnJvbSAnLi4vZW51bXMvcXVlc3Rpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tICcuL2ZpbHRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbGlkYXRvciB9IGZyb20gJy4uL2ludGVyZmFjZXMvdmFsaWRhdG9yJztcbmltcG9ydCB7IFZhbGlkYXRpb25UeXBlIH0gZnJvbSAnLi4vZW51bXMvdmFsaWRhdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUmVwZWF0ZXJRdWVzdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvcmVwZWF0ZXItcXVlc3Rpb24nO1xuaW1wb3J0IHsgQ2hlY2tsaXN0SXRlbSB9IGZyb20gJy4uL2ludGVyZmFjZXMvY2hlY2tsaXN0LWl0ZW0nO1xuXG5ASW5qZWN0YWJsZSh7XG4gIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBGb3JtQ29uc3RydWN0b3JTZXJ2aWNlIHtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2VcbiAgKSB7IH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGZvcm0gZ3JvdXAgYmFzZWQgb24gdGhlIHF1ZXN0aW9ubmFpcmUgZGF0YS5cbiAgICogVGhpcyBmb3JtIGdyb3VwIGhhcyBiZWVuIGZpbHRlcmVkIGRvd24gYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgb2YgdGhlIHNlY3Rpb25zIGFuZCBxdWVzdGlvbnMuXG4gICAqIEBwYXJhbSBxdWVzdGlvbm5haXJlIFRoZSBxdWVzdGlvbm5haXJlIGRhdGEgdG8gYnVpbGQgdGhlIGZvcm0gZ3JvdXAgb24uXG4gICAqIEByZXR1cm5zIEEgZmlsdGVkIGZvcm0gZ3JvdXAuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZ2VuZXJhdGVGb3Jtc0ZvclF1ZXN0aW9ubmFpcmUoXG4gICAgcXVlc3Rpb25uYWlyZTogUXVlc3Rpb25uYWlyZSxcbiAgICBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCxcbiAgICBza2lwRmlsdGVyPzogYm9vbGVhblxuICApOiB7c2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+OyBmb3JtczogRm9ybUdyb3VwfSB7XG4gICAgY29uc3Qgc2VjdGlvbnMgPSBza2lwRmlsdGVyID9cbiAgICAgIHF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMgOlxuICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlclNlY3Rpb25zKHF1ZXN0aW9ubmFpcmUuc2VjdGlvbnMsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSk7XG4gICAgY29uc3QgcXVlc3Rpb25uYWlyZUZvcm1zID0gdGhpcy5nZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbnMoc2VjdGlvbnMsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSk7XG4gICAgcmV0dXJuIHtzZWN0aW9uczogc2VjdGlvbnMsIGZvcm1zOiBxdWVzdGlvbm5haXJlRm9ybXN9O1xuICB9XG5cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbnMoc2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+LCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCkge1xuICAgIGNvbnN0IHF1ZXN0aW9ubmFpcmVGb3JtczogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgZm9yIChjb25zdCBzZWN0aW9uIG9mIHNlY3Rpb25zKSB7XG4gICAgICBjb25zdCBzZWN0aW9uRm9ybXMgPSB0aGlzLmdlbmVyYXRlRm9ybXNGb3JTZWN0aW9uKHNlY3Rpb24sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSk7XG4gICAgICBxdWVzdGlvbm5haXJlRm9ybXMuYWRkQ29udHJvbChzZWN0aW9uLm5hbWUsIHNlY3Rpb25Gb3Jtcyk7XG4gICAgfVxuICAgIHJldHVybiBxdWVzdGlvbm5haXJlRm9ybXM7XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIGZvcm0gZ3JvdXAgYmFzZWQgb24gdGhlIHNlY3Rpb24gZGF0YS5cbiAgICogVGhpcyBmb3JtIGdyb3VwIGhhcyBiZWVuIGZpbHRlcmVkIGRvd24gYmFzZWQgb24gdGhlIGNvbmRpdGlvbnMgb2YgdGhlIHF1ZXN0aW9ucy5cbiAgICogQHBhcmFtIHNlY3Rpb24gVGhlIHNlY3Rpb24gZGF0YSB0byBidWlsZCB0aGUgZm9ybSBncm91cCBvbi5cbiAgICogQHJldHVybnMgQSBmaWx0ZXJlZCBmb3JtIGdyb3VwLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZW5lcmF0ZUZvcm1zRm9yU2VjdGlvbihzZWN0aW9uOiBTZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCk6IEZvcm1Hcm91cCB7XG4gICAgY29uc3Qgc2VjdGlvbkZvcm1zOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9KTtcbiAgICBmb3IgKGNvbnN0IHF1ZXN0aW9uIG9mIHNlY3Rpb24ucXVlc3Rpb25zKSB7XG4gICAgICBjb25zdCBxdWVzdGlvbkNvbnRyb2wgPSB0aGlzLmdlbmVyYXRlQ29udHJvbEZvclF1ZXN0aW9uKHF1ZXN0aW9uLCBzZWN0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0pO1xuICAgICAgc2VjdGlvbkZvcm1zLmFkZENvbnRyb2wocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb25Db250cm9sKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb25Gb3JtcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGFuIGFzdHJhY3QgZm9ybSBjb250cm9sIGJhc2VkIG9uIHRoZSBxdWVzdGlvbiBkYXRhLlxuICAgKiBAcGFyYW0gcXVlc3Rpb24gVGhlIHF1ZXN0aW9uIGRhdGEgdG8gYnVpbGQgdGhlIGFic3RyYWN0IGNvbnRyb2wgb24uXG4gICAqIEByZXR1cm5zIEFuIGFic3RyYWN0IGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlQ29udHJvbEZvclF1ZXN0aW9uKHF1ZXN0aW9uOiBRdWVzdGlvbiwgc2VjdGlvbjogU2VjdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXApOiBBYnN0cmFjdENvbnRyb2wge1xuICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnMgPSB0aGlzLmNvbnZlcnRWYWxpZGF0b3JzKHF1ZXN0aW9uLnZhbGlkYXRvcnMpO1xuICAgIHN3aXRjaCAocXVlc3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBRdWVzdGlvblR5cGUuUmVwZWF0ZXI6XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBcnJheSA9IGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSA/IChjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KFtzZWN0aW9uLm5hbWUsIHF1ZXN0aW9uLm5hbWVdKSBhcyBGb3JtQXJyYXkpIDogZmFsc2U7XG4gICAgICAgIGNvbnN0IG5ld0FycmF5ID0gY3VycmVudEFycmF5ID8gY3VycmVudEFycmF5LmNvbnRyb2xzIDogW107XG4gICAgICAgIHJldHVybiB0aGlzLmZiLmFycmF5KG5ld0FycmF5LCBjb252ZXJ0ZWRWYWxpZGF0b3JzKTtcbiAgICAgIGNhc2UgUXVlc3Rpb25UeXBlLkNoZWNrbGlzdDpcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVHcm91cEZvckNoZWNrbGlzdChxdWVzdGlvbiwgY29udmVydGVkVmFsaWRhdG9ycyk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdGhpcy5mYi5jb250cm9sKG51bGwsIHsgdmFsaWRhdG9yczogY29udmVydGVkVmFsaWRhdG9ycywgdXBkYXRlT246ICdibHVyJyB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIHRoZSBmb3JtIGdyb3VwIGZvciBhIGNoZWNrbGlzdCBxdWVzdGlvbi5cbiAgICogQHBhcmFtIHF1ZXN0aW9uIFRoZSBxdWVzdGlvbi4gTXVzdCBiZSBvZiB0eXBlIGNoZWNrbGlzdCBvciBlbHNlIG51bGwgaXMgcmV0dXJuZWQuXG4gICAqIEByZXR1cm5zIEEgZm9ybSBncm91cC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgZ2VuZXJhdGVHcm91cEZvckNoZWNrbGlzdChxdWVzdGlvbjogUXVlc3Rpb24sIGNvbnZlcnRlZFZhbGlkYXRvcnMpIHtcbiAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gUXVlc3Rpb25UeXBlLkNoZWNrbGlzdCB8fCBxdWVzdGlvbi5jaGVja2xpc3RJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNoZWNrbGlzdEZvcm1zOiBGb3JtR3JvdXAgPSB0aGlzLmZiLmdyb3VwKHt9LCBjb252ZXJ0ZWRWYWxpZGF0b3JzKTtcbiAgICBmb3IgKGNvbnN0IGNoZWNrbGlzdEl0ZW0gb2YgcXVlc3Rpb24uY2hlY2tsaXN0SXRlbXMpIHtcbiAgICAgIGNvbnN0IGNoZWNrbGlzdEl0ZW1Db250cm9sID0gdGhpcy5mYi5jb250cm9sKGZhbHNlLCB7IHVwZGF0ZU9uOiAnYmx1cicgfSk7XG4gICAgICBjaGVja2xpc3RGb3Jtcy5hZGRDb250cm9sKGNoZWNrbGlzdEl0ZW0ubmFtZSwgY2hlY2tsaXN0SXRlbUNvbnRyb2wpO1xuICAgIH1cbiAgICByZXR1cm4gY2hlY2tsaXN0Rm9ybXM7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGZvcm0gdGVtcGxhdGUgZm9yIGEgcmVwZWF0ZXIgcXVlc3Rpb24uXG4gICAqIEBwYXJhbSBxdWVzdGlvbiBUaGUgcXVlc3Rpb24uIE11c3QgYmUgb2YgdHlwZSByZXBlYXRlciBvciBlbHNlIG51bGwgaXMgcmV0dXJuZWQuXG4gICAqIEByZXR1cm5zIEEgZm9ybSBncm91cC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHB1YmxpYyBnZW5lcmF0ZUZvcm1zRm9yUmVwZWF0ZXIocXVlc3Rpb246IFF1ZXN0aW9uKTogRm9ybUdyb3VwIHtcbiAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gUXVlc3Rpb25UeXBlLlJlcGVhdGVyIHx8IHF1ZXN0aW9uLnJlcGVhdGVyUXVlc3Rpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgY29uc29sZS5sb2coJ1F1ZXN0aW9uIGlzbnQgYSByZXBlYXRlciBvciBoYXMgbm8gcXVlc3Rpb25zLCByZXR1cm5pbmcgbnVsbCcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgcmVwZWF0ZXJGb3JtczogRm9ybUdyb3VwID0gdGhpcy5mYi5ncm91cCh7fSk7XG4gICAgZm9yIChjb25zdCByZXBlYXRlclF1ZXN0aW9uIG9mIHF1ZXN0aW9uLnJlcGVhdGVyUXVlc3Rpb25zKSB7XG4gICAgICBjb25zdCByZXBlYXRlclF1ZXN0aW9uQ29udHJvbCA9IHRoaXMuZ2VuZXJhdGVDb250cm9sRm9yUmVwZWF0ZXJRdWVzdGlvbihyZXBlYXRlclF1ZXN0aW9uKTtcbiAgICAgIHJlcGVhdGVyRm9ybXMuYWRkQ29udHJvbChyZXBlYXRlclF1ZXN0aW9uLm5hbWUsIHJlcGVhdGVyUXVlc3Rpb25Db250cm9sKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlcGVhdGVyRm9ybXM7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGVzIGEgY29udHJvbCBmb3IgYSByZXBlYXRlcnMgcXVlc3Rpb24uXG4gICAqIEBwYXJhbSByZXBlYXRlclF1ZXN0aW9uIEEgcmVwZWF0ZXIgcXVlc3Rpb24uXG4gICAqIEByZXR1cm5zIEFuIGFic3RyYWN0IGNvbnRyb2wuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIGdlbmVyYXRlQ29udHJvbEZvclJlcGVhdGVyUXVlc3Rpb24ocmVwZWF0ZXJRdWVzdGlvbjogUmVwZWF0ZXJRdWVzdGlvbik6IEFic3RyYWN0Q29udHJvbCB7XG4gICAgY29uc3QgY29udmVydGVkVmFsaWRhdG9ycyA9IHRoaXMuY29udmVydFZhbGlkYXRvcnMocmVwZWF0ZXJRdWVzdGlvbi52YWxpZGF0b3JzKTtcbiAgICByZXR1cm4gdGhpcy5mYi5jb250cm9sKG51bGwsIHsgdmFsaWRhdG9yczogY29udmVydGVkVmFsaWRhdG9ycywgdXBkYXRlT246ICdibHVyJyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyBhbiBhcnJheSBvZiB2YWxpZGF0b3JzIGludG8gZm9ybSB2YWxpZGF0b3JzLlxuICAgKiBAcGFyYW0gdmFsaWRhdG9ycyBUaGUgdW5jb3ZlcnRlZCBhcnJheSBvZiB2YWxpZGF0b3JzLlxuICAgKiBAcmV0dXJucyBBIGNvbnZlcmVkIGFycmF5IG9mIGZvcm0gdmFsaWRhdG9ycy5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgY29udmVydFZhbGlkYXRvcnModmFsaWRhdG9yczogQXJyYXk8VmFsaWRhdG9yPik6IEFycmF5PFZhbGlkYXRvckZuPiB7XG4gICAgaWYgKCF2YWxpZGF0b3JzIHx8IHZhbGlkYXRvcnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvcnM6IEFycmF5PFZhbGlkYXRvckZuPiA9IFtdO1xuICAgIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICAgIGNvbnN0IGNvbnZlcnRlZFZhbGlkYXRvciA9IHRoaXMuY29udmVydFZhbGlkYXRvcih2YWxpZGF0b3IpO1xuICAgICAgaWYgKGNvbnZlcnRlZFZhbGlkYXRvcikge1xuICAgICAgICBjb252ZXJ0ZWRWYWxpZGF0b3JzLnB1c2goY29udmVydGVkVmFsaWRhdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbnZlcnRlZFZhbGlkYXRvcnM7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzaW5nbGUgdmFsaWRhdG9yIGludG8gYSBmb3JtIHZhbGlkYXRvci5cbiAgICogQHBhcmFtIHZhbGlkYXRvciBUaGUgdW5jb252ZXJ0ZWQgdmFsaWRhdG9yLlxuICAgKiBAcmV0dXJucyBBIGNvbnZlcnRlZCBmb3JtIHZhbGlkYXRvci5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgY29udmVydFZhbGlkYXRvcih2YWxpZGF0b3I6IFZhbGlkYXRvcik6IFZhbGlkYXRvckZuIHwgbnVsbCB7XG4gICAgc3dpdGNoICh2YWxpZGF0b3IudHlwZSkge1xuICAgICAgY2FzZSBWYWxpZGF0aW9uVHlwZS5SZXF1aXJlZDpcbiAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucmVxdWlyZWQ7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29uc3RydWN0cyB0aGUgZm9ybXMgZm9yIHJlcGVhdGVycyBmcm9tIHNhdmVkIHN0YXRlLlxuICAgKiBAcGFyYW0gc2F2ZWRTdGF0ZSBUaGUgc2F2ZWQgc3RhdGUgdG8gbG9hZC5cbiAgICogQHBhcmFtIHNlY3Rpb25zIFRoZSBzZWN0aW9ucyBhbHJlYWR5IGdlbmVyYXRlZCBieSB0aGUgZm9ybSBjb25zdHJ1Y3Rvci5cbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RSZXBlYXRlckZyb21zRnJvbVN0YXRlKHNhdmVkU3RhdGU6IGFueSwgc2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+LCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCkge1xuICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucykge1xuICAgICAgICBpZiAocXVlc3Rpb24udHlwZSAhPT0gUXVlc3Rpb25UeXBlLlJlcGVhdGVyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZXBlYXRlckFycmF5ID0gc2F2ZWRTdGF0ZVtzZWN0aW9uLm5hbWVdW3F1ZXN0aW9uLm5hbWVdO1xuICAgICAgICBpZiAoIXJlcGVhdGVyQXJyYXkgfHwgcmVwZWF0ZXJBcnJheS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlcGVhdGVyRm9ybUFycmF5ID0gY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtLmdldChbc2VjdGlvbi5uYW1lLCBxdWVzdGlvbi5uYW1lXSkgYXMgRm9ybUFycmF5O1xuXG4gICAgICAgIGlmIChyZXBlYXRlckZvcm1BcnJheS5jb250cm9scy5sZW5ndGggPT09IHJlcGVhdGVyQXJyYXkubGVuZ3RoKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IHJlcGVhdGVySXRlbSBvZiByZXBlYXRlckFycmF5KSB7XG4gICAgICAgICAgY29uc3QgcmVwZWF0ZXJJdGVtVGVtcGxhdGUgPSB0aGlzLmdlbmVyYXRlRm9ybXNGb3JSZXBlYXRlcihxdWVzdGlvbik7XG4gICAgICAgICAgcmVwZWF0ZXJGb3JtQXJyYXkucHVzaChyZXBlYXRlckl0ZW1UZW1wbGF0ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|