@openmrs/ngx-formentry 3.0.0

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 (351) hide show
  1. package/abstract-controls-extension/afe-control-type.d.ts +6 -0
  2. package/abstract-controls-extension/afe-form-array.d.ts +43 -0
  3. package/abstract-controls-extension/afe-form-control.d.ts +46 -0
  4. package/abstract-controls-extension/afe-form-group.d.ts +38 -0
  5. package/abstract-controls-extension/control-extensions.d.ts +4 -0
  6. package/abstract-controls-extension/index.d.ts +4 -0
  7. package/abstract-controls-extension/value-change.listener.d.ts +4 -0
  8. package/bundles/openmrs-ngx-formentry.umd.js +16104 -0
  9. package/bundles/openmrs-ngx-formentry.umd.js.map +1 -0
  10. package/change-tracking/control-relation.d.ts +12 -0
  11. package/change-tracking/control-relations.d.ts +12 -0
  12. package/components/afe-ng-select.component.d.ts +28 -0
  13. package/components/appointments-overview/appointments-overview.component.d.ts +17 -0
  14. package/components/check-box/checkbox.component.d.ts +19 -0
  15. package/components/check-box/checkbox.module.d.ts +9 -0
  16. package/components/custom-component-wrapper/custom-component-wrapper..module.d.ts +9 -0
  17. package/components/custom-component-wrapper/custom-component-wrapper.component.d.ts +12 -0
  18. package/components/custom-control-wrapper/custom-control-wrapper..module.d.ts +10 -0
  19. package/components/custom-control-wrapper/custom-control-wrapper.component.d.ts +28 -0
  20. package/components/date-time-picker/date-picker/date-picker.component.d.ts +45 -0
  21. package/components/date-time-picker/date-time-picker.component.d.ts +28 -0
  22. package/components/date-time-picker/date-time-picker.module.d.ts +13 -0
  23. package/components/date-time-picker/index.d.ts +8 -0
  24. package/components/date-time-picker/picker-modal/modal.component.d.ts +12 -0
  25. package/components/date-time-picker/pipes/moment.pipe.d.ts +11 -0
  26. package/components/date-time-picker/time-picker/time-picker.component.d.ts +32 -0
  27. package/components/file-upload/file-upload.component.d.ts +29 -0
  28. package/components/file-upload/file-upload.module.d.ts +12 -0
  29. package/components/file-upload/secure.pipe.d.ts +26 -0
  30. package/components/input/input.directive.d.ts +31 -0
  31. package/components/input/input.module.d.ts +11 -0
  32. package/components/input/label.component.d.ts +90 -0
  33. package/components/input/text-area.directive.d.ts +24 -0
  34. package/components/ngx-datetime-picker/ngx-datetime-picker.component.d.ts +21 -0
  35. package/components/ngx-datetime-picker/ngx-datetime-picker.module.d.ts +11 -0
  36. package/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.d.ts +189 -0
  37. package/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.d.ts +15 -0
  38. package/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.d.ts +73 -0
  39. package/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.d.ts +5 -0
  40. package/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.d.ts +12 -0
  41. package/components/ngx-pick-datetime/lib/date-time/calendar-body.component.d.ts +76 -0
  42. package/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.d.ts +139 -0
  43. package/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.d.ts +108 -0
  44. package/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.d.ts +120 -0
  45. package/components/ngx-pick-datetime/lib/date-time/calendar.component.d.ts +137 -0
  46. package/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +92 -0
  47. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.d.ts +121 -0
  48. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +149 -0
  49. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.d.ts +51 -0
  50. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.d.ts +20 -0
  51. package/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.d.ts +8 -0
  52. package/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.d.ts +156 -0
  53. package/components/ngx-pick-datetime/lib/date-time/date-time.class.d.ts +89 -0
  54. package/components/ngx-pick-datetime/lib/date-time/date-time.module.d.ts +23 -0
  55. package/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.d.ts +10 -0
  56. package/components/ngx-pick-datetime/lib/date-time/timer-box.component.d.ts +35 -0
  57. package/components/ngx-pick-datetime/lib/date-time/timer.component.d.ts +128 -0
  58. package/components/ngx-pick-datetime/lib/dialog/dialog-config.class.d.ts +93 -0
  59. package/components/ngx-pick-datetime/lib/dialog/dialog-container.component.d.ts +58 -0
  60. package/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.d.ts +49 -0
  61. package/components/ngx-pick-datetime/lib/dialog/dialog.module.d.ts +11 -0
  62. package/components/ngx-pick-datetime/lib/dialog/dialog.service.d.ts +73 -0
  63. package/components/ngx-pick-datetime/lib/utils/index.d.ts +4 -0
  64. package/components/ngx-pick-datetime/lib/utils/object.utils.d.ts +11 -0
  65. package/components/ngx-remote-select/ngx-remote-select.component.d.ts +40 -0
  66. package/components/ngx-remote-select/ngx-remote-select.module.d.ts +10 -0
  67. package/components/ngx-tabset/components/ngx-tab-set.component.d.ts +19 -0
  68. package/components/ngx-tabset/components/tab.component.d.ts +13 -0
  69. package/components/ngx-tabset/directives/hover-class.directive.d.ts +11 -0
  70. package/components/ngx-tabset/modules/ngx-tabset.module.d.ts +19 -0
  71. package/components/number-input/number-input.component.d.ts +151 -0
  72. package/components/number-input/number-input.module.d.ts +9 -0
  73. package/components/radio-button/radio.component.d.ts +22 -0
  74. package/components/radio-button/radio.module.d.ts +9 -0
  75. package/components/select/optgroup.directive.d.ts +6 -0
  76. package/components/select/option.directive.d.ts +6 -0
  77. package/components/select/select.component.d.ts +115 -0
  78. package/components/select/select.module.d.ts +11 -0
  79. package/esm2015/abstract-controls-extension/afe-control-type.js +8 -0
  80. package/esm2015/abstract-controls-extension/afe-form-array.js +85 -0
  81. package/esm2015/abstract-controls-extension/afe-form-control.js +88 -0
  82. package/esm2015/abstract-controls-extension/afe-form-group.js +61 -0
  83. package/esm2015/abstract-controls-extension/control-extensions.js +5 -0
  84. package/esm2015/abstract-controls-extension/index.js +5 -0
  85. package/esm2015/abstract-controls-extension/value-change.listener.js +2 -0
  86. package/esm2015/change-tracking/control-relation.js +44 -0
  87. package/esm2015/change-tracking/control-relations.js +32 -0
  88. package/esm2015/components/afe-ng-select.component.js +101 -0
  89. package/esm2015/components/appointments-overview/appointments-overview.component.js +121 -0
  90. package/esm2015/components/check-box/checkbox.component.js +90 -0
  91. package/esm2015/components/check-box/checkbox.module.js +19 -0
  92. package/esm2015/components/custom-component-wrapper/custom-component-wrapper..module.js +21 -0
  93. package/esm2015/components/custom-component-wrapper/custom-component-wrapper.component.js +23 -0
  94. package/esm2015/components/custom-control-wrapper/custom-control-wrapper..module.js +22 -0
  95. package/esm2015/components/custom-control-wrapper/custom-control-wrapper.component.js +73 -0
  96. package/esm2015/components/date-time-picker/date-picker/date-picker.component.js +192 -0
  97. package/esm2015/components/date-time-picker/date-time-picker.component.js +119 -0
  98. package/esm2015/components/date-time-picker/date-time-picker.module.js +47 -0
  99. package/esm2015/components/date-time-picker/index.js +9 -0
  100. package/esm2015/components/date-time-picker/picker-modal/modal.component.js +31 -0
  101. package/esm2015/components/date-time-picker/pipes/moment.pipe.js +17 -0
  102. package/esm2015/components/date-time-picker/time-picker/time-picker.component.js +125 -0
  103. package/esm2015/components/file-upload/file-upload.component.js +122 -0
  104. package/esm2015/components/file-upload/file-upload.module.js +39 -0
  105. package/esm2015/components/file-upload/secure.pipe.js +101 -0
  106. package/esm2015/components/input/input.directive.js +78 -0
  107. package/esm2015/components/input/input.module.js +23 -0
  108. package/esm2015/components/input/label.component.js +263 -0
  109. package/esm2015/components/input/text-area.directive.js +54 -0
  110. package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.component.js +80 -0
  111. package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.module.js +38 -0
  112. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.js +114 -0
  113. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.js +7 -0
  114. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.js +347 -0
  115. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.js +16 -0
  116. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.js +39 -0
  117. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-body.component.js +149 -0
  118. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.js +445 -0
  119. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.js +378 -0
  120. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.js +373 -0
  121. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar.component.js +348 -0
  122. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.js +265 -0
  123. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.js +399 -0
  124. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.js +614 -0
  125. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.js +62 -0
  126. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.js +70 -0
  127. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.js +21 -0
  128. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.js +528 -0
  129. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time.class.js +166 -0
  130. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time.module.js +83 -0
  131. package/esm2015/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.js +28 -0
  132. package/esm2015/components/ngx-pick-datetime/lib/date-time/timer-box.component.js +96 -0
  133. package/esm2015/components/ngx-pick-datetime/lib/date-time/timer.component.js +298 -0
  134. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog-config.class.js +56 -0
  135. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog-container.component.js +247 -0
  136. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.js +119 -0
  137. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.module.js +27 -0
  138. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.service.js +233 -0
  139. package/esm2015/components/ngx-pick-datetime/lib/utils/index.js +5 -0
  140. package/esm2015/components/ngx-pick-datetime/lib/utils/object.utils.js +26 -0
  141. package/esm2015/components/ngx-remote-select/ngx-remote-select.component.js +135 -0
  142. package/esm2015/components/ngx-remote-select/ngx-remote-select.module.js +21 -0
  143. package/esm2015/components/ngx-tabset/components/ngx-tab-set.component.js +76 -0
  144. package/esm2015/components/ngx-tabset/components/tab.component.js +37 -0
  145. package/esm2015/components/ngx-tabset/directives/hover-class.directive.js +30 -0
  146. package/esm2015/components/ngx-tabset/modules/ngx-tabset.module.js +38 -0
  147. package/esm2015/components/number-input/number-input.component.js +233 -0
  148. package/esm2015/components/number-input/number-input.module.js +20 -0
  149. package/esm2015/components/radio-button/radio.component.js +87 -0
  150. package/esm2015/components/radio-button/radio.module.js +19 -0
  151. package/esm2015/components/select/optgroup.directive.js +19 -0
  152. package/esm2015/components/select/option.directive.js +19 -0
  153. package/esm2015/components/select/select.component.js +187 -0
  154. package/esm2015/components/select/select.module.js +23 -0
  155. package/esm2015/form-entry/control-alerts/alert-helpers.js +40 -0
  156. package/esm2015/form-entry/control-alerts/can-generate-alert.js +2 -0
  157. package/esm2015/form-entry/control-calculators/can-calculate.js +2 -0
  158. package/esm2015/form-entry/control-hiders-disablers/can-disable.js +2 -0
  159. package/esm2015/form-entry/control-hiders-disablers/can-hide.js +2 -0
  160. package/esm2015/form-entry/control-hiders-disablers/disabler-helper.js +32 -0
  161. package/esm2015/form-entry/control-hiders-disablers/hider-helpers.js +40 -0
  162. package/esm2015/form-entry/data-sources/data-sources.js +30 -0
  163. package/esm2015/form-entry/data-sources/dummy-data-source.js +104 -0
  164. package/esm2015/form-entry/directives/collapse-animations.js +11 -0
  165. package/esm2015/form-entry/directives/collapse.directive.js +172 -0
  166. package/esm2015/form-entry/directives/historical-value.directive.js +67 -0
  167. package/esm2015/form-entry/error-renderer/error-renderer.component.js +56 -0
  168. package/esm2015/form-entry/expression-runner/expression-runner.js +170 -0
  169. package/esm2015/form-entry/form-entry.module.js +187 -0
  170. package/esm2015/form-entry/form-factory/control-relations.factory.js +238 -0
  171. package/esm2015/form-entry/form-factory/form-control.service.js +119 -0
  172. package/esm2015/form-entry/form-factory/form-node.js +96 -0
  173. package/esm2015/form-entry/form-factory/form.factory.js +141 -0
  174. package/esm2015/form-entry/form-factory/form.js +189 -0
  175. package/esm2015/form-entry/form-factory/hiders-disablers.factory.js +67 -0
  176. package/esm2015/form-entry/form-factory/question.factory.js +942 -0
  177. package/esm2015/form-entry/form-factory/show-messages.factory.js +31 -0
  178. package/esm2015/form-entry/form-factory/validation.factory.js +147 -0
  179. package/esm2015/form-entry/form-renderer/form-renderer.component.js +268 -0
  180. package/esm2015/form-entry/helpers/historical-expression-helper-service.js +42 -0
  181. package/esm2015/form-entry/helpers/historical-field-helper-service.js +39 -0
  182. package/esm2015/form-entry/helpers/js-expression-helper.js +275 -0
  183. package/esm2015/form-entry/helpers/risk-dataset-table.js +247 -0
  184. package/esm2015/form-entry/pipes/time-ago.pipe.js +107 -0
  185. package/esm2015/form-entry/question-models/checkbox.model.js +11 -0
  186. package/esm2015/form-entry/question-models/conditional-validation.model.js +9 -0
  187. package/esm2015/form-entry/question-models/custom-control-question.model.js +10 -0
  188. package/esm2015/form-entry/question-models/date-question.js +12 -0
  189. package/esm2015/form-entry/question-models/date-validation.model.js +10 -0
  190. package/esm2015/form-entry/question-models/file-upload-question.js +13 -0
  191. package/esm2015/form-entry/question-models/group-question.js +12 -0
  192. package/esm2015/form-entry/question-models/interfaces/base-options.js +2 -0
  193. package/esm2015/form-entry/question-models/interfaces/checkbox-options.js +2 -0
  194. package/esm2015/form-entry/question-models/interfaces/data-source.js +2 -0
  195. package/esm2015/form-entry/question-models/interfaces/date-question-options.js +2 -0
  196. package/esm2015/form-entry/question-models/interfaces/file-upload-question-options.js +2 -0
  197. package/esm2015/form-entry/question-models/interfaces/group-question-options.js +2 -0
  198. package/esm2015/form-entry/question-models/interfaces/multi-select-options.js +2 -0
  199. package/esm2015/form-entry/question-models/interfaces/nested-questions.js +7 -0
  200. package/esm2015/form-entry/question-models/interfaces/radio-button-options.js +2 -0
  201. package/esm2015/form-entry/question-models/interfaces/repeating-question-options.js +2 -0
  202. package/esm2015/form-entry/question-models/interfaces/select-option.js +2 -0
  203. package/esm2015/form-entry/question-models/interfaces/select-question-options.js +2 -0
  204. package/esm2015/form-entry/question-models/interfaces/test-order-question-options.js +2 -0
  205. package/esm2015/form-entry/question-models/interfaces/text-area-question-options.js +2 -0
  206. package/esm2015/form-entry/question-models/interfaces/text-question-options.js +2 -0
  207. package/esm2015/form-entry/question-models/interfaces/ui-select-question-options.js +2 -0
  208. package/esm2015/form-entry/question-models/js-expression-validation.model.js +8 -0
  209. package/esm2015/form-entry/question-models/max-validation.model.js +9 -0
  210. package/esm2015/form-entry/question-models/min-validation.model.js +9 -0
  211. package/esm2015/form-entry/question-models/models.js +13 -0
  212. package/esm2015/form-entry/question-models/multi-select-question.js +11 -0
  213. package/esm2015/form-entry/question-models/pair.model.js +7 -0
  214. package/esm2015/form-entry/question-models/question-base.js +26 -0
  215. package/esm2015/form-entry/question-models/radio-button.model.js +12 -0
  216. package/esm2015/form-entry/question-models/rendering-type.js +9 -0
  217. package/esm2015/form-entry/question-models/repeating-question.js +11 -0
  218. package/esm2015/form-entry/question-models/select-option.js +7 -0
  219. package/esm2015/form-entry/question-models/select-question.js +12 -0
  220. package/esm2015/form-entry/question-models/test-order-question.js +15 -0
  221. package/esm2015/form-entry/question-models/text-area-input-question.js +13 -0
  222. package/esm2015/form-entry/question-models/text-input-question.js +10 -0
  223. package/esm2015/form-entry/question-models/ui-select-question.js +11 -0
  224. package/esm2015/form-entry/question-models/validation.model.js +7 -0
  225. package/esm2015/form-entry/services/debug-mode.service.js +24 -0
  226. package/esm2015/form-entry/services/form-errors.service.js +21 -0
  227. package/esm2015/form-entry/services/form-schema-compiler.service.js +248 -0
  228. package/esm2015/form-entry/services/historical-encounter-data.service.js +172 -0
  229. package/esm2015/form-entry/utils/messages.js +12 -0
  230. package/esm2015/form-entry/validators/conditional-answered.validator.js +46 -0
  231. package/esm2015/form-entry/validators/conditional-required.validator.js +40 -0
  232. package/esm2015/form-entry/validators/date.validator.js +18 -0
  233. package/esm2015/form-entry/validators/future-date-restriction.validator.js +21 -0
  234. package/esm2015/form-entry/validators/js-expression.validator.js +26 -0
  235. package/esm2015/form-entry/validators/max-date.validator.js +23 -0
  236. package/esm2015/form-entry/validators/max.validator.js +17 -0
  237. package/esm2015/form-entry/validators/min-date.validator.js +23 -0
  238. package/esm2015/form-entry/validators/min.validator.js +17 -0
  239. package/esm2015/form-entry/validators/required.validator.js +11 -0
  240. package/esm2015/form-entry/validators/validations.js +5 -0
  241. package/esm2015/form-entry/value-adapters/encounter.adapter.js +171 -0
  242. package/esm2015/form-entry/value-adapters/obs-adapter-helper.js +512 -0
  243. package/esm2015/form-entry/value-adapters/obs.adapter.js +542 -0
  244. package/esm2015/form-entry/value-adapters/order.adapter.js +186 -0
  245. package/esm2015/form-entry/value-adapters/person-attribute.adapter.js +88 -0
  246. package/esm2015/form-entry/value-adapters/value.adapter.js +2 -0
  247. package/esm2015/lib/index.js +58 -0
  248. package/esm2015/openmrs-ngx-formentry.js +5 -0
  249. package/esm2015/public_api.js +2 -0
  250. package/esm2015/shared.module.js +21 -0
  251. package/fesm2015/openmrs-ngx-formentry.js +14323 -0
  252. package/fesm2015/openmrs-ngx-formentry.js.map +1 -0
  253. package/form-entry/control-alerts/alert-helpers.d.ts +9 -0
  254. package/form-entry/control-alerts/can-generate-alert.d.ts +18 -0
  255. package/form-entry/control-calculators/can-calculate.d.ts +5 -0
  256. package/form-entry/control-hiders-disablers/can-disable.d.ts +19 -0
  257. package/form-entry/control-hiders-disablers/can-hide.d.ts +20 -0
  258. package/form-entry/control-hiders-disablers/disabler-helper.d.ts +7 -0
  259. package/form-entry/control-hiders-disablers/hider-helpers.d.ts +9 -0
  260. package/form-entry/data-sources/data-sources.d.ts +10 -0
  261. package/form-entry/data-sources/dummy-data-source.d.ts +18 -0
  262. package/form-entry/directives/collapse-animations.d.ts +4 -0
  263. package/form-entry/directives/collapse.directive.d.ts +45 -0
  264. package/form-entry/directives/historical-value.directive.d.ts +16 -0
  265. package/form-entry/error-renderer/error-renderer.component.d.ts +18 -0
  266. package/form-entry/expression-runner/expression-runner.d.ts +18 -0
  267. package/form-entry/form-entry.module.d.ts +30 -0
  268. package/form-entry/form-factory/control-relations.factory.d.ts +18 -0
  269. package/form-entry/form-factory/form-control.service.d.ts +25 -0
  270. package/form-entry/form-factory/form-node.d.ts +52 -0
  271. package/form-entry/form-factory/form.d.ts +28 -0
  272. package/form-entry/form-factory/form.factory.d.ts +27 -0
  273. package/form-entry/form-factory/hiders-disablers.factory.d.ts +20 -0
  274. package/form-entry/form-factory/question.factory.d.ts +62 -0
  275. package/form-entry/form-factory/show-messages.factory.d.ts +15 -0
  276. package/form-entry/form-factory/validation.factory.d.ts +25 -0
  277. package/form-entry/form-renderer/form-renderer.component.d.ts +63 -0
  278. package/form-entry/helpers/historical-expression-helper-service.d.ts +8 -0
  279. package/form-entry/helpers/historical-field-helper-service.d.ts +7 -0
  280. package/form-entry/helpers/js-expression-helper.d.ts +37 -0
  281. package/form-entry/helpers/risk-dataset-table.d.ts +1 -0
  282. package/form-entry/pipes/time-ago.pipe.d.ts +14 -0
  283. package/form-entry/question-models/checkbox.model.d.ts +9 -0
  284. package/form-entry/question-models/conditional-validation.model.d.ts +6 -0
  285. package/form-entry/question-models/custom-control-question.model.d.ts +6 -0
  286. package/form-entry/question-models/date-question.d.ts +7 -0
  287. package/form-entry/question-models/date-validation.model.d.ts +5 -0
  288. package/form-entry/question-models/file-upload-question.d.ts +8 -0
  289. package/form-entry/question-models/group-question.d.ts +8 -0
  290. package/form-entry/question-models/interfaces/base-options.d.ts +30 -0
  291. package/form-entry/question-models/interfaces/checkbox-options.d.ts +7 -0
  292. package/form-entry/question-models/interfaces/data-source.d.ts +10 -0
  293. package/form-entry/question-models/interfaces/date-question-options.d.ts +3 -0
  294. package/form-entry/question-models/interfaces/file-upload-question-options.d.ts +5 -0
  295. package/form-entry/question-models/interfaces/group-question-options.d.ts +5 -0
  296. package/form-entry/question-models/interfaces/multi-select-options.d.ts +4 -0
  297. package/form-entry/question-models/interfaces/nested-questions.d.ts +6 -0
  298. package/form-entry/question-models/interfaces/radio-button-options.d.ts +8 -0
  299. package/form-entry/question-models/interfaces/repeating-question-options.d.ts +7 -0
  300. package/form-entry/question-models/interfaces/select-option.d.ts +4 -0
  301. package/form-entry/question-models/interfaces/select-question-options.d.ts +9 -0
  302. package/form-entry/question-models/interfaces/test-order-question-options.d.ts +14 -0
  303. package/form-entry/question-models/interfaces/text-area-question-options.d.ts +5 -0
  304. package/form-entry/question-models/interfaces/text-question-options.d.ts +4 -0
  305. package/form-entry/question-models/interfaces/ui-select-question-options.d.ts +9 -0
  306. package/form-entry/question-models/js-expression-validation.model.d.ts +5 -0
  307. package/form-entry/question-models/max-validation.model.d.ts +5 -0
  308. package/form-entry/question-models/min-validation.model.d.ts +5 -0
  309. package/form-entry/question-models/models.d.ts +16 -0
  310. package/form-entry/question-models/multi-select-question.d.ts +9 -0
  311. package/form-entry/question-models/pair.model.d.ts +5 -0
  312. package/form-entry/question-models/question-base.d.ts +45 -0
  313. package/form-entry/question-models/radio-button.model.d.ts +7 -0
  314. package/form-entry/question-models/rendering-type.d.ts +7 -0
  315. package/form-entry/question-models/repeating-question.d.ts +7 -0
  316. package/form-entry/question-models/select-option.d.ts +6 -0
  317. package/form-entry/question-models/select-question.d.ts +10 -0
  318. package/form-entry/question-models/test-order-question.d.ts +13 -0
  319. package/form-entry/question-models/text-area-input-question.d.ts +7 -0
  320. package/form-entry/question-models/text-input-question.d.ts +6 -0
  321. package/form-entry/question-models/ui-select-question.d.ts +11 -0
  322. package/form-entry/question-models/validation.model.d.ts +5 -0
  323. package/form-entry/services/debug-mode.service.d.ts +8 -0
  324. package/form-entry/services/form-errors.service.d.ts +13 -0
  325. package/form-entry/services/form-schema-compiler.service.d.ts +23 -0
  326. package/form-entry/services/historical-encounter-data.service.d.ts +15 -0
  327. package/form-entry/utils/messages.d.ts +11 -0
  328. package/form-entry/validators/conditional-answered.validator.d.ts +8 -0
  329. package/form-entry/validators/conditional-required.validator.d.ts +8 -0
  330. package/form-entry/validators/date.validator.d.ts +7 -0
  331. package/form-entry/validators/future-date-restriction.validator.d.ts +7 -0
  332. package/form-entry/validators/js-expression.validator.d.ts +8 -0
  333. package/form-entry/validators/max-date.validator.d.ts +6 -0
  334. package/form-entry/validators/max.validator.d.ts +6 -0
  335. package/form-entry/validators/min-date.validator.d.ts +6 -0
  336. package/form-entry/validators/min.validator.d.ts +6 -0
  337. package/form-entry/validators/required.validator.d.ts +6 -0
  338. package/form-entry/validators/validations.d.ts +4 -0
  339. package/form-entry/value-adapters/encounter.adapter.d.ts +26 -0
  340. package/form-entry/value-adapters/obs-adapter-helper.d.ts +34 -0
  341. package/form-entry/value-adapters/obs.adapter.d.ts +38 -0
  342. package/form-entry/value-adapters/order.adapter.d.ts +20 -0
  343. package/form-entry/value-adapters/person-attribute.adapter.d.ts +15 -0
  344. package/form-entry/value-adapters/value.adapter.d.ts +5 -0
  345. package/lib/index.d.ts +58 -0
  346. package/openmrs-ngx-formentry.d.ts +5 -0
  347. package/package.json +34 -0
  348. package/public_api.d.ts +1 -0
  349. package/shared.module.d.ts +9 -0
  350. package/styles/ngx-formentry.css +374 -0
  351. package/styles/picker.min.css +770 -0
@@ -0,0 +1,96 @@
1
+ export class NodeBase {
2
+ constructor(question, control, form, parentPath) {
3
+ this._control = control;
4
+ this._questionModel = question;
5
+ this._form = form;
6
+ this._path = parentPath ? parentPath + '.' + question.key : question.key;
7
+ }
8
+ get question() {
9
+ return this._questionModel;
10
+ }
11
+ get control() {
12
+ return this._control;
13
+ }
14
+ get form() {
15
+ return this._form;
16
+ }
17
+ get path() {
18
+ return this._path;
19
+ }
20
+ removeAt(index) { }
21
+ createChildNode() { }
22
+ removeChildNode() { }
23
+ }
24
+ export class LeafNode extends NodeBase {
25
+ get children() {
26
+ return null;
27
+ }
28
+ constructor(question, control, parentControl, form, parentPath) {
29
+ super(question, control, form, parentPath);
30
+ }
31
+ }
32
+ export class GroupNode extends NodeBase {
33
+ constructor(question, control, parentControl, form, parentPath) {
34
+ super(question, control, form, parentPath);
35
+ this._children = {};
36
+ }
37
+ get children() {
38
+ return this._children;
39
+ }
40
+ setChild(key, node) {
41
+ this.children[key] = node;
42
+ }
43
+ }
44
+ export class ArrayNode extends NodeBase {
45
+ constructor(question, control, parentControl, formFactory, form, parentPath) {
46
+ super(question, control, form, parentPath);
47
+ this.formFactory = formFactory;
48
+ this.childNodeCreatedEvents = [];
49
+ this._children = [];
50
+ this.childNodeCreatedEvents = [];
51
+ }
52
+ get children() {
53
+ return this._children;
54
+ }
55
+ createChildNode() {
56
+ if (this.children.length >= this.question.extras.questionOptions.max) {
57
+ confirm(`Cannot have more than ${this.question.extras.questionOptions.max} entries`);
58
+ return;
59
+ }
60
+ if (this.createChildFunc) {
61
+ const g = this.createChildFunc(this.question, this, this.formFactory);
62
+ this.fireChildNodeCreatedListener(g);
63
+ return g;
64
+ }
65
+ return null;
66
+ }
67
+ removeAt(index) {
68
+ if (this.children.length <= this.question.extras.questionOptions.min) {
69
+ const clearPrompt = confirm(`Are you sure you want to clear this entry?`);
70
+ if (clearPrompt && this.removeChildFunc && this.createChildNode) {
71
+ this.removeChildFunc(index, this);
72
+ const g = this.createChildFunc(this.question, this, this.formFactory, index);
73
+ this.fireChildNodeCreatedListener(g);
74
+ return g;
75
+ }
76
+ }
77
+ else {
78
+ const removePrompt = confirm('Are you sure you want to delete this item?');
79
+ if (removePrompt) {
80
+ if (this.removeChildFunc) {
81
+ this.removeChildFunc(index, this);
82
+ }
83
+ }
84
+ }
85
+ }
86
+ addChildNodeCreatedListener(func) {
87
+ this.childNodeCreatedEvents.push(func);
88
+ }
89
+ fireChildNodeCreatedListener(node) {
90
+ for (let i = 0; i < this.childNodeCreatedEvents.length; i++) {
91
+ const func = this.childNodeCreatedEvents[i];
92
+ func(node);
93
+ }
94
+ }
95
+ }
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1ub2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvZm9ybS1lbnRyeS9mb3JtLWZhY3RvcnkvZm9ybS1ub2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJCQSxNQUFNLE9BQWdCLFFBQVE7SUFVNUIsWUFDRSxRQUFzQixFQUN0QixPQUFzRCxFQUN0RCxJQUFXLEVBQ1gsVUFBbUI7UUFFbkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7UUFDeEIsSUFBSSxDQUFDLGNBQWMsR0FBRyxRQUFRLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUMzRSxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLElBQUk7UUFDYixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDcEIsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFhLElBQUksQ0FBQztJQUUzQixlQUFlLEtBQUssQ0FBQztJQUNyQixlQUFlLEtBQUssQ0FBQztDQUN0QjtBQUVELE1BQU0sT0FBTyxRQUFTLFNBQVEsUUFBUTtJQUNwQyxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxZQUNFLFFBQXNCLEVBQ3RCLE9BQXNELEVBQ3RELGFBQTRELEVBQzVE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QUFFO29CQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztpQkFDbkM7YUFDRjtTQUNGO0lBQ0gsQ0FBQztJQUVELDJCQUEyQixDQUFDLElBQVM7UUFDbkMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRUQsNEJBQTRCLENBQUMsSUFBZTtRQUMxQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzRCxNQUFNLElBQUksR0FBUSxJQUFJLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakQsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ1o7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtRmFjdG9yeSB9IGZyb20gJy4vZm9ybS5mYWN0b3J5JztcbmltcG9ydCB7IEZvcm0gfSBmcm9tICcuL2Zvcm0nO1xuXG4vLyBpbXBvcnQgeyBBZmVDb250cm9sVHlwZSwgQWZlRm9ybUFycmF5LCBBZmVGb3JtR3JvdXAsIEFmZUZvcm1Db250cm9sIH0gZnJvbSAnLi4vLi4vYWJzdHJhY3QtY29udHJvbHMtZXh0ZW5zaW9uJztcbmltcG9ydCB7IFF1ZXN0aW9uQmFzZSwgUmVwZWF0aW5nUXVlc3Rpb24gfSBmcm9tICcuLi9xdWVzdGlvbi1tb2RlbHMvbW9kZWxzJztcbmltcG9ydCB7XG4gIEFmZUZvcm1Db250cm9sLFxuICBBZmVGb3JtQXJyYXksXG4gIEFmZUZvcm1Hcm91cFxufSBmcm9tICcuLi8uLi9hYnN0cmFjdC1jb250cm9scy1leHRlbnNpb24nO1xuZXhwb3J0IGludGVyZmFjZSBDaGlsZE5vZGVDcmVhdGVkTGlzdGVuZXIge1xuICBhZGRDaGlsZE5vZGVDcmVhdGVkTGlzdGVuZXIoZnVuYzogYW55KTtcblxuICBmaXJlQ2hpbGROb2RlQ3JlYXRlZExpc3RlbmVyKG5vZGU6IEdyb3VwTm9kZSk7XG59XG5cbmV4cG9ydCB0eXBlIENyZWF0ZUFycmF5Q2hpbGROb2RlRnVuY3Rpb24gPSAoXG4gIHF1ZXN0aW9uOiBSZXBlYXRpbmdRdWVzdGlvbixcbiAgbm9kZTogQXJyYXlOb2RlLFxuICBmYWN0b3J5PzogRm9ybUZhY3RvcnksXG4gIHBvc2l0aW9uPzogbnVtYmVyXG4pID0+IEdyb3VwTm9kZTtcblxuZXhwb3J0IGludGVyZmFjZSBSZW1vdmVBcnJheUNoaWxkTm9kZUZ1bmN0aW9uIHtcbiAgKGluZGV4OiBudW1iZXIsIG5vZGU6IEFycmF5Tm9kZSk7XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBOb2RlQmFzZSB7XG4gIHB1YmxpYyBhYnN0cmFjdCBjaGlsZHJlbj86IGFueTtcbiAgcHVibGljIG5vZGVJbmRleD86IE51bWJlcjtcbiAgcHJpdmF0ZSBfY29udHJvbDogQWZlRm9ybUNvbnRyb2wgfCBBZmVGb3JtQXJyYXkgfCBBZmVGb3JtR3JvdXA7XG4gIHByaXZhdGUgX3F1ZXN0aW9uTW9kZWw6IFF1ZXN0aW9uQmFzZTtcbiAgcHJpdmF0ZSBfZm9ybTogRm9ybTtcbiAgcHJpdmF0ZSBfcGF0aDogc3RyaW5nO1xuXG4gIHB1YmxpYyBpbml0aWFsVmFsdWU6IGFueTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBxdWVzdGlvbjogUXVlc3Rpb25CYXNlLFxuICAgIGNvbnRyb2w/OiBBZmVGb3JtQ29udHJvbCB8IEFmZUZvcm1BcnJheSB8IEFmZUZvcm1Hcm91cCxcbiAgICBmb3JtPzogRm9ybSxcbiAgICBwYXJlbnRQYXRoPzogc3RyaW5nXG4gICkge1xuICAgIHRoaXMuX2NvbnRyb2wgPSBjb250cm9sO1xuICAgIHRoaXMuX3F1ZXN0aW9uTW9kZWwgPSBxdWVzdGlvbjtcbiAgICB0aGlzLl9mb3JtID0gZm9ybTtcbiAgICB0aGlzLl9wYXRoID0gcGFyZW50UGF0aCA/IHBhcmVudFBhdGggKyAnLicgKyBxdWVzdGlvbi5rZXkgOiBxdWVzdGlvbi5rZXk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHF1ZXN0aW9uKCk6IFF1ZXN0aW9uQmFzZSB7XG4gICAgcmV0dXJuIHRoaXMuX3F1ZXN0aW9uTW9kZWw7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRyb2woKTogQWZlRm9ybUNvbnRyb2wgfCBBZmVGb3JtQXJyYXkgfCBBZmVGb3JtR3JvdXAge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sO1xuICB9XG5cbiAgcHVibGljIGdldCBmb3JtKCk6IEZvcm0ge1xuICAgIHJldHVybiB0aGlzLl9mb3JtO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXRoKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BhdGg7XG4gIH1cbiAgcmVtb3ZlQXQoaW5kZXg6IG51bWJlcikgeyB9XG5cbiAgY3JlYXRlQ2hpbGROb2RlKCkgeyB9XG4gIHJlbW92ZUNoaWxkTm9kZSgpIHsgfVxufVxuXG5leHBvcnQgY2xhc3MgTGVhZk5vZGUgZXh0ZW5kcyBOb2RlQmFzZSB7XG4gIGdldCBjaGlsZHJlbigpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBjb25zdHJ1Y3RvcihcbiAgICBxdWVzdGlvbjogUXVlc3Rpb25CYXNlLFxuICAgIGNvbnRyb2w/OiBBZmVGb3JtQ29udHJvbCB8IEFmZUZvcm1BcnJheSB8IEFmZUZvcm1Hcm91cCxcbiAgICBwYXJlbnRDb250cm9sPzogQWZlRm9ybUNvbnRyb2wgfCBBZmVGb3JtQXJyYXkgfCBBZmVGb3JtR3JvdXAsXG4gICAgZm9ybT86IEZvcm0sXG4gICAgcGFyZW50UGF0aD86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihxdWVzdGlvbiwgY29udHJvbCwgZm9ybSwgcGFyZW50UGF0aCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdyb3VwTm9kZSBleHRlbmRzIE5vZGVCYXNlIHtcbiAgcHJpdmF0ZSBfY2hpbGRyZW46IGFueTtcbiAgY29uc3RydWN0b3IoXG4gICAgcXVlc3Rpb246IFF1ZXN0aW9uQmFzZSxcbiAgICBjb250cm9sPzogQWZlRm9ybUNvbnRyb2wgfCBBZmVGb3JtQXJyYXkgfCBBZmVGb3JtR3JvdXAsXG4gICAgcGFyZW50Q29udHJvbD86IEFmZUZvcm1Db250cm9sIHwgQWZlRm9ybUFycmF5IHwgQWZlRm9ybUdyb3VwLFxuICAgIGZvcm0/OiBGb3JtLFxuICAgIHBhcmVudFBhdGg/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIocXVlc3Rpb24sIGNvbnRyb2wsIGZvcm0sIHBhcmVudFBhdGgpO1xuICAgIHRoaXMuX2NoaWxkcmVuID0ge307XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoaWxkcmVuKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuO1xuICB9XG5cbiAgcHVibGljIHNldENoaWxkKGtleTogc3RyaW5nLCBub2RlOiBOb2RlQmFzZSkge1xuICAgIHRoaXMuY2hpbGRyZW5ba2V5XSA9IG5vZGU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEFycmF5Tm9kZSBleHRlbmRzIE5vZGVCYXNlIGltcGxlbWVudHMgQ2hpbGROb2RlQ3JlYXRlZExpc3RlbmVyIHtcbiAgcHJpdmF0ZSBjaGlsZE5vZGVDcmVhdGVkRXZlbnRzOiBhbnlbXSA9IFtdO1xuICBwcml2YXRlIF9jaGlsZHJlbjogR3JvdXBOb2RlW107XG4gIHB1YmxpYyBjcmVhdGVDaGlsZEZ1bmM6IENyZWF0ZUFycmF5Q2hpbGROb2RlRnVuY3Rpb247XG4gIHB1YmxpYyByZW1vdmVDaGlsZEZ1bmM6IFJlbW92ZUFycmF5Q2hpbGROb2RlRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcXVlc3Rpb246IFF1ZXN0aW9uQmFzZSxcbiAgICBjb250cm9sPzogQWZlRm9ybUNvbnRyb2wgfCBBZmVGb3JtQXJyYXkgfCBBZmVGb3JtR3JvdXAsXG4gICAgcGFyZW50Q29udHJvbD86IEFmZUZvcm1Db250cm9sIHwgQWZlRm9ybUFycmF5IHwgQWZlRm9ybUdyb3VwLFxuICAgIHByaXZhdGUgZm9ybUZhY3Rvcnk/OiBGb3JtRmFjdG9yeSxcbiAgICBmb3JtPzogRm9ybSxcbiAgICBwYXJlbnRQYXRoPzogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKHF1ZXN0aW9uLCBjb250cm9sLCBmb3JtLCBwYXJlbnRQYXRoKTtcbiAgICB0aGlzLl9jaGlsZHJlbiA9IFtdO1xuICAgIHRoaXMuY2hpbGROb2RlQ3JlYXRlZEV2ZW50cyA9IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBjaGlsZHJlbigpOiBHcm91cE5vZGVbXSB7XG4gICAgcmV0dXJuIHRoaXMuX2NoaWxkcmVuO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZUNoaWxkTm9kZSgpOiBHcm91cE5vZGUge1xuICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA+PSB0aGlzLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMubWF4KSB7XG4gICAgICBjb25maXJtKFxuICAgICAgICBgQ2Fubm90IGhhdmUgbW9yZSB0aGFuICR7dGhpcy5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zLm1heH0gZW50cmllc2BcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmNyZWF0ZUNoaWxkRnVuYykge1xuICAgICAgY29uc3QgZzogR3JvdXBOb2RlID0gdGhpcy5jcmVhdGVDaGlsZEZ1bmMoXG4gICAgICAgIHRoaXMucXVlc3Rpb24gYXMgUmVwZWF0aW5nUXVlc3Rpb24sXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRoaXMuZm9ybUZhY3RvcnlcbiAgICAgICk7XG4gICAgICB0aGlzLmZpcmVDaGlsZE5vZGVDcmVhdGVkTGlzdGVuZXIoZyk7XG4gICAgICByZXR1cm4gZztcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlQXQoaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA8PSB0aGlzLnF1ZXN0aW9uLmV4dHJhcy5xdWVzdGlvbk9wdGlvbnMubWluKSB7XG4gICAgICBjb25zdCBjbGVhclByb21wdCA9IGNvbmZpcm0oYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjbGVhciB0aGlzIGVudHJ5P2ApO1xuICAgICAgaWYgKGNsZWFyUHJvbXB0ICYmIHRoaXMucmVtb3ZlQ2hpbGRGdW5jICYmIHRoaXMuY3JlYXRlQ2hpbGROb2RlKSB7XG4gICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRGdW5jKGluZGV4LCB0aGlzKTtcblxuICAgICAgICBjb25zdCBnOiBHcm91cE5vZGUgPSB0aGlzLmNyZWF0ZUNoaWxkRnVuYyhcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uIGFzIFJlcGVhdGluZ1F1ZXN0aW9uLFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgdGhpcy5mb3JtRmFjdG9yeSxcbiAgICAgICAgICBpbmRleFxuICAgICAgICApO1xuICAgICAgICB0aGlzLmZpcmVDaGlsZE5vZGVDcmVhdGVkTGlzdGVuZXIoZyk7XG4gICAgICAgIHJldHVybiBnO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZW1vdmVQcm9tcHQgPSBjb25maXJtKFxuICAgICAgICAnQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGl0ZW0/J1xuICAgICAgKTtcbiAgICAgIGlmIChyZW1vdmVQcm9tcHQpIHtcbiAgICAgICAgaWYgKHRoaXMucmVtb3ZlQ2hpbGRGdW5jKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVDaGlsZEZ1bmMoaW5kZXgsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkQ2hpbGROb2RlQ3JlYXRlZExpc3RlbmVyKGZ1bmM6IGFueSkge1xuICAgIHRoaXMuY2hpbGROb2RlQ3JlYXRlZEV2ZW50cy5wdXNoKGZ1bmMpO1xuICB9XG5cbiAgZmlyZUNoaWxkTm9kZUNyZWF0ZWRMaXN0ZW5lcihub2RlOiBHcm91cE5vZGUpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY2hpbGROb2RlQ3JlYXRlZEV2ZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgZnVuYzogYW55ID0gdGhpcy5jaGlsZE5vZGVDcmVhdGVkRXZlbnRzW2ldO1xuICAgICAgZnVuYyhub2RlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,141 @@
1
+ import { Injectable } from '@angular/core';
2
+ // import { AbstractControl } from '@angular/forms';
3
+ import { LeafNode, GroupNode, ArrayNode } from './form-node';
4
+ import { NestedQuestion, RepeatingQuestion, QuestionGroup } from '../question-models/models';
5
+ import { FormControlService } from './form-control.service';
6
+ import { QuestionFactory } from './question.factory';
7
+ import { AfeControlType, AfeFormArray } from '../../abstract-controls-extension';
8
+ import { ControlRelationsFactory } from './control-relations.factory';
9
+ import { Validations } from '../validators/validations';
10
+ import { Form } from './form';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "./form-control.service";
13
+ import * as i2 from "./question.factory";
14
+ import * as i3 from "./control-relations.factory";
15
+ export class FormFactory {
16
+ constructor(controlService, questionFactroy, controlRelationsFactory) {
17
+ this.controlService = controlService;
18
+ this.questionFactroy = questionFactroy;
19
+ this.controlRelationsFactory = controlRelationsFactory;
20
+ this.nodeIndex = 0;
21
+ this.hd = {
22
+ getValue: () => {
23
+ return 20;
24
+ }
25
+ };
26
+ }
27
+ createForm(schema, dataSource) {
28
+ const form = new Form(schema, this, this.questionFactroy);
29
+ if (dataSource) {
30
+ for (const key in dataSource) {
31
+ if (dataSource.hasOwnProperty(key)) {
32
+ form.dataSourcesContainer.registerDataSource(key, dataSource[key], false);
33
+ }
34
+ }
35
+ }
36
+ const question = this.questionFactroy.createQuestionModel(schema, form);
37
+ form.rootNode = this.createNode(question, null, null, form);
38
+ this.buildRelations(form.rootNode);
39
+ form.updateHiddenDisabledStateForAllControls();
40
+ form.updateAlertsForAllControls();
41
+ return form;
42
+ }
43
+ buildRelations(rootNode) {
44
+ Validations.JSExpressionValidatorsEnabled = false;
45
+ this.controlRelationsFactory.buildRelations(rootNode);
46
+ // enable js expression validations
47
+ Validations.JSExpressionValidatorsEnabled = true;
48
+ }
49
+ createNode(question, parentNode, parentControl, form) {
50
+ let node = null;
51
+ if (question instanceof NestedQuestion) {
52
+ if (question instanceof RepeatingQuestion) {
53
+ node = this.createArrayNode(question, parentNode, parentControl, form);
54
+ }
55
+ else {
56
+ node = this.createGroupNode(question, parentNode, parentControl, form);
57
+ }
58
+ }
59
+ else {
60
+ node = this.createLeafNode(question, parentNode, parentControl, form);
61
+ }
62
+ node.nodeIndex = this.nodeIndex;
63
+ this.nodeIndex++;
64
+ return node;
65
+ }
66
+ createLeafNode(question, parentNode, parentControl, form) {
67
+ const controlModel = this.controlService.generateControlModel(question, parentControl, false, form);
68
+ return new LeafNode(question, controlModel, null, form, parentNode ? parentNode.path : undefined);
69
+ }
70
+ createGroupNode(question, parentNode, parentControl, form) {
71
+ const controlModel = this.controlService.generateControlModel(question, parentControl, false, form);
72
+ const groupNode = new GroupNode(question, controlModel, null, form, parentNode ? parentNode.path : undefined);
73
+ this.createNodeChildren(question, groupNode, controlModel || parentControl, form);
74
+ return groupNode;
75
+ }
76
+ createArrayNode(question, parentNode, parentControl, form) {
77
+ const controlModel = this.controlService.generateControlModel(question, parentControl, false, form);
78
+ const arrayNode = new ArrayNode(question, controlModel, parentControl, this, form, parentNode ? parentNode.path : undefined);
79
+ arrayNode.createChildFunc = this.createArrayNodeChild;
80
+ arrayNode.removeChildFunc = this.removeArrayNodeChild;
81
+ arrayNode.addChildNodeCreatedListener((node) => {
82
+ Validations.JSExpressionValidatorsEnabled = false;
83
+ this.controlRelationsFactory.buildArrayNodeRelations(node);
84
+ Validations.JSExpressionValidatorsEnabled = true;
85
+ });
86
+ return arrayNode;
87
+ }
88
+ createNodeChildren(question, node, parentControl, form) {
89
+ question.questions.forEach((element) => {
90
+ const child = this.createNode(element, node, parentControl, form);
91
+ node.setChild(element.key, child);
92
+ });
93
+ return node.children;
94
+ }
95
+ createArrayNodeChild(question, node, factory, position) {
96
+ if (factory === null || factory === undefined) {
97
+ factory = this;
98
+ }
99
+ const groupQuestion = new QuestionGroup({
100
+ key: node.path + '.' + node.children.length + '',
101
+ type: 'group',
102
+ extras: question.extras,
103
+ label: '',
104
+ questions: question.questions
105
+ });
106
+ if (question.controlType === AfeControlType.None) {
107
+ groupQuestion.controlType = question.controlType;
108
+ }
109
+ const group = factory.createGroupNode(groupQuestion, null, null, node.form);
110
+ if (position >= 0) {
111
+ node.children.splice(position, 0, group);
112
+ }
113
+ else {
114
+ node.children.push(group);
115
+ }
116
+ if (node.control instanceof AfeFormArray) {
117
+ const nodeControl = node.control;
118
+ nodeControl.setControl(nodeControl.controls.length, group.control);
119
+ }
120
+ return group;
121
+ }
122
+ removeArrayNodeChild(index, node) {
123
+ const nodeToRemove = node.children[index];
124
+ node.children.splice(index, 1);
125
+ if (node.control !== null || node.control !== undefined) {
126
+ if (node.control instanceof AfeFormArray) {
127
+ const control = node.control;
128
+ const controlIndexToRemove = control.controls.indexOf(nodeToRemove.control);
129
+ if (controlIndexToRemove >= 0) {
130
+ control.removeAt(controlIndexToRemove);
131
+ }
132
+ }
133
+ }
134
+ }
135
+ }
136
+ FormFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormFactory, deps: [{ token: i1.FormControlService }, { token: i2.QuestionFactory }, { token: i3.ControlRelationsFactory }], target: i0.ɵɵFactoryTarget.Injectable });
137
+ FormFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormFactory });
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: FormFactory, decorators: [{
139
+ type: Injectable
140
+ }], ctorParameters: function () { return [{ type: i1.FormControlService }, { type: i2.QuestionFactory }, { type: i3.ControlRelationsFactory }]; } });
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvZm9ybS1lbnRyeS9mb3JtLWZhY3RvcnkvZm9ybS5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0Msb0RBQW9EO0FBRXBELE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBWSxNQUFNLGFBQWEsQ0FBQztBQUN2RSxPQUFPLEVBRUwsY0FBYyxFQUNkLGlCQUFpQixFQUNqQixhQUFhLEVBQ2QsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDckQsT0FBTyxFQUVMLGNBQWMsRUFDZCxZQUFZLEVBQ2IsTUFBTSxtQ0FBbUMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFeEQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFHOUIsTUFBTSxPQUFPLFdBQVc7SUFRdEIsWUFDUyxjQUFrQyxFQUNsQyxlQUFnQyxFQUNoQyx1QkFBZ0Q7UUFGaEQsbUJBQWMsR0FBZCxjQUFjLENBQW9CO1FBQ2xDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO1FBVmpELGNBQVMsR0FBRyxDQUFDLENBQUM7UUFDZixPQUFFLEdBQVE7WUFDZixRQUFRLEVBQUUsR0FBRyxFQUFFO2dCQUNiLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQztTQUNGLENBQUM7SUFNQyxDQUFDO0lBRUos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ImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbi8vIGltcG9ydCB7IEFic3RyYWN0Q29udHJvbCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgTGVhZk5vZGUsIEdyb3VwTm9kZSwgQXJyYXlOb2RlLCBOb2RlQmFzZSB9IGZyb20gJy4vZm9ybS1ub2RlJztcbmltcG9ydCB7XG4gIFF1ZXN0aW9uQmFzZSxcbiAgTmVzdGVkUXVlc3Rpb24sXG4gIFJlcGVhdGluZ1F1ZXN0aW9uLFxuICBRdWVzdGlvbkdyb3VwXG59IGZyb20gJy4uL3F1ZXN0aW9uLW1vZGVscy9tb2RlbHMnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xTZXJ2aWNlIH0gZnJvbSAnLi9mb3JtLWNvbnRyb2wuc2VydmljZSc7XG5pbXBvcnQgeyBRdWVzdGlvbkZhY3RvcnkgfSBmcm9tICcuL3F1ZXN0aW9uLmZhY3RvcnknO1xuaW1wb3J0IHtcbiAgQWZlRm9ybUdyb3VwLFxuICBBZmVDb250cm9sVHlwZSxcbiAgQWZlRm9ybUFycmF5XG59IGZyb20gJy4uLy4uL2Fic3RyYWN0LWNvbnRyb2xzLWV4dGVuc2lvbic7XG5pbXBvcnQgeyBDb250cm9sUmVsYXRpb25zRmFjdG9yeSB9IGZyb20gJy4vY29udHJvbC1yZWxhdGlvbnMuZmFjdG9yeSc7XG5pbXBvcnQgeyBWYWxpZGF0aW9ucyB9IGZyb20gJy4uL3ZhbGlkYXRvcnMvdmFsaWRhdGlvbnMnO1xuXG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi9mb3JtJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZvcm1GYWN0b3J5IHtcbiAgcHJpdmF0ZSBub2RlSW5kZXggPSAwO1xuICBwdWJsaWMgaGQ6IGFueSA9IHtcbiAgICBnZXRWYWx1ZTogKCkgPT4ge1xuICAgICAgcmV0dXJuIDIwO1xuICAgIH1cbiAgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgY29udHJvbFNlcnZpY2U6IEZvcm1Db250cm9sU2VydmljZSxcbiAgICBwdWJsaWMgcXVlc3Rpb25GYWN0cm95OiBRdWVzdGlvbkZhY3RvcnksXG4gICAgcHVibGljIGNvbnRyb2xSZWxhdGlvbnNGYWN0b3J5OiBDb250cm9sUmVsYXRpb25zRmFjdG9yeVxuICApIHt9XG5cbiAgY3JlYXRlRm9ybShzY2hlbWE6IGFueSwgZGF0YVNvdXJjZT86IGFueSk6IEZvcm0ge1xuICAgIGNvbnN0IGZvcm06IEZvcm0gPSBuZXcgRm9ybShzY2hlbWEsIHRoaXMsIHRoaXMucXVlc3Rpb25GYWN0cm95KTtcbiAgICBpZiAoZGF0YVNvdXJjZSkge1xuICAgICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YVNvdXJjZSkge1xuICAgICAgICBpZiAoZGF0YVNvdXJjZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgZm9ybS5kYXRhU291cmNlc0NvbnRhaW5lci5yZWdpc3RlckRhdGFTb3VyY2UoXG4gICAgICAgICAgICBrZXksXG4gICAgICAgICAgICBkYXRhU291cmNlW2tleV0sXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgcXVlc3Rpb24gPSB0aGlzLnF1ZXN0aW9uRmFjdHJveS5jcmVhdGVRdWVzdGlvbk1vZGVsKHNjaGVtYSwgZm9ybSk7XG4gICAgZm9ybS5yb290Tm9kZSA9IHRoaXMuY3JlYXRlTm9kZShxdWVzdGlvbiwgbnVsbCwgbnVsbCwgZm9ybSkgYXMgR3JvdXBOb2RlO1xuXG4gICAgdGhpcy5idWlsZFJlbGF0aW9ucyhmb3JtLnJvb3ROb2RlKTtcbiAgICBmb3JtLnVwZGF0ZUhpZGRlbkRpc2FibGVkU3RhdGVGb3JBbGxDb250cm9scygpO1xuICAgIGZvcm0udXBkYXRlQWxlcnRzRm9yQWxsQ29udHJvbHMoKTtcbiAgICByZXR1cm4gZm9ybTtcbiAgfVxuXG4gIGJ1aWxkUmVsYXRpb25zKHJvb3ROb2RlOiBHcm91cE5vZGUpIHtcbiAgICBWYWxpZGF0aW9ucy5KU0V4cHJlc3Npb25WYWxpZGF0b3JzRW5hYmxlZCA9IGZhbHNlO1xuICAgIHRoaXMuY29udHJvbFJlbGF0aW9uc0ZhY3RvcnkuYnVpbGRSZWxhdGlvbnMocm9vdE5vZGUpO1xuXG4gICAgLy8gZW5hYmxlIGpzIGV4cHJlc3Npb24gdmFsaWRhdGlvbnNcbiAgICBWYWxpZGF0aW9ucy5KU0V4cHJlc3Npb25WYWxpZGF0b3JzRW5hYmxlZCA9IHRydWU7XG4gIH1cblxuICBjcmVhdGVOb2RlKFxuICAgIHF1ZXN0aW9uOiBRdWVzdGlvbkJhc2UgfCBOZXN0ZWRRdWVzdGlvbixcbiAgICBwYXJlbnROb2RlPzogR3JvdXBOb2RlLFxuICAgIHBhcmVudENvbnRyb2w/OiBBZmVGb3JtR3JvdXAsXG4gICAgZm9ybT86IEZvcm1cbiAgKTogTm9kZUJhc2Uge1xuICAgIGxldCBub2RlOiBOb2RlQmFzZSA9IG51bGw7XG4gICAgaWYgKHF1ZXN0aW9uIGluc3RhbmNlb2YgTmVzdGVkUXVlc3Rpb24pIHtcbiAgICAgIGlmIChxdWVzdGlvbiBpbnN0YW5jZW9mIFJlcGVhdGluZ1F1ZXN0aW9uKSB7XG4gICAgICAgIG5vZGUgPSB0aGlzLmNyZWF0ZUFycmF5Tm9kZShxdWVzdGlvbiwgcGFyZW50Tm9kZSwgcGFyZW50Q29udHJvbCwgZm9ybSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlID0gdGhpcy5jcmVhdGVHcm91cE5vZGUocXVlc3Rpb24sIHBhcmVudE5vZGUsIHBhcmVudENvbnRyb2wsIGZvcm0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlID0gdGhpcy5jcmVhdGVMZWFmTm9kZShxdWVzdGlvbiwgcGFyZW50Tm9kZSwgcGFyZW50Q29udHJvbCwgZm9ybSk7XG4gICAgfVxuICAgIG5vZGUubm9kZUluZGV4ID0gdGhpcy5ub2RlSW5kZXg7XG4gICAgdGhpcy5ub2RlSW5kZXgrKztcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGNyZWF0ZUxlYWZOb2RlKFxuICAgIHF1ZXN0aW9uOiBRdWVzdGlvbkJhc2UsXG4gICAgcGFyZW50Tm9kZTogR3JvdXBOb2RlLFxuICAgIHBhcmVudENvbnRyb2w/OiBBZmVGb3JtR3JvdXAsXG4gICAgZm9ybT86IEZvcm1cbiAgKTogTGVhZk5vZGUge1xuICAgIGNvbnN0IGNvbnRyb2xNb2RlbCA9IHRoaXMuY29udHJvbFNlcnZpY2UuZ2VuZXJhdGVDb250cm9sTW9kZWwoXG4gICAgICBxdWVzdGlvbixcbiAgICAgIHBhcmVudENvbnRyb2wsXG4gICAgICBmYWxzZSxcbiAgICAgIGZvcm1cbiAgICApO1xuICAgIHJldHVybiBuZXcgTGVhZk5vZGUoXG4gICAgICBxdWVzdGlvbixcbiAgICAgIGNvbnRyb2xNb2RlbCxcbiAgICAgIG51bGwsXG4gICAgICBmb3JtLFxuICAgICAgcGFyZW50Tm9kZSA/IHBhcmVudE5vZGUucGF0aCA6IHVuZGVmaW5lZFxuICAgICk7XG4gIH1cblxuICBjcmVhdGVHcm91cE5vZGUoXG4gICAgcXVlc3Rpb246IE5lc3RlZFF1ZXN0aW9uLFxuICAgIHBhcmVudE5vZGU/OiBHcm91cE5vZGUsXG4gICAgcGFyZW50Q29udHJvbD86IEFmZUZvcm1Hcm91cCxcbiAgICBmb3JtPzogRm9ybVxuICApOiBHcm91cE5vZGUge1xuICAgIGNvbnN0IGNvbnRyb2xNb2RlbCA9IHRoaXMuY29udHJvbFNlcnZpY2UuZ2VuZXJhdGVDb250cm9sTW9kZWwoXG4gICAgICBxdWVzdGlvbixcbiAgICAgIHBhcmVudENvbnRyb2wsXG4gICAgICBmYWxzZSxcbiAgICAgIGZvcm1cbiAgICApIGFzIEFmZUZvcm1Hcm91cDtcbiAgICBjb25zdCBncm91cE5vZGUgPSBuZXcgR3JvdXBOb2RlKFxuICAgICAgcXVlc3Rpb24sXG4gICAgICBjb250cm9sTW9kZWwsXG4gICAgICBudWxsLFxuICAgICAgZm9ybSxcbiAgICAgIHBhcmVudE5vZGUgPyBwYXJlbnROb2RlLnBhdGggOiB1bmRlZmluZWRcbiAgICApO1xuICAgIHRoaXMuY3JlYXRlTm9kZUNoaWxkcmVuKFxuICAgICAgcXVlc3Rpb24sXG4gICAgICBncm91cE5vZGUsXG4gICAgICBjb250cm9sTW9kZWwgfHwgcGFyZW50Q29udHJvbCxcbiAgICAgIGZvcm1cbiAgICApO1xuICAgIHJldHVybiBncm91cE5vZGU7XG4gIH1cblxuICBjcmVhdGVBcnJheU5vZGUoXG4gICAgcXVlc3Rpb246IE5lc3RlZFF1ZXN0aW9uLFxuICAgIHBhcmVudE5vZGU/OiBHcm91cE5vZGUsXG4gICAgcGFyZW50Q29udHJvbD86IEFmZUZvcm1Hcm91cCxcbiAgICBmb3JtPzogRm9ybVxuICApOiBBcnJheU5vZGUge1xuICAgIGNvbnN0IGNvbnRyb2xNb2RlbCA9IHRoaXMuY29udHJvbFNlcnZpY2UuZ2VuZXJhdGVDb250cm9sTW9kZWwoXG4gICAgICBxdWVzdGlvbixcbiAgICAgIHBhcmVudENvbnRyb2wsXG4gICAgICBmYWxzZSxcbiAgICAgIGZvcm1cbiAgICApIGFzIEFmZUZvcm1Hcm91cDtcbiAgICBjb25zdCBhcnJheU5vZGUgPSBuZXcgQXJyYXlOb2RlKFxuICAgICAgcXVlc3Rpb24sXG4gICAgICBjb250cm9sTW9kZWwsXG4gICAgICBwYXJlbnRDb250cm9sLFxuICAgICAgdGhpcyxcbiAgICAgIGZvcm0sXG4gICAgICBwYXJlbnROb2RlID8gcGFyZW50Tm9kZS5wYXRoIDogdW5kZWZpbmVkXG4gICAgKTtcbiAgICBhcnJheU5vZGUuY3JlYXRlQ2hpbGRGdW5jID0gdGhpcy5jcmVhdGVBcnJheU5vZGVDaGlsZDtcbiAgICBhcnJheU5vZGUucmVtb3ZlQ2hpbGRGdW5jID0gdGhpcy5yZW1vdmVBcnJheU5vZGVDaGlsZDtcblxuICAgIGFycmF5Tm9kZS5hZGRDaGlsZE5vZGVDcmVhdGVkTGlzdGVuZXIoKG5vZGU6IEdyb3VwTm9kZSkgPT4ge1xuICAgICAgVmFsaWRhdGlvbnMuSlNFeHByZXNzaW9uVmFsaWRhdG9yc0VuYWJsZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuY29udHJvbFJlbGF0aW9uc0ZhY3RvcnkuYnVpbGRBcnJheU5vZGVSZWxhdGlvbnMobm9kZSk7XG4gICAgICBWYWxpZGF0aW9ucy5KU0V4cHJlc3Npb25WYWxpZGF0b3JzRW5hYmxlZCA9IHRydWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIGFycmF5Tm9kZTtcbiAgfVxuXG4gIGNyZWF0ZU5vZGVDaGlsZHJlbihcbiAgICBxdWVzdGlvbjogTmVzdGVkUXVlc3Rpb24sXG4gICAgbm9kZTogR3JvdXBOb2RlLFxuICAgIHBhcmVudENvbnRyb2w/OiBBZmVGb3JtR3JvdXAsXG4gICAgZm9ybT86IEZvcm1cbiAgKTogYW55IHtcbiAgICBxdWVzdGlvbi5xdWVzdGlvbnMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgY2hpbGQgPSB0aGlzLmNyZWF0ZU5vZGUoZWxlbWVudCwgbm9kZSwgcGFyZW50Q29udHJvbCwgZm9ybSk7XG4gICAgICBub2RlLnNldENoaWxkKGVsZW1lbnQua2V5LCBjaGlsZCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIG5vZGUuY2hpbGRyZW47XG4gIH1cblxuICBjcmVhdGVBcnJheU5vZGVDaGlsZChcbiAgICBxdWVzdGlvbjogUmVwZWF0aW5nUXVlc3Rpb24sXG4gICAgbm9kZTogQXJyYXlOb2RlLFxuICAgIGZhY3Rvcnk/OiBGb3JtRmFjdG9yeSxcbiAgICBwb3NpdGlvbj86IG51bWJlclxuICApOiBHcm91cE5vZGUge1xuICAgIGlmIChmYWN0b3J5ID09PSBudWxsIHx8IGZhY3RvcnkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgZmFjdG9yeSA9IHRoaXM7XG4gICAgfVxuICAgIGNvbnN0IGdyb3VwUXVlc3Rpb246IFF1ZXN0aW9uR3JvdXAgPSBuZXcgUXVlc3Rpb25Hcm91cCh7XG4gICAgICBrZXk6IG5vZGUucGF0aCArICcuJyArIG5vZGUuY2hpbGRyZW4ubGVuZ3RoICsgJycsXG4gICAgICB0eXBlOiAnZ3JvdXAnLFxuICAgICAgZXh0cmFzOiBxdWVzdGlvbi5leHRyYXMsXG4gICAgICBsYWJlbDogJycsXG4gICAgICBxdWVzdGlvbnM6IHF1ZXN0aW9uLnF1ZXN0aW9uc1xuICAgIH0pO1xuXG4gICAgaWYgKHF1ZXN0aW9uLmNvbnRyb2xUeXBlID09PSBBZmVDb250cm9sVHlwZS5Ob25lKSB7XG4gICAgICBncm91cFF1ZXN0aW9uLmNvbnRyb2xUeXBlID0gcXVlc3Rpb24uY29udHJvbFR5cGU7XG4gICAgfVxuXG4gICAgY29uc3QgZ3JvdXAgPSBmYWN0b3J5LmNyZWF0ZUdyb3VwTm9kZShncm91cFF1ZXN0aW9uLCBudWxsLCBudWxsLCBub2RlLmZvcm0pO1xuXG4gICAgaWYgKHBvc2l0aW9uID49IDApIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4uc3BsaWNlKHBvc2l0aW9uLCAwLCBncm91cCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5vZGUuY2hpbGRyZW4ucHVzaChncm91cCk7XG4gICAgfVxuXG4gICAgaWYgKG5vZGUuY29udHJvbCBpbnN0YW5jZW9mIEFmZUZvcm1BcnJheSkge1xuICAgICAgY29uc3Qgbm9kZUNvbnRyb2wgPSBub2RlLmNvbnRyb2wgYXMgQWZlRm9ybUFycmF5O1xuICAgICAgbm9kZUNvbnRyb2wuc2V0Q29udHJvbChub2RlQ29udHJvbC5jb250cm9scy5sZW5ndGgsIGdyb3VwLmNvbnRyb2wpO1xuICAgIH1cblxuICAgIHJldHVybiBncm91cDtcbiAgfVxuXG4gIHJlbW92ZUFycmF5Tm9kZUNoaWxkKGluZGV4OiBudW1iZXIsIG5vZGU6IEFycmF5Tm9kZSkge1xuICAgIGNvbnN0IG5vZGVUb1JlbW92ZSA9IG5vZGUuY2hpbGRyZW5baW5kZXhdO1xuXG4gICAgbm9kZS5jaGlsZHJlbi5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIGlmIChub2RlLmNvbnRyb2wgIT09IG51bGwgfHwgbm9kZS5jb250cm9sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChub2RlLmNvbnRyb2wgaW5zdGFuY2VvZiBBZmVGb3JtQXJyYXkpIHtcbiAgICAgICAgY29uc3QgY29udHJvbCA9IG5vZGUuY29udHJvbCBhcyBBZmVGb3JtQXJyYXk7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xJbmRleFRvUmVtb3ZlID0gY29udHJvbC5jb250cm9scy5pbmRleE9mKFxuICAgICAgICAgIG5vZGVUb1JlbW92ZS5jb250cm9sXG4gICAgICAgICk7XG4gICAgICAgIGlmIChjb250cm9sSW5kZXhUb1JlbW92ZSA+PSAwKSB7XG4gICAgICAgICAgY29udHJvbC5yZW1vdmVBdChjb250cm9sSW5kZXhUb1JlbW92ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,189 @@
1
+ import * as _ from 'lodash';
2
+ import { DataSources } from '../data-sources/data-sources';
3
+ import { GroupNode, LeafNode, ArrayNode } from './form-node';
4
+ export class Form {
5
+ constructor(schema, formFactory, questionFactory) {
6
+ this.schema = schema;
7
+ this.formFactory = formFactory;
8
+ this.questionFactory = questionFactory;
9
+ this.valueProcessingInfo = {};
10
+ this.existingOrders = {};
11
+ this._showErrors = false;
12
+ this._dataSourcesContainer = new DataSources();
13
+ }
14
+ get dataSourcesContainer() {
15
+ return this._dataSourcesContainer;
16
+ }
17
+ searchNodeByPath(node, path, found) {
18
+ const children = node.children;
19
+ for (const key in children) {
20
+ if (children.hasOwnProperty(key)) {
21
+ const child = children[key];
22
+ if (child instanceof GroupNode) {
23
+ if (path === child.path) {
24
+ found.push(child);
25
+ return found;
26
+ }
27
+ this.searchNodeByPath(child, path, found);
28
+ }
29
+ else if (child instanceof LeafNode) {
30
+ if (path === child.path) {
31
+ found.push(child);
32
+ return found;
33
+ }
34
+ }
35
+ else if (child instanceof ArrayNode) {
36
+ if (path === child.path) {
37
+ found.push(child);
38
+ return found;
39
+ }
40
+ const aChild = child;
41
+ aChild.children.forEach((aChildNode) => {
42
+ this.searchNodeByPath(aChildNode, path, found);
43
+ });
44
+ }
45
+ }
46
+ }
47
+ return found;
48
+ }
49
+ searchNodeByQuestionId(questionId, questionType) {
50
+ const found = [];
51
+ if (questionType) {
52
+ this.searchNodeByQuestionType(this.rootNode, questionType, found);
53
+ }
54
+ else {
55
+ this.findNodesByQuestionId(this.rootNode, questionId, found);
56
+ }
57
+ return found;
58
+ }
59
+ searchNodeByQuestionType(rootNode, questionType, found) {
60
+ if (rootNode instanceof GroupNode) {
61
+ const nodeAsGroup = rootNode;
62
+ for (const o in nodeAsGroup.children) {
63
+ this.searchNodeByQuestionType(nodeAsGroup.children[o], questionType, found);
64
+ }
65
+ }
66
+ if (rootNode instanceof ArrayNode) {
67
+ const nodeAsArray = rootNode;
68
+ nodeAsArray.children.forEach((node) => {
69
+ this.searchNodeByQuestionType(node, questionType, found);
70
+ });
71
+ }
72
+ if (rootNode instanceof LeafNode) {
73
+ const questionBase = rootNode.question;
74
+ if (questionBase.extras &&
75
+ questionBase.extras.type &&
76
+ questionBase.extras.type === questionType) {
77
+ found.push(rootNode);
78
+ }
79
+ }
80
+ }
81
+ findNodesByQuestionId(rootNode, questionId, results) {
82
+ if (rootNode.question.key === questionId) {
83
+ results.push(rootNode);
84
+ }
85
+ if (rootNode instanceof GroupNode) {
86
+ const nodeAsGroup = rootNode;
87
+ for (const o in nodeAsGroup.children) {
88
+ this.findNodesByQuestionId(nodeAsGroup.children[o], questionId, results);
89
+ }
90
+ }
91
+ if (rootNode instanceof ArrayNode) {
92
+ const nodeAsArray = rootNode;
93
+ nodeAsArray.children.forEach((node) => {
94
+ this.findNodesByQuestionId(node, questionId, results);
95
+ });
96
+ }
97
+ }
98
+ get valid() {
99
+ return this.rootNode.control.valid;
100
+ }
101
+ set showErrors(show) {
102
+ this._showErrors = show;
103
+ }
104
+ get showErrors() {
105
+ return this._showErrors;
106
+ }
107
+ markInvalidControls(node, invalidControlNodes) {
108
+ const children = node.children;
109
+ for (const key in children) {
110
+ if (children.hasOwnProperty(key)) {
111
+ const child = children[key];
112
+ if (child instanceof GroupNode) {
113
+ this.markInvalidControls(child, invalidControlNodes);
114
+ }
115
+ else if (child instanceof LeafNode) {
116
+ const questionBase = child.question;
117
+ if (questionBase.key && questionBase.key.length > 0) {
118
+ const c = child.control;
119
+ if (!c.valid && !c.disabled) {
120
+ if (invalidControlNodes) {
121
+ invalidControlNodes.push(child);
122
+ }
123
+ c.markAsTouched();
124
+ }
125
+ }
126
+ }
127
+ else if (child instanceof ArrayNode) {
128
+ const arrayNode = child;
129
+ if (arrayNode &&
130
+ arrayNode.children &&
131
+ arrayNode.children.length > 0) {
132
+ _.forEach(arrayNode.children, (groupNode) => {
133
+ this.markInvalidControls(groupNode, invalidControlNodes);
134
+ });
135
+ }
136
+ }
137
+ }
138
+ }
139
+ return invalidControlNodes;
140
+ }
141
+ updateHiddenDisabledStateForAllControls() {
142
+ this._updateHiddenDisabledStateForAllControls(this.rootNode);
143
+ }
144
+ updateAlertsForAllControls() {
145
+ this._updateAlertsForAllControls(this.rootNode);
146
+ }
147
+ _updateAlertsForAllControls(rootNode) {
148
+ if (rootNode.control) {
149
+ if (rootNode.control.updateAlert) {
150
+ rootNode.control.updateAlert();
151
+ }
152
+ }
153
+ if (rootNode instanceof GroupNode) {
154
+ const nodeAsGroup = rootNode;
155
+ for (const o in nodeAsGroup.children) {
156
+ this._updateAlertsForAllControls(nodeAsGroup.children[o]);
157
+ }
158
+ }
159
+ if (rootNode instanceof ArrayNode) {
160
+ const nodeAsArray = rootNode;
161
+ nodeAsArray.children.forEach((node) => {
162
+ this._updateAlertsForAllControls(node);
163
+ });
164
+ }
165
+ }
166
+ _updateHiddenDisabledStateForAllControls(rootNode) {
167
+ if (rootNode.control) {
168
+ if (rootNode.control.updateDisabledState) {
169
+ rootNode.control.updateDisabledState();
170
+ }
171
+ if (rootNode.control.updateHiddenState) {
172
+ rootNode.control.updateHiddenState();
173
+ }
174
+ }
175
+ if (rootNode instanceof GroupNode) {
176
+ const nodeAsGroup = rootNode;
177
+ for (const o in nodeAsGroup.children) {
178
+ this._updateHiddenDisabledStateForAllControls(nodeAsGroup.children[o]);
179
+ }
180
+ }
181
+ if (rootNode instanceof ArrayNode) {
182
+ const nodeAsArray = rootNode;
183
+ nodeAsArray.children.forEach((node) => {
184
+ this._updateHiddenDisabledStateForAllControls(node);
185
+ });
186
+ }
187
+ }
188
+ }
189
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2Zvcm0tZW50cnkvZm9ybS1mYWN0b3J5L2Zvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUM7QUFJNUIsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzNELE9BQU8sRUFBWSxTQUFTLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUt2RSxNQUFNLE9BQU8sSUFBSTtJQU1mLFlBQ1MsTUFBVyxFQUNYLFdBQXdCLEVBQ3hCLGVBQWdDO1FBRmhDLFdBQU0sR0FBTixNQUFNLENBQUs7UUFDWCxnQkFBVyxHQUFYLFdBQVcsQ0FBYTtRQUN4QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFQbEMsd0JBQW1CLEdBQVEsRUFBRSxDQUFDO1FBQzlCLG1CQUFjLEdBQVEsRUFBRSxDQUFDO1FBRXhCLGdCQUFXLEdBQUcsS0FBSyxDQUFDO1FBTTFCLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsSUFBZSxFQUFFLElBQUksRUFBRSxLQUFzQjtRQUM1RCxNQUFNLFFBQVEsR0FBYSxJQUFJLENBQUMsUUFBUSxDQUFDO1FBRXpDLEtBQUssTUFBTSxHQUFHLElBQUksUUFBUSxFQUFFO1lBQzFCLElBQUksUUFBUSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxLQUFLLEdBQWEsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUV0QyxJQUFJLEtBQUssWUFBWSxTQUFTLEVBQUU7b0JBQzlCLElBQUksSUFBSSxL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RTtnQkFDcEMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN4RTtTQUNGO1FBRUQsSUFBSSxRQUFRLFlBQVksU0FBUyxFQUFFO1lBQ2pDLE1BQU0sV0FBVyxHQUFHLFFBQXFCLENBQUM7WUFFMUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtnQkFDcEMsSUFBSSxDQUFDLHdDQUF3QyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3RELENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEZvcm1GYWN0b3J5IH0gZnJvbSAnLi9mb3JtLmZhY3RvcnknO1xuaW1wb3J0IHsgUXVlc3Rpb25GYWN0b3J5IH0gZnJvbSAnLi9xdWVzdGlvbi5mYWN0b3J5JztcbmltcG9ydCB7IERhdGFTb3VyY2VzIH0gZnJvbSAnLi4vZGF0YS1zb3VyY2VzL2RhdGEtc291cmNlcyc7XG5pbXBvcnQgeyBOb2RlQmFzZSwgR3JvdXBOb2RlLCBMZWFmTm9kZSwgQXJyYXlOb2RlIH0gZnJvbSAnLi9mb3JtLW5vZGUnO1xuaW1wb3J0IHsgUXVlc3Rpb25CYXNlIH0gZnJvbSAnLi4vcXVlc3Rpb24tbW9kZWxzL3F1ZXN0aW9uLWJhc2UnO1xuaW1wb3J0IHsgQWZlRm9ybUNvbnRyb2wgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1jb250cm9scy1leHRlbnNpb24vYWZlLWZvcm0tY29udHJvbCc7XG5pbXBvcnQgeyBBZmVGb3JtQXJyYXkgfSBmcm9tICcuLi8uLi9hYnN0cmFjdC1jb250cm9scy1leHRlbnNpb24vYWZlLWZvcm0tYXJyYXknO1xuXG5leHBvcnQgY2xhc3MgRm9ybSB7XG4gIHB1YmxpYyByb290Tm9kZTogR3JvdXBOb2RlO1xuICBwdWJsaWMgdmFsdWVQcm9jZXNzaW5nSW5mbzogYW55ID0ge307XG4gIHB1YmxpYyBleGlzdGluZ09yZGVyczogYW55ID0ge307XG4gIHByaXZhdGUgX2RhdGFTb3VyY2VzQ29udGFpbmVyOiBEYXRhU291cmNlcztcbiAgcHJpdmF0ZSBfc2hvd0Vycm9ycyA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc2NoZW1hOiBhbnksXG4gICAgcHVibGljIGZvcm1GYWN0b3J5OiBGb3JtRmFjdG9yeSxcbiAgICBwdWJsaWMgcXVlc3Rpb25GYWN0b3J5OiBRdWVzdGlvbkZhY3RvcnlcbiAgKSB7XG4gICAgdGhpcy5fZGF0YVNvdXJjZXNDb250YWluZXIgPSBuZXcgRGF0YVNvdXJjZXMoKTtcbiAgfVxuXG4gIGdldCBkYXRhU291cmNlc0NvbnRhaW5lcigpOiBEYXRhU291cmNlcyB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGFTb3VyY2VzQ29udGFpbmVyO1xuICB9XG5cbiAgc2VhcmNoTm9kZUJ5UGF0aChub2RlOiBHcm91cE5vZGUsIHBhdGgsIGZvdW5kOiBBcnJheTxOb2RlQmFzZT4pIHtcbiAgICBjb25zdCBjaGlsZHJlbjogTm9kZUJhc2UgPSBub2RlLmNoaWxkcmVuO1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gY2hpbGRyZW4pIHtcbiAgICAgIGlmIChjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkOiBOb2RlQmFzZSA9IGNoaWxkcmVuW2tleV07XG5cbiAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgR3JvdXBOb2RlKSB7XG4gICAgICAgICAgaWYgKHBhdGggPT09IGNoaWxkLnBhdGgpIHtcbiAgICAgICAgICAgIGZvdW5kLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuc2VhcmNoTm9kZUJ5UGF0aChjaGlsZCwgcGF0aCwgZm91bmQpO1xuICAgICAgICB9IGVsc2UgaWYgKGNoaWxkIGluc3RhbmNlb2YgTGVhZk5vZGUpIHtcbiAgICAgICAgICBpZiAocGF0aCA9PT0gY2hpbGQucGF0aCkge1xuICAgICAgICAgICAgZm91bmQucHVzaChjaGlsZCk7XG4gICAgICAgICAgICByZXR1cm4gZm91bmQ7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKGNoaWxkIGluc3RhbmNlb2YgQXJyYXlOb2RlKSB7XG4gICAgICAgICAgaWYgKHBhdGggPT09IGNoaWxkLnBhdGgpIHtcbiAgICAgICAgICAgIGZvdW5kLnB1c2goY2hpbGQpO1xuICAgICAgICAgICAgcmV0dXJuIGZvdW5kO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGFDaGlsZDogQXJyYXlOb2RlID0gY2hpbGQgYXMgQXJyYXlOb2RlO1xuXG4gICAgICAgICAgYUNoaWxkLmNoaWxkcmVuLmZvckVhY2goKGFDaGlsZE5vZGUpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoTm9kZUJ5UGF0aChhQ2hpbGROb2RlLCBwYXRoLCBmb3VuZCk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZm91bmQ7XG4gIH1cblxuICBzZWFyY2hOb2RlQnlRdWVzdGlvbklkKFxuICAgIHF1ZXN0aW9uSWQ6IHN0cmluZyxcbiAgICBxdWVzdGlvblR5cGU/OiBzdHJpbmdcbiAgKTogQXJyYXk8Tm9kZUJhc2U+IHtcbiAgICBjb25zdCBmb3VuZCA9IFtdO1xuICAgIGlmIChxdWVzdGlvblR5cGUpIHtcbiAgICAgIHRoaXMuc2VhcmNoTm9kZUJ5UXVlc3Rpb25UeXBlKHRoaXMucm9vdE5vZGUsIHF1ZXN0aW9uVHlwZSwgZm91bmQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmZpbmROb2Rlc0J5UXVlc3Rpb25JZCh0aGlzLnJvb3ROb2RlLCBxdWVzdGlvbklkLCBmb3VuZCk7XG4gICAgfVxuICAgIHJldHVybiBmb3VuZDtcbiAgfVxuXG4gIHNlYXJjaE5vZGVCeVF1ZXN0aW9uVHlwZShcbiAgICByb290Tm9kZTogYW55LFxuICAgIHF1ZXN0aW9uVHlwZTogc3RyaW5nLFxuICAgIGZvdW5kOiBBcnJheTxOb2RlQmFzZT5cbiAgKSB7XG4gICAgaWYgKHJvb3ROb2RlIGluc3RhbmNlb2YgR3JvdXBOb2RlKSB7XG4gICAgICBjb25zdCBub2RlQXNHcm91cCA9IHJvb3ROb2RlIGFzIEdyb3VwTm9kZTtcblxuICAgICAgZm9yIChjb25zdCBvIGluIG5vZGVBc0dyb3VwLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuc2VhcmNoTm9kZUJ5UXVlc3Rpb25UeXBlKFxuICAgICAgICAgIG5vZGVBc0dyb3VwLmNoaWxkcmVuW29dLFxuICAgICAgICAgIHF1ZXN0aW9uVHlwZSxcbiAgICAgICAgICBmb3VuZFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyb290Tm9kZSBpbnN0YW5jZW9mIEFycmF5Tm9kZSkge1xuICAgICAgY29uc3Qgbm9kZUFzQXJyYXkgPSByb290Tm9kZSBhcyBBcnJheU5vZGU7XG5cbiAgICAgIG5vZGVBc0FycmF5LmNoaWxkcmVuLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgdGhpcy5zZWFyY2hOb2RlQnlRdWVzdGlvblR5cGUobm9kZSwgcXVlc3Rpb25UeXBlLCBmb3VuZCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocm9vdE5vZGUgaW5zdGFuY2VvZiBMZWFmTm9kZSkge1xuICAgICAgY29uc3QgcXVlc3Rpb25CYXNlOiBRdWVzdGlvbkJhc2UgPSByb290Tm9kZS5xdWVzdGlvbjtcblxuICAgICAgaWYgKFxuICAgICAgICBxdWVzdGlvbkJhc2UuZXh0cmFzICYmXG4gICAgICAgIHF1ZXN0aW9uQmFzZS5leHRyYXMudHlwZSAmJlxuICAgICAgICBxdWVzdGlvbkJhc2UuZXh0cmFzLnR5cGUgPT09IHF1ZXN0aW9uVHlwZVxuICAgICAgKSB7XG4gICAgICAgIGZvdW5kLnB1c2gocm9vdE5vZGUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZmluZE5vZGVzQnlRdWVzdGlvbklkKFxuICAgIHJvb3ROb2RlOiBOb2RlQmFzZSxcbiAgICBxdWVzdGlvbklkOiBzdHJpbmcsXG4gICAgcmVzdWx0czogQXJyYXk8Tm9kZUJhc2U+XG4gICkge1xuICAgIGlmIChyb290Tm9kZS5xdWVzdGlvbi5rZXkgPT09IHF1ZXN0aW9uSWQpIHtcbiAgICAgIHJlc3VsdHMucHVzaChyb290Tm9kZSk7XG4gICAgfVxuXG4gICAgaWYgKHJvb3ROb2RlIGluc3RhbmNlb2YgR3JvdXBOb2RlKSB7XG4gICAgICBjb25zdCBub2RlQXNHcm91cCA9IHJvb3ROb2RlIGFzIEdyb3VwTm9kZTtcblxuICAgICAgZm9yIChjb25zdCBvIGluIG5vZGVBc0dyb3VwLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuZmluZE5vZGVzQnlRdWVzdGlvbklkKFxuICAgICAgICAgIG5vZGVBc0dyb3VwLmNoaWxkcmVuW29dLFxuICAgICAgICAgIHF1ZXN0aW9uSWQsXG4gICAgICAgICAgcmVzdWx0c1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyb290Tm9kZSBpbnN0YW5jZW9mIEFycmF5Tm9kZSkge1xuICAgICAgY29uc3Qgbm9kZUFzQXJyYXkgPSByb290Tm9kZSBhcyBBcnJheU5vZGU7XG5cbiAgICAgIG5vZGVBc0FycmF5LmNoaWxkcmVuLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgdGhpcy5maW5kTm9kZXNCeVF1ZXN0aW9uSWQobm9kZSwgcXVlc3Rpb25JZCwgcmVzdWx0cyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXQgdmFsaWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucm9vdE5vZGUuY29udHJvbC52YWxpZDtcbiAgfVxuXG4gIHNldCBzaG93RXJyb3JzKHNob3c6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93RXJyb3JzID0gc2hvdztcbiAgfVxuXG4gIGdldCBzaG93RXJyb3JzKCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93RXJyb3JzO1xuICB9XG5cbiAgbWFya0ludmFsaWRDb250cm9scyhub2RlOiBHcm91cE5vZGUsIGludmFsaWRDb250cm9sTm9kZXM/OiBhbnkpIHtcbiAgICBjb25zdCBjaGlsZHJlbjogTm9kZUJhc2UgPSBub2RlLmNoaWxkcmVuO1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gY2hpbGRyZW4pIHtcbiAgICAgIGlmIChjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkOiBOb2RlQmFzZSA9IGNoaWxkcmVuW2tleV07XG5cbiAgICAgICAgaWYgKGNoaWxkIGluc3RhbmNlb2YgR3JvdXBOb2RlKSB7XG4gICAgICAgICAgdGhpcy5tYXJrSW52YWxpZENvbnRyb2xzKGNoaWxkLCBpbnZhbGlkQ29udHJvbE5vZGVzKTtcbiAgICAgICAgfSBlbHNlIGlmIChjaGlsZCBpbnN0YW5jZW9mIExlYWZOb2RlKSB7XG4gICAgICAgICAgY29uc3QgcXVlc3Rpb25CYXNlOiBRdWVzdGlvbkJhc2UgPSAoY2hpbGQgYXMgTGVhZk5vZGUpLnF1ZXN0aW9uO1xuXG4gICAgICAgICAgaWYgKHF1ZXN0aW9uQmFzZS5rZXkgJiYgcXVlc3Rpb25CYXNlLmtleS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBjOiBBZmVGb3JtQ29udHJvbCB8IEFmZUZvcm1BcnJheSA9IGNoaWxkLmNvbnRyb2wgYXNcbiAgICAgICAgICAgICAgfCBBZmVGb3JtQ29udHJvbFxuICAgICAgICAgICAgICB8IEFmZUZvcm1BcnJheTtcblxuICAgICAgICAgICAgaWYgKCFjLnZhbGlkICYmICFjLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgIGlmIChpbnZhbGlkQ29udHJvbE5vZGVzKSB7XG4gICAgICAgICAgICAgICAgaW52YWxpZENvbnRyb2xOb2Rlcy5wdXNoKGNoaWxkKTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIGMubWFya0FzVG91Y2hlZCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChjaGlsZCBpbnN0YW5jZW9mIEFycmF5Tm9kZSkge1xuICAgICAgICAgIGNvbnN0IGFycmF5Tm9kZTogQXJyYXlOb2RlID0gY2hpbGQgYXMgQXJyYXlOb2RlO1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgYXJyYXlOb2RlICYmXG4gICAgICAgICAgICBhcnJheU5vZGUuY2hpbGRyZW4gJiZcbiAgICAgICAgICAgIGFycmF5Tm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBfLmZvckVhY2goYXJyYXlOb2RlLmNoaWxkcmVuLCAoZ3JvdXBOb2RlOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5tYXJrSW52YWxpZENvbnRyb2xzKGdyb3VwTm9kZSwgaW52YWxpZENvbnRyb2xOb2Rlcyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW52YWxpZENvbnRyb2xOb2RlcztcbiAgfVxuXG4gIHVwZGF0ZUhpZGRlbkRpc2FibGVkU3RhdGVGb3JBbGxDb250cm9scygpIHtcbiAgICB0aGlzLl91cGRhdGVIaWRkZW5EaXNhYmxlZFN0YXRlRm9yQWxsQ29udHJvbHModGhpcy5yb290Tm9kZSk7XG4gIH1cblxuICB1cGRhdGVBbGVydHNGb3JBbGxDb250cm9scygpIHtcbiAgICB0aGlzLl91cGRhdGVBbGVydHNGb3JBbGxDb250cm9scyh0aGlzLnJvb3ROb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUFsZXJ0c0ZvckFsbENvbnRyb2xzKHJvb3ROb2RlOiBOb2RlQmFzZSkge1xuICAgIGlmIChyb290Tm9kZS5jb250cm9sKSB7XG4gICAgICBpZiAoKHJvb3ROb2RlLmNvbnRyb2wgYXMgYW55KS51cGRhdGVBbGVydCkge1xuICAgICAgICAocm9vdE5vZGUuY29udHJvbCBhcyBhbnkpLnVwZGF0ZUFsZXJ0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHJvb3ROb2RlIGluc3RhbmNlb2YgR3JvdXBOb2RlKSB7XG4gICAgICBjb25zdCBub2RlQXNHcm91cCA9IHJvb3ROb2RlIGFzIEdyb3VwTm9kZTtcblxuICAgICAgZm9yIChjb25zdCBvIGluIG5vZGVBc0dyb3VwLmNoaWxkcmVuKSB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUFsZXJ0c0ZvckFsbENvbnRyb2xzKG5vZGVBc0dyb3VwLmNoaWxkcmVuW29dKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocm9vdE5vZGUgaW5zdGFuY2VvZiBBcnJheU5vZGUpIHtcbiAgICAgIGNvbnN0IG5vZGVBc0FycmF5ID0gcm9vdE5vZGUgYXMgQXJyYXlOb2RlO1xuXG4gICAgICBub2RlQXNBcnJheS5jaGlsZHJlbi5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgIHRoaXMuX3VwZGF0ZUFsZXJ0c0ZvckFsbENvbnRyb2xzKG5vZGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3VwZGF0ZUhpZGRlbkRpc2FibGVkU3RhdGVGb3JBbGxDb250cm9scyhyb290Tm9kZTogTm9kZUJhc2UpIHtcbiAgICBpZiAocm9vdE5vZGUuY29udHJvbCkge1xuICAgICAgaWYgKChyb290Tm9kZS5jb250cm9sIGFzIGFueSkudXBkYXRlRGlzYWJsZWRTdGF0ZSkge1xuICAgICAgICAocm9vdE5vZGUuY29udHJvbCBhcyBhbnkpLnVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbiAgICAgIH1cblxuICAgICAgaWYgKChyb290Tm9kZS5jb250cm9sIGFzIGFueSkudXBkYXRlSGlkZGVuU3RhdGUpIHtcbiAgICAgICAgKHJvb3ROb2RlLmNvbnRyb2wgYXMgYW55KS51cGRhdGVIaWRkZW5TdGF0ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyb290Tm9kZSBpbnN0YW5jZW9mIEdyb3VwTm9kZSkge1xuICAgICAgY29uc3Qgbm9kZUFzR3JvdXAgPSByb290Tm9kZSBhcyBHcm91cE5vZGU7XG5cbiAgICAgIGZvciAoY29uc3QgbyBpbiBub2RlQXNHcm91cC5jaGlsZHJlbikge1xuICAgICAgICB0aGlzLl91cGRhdGVIaWRkZW5EaXNhYmxlZFN0YXRlRm9yQWxsQ29udHJvbHMobm9kZUFzR3JvdXAuY2hpbGRyZW5bb10pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyb290Tm9kZSBpbnN0YW5jZW9mIEFycmF5Tm9kZSkge1xuICAgICAgY29uc3Qgbm9kZUFzQXJyYXkgPSByb290Tm9kZSBhcyBBcnJheU5vZGU7XG5cbiAgICAgIG5vZGVBc0FycmF5LmNoaWxkcmVuLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgdGhpcy5fdXBkYXRlSGlkZGVuRGlzYWJsZWRTdGF0ZUZvckFsbENvbnRyb2xzKG5vZGUpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,67 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { ExpressionRunner } from '../expression-runner/expression-runner';
3
+ import { JsExpressionHelper } from '../helpers/js-expression-helper';
4
+ // Add ability to display all fields for debugging
5
+ import { DebugModeService } from './../services/debug-mode.service';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "../expression-runner/expression-runner";
8
+ import * as i2 from "../helpers/js-expression-helper";
9
+ import * as i3 from "./../services/debug-mode.service";
10
+ export class HidersDisablersFactory {
11
+ constructor(expressionRunner, expressionHelper, _debugModeService) {
12
+ this.expressionRunner = expressionRunner;
13
+ this.expressionHelper = expressionHelper;
14
+ this._debugModeService = _debugModeService;
15
+ }
16
+ getJsExpressionDisabler(question, control, form) {
17
+ const runnable = this.expressionRunner.getRunnable(question.disable, control, this.expressionHelper.helperFunctions, {}, form);
18
+ const disabler = {
19
+ toDisable: false,
20
+ disableWhenExpression: question.disable,
21
+ reEvaluateDisablingExpression: () => {
22
+ const result = runnable.run();
23
+ disabler.toDisable = result;
24
+ }
25
+ };
26
+ return disabler;
27
+ }
28
+ getJsExpressionHider(question, control, form) {
29
+ const hide = question.hide;
30
+ const value = typeof hide === 'object'
31
+ ? this.convertHideObjectToString(hide)
32
+ : question.hide;
33
+ // check if debugging has been enabled
34
+ const debugEnabled = this._debugModeService.debugEnabled();
35
+ const runnable = this.expressionRunner.getRunnable(value, control, this.expressionHelper.helperFunctions, {}, form);
36
+ const hider = {
37
+ toHide: false,
38
+ hideWhenExpression: value,
39
+ reEvaluateHidingExpression: () => {
40
+ /* if debug is enabled then hiders to be false
41
+ else run the normal eveluator i.e runnable.run()
42
+ */
43
+ if (debugEnabled === true) {
44
+ hider.toHide = false;
45
+ }
46
+ else {
47
+ hider.toHide = runnable.run();
48
+ }
49
+ }
50
+ };
51
+ return hider;
52
+ }
53
+ convertHideObjectToString(hide) {
54
+ if (hide.value instanceof Array) {
55
+ const arrayStr = "'" + hide.value.join("','") + "'";
56
+ const exp = '!arrayContains([' + arrayStr + '],' + hide.field + ')';
57
+ return exp;
58
+ }
59
+ return '';
60
+ }
61
+ }
62
+ HidersDisablersFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HidersDisablersFactory, deps: [{ token: i1.ExpressionRunner }, { token: i2.JsExpressionHelper }, { token: i3.DebugModeService }], target: i0.ɵɵFactoryTarget.Injectable });
63
+ HidersDisablersFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HidersDisablersFactory });
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: HidersDisablersFactory, decorators: [{
65
+ type: Injectable
66
+ }], ctorParameters: function () { return [{ type: i1.ExpressionRunner }, { type: i2.JsExpressionHelper }, { type: i3.DebugModeService }]; } });
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlkZXJzLWRpc2FibGVycy5mYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvZm9ybS1lbnRyeS9mb3JtLWZhY3RvcnkvaGlkZXJzLWRpc2FibGVycy5mYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFLM0MsT0FBTyxFQUNMLGdCQUFnQixFQUVqQixNQUFNLHdDQUF3QyxDQUFDO0FBT2hELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBRXJFLGtEQUFrRDtBQUNsRCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7Ozs7QUFHcEUsTUFBTSxPQUFPLHNCQUFzQjtJQUNqQyxZQUNVLGdCQUFrQyxFQUNsQyxnQkFBb0MsRUFDcEMsaUJBQW1DO1FBRm5DLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFvQjtRQUNwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO0lBQzFDLENBQUM7SUFFSix1QkFBdUIsQ0FDckIsUUFBc0IsRUFDdEIsT0FBcUQsRUFDckQsSUFBVztRQUVYLE1BQU0sUUFBUSxHQUFhLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQzFELFFBQVEsQ0FBQyxPQUFpQixFQUMxQixPQUFPLEVBQ1AsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFDckMsRUFBRSxFQUNGLElBQUksQ0FDTCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQWE7WUFDekIsU0FBUyxFQUFFLEtBQUs7WUFDaEIscUJBQXFCLEVBQUUsUUFBUSxDQUFDLE9BQWlCO1lBQ2pELDZCQUE2QixFQUFFLEdBQUcsRUFBRTtnQkFDbEMsTUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUM5QixRQUFRLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQztZQUM5QixDQUFDO1NBQ0YsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxvQkFBb0IsQ0FDbEIsUUFBc0IsRUFDdEIsT0FBcUQsRUFDckQsSUFBVztRQUVYLE1BQU0sSUFBSSxHQUFRLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQ1QsT0FBTyxJQUFJLEtBQUssUUFBUTtZQUN0QixDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQztZQUN0QyxDQUFDLENBQUUsUUFBUSxDQUFDLElBQWUsQ0FBQztRQUVoQyxzQ0FBc0M7UUFFdEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBRTNELE1BQU0sUUFBUSxHQUFhLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLENBQzFELEtBQUssRUFDTCxPQUFPLEVBQ1AsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsRUFDckMsRUFBRSxFQUNGLElBQUksQ0FDTCxDQUFDO1FBRUYsTUFBTSxLQUFLLEdBQVU7WUFDbkIsTUFBTSxFQUFFLEtBQUs7WUFDYixrQkFBa0IsRUFBRSxLQUFLO1lBQ3pCLDBCQUEwQixFQUFFLEdBQUcsRUFBRTtnQkFDL0I7OzJCQUVXO2dCQUNYLElBQUksWUFBWSxLQUFLLElBQUksRUFBRTtvQkFDekIsS0FBSyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7aUJBQ3RCO3FCQUFNO29CQUNMLEtBQUssQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO2lCQUMvQjtZQUNILENBQUM7U0FDRixDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQseUJBQXlCLENBQUMsSUFBUztRQUNqQyxJQUFJLElBQUksQ0FBQyxLQUFLLFlBQVksS0FBSyxFQUFFO1lBQy9CLE1BQU0sUUFBUSxHQUFXLEdBQUcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDNUQsTUFBTSxHQUFHLEdBQUcsa0JBQWtCLEdBQUcsUUFBUSxHQUFHLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztZQUNwRSxPQUFPLEdBQUcsQ0FBQztTQUNaO1FBRUQsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDOztvSEE5RVUsc0JBQXNCO3dIQUF0QixzQkFBc0I7NEZBQXRCLHNCQUFzQjtrQkFEbEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgRGlzYWJsZXIgfSBmcm9tICcuLi9jb250cm9sLWhpZGVycy1kaXNhYmxlcnMvY2FuLWRpc2FibGUnO1xuaW1wb3J0IHsgSGlkZXIgfSBmcm9tICcuLi9jb250cm9sLWhpZGVycy1kaXNhYmxlcnMvY2FuLWhpZGUnO1xuXG5pbXBvcnQge1xuICBFeHByZXNzaW9uUnVubmVyLFxuICBSdW5uYWJsZVxufSBmcm9tICcuLi9leHByZXNzaW9uLXJ1bm5lci9leHByZXNzaW9uLXJ1bm5lcic7XG5pbXBvcnQge1xuICBBZmVGb3JtQ29udHJvbCxcbiAgQWZlRm9ybUFycmF5LFxuICBBZmVGb3JtR3JvdXBcbn0gZnJvbSAnLi4vLi4vYWJzdHJhY3QtY29udHJvbHMtZXh0ZW5zaW9uJztcbmltcG9ydCB7IFF1ZXN0aW9uQmFzZSB9IGZyb20gJy4uL3F1ZXN0aW9uLW1vZGVscy9xdWVzdGlvbi1iYXNlJztcbmltcG9ydCB7IEpzRXhwcmVzc2lvbkhlbHBlciB9IGZyb20gJy4uL2hlbHBlcnMvanMtZXhwcmVzc2lvbi1oZWxwZXInO1xuaW1wb3J0IHsgRm9ybSB9IGZyb20gJy4vZm9ybSc7XG4vLyBBZGQgYWJpbGl0eSB0byBkaXNwbGF5IGFsbCBmaWVsZHMgZm9yIGRlYnVnZ2luZ1xuaW1wb3J0IHsgRGVidWdNb2RlU2VydmljZSB9IGZyb20gJy4vLi4vc2VydmljZXMvZGVidWctbW9kZS5zZXJ2aWNlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEhpZGVyc0Rpc2FibGVyc0ZhY3Rvcnkge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGV4cHJlc3Npb25SdW5uZXI6IEV4cHJlc3Npb25SdW5uZXIsXG4gICAgcHJpdmF0ZSBleHByZXNzaW9uSGVscGVyOiBKc0V4cHJlc3Npb25IZWxwZXIsXG4gICAgcHJpdmF0ZSBfZGVidWdNb2RlU2VydmljZTogRGVidWdNb2RlU2VydmljZVxuICApIHt9XG5cbiAgZ2V0SnNFeHByZXNzaW9uRGlzYWJsZXIoXG4gICAgcXVlc3Rpb246IFF1ZXN0aW9uQmFzZSxcbiAgICBjb250cm9sOiBBZmVGb3JtQ29udHJvbCB8IEFmZUZvcm1BcnJheSB8IEFmZUZvcm1Hcm91cCxcbiAgICBmb3JtPzogRm9ybVxuICApOiBEaXNhYmxlciB7XG4gICAgY29uc3QgcnVubmFibGU6IFJ1bm5hYmxlID0gdGhpcy5leHByZXNzaW9uUnVubmVyLmdldFJ1bm5hYmxlKFxuICAgICAgcXVlc3Rpb24uZGlzYWJsZSBhcyBzdHJpbmcsXG4gICAgICBjb250cm9sLFxuICAgICAgdGhpcy5leHByZXNzaW9uSGVscGVyLmhlbHBlckZ1bmN0aW9ucyxcbiAgICAgIHt9LFxuICAgICAgZm9ybVxuICAgICk7XG4gICAgY29uc3QgZGlzYWJsZXI6IERpc2FibGVyID0ge1xuICAgICAgdG9EaXNhYmxlOiBmYWxzZSxcbiAgICAgIGRpc2FibGVXaGVuRXhwcmVzc2lvbjogcXVlc3Rpb24uZGlzYWJsZSBhcyBzdHJpbmcsXG4gICAgICByZUV2YWx1YXRlRGlzYWJsaW5nRXhwcmVzc2lvbjogKCkgPT4ge1xuICAgICAgICBjb25zdCByZXN1bHQgPSBydW5uYWJsZS5ydW4oKTtcbiAgICAgICAgZGlzYWJsZXIudG9EaXNhYmxlID0gcmVzdWx0O1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIGRpc2FibGVyO1xuICB9XG5cbiAgZ2V0SnNFeHByZXNzaW9uSGlkZXIoXG4gICAgcXVlc3Rpb246IFF1ZXN0aW9uQmFzZSxcbiAgICBjb250cm9sOiBBZmVGb3JtQ29udHJvbCB8IEFmZUZvcm1BcnJheSB8IEFmZUZvcm1Hcm91cCxcbiAgICBmb3JtPzogRm9ybVxuICApOiBIaWRlciB7XG4gICAgY29uc3QgaGlkZTogYW55ID0gcXVlc3Rpb24uaGlkZTtcbiAgICBjb25zdCB2YWx1ZTogc3RyaW5nID1cbiAgICAgIHR5cGVvZiBoaWRlID09PSAnb2JqZWN0J1xuICAgICAgICA/IHRoaXMuY29udmVydEhpZGVPYmplY3RUb1N0cmluZyhoaWRlKVxuICAgICAgICA6IChxdWVzdGlvbi5oaWRlIGFzIHN0cmluZyk7XG5cbiAgICAvLyBjaGVjayBpZiBkZWJ1Z2dpbmcgaGFzIGJlZW4gZW5hYmxlZFxuXG4gICAgY29uc3QgZGVidWdFbmFibGVkID0gdGhpcy5fZGVidWdNb2RlU2VydmljZS5kZWJ1Z0VuYWJsZWQoKTtcblxuICAgIGNvbnN0IHJ1bm5hYmxlOiBSdW5uYWJsZSA9IHRoaXMuZXhwcmVzc2lvblJ1bm5lci5nZXRSdW5uYWJsZShcbiAgICAgIHZhbHVlLFxuICAgICAgY29udHJvbCxcbiAgICAgIHRoaXMuZXhwcmVzc2lvbkhlbHBlci5oZWxwZXJGdW5jdGlvbnMsXG4gICAgICB7fSxcbiAgICAgIGZvcm1cbiAgICApO1xuXG4gICAgY29uc3QgaGlkZXI6IEhpZGVyID0ge1xuICAgICAgdG9IaWRlOiBmYWxzZSxcbiAgICAgIGhpZGVXaGVuRXhwcmVzc2lvbjogdmFsdWUsXG4gICAgICByZUV2YWx1YXRlSGlkaW5nRXhwcmVzc2lvbjogKCkgPT4ge1xuICAgICAgICAvKiBpZiBkZWJ1ZyBpcyBlbmFibGVkIHRoZW4gaGlkZXJzIHRvIGJlIGZhbHNlXG4gICAgICAgICAgICAgICAgIGVsc2UgcnVuIHRoZSBub3JtYWwgZXZlbHVhdG9yIGkuZSBydW5uYWJsZS5ydW4oKVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICBpZiAoZGVidWdFbmFibGVkID09PSB0cnVlKSB7XG4gICAgICAgICAgaGlkZXIudG9IaWRlID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaGlkZXIudG9IaWRlID0gcnVubmFibGUucnVuKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHJldHVybiBoaWRlcjtcbiAgfVxuXG4gIGNvbnZlcnRIaWRlT2JqZWN0VG9TdHJpbmcoaGlkZTogYW55KSB7XG4gICAgaWYgKGhpZGUudmFsdWUgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgY29uc3QgYXJyYXlTdHI6IHN0cmluZyA9IFwiJ1wiICsgaGlkZS52YWx1ZS5qb2luKFwiJywnXCIpICsgXCInXCI7XG4gICAgICBjb25zdCBleHAgPSAnIWFycmF5Q29udGFpbnMoWycgKyBhcnJheVN0ciArICddLCcgKyBoaWRlLmZpZWxkICsgJyknO1xuICAgICAgcmV0dXJuIGV4cDtcbiAgICB9XG5cbiAgICByZXR1cm4gJyc7XG4gIH1cbn1cbiJdfQ==