@openmrs/ngx-formentry 19.0.1-pre.489 → 19.0.1-pre.497

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 (208) hide show
  1. package/components/input/label.component.d.ts +1 -1
  2. package/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +1 -1
  3. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +1 -1
  4. package/components/number-input/number-input.component.d.ts +1 -1
  5. package/components/select/select.component.d.ts +1 -1
  6. package/fesm2022/openmrs-ngx-formentry.mjs +412 -380
  7. package/fesm2022/openmrs-ngx-formentry.mjs.map +1 -1
  8. package/form-entry/form-entry.module.d.ts +2 -2
  9. package/form-entry/form-factory/form.factory.d.ts +2 -2
  10. package/form-entry/helpers/js-expression-helper.d.ts +2 -2
  11. package/form-entry/services/form-schema-compiler.service.d.ts +2 -0
  12. package/form-entry/value-adapters/obs.adapter.d.ts +0 -1
  13. package/form-entry/value-adapters/person-attribute.adapter.d.ts +3 -3
  14. package/lib/index.d.ts +1 -1
  15. package/package.json +10 -12
  16. package/esm2022/abstract-controls-extension/afe-control-type.mjs +0 -8
  17. package/esm2022/abstract-controls-extension/afe-form-array.mjs +0 -89
  18. package/esm2022/abstract-controls-extension/afe-form-control.mjs +0 -91
  19. package/esm2022/abstract-controls-extension/afe-form-group.mjs +0 -66
  20. package/esm2022/abstract-controls-extension/control-extensions.mjs +0 -5
  21. package/esm2022/abstract-controls-extension/index.mjs +0 -5
  22. package/esm2022/abstract-controls-extension/value-change.listener.mjs +0 -2
  23. package/esm2022/change-tracking/control-relation.mjs +0 -44
  24. package/esm2022/change-tracking/control-relations.mjs +0 -32
  25. package/esm2022/components/afe-ng-select.component.mjs +0 -101
  26. package/esm2022/components/appointments-overview/appointments-overview.component.mjs +0 -116
  27. package/esm2022/components/check-box/checkbox.component.mjs +0 -110
  28. package/esm2022/components/check-box/checkbox.module.mjs +0 -19
  29. package/esm2022/components/custom-component-wrapper/custom-component-wrapper..module.mjs +0 -22
  30. package/esm2022/components/custom-component-wrapper/custom-component-wrapper.component.mjs +0 -21
  31. package/esm2022/components/custom-control-wrapper/custom-control-wrapper..module.mjs +0 -23
  32. package/esm2022/components/custom-control-wrapper/custom-control-wrapper.component.mjs +0 -68
  33. package/esm2022/components/date-time-picker/date-picker/date-picker.component.mjs +0 -188
  34. package/esm2022/components/date-time-picker/date-time-picker.component.mjs +0 -115
  35. package/esm2022/components/date-time-picker/date-time-picker.module.mjs +0 -48
  36. package/esm2022/components/date-time-picker/index.mjs +0 -9
  37. package/esm2022/components/date-time-picker/picker-modal/modal.component.mjs +0 -25
  38. package/esm2022/components/date-time-picker/pipes/moment.pipe.mjs +0 -17
  39. package/esm2022/components/date-time-picker/time-picker/time-picker.component.mjs +0 -121
  40. package/esm2022/components/file-upload/file-upload.component.mjs +0 -109
  41. package/esm2022/components/file-upload/file-upload.module.mjs +0 -37
  42. package/esm2022/components/file-upload/secure.pipe.mjs +0 -101
  43. package/esm2022/components/input/input.directive.mjs +0 -78
  44. package/esm2022/components/input/input.module.mjs +0 -23
  45. package/esm2022/components/input/label.component.mjs +0 -263
  46. package/esm2022/components/input/text-area.directive.mjs +0 -58
  47. package/esm2022/components/ngx-datetime-picker/ngx-datetime-picker.component.mjs +0 -87
  48. package/esm2022/components/ngx-datetime-picker/ngx-datetime-picker.module.mjs +0 -40
  49. package/esm2022/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.mjs +0 -114
  50. package/esm2022/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.mjs +0 -7
  51. package/esm2022/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.mjs +0 -347
  52. package/esm2022/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.mjs +0 -16
  53. package/esm2022/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.mjs +0 -39
  54. package/esm2022/components/ngx-pick-datetime/lib/date-time/calendar-body.component.mjs +0 -142
  55. package/esm2022/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.mjs +0 -439
  56. package/esm2022/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.mjs +0 -373
  57. package/esm2022/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.mjs +0 -367
  58. package/esm2022/components/ngx-pick-datetime/lib/date-time/calendar.component.mjs +0 -342
  59. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.mjs +0 -259
  60. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.mjs +0 -392
  61. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.mjs +0 -614
  62. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.mjs +0 -65
  63. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.mjs +0 -70
  64. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.mjs +0 -21
  65. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.mjs +0 -522
  66. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time.class.mjs +0 -166
  67. package/esm2022/components/ngx-pick-datetime/lib/date-time/date-time.module.mjs +0 -97
  68. package/esm2022/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.mjs +0 -28
  69. package/esm2022/components/ngx-pick-datetime/lib/date-time/timer-box.component.mjs +0 -90
  70. package/esm2022/components/ngx-pick-datetime/lib/date-time/timer.component.mjs +0 -292
  71. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog-config.class.mjs +0 -56
  72. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog-container.component.mjs +0 -243
  73. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.mjs +0 -119
  74. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog.module.mjs +0 -26
  75. package/esm2022/components/ngx-pick-datetime/lib/dialog/dialog.service.mjs +0 -233
  76. package/esm2022/components/ngx-pick-datetime/lib/utils/index.mjs +0 -5
  77. package/esm2022/components/ngx-pick-datetime/lib/utils/object.utils.mjs +0 -26
  78. package/esm2022/components/ngx-remote-select/ngx-remote-select.component.mjs +0 -151
  79. package/esm2022/components/ngx-remote-select/ngx-remote-select.module.mjs +0 -22
  80. package/esm2022/components/ngx-tabset/components/ngx-tab-set.component.mjs +0 -74
  81. package/esm2022/components/ngx-tabset/components/tab.component.mjs +0 -33
  82. package/esm2022/components/ngx-tabset/directives/hover-class.directive.mjs +0 -30
  83. package/esm2022/components/ngx-tabset/modules/ngx-tabset.module.mjs +0 -38
  84. package/esm2022/components/number-input/number-input.component.mjs +0 -254
  85. package/esm2022/components/number-input/number-input.module.mjs +0 -21
  86. package/esm2022/components/number-input/number.directive.mjs +0 -22
  87. package/esm2022/components/radio-button/radio.component.mjs +0 -98
  88. package/esm2022/components/radio-button/radio.module.mjs +0 -19
  89. package/esm2022/components/select/optgroup.directive.mjs +0 -19
  90. package/esm2022/components/select/option.directive.mjs +0 -19
  91. package/esm2022/components/select/select.component.mjs +0 -182
  92. package/esm2022/components/select/select.module.mjs +0 -23
  93. package/esm2022/components/workspace-launcher/workspace-launcher.component.mjs +0 -26
  94. package/esm2022/components/workspace-launcher/workspace-launcher.module.mjs +0 -19
  95. package/esm2022/form-entry/control-alerts/alert-helpers.mjs +0 -40
  96. package/esm2022/form-entry/control-alerts/can-generate-alert.mjs +0 -2
  97. package/esm2022/form-entry/control-calculators/can-calculate.mjs +0 -2
  98. package/esm2022/form-entry/control-hiders-disablers/can-disable.mjs +0 -2
  99. package/esm2022/form-entry/control-hiders-disablers/can-hide.mjs +0 -2
  100. package/esm2022/form-entry/control-hiders-disablers/disabler-helper.mjs +0 -32
  101. package/esm2022/form-entry/control-hiders-disablers/hider-helpers.mjs +0 -41
  102. package/esm2022/form-entry/data-sources/data-sources.mjs +0 -30
  103. package/esm2022/form-entry/data-sources/dummy-data-source.mjs +0 -104
  104. package/esm2022/form-entry/directives/collapse-animations.mjs +0 -11
  105. package/esm2022/form-entry/directives/collapse.directive.mjs +0 -172
  106. package/esm2022/form-entry/directives/historical-value.directive.mjs +0 -68
  107. package/esm2022/form-entry/error-renderer/error-renderer.component.mjs +0 -53
  108. package/esm2022/form-entry/expression-runner/expression-runner.mjs +0 -170
  109. package/esm2022/form-entry/form-entry.module.mjs +0 -194
  110. package/esm2022/form-entry/form-factory/control-relations.factory.mjs +0 -238
  111. package/esm2022/form-entry/form-factory/form-control.service.mjs +0 -118
  112. package/esm2022/form-entry/form-factory/form-node.mjs +0 -99
  113. package/esm2022/form-entry/form-factory/form.factory.mjs +0 -144
  114. package/esm2022/form-entry/form-factory/form.mjs +0 -190
  115. package/esm2022/form-entry/form-factory/hiders-disablers.factory.mjs +0 -68
  116. package/esm2022/form-entry/form-factory/index.mjs +0 -7
  117. package/esm2022/form-entry/form-factory/question.factory.mjs +0 -1123
  118. package/esm2022/form-entry/form-factory/show-messages.factory.mjs +0 -31
  119. package/esm2022/form-entry/form-factory/validation.factory.mjs +0 -182
  120. package/esm2022/form-entry/form-renderer/form-renderer.component.mjs +0 -277
  121. package/esm2022/form-entry/helpers/historical-expression-helper-service.mjs +0 -42
  122. package/esm2022/form-entry/helpers/historical-field-helper-service.mjs +0 -39
  123. package/esm2022/form-entry/helpers/js-expression-helper.mjs +0 -314
  124. package/esm2022/form-entry/helpers/risk-dataset-table.mjs +0 -247
  125. package/esm2022/form-entry/pipes/time-ago.pipe.mjs +0 -110
  126. package/esm2022/form-entry/question-models/checkbox.model.mjs +0 -11
  127. package/esm2022/form-entry/question-models/conditional-validation.model.mjs +0 -9
  128. package/esm2022/form-entry/question-models/custom-control-question.model.mjs +0 -10
  129. package/esm2022/form-entry/question-models/date-question.mjs +0 -12
  130. package/esm2022/form-entry/question-models/date-validation.model.mjs +0 -10
  131. package/esm2022/form-entry/question-models/decimal-validation.model.mjs +0 -19
  132. package/esm2022/form-entry/question-models/diagnosis-question.mjs +0 -12
  133. package/esm2022/form-entry/question-models/disallow-decimals-validation.model.mjs +0 -18
  134. package/esm2022/form-entry/question-models/file-upload-question.mjs +0 -13
  135. package/esm2022/form-entry/question-models/group-question.mjs +0 -12
  136. package/esm2022/form-entry/question-models/index.mjs +0 -24
  137. package/esm2022/form-entry/question-models/interfaces/base-options.mjs +0 -2
  138. package/esm2022/form-entry/question-models/interfaces/checkbox-options.mjs +0 -2
  139. package/esm2022/form-entry/question-models/interfaces/data-source.mjs +0 -2
  140. package/esm2022/form-entry/question-models/interfaces/date-question-options.mjs +0 -2
  141. package/esm2022/form-entry/question-models/interfaces/diagnosis-question-options.mjs +0 -2
  142. package/esm2022/form-entry/question-models/interfaces/file-upload-question-options.mjs +0 -2
  143. package/esm2022/form-entry/question-models/interfaces/group-question-options.mjs +0 -2
  144. package/esm2022/form-entry/question-models/interfaces/multi-select-options.mjs +0 -2
  145. package/esm2022/form-entry/question-models/interfaces/nested-questions.mjs +0 -7
  146. package/esm2022/form-entry/question-models/interfaces/radio-button-options.mjs +0 -2
  147. package/esm2022/form-entry/question-models/interfaces/remote-select-question-options.mjs +0 -2
  148. package/esm2022/form-entry/question-models/interfaces/repeating-question-options.mjs +0 -2
  149. package/esm2022/form-entry/question-models/interfaces/select-option.mjs +0 -2
  150. package/esm2022/form-entry/question-models/interfaces/select-question-options.mjs +0 -2
  151. package/esm2022/form-entry/question-models/interfaces/test-order-question-options.mjs +0 -2
  152. package/esm2022/form-entry/question-models/interfaces/text-area-question-options.mjs +0 -2
  153. package/esm2022/form-entry/question-models/interfaces/text-question-options.mjs +0 -2
  154. package/esm2022/form-entry/question-models/interfaces/ui-select-question-options.mjs +0 -2
  155. package/esm2022/form-entry/question-models/interfaces/workspace-launcher-options.mjs +0 -2
  156. package/esm2022/form-entry/question-models/js-expression-validation.model.mjs +0 -8
  157. package/esm2022/form-entry/question-models/max-length-validation.model.mjs +0 -9
  158. package/esm2022/form-entry/question-models/max-validation.model.mjs +0 -9
  159. package/esm2022/form-entry/question-models/min-length-validation.model.mjs +0 -9
  160. package/esm2022/form-entry/question-models/min-validation.model.mjs +0 -9
  161. package/esm2022/form-entry/question-models/models.mjs +0 -13
  162. package/esm2022/form-entry/question-models/multi-select-question.mjs +0 -11
  163. package/esm2022/form-entry/question-models/pair.model.mjs +0 -7
  164. package/esm2022/form-entry/question-models/question-base.mjs +0 -26
  165. package/esm2022/form-entry/question-models/radio-button.model.mjs +0 -12
  166. package/esm2022/form-entry/question-models/remote-select-question.mjs +0 -12
  167. package/esm2022/form-entry/question-models/rendering-type.mjs +0 -9
  168. package/esm2022/form-entry/question-models/repeating-question.mjs +0 -11
  169. package/esm2022/form-entry/question-models/select-option.mjs +0 -7
  170. package/esm2022/form-entry/question-models/select-question.mjs +0 -12
  171. package/esm2022/form-entry/question-models/test-order-question.mjs +0 -15
  172. package/esm2022/form-entry/question-models/text-area-input-question.mjs +0 -13
  173. package/esm2022/form-entry/question-models/text-input-question.mjs +0 -10
  174. package/esm2022/form-entry/question-models/ui-select-question.mjs +0 -11
  175. package/esm2022/form-entry/question-models/validation.model.mjs +0 -7
  176. package/esm2022/form-entry/question-models/workspace-launcher.model.mjs +0 -15
  177. package/esm2022/form-entry/services/debug-mode.service.mjs +0 -24
  178. package/esm2022/form-entry/services/form-errors.service.mjs +0 -21
  179. package/esm2022/form-entry/services/form-schema-compiler.service.mjs +0 -248
  180. package/esm2022/form-entry/services/historical-encounter-data.service.mjs +0 -172
  181. package/esm2022/form-entry/validators/conditional-answered.validator.mjs +0 -46
  182. package/esm2022/form-entry/validators/conditional-required.validator.mjs +0 -40
  183. package/esm2022/form-entry/validators/date.validator.mjs +0 -18
  184. package/esm2022/form-entry/validators/disallow-decimals.validator.mjs +0 -15
  185. package/esm2022/form-entry/validators/future-date-restriction.validator.mjs +0 -21
  186. package/esm2022/form-entry/validators/js-expression.validator.mjs +0 -26
  187. package/esm2022/form-entry/validators/max-date.validator.mjs +0 -23
  188. package/esm2022/form-entry/validators/max-length.validator.mjs +0 -17
  189. package/esm2022/form-entry/validators/max.validator.mjs +0 -21
  190. package/esm2022/form-entry/validators/min-date.validator.mjs +0 -23
  191. package/esm2022/form-entry/validators/min-length.validator.mjs +0 -17
  192. package/esm2022/form-entry/validators/min.validator.mjs +0 -21
  193. package/esm2022/form-entry/validators/required.validator.mjs +0 -11
  194. package/esm2022/form-entry/validators/validations.mjs +0 -5
  195. package/esm2022/form-entry/value-adapters/diagnosis.adapter.mjs +0 -241
  196. package/esm2022/form-entry/value-adapters/encounter.adapter.mjs +0 -190
  197. package/esm2022/form-entry/value-adapters/obs-adapter-helper.mjs +0 -559
  198. package/esm2022/form-entry/value-adapters/obs.adapter.mjs +0 -542
  199. package/esm2022/form-entry/value-adapters/order.adapter.mjs +0 -186
  200. package/esm2022/form-entry/value-adapters/patient-identifier.adapter.mjs +0 -77
  201. package/esm2022/form-entry/value-adapters/person-attribute.adapter.mjs +0 -88
  202. package/esm2022/form-entry/value-adapters/value.adapter.mjs +0 -2
  203. package/esm2022/lib/index.mjs +0 -59
  204. package/esm2022/openmrs-ngx-formentry.mjs +0 -5
  205. package/esm2022/public_api.mjs +0 -2
  206. package/esm2022/shared.module.mjs +0 -21
  207. /package/components/custom-component-wrapper/{custom-component-wrapper..module.d.ts → custom-component-wrapper.module.d.ts} +0 -0
  208. /package/components/custom-control-wrapper/{custom-control-wrapper..module.d.ts → custom-control-wrapper.module.d.ts} +0 -0
@@ -1,21 +0,0 @@
1
- import { DateValidator } from './date.validator';
2
- export class FutureDateRestrictionValidator {
3
- constructor() { }
4
- validate(control) {
5
- if (control.hidden) {
6
- return null;
7
- }
8
- const value = control.value;
9
- const now = new Date();
10
- if (value && value.length !== 0) {
11
- if (!new DateValidator().validate(value)) {
12
- const d = new Date(value);
13
- return d.getTime() > now.getTime()
14
- ? { futureDateRestriction: true }
15
- : null;
16
- }
17
- }
18
- return null;
19
- }
20
- }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnV0dXJlLWRhdGUtcmVzdHJpY3Rpb24udmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvZm9ybS1lbnRyeS92YWxpZGF0b3JzL2Z1dHVyZS1kYXRlLXJlc3RyaWN0aW9uLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsTUFBTSxPQUFPLDhCQUE4QjtJQUN6QyxnQkFBZSxDQUFDO0lBRWhCLFFBQVEsQ0FBQyxPQUF1QjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLE1BQU0sR0FBRyxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFN0IsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxDQUFDLEdBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBRWhDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUU7b0JBQ2hDLENBQUMsQ0FBQyxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRTtvQkFDakMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUNYLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZmVGb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0LWNvbnRyb2xzLWV4dGVuc2lvbi9hZmUtZm9ybS1jb250cm9sJztcbmltcG9ydCB7IERhdGVWYWxpZGF0b3IgfSBmcm9tICcuL2RhdGUudmFsaWRhdG9yJztcblxuZXhwb3J0IGNsYXNzIEZ1dHVyZURhdGVSZXN0cmljdGlvblZhbGlkYXRvciB7XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICB2YWxpZGF0ZShjb250cm9sOiBBZmVGb3JtQ29udHJvbCkge1xuICAgIGlmIChjb250cm9sLmhpZGRlbikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICAgIGNvbnN0IG5vdzogRGF0ZSA9IG5ldyBEYXRlKCk7XG5cbiAgICBpZiAodmFsdWUgJiYgdmFsdWUubGVuZ3RoICE9PSAwKSB7XG4gICAgICBpZiAoIW5ldyBEYXRlVmFsaWRhdG9yKCkudmFsaWRhdGUodmFsdWUpKSB7XG4gICAgICAgIGNvbnN0IGQ6IERhdGUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIGQuZ2V0VGltZSgpID4gbm93LmdldFRpbWUoKVxuICAgICAgICAgID8geyBmdXR1cmVEYXRlUmVzdHJpY3Rpb246IHRydWUgfVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuIl19
@@ -1,26 +0,0 @@
1
- import { ExpressionRunner } from '../expression-runner/expression-runner';
2
- import { JsExpressionHelper } from '../helpers/js-expression-helper';
3
- import { Validations } from './validations';
4
- export class JsExpressionValidator {
5
- constructor() { }
6
- validate(model, form) {
7
- // convert helper functions to string
8
- return (control) => {
9
- if (!Validations.JSExpressionValidatorsEnabled) {
10
- return null;
11
- }
12
- const expression = model.failsWhenExpression;
13
- const helper = new JsExpressionHelper();
14
- const dataDependencies = {};
15
- const helperFunctions = helper.helperFunctions;
16
- const runnable = new ExpressionRunner().getRunnable(expression, control, helperFunctions, dataDependencies, form);
17
- if (runnable.run()) {
18
- return {
19
- js_expression: { expression: expression, message: model.message }
20
- };
21
- }
22
- return null;
23
- };
24
- }
25
- }
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianMtZXhwcmVzc2lvbi52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9mb3JtLWVudHJ5L3ZhbGlkYXRvcnMvanMtZXhwcmVzc2lvbi52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDMUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFckUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1QyxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDLGdCQUFlLENBQUM7SUFFaEIsUUFBUSxDQUFDLEtBQWtDLEVBQUUsSUFBVTtRQUNyRCxxQ0FBcUM7UUFDckMsT0FBTyxDQUFDLE9BQXVCLEVBQTBCLEVBQUU7WUFDekQsSUFBSSxDQUFDLFdBQVcsQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2dCQUMvQyxPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsbUJBQW1CLENBQUM7WUFDN0MsTUFBTSxNQUFNLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1lBRTVCLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7WUFDL0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDLFdBQVcsQ0FDakQsVUFBVSxFQUNWLE9BQU8sRUFDUCxlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLElBQUksQ0FDTCxDQUFDO1lBRUYsSUFBSSxRQUFRLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDbkIsT0FBTztvQkFDTCxhQUFhLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTyxFQUFFO2lCQUNsRSxDQUFDO1lBQ0osQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZlRm9ybUNvbnRyb2wgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1jb250cm9scy1leHRlbnNpb24vYWZlLWZvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBFeHByZXNzaW9uUnVubmVyIH0gZnJvbSAnLi4vZXhwcmVzc2lvbi1ydW5uZXIvZXhwcmVzc2lvbi1ydW5uZXInO1xuaW1wb3J0IHsgSnNFeHByZXNzaW9uSGVscGVyIH0gZnJvbSAnLi4vaGVscGVycy9qcy1leHByZXNzaW9uLWhlbHBlcic7XG5pbXBvcnQgeyBKc0V4cHJlc3Npb25WYWxpZGF0aW9uTW9kZWwgfSBmcm9tICcuLi9xdWVzdGlvbi1tb2RlbHMvanMtZXhwcmVzc2lvbi12YWxpZGF0aW9uLm1vZGVsJztcbmltcG9ydCB7IFZhbGlkYXRpb25zIH0gZnJvbSAnLi92YWxpZGF0aW9ucyc7XG5cbmV4cG9ydCBjbGFzcyBKc0V4cHJlc3Npb25WYWxpZGF0b3Ige1xuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgdmFsaWRhdGUobW9kZWw6IEpzRXhwcmVzc2lvblZhbGlkYXRpb25Nb2RlbCwgZm9ybT86IGFueSkge1xuICAgIC8vIGNvbnZlcnQgaGVscGVyIGZ1bmN0aW9ucyB0byBzdHJpbmdcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFmZUZvcm1Db250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XG4gICAgICBpZiAoIVZhbGlkYXRpb25zLkpTRXhwcmVzc2lvblZhbGlkYXRvcnNFbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBleHByZXNzaW9uID0gbW9kZWwuZmFpbHNXaGVuRXhwcmVzc2lvbjtcbiAgICAgIGNvbnN0IGhlbHBlciA9IG5ldyBKc0V4cHJlc3Npb25IZWxwZXIoKTtcbiAgICAgIGNvbnN0IGRhdGFEZXBlbmRlbmNpZXMgPSB7fTtcblxuICAgICAgY29uc3QgaGVscGVyRnVuY3Rpb25zID0gaGVscGVyLmhlbHBlckZ1bmN0aW9ucztcbiAgICAgIGNvbnN0IHJ1bm5hYmxlID0gbmV3IEV4cHJlc3Npb25SdW5uZXIoKS5nZXRSdW5uYWJsZShcbiAgICAgICAgZXhwcmVzc2lvbixcbiAgICAgICAgY29udHJvbCxcbiAgICAgICAgaGVscGVyRnVuY3Rpb25zLFxuICAgICAgICBkYXRhRGVwZW5kZW5jaWVzLFxuICAgICAgICBmb3JtXG4gICAgICApO1xuXG4gICAgICBpZiAocnVubmFibGUucnVuKCkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBqc19leHByZXNzaW9uOiB7IGV4cHJlc3Npb246IGV4cHJlc3Npb24sIG1lc3NhZ2U6IG1vZGVsLm1lc3NhZ2UgfVxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,23 +0,0 @@
1
- import { DateValidator } from './date.validator';
2
- export class MaxDateValidator {
3
- validate(max) {
4
- return (control) => {
5
- if (control.hidden) {
6
- return null;
7
- }
8
- if (control.value && control.value.length !== 0) {
9
- if (!new DateValidator().validate(control.value)) {
10
- const newDate = new Date(control.value);
11
- return newDate.getTime() > max.getTime()
12
- ? { maxdate: { requiredDate: max, actualDate: newDate } }
13
- : null;
14
- }
15
- else {
16
- return { maxdate: { requiredDate: max } };
17
- }
18
- }
19
- return null;
20
- };
21
- }
22
- }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LWRhdGUudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvZm9ybS1lbnRyeS92YWxpZGF0b3JzL21heC1kYXRlLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixRQUFRLENBQUMsR0FBUztRQUNoQixPQUFPLENBQUMsT0FBdUIsRUFBMEIsRUFBRTtZQUN6RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2pELE1BQU0sT0FBTyxHQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFFOUMsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRTt3QkFDdEMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEVBQUU7d0JBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDNUMsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmZUZvcm1Db250cm9sIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3QtY29udHJvbHMtZXh0ZW5zaW9uL2FmZS1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHsgRGF0ZVZhbGlkYXRvciB9IGZyb20gJy4vZGF0ZS52YWxpZGF0b3InO1xuXG5leHBvcnQgY2xhc3MgTWF4RGF0ZVZhbGlkYXRvciB7XG4gIHZhbGlkYXRlKG1heDogRGF0ZSkge1xuICAgIHJldHVybiAoY29udHJvbDogQWZlRm9ybUNvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcbiAgICAgIGlmIChjb250cm9sLmhpZGRlbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgaWYgKCFuZXcgRGF0ZVZhbGlkYXRvcigpLnZhbGlkYXRlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgICAgY29uc3QgbmV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKGNvbnRyb2wudmFsdWUpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ld0RhdGUuZ2V0VGltZSgpID4gbWF4LmdldFRpbWUoKVxuICAgICAgICAgICAgPyB7IG1heGRhdGU6IHsgcmVxdWlyZWREYXRlOiBtYXgsIGFjdHVhbERhdGU6IG5ld0RhdGUgfSB9XG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHsgbWF4ZGF0ZTogeyByZXF1aXJlZERhdGU6IG1heCB9IH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,17 +0,0 @@
1
- export class MaxLengthValidator {
2
- validate(maxLength) {
3
- return (control) => {
4
- if (control.hidden) {
5
- return null;
6
- }
7
- if (control.value && control.value.length !== 0) {
8
- const v = control.value.toString().length;
9
- return v <= maxLength
10
- ? null
11
- : { maxlength: { requiredLength: maxLength, actualValue: v } };
12
- }
13
- return null;
14
- };
15
- }
16
- }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LWxlbmd0aC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9mb3JtLWVudHJ5L3ZhbGlkYXRvcnMvbWF4LWxlbmd0aC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixRQUFRLENBQUMsU0FBaUI7UUFDeEIsT0FBTyxDQUFDLE9BQXVCLEVBQTBCLEVBQUU7WUFDekQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxJQUFJLFNBQVM7b0JBQ25CLENBQUMsQ0FBQyxJQUFJO29CQUNOLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbkUsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZlRm9ybUNvbnRyb2wgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1jb250cm9scy1leHRlbnNpb24vYWZlLWZvcm0tY29udHJvbCc7XG5cbmV4cG9ydCBjbGFzcyBNYXhMZW5ndGhWYWxpZGF0b3Ige1xuICB2YWxpZGF0ZShtYXhMZW5ndGg6IG51bWJlcikge1xuICAgIHJldHVybiAoY29udHJvbDogQWZlRm9ybUNvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcbiAgICAgIGlmIChjb250cm9sLmhpZGRlbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgY29uc3QgdiA9IGNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS5sZW5ndGg7XG4gICAgICAgIHJldHVybiB2IDw9IG1heExlbmd0aFxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogeyBtYXhsZW5ndGg6IHsgcmVxdWlyZWRMZW5ndGg6IG1heExlbmd0aCwgYWN0dWFsVmFsdWU6IHYgfSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,21 +0,0 @@
1
- export class MaxValidator {
2
- validate(max) {
3
- return (control) => {
4
- if (control.hidden) {
5
- return null;
6
- }
7
- // Case 1: control.value is a number
8
- // all the numbers should be passed for validation
9
- // Case 2: control.value is not a number:
10
- // if its empty string or null or undefined it will return false else it will pass through for validation
11
- if (typeof control.value === 'number' || control.value) {
12
- const v = control.value;
13
- return v <= max
14
- ? null
15
- : { max: { requiredValue: max, actualValue: v } };
16
- }
17
- return null;
18
- };
19
- }
20
- }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF4LnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2Zvcm0tZW50cnkvdmFsaWRhdG9ycy9tYXgudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFFBQVEsQ0FBQyxHQUFXO1FBQ2xCLE9BQU8sQ0FBQyxPQUF1QixFQUEwQixFQUFFO1lBQ3pELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxvQ0FBb0M7WUFDcEMsa0RBQWtEO1lBQ2xELHlDQUF5QztZQUN6Qyx5R0FBeUc7WUFDekcsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdkQsTUFBTSxDQUFDLEdBQVcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDaEMsT0FBTyxDQUFDLElBQUksR0FBRztvQkFDYixDQUFDLENBQUMsSUFBSTtvQkFDTixDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RELENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmZUZvcm1Db250cm9sIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3QtY29udHJvbHMtZXh0ZW5zaW9uL2FmZS1mb3JtLWNvbnRyb2wnO1xuXG5leHBvcnQgY2xhc3MgTWF4VmFsaWRhdG9yIHtcbiAgdmFsaWRhdGUobWF4OiBudW1iZXIpIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFmZUZvcm1Db250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XG4gICAgICBpZiAoY29udHJvbC5oaWRkZW4pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIENhc2UgMTogY29udHJvbC52YWx1ZSBpcyBhIG51bWJlclxuICAgICAgLy8gYWxsIHRoZSBudW1iZXJzIHNob3VsZCBiZSBwYXNzZWQgZm9yIHZhbGlkYXRpb25cbiAgICAgIC8vIENhc2UgMjogY29udHJvbC52YWx1ZSBpcyBub3QgYSBudW1iZXI6XG4gICAgICAvLyBpZiBpdHMgZW1wdHkgc3RyaW5nIG9yIG51bGwgb3IgdW5kZWZpbmVkIGl0IHdpbGwgcmV0dXJuIGZhbHNlIGVsc2UgaXQgd2lsbCBwYXNzIHRocm91Z2ggZm9yIHZhbGlkYXRpb25cbiAgICAgIGlmICh0eXBlb2YgY29udHJvbC52YWx1ZSA9PT0gJ251bWJlcicgfHwgY29udHJvbC52YWx1ZSkge1xuICAgICAgICBjb25zdCB2OiBudW1iZXIgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICByZXR1cm4gdiA8PSBtYXhcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHsgbWF4OiB7IHJlcXVpcmVkVmFsdWU6IG1heCwgYWN0dWFsVmFsdWU6IHYgfSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,23 +0,0 @@
1
- import { DateValidator } from './date.validator';
2
- export class MinDateValidator {
3
- validate(min) {
4
- return (control) => {
5
- if (control.hidden) {
6
- return null;
7
- }
8
- if (control.value && control.value.length !== 0) {
9
- if (!new DateValidator().validate(control.value)) {
10
- const newDate = new Date(control.value);
11
- return newDate.getTime() < min.getTime()
12
- ? { mindate: { requiredDate: min, actualDate: newDate } }
13
- : null;
14
- }
15
- else {
16
- return { mindate: { requiredDate: min } };
17
- }
18
- }
19
- return null;
20
- };
21
- }
22
- }
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLWRhdGUudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvZm9ybS1lbnRyeS92YWxpZGF0b3JzL21pbi1kYXRlLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsTUFBTSxPQUFPLGdCQUFnQjtJQUMzQixRQUFRLENBQUMsR0FBUztRQUNoQixPQUFPLENBQUMsT0FBdUIsRUFBMEIsRUFBRTtZQUN6RCxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDbkIsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQ2pELE1BQU0sT0FBTyxHQUFTLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFFOUMsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRTt3QkFDdEMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLEdBQUcsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLEVBQUU7d0JBQ3pELENBQUMsQ0FBQyxJQUFJLENBQUM7Z0JBQ1gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxZQUFZLEVBQUUsR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDNUMsQ0FBQztZQUNILENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmZUZvcm1Db250cm9sIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3QtY29udHJvbHMtZXh0ZW5zaW9uL2FmZS1mb3JtLWNvbnRyb2wnO1xuaW1wb3J0IHsgRGF0ZVZhbGlkYXRvciB9IGZyb20gJy4vZGF0ZS52YWxpZGF0b3InO1xuXG5leHBvcnQgY2xhc3MgTWluRGF0ZVZhbGlkYXRvciB7XG4gIHZhbGlkYXRlKG1pbjogRGF0ZSkge1xuICAgIHJldHVybiAoY29udHJvbDogQWZlRm9ybUNvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcbiAgICAgIGlmIChjb250cm9sLmhpZGRlbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgaWYgKCFuZXcgRGF0ZVZhbGlkYXRvcigpLnZhbGlkYXRlKGNvbnRyb2wudmFsdWUpKSB7XG4gICAgICAgICAgY29uc3QgbmV3RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKGNvbnRyb2wudmFsdWUpO1xuXG4gICAgICAgICAgcmV0dXJuIG5ld0RhdGUuZ2V0VGltZSgpIDwgbWluLmdldFRpbWUoKVxuICAgICAgICAgICAgPyB7IG1pbmRhdGU6IHsgcmVxdWlyZWREYXRlOiBtaW4sIGFjdHVhbERhdGU6IG5ld0RhdGUgfSB9XG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHsgbWluZGF0ZTogeyByZXF1aXJlZERhdGU6IG1pbiB9IH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,17 +0,0 @@
1
- export class MinLengthValidator {
2
- validate(minLength) {
3
- return (control) => {
4
- if (control.hidden) {
5
- return null;
6
- }
7
- if (control.value && control.value.length !== 0) {
8
- const v = control.value.toString().length;
9
- return v >= minLength
10
- ? null
11
- : { minlength: { requiredLength: minLength, actualValue: v } };
12
- }
13
- return null;
14
- };
15
- }
16
- }
17
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLWxlbmd0aC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9mb3JtLWVudHJ5L3ZhbGlkYXRvcnMvbWluLWxlbmd0aC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxPQUFPLGtCQUFrQjtJQUM3QixRQUFRLENBQUMsU0FBaUI7UUFDeEIsT0FBTyxDQUFDLE9BQXVCLEVBQTBCLEVBQUU7WUFDekQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ25CLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUVELElBQUksT0FBTyxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUM7Z0JBQzFDLE9BQU8sQ0FBQyxJQUFJLFNBQVM7b0JBQ25CLENBQUMsQ0FBQyxJQUFJO29CQUNOLENBQUMsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDbkUsQ0FBQztZQUVELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZlRm9ybUNvbnRyb2wgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1jb250cm9scy1leHRlbnNpb24vYWZlLWZvcm0tY29udHJvbCc7XG5cbmV4cG9ydCBjbGFzcyBNaW5MZW5ndGhWYWxpZGF0b3Ige1xuICB2YWxpZGF0ZShtaW5MZW5ndGg6IG51bWJlcikge1xuICAgIHJldHVybiAoY29udHJvbDogQWZlRm9ybUNvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0+IHtcbiAgICAgIGlmIChjb250cm9sLmhpZGRlbikge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgaWYgKGNvbnRyb2wudmFsdWUgJiYgY29udHJvbC52YWx1ZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgY29uc3QgdiA9IGNvbnRyb2wudmFsdWUudG9TdHJpbmcoKS5sZW5ndGg7XG4gICAgICAgIHJldHVybiB2ID49IG1pbkxlbmd0aFxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogeyBtaW5sZW5ndGg6IHsgcmVxdWlyZWRMZW5ndGg6IG1pbkxlbmd0aCwgYWN0dWFsVmFsdWU6IHYgfSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,21 +0,0 @@
1
- export class MinValidator {
2
- validate(min) {
3
- return (control) => {
4
- if (control.hidden) {
5
- return null;
6
- }
7
- // Case 1: control.value is a number
8
- // all the numbers should be passed for validation
9
- // Case 2: control.value is not a number:
10
- // if its empty string or null or undefined it will return false else it will pass through for validation
11
- if (typeof control.value === 'number' || control.value) {
12
- const v = control.value;
13
- return v >= min
14
- ? null
15
- : { min: { requiredValue: min, actualValue: v } };
16
- }
17
- return null;
18
- };
19
- }
20
- }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWluLnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2Zvcm0tZW50cnkvdmFsaWRhdG9ycy9taW4udmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLFFBQVEsQ0FBQyxHQUFXO1FBQ2xCLE9BQU8sQ0FBQyxPQUF1QixFQUEwQixFQUFFO1lBQ3pELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUNuQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7WUFFRCxvQ0FBb0M7WUFDcEMsa0RBQWtEO1lBQ2xELHlDQUF5QztZQUN6Qyx5R0FBeUc7WUFDekcsSUFBSSxPQUFPLE9BQU8sQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDdkQsTUFBTSxDQUFDLEdBQVcsT0FBTyxDQUFDLEtBQUssQ0FBQztnQkFDaEMsT0FBTyxDQUFDLElBQUksR0FBRztvQkFDYixDQUFDLENBQUMsSUFBSTtvQkFDTixDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3RELENBQUM7WUFFRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmZUZvcm1Db250cm9sIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3QtY29udHJvbHMtZXh0ZW5zaW9uL2FmZS1mb3JtLWNvbnRyb2wnO1xuXG5leHBvcnQgY2xhc3MgTWluVmFsaWRhdG9yIHtcbiAgdmFsaWRhdGUobWluOiBudW1iZXIpIHtcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFmZUZvcm1Db250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9PiB7XG4gICAgICBpZiAoY29udHJvbC5oaWRkZW4pIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIC8vIENhc2UgMTogY29udHJvbC52YWx1ZSBpcyBhIG51bWJlclxuICAgICAgLy8gYWxsIHRoZSBudW1iZXJzIHNob3VsZCBiZSBwYXNzZWQgZm9yIHZhbGlkYXRpb25cbiAgICAgIC8vIENhc2UgMjogY29udHJvbC52YWx1ZSBpcyBub3QgYSBudW1iZXI6XG4gICAgICAvLyBpZiBpdHMgZW1wdHkgc3RyaW5nIG9yIG51bGwgb3IgdW5kZWZpbmVkIGl0IHdpbGwgcmV0dXJuIGZhbHNlIGVsc2UgaXQgd2lsbCBwYXNzIHRocm91Z2ggZm9yIHZhbGlkYXRpb25cbiAgICAgIGlmICh0eXBlb2YgY29udHJvbC52YWx1ZSA9PT0gJ251bWJlcicgfHwgY29udHJvbC52YWx1ZSkge1xuICAgICAgICBjb25zdCB2OiBudW1iZXIgPSBjb250cm9sLnZhbHVlO1xuICAgICAgICByZXR1cm4gdiA+PSBtaW5cbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHsgbWluOiB7IHJlcXVpcmVkVmFsdWU6IG1pbiwgYWN0dWFsVmFsdWU6IHYgfSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9O1xuICB9XG59XG4iXX0=
@@ -1,11 +0,0 @@
1
- export class RequiredValidator {
2
- validate(control) {
3
- if (control.hidden) {
4
- return null;
5
- }
6
- const value = control.value;
7
- const isEmpty = value == null || (typeof value === 'string' && value.length === 0);
8
- return isEmpty ? { required: true } : null;
9
- }
10
- }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWlyZWQudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvZm9ybS1lbnRyeS92YWxpZGF0b3JzL3JlcXVpcmVkLnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLFFBQVEsQ0FBQyxPQUF1QjtRQUM5QixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxNQUFNLEtBQUssR0FBUSxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQ2pDLE1BQU0sT0FBTyxHQUNYLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQztRQUVyRSxPQUFPLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM3QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZmVGb3JtQ29udHJvbCB9IGZyb20gJy4uLy4uL2Fic3RyYWN0LWNvbnRyb2xzLWV4dGVuc2lvbi9hZmUtZm9ybS1jb250cm9sJztcblxuZXhwb3J0IGNsYXNzIFJlcXVpcmVkVmFsaWRhdG9yIHtcbiAgdmFsaWRhdGUoY29udHJvbDogQWZlRm9ybUNvbnRyb2wpIHtcbiAgICBpZiAoY29udHJvbC5oaWRkZW4pIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbHVlOiBhbnkgPSBjb250cm9sLnZhbHVlO1xuICAgIGNvbnN0IGlzRW1wdHk6IGJvb2xlYW4gPVxuICAgICAgdmFsdWUgPT0gbnVsbCB8fCAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyAmJiB2YWx1ZS5sZW5ndGggPT09IDApO1xuXG4gICAgcmV0dXJuIGlzRW1wdHkgPyB7IHJlcXVpcmVkOiB0cnVlIH0gOiBudWxsO1xuICB9XG59XG4iXX0=
@@ -1,5 +0,0 @@
1
- export class Validations {
2
- static { this.JSExpressionValidatorsEnabled = false; }
3
- constructor() { }
4
- }
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9mb3JtLWVudHJ5L3ZhbGlkYXRvcnMvdmFsaWRhdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7YUFDUixrQ0FBNkIsR0FBRyxLQUFLLENBQUM7SUFFcEQsZ0JBQWUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBWYWxpZGF0aW9ucyB7XG4gIHB1YmxpYyBzdGF0aWMgSlNFeHByZXNzaW9uVmFsaWRhdG9yc0VuYWJsZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG59XG4iXX0=
@@ -1,241 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as _ from 'lodash';
3
- import { ArrayNode } from '../form-factory/form-node';
4
- import * as i0 from "@angular/core";
5
- export class DiagnosisValueAdapter {
6
- constructor() {
7
- this.formDiagnosisNodes = [];
8
- }
9
- generateFormPayload(form) {
10
- this.formDiagnosisNodes = [];
11
- this._findDiagnosisQuestionNodes(form.rootNode);
12
- return this._createDiagnosesPayload(this.formDiagnosisNodes, form.existingDiagnoses);
13
- }
14
- populateForm(form, diagnoses) {
15
- form.existingDiagnoses = diagnoses?.filter((d) => {
16
- return !d.voided;
17
- });
18
- this.formDiagnosisNodes = [];
19
- this._findDiagnosisQuestionNodes(form.rootNode);
20
- this._setDiagnosesValues(this.formDiagnosisNodes, form.existingDiagnoses, 1);
21
- this._setDiagnosesValues(this.formDiagnosisNodes, form.existingDiagnoses, 2);
22
- this.setDiagnosisGroupValue(this.formDiagnosisNodes, form.existingDiagnoses);
23
- }
24
- _createDiagnosesPayload(diagnosisNodes, existingDiagnoses) {
25
- const payload = [];
26
- let deletedDiagnoses = [];
27
- // Add new diagnosis to payload
28
- diagnosisNodes?.forEach((node) => {
29
- if (node instanceof ArrayNode) {
30
- node.control.value
31
- .filter((v) => v[node.question.key])
32
- .forEach((value) => {
33
- // Create Payload
34
- const payloadDiagnosis = this._createPayloadDiagnosis(value[node.question.key], node.question.extras);
35
- const isNewDiagnosis = existingDiagnoses.every((d) => d.diagnosis.coded.uuid !== value[node.question.key] ||
36
- d.certainty !== 'CONFIRMED' ||
37
- d.rank !== node.question.extras.questionOptions.rank);
38
- if (isNewDiagnosis) {
39
- payload.push(payloadDiagnosis);
40
- }
41
- });
42
- }
43
- if (node instanceof ArrayNode) {
44
- const groupNodeArray = node.children;
45
- groupNodeArray.forEach((groupNode) => {
46
- if (this.hasDiagnosisNodeChanged(groupNode)) {
47
- const diagnosisPayload = {};
48
- Object.values(groupNode.children).forEach((childNode) => {
49
- const { diagnosisType } = childNode.question.extras.questionOptions;
50
- switch (diagnosisType) {
51
- case 'rank':
52
- diagnosisPayload.rank =
53
- parseInt(childNode.control.value, 10) ?? 1;
54
- break;
55
- case 'certainty':
56
- diagnosisPayload.certainty = childNode.control.value;
57
- break;
58
- case 'diagnosis':
59
- diagnosisPayload.diagnosis = {
60
- coded: childNode.control.value
61
- };
62
- break;
63
- default:
64
- break;
65
- }
66
- });
67
- if (_.isEmpty(diagnosisPayload)) {
68
- return null;
69
- }
70
- if (groupNode.question.defaultValue?.uuid) {
71
- diagnosisPayload.uuid = groupNode.question.defaultValue.uuid;
72
- }
73
- diagnosisPayload.voided = false;
74
- payload.push(diagnosisPayload);
75
- }
76
- });
77
- }
78
- });
79
- this._updatedOldDiagnoses(payload, existingDiagnoses);
80
- deletedDiagnoses = this._getDeletedDiagnoses(diagnosisNodes, existingDiagnoses);
81
- return payload.concat(deletedDiagnoses);
82
- }
83
- _createPayloadDiagnosis(codedUuid, questionExtras) {
84
- const diagnosis = {
85
- diagnosis: {
86
- coded: codedUuid
87
- },
88
- certainty: 'CONFIRMED',
89
- rank: questionExtras.questionOptions.rank,
90
- voided: false
91
- };
92
- return diagnosis;
93
- }
94
- _getDeletedDiagnoses(diagnosisNodes, existingDiagnoses) {
95
- return existingDiagnoses
96
- .filter((existingDiagnosis) => {
97
- return !diagnosisNodes?.some((node) => {
98
- if (node instanceof ArrayNode) {
99
- return node.control.value.some((value) => {
100
- return (value[node.question.key] ===
101
- existingDiagnosis.diagnosis.coded.uuid &&
102
- existingDiagnosis.rank ===
103
- node.question.extras.questionOptions.rank &&
104
- existingDiagnosis.certainty === 'CONFIRMED');
105
- });
106
- }
107
- return false;
108
- });
109
- })
110
- .map((existingDiagnosis) => ({
111
- uuid: existingDiagnosis.uuid,
112
- voided: true
113
- }));
114
- }
115
- _updatedOldDiagnoses(payloadDiagnoses, existingDiagnoses) {
116
- payloadDiagnoses.forEach((p) => {
117
- existingDiagnoses?.forEach((e) => {
118
- let isSame = !e.voided && p.diagnosis.coded === e.diagnosis.coded.uuid;
119
- p.uuid = isSame ? e.uuid : null;
120
- });
121
- });
122
- }
123
- _setDiagnosesValues(formDiagnosisNodes, existingDiagnoses, rank) {
124
- formDiagnosisNodes
125
- ?.filter((node) => node.question.extras.questionOptions.rank == rank)
126
- .forEach((node) => {
127
- node['initialValue'] = existingDiagnoses;
128
- existingDiagnoses
129
- .filter((d) => d.rank == rank)
130
- .forEach((diagnosis, index) => {
131
- node.createChildNode();
132
- const value = {};
133
- value[node.question.key] = diagnosis.diagnosis.coded.uuid;
134
- const childNode = node.children[index];
135
- childNode.control.setValue(value);
136
- childNode['initialValue'] = value;
137
- });
138
- });
139
- }
140
- setDiagnosisGroupValue(formDiagnosisNodes, existingDiagnoses) {
141
- for (const diagnosis of existingDiagnoses) {
142
- for (const diagnosisNode of formDiagnosisNodes) {
143
- if (diagnosisNode.question.extras.type !== 'diagnosisGroup')
144
- break;
145
- const groupNode = diagnosisNode.createChildNode();
146
- groupNode.question.defaultValue = { uuid: diagnosis.uuid };
147
- for (const child of Object.values(groupNode.children)) {
148
- const diagnosisType = child.question.extras.questionOptions.diagnosisType;
149
- switch (diagnosisType) {
150
- case 'diagnosis':
151
- child.initialValue = diagnosis.diagnosis.coded?.uuid;
152
- child.control.setValue(diagnosis.diagnosis.coded?.uuid);
153
- break;
154
- case 'rank':
155
- child.initialValue = diagnosis.rank;
156
- child.control.setValue(diagnosis.rank);
157
- break;
158
- case 'certainty':
159
- child.initialValue = diagnosis.certainty;
160
- child.control.setValue(diagnosis.certainty);
161
- break;
162
- }
163
- }
164
- }
165
- }
166
- }
167
- _findDiagnosisQuestionNodes(formNode) {
168
- if (formNode.children) {
169
- if (formNode.children instanceof Object) {
170
- for (const key in formNode.children) {
171
- if (formNode.children.hasOwnProperty(key)) {
172
- switch (formNode.children[key].question.renderingType) {
173
- case 'page':
174
- this._findDiagnosisQuestionNodes(formNode.children[key]);
175
- break;
176
- case 'section':
177
- this._findDiagnosisQuestionNodes(formNode.children[key]);
178
- break;
179
- case 'group':
180
- this._findDiagnosisQuestionNodes(formNode.children[key]);
181
- break;
182
- case 'repeating':
183
- if (formNode.children) {
184
- const { children } = formNode;
185
- // Condition for diagnosisGroup nodes
186
- for (const node in formNode.children) {
187
- const questionExtras = formNode.children[node].question.extras;
188
- if (questionExtras.type === 'diagnosisGroup') {
189
- const arrayNode = formNode.children[node];
190
- this.formDiagnosisNodes.push(arrayNode);
191
- break;
192
- }
193
- }
194
- // Condition for diagnosis nodes
195
- Object.values(children).forEach((child) => {
196
- const { question, nodeIndex } = child;
197
- if (question.extras?.type === 'diagnosis' &&
198
- !this.formDiagnosisNodes.some((x) => x.nodeIndex === nodeIndex)) {
199
- this.formDiagnosisNodes.push(child);
200
- }
201
- });
202
- }
203
- break;
204
- default:
205
- break;
206
- }
207
- }
208
- }
209
- }
210
- }
211
- }
212
- _convert(diagnosis) {
213
- return {
214
- uuid: diagnosis.uuid,
215
- encounter: diagnosis.encounter,
216
- patient: diagnosis.patient,
217
- diagnosis: {
218
- coded: diagnosis.diagnosis.coded.uuid,
219
- nonCoded: diagnosis.diagnosis.nonCoded
220
- },
221
- certainty: diagnosis.certainty,
222
- rank: diagnosis.rank,
223
- voided: diagnosis.voided
224
- };
225
- }
226
- hasDiagnosisNodeChanged(nodeAsGroup) {
227
- const childrenNodes = Object.values(nodeAsGroup.children);
228
- for (let childNode of childrenNodes) {
229
- if (childNode.control.value !== nodeAsGroup.initialValue?.primaryDiagnosisId) {
230
- return true;
231
- }
232
- }
233
- return false;
234
- }
235
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DiagnosisValueAdapter, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
236
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DiagnosisValueAdapter }); }
237
- }
238
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DiagnosisValueAdapter, decorators: [{
239
- type: Injectable
240
- }] });
241
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlhZ25vc2lzLmFkYXB0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9mb3JtLWVudHJ5L3ZhbHVlLWFkYXB0ZXJzL2RpYWdub3Npcy5hZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFHNUIsT0FBTyxFQUFFLFNBQVMsRUFBdUIsTUFBTSwyQkFBMkIsQ0FBQzs7QUFHM0UsTUFBTSxPQUFPLHFCQUFxQjtJQURsQztRQUVFLHVCQUFrQixHQUFHLEVBQUUsQ0FBQztLQXdTekI7SUF0U0MsbUJBQW1CLENBQUMsSUFBVTtRQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsT0FBTyxJQUFJLENBQUMsdUJBQXVCLENBQ2pDLElBQUksQ0FBQyxrQkFBa0IsRUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksQ0FBQyxJQUFVLEVBQUUsU0FBMkI7UUFDbEQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUMvQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsbUJBQW1CLENBQ3RCLElBQUksQ0FBQyxrQkFBa0IsRUFDdkIsSUFBSSxDQUFDLGlCQUFpQixFQUN0QixD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QyxJQUFJO1lBQ3BCLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtTQUN6QixDQUFDO0lBQ0osQ0FBQztJQUVELHVCQUF1QixDQUFDLFdBQXNCO1FBQzVDLE1BQU0sYUFBYSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FFdkQsQ0FBQztRQUVGLEtBQUssSUFBSSxTQUFTLElBQUksYUFBYSxFQUFFLENBQUM7WUFDcEMsSUFDRSxTQUFTLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxXQUFXLENBQUMsWUFBWSxFQUFFLGtCQUFrQixFQUN4RSxDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7K0dBeFNVLHFCQUFxQjttSEFBckIscUJBQXFCOzs0RkFBckIscUJBQXFCO2tCQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vZm9ybS1mYWN0b3J5L2Zvcm0nO1xuaW1wb3J0IHsgVmFsdWVBZGFwdGVyIH0gZnJvbSAnLi92YWx1ZS5hZGFwdGVyJztcbmltcG9ydCB7IEFycmF5Tm9kZSwgR3JvdXBOb2RlLCBMZWFmTm9kZSB9IGZyb20gJy4uL2Zvcm0tZmFjdG9yeS9mb3JtLW5vZGUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGlhZ25vc2lzVmFsdWVBZGFwdGVyIGltcGxlbWVudHMgVmFsdWVBZGFwdGVyIHtcbiAgZm9ybURpYWdub3Npc05vZGVzID0gW107XG5cbiAgZ2VuZXJhdGVGb3JtUGF5bG9hZChmb3JtOiBGb3JtKSB7XG4gICAgdGhpcy5mb3JtRGlhZ25vc2lzTm9kZXMgPSBbXTtcbiAgICB0aGlzLl9maW5kRGlhZ25vc2lzUXVlc3Rpb25Ob2Rlcyhmb3JtLnJvb3ROb2RlKTtcbiAgICByZXR1cm4gdGhpcy5fY3JlYXRlRGlhZ25vc2VzUGF5bG9hZChcbiAgICAgIHRoaXMuZm9ybURpYWdub3Npc05vZGVzLFxuICAgICAgZm9ybS5leGlzdGluZ0RpYWdub3Nlc1xuICAgICk7XG4gIH1cblxuICBwb3B1bGF0ZUZvcm0oZm9ybTogRm9ybSwgZGlhZ25vc2VzOiBBcnJheTxEaWFnbm9zaXM+KSB7XG4gICAgZm9ybS5leGlzdGluZ0RpYWdub3NlcyA9IGRpYWdub3Nlcz8uZmlsdGVyKChkKSA9PiB7XG4gICAgICByZXR1cm4gIWQudm9pZGVkO1xuICAgIH0pO1xuICAgIHRoaXMuZm9ybURpYWdub3Npc05vZGVzID0gW107XG4gICAgdGhpcy5fZmluZERpYWdub3Npc1F1ZXN0aW9uTm9kZXMoZm9ybS5yb290Tm9kZSk7XG4gICAgdGhpcy5fc2V0RGlhZ25vc2VzVmFsdWVzKFxuICAgICAgdGhpcy5mb3JtRGlhZ25vc2lzTm9kZXMsXG4gICAgICBmb3JtLmV4aXN0aW5nRGlhZ25vc2VzLFxuICAgICAgMVxuICAgICk7XG4gICAgdGhpcy5fc2V0RGlhZ25vc2VzVmFsdWVzKFxuICAgICAgdGhpcy5mb3JtRGlhZ25vc2lzTm9kZXMsXG4gICAgICBmb3JtLmV4aXN0aW5nRGlhZ25vc2VzLFxuICAgICAgMlxuICAgICk7XG4gICAgdGhpcy5zZXREaWFnbm9zaXNHcm91cFZhbHVlKFxuICAgICAgdGhpcy5mb3JtRGlhZ25vc2lzTm9kZXMsXG4gICAgICBmb3JtLmV4aXN0aW5nRGlhZ25vc2VzXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NyZWF0ZURpYWdub3Nlc1BheWxvYWQoZGlhZ25vc2lzTm9kZXMsIGV4aXN0aW5nRGlhZ25vc2VzKSB7XG4gICAgY29uc3QgcGF5bG9hZDogQXJyYXk8RGlhZ25vc2lzUGF5bG9hZD4gPSBbXTtcbiAgICBsZXQgZGVsZXRlZERpYWdub3NlczogQXJyYXk8RGlhZ25vc2lzUGF5bG9hZD4gPSBbXTtcblxuICAgIC8vIEFkZCBuZXcgZGlhZ25vc2lzIHRvIHBheWxvYWRcbiAgICBkaWFnbm9zaXNOb2Rlcz8uZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBBcnJheU5vZGUpIHtcbiAgICAgICAgbm9kZS5jb250cm9sLnZhbHVlXG4gICAgICAgICAgLmZpbHRlcigodikgPT4gdltub2RlLnF1ZXN0aW9uLmtleV0pXG4gICAgICAgICAgLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICAvLyBDcmVhdGUgUGF5bG9hZFxuICAgICAgICAgICAgY29uc3QgcGF5bG9hZERpYWdub3NpcyA9IHRoaXMuX2NyZWF0ZVBheWxvYWREaWFnbm9zaXMoXG4gICAgICAgICAgICAgIHZhbHVlW25vZGUucXVlc3Rpb24ua2V5XSxcbiAgICAgICAgICAgICAgbm9kZS5xdWVzdGlvbi5leHRyYXNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGlzTmV3RGlhZ25vc2lzID0gZXhpc3RpbmdEaWFnbm9zZXMuZXZlcnkoXG4gICAgICAgICAgICAgIChkKSA9PlxuICAgICAgICAgICAgICAgIGQuZGlhZ25vc2lzLmNvZGVkLnV1aWQgIT09IHZhbHVlW25vZGUucXVlc3Rpb24ua2V5XSB8fFxuICAgICAgICAgICAgICAgIGQuY2VydGFpbnR5ICE9PSAnQ09ORklSTUVEJyB8fFxuICAgICAgICAgICAgICAgIGQucmFuayAhPT0gbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zLnJhbmtcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChpc05ld0RpYWdub3Npcykge1xuICAgICAgICAgICAgICBwYXlsb2FkLnB1c2gocGF5bG9hZERpYWdub3Npcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQXJyYXlOb2RlKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwTm9kZUFycmF5ID0gbm9kZS5jaGlsZHJlbjtcbiAgICAgICAgZ3JvdXBOb2RlQXJyYXkuZm9yRWFjaCgoZ3JvdXBOb2RlKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuaGFzRGlhZ25vc2lzTm9kZUNoYW5nZWQoZ3JvdXBOb2RlKSkge1xuICAgICAgICAgICAgY29uc3QgZGlhZ25vc2lzUGF5bG9hZDogUGFydGlhbDxEaWFnbm9zaXNQYXlsb2FkPiA9IHt9O1xuICAgICAgICAgICAgT2JqZWN0LnZhbHVlcyhncm91cE5vZGUuY2hpbGRyZW4pLmZvckVhY2goKGNoaWxkTm9kZTogTGVhZk5vZGUpID0+IHtcbiAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIGRpYWdub3Npc1R5cGVcbiAgICAgICAgICAgICAgfSA9IGNoaWxkTm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zO1xuICAgICAgICAgICAgICBzd2l0Y2ggKGRpYWdub3Npc1R5cGUpIHtcbiAgICAgICAgICAgICAgICBjYXNlICdyYW5rJzpcbiAgICAgICAgICAgICAgICAgIGRpYWdub3Npc1BheWxvYWQucmFuayA9XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGNoaWxkTm9kZS5jb250cm9sLnZhbHVlLCAxMCkgPz8gMTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ2NlcnRhaW50eSc6XG4gICAgICAgICAgICAgICAgICBkaWFnbm9zaXNQYXlsb2FkLmNlcnRhaW50eSA9IGNoaWxkTm9kZS5jb250cm9sLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZGlhZ25vc2lzJzpcbiAgICAgICAgICAgICAgICAgIGRpYWdub3Npc1BheWxvYWQuZGlhZ25vc2lzID0ge1xuICAgICAgICAgICAgICAgICAgICBjb2RlZDogY2hpbGROb2RlLmNvbnRyb2wudmFsdWVcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKF8uaXNFbXB0eShkaWFnbm9zaXNQYXlsb2FkKSkge1xuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChncm91cE5vZGUucXVlc3Rpb24uZGVmYXVsdFZhbHVlPy51dWlkKSB7XG4gICAgICAgICAgICAgIGRpYWdub3Npc1BheWxvYWQudXVpZCA9IGdyb3VwTm9kZS5xdWVzdGlvbi5kZWZhdWx0VmFsdWUudXVpZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRpYWdub3Npc1BheWxvYWQudm9pZGVkID0gZmFsc2U7XG4gICAgICAgICAgICBwYXlsb2FkLnB1c2goZGlhZ25vc2lzUGF5bG9hZCBhcyBEaWFnbm9zaXNQYXlsb2FkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMuX3VwZGF0ZWRPbGREaWFnbm9zZXMocGF5bG9hZCwgZXhpc3RpbmdEaWFnbm9zZXMpO1xuICAgIGRlbGV0ZWREaWFnbm9zZXMgPSB0aGlzLl9nZXREZWxldGVkRGlhZ25vc2VzKFxuICAgICAgZGlhZ25vc2lzTm9kZXMsXG4gICAgICBleGlzdGluZ0RpYWdub3Nlc1xuICAgICk7XG4gICAgcmV0dXJuIHBheWxvYWQuY29uY2F0KGRlbGV0ZWREaWFnbm9zZXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBfY3JlYXRlUGF5bG9hZERpYWdub3Npcyhjb2RlZFV1aWQsIHF1ZXN0aW9uRXh0cmFzKTogRGlhZ25vc2lzUGF5bG9hZCB7XG4gICAgY29uc3QgZGlhZ25vc2lzOiBEaWFnbm9zaXNQYXlsb2FkID0ge1xuICAgICAgZGlhZ25vc2lzOiB7XG4gICAgICAgIGNvZGVkOiBjb2RlZFV1aWRcbiAgICAgIH0sXG4gICAgICBjZXJ0YWludHk6ICdDT05GSVJNRUQnLFxuICAgICAgcmFuazogcXVlc3Rpb25FeHRyYXMucXVlc3Rpb25PcHRpb25zLnJhbmssXG4gICAgICB2b2lkZWQ6IGZhbHNlXG4gICAgfTtcblxuICAgIHJldHVybiBkaWFnbm9zaXM7XG4gIH1cblxuICBwcml2YXRlIF9nZXREZWxldGVkRGlhZ25vc2VzKFxuICAgIGRpYWdub3Npc05vZGVzOiBBcnJheTxEaWFnbm9zaXNQYXlsb2FkPixcbiAgICBleGlzdGluZ0RpYWdub3NlczogQXJyYXk8RGlhZ25vc2lzPlxuICApOiBBcnJheTxhbnk+IHtcbiAgICByZXR1cm4gZXhpc3RpbmdEaWFnbm9zZXNcbiAgICAgIC5maWx0ZXIoKGV4aXN0aW5nRGlhZ25vc2lzKSA9PiB7XG4gICAgICAgIHJldHVybiAhZGlhZ25vc2lzTm9kZXM/LnNvbWUoKG5vZGUpID0+IHtcbiAgICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIEFycmF5Tm9kZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vZGUuY29udHJvbC52YWx1ZS5zb21lKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIHZhbHVlW25vZGUucXVlc3Rpb24ua2V5XSA9PT1cbiAgICAgICAgICAgICAgICAgIGV4aXN0aW5nRGlhZ25vc2lzLmRpYWdub3Npcy5jb2RlZC51dWlkICYmXG4gICAgICAgICAgICAgICAgZXhpc3RpbmdEaWFnbm9zaXMucmFuayA9PT1cbiAgICAgICAgICAgICAgICAgIG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy5yYW5rICYmXG4gICAgICAgICAgICAgICAgZXhpc3RpbmdEaWFnbm9zaXMuY2VydGFpbnR5ID09PSAnQ09ORklSTUVEJ1xuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfSk7XG4gICAgICB9KVxuICAgICAgLm1hcCgoZXhpc3RpbmdEaWFnbm9zaXMpID0+ICh7XG4gICAgICAgIHV1aWQ6IGV4aXN0aW5nRGlhZ25vc2lzLnV1aWQsXG4gICAgICAgIHZvaWRlZDogdHJ1ZVxuICAgICAgfSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlZE9sZERpYWdub3NlcyhcbiAgICBwYXlsb2FkRGlhZ25vc2VzOiBBcnJheTxEaWFnbm9zaXNQYXlsb2FkPixcbiAgICBleGlzdGluZ0RpYWdub3NlczogQXJyYXk8RGlhZ25vc2lzPlxuICApIHtcbiAgICBwYXlsb2FkRGlhZ25vc2VzLmZvckVhY2goKHApID0+IHtcbiAgICAgIGV4aXN0aW5nRGlhZ25vc2VzPy5mb3JFYWNoKChlKSA9PiB7XG4gICAgICAgIGxldCBpc1NhbWUgPSAhZS52b2lkZWQgJiYgcC5kaWFnbm9zaXMuY29kZWQgPT09IGUuZGlhZ25vc2lzLmNvZGVkLnV1aWQ7XG4gICAgICAgIHAudXVpZCA9IGlzU2FtZSA/IGUudXVpZCA6IG51bGw7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX3NldERpYWdub3Nlc1ZhbHVlcyhcbiAgICBmb3JtRGlhZ25vc2lzTm9kZXMsXG4gICAgZXhpc3RpbmdEaWFnbm9zZXM6IEFycmF5PERpYWdub3Npcz4sXG4gICAgcmFuazogbnVtYmVyXG4gICkge1xuICAgIGZvcm1EaWFnbm9zaXNOb2Rlc1xuICAgICAgPy5maWx0ZXIoKG5vZGUpID0+IG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy5yYW5rID09IHJhbmspXG4gICAgICAuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICBub2RlWydpbml0aWFsVmFsdWUnXSA9IGV4aXN0aW5nRGlhZ25vc2VzO1xuICAgICAgICBleGlzdGluZ0RpYWdub3Nlc1xuICAgICAgICAgIC5maWx0ZXIoKGQpID0+IGQucmFuayA9PSByYW5rKVxuICAgICAgICAgIC5mb3JFYWNoKChkaWFnbm9zaXMsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICBub2RlLmNyZWF0ZUNoaWxkTm9kZSgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSB7fTtcbiAgICAgICAgICAgIHZhbHVlW25vZGUucXVlc3Rpb24ua2V5XSA9IGRpYWdub3Npcy5kaWFnbm9zaXMuY29kZWQudXVpZDtcbiAgICAgICAgICAgIGNvbnN0IGNoaWxkTm9kZSA9IG5vZGUuY2hpbGRyZW5baW5kZXhdO1xuICAgICAgICAgICAgY2hpbGROb2RlLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xuICAgICAgICAgICAgY2hpbGROb2RlWydpbml0aWFsVmFsdWUnXSA9IHZhbHVlO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNldERpYWdub3Npc0dyb3VwVmFsdWUoXG4gICAgZm9ybURpYWdub3Npc05vZGVzLFxuICAgIGV4aXN0aW5nRGlhZ25vc2VzOiBBcnJheTxEaWFnbm9zaXM+XG4gICkge1xuICAgIGZvciAoY29uc3QgZGlhZ25vc2lzIG9mIGV4aXN0aW5nRGlhZ25vc2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IGRpYWdub3Npc05vZGUgb2YgZm9ybURpYWdub3Npc05vZGVzKSB7XG4gICAgICAgIGlmIChkaWFnbm9zaXNOb2RlLnF1ZXN0aW9uLmV4dHJhcy50eXBlICE9PSAnZGlhZ25vc2lzR3JvdXAnKSBicmVhaztcbiAgICAgICAgY29uc3QgZ3JvdXBOb2RlID0gZGlhZ25vc2lzTm9kZS5jcmVhdGVDaGlsZE5vZGUoKSBhcyBHcm91cE5vZGU7XG5cbiAgICAgICAgZ3JvdXBOb2RlLnF1ZXN0aW9uLmRlZmF1bHRWYWx1ZSA9IHsgdXVpZDogZGlhZ25vc2lzLnV1aWQgfTtcbiAgICAgICAgZm9yIChjb25zdCBjaGlsZCBvZiBPYmplY3QudmFsdWVzKGdyb3VwTm9kZS5jaGlsZHJlbikgYXMgTGVhZk5vZGVbXSkge1xuICAgICAgICAgIGNvbnN0IGRpYWdub3Npc1R5cGUgPVxuICAgICAgICAgICAgY2hpbGQucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy5kaWFnbm9zaXNUeXBlO1xuICAgICAgICAgIHN3aXRjaCAoZGlhZ25vc2lzVHlwZSkge1xuICAgICAgICAgICAgY2FzZSAnZGlhZ25vc2lzJzpcbiAgICAgICAgICAgICAgY2hpbGQuaW5pdGlhbFZhbHVlID0gZGlhZ25vc2lzLmRpYWdub3Npcy5jb2RlZD8udXVpZDtcbiAgICAgICAgICAgICAgY2hpbGQuY29udHJvbC5zZXRWYWx1ZShkaWFnbm9zaXMuZGlhZ25vc2lzLmNvZGVkPy51dWlkKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdyYW5rJzpcbiAgICAgICAgICAgICAgY2hpbGQuaW5pdGlhbFZhbHVlID0gZGlhZ25vc2lzLnJhbms7XG4gICAgICAgICAgICAgIGNoaWxkLmNvbnRyb2wuc2V0VmFsdWUoZGlhZ25vc2lzLnJhbmspO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2NlcnRhaW50eSc6XG4gICAgICAgICAgICAgIGNoaWxkLmluaXRpYWxWYWx1ZSA9IGRpYWdub3Npcy5jZXJ0YWludHk7XG4gICAgICAgICAgICAgIGNoaWxkLmNvbnRyb2wuc2V0VmFsdWUoZGlhZ25vc2lzLmNlcnRhaW50eSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2ZpbmREaWFnbm9zaXNRdWVzdGlvbk5vZGVzKGZvcm1Ob2RlKSB7XG4gICAgaWYgKGZvcm1Ob2RlLmNoaWxkcmVuKSB7XG4gICAgICBpZiAoZm9ybU5vZGUuY2hpbGRyZW4gaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybU5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICBpZiAoZm9ybU5vZGUuY2hpbGRyZW4uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgc3dpdGNoIChmb3JtTm9kZS5jaGlsZHJlbltrZXldLnF1ZXN0aW9uLnJlbmRlcmluZ1R5cGUpIHtcbiAgICAgICAgICAgICAgY2FzZSAncGFnZSc6XG4gICAgICAgICAgICAgICAgdGhpcy5fZmluZERpYWdub3Npc1F1ZXN0aW9uTm9kZXMoZm9ybU5vZGUuY2hpbGRyZW5ba2V5XSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ3NlY3Rpb24nOlxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbmREaWFnbm9zaXNRdWVzdGlvbk5vZGVzKGZvcm1Ob2RlLmNoaWxkcmVuW2tleV0pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdncm91cCc6XG4gICAgICAgICAgICAgICAgdGhpcy5fZmluZERpYWdub3Npc1F1ZXN0aW9uTm9kZXMoZm9ybU5vZGUuY2hpbGRyZW5ba2V5XSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ3JlcGVhdGluZyc6XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1Ob2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCB7IGNoaWxkcmVuIH0gPSBmb3JtTm9kZTtcbiAgICAgICAgICAgICAgICAgIC8vIENvbmRpdGlvbiBmb3IgZGlhZ25vc2lzR3JvdXAgbm9kZXNcbiAgICAgICAgICAgICAgICAgIGZvciAoY29uc3Qgbm9kZSBpbiBmb3JtTm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbkV4dHJhcyA9XG4gICAgICAgICAgICAgICAgICAgICAgZm9ybU5vZGUuY2hpbGRyZW5bbm9kZV0ucXVlc3Rpb24uZXh0cmFzO1xuICAgICAgICAgICAgICAgICAgICBpZiAocXVlc3Rpb25FeHRyYXMudHlwZSA9PT0gJ2RpYWdub3Npc0dyb3VwJykge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5Tm9kZSA9IGZvcm1Ob2RlLmNoaWxkcmVuW25vZGVdIGFzIEFycmF5Tm9kZTtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1EaWFnbm9zaXNOb2Rlcy5wdXNoKGFycmF5Tm9kZSk7XG4gICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8vIENvbmRpdGlvbiBmb3IgZGlhZ25vc2lzIG5vZGVzXG4gICAgICAgICAgICAgICAgICBPYmplY3QudmFsdWVzKGNoaWxkcmVuKS5mb3JFYWNoKChjaGlsZDogTGVhZk5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBxdWVzdGlvbiwgbm9kZUluZGV4IH0gPSBjaGlsZDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uLmV4dHJhcz8udHlwZSA9PT0gJ2RpYWdub3NpcycgJiZcbiAgICAgICAgICAgICAgICAgICAgICAhdGhpcy5mb3JtRGlhZ25vc2lzTm9kZXMuc29tZShcbiAgICAgICAgICAgICAgICAgICAgICAgICh4KSA9PiB4Lm5vZGVJbmRleCA9PT0gbm9kZUluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1EaWFnbm9zaXNOb2Rlcy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY29udmVydChkaWFnbm9zaXM6IERpYWdub3Npcyk6IERpYWdub3Npc1BheWxvYWQge1xuICAgIHJldHVybiB7XG4gICAgICB1dWlkOiBkaWFnbm9zaXMudXVpZCxcbiAgICAgIGVuY291bnRlcjogZGlhZ25vc2lzLmVuY291bnRlcixcbiAgICAgIHBhdGllbnQ6IGRpYWdub3Npcy5wYXRpZW50LFxuICAgICAgZGlhZ25vc2lzOiB7XG4gICAgICAgIGNvZGVkOiBkaWFnbm9zaXMuZGlhZ25vc2lzLmNvZGVkLnV1aWQsXG4gICAgICAgIG5vbkNvZGVkOiBkaWFnbm9zaXMuZGlhZ25vc2lzLm5vbkNvZGVkXG4gICAgICB9LFxuICAgICAgY2VydGFpbnR5OiBkaWFnbm9zaXMuY2VydGFpbnR5LFxuICAgICAgcmFuazogZGlhZ25vc2lzLnJhbmssXG4gICAgICB2b2lkZWQ6IGRpYWdub3Npcy52b2lkZWRcbiAgICB9O1xuICB9XG5cbiAgaGFzRGlhZ25vc2lzTm9kZUNoYW5nZWQobm9kZUFzR3JvdXA6IEdyb3VwTm9kZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNoaWxkcmVuTm9kZXMgPSBPYmplY3QudmFsdWVzKG5vZGVBc0dyb3VwLmNoaWxkcmVuKSBhcyBBcnJheTxcbiAgICAgIExlYWZOb2RlXG4gICAgPjtcblxuICAgIGZvciAobGV0IGNoaWxkTm9kZSBvZiBjaGlsZHJlbk5vZGVzKSB7XG4gICAgICBpZiAoXG4gICAgICAgIGNoaWxkTm9kZS5jb250cm9sLnZhbHVlICE9PSBub2RlQXNHcm91cC5pbml0aWFsVmFsdWU/LnByaW1hcnlEaWFnbm9zaXNJZFxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpYWdub3NpcyB7XG4gIHV1aWQ/OiBzdHJpbmc7XG4gIGRpc3BsYXk/OiBzdHJpbmc7XG4gIGVuY291bnRlcj86IHN0cmluZztcbiAgcGF0aWVudD86IHN0cmluZztcbiAgZGlhZ25vc2lzOiB7XG4gICAgY29kZWQ/OiB7XG4gICAgICB1dWlkOiBzdHJpbmc7XG4gICAgICBkaXNwbGF5Pzogc3RyaW5nO1xuICAgIH07XG4gICAgbm9uQ29kZWQ/OiBzdHJpbmc7XG4gIH07XG4gIGNlcnRhaW50eTogJ0NPTkZJUk1FRCcgfCAnUFJPVklTSU9OQUwnO1xuICByYW5rOiBudW1iZXI7XG4gIHZvaWRlZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlhZ25vc2lzUGF5bG9hZCB7XG4gIHV1aWQ/OiBzdHJpbmc7XG4gIGVuY291bnRlcj86IHN0cmluZztcbiAgcGF0aWVudD86IHN0cmluZztcbiAgZGlhZ25vc2lzOiB7XG4gICAgY29kZWQ/OiBzdHJpbmc7XG4gICAgbm9uQ29kZWQ/OiBzdHJpbmc7XG4gIH07XG4gIGNlcnRhaW50eTogJ0NPTkZJUk1FRCcgfCAnUFJPVklTSU9OQUwnO1xuICByYW5rOiBudW1iZXI7XG4gIHZvaWRlZD86IGJvb2xlYW47XG59XG4iXX0=