@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.
Files changed (79) hide show
  1. package/bundles/glowgreen-gg-questionnaire-v2.umd.js +2102 -0
  2. package/bundles/glowgreen-gg-questionnaire-v2.umd.js.map +1 -0
  3. package/bundles/glowgreen-gg-questionnaire-v2.umd.min.js +2 -0
  4. package/bundles/glowgreen-gg-questionnaire-v2.umd.min.js.map +1 -0
  5. package/esm2015/glowgreen-gg-questionnaire-v2.js +11 -0
  6. package/esm2015/lib/enums/condition-relationship.enum.js +11 -0
  7. package/esm2015/lib/enums/condition-type.enum.js +15 -0
  8. package/esm2015/lib/enums/input-type.enum.js +20 -0
  9. package/esm2015/lib/enums/question-type.enum.js +17 -0
  10. package/esm2015/lib/enums/repeater-question-type.enum.js +11 -0
  11. package/esm2015/lib/enums/validation-type.enum.js +15 -0
  12. package/esm2015/lib/gg-questionnaire-v2.module.js +41 -0
  13. package/esm2015/lib/interfaces/attachment.js +15 -0
  14. package/esm2015/lib/interfaces/checklist-item.js +15 -0
  15. package/esm2015/lib/interfaces/condition-group.js +15 -0
  16. package/esm2015/lib/interfaces/condition.js +17 -0
  17. package/esm2015/lib/interfaces/question.js +41 -0
  18. package/esm2015/lib/interfaces/questionnaire-options.js +21 -0
  19. package/esm2015/lib/interfaces/questionnaire.js +15 -0
  20. package/esm2015/lib/interfaces/repeater-question.js +27 -0
  21. package/esm2015/lib/interfaces/section.js +19 -0
  22. package/esm2015/lib/interfaces/select-option.js +15 -0
  23. package/esm2015/lib/interfaces/validator.js +15 -0
  24. package/esm2015/lib/services/filter.service.js +258 -0
  25. package/esm2015/lib/services/form-constructor.service.js +245 -0
  26. package/esm2015/lib/services/questionnaire.service.js +644 -0
  27. package/esm2015/public_api.js +16 -0
  28. package/esm5/glowgreen-gg-questionnaire-v2.js +11 -0
  29. package/esm5/lib/enums/condition-relationship.enum.js +11 -0
  30. package/esm5/lib/enums/condition-type.enum.js +15 -0
  31. package/esm5/lib/enums/input-type.enum.js +20 -0
  32. package/esm5/lib/enums/question-type.enum.js +17 -0
  33. package/esm5/lib/enums/repeater-question-type.enum.js +11 -0
  34. package/esm5/lib/enums/validation-type.enum.js +15 -0
  35. package/esm5/lib/gg-questionnaire-v2.module.js +49 -0
  36. package/esm5/lib/interfaces/attachment.js +15 -0
  37. package/esm5/lib/interfaces/checklist-item.js +15 -0
  38. package/esm5/lib/interfaces/condition-group.js +15 -0
  39. package/esm5/lib/interfaces/condition.js +17 -0
  40. package/esm5/lib/interfaces/question.js +41 -0
  41. package/esm5/lib/interfaces/questionnaire-options.js +21 -0
  42. package/esm5/lib/interfaces/questionnaire.js +15 -0
  43. package/esm5/lib/interfaces/repeater-question.js +27 -0
  44. package/esm5/lib/interfaces/section.js +19 -0
  45. package/esm5/lib/interfaces/select-option.js +15 -0
  46. package/esm5/lib/interfaces/validator.js +15 -0
  47. package/esm5/lib/services/filter.service.js +445 -0
  48. package/esm5/lib/services/form-constructor.service.js +460 -0
  49. package/esm5/lib/services/questionnaire.service.js +943 -0
  50. package/esm5/public_api.js +16 -0
  51. package/fesm2015/glowgreen-gg-questionnaire-v2.js +1194 -0
  52. package/fesm2015/glowgreen-gg-questionnaire-v2.js.map +1 -0
  53. package/fesm5/glowgreen-gg-questionnaire-v2.js +1897 -0
  54. package/fesm5/glowgreen-gg-questionnaire-v2.js.map +1 -0
  55. package/glowgreen-gg-questionnaire-v2.d.ts +6 -0
  56. package/glowgreen-gg-questionnaire-v2.metadata.json +1 -0
  57. package/lib/enums/condition-relationship.enum.d.ts +4 -0
  58. package/lib/enums/condition-type.enum.d.ts +8 -0
  59. package/lib/enums/input-type.enum.d.ts +13 -0
  60. package/lib/enums/question-type.enum.d.ts +10 -0
  61. package/lib/enums/repeater-question-type.enum.d.ts +4 -0
  62. package/lib/enums/validation-type.enum.d.ts +8 -0
  63. package/lib/gg-questionnaire-v2.module.d.ts +5 -0
  64. package/lib/interfaces/attachment.d.ts +4 -0
  65. package/lib/interfaces/checklist-item.d.ts +4 -0
  66. package/lib/interfaces/condition-group.d.ts +6 -0
  67. package/lib/interfaces/condition.d.ts +6 -0
  68. package/lib/interfaces/question.d.ts +24 -0
  69. package/lib/interfaces/questionnaire-options.d.ts +7 -0
  70. package/lib/interfaces/questionnaire.d.ts +5 -0
  71. package/lib/interfaces/repeater-question.d.ts +15 -0
  72. package/lib/interfaces/section.d.ts +8 -0
  73. package/lib/interfaces/select-option.d.ts +4 -0
  74. package/lib/interfaces/validator.d.ts +5 -0
  75. package/lib/services/filter.service.d.ts +62 -0
  76. package/lib/services/form-constructor.service.d.ts +78 -0
  77. package/lib/services/questionnaire.service.d.ts +163 -0
  78. package/package.json +21 -0
  79. 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=