@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,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @record
|
|
7
|
+
*/
|
|
8
|
+
export function Condition() { }
|
|
9
|
+
if (false) {
|
|
10
|
+
/** @type {?} */
|
|
11
|
+
Condition.prototype.v1s;
|
|
12
|
+
/** @type {?} */
|
|
13
|
+
Condition.prototype.type;
|
|
14
|
+
/** @type {?} */
|
|
15
|
+
Condition.prototype.v2s;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZGl0aW9uLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdsb3dncmVlbi9nZy1xdWVzdGlvbm5haXJlLXYyLyIsInNvdXJjZXMiOlsibGliL2ludGVyZmFjZXMvY29uZGl0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSwrQkFJQzs7O0lBSEcsd0JBQW1COztJQUNuQix5QkFBb0I7O0lBQ3BCLHdCQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmRpdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9jb25kaXRpb24tdHlwZS5lbnVtJztcblxuZXhwb3J0IGludGVyZmFjZSBDb25kaXRpb24ge1xuICAgIHYxczogQXJyYXk8c3RyaW5nPjtcbiAgICB0eXBlOiBDb25kaXRpb25UeXBlO1xuICAgIHYyczogQXJyYXk8c3RyaW5nPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @record
|
|
7
|
+
*/
|
|
8
|
+
export function Question() { }
|
|
9
|
+
if (false) {
|
|
10
|
+
/** @type {?} */
|
|
11
|
+
Question.prototype.title;
|
|
12
|
+
/** @type {?} */
|
|
13
|
+
Question.prototype.name;
|
|
14
|
+
/** @type {?} */
|
|
15
|
+
Question.prototype.type;
|
|
16
|
+
/** @type {?|undefined} */
|
|
17
|
+
Question.prototype.inputType;
|
|
18
|
+
/** @type {?|undefined} */
|
|
19
|
+
Question.prototype.attachment_path;
|
|
20
|
+
/** @type {?|undefined} */
|
|
21
|
+
Question.prototype.attachment_mime_type;
|
|
22
|
+
/** @type {?|undefined} */
|
|
23
|
+
Question.prototype.defaultValue;
|
|
24
|
+
/** @type {?|undefined} */
|
|
25
|
+
Question.prototype.conditionGroups;
|
|
26
|
+
/** @type {?|undefined} */
|
|
27
|
+
Question.prototype.repeaterQuestions;
|
|
28
|
+
/** @type {?|undefined} */
|
|
29
|
+
Question.prototype.repeaterItemLabel;
|
|
30
|
+
/** @type {?|undefined} */
|
|
31
|
+
Question.prototype.repeaterDisplayName;
|
|
32
|
+
/** @type {?|undefined} */
|
|
33
|
+
Question.prototype.selectOptions;
|
|
34
|
+
/** @type {?|undefined} */
|
|
35
|
+
Question.prototype.checklistItems;
|
|
36
|
+
/** @type {?|undefined} */
|
|
37
|
+
Question.prototype.validators;
|
|
38
|
+
/** @type {?|undefined} */
|
|
39
|
+
Question.prototype.clearfields;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2xvd2dyZWVuL2dnLXF1ZXN0aW9ubmFpcmUtdjIvIiwic291cmNlcyI6WyJsaWIvaW50ZXJmYWNlcy9xdWVzdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBU0EsOEJBZ0JDOzs7SUFmRyx5QkFBYzs7SUFDZCx3QkFBYTs7SUFDYix3QkFBbUI7O0lBQ25CLDZCQUFzQjs7SUFDdEIsbUNBQXlCOztJQUN6Qix3Q0FBOEI7O0lBQzlCLGdDQUFtQjs7SUFDbkIsbUNBQXdDOztJQUN4QyxxQ0FBNEM7O0lBQzVDLHFDQUEyQjs7SUFDM0IsdUNBQTZCOztJQUM3QixpQ0FBb0M7O0lBQ3BDLGtDQUFzQzs7SUFDdEMsOEJBQThCOztJQUM5QiwrQkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBRdWVzdGlvblR5cGUgfSBmcm9tICcuLi9lbnVtcy9xdWVzdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0IHsgQ29uZGl0aW9uR3JvdXAgfSBmcm9tICcuL2NvbmRpdGlvbi1ncm91cCc7XG5pbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tICcuL3ZhbGlkYXRvcic7XG5pbXBvcnQgeyBSZXBlYXRlclF1ZXN0aW9uIH0gZnJvbSAnLi9yZXBlYXRlci1xdWVzdGlvbic7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb24gfSBmcm9tICcuL3NlbGVjdC1vcHRpb24nO1xuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vZW51bXMvaW5wdXQtdHlwZS5lbnVtJztcbmltcG9ydCB7IENoZWNrbGlzdEl0ZW0gfSBmcm9tICcuL2NoZWNrbGlzdC1pdGVtJztcbmltcG9ydCB7IEF0dGFjaG1lbnQgfSBmcm9tICcuL2F0dGFjaG1lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9uIHtcbiAgICB0aXRsZTogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBRdWVzdGlvblR5cGU7XG4gICAgaW5wdXRUeXBlPzogSW5wdXRUeXBlO1xuICAgIGF0dGFjaG1lbnRfcGF0aD86IHN0cmluZztcbiAgICBhdHRhY2htZW50X21pbWVfdHlwZT86IHN0cmluZztcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnk7XG4gICAgY29uZGl0aW9uR3JvdXBzPzogQXJyYXk8Q29uZGl0aW9uR3JvdXA+O1xuICAgIHJlcGVhdGVyUXVlc3Rpb25zPzogQXJyYXk8UmVwZWF0ZXJRdWVzdGlvbj47XG4gICAgcmVwZWF0ZXJJdGVtTGFiZWw/OiBzdHJpbmc7XG4gICAgcmVwZWF0ZXJEaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICBzZWxlY3RPcHRpb25zPzogQXJyYXk8U2VsZWN0T3B0aW9uPjtcbiAgICBjaGVja2xpc3RJdGVtcz86IEFycmF5PENoZWNrbGlzdEl0ZW0+O1xuICAgIHZhbGlkYXRvcnM/OiBBcnJheTxWYWxpZGF0b3I+O1xuICAgIGNsZWFyZmllbGRzPzogQXJyYXk8c3RyaW5nPjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @record
|
|
7
|
+
*/
|
|
8
|
+
export function QuestionnaireOptions() { }
|
|
9
|
+
if (false) {
|
|
10
|
+
/** @type {?} */
|
|
11
|
+
QuestionnaireOptions.prototype.emitSectionFinishEvent;
|
|
12
|
+
/** @type {?} */
|
|
13
|
+
QuestionnaireOptions.prototype.skipToFirstSection;
|
|
14
|
+
/** @type {?} */
|
|
15
|
+
QuestionnaireOptions.prototype.skipToFirstQuestion;
|
|
16
|
+
/** @type {?} */
|
|
17
|
+
QuestionnaireOptions.prototype.allowSkipRequiredField;
|
|
18
|
+
/** @type {?} */
|
|
19
|
+
QuestionnaireOptions.prototype.allowNavigateBackwards;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS1vcHRpb25zLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdsb3dncmVlbi9nZy1xdWVzdGlvbm5haXJlLXYyLyIsInNvdXJjZXMiOlsibGliL2ludGVyZmFjZXMvcXVlc3Rpb25uYWlyZS1vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSwwQ0FNQzs7O0lBTEcsc0RBQWdDOztJQUNoQyxrREFBNEI7O0lBQzVCLG1EQUE2Qjs7SUFDN0Isc0RBQWdDOztJQUNoQyxzREFBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmVPcHRpb25zIHtcbiAgICBlbWl0U2VjdGlvbkZpbmlzaEV2ZW50OiBib29sZWFuO1xuICAgIHNraXBUb0ZpcnN0U2VjdGlvbjogYm9vbGVhbjtcbiAgICBza2lwVG9GaXJzdFF1ZXN0aW9uOiBib29sZWFuO1xuICAgIGFsbG93U2tpcFJlcXVpcmVkRmllbGQ6IGJvb2xlYW47XG4gICAgYWxsb3dOYXZpZ2F0ZUJhY2t3YXJkczogYm9vbGVhbjtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @record
|
|
7
|
+
*/
|
|
8
|
+
export function Questionnaire() { }
|
|
9
|
+
if (false) {
|
|
10
|
+
/** @type {?} */
|
|
11
|
+
Questionnaire.prototype.name;
|
|
12
|
+
/** @type {?} */
|
|
13
|
+
Questionnaire.prototype.sections;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlc3Rpb25uYWlyZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnbG93Z3JlZW4vZ2ctcXVlc3Rpb25uYWlyZS12Mi8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmZhY2VzL3F1ZXN0aW9ubmFpcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLG1DQUdDOzs7SUFGRyw2QkFBYTs7SUFDYixpQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSAnLi9zZWN0aW9uJztcbmltcG9ydCB7IFF1ZXN0aW9ubmFpcmVPcHRpb25zIH0gZnJvbSAnLi9xdWVzdGlvbm5haXJlLW9wdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXN0aW9ubmFpcmUge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBzZWN0aW9uczogQXJyYXk8U2VjdGlvbj47XG59XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @record
|
|
7
|
+
*/
|
|
8
|
+
export function RepeaterQuestion() { }
|
|
9
|
+
if (false) {
|
|
10
|
+
/** @type {?} */
|
|
11
|
+
RepeaterQuestion.prototype.label;
|
|
12
|
+
/** @type {?} */
|
|
13
|
+
RepeaterQuestion.prototype.name;
|
|
14
|
+
/** @type {?} */
|
|
15
|
+
RepeaterQuestion.prototype.type;
|
|
16
|
+
/** @type {?|undefined} */
|
|
17
|
+
RepeaterQuestion.prototype.inputType;
|
|
18
|
+
/** @type {?|undefined} */
|
|
19
|
+
RepeaterQuestion.prototype.defaultValue;
|
|
20
|
+
/** @type {?|undefined} */
|
|
21
|
+
RepeaterQuestion.prototype.validators;
|
|
22
|
+
/** @type {?|undefined} */
|
|
23
|
+
RepeaterQuestion.prototype.selectOptions;
|
|
24
|
+
/** @type {?|undefined} */
|
|
25
|
+
RepeaterQuestion.prototype.conditionGroups;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0ZXItcXVlc3Rpb24uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2xvd2dyZWVuL2dnLXF1ZXN0aW9ubmFpcmUtdjIvIiwic291cmNlcyI6WyJsaWIvaW50ZXJmYWNlcy9yZXBlYXRlci1xdWVzdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBTUEsc0NBU0M7OztJQVJHLGlDQUFjOztJQUNkLGdDQUFhOztJQUNiLGdDQUEyQjs7SUFDM0IscUNBQXNCOztJQUN0Qix3Q0FBbUI7O0lBQ25CLHNDQUE4Qjs7SUFDOUIseUNBQW9DOztJQUNwQywyQ0FBd0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBWYWxpZGF0b3IgfSBmcm9tICcuL3ZhbGlkYXRvcic7XG5pbXBvcnQgeyBSZXBlYXRlclF1ZXN0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL3JlcGVhdGVyLXF1ZXN0aW9uLXR5cGUuZW51bSc7XG5pbXBvcnQgeyBTZWxlY3RPcHRpb24gfSBmcm9tICcuL3NlbGVjdC1vcHRpb24nO1xuaW1wb3J0IHsgSW5wdXRUeXBlIH0gZnJvbSAnLi4vZW51bXMvaW5wdXQtdHlwZS5lbnVtJztcbmltcG9ydCB7IENvbmRpdGlvbkdyb3VwIH0gZnJvbSAnLi9jb25kaXRpb24tZ3JvdXAnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlcGVhdGVyUXVlc3Rpb24ge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHR5cGU6IFJlcGVhdGVyUXVlc3Rpb25UeXBlO1xuICAgIGlucHV0VHlwZT86IElucHV0VHlwZTtcbiAgICBkZWZhdWx0VmFsdWU/OiBhbnk7XG4gICAgdmFsaWRhdG9ycz86IEFycmF5PFZhbGlkYXRvcj47XG4gICAgc2VsZWN0T3B0aW9ucz86IEFycmF5PFNlbGVjdE9wdGlvbj47XG4gICAgY29uZGl0aW9uR3JvdXBzPzogQXJyYXk8Q29uZGl0aW9uR3JvdXA+O1xufVxuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @record
|
|
7
|
+
*/
|
|
8
|
+
export function Section() { }
|
|
9
|
+
if (false) {
|
|
10
|
+
/** @type {?} */
|
|
11
|
+
Section.prototype.name;
|
|
12
|
+
/** @type {?} */
|
|
13
|
+
Section.prototype.title;
|
|
14
|
+
/** @type {?} */
|
|
15
|
+
Section.prototype.questions;
|
|
16
|
+
/** @type {?|undefined} */
|
|
17
|
+
Section.prototype.conditionGroups;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnbG93Z3JlZW4vZ2ctcXVlc3Rpb25uYWlyZS12Mi8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmZhY2VzL3NlY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLDZCQUtDOzs7SUFKRyx1QkFBYTs7SUFDYix3QkFBYzs7SUFDZCw0QkFBMkI7O0lBQzNCLGtDQUF3QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXN0aW9uIH0gZnJvbSAnLi9xdWVzdGlvbic7XG5pbXBvcnQgeyBDb25kaXRpb25Hcm91cCB9IGZyb20gJy4vY29uZGl0aW9uLWdyb3VwJztcblxuZXhwb3J0IGludGVyZmFjZSBTZWN0aW9uIHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICBxdWVzdGlvbnM6IEFycmF5PFF1ZXN0aW9uPjtcbiAgICBjb25kaXRpb25Hcm91cHM/OiBBcnJheTxDb25kaXRpb25Hcm91cD47XG59XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @record
|
|
7
|
+
*/
|
|
8
|
+
export function SelectOption() { }
|
|
9
|
+
if (false) {
|
|
10
|
+
/** @type {?} */
|
|
11
|
+
SelectOption.prototype.label;
|
|
12
|
+
/** @type {?} */
|
|
13
|
+
SelectOption.prototype.value;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BnbG93Z3JlZW4vZ2ctcXVlc3Rpb25uYWlyZS12Mi8iLCJzb3VyY2VzIjpbImxpYi9pbnRlcmZhY2VzL3NlbGVjdC1vcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLGtDQUdDOzs7SUFGRyw2QkFBYzs7SUFDZCw2QkFBVyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0T3B0aW9uIHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIHZhbHVlOiBhbnk7XG59XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @record
|
|
7
|
+
*/
|
|
8
|
+
export function Validator() { }
|
|
9
|
+
if (false) {
|
|
10
|
+
/** @type {?} */
|
|
11
|
+
Validator.prototype.type;
|
|
12
|
+
/** @type {?} */
|
|
13
|
+
Validator.prototype.data;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGdsb3dncmVlbi9nZy1xdWVzdGlvbm5haXJlLXYyLyIsInNvdXJjZXMiOlsibGliL2ludGVyZmFjZXMvdmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSwrQkFHQzs7O0lBRkcseUJBQXFCOztJQUNyQix5QkFBYSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFZhbGlkYXRpb25UeXBlIH0gZnJvbSAnLi4vZW51bXMvdmFsaWRhdGlvbi10eXBlLmVudW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFZhbGlkYXRvciB7XG4gICAgdHlwZTogVmFsaWRhdGlvblR5cGU7XG4gICAgZGF0YTogT2JqZWN0O1xufVxuIl19
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview added by tsickle
|
|
3
|
+
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
|
+
*/
|
|
5
|
+
import { Injectable } from '@angular/core';
|
|
6
|
+
import { ConditionType } from '../enums/condition-type.enum';
|
|
7
|
+
import { ConditionRelationship } from '../enums/condition-relationship.enum';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
export class FilterService {
|
|
10
|
+
constructor() { }
|
|
11
|
+
/**
|
|
12
|
+
* Filters an array of sections based on their condition groups.
|
|
13
|
+
* @author Will Poulson
|
|
14
|
+
* @param {?} sections The array of sections to filter.
|
|
15
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
16
|
+
* @return {?} An array of filtered sections with their filtered questions.
|
|
17
|
+
*/
|
|
18
|
+
filterSections(sections, currentQuestionnaireForm) {
|
|
19
|
+
/** @type {?} */
|
|
20
|
+
const filteredSections = [];
|
|
21
|
+
for (const section of sections) {
|
|
22
|
+
if (this.meetsConditionGroups(section.conditionGroups, currentQuestionnaireForm)) {
|
|
23
|
+
/** @type {?} */
|
|
24
|
+
const filteredQuestions = [];
|
|
25
|
+
for (const question of section.questions) {
|
|
26
|
+
if (this.meetsConditionGroups(question.conditionGroups, currentQuestionnaireForm)) {
|
|
27
|
+
if (question.repeaterQuestions) {
|
|
28
|
+
/** @type {?} */
|
|
29
|
+
const filteredRepeaterQuestions = [];
|
|
30
|
+
for (const repeaterQuestion of question.repeaterQuestions) {
|
|
31
|
+
if (this.meetsConditionGroups(repeaterQuestion.conditionGroups, currentQuestionnaireForm)) {
|
|
32
|
+
filteredRepeaterQuestions.push(repeaterQuestion);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
filteredQuestions.push(question);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
section.questions = filteredQuestions;
|
|
40
|
+
filteredSections.push(section);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return filteredSections;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Checks if each condition groups conditions have been met.
|
|
47
|
+
* @author Will Poulson
|
|
48
|
+
* @private
|
|
49
|
+
* @param {?} conditionGroups The array of condition groups.
|
|
50
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
51
|
+
* @return {?} A boolean stating if the condition groups conditions has been met.
|
|
52
|
+
*/
|
|
53
|
+
meetsConditionGroups(conditionGroups, currentQuestionnaireForm) {
|
|
54
|
+
if (!conditionGroups || conditionGroups.length === 0) {
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
return conditionGroups.every((/**
|
|
58
|
+
* @param {?} x
|
|
59
|
+
* @return {?}
|
|
60
|
+
*/
|
|
61
|
+
(x) => {
|
|
62
|
+
return this.meetsConditionGroup(x, currentQuestionnaireForm) === true;
|
|
63
|
+
}));
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Checks if a condition groups conditions have been met.
|
|
67
|
+
* @author Will Poulson
|
|
68
|
+
* @private
|
|
69
|
+
* @param {?} conditionGroup The condition group to check.
|
|
70
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
71
|
+
* @return {?} A boolean stating if the condition group conditions has been met.
|
|
72
|
+
*/
|
|
73
|
+
meetsConditionGroup(conditionGroup, currentQuestionnaireForm) {
|
|
74
|
+
if (!conditionGroup.conditions || conditionGroup.conditions.length === 0) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
/** @type {?} */
|
|
78
|
+
const results = [];
|
|
79
|
+
for (const condition of conditionGroup.conditions) {
|
|
80
|
+
results.push(this.meetsCondition(condition, currentQuestionnaireForm));
|
|
81
|
+
}
|
|
82
|
+
switch (conditionGroup.relationship) {
|
|
83
|
+
case ConditionRelationship.Every:
|
|
84
|
+
return results.every((/**
|
|
85
|
+
* @param {?} x
|
|
86
|
+
* @return {?}
|
|
87
|
+
*/
|
|
88
|
+
(x) => {
|
|
89
|
+
return x === true;
|
|
90
|
+
}));
|
|
91
|
+
case ConditionRelationship.Any:
|
|
92
|
+
return !!results.find((/**
|
|
93
|
+
* @param {?} x
|
|
94
|
+
* @return {?}
|
|
95
|
+
*/
|
|
96
|
+
(x) => {
|
|
97
|
+
return x === true;
|
|
98
|
+
}));
|
|
99
|
+
default:
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Checks if a condition has been met.
|
|
105
|
+
* @author Will Poulson
|
|
106
|
+
* @private
|
|
107
|
+
* @param {?} condition The condition to check.
|
|
108
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
109
|
+
* @return {?} A boolean stating if the condition group conditions has been met.
|
|
110
|
+
*/
|
|
111
|
+
meetsCondition(condition, currentQuestionnaireForm) {
|
|
112
|
+
/** @type {?} */
|
|
113
|
+
const v1s = this.getValuesForArray(condition.v1s, currentQuestionnaireForm);
|
|
114
|
+
/** @type {?} */
|
|
115
|
+
const v2s = this.getValuesForArray(condition.v2s, currentQuestionnaireForm);
|
|
116
|
+
/** @type {?} */
|
|
117
|
+
let result = false;
|
|
118
|
+
switch (condition.type) {
|
|
119
|
+
case ConditionType.Excludes:
|
|
120
|
+
result = v1s.filter((/**
|
|
121
|
+
* @param {?} v1
|
|
122
|
+
* @return {?}
|
|
123
|
+
*/
|
|
124
|
+
(v1) => {
|
|
125
|
+
return v2s.indexOf(v1) > -1;
|
|
126
|
+
})).length === 0;
|
|
127
|
+
break;
|
|
128
|
+
case ConditionType.Includes:
|
|
129
|
+
result = v1s.filter((/**
|
|
130
|
+
* @param {?} v1
|
|
131
|
+
* @return {?}
|
|
132
|
+
*/
|
|
133
|
+
(v1) => {
|
|
134
|
+
return v2s.indexOf(v1) > -1;
|
|
135
|
+
})).length !== 0;
|
|
136
|
+
break;
|
|
137
|
+
default:
|
|
138
|
+
for (let v2 of v2s) {
|
|
139
|
+
for (let v1 of v1s) {
|
|
140
|
+
switch (condition.type) {
|
|
141
|
+
case ConditionType.EqualTo:
|
|
142
|
+
v1 = this.getStringForValue(v1);
|
|
143
|
+
v2 = this.getStringForValue(v2);
|
|
144
|
+
if (v1 === v2) {
|
|
145
|
+
result = true;
|
|
146
|
+
}
|
|
147
|
+
break;
|
|
148
|
+
case ConditionType.NotEqualTo:
|
|
149
|
+
v1 = this.getStringForValue(v1);
|
|
150
|
+
v2 = this.getStringForValue(v2);
|
|
151
|
+
if (v1 !== v2) {
|
|
152
|
+
result = true;
|
|
153
|
+
}
|
|
154
|
+
break;
|
|
155
|
+
case ConditionType.GreaterThan:
|
|
156
|
+
v1 = parseFloat(v1);
|
|
157
|
+
v2 = parseFloat(v2);
|
|
158
|
+
if (v1 >= v2) {
|
|
159
|
+
result = true;
|
|
160
|
+
}
|
|
161
|
+
break;
|
|
162
|
+
case ConditionType.LessThan:
|
|
163
|
+
v1 = parseFloat(v1);
|
|
164
|
+
v2 = parseFloat(v2);
|
|
165
|
+
if (v1 <= v2) {
|
|
166
|
+
result = true;
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* @private
|
|
177
|
+
* @param {?} value
|
|
178
|
+
* @return {?}
|
|
179
|
+
*/
|
|
180
|
+
getStringForValue(value) {
|
|
181
|
+
switch (value) {
|
|
182
|
+
case null:
|
|
183
|
+
return 'null';
|
|
184
|
+
default:
|
|
185
|
+
return value.toString();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Gets the current values for an array of strings.
|
|
190
|
+
* @author Will Poulson
|
|
191
|
+
* @private
|
|
192
|
+
* @param {?} paths The array of strings to check.
|
|
193
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
194
|
+
* @return {?} An array of strings/values
|
|
195
|
+
*/
|
|
196
|
+
getValuesForArray(paths, currentQuestionnaireForm) {
|
|
197
|
+
if (currentQuestionnaireForm) {
|
|
198
|
+
/** @type {?} */
|
|
199
|
+
const values = [];
|
|
200
|
+
for (const path of paths) {
|
|
201
|
+
/** @type {?} */
|
|
202
|
+
const value = this.getValueForString(path, currentQuestionnaireForm);
|
|
203
|
+
values.push(value);
|
|
204
|
+
}
|
|
205
|
+
return values;
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
return paths;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Gets a current value for a string.
|
|
213
|
+
* @author Will Poulson
|
|
214
|
+
* @private
|
|
215
|
+
* @param {?} path The string value to check.
|
|
216
|
+
* @param {?} currentQuestionnaireForm The current form data, can be null/undefined.
|
|
217
|
+
* @return {?} A string/value.
|
|
218
|
+
*/
|
|
219
|
+
getValueForString(path, currentQuestionnaireForm) {
|
|
220
|
+
if (currentQuestionnaireForm) {
|
|
221
|
+
/** @type {?} */
|
|
222
|
+
const control = currentQuestionnaireForm.get(path);
|
|
223
|
+
return control ? control.value : this.convertStringToValue(path);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
return this.convertStringToValue(path);
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Converts a string to a value.
|
|
231
|
+
* Eg. true/false.
|
|
232
|
+
* @author Will Poulson
|
|
233
|
+
* @private
|
|
234
|
+
* @param {?} path The string value to check for conversion;
|
|
235
|
+
* @return {?} Either a string or the converted value.
|
|
236
|
+
*/
|
|
237
|
+
convertStringToValue(path) {
|
|
238
|
+
switch (path) {
|
|
239
|
+
case 'true':
|
|
240
|
+
return true;
|
|
241
|
+
case 'false':
|
|
242
|
+
return false;
|
|
243
|
+
case 'null':
|
|
244
|
+
return null;
|
|
245
|
+
default:
|
|
246
|
+
return path;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
FilterService.decorators = [
|
|
251
|
+
{ type: Injectable, args: [{
|
|
252
|
+
providedIn: 'root'
|
|
253
|
+
},] }
|
|
254
|
+
];
|
|
255
|
+
/** @nocollapse */
|
|
256
|
+
FilterService.ctorParameters = () => [];
|
|
257
|
+
/** @nocollapse */ FilterService.ngInjectableDef = i0.defineInjectable({ factory: function FilterService_Factory() { return new FilterService(); }, token: FilterService, providedIn: "root" });
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AZ2xvd2dyZWVuL2dnLXF1ZXN0aW9ubmFpcmUtdjIvIiwic291cmNlcyI6WyJsaWIvc2VydmljZXMvZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzdELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOztBQUs3RSxNQUFNLE9BQU8sYUFBYTtJQUV4QixnQkFBZ0IsQ0FBQzs7Ozs7Ozs7SUFTVixjQUFjLENBQUMsUUFBd0IsRUFBRSx3QkFBMEM7O2NBQ2xGLGdCQUFnQixHQUFHLEVBQUU7UUFDM0IsS0FBSyxNQUFNLE9BQU8sSUFBSSxRQUFRLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSx3QkFBd0IsQ0FBQyxFQUFFOztzQkFDMUUsaUJBQWlCLEdBQUcsRUFBRTtnQkFDNUIsS0FBSyxNQUFNLFFBQVEsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO29CQUN4QyxJQUFJLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLHdCQUF3QixDQUFDLEVBQUU7d0JBRWpGLElBQUksUUFBUSxDQUFDLGlCQUFpQixFQUFFOztrQ0FDeEIseUJBQXlCLEdBQUcsRUFBRTs0QkFDcEMsS0FBSyxNQUFNLGdCQUFnQixJQUFJLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRTtnQ0FDekQsSUFBSSxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLHdCQUF3QixDQUFDLEVBQUU7b0NBQ3pGLHlCQUF5QixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2lDQUNsRDs2QkFDRjt5QkFDRjt3QkFFRCxp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Q0UsT0FBTyxJQUFJLENBQUM7U0FDZjtJQUNILENBQUM7OztZQWhORixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9zZWN0aW9uJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gJy4uL2ludGVyZmFjZXMvY29uZGl0aW9uJztcbmltcG9ydCB7IENvbmRpdGlvbkdyb3VwIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb25kaXRpb24tZ3JvdXAnO1xuaW1wb3J0IHsgQ29uZGl0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL2NvbmRpdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0IHsgQ29uZGl0aW9uUmVsYXRpb25zaGlwIH0gZnJvbSAnLi4vZW51bXMvY29uZGl0aW9uLXJlbGF0aW9uc2hpcC5lbnVtJztcblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgRmlsdGVyU2VydmljZSB7XG5cbiAgY29uc3RydWN0b3IoKSB7IH1cblxuICAvKipcbiAgICogRmlsdGVycyBhbiBhcnJheSBvZiBzZWN0aW9ucyBiYXNlZCBvbiB0aGVpciBjb25kaXRpb24gZ3JvdXBzLlxuICAgKiBAcGFyYW0gc2VjdGlvbnMgVGhlIGFycmF5IG9mIHNlY3Rpb25zIHRvIGZpbHRlci5cbiAgICogQHBhcmFtIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSBUaGUgY3VycmVudCBmb3JtIGRhdGEsIGNhbiBiZSBudWxsL3VuZGVmaW5lZC5cbiAgICogQHJldHVybnMgQW4gYXJyYXkgb2YgZmlsdGVyZWQgc2VjdGlvbnMgd2l0aCB0aGVpciBmaWx0ZXJlZCBxdWVzdGlvbnMuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwdWJsaWMgZmlsdGVyU2VjdGlvbnMoc2VjdGlvbnM6IEFycmF5PFNlY3Rpb24+LCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCB8IG51bGwpOiBBcnJheTxTZWN0aW9uPiB7XG4gICAgY29uc3QgZmlsdGVyZWRTZWN0aW9ucyA9IFtdO1xuICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiBzZWN0aW9ucykge1xuICAgICAgaWYgKHRoaXMubWVldHNDb25kaXRpb25Hcm91cHMoc2VjdGlvbi5jb25kaXRpb25Hcm91cHMsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSkpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyZWRRdWVzdGlvbnMgPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBxdWVzdGlvbiBvZiBzZWN0aW9uLnF1ZXN0aW9ucykge1xuICAgICAgICAgIGlmICh0aGlzLm1lZXRzQ29uZGl0aW9uR3JvdXBzKHF1ZXN0aW9uLmNvbmRpdGlvbkdyb3VwcywgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtKSkge1xuXG4gICAgICAgICAgICBpZiAocXVlc3Rpb24ucmVwZWF0ZXJRdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRSZXBlYXRlclF1ZXN0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICBmb3IgKGNvbnN0IHJlcGVhdGVyUXVlc3Rpb24gb2YgcXVlc3Rpb24ucmVwZWF0ZXJRdWVzdGlvbnMpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5tZWV0c0NvbmRpdGlvbkdyb3VwcyhyZXBlYXRlclF1ZXN0aW9uLmNvbmRpdGlvbkdyb3VwcywgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtKSkge1xuICAgICAgICAgICAgICAgICAgZmlsdGVyZWRSZXBlYXRlclF1ZXN0aW9ucy5wdXNoKHJlcGVhdGVyUXVlc3Rpb24pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmaWx0ZXJlZFF1ZXN0aW9ucy5wdXNoKHF1ZXN0aW9uKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgc2VjdGlvbi5xdWVzdGlvbnMgPSBmaWx0ZXJlZFF1ZXN0aW9ucztcbiAgICAgICAgZmlsdGVyZWRTZWN0aW9ucy5wdXNoKHNlY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWRTZWN0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgZWFjaCBjb25kaXRpb24gZ3JvdXBzIGNvbmRpdGlvbnMgaGF2ZSBiZWVuIG1ldC5cbiAgICogQHBhcmFtIGNvbmRpdGlvbkdyb3VwcyBUaGUgYXJyYXkgb2YgY29uZGl0aW9uIGdyb3Vwcy5cbiAgICogQHBhcmFtIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSBUaGUgY3VycmVudCBmb3JtIGRhdGEsIGNhbiBiZSBudWxsL3VuZGVmaW5lZC5cbiAgICogQHJldHVybnMgQSBib29sZWFuIHN0YXRpbmcgaWYgdGhlIGNvbmRpdGlvbiBncm91cHMgY29uZGl0aW9ucyBoYXMgYmVlbiBtZXQuXG4gICAqIEBhdXRob3IgV2lsbCBQb3Vsc29uXG4gICAqL1xuICBwcml2YXRlIG1lZXRzQ29uZGl0aW9uR3JvdXBzKGNvbmRpdGlvbkdyb3VwczogQXJyYXk8Q29uZGl0aW9uR3JvdXA+LCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm06IEZvcm1Hcm91cCB8IG51bGwpOiBib29sZWFuIHtcbiAgICBpZiAoIWNvbmRpdGlvbkdyb3VwcyB8fCBjb25kaXRpb25Hcm91cHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmRpdGlvbkdyb3Vwcy5ldmVyeSgoeCkgPT4ge1xuICAgICAgcmV0dXJuIHRoaXMubWVldHNDb25kaXRpb25Hcm91cCh4LCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0pID09PSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBhIGNvbmRpdGlvbiBncm91cHMgY29uZGl0aW9ucyBoYXZlIGJlZW4gbWV0LlxuICAgKiBAcGFyYW0gY29uZGl0aW9uR3JvdXAgVGhlIGNvbmRpdGlvbiBncm91cCB0byBjaGVjay5cbiAgICogQHBhcmFtIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSBUaGUgY3VycmVudCBmb3JtIGRhdGEsIGNhbiBiZSBudWxsL3VuZGVmaW5lZC5cbiAgICogQHJldHVybnMgQSBib29sZWFuIHN0YXRpbmcgaWYgdGhlIGNvbmRpdGlvbiBncm91cCBjb25kaXRpb25zIGhhcyBiZWVuIG1ldC5cbiAgICogQGF1dGhvciBXaWxsIFBvdWxzb25cbiAgICovXG4gIHByaXZhdGUgbWVldHNDb25kaXRpb25Hcm91cChjb25kaXRpb25Hcm91cDogQ29uZGl0aW9uR3JvdXAsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwIHwgbnVsbCk6IGJvb2xlYW4ge1xuICAgIGlmICghY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucyB8fCBjb25kaXRpb25Hcm91cC5jb25kaXRpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0cyA9IFtdO1xuXG4gICAgZm9yIChjb25zdCBjb25kaXRpb24gb2YgY29uZGl0aW9uR3JvdXAuY29uZGl0aW9ucykge1xuICAgICAgcmVzdWx0cy5wdXNoKHRoaXMubWVldHNDb25kaXRpb24oY29uZGl0aW9uLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0pKTtcbiAgICB9XG5cbiAgICBzd2l0Y2ggKGNvbmRpdGlvbkdyb3VwLnJlbGF0aW9uc2hpcCkge1xuICAgICAgY2FzZSBDb25kaXRpb25SZWxhdGlvbnNoaXAuRXZlcnk6XG4gICAgICAgIHJldHVybiByZXN1bHRzLmV2ZXJ5KCh4KSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHggPT09IHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgY2FzZSBDb25kaXRpb25SZWxhdGlvbnNoaXAuQW55OlxuICAgICAgICByZXR1cm4gISFyZXN1bHRzLmZpbmQoKHgpID0+IHtcbiAgICAgICAgICByZXR1cm4geCA9PT0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGEgY29uZGl0aW9uIGhhcyBiZWVuIG1ldC5cbiAgICogQHBhcmFtIGNvbmRpdGlvbiBUaGUgY29uZGl0aW9uIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtIFRoZSBjdXJyZW50IGZvcm0gZGF0YSwgY2FuIGJlIG51bGwvdW5kZWZpbmVkLlxuICAgKiBAcmV0dXJucyBBIGJvb2xlYW4gc3RhdGluZyBpZiB0aGUgY29uZGl0aW9uIGdyb3VwIGNvbmRpdGlvbnMgaGFzIGJlZW4gbWV0LlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBtZWV0c0NvbmRpdGlvbihjb25kaXRpb246IENvbmRpdGlvbiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXApOiBib29sZWFuIHtcbiAgICBjb25zdCB2MXM6IEFycmF5PGFueT4gPSB0aGlzLmdldFZhbHVlc0ZvckFycmF5KGNvbmRpdGlvbi52MXMsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSk7XG4gICAgY29uc3QgdjJzOiBBcnJheTxhbnk+ID0gdGhpcy5nZXRWYWx1ZXNGb3JBcnJheShjb25kaXRpb24udjJzLCBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0pO1xuXG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xuXG4gICAgc3dpdGNoIChjb25kaXRpb24udHlwZSkge1xuICAgICAgY2FzZSBDb25kaXRpb25UeXBlLkV4Y2x1ZGVzOlxuICAgICAgICByZXN1bHQgPSAgdjFzLmZpbHRlcigodjEpID0+IHtcbiAgICAgICAgICByZXR1cm4gdjJzLmluZGV4T2YodjEpID4gLTE7XG4gICAgICAgIH0pLmxlbmd0aCA9PT0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIENvbmRpdGlvblR5cGUuSW5jbHVkZXM6XG4gICAgICAgIHJlc3VsdCA9IHYxcy5maWx0ZXIoKHYxKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHYycy5pbmRleE9mKHYxKSA+IC0xO1xuICAgICAgICB9KS5sZW5ndGggIT09IDA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgZm9yIChsZXQgdjIgb2YgdjJzKSB7XG4gICAgICAgICAgZm9yIChsZXQgdjEgb2YgdjFzKSB7XG4gICAgICAgICAgICBzd2l0Y2ggKGNvbmRpdGlvbi50eXBlKSB7XG4gICAgICAgICAgICAgIGNhc2UgQ29uZGl0aW9uVHlwZS5FcXVhbFRvOlxuICAgICAgICAgICAgICAgIHYxID0gdGhpcy5nZXRTdHJpbmdGb3JWYWx1ZSh2MSk7XG4gICAgICAgICAgICAgICAgdjIgPSB0aGlzLmdldFN0cmluZ0ZvclZhbHVlKHYyKTtcbiAgICAgICAgICAgICAgICBpZiAodjEgPT09IHYyKSB7IHJlc3VsdCA9IHRydWU7IH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBDb25kaXRpb25UeXBlLk5vdEVxdWFsVG86XG4gICAgICAgICAgICAgICAgdjEgPSB0aGlzLmdldFN0cmluZ0ZvclZhbHVlKHYxKTtcbiAgICAgICAgICAgICAgICB2MiA9IHRoaXMuZ2V0U3RyaW5nRm9yVmFsdWUodjIpO1xuICAgICAgICAgICAgICAgIGlmICh2MSAhPT0gdjIpIHsgcmVzdWx0ID0gdHJ1ZTsgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIENvbmRpdGlvblR5cGUuR3JlYXRlclRoYW46XG4gICAgICAgICAgICAgICAgdjEgPSBwYXJzZUZsb2F0KHYxKTtcbiAgICAgICAgICAgICAgICB2MiA9IHBhcnNlRmxvYXQodjIpO1xuICAgICAgICAgICAgICAgIGlmICh2MSA+PSB2MikgeyByZXN1bHQgPSB0cnVlOyB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgQ29uZGl0aW9uVHlwZS5MZXNzVGhhbjpcbiAgICAgICAgICAgICAgICB2MSA9IHBhcnNlRmxvYXQodjEpO1xuICAgICAgICAgICAgICAgIHYyID0gcGFyc2VGbG9hdCh2Mik7XG4gICAgICAgICAgICAgICAgaWYgKHYxIDw9IHYyKSB7IHJlc3VsdCA9IHRydWU7IH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRTdHJpbmdGb3JWYWx1ZSh2YWx1ZSkge1xuICAgIHN3aXRjaCAodmFsdWUpIHtcbiAgICAgIGNhc2UgbnVsbDpcbiAgICAgICAgcmV0dXJuICdudWxsJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IHZhbHVlcyBmb3IgYW4gYXJyYXkgb2Ygc3RyaW5ncy5cbiAgICogQHBhcmFtIHBhdGhzIFRoZSBhcnJheSBvZiBzdHJpbmdzIHRvIGNoZWNrLlxuICAgKiBAcGFyYW0gY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtIFRoZSBjdXJyZW50IGZvcm0gZGF0YSwgY2FuIGJlIG51bGwvdW5kZWZpbmVkLlxuICAgKiBAcmV0dXJucyBBbiBhcnJheSBvZiBzdHJpbmdzL3ZhbHVlc1xuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZXRWYWx1ZXNGb3JBcnJheShwYXRoczogQXJyYXk8c3RyaW5nPiwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtOiBGb3JtR3JvdXApOiBBcnJheTxhbnk+IHtcbiAgICBpZiAoY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtKSB7XG4gICAgICBjb25zdCB2YWx1ZXMgPSBbXTtcbiAgICAgIGZvciAoY29uc3QgcGF0aCBvZiBwYXRocykge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0VmFsdWVGb3JTdHJpbmcocGF0aCwgY3VycmVudFF1ZXN0aW9ubmFpcmVGb3JtKTtcbiAgICAgICAgdmFsdWVzLnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlcztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHBhdGhzO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgY3VycmVudCB2YWx1ZSBmb3IgYSBzdHJpbmcuXG4gICAqIEBwYXJhbSBwYXRoIFRoZSBzdHJpbmcgdmFsdWUgdG8gY2hlY2suXG4gICAqIEBwYXJhbSBjdXJyZW50UXVlc3Rpb25uYWlyZUZvcm0gVGhlIGN1cnJlbnQgZm9ybSBkYXRhLCBjYW4gYmUgbnVsbC91bmRlZmluZWQuXG4gICAqIEByZXR1cm5zIEEgc3RyaW5nL3ZhbHVlLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBnZXRWYWx1ZUZvclN0cmluZyhwYXRoOiBzdHJpbmcsIGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybTogRm9ybUdyb3VwKSB7XG4gICAgaWYgKGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybSkge1xuICAgICAgY29uc3QgY29udHJvbCA9IGN1cnJlbnRRdWVzdGlvbm5haXJlRm9ybS5nZXQocGF0aCk7XG4gICAgICByZXR1cm4gY29udHJvbCA/IGNvbnRyb2wudmFsdWUgOiB0aGlzLmNvbnZlcnRTdHJpbmdUb1ZhbHVlKHBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5jb252ZXJ0U3RyaW5nVG9WYWx1ZShwYXRoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydHMgYSBzdHJpbmcgdG8gYSB2YWx1ZS5cbiAgICogRWcuIHRydWUvZmFsc2UuXG4gICAqIEBwYXJhbSBwYXRoIFRoZSBzdHJpbmcgdmFsdWUgdG8gY2hlY2sgZm9yIGNvbnZlcnNpb247XG4gICAqIEByZXR1cm5zIEVpdGhlciBhIHN0cmluZyBvciB0aGUgY29udmVydGVkIHZhbHVlLlxuICAgKiBAYXV0aG9yIFdpbGwgUG91bHNvblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0U3RyaW5nVG9WYWx1ZShwYXRoOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHBhdGgpIHtcbiAgICAgIGNhc2UgJ3RydWUnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgJ2ZhbHNlJzpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICB9XG59XG4iXX0=
|