@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,445 @@
|
|
|
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 { ConditionType } from '../enums/condition-type.enum';
|
|
8
|
+
import { ConditionRelationship } from '../enums/condition-relationship.enum';
|
|
9
|
+
import * as i0 from "@angular/core";
|
|
10
|
+
var FilterService = /** @class */ (function () {
|
|
11
|
+
function FilterService() {
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Filters an array of sections based on their condition groups.
|
|
15
|
+
* @param sections The array of sections to filter.
|
|
16
|
+
* @param currentQuestionnaireForm The current form data, can be null/undefined.
|
|
17
|
+
* @returns An array of filtered sections with their filtered questions.
|
|
18
|
+
* @author Will Poulson
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Filters an array of sections based on their condition groups.
|
|
22
|
+
* @author Will Poulson
|
|
23
|
+
* @param {?} sections The array of sections to filter.
|
|
24
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
25
|
+
* @return {?} An array of filtered sections with their filtered questions.
|
|
26
|
+
*/
|
|
27
|
+
FilterService.prototype.filterSections = /**
|
|
28
|
+
* Filters an array of sections based on their condition groups.
|
|
29
|
+
* @author Will Poulson
|
|
30
|
+
* @param {?} sections The array of sections to filter.
|
|
31
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
32
|
+
* @return {?} An array of filtered sections with their filtered questions.
|
|
33
|
+
*/
|
|
34
|
+
function (sections, currentQuestionnaireForm) {
|
|
35
|
+
var e_1, _a, e_2, _b, e_3, _c;
|
|
36
|
+
/** @type {?} */
|
|
37
|
+
var filteredSections = [];
|
|
38
|
+
try {
|
|
39
|
+
for (var sections_1 = tslib_1.__values(sections), sections_1_1 = sections_1.next(); !sections_1_1.done; sections_1_1 = sections_1.next()) {
|
|
40
|
+
var section = sections_1_1.value;
|
|
41
|
+
if (this.meetsConditionGroups(section.conditionGroups, currentQuestionnaireForm)) {
|
|
42
|
+
/** @type {?} */
|
|
43
|
+
var filteredQuestions = [];
|
|
44
|
+
try {
|
|
45
|
+
for (var _d = tslib_1.__values(section.questions), _e = _d.next(); !_e.done; _e = _d.next()) {
|
|
46
|
+
var question = _e.value;
|
|
47
|
+
if (this.meetsConditionGroups(question.conditionGroups, currentQuestionnaireForm)) {
|
|
48
|
+
if (question.repeaterQuestions) {
|
|
49
|
+
/** @type {?} */
|
|
50
|
+
var filteredRepeaterQuestions = [];
|
|
51
|
+
try {
|
|
52
|
+
for (var _f = tslib_1.__values(question.repeaterQuestions), _g = _f.next(); !_g.done; _g = _f.next()) {
|
|
53
|
+
var repeaterQuestion = _g.value;
|
|
54
|
+
if (this.meetsConditionGroups(repeaterQuestion.conditionGroups, currentQuestionnaireForm)) {
|
|
55
|
+
filteredRepeaterQuestions.push(repeaterQuestion);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
60
|
+
finally {
|
|
61
|
+
try {
|
|
62
|
+
if (_g && !_g.done && (_c = _f.return)) _c.call(_f);
|
|
63
|
+
}
|
|
64
|
+
finally { if (e_3) throw e_3.error; }
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
filteredQuestions.push(question);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
72
|
+
finally {
|
|
73
|
+
try {
|
|
74
|
+
if (_e && !_e.done && (_b = _d.return)) _b.call(_d);
|
|
75
|
+
}
|
|
76
|
+
finally { if (e_2) throw e_2.error; }
|
|
77
|
+
}
|
|
78
|
+
section.questions = filteredQuestions;
|
|
79
|
+
filteredSections.push(section);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
84
|
+
finally {
|
|
85
|
+
try {
|
|
86
|
+
if (sections_1_1 && !sections_1_1.done && (_a = sections_1.return)) _a.call(sections_1);
|
|
87
|
+
}
|
|
88
|
+
finally { if (e_1) throw e_1.error; }
|
|
89
|
+
}
|
|
90
|
+
return filteredSections;
|
|
91
|
+
};
|
|
92
|
+
/**
|
|
93
|
+
* Checks if each condition groups conditions have been met.
|
|
94
|
+
* @param conditionGroups The array of condition groups.
|
|
95
|
+
* @param currentQuestionnaireForm The current form data, can be null/undefined.
|
|
96
|
+
* @returns A boolean stating if the condition groups conditions has been met.
|
|
97
|
+
* @author Will Poulson
|
|
98
|
+
*/
|
|
99
|
+
/**
|
|
100
|
+
* Checks if each condition groups conditions have been met.
|
|
101
|
+
* @author Will Poulson
|
|
102
|
+
* @private
|
|
103
|
+
* @param {?} conditionGroups The array of condition groups.
|
|
104
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
105
|
+
* @return {?} A boolean stating if the condition groups conditions has been met.
|
|
106
|
+
*/
|
|
107
|
+
FilterService.prototype.meetsConditionGroups = /**
|
|
108
|
+
* Checks if each condition groups conditions have been met.
|
|
109
|
+
* @author Will Poulson
|
|
110
|
+
* @private
|
|
111
|
+
* @param {?} conditionGroups The array of condition groups.
|
|
112
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
113
|
+
* @return {?} A boolean stating if the condition groups conditions has been met.
|
|
114
|
+
*/
|
|
115
|
+
function (conditionGroups, currentQuestionnaireForm) {
|
|
116
|
+
var _this = this;
|
|
117
|
+
if (!conditionGroups || conditionGroups.length === 0) {
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
return conditionGroups.every((/**
|
|
121
|
+
* @param {?} x
|
|
122
|
+
* @return {?}
|
|
123
|
+
*/
|
|
124
|
+
function (x) {
|
|
125
|
+
return _this.meetsConditionGroup(x, currentQuestionnaireForm) === true;
|
|
126
|
+
}));
|
|
127
|
+
};
|
|
128
|
+
/**
|
|
129
|
+
* Checks if a condition groups conditions have been met.
|
|
130
|
+
* @param conditionGroup The condition group to check.
|
|
131
|
+
* @param currentQuestionnaireForm The current form data, can be null/undefined.
|
|
132
|
+
* @returns A boolean stating if the condition group conditions has been met.
|
|
133
|
+
* @author Will Poulson
|
|
134
|
+
*/
|
|
135
|
+
/**
|
|
136
|
+
* Checks if a condition groups conditions have been met.
|
|
137
|
+
* @author Will Poulson
|
|
138
|
+
* @private
|
|
139
|
+
* @param {?} conditionGroup The condition group to check.
|
|
140
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
141
|
+
* @return {?} A boolean stating if the condition group conditions has been met.
|
|
142
|
+
*/
|
|
143
|
+
FilterService.prototype.meetsConditionGroup = /**
|
|
144
|
+
* Checks if a condition groups conditions have been met.
|
|
145
|
+
* @author Will Poulson
|
|
146
|
+
* @private
|
|
147
|
+
* @param {?} conditionGroup The condition group to check.
|
|
148
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
149
|
+
* @return {?} A boolean stating if the condition group conditions has been met.
|
|
150
|
+
*/
|
|
151
|
+
function (conditionGroup, currentQuestionnaireForm) {
|
|
152
|
+
var e_4, _a;
|
|
153
|
+
if (!conditionGroup.conditions || conditionGroup.conditions.length === 0) {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
/** @type {?} */
|
|
157
|
+
var results = [];
|
|
158
|
+
try {
|
|
159
|
+
for (var _b = tslib_1.__values(conditionGroup.conditions), _c = _b.next(); !_c.done; _c = _b.next()) {
|
|
160
|
+
var condition = _c.value;
|
|
161
|
+
results.push(this.meetsCondition(condition, currentQuestionnaireForm));
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
165
|
+
finally {
|
|
166
|
+
try {
|
|
167
|
+
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
|
|
168
|
+
}
|
|
169
|
+
finally { if (e_4) throw e_4.error; }
|
|
170
|
+
}
|
|
171
|
+
switch (conditionGroup.relationship) {
|
|
172
|
+
case ConditionRelationship.Every:
|
|
173
|
+
return results.every((/**
|
|
174
|
+
* @param {?} x
|
|
175
|
+
* @return {?}
|
|
176
|
+
*/
|
|
177
|
+
function (x) {
|
|
178
|
+
return x === true;
|
|
179
|
+
}));
|
|
180
|
+
case ConditionRelationship.Any:
|
|
181
|
+
return !!results.find((/**
|
|
182
|
+
* @param {?} x
|
|
183
|
+
* @return {?}
|
|
184
|
+
*/
|
|
185
|
+
function (x) {
|
|
186
|
+
return x === true;
|
|
187
|
+
}));
|
|
188
|
+
default:
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
/**
|
|
193
|
+
* Checks if a condition has been met.
|
|
194
|
+
* @param condition The condition to check.
|
|
195
|
+
* @param currentQuestionnaireForm The current form data, can be null/undefined.
|
|
196
|
+
* @returns A boolean stating if the condition group conditions has been met.
|
|
197
|
+
* @author Will Poulson
|
|
198
|
+
*/
|
|
199
|
+
/**
|
|
200
|
+
* Checks if a condition has been met.
|
|
201
|
+
* @author Will Poulson
|
|
202
|
+
* @private
|
|
203
|
+
* @param {?} condition The condition to check.
|
|
204
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
205
|
+
* @return {?} A boolean stating if the condition group conditions has been met.
|
|
206
|
+
*/
|
|
207
|
+
FilterService.prototype.meetsCondition = /**
|
|
208
|
+
* Checks if a condition has been met.
|
|
209
|
+
* @author Will Poulson
|
|
210
|
+
* @private
|
|
211
|
+
* @param {?} condition The condition to check.
|
|
212
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
213
|
+
* @return {?} A boolean stating if the condition group conditions has been met.
|
|
214
|
+
*/
|
|
215
|
+
function (condition, currentQuestionnaireForm) {
|
|
216
|
+
var e_5, _a, e_6, _b;
|
|
217
|
+
/** @type {?} */
|
|
218
|
+
var v1s = this.getValuesForArray(condition.v1s, currentQuestionnaireForm);
|
|
219
|
+
/** @type {?} */
|
|
220
|
+
var v2s = this.getValuesForArray(condition.v2s, currentQuestionnaireForm);
|
|
221
|
+
/** @type {?} */
|
|
222
|
+
var result = false;
|
|
223
|
+
switch (condition.type) {
|
|
224
|
+
case ConditionType.Excludes:
|
|
225
|
+
result = v1s.filter((/**
|
|
226
|
+
* @param {?} v1
|
|
227
|
+
* @return {?}
|
|
228
|
+
*/
|
|
229
|
+
function (v1) {
|
|
230
|
+
return v2s.indexOf(v1) > -1;
|
|
231
|
+
})).length === 0;
|
|
232
|
+
break;
|
|
233
|
+
case ConditionType.Includes:
|
|
234
|
+
result = v1s.filter((/**
|
|
235
|
+
* @param {?} v1
|
|
236
|
+
* @return {?}
|
|
237
|
+
*/
|
|
238
|
+
function (v1) {
|
|
239
|
+
return v2s.indexOf(v1) > -1;
|
|
240
|
+
})).length !== 0;
|
|
241
|
+
break;
|
|
242
|
+
default: try {
|
|
243
|
+
for (var v2s_1 = tslib_1.__values(v2s), v2s_1_1 = v2s_1.next(); !v2s_1_1.done; v2s_1_1 = v2s_1.next()) {
|
|
244
|
+
var v2 = v2s_1_1.value;
|
|
245
|
+
try {
|
|
246
|
+
for (var v1s_1 = tslib_1.__values(v1s), v1s_1_1 = v1s_1.next(); !v1s_1_1.done; v1s_1_1 = v1s_1.next()) {
|
|
247
|
+
var v1 = v1s_1_1.value;
|
|
248
|
+
switch (condition.type) {
|
|
249
|
+
case ConditionType.EqualTo:
|
|
250
|
+
v1 = this.getStringForValue(v1);
|
|
251
|
+
v2 = this.getStringForValue(v2);
|
|
252
|
+
if (v1 === v2) {
|
|
253
|
+
result = true;
|
|
254
|
+
}
|
|
255
|
+
break;
|
|
256
|
+
case ConditionType.NotEqualTo:
|
|
257
|
+
v1 = this.getStringForValue(v1);
|
|
258
|
+
v2 = this.getStringForValue(v2);
|
|
259
|
+
if (v1 !== v2) {
|
|
260
|
+
result = true;
|
|
261
|
+
}
|
|
262
|
+
break;
|
|
263
|
+
case ConditionType.GreaterThan:
|
|
264
|
+
v1 = parseFloat(v1);
|
|
265
|
+
v2 = parseFloat(v2);
|
|
266
|
+
if (v1 >= v2) {
|
|
267
|
+
result = true;
|
|
268
|
+
}
|
|
269
|
+
break;
|
|
270
|
+
case ConditionType.LessThan:
|
|
271
|
+
v1 = parseFloat(v1);
|
|
272
|
+
v2 = parseFloat(v2);
|
|
273
|
+
if (v1 <= v2) {
|
|
274
|
+
result = true;
|
|
275
|
+
}
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
catch (e_6_1) { e_6 = { error: e_6_1 }; }
|
|
281
|
+
finally {
|
|
282
|
+
try {
|
|
283
|
+
if (v1s_1_1 && !v1s_1_1.done && (_b = v1s_1.return)) _b.call(v1s_1);
|
|
284
|
+
}
|
|
285
|
+
finally { if (e_6) throw e_6.error; }
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
290
|
+
finally {
|
|
291
|
+
try {
|
|
292
|
+
if (v2s_1_1 && !v2s_1_1.done && (_a = v2s_1.return)) _a.call(v2s_1);
|
|
293
|
+
}
|
|
294
|
+
finally { if (e_5) throw e_5.error; }
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return result;
|
|
298
|
+
};
|
|
299
|
+
/**
|
|
300
|
+
* @private
|
|
301
|
+
* @param {?} value
|
|
302
|
+
* @return {?}
|
|
303
|
+
*/
|
|
304
|
+
FilterService.prototype.getStringForValue = /**
|
|
305
|
+
* @private
|
|
306
|
+
* @param {?} value
|
|
307
|
+
* @return {?}
|
|
308
|
+
*/
|
|
309
|
+
function (value) {
|
|
310
|
+
switch (value) {
|
|
311
|
+
case null:
|
|
312
|
+
return 'null';
|
|
313
|
+
default:
|
|
314
|
+
return value.toString();
|
|
315
|
+
}
|
|
316
|
+
};
|
|
317
|
+
/**
|
|
318
|
+
* Gets the current values for an array of strings.
|
|
319
|
+
* @param paths The array of strings to check.
|
|
320
|
+
* @param currentQuestionnaireForm The current form data, can be null/undefined.
|
|
321
|
+
* @returns An array of strings/values
|
|
322
|
+
* @author Will Poulson
|
|
323
|
+
*/
|
|
324
|
+
/**
|
|
325
|
+
* Gets the current values for an array of strings.
|
|
326
|
+
* @author Will Poulson
|
|
327
|
+
* @private
|
|
328
|
+
* @param {?} paths The array of strings to check.
|
|
329
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
330
|
+
* @return {?} An array of strings/values
|
|
331
|
+
*/
|
|
332
|
+
FilterService.prototype.getValuesForArray = /**
|
|
333
|
+
* Gets the current values for an array of strings.
|
|
334
|
+
* @author Will Poulson
|
|
335
|
+
* @private
|
|
336
|
+
* @param {?} paths The array of strings to check.
|
|
337
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
338
|
+
* @return {?} An array of strings/values
|
|
339
|
+
*/
|
|
340
|
+
function (paths, currentQuestionnaireForm) {
|
|
341
|
+
var e_7, _a;
|
|
342
|
+
if (currentQuestionnaireForm) {
|
|
343
|
+
/** @type {?} */
|
|
344
|
+
var values = [];
|
|
345
|
+
try {
|
|
346
|
+
for (var paths_1 = tslib_1.__values(paths), paths_1_1 = paths_1.next(); !paths_1_1.done; paths_1_1 = paths_1.next()) {
|
|
347
|
+
var path = paths_1_1.value;
|
|
348
|
+
/** @type {?} */
|
|
349
|
+
var value = this.getValueForString(path, currentQuestionnaireForm);
|
|
350
|
+
values.push(value);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
354
|
+
finally {
|
|
355
|
+
try {
|
|
356
|
+
if (paths_1_1 && !paths_1_1.done && (_a = paths_1.return)) _a.call(paths_1);
|
|
357
|
+
}
|
|
358
|
+
finally { if (e_7) throw e_7.error; }
|
|
359
|
+
}
|
|
360
|
+
return values;
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
return paths;
|
|
364
|
+
}
|
|
365
|
+
};
|
|
366
|
+
/**
|
|
367
|
+
* Gets a current value for a string.
|
|
368
|
+
* @param path The string value to check.
|
|
369
|
+
* @param currentQuestionnaireForm The current form data, can be null/undefined.
|
|
370
|
+
* @returns A string/value.
|
|
371
|
+
* @author Will Poulson
|
|
372
|
+
*/
|
|
373
|
+
/**
|
|
374
|
+
* Gets a current value for a string.
|
|
375
|
+
* @author Will Poulson
|
|
376
|
+
* @private
|
|
377
|
+
* @param {?} path The string value to check.
|
|
378
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
379
|
+
* @return {?} A string/value.
|
|
380
|
+
*/
|
|
381
|
+
FilterService.prototype.getValueForString = /**
|
|
382
|
+
* Gets a current value for a string.
|
|
383
|
+
* @author Will Poulson
|
|
384
|
+
* @private
|
|
385
|
+
* @param {?} path The string value to check.
|
|
386
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
387
|
+
* @return {?} A string/value.
|
|
388
|
+
*/
|
|
389
|
+
function (path, currentQuestionnaireForm) {
|
|
390
|
+
if (currentQuestionnaireForm) {
|
|
391
|
+
/** @type {?} */
|
|
392
|
+
var control = currentQuestionnaireForm.get(path);
|
|
393
|
+
return control ? control.value : this.convertStringToValue(path);
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
return this.convertStringToValue(path);
|
|
397
|
+
}
|
|
398
|
+
};
|
|
399
|
+
/**
|
|
400
|
+
* Converts a string to a value.
|
|
401
|
+
* Eg. true/false.
|
|
402
|
+
* @param path The string value to check for conversion;
|
|
403
|
+
* @returns Either a string or the converted value.
|
|
404
|
+
* @author Will Poulson
|
|
405
|
+
*/
|
|
406
|
+
/**
|
|
407
|
+
* Converts a string to a value.
|
|
408
|
+
* Eg. true/false.
|
|
409
|
+
* @author Will Poulson
|
|
410
|
+
* @private
|
|
411
|
+
* @param {?} path The string value to check for conversion;
|
|
412
|
+
* @return {?} Either a string or the converted value.
|
|
413
|
+
*/
|
|
414
|
+
FilterService.prototype.convertStringToValue = /**
|
|
415
|
+
* Converts a string to a value.
|
|
416
|
+
* Eg. true/false.
|
|
417
|
+
* @author Will Poulson
|
|
418
|
+
* @private
|
|
419
|
+
* @param {?} path The string value to check for conversion;
|
|
420
|
+
* @return {?} Either a string or the converted value.
|
|
421
|
+
*/
|
|
422
|
+
function (path) {
|
|
423
|
+
switch (path) {
|
|
424
|
+
case 'true':
|
|
425
|
+
return true;
|
|
426
|
+
case 'false':
|
|
427
|
+
return false;
|
|
428
|
+
case 'null':
|
|
429
|
+
return null;
|
|
430
|
+
default:
|
|
431
|
+
return path;
|
|
432
|
+
}
|
|
433
|
+
};
|
|
434
|
+
FilterService.decorators = [
|
|
435
|
+
{ type: Injectable, args: [{
|
|
436
|
+
providedIn: 'root'
|
|
437
|
+
},] }
|
|
438
|
+
];
|
|
439
|
+
/** @nocollapse */
|
|
440
|
+
FilterService.ctorParameters = function () { return []; };
|
|
441
|
+
/** @nocollapse */ FilterService.ngInjectableDef = i0.defineInjectable({ factory: function FilterService_Factory() { return new FilterService(); }, token: FilterService, providedIn: "root" });
|
|
442
|
+
return FilterService;
|
|
443
|
+
}());
|
|
444
|
+
export { FilterService };
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2xvd2dyZWVuL2dnLXF1ZXN0aW9ubmFpcmUtdjIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBSzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUM3RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQzs7QUFFN0U7SUFLRTtJQUFnQixDQUFDO0lBRWpCOzs7Ozs7T0FNRzs7Ozs7Ozs7SUFDSSxzQ0FBYzs7Ozs7OztJQUFyQixVQUFzQixRQUF3QixFQUFFLHdCQUEwQzs7O1lBQ2xGLGdCQUFnQixHQUFHLEVBQUU7O1lBQzNCLEtBQXNCLElBQUEsYUFBQSxpQkFBQSxRQUFRLENBQUEsa0NBQUEsd0RBQUU7Z0JBQTNCLElBQU0sT0FBTyxxQkFBQTtnQkFDaEIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFOzt3QkFDMUUsaUJBQWlCLEdBQUcsRUFBRTs7d0JBQzVCLEtBQXVCLElBQUEsS0FBQSxpQkFBQSxPQUFPLENBQUMsU0FBUyxDQUFBLGdCQUFBLDRCQUFFOzRCQUFyQyxJQUFNLFFBQVEsV0FBQTs0QkFDakIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFO2dDQUVqRixJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTs7d0NBQ3hCLHlCQUF5QixHQUFHLEVBQUU7O3dDQUNwQyxLQUErQixJQUFBLEtBQUEsaUJBQUEsUUFBUSxDQUFDLGlCQUFpQixDQUFBLGdCQUFBLDRCQUFFOzRDQUF0RCxJQUFNLGdCQUFnQixXQUFBOzRDQUN6QixJQUFJLElBQUks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Ozs7Ozs7SUFDSyx5Q0FBaUI7Ozs7Ozs7O0lBQXpCLFVBQTBCLElBQVksRUFBRSx3QkFBbUM7UUFDekUsSUFBSSx3QkFBd0IsRUFBRTs7Z0JBQ3RCLE9BQU8sR0FBRyx3QkFBd0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO1lBQ2xELE9BQU8sT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbEU7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRzs7Ozs7Ozs7O0lBQ0ssNENBQW9COzs7Ozs7OztJQUE1QixVQUE2QixJQUFZO1FBQ3ZDLFFBQVEsSUFBSSxFQUFFO1lBQ1osS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxDQUFDO1lBQ2QsS0FBSyxPQUFPO2dCQUNWLE9BQU8sS0FBSyxDQUFDO1lBQ2YsS0FBSyxNQUFNO2dCQUNULE9BQU8sSUFBSSxDQUFDO1lBQ2Q7Z0JBQ0UsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNILENBQUM7O2dCQWhORixVQUFVLFNBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25COzs7Ozt3QkFWRDtDQXlOQyxBQWpORCxJQWlOQztTQTlNWSxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2VjdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvc2VjdGlvbic7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb25kaXRpb24gfSBmcm9tICcuLi9pbnRlcmZhY2VzL2NvbmRpdGlvbic7XG5pbXBvcnQgeyBDb25kaXRpb25Hcm91cCB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZGl0aW9uLWdyb3VwJztcbmltcG9ydCB7IENvbmRpdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9jb25kaXRpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IENvbmRpdGlvblJlbGF0aW9uc2hpcCB9IGZyb20gJy4uL2VudW1zL2NvbmRpdGlvbi1yZWxhdGlvbnNoaXAuZW51bSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZpbHRlclNlcnZpY2Uge1xuXG4gIGNvbnN0cnVjdG9yKCkgeyB9XG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgYW4gYXJyYXkgb2Ygc2VjdGlvbnMgYmFzZWQgb24gdGhlaXIgY29uZGl0aW9uIGdyb3Vwcy5cbiAgICogQHBhcmFtIHNlY3Rpb25zIFRoZSBhcnJheSBvZiBzZWN0aW9ucyB0byBmaWx0ZXIuXG4gICAqIEBwYXJhbSBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gVGhlIGN1cnJlbnQgZm9ybSBkYXRhLCBjYW4gYmUgbnVsbC91bmRlZmluZWQuXG4gICAqIEByZXR1cm5zIEFuIGFycmF5IG9mIGZpbHRlcmVkIHNlY3Rpb25zIHdpdGggdGhlaXIgZmlsdGVyZWQgcXVlc3Rpb25zLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHVibGljIGZpbHRlclNlY3Rpb25zKHNlY3Rpb25zOiBBcnJheTxTZWN0aW9uPiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXAgfCBudWxsKTogQXJyYXk8U2VjdGlvbj4ge1xuICAgIGNvbnN0IGZpbHRlcmVkU2VjdGlvbnMgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHNlY3Rpb24gb2Ygc2VjdGlvbnMpIHtcbiAgICAgIGlmICh0aGlzLm1lZXRzQ29uZGl0aW9uR3JvdXBzKHNlY3Rpb24uY29uZGl0aW9uR3JvdXBzLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0pKSB7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkUXVlc3Rpb25zID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcXVlc3Rpb24gb2Ygc2VjdGlvbi5xdWVzdGlvbnMpIHtcbiAgICAgICAgICBpZiAodGhpcy5tZWV0c0NvbmRpdGlvbkdyb3VwcyhxdWVzdGlvbi5jb25kaXRpb25Hcm91cHMsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSkpIHtcblxuICAgICAgICAgICAgaWYgKHF1ZXN0aW9uLnJlcGVhdGVyUXVlc3Rpb25zKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkUmVwZWF0ZXJRdWVzdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCByZXBlYXRlclF1ZXN0aW9uIG9mIHF1ZXN0aW9uLnJlcGVhdGVyUXVlc3Rpb25zKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubWVldHNDb25kaXRpb25Hcm91cHMocmVwZWF0ZXJRdWVzdGlvbi5jb25kaXRpb25Hcm91cHMsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSkpIHtcbiAgICAgICAgICAgICAgICAgIGZpbHRlcmVkUmVwZWF0ZXJRdWVzdGlvbnMucHVzaChyZXBlYXRlclF1ZXN0aW9uKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZmlsdGVyZWRRdWVzdGlvbnMucHVzaChxdWVzdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHNlY3Rpb24ucXVlc3Rpb25zID0gZmlsdGVyZWRRdWVzdGlvbnM7XG4gICAgICAgIGZpbHRlcmVkU2VjdGlvbnMucHVzaChzZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZpbHRlcmVkU2VjdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGVhY2ggY29uZGl0aW9uIGdyb3VwcyBjb25kaXRpb25zIGhhdmUgYmVlbiBtZXQuXG4gICAqIEBwYXJhbSBjb25kaXRpb25Hcm91cHMgVGhlIGFycmF5IG9mIGNvbmRpdGlvbiBncm91cHMuXG4gICAqIEBwYXJhbSBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gVGhlIGN1cnJlbnQgZm9ybSBkYXRhLCBjYW4gYmUgbnVsbC91bmRlZmluZWQuXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiBzdGF0aW5nIGlmIHRoZSBjb25kaXRpb24gZ3JvdXBzIGNvbmRpdGlvbnMgaGFzIGJlZW4gbWV0LlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBtZWV0c0NvbmRpdGlvbkdyb3Vwcyhjb25kaXRpb25Hcm91cHM6IEFycmF5PENvbmRpdGlvbkdyb3VwPiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXAgfCBudWxsKTogYm9vbGVhbiB7XG4gICAgaWYgKCFjb25kaXRpb25Hcm91cHMgfHwgY29uZGl0aW9uR3JvdXBzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBjb25kaXRpb25Hcm91cHMuZXZlcnkoKHgpID0+IHtcbiAgICAgIHJldHVybiB0aGlzLm1lZXRzQ29uZGl0aW9uR3JvdXAoeCwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtKSA9PT0gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYSBjb25kaXRpb24gZ3JvdXBzIGNvbmRpdGlvbnMgaGF2ZSBiZWVuIG1ldC5cbiAgICogQHBhcmFtIGNvbmRpdGlvbkdyb3VwIFRoZSBjb25kaXRpb24gZ3JvdXAgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gVGhlIGN1cnJlbnQgZm9ybSBkYXRhLCBjYW4gYmUgbnVsbC91bmRlZmluZWQuXG4gICAqIEByZXR1cm5zIEEgYm9vbGVhbiBzdGF0aW5nIGlmIHRoZSBjb25kaXRpb24gZ3JvdXAgY29uZGl0aW9ucyBoYXMgYmVlbiBtZXQuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIG1lZXRzQ29uZGl0aW9uR3JvdXAoY29uZGl0aW9uR3JvdXA6IENvbmRpdGlvbkdyb3VwLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMgfHwgY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdHMgPSBbXTtcblxuICAgIGZvciAoY29uc3QgY29uZGl0aW9uIG9mIGNvbmRpdGlvbkdyb3VwLmNvbmRpdGlvbnMpIHtcbiAgICAgIHJlc3VsdHMucHVzaCh0aGlzLm1lZXRzQ29uZGl0aW9uKGNvbmRpdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtKSk7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjb25kaXRpb25Hcm91cC5yZWxhdGlvbnNoaXApIHtcbiAgICAgIGNhc2UgQ29uZGl0aW9uUmVsYXRpb25zaGlwLkV2ZXJ5OlxuICAgICAgICByZXR1cm4gcmVzdWx0cy5ldmVyeSgoeCkgPT4ge1xuICAgICAgICAgIHJldHVybiB4ID09PSB0cnVlO1xuICAgICAgICB9KTtcbiAgICAgIGNhc2UgQ29uZGl0aW9uUmVsYXRpb25zaGlwLkFueTpcbiAgICAgICAgcmV0dXJuICEhcmVzdWx0cy5maW5kKCh4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHggPT09IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGNvbmRpdGlvbiBoYXMgYmVlbiBtZXQuXG4gICAqIEBwYXJhbSBjb25kaXRpb24gVGhlIGNvbmRpdGlvbiB0byBjaGVjay5cbiAgICogQHBhcmFtIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSBUaGUgY3VycmVudCBmb3JtIGRhdGEsIGNhbiBiZSBudWxsL3VuZGVmaW5lZC5cbiAgICogQHJldHVybnMgQSBib29sZWFuIHN0YXRpbmcgaWYgdGhlIGNvbmRpdGlvbiBncm91cCBjb25kaXRpb25zIGhhcyBiZWVuIG1ldC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgbWVldHNDb25kaXRpb24oY29uZGl0aW9uOiBDb25kaXRpb24sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwKTogYm9vbGVhbiB7XG4gICAgY29uc3QgdjFzOiBBcnJheTxhbnk+ID0gdGhpcy5nZXRWYWx1ZXNGb3JBcnJheShjb25kaXRpb24udjFzLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0pO1xuICAgIGNvbnN0IHYyczogQXJyYXk8YW55PiA9IHRoaXMuZ2V0VmFsdWVzRm9yQXJyYXkoY29uZGl0aW9uLnYycywgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtKTtcblxuICAgIGxldCByZXN1bHQgPSBmYWxzZTtcblxuICAgIHN3aXRjaCAoY29uZGl0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgQ29uZGl0aW9uVHlwZS5FeGNsdWRlczpcbiAgICAgICAgcmVzdWx0ID0gIHYxcy5maWx0ZXIoKHYxKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHYycy5pbmRleE9mKHYxKSA+IC0xO1xuICAgICAgICB9KS5sZW5ndGggPT09IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBDb25kaXRpb25UeXBlLkluY2x1ZGVzOlxuICAgICAgICByZXN1bHQgPSB2MXMuZmlsdGVyKCh2MSkgPT4ge1xuICAgICAgICAgIHJldHVybiB2MnMuaW5kZXhPZih2MSkgPiAtMTtcbiAgICAgICAgfSkubGVuZ3RoICE9PSAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGZvciAobGV0IHYyIG9mIHYycykge1xuICAgICAgICAgIGZvciAobGV0IHYxIG9mIHYxcykge1xuICAgICAgICAgICAgc3dpdGNoIChjb25kaXRpb24udHlwZSkge1xuICAgICAgICAgICAgICBjYXNlIENvbmRpdGlvblR5cGUuRXF1YWxUbzpcbiAgICAgICAgICAgICAgICB2MSA9IHRoaXMuZ2V0U3RyaW5nRm9yVmFsdWUodjEpO1xuICAgICAgICAgICAgICAgIHYyID0gdGhpcy5nZXRTdHJpbmdGb3JWYWx1ZSh2Mik7XG4gICAgICAgICAgICAgICAgaWYgKHYxID09PSB2MikgeyByZXN1bHQgPSB0cnVlOyB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgQ29uZGl0aW9uVHlwZS5Ob3RFcXVhbFRvOlxuICAgICAgICAgICAgICAgIHYxID0gdGhpcy5nZXRTdHJpbmdGb3JWYWx1ZSh2MSk7XG4gICAgICAgICAgICAgICAgdjIgPSB0aGlzLmdldFN0cmluZ0ZvclZhbHVlKHYyKTtcbiAgICAgICAgICAgICAgICBpZiAodjEgIT09IHYyKSB7IHJlc3VsdCA9IHRydWU7IH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBDb25kaXRpb25UeXBlLkdyZWF0ZXJUaGFuOlxuICAgICAgICAgICAgICAgIHYxID0gcGFyc2VGbG9hdCh2MSk7XG4gICAgICAgICAgICAgICAgdjIgPSBwYXJzZUZsb2F0KHYyKTtcbiAgICAgICAgICAgICAgICBpZiAodjEgPj0gdjIpIHsgcmVzdWx0ID0gdHJ1ZTsgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIENvbmRpdGlvblR5cGUuTGVzc1RoYW46XG4gICAgICAgICAgICAgICAgdjEgPSBwYXJzZUZsb2F0KHYxKTtcbiAgICAgICAgICAgICAgICB2MiA9IHBhcnNlRmxvYXQodjIpO1xuICAgICAgICAgICAgICAgIGlmICh2MSA8PSB2MikgeyByZXN1bHQgPSB0cnVlOyB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3RyaW5nRm9yVmFsdWUodmFsdWUpIHtcbiAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICBjYXNlIG51bGw6XG4gICAgICAgIHJldHVybiAnbnVsbCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgY3VycmVudCB2YWx1ZXMgZm9yIGFuIGFycmF5IG9mIHN0cmluZ3MuXG4gICAqIEBwYXJhbSBwYXRocyBUaGUgYXJyYXkgb2Ygc3RyaW5ncyB0byBjaGVjay5cbiAgICogQHBhcmFtIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSBUaGUgY3VycmVudCBmb3JtIGRhdGEsIGNhbiBiZSBudWxsL3VuZGVmaW5lZC5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2Ygc3RyaW5ncy92YWx1ZXNcbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgZ2V0VmFsdWVzRm9yQXJyYXkocGF0aHM6IEFycmF5PHN0cmluZz4sIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwKTogQXJyYXk8YW55PiB7XG4gICAgaWYgKGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSkge1xuICAgICAgY29uc3QgdmFsdWVzID0gW107XG4gICAgICBmb3IgKGNvbnN0IHBhdGggb2YgcGF0aHMpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmdldFZhbHVlRm9yU3RyaW5nKHBhdGgsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSk7XG4gICAgICAgIHZhbHVlcy5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2YWx1ZXM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwYXRocztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGN1cnJlbnQgdmFsdWUgZm9yIGEgc3RyaW5nLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgc3RyaW5nIHZhbHVlIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtIFRoZSBjdXJyZW50IGZvcm0gZGF0YSwgY2FuIGJlIG51bGwvdW5kZWZpbmVkLlxuICAgKiBAcmV0dXJucyBBIHN0cmluZy92YWx1ZS5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgZ2V0VmFsdWVGb3JTdHJpbmcocGF0aDogc3RyaW5nLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCkge1xuICAgIGlmIChjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0pIHtcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0uZ2V0KHBhdGgpO1xuICAgICAgcmV0dXJuIGNvbnRyb2wgPyBjb250cm9sLnZhbHVlIDogdGhpcy5jb252ZXJ0U3RyaW5nVG9WYWx1ZShwYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydFN0cmluZ1RvVmFsdWUocGF0aCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGEgc3RyaW5nIHRvIGEgdmFsdWUuXG4gICAqIEVnLiB0cnVlL2ZhbHNlLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgc3RyaW5nIHZhbHVlIHRvIGNoZWNrIGZvciBjb252ZXJzaW9uO1xuICAgKiBAcmV0dXJucyBFaXRoZXIgYSBzdHJpbmcgb3IgdGhlIGNvbnZlcnRlZCB2YWx1ZS5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgY29udmVydFN0cmluZ1RvVmFsdWUocGF0aDogc3RyaW5nKSB7XG4gICAgc3dpdGNoIChwYXRoKSB7XG4gICAgICBjYXNlICd0cnVlJzpcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICBjYXNlICdmYWxzZSc6XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgfVxufVxuIl19
|