@openmrs/ngx-formentry 3.0.1-pre.8

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 (344) 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 +15020 -0
  9. package/bundles/openmrs-ngx-formentry.umd.js.map +1 -0
  10. package/bundles/openmrs-ngx-formentry.umd.min.js +2 -0
  11. package/bundles/openmrs-ngx-formentry.umd.min.js.map +1 -0
  12. package/change-tracking/control-relation.d.ts +12 -0
  13. package/change-tracking/control-relations.d.ts +12 -0
  14. package/components/afe-ng-select.component.d.ts +26 -0
  15. package/components/appointments-overview/appointments-overview.component.d.ts +15 -0
  16. package/components/check-box/checkbox.component.d.ts +16 -0
  17. package/components/check-box/checkbox.module.d.ts +2 -0
  18. package/components/custom-component-wrapper/custom-component-wrapper..module.d.ts +2 -0
  19. package/components/custom-component-wrapper/custom-component-wrapper.component.d.ts +11 -0
  20. package/components/custom-control-wrapper/custom-control-wrapper..module.d.ts +2 -0
  21. package/components/custom-control-wrapper/custom-control-wrapper.component.d.ts +25 -0
  22. package/components/date-time-picker/date-picker/date-picker.component.d.ts +42 -0
  23. package/components/date-time-picker/date-time-picker.component.d.ts +26 -0
  24. package/components/date-time-picker/date-time-picker.module.d.ts +5 -0
  25. package/components/date-time-picker/picker-modal/modal.component.d.ts +10 -0
  26. package/components/date-time-picker/pipes/moment.pipe.d.ts +8 -0
  27. package/components/date-time-picker/time-picker/time-picker.component.d.ts +29 -0
  28. package/components/file-upload/file-upload.component.d.ts +26 -0
  29. package/components/file-upload/file-upload.module.d.ts +2 -0
  30. package/components/file-upload/secure.pipe.d.ts +23 -0
  31. package/components/input/input.directive.d.ts +28 -0
  32. package/components/input/input.module.d.ts +2 -0
  33. package/components/input/label.component.d.ts +87 -0
  34. package/components/input/text-area.directive.d.ts +21 -0
  35. package/components/ngx-datetime-picker/ngx-datetime-picker.component.d.ts +17 -0
  36. package/components/ngx-datetime-picker/ngx-datetime-picker.module.d.ts +5 -0
  37. package/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.d.ts +189 -0
  38. package/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.d.ts +15 -0
  39. package/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.d.ts +73 -0
  40. package/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.d.ts +5 -0
  41. package/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.d.ts +7 -0
  42. package/components/ngx-pick-datetime/lib/date-time/calendar-body.component.d.ts +77 -0
  43. package/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.d.ts +139 -0
  44. package/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.d.ts +109 -0
  45. package/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.d.ts +120 -0
  46. package/components/ngx-pick-datetime/lib/date-time/calendar.component.d.ts +141 -0
  47. package/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.d.ts +90 -0
  48. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.d.ts +122 -0
  49. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.d.ts +152 -0
  50. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.d.ts +51 -0
  51. package/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.d.ts +21 -0
  52. package/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.d.ts +8 -0
  53. package/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.d.ts +157 -0
  54. package/components/ngx-pick-datetime/lib/date-time/date-time.class.d.ts +86 -0
  55. package/components/ngx-pick-datetime/lib/date-time/date-time.module.d.ts +5 -0
  56. package/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.d.ts +7 -0
  57. package/components/ngx-pick-datetime/lib/date-time/timer-box.component.d.ts +35 -0
  58. package/components/ngx-pick-datetime/lib/date-time/timer.component.d.ts +129 -0
  59. package/components/ngx-pick-datetime/lib/dialog/dialog-config.class.d.ts +93 -0
  60. package/components/ngx-pick-datetime/lib/dialog/dialog-container.component.d.ts +56 -0
  61. package/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.d.ts +49 -0
  62. package/components/ngx-pick-datetime/lib/dialog/dialog.module.d.ts +5 -0
  63. package/components/ngx-pick-datetime/lib/dialog/dialog.service.d.ts +70 -0
  64. package/components/ngx-pick-datetime/lib/utils/index.d.ts +4 -0
  65. package/components/ngx-pick-datetime/lib/utils/object.utils.d.ts +11 -0
  66. package/components/ngx-remote-select/ngx-remote-select.component.d.ts +37 -0
  67. package/components/ngx-remote-select/ngx-remote-select.module.d.ts +2 -0
  68. package/components/ngx-tabset/components/tab-set.d.ts +16 -0
  69. package/components/ngx-tabset/components/tab.d.ts +10 -0
  70. package/components/ngx-tabset/directives/hover-class.directive.d.ts +8 -0
  71. package/components/ngx-tabset/modules/ngx-tabset.module.d.ts +11 -0
  72. package/components/number-input/number-input.component.d.ts +148 -0
  73. package/components/number-input/number-input.module.d.ts +2 -0
  74. package/components/select/optgroup.directive.d.ts +3 -0
  75. package/components/select/option.directive.d.ts +3 -0
  76. package/components/select/select.component.d.ts +112 -0
  77. package/components/select/select.module.d.ts +2 -0
  78. package/esm2015/abstract-controls-extension/afe-control-type.js +8 -0
  79. package/esm2015/abstract-controls-extension/afe-form-array.js +85 -0
  80. package/esm2015/abstract-controls-extension/afe-form-control.js +88 -0
  81. package/esm2015/abstract-controls-extension/afe-form-group.js +61 -0
  82. package/esm2015/abstract-controls-extension/control-extensions.js +5 -0
  83. package/esm2015/abstract-controls-extension/index.js +5 -0
  84. package/esm2015/abstract-controls-extension/value-change.listener.js +2 -0
  85. package/esm2015/change-tracking/control-relation.js +44 -0
  86. package/esm2015/change-tracking/control-relations.js +32 -0
  87. package/esm2015/components/afe-ng-select.component.js +87 -0
  88. package/esm2015/components/appointments-overview/appointments-overview.component.js +119 -0
  89. package/esm2015/components/check-box/checkbox.component.js +77 -0
  90. package/esm2015/components/check-box/checkbox.module.js +14 -0
  91. package/esm2015/components/custom-component-wrapper/custom-component-wrapper..module.js +16 -0
  92. package/esm2015/components/custom-component-wrapper/custom-component-wrapper.component.js +18 -0
  93. package/esm2015/components/custom-control-wrapper/custom-control-wrapper..module.js +17 -0
  94. package/esm2015/components/custom-control-wrapper/custom-control-wrapper.component.js +63 -0
  95. package/esm2015/components/date-time-picker/date-picker/date-picker.component.js +182 -0
  96. package/esm2015/components/date-time-picker/date-time-picker.component.js +104 -0
  97. package/esm2015/components/date-time-picker/date-time-picker.module.js +34 -0
  98. package/esm2015/components/date-time-picker/picker-modal/modal.component.js +30 -0
  99. package/esm2015/components/date-time-picker/pipes/moment.pipe.js +13 -0
  100. package/esm2015/components/date-time-picker/time-picker/time-picker.component.js +114 -0
  101. package/esm2015/components/file-upload/file-upload.component.js +110 -0
  102. package/esm2015/components/file-upload/file-upload.module.js +24 -0
  103. package/esm2015/components/file-upload/secure.pipe.js +102 -0
  104. package/esm2015/components/input/input.directive.js +55 -0
  105. package/esm2015/components/input/input.module.js +18 -0
  106. package/esm2015/components/input/label.component.js +177 -0
  107. package/esm2015/components/input/text-area.directive.js +40 -0
  108. package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.component.js +60 -0
  109. package/esm2015/components/ngx-datetime-picker/ngx-datetime-picker.module.js +26 -0
  110. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-adapter.class.js +114 -0
  111. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/date-time-format.class.js +7 -0
  112. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-adapter.class.js +344 -0
  113. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time-format.class.js +16 -0
  114. package/esm2015/components/ngx-pick-datetime/lib/date-time/adapter/native-date-time.module.js +30 -0
  115. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-body.component.js +149 -0
  116. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-month-view.component.js +429 -0
  117. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-multi-year-view.component.js +367 -0
  118. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar-year-view.component.js +359 -0
  119. package/esm2015/components/ngx-pick-datetime/lib/date-time/calendar.component.js +334 -0
  120. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-inline.component.js +251 -0
  121. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-container.component.js +380 -0
  122. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-input.directive.js +590 -0
  123. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-intl.service.js +60 -0
  124. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker-trigger.directive.js +71 -0
  125. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.animations.js +21 -0
  126. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time-picker.component.js +512 -0
  127. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time.class.js +153 -0
  128. package/esm2015/components/ngx-pick-datetime/lib/date-time/date-time.module.js +58 -0
  129. package/esm2015/components/ngx-pick-datetime/lib/date-time/numberedFixLen.pipe.js +24 -0
  130. package/esm2015/components/ngx-pick-datetime/lib/date-time/timer-box.component.js +85 -0
  131. package/esm2015/components/ngx-pick-datetime/lib/date-time/timer.component.js +292 -0
  132. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog-config.class.js +56 -0
  133. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog-container.component.js +208 -0
  134. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog-ref.class.js +119 -0
  135. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.module.js +22 -0
  136. package/esm2015/components/ngx-pick-datetime/lib/dialog/dialog.service.js +222 -0
  137. package/esm2015/components/ngx-pick-datetime/lib/utils/index.js +5 -0
  138. package/esm2015/components/ngx-pick-datetime/lib/utils/object.utils.js +26 -0
  139. package/esm2015/components/ngx-remote-select/ngx-remote-select.component.js +121 -0
  140. package/esm2015/components/ngx-remote-select/ngx-remote-select.module.js +16 -0
  141. package/esm2015/components/ngx-tabset/components/tab-set.js +67 -0
  142. package/esm2015/components/ngx-tabset/components/tab.js +35 -0
  143. package/esm2015/components/ngx-tabset/directives/hover-class.directive.js +26 -0
  144. package/esm2015/components/ngx-tabset/modules/ngx-tabset.module.js +33 -0
  145. package/esm2015/components/number-input/number-input.component.js +203 -0
  146. package/esm2015/components/number-input/number-input.module.js +15 -0
  147. package/esm2015/components/select/optgroup.directive.js +17 -0
  148. package/esm2015/components/select/option.directive.js +17 -0
  149. package/esm2015/components/select/select.component.js +293 -0
  150. package/esm2015/components/select/select.module.js +18 -0
  151. package/esm2015/form-entry/control-alerts/alert-helpers.js +40 -0
  152. package/esm2015/form-entry/control-alerts/can-generate-alert.js +2 -0
  153. package/esm2015/form-entry/control-calculators/can-calculate.js +2 -0
  154. package/esm2015/form-entry/control-hiders-disablers/can-disable.js +2 -0
  155. package/esm2015/form-entry/control-hiders-disablers/can-hide.js +2 -0
  156. package/esm2015/form-entry/control-hiders-disablers/disabler-helper.js +33 -0
  157. package/esm2015/form-entry/control-hiders-disablers/hider-helpers.js +40 -0
  158. package/esm2015/form-entry/data-sources/data-sources.js +30 -0
  159. package/esm2015/form-entry/data-sources/dummy-data-source.js +104 -0
  160. package/esm2015/form-entry/directives/collapse-animations.js +11 -0
  161. package/esm2015/form-entry/directives/collapse.directive.js +157 -0
  162. package/esm2015/form-entry/directives/historical-value-directive.js +66 -0
  163. package/esm2015/form-entry/error-renderer/error-renderer.component.js +55 -0
  164. package/esm2015/form-entry/expression-runner/expression-runner.js +168 -0
  165. package/esm2015/form-entry/form-entry.module.js +107 -0
  166. package/esm2015/form-entry/form-factory/control-relations.factory.js +236 -0
  167. package/esm2015/form-entry/form-factory/form-control.service.js +118 -0
  168. package/esm2015/form-entry/form-factory/form-node.js +81 -0
  169. package/esm2015/form-entry/form-factory/form.factory.js +132 -0
  170. package/esm2015/form-entry/form-factory/form.js +193 -0
  171. package/esm2015/form-entry/form-factory/hiders-disablers.factory.js +66 -0
  172. package/esm2015/form-entry/form-factory/question.factory.js +864 -0
  173. package/esm2015/form-entry/form-factory/show-messages.factory.js +30 -0
  174. package/esm2015/form-entry/form-factory/validation.factory.js +145 -0
  175. package/esm2015/form-entry/form-renderer/form-renderer.component.css.js +179 -0
  176. package/esm2015/form-entry/form-renderer/form-renderer.component.js +231 -0
  177. package/esm2015/form-entry/helpers/historical-expression-helper-service.js +38 -0
  178. package/esm2015/form-entry/helpers/historical-field-helper-service.js +36 -0
  179. package/esm2015/form-entry/helpers/js-expression-helper.js +238 -0
  180. package/esm2015/form-entry/pipes/time-ago.pipe.js +107 -0
  181. package/esm2015/form-entry/question-models/checkbox.model.js +11 -0
  182. package/esm2015/form-entry/question-models/conditional-validation.model.js +9 -0
  183. package/esm2015/form-entry/question-models/custom-control-question.model.js +10 -0
  184. package/esm2015/form-entry/question-models/date-question.js +12 -0
  185. package/esm2015/form-entry/question-models/date-validation.model.js +10 -0
  186. package/esm2015/form-entry/question-models/file-upload-question.js +13 -0
  187. package/esm2015/form-entry/question-models/group-question.js +12 -0
  188. package/esm2015/form-entry/question-models/interfaces/base-options.js +2 -0
  189. package/esm2015/form-entry/question-models/interfaces/checkbox-options.js +2 -0
  190. package/esm2015/form-entry/question-models/interfaces/data-source.js +2 -0
  191. package/esm2015/form-entry/question-models/interfaces/date-question-options.js +2 -0
  192. package/esm2015/form-entry/question-models/interfaces/file-upload-question-options.js +2 -0
  193. package/esm2015/form-entry/question-models/interfaces/group-question-options.js +2 -0
  194. package/esm2015/form-entry/question-models/interfaces/multi-select-options.js +2 -0
  195. package/esm2015/form-entry/question-models/interfaces/nested-questions.js +7 -0
  196. package/esm2015/form-entry/question-models/interfaces/repeating-question-options.js +2 -0
  197. package/esm2015/form-entry/question-models/interfaces/select-option.js +2 -0
  198. package/esm2015/form-entry/question-models/interfaces/select-question-options.js +2 -0
  199. package/esm2015/form-entry/question-models/interfaces/test-order-question-options.js +2 -0
  200. package/esm2015/form-entry/question-models/interfaces/text-area-question-options.js +2 -0
  201. package/esm2015/form-entry/question-models/interfaces/text-question-options.js +2 -0
  202. package/esm2015/form-entry/question-models/interfaces/ui-select-question-options.js +2 -0
  203. package/esm2015/form-entry/question-models/js-expression-validation.model.js +8 -0
  204. package/esm2015/form-entry/question-models/max-validation.model.js +9 -0
  205. package/esm2015/form-entry/question-models/min-validation.model.js +9 -0
  206. package/esm2015/form-entry/question-models/models.js +12 -0
  207. package/esm2015/form-entry/question-models/multi-select-question.js +11 -0
  208. package/esm2015/form-entry/question-models/pair.model.js +7 -0
  209. package/esm2015/form-entry/question-models/question-base.js +25 -0
  210. package/esm2015/form-entry/question-models/rendering-type.js +9 -0
  211. package/esm2015/form-entry/question-models/repeating-question.js +11 -0
  212. package/esm2015/form-entry/question-models/select-option.js +7 -0
  213. package/esm2015/form-entry/question-models/select-question.js +12 -0
  214. package/esm2015/form-entry/question-models/test-order-question.js +15 -0
  215. package/esm2015/form-entry/question-models/text-area-input-question.js +13 -0
  216. package/esm2015/form-entry/question-models/text-input-question.js +10 -0
  217. package/esm2015/form-entry/question-models/ui-select-question.js +11 -0
  218. package/esm2015/form-entry/question-models/validation.model.js +7 -0
  219. package/esm2015/form-entry/services/debug-mode.service.js +22 -0
  220. package/esm2015/form-entry/services/form-errors.service.js +18 -0
  221. package/esm2015/form-entry/services/form-schema-compiler.service.js +246 -0
  222. package/esm2015/form-entry/services/historical-encounter-data.service.js +170 -0
  223. package/esm2015/form-entry/utils/messages.js +12 -0
  224. package/esm2015/form-entry/validators/conditional-answered.validator.js +46 -0
  225. package/esm2015/form-entry/validators/conditional-required.validator.js +40 -0
  226. package/esm2015/form-entry/validators/date.validator.js +18 -0
  227. package/esm2015/form-entry/validators/future-date-restriction.validator.js +21 -0
  228. package/esm2015/form-entry/validators/js-expression.validator.js +26 -0
  229. package/esm2015/form-entry/validators/max-date.validator.js +23 -0
  230. package/esm2015/form-entry/validators/max.validator.js +17 -0
  231. package/esm2015/form-entry/validators/min-date.validator.js +23 -0
  232. package/esm2015/form-entry/validators/min.validator.js +17 -0
  233. package/esm2015/form-entry/validators/required.validator.js +11 -0
  234. package/esm2015/form-entry/validators/validations.js +5 -0
  235. package/esm2015/form-entry/value-adapters/encounter.adapter.js +172 -0
  236. package/esm2015/form-entry/value-adapters/obs-adapter-helper.js +496 -0
  237. package/esm2015/form-entry/value-adapters/obs.adapter.js +545 -0
  238. package/esm2015/form-entry/value-adapters/order.adapter.js +186 -0
  239. package/esm2015/form-entry/value-adapters/person-attribute.adapter.js +87 -0
  240. package/esm2015/form-entry/value-adapters/value.adapter.js +2 -0
  241. package/esm2015/lib/index.js +49 -0
  242. package/esm2015/openmrs-ngx-formentry.js +76 -0
  243. package/esm2015/public_api.js +2 -0
  244. package/esm2015/shared.module.js +15 -0
  245. package/fesm2015/openmrs-ngx-formentry.js +13458 -0
  246. package/fesm2015/openmrs-ngx-formentry.js.map +1 -0
  247. package/form-entry/control-alerts/alert-helpers.d.ts +9 -0
  248. package/form-entry/control-alerts/can-generate-alert.d.ts +18 -0
  249. package/form-entry/control-calculators/can-calculate.d.ts +5 -0
  250. package/form-entry/control-hiders-disablers/can-disable.d.ts +19 -0
  251. package/form-entry/control-hiders-disablers/can-hide.d.ts +20 -0
  252. package/form-entry/control-hiders-disablers/disabler-helper.d.ts +7 -0
  253. package/form-entry/control-hiders-disablers/hider-helpers.d.ts +9 -0
  254. package/form-entry/data-sources/data-sources.d.ts +7 -0
  255. package/form-entry/data-sources/dummy-data-source.d.ts +18 -0
  256. package/form-entry/directives/collapse-animations.d.ts +4 -0
  257. package/form-entry/directives/collapse.directive.d.ts +42 -0
  258. package/form-entry/directives/historical-value-directive.d.ts +13 -0
  259. package/form-entry/error-renderer/error-renderer.component.d.ts +17 -0
  260. package/form-entry/expression-runner/expression-runner.d.ts +15 -0
  261. package/form-entry/form-entry.module.d.ts +2 -0
  262. package/form-entry/form-factory/control-relations.factory.d.ts +15 -0
  263. package/form-entry/form-factory/form-control.service.d.ts +22 -0
  264. package/form-entry/form-factory/form-node.d.ts +51 -0
  265. package/form-entry/form-factory/form.d.ts +28 -0
  266. package/form-entry/form-factory/form.factory.d.ts +23 -0
  267. package/form-entry/form-factory/hiders-disablers.factory.d.ts +17 -0
  268. package/form-entry/form-factory/question.factory.d.ts +56 -0
  269. package/form-entry/form-factory/show-messages.factory.d.ts +12 -0
  270. package/form-entry/form-factory/validation.factory.d.ts +22 -0
  271. package/form-entry/form-renderer/form-renderer.component.css.d.ts +1 -0
  272. package/form-entry/form-renderer/form-renderer.component.d.ts +52 -0
  273. package/form-entry/helpers/historical-expression-helper-service.d.ts +5 -0
  274. package/form-entry/helpers/historical-field-helper-service.d.ts +4 -0
  275. package/form-entry/helpers/js-expression-helper.d.ts +22 -0
  276. package/form-entry/pipes/time-ago.pipe.d.ts +11 -0
  277. package/form-entry/question-models/checkbox.model.d.ts +9 -0
  278. package/form-entry/question-models/conditional-validation.model.d.ts +6 -0
  279. package/form-entry/question-models/custom-control-question.model.d.ts +6 -0
  280. package/form-entry/question-models/date-question.d.ts +7 -0
  281. package/form-entry/question-models/date-validation.model.d.ts +5 -0
  282. package/form-entry/question-models/file-upload-question.d.ts +8 -0
  283. package/form-entry/question-models/group-question.d.ts +8 -0
  284. package/form-entry/question-models/interfaces/base-options.d.ts +28 -0
  285. package/form-entry/question-models/interfaces/checkbox-options.d.ts +7 -0
  286. package/form-entry/question-models/interfaces/data-source.d.ts +10 -0
  287. package/form-entry/question-models/interfaces/date-question-options.d.ts +3 -0
  288. package/form-entry/question-models/interfaces/file-upload-question-options.d.ts +5 -0
  289. package/form-entry/question-models/interfaces/group-question-options.d.ts +5 -0
  290. package/form-entry/question-models/interfaces/multi-select-options.d.ts +4 -0
  291. package/form-entry/question-models/interfaces/nested-questions.d.ts +6 -0
  292. package/form-entry/question-models/interfaces/repeating-question-options.d.ts +5 -0
  293. package/form-entry/question-models/interfaces/select-option.d.ts +4 -0
  294. package/form-entry/question-models/interfaces/select-question-options.d.ts +9 -0
  295. package/form-entry/question-models/interfaces/test-order-question-options.d.ts +14 -0
  296. package/form-entry/question-models/interfaces/text-area-question-options.d.ts +5 -0
  297. package/form-entry/question-models/interfaces/text-question-options.d.ts +4 -0
  298. package/form-entry/question-models/interfaces/ui-select-question-options.d.ts +9 -0
  299. package/form-entry/question-models/js-expression-validation.model.d.ts +5 -0
  300. package/form-entry/question-models/max-validation.model.d.ts +5 -0
  301. package/form-entry/question-models/min-validation.model.d.ts +5 -0
  302. package/form-entry/question-models/models.d.ts +15 -0
  303. package/form-entry/question-models/multi-select-question.d.ts +9 -0
  304. package/form-entry/question-models/pair.model.d.ts +5 -0
  305. package/form-entry/question-models/question-base.d.ts +40 -0
  306. package/form-entry/question-models/rendering-type.d.ts +7 -0
  307. package/form-entry/question-models/repeating-question.d.ts +7 -0
  308. package/form-entry/question-models/select-option.d.ts +6 -0
  309. package/form-entry/question-models/select-question.d.ts +10 -0
  310. package/form-entry/question-models/test-order-question.d.ts +13 -0
  311. package/form-entry/question-models/text-area-input-question.d.ts +7 -0
  312. package/form-entry/question-models/text-input-question.d.ts +6 -0
  313. package/form-entry/question-models/ui-select-question.d.ts +11 -0
  314. package/form-entry/question-models/validation.model.d.ts +5 -0
  315. package/form-entry/services/debug-mode.service.d.ts +5 -0
  316. package/form-entry/services/form-errors.service.d.ts +10 -0
  317. package/form-entry/services/form-schema-compiler.service.d.ts +20 -0
  318. package/form-entry/services/historical-encounter-data.service.d.ts +12 -0
  319. package/form-entry/utils/messages.d.ts +11 -0
  320. package/form-entry/validators/conditional-answered.validator.d.ts +8 -0
  321. package/form-entry/validators/conditional-required.validator.d.ts +8 -0
  322. package/form-entry/validators/date.validator.d.ts +7 -0
  323. package/form-entry/validators/future-date-restriction.validator.d.ts +7 -0
  324. package/form-entry/validators/js-expression.validator.d.ts +8 -0
  325. package/form-entry/validators/max-date.validator.d.ts +6 -0
  326. package/form-entry/validators/max.validator.d.ts +6 -0
  327. package/form-entry/validators/min-date.validator.d.ts +6 -0
  328. package/form-entry/validators/min.validator.d.ts +6 -0
  329. package/form-entry/validators/required.validator.d.ts +6 -0
  330. package/form-entry/validators/validations.d.ts +4 -0
  331. package/form-entry/value-adapters/encounter.adapter.d.ts +23 -0
  332. package/form-entry/value-adapters/obs-adapter-helper.d.ts +27 -0
  333. package/form-entry/value-adapters/obs.adapter.d.ts +35 -0
  334. package/form-entry/value-adapters/order.adapter.d.ts +17 -0
  335. package/form-entry/value-adapters/person-attribute.adapter.d.ts +12 -0
  336. package/form-entry/value-adapters/value.adapter.d.ts +5 -0
  337. package/lib/index.d.ts +49 -0
  338. package/openmrs-ngx-formentry.d.ts +85 -0
  339. package/openmrs-ngx-formentry.metadata.json +1 -0
  340. package/package.json +35 -0
  341. package/public_api.d.ts +1 -0
  342. package/shared.module.d.ts +2 -0
  343. package/styles/ngx-formentry.css +374 -0
  344. package/styles/picker.min.css +770 -0
@@ -0,0 +1,293 @@
1
+ /* eslint-disable @angular-eslint/component-class-suffix */
2
+ import { Component, ElementRef, Input, Output, HostListener, EventEmitter, TemplateRef, ViewChild } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ /**
5
+ * `ibm-select` provides a styled `select` component.
6
+ *
7
+ * [See demo](../../?path=/story/select--basic)
8
+ *
9
+ * Example:
10
+ *
11
+ * ```
12
+ * <ibm-select [(ngModel)]="model">
13
+ * <option value="default" disabled selected hidden>Choose an option</option>
14
+ * <option value="option1">Option 1</option>
15
+ * <option value="option2">Option 2</option>
16
+ * <option value="option3">Option 3</option>
17
+ * </ibm-select>
18
+ * ```
19
+ *
20
+ * <example-url>../../iframe.html?id=select--basic</example-url>
21
+ */
22
+ export class Select {
23
+ constructor() {
24
+ /**
25
+ * `inline` or `default` select displays
26
+ */
27
+ this.display = 'default';
28
+ /**
29
+ * Set to `true` to show a warning (contents set by warningText)
30
+ */
31
+ this.warn = false;
32
+ /**
33
+ * Sets the unique ID. Defaults to `select-${total count of selects instantiated}`
34
+ */
35
+ this.id = `select-${Select.selectCount++}`;
36
+ /**
37
+ * Number input field render size
38
+ */
39
+ this.size = 'md';
40
+ /**
41
+ * Set to true to disable component.
42
+ */
43
+ this.disabled = false;
44
+ /**
45
+ * Set to true for a loading select.
46
+ */
47
+ this.skeleton = false;
48
+ /**
49
+ * Set to `true` for an invalid select component.
50
+ */
51
+ this.invalid = false;
52
+ /**
53
+ * `light` or `dark` select theme
54
+ */
55
+ this.theme = 'dark';
56
+ this.valueChange = new EventEmitter();
57
+ /**
58
+ * placeholder declarations. Replaced by the functions provided to `registerOnChange` and `registerOnTouched`
59
+ */
60
+ this.onChangeHandler = (_) => { };
61
+ this.onTouchedHandler = () => { };
62
+ }
63
+ set value(v) {
64
+ this._value = v;
65
+ if (this.select) {
66
+ this.select.nativeElement.value = this._value;
67
+ }
68
+ }
69
+ get value() {
70
+ return this._value;
71
+ }
72
+ ngAfterViewInit() {
73
+ if (this.value !== undefined &&
74
+ this.value !== null &&
75
+ this.select &&
76
+ this.select.nativeElement.value !== this.value) {
77
+ this.select.nativeElement.value = this.value;
78
+ }
79
+ }
80
+ /**
81
+ * Receives a value from the model.
82
+ */
83
+ writeValue(obj) {
84
+ this.value = obj;
85
+ }
86
+ /**
87
+ * Registers a listener that notifies the model when the control updates
88
+ */
89
+ registerOnChange(fn) {
90
+ this.onChangeHandler = fn;
91
+ }
92
+ /**
93
+ * Registers a listener that notifies the model when the control is blurred
94
+ */
95
+ registerOnTouched(fn) {
96
+ this.onTouchedHandler = fn;
97
+ }
98
+ /**
99
+ * Sets the disabled state through the model
100
+ */
101
+ setDisabledState(isDisabled) {
102
+ this.disabled = isDisabled;
103
+ }
104
+ /**
105
+ * Handles the change event from the `select`.
106
+ * Sends events to the change handler and emits a `selected` event.
107
+ */
108
+ onChange(event) {
109
+ this.value = event.target.value;
110
+ this.onChangeHandler(event.target.value);
111
+ this.valueChange.emit(event.target.value);
112
+ }
113
+ /**
114
+ * Listens for the host blurring, and notifies the model
115
+ */
116
+ focusOut() {
117
+ this.onTouchedHandler();
118
+ }
119
+ isTemplate(value) {
120
+ return value instanceof TemplateRef;
121
+ }
122
+ }
123
+ /**
124
+ * Tracks the total number of selects instantiated. Used to generate unique IDs
125
+ */
126
+ Select.selectCount = 0;
127
+ Select.decorators = [
128
+ { type: Component, args: [{
129
+ selector: 'ibm-select',
130
+ template: `
131
+ <div class="bx--form-item">
132
+ <ng-template [ngIf]="skeleton">
133
+ <div *ngIf="label" class="bx--label bx--skeleton"></div>
134
+ <div class="bx--select bx--skeleton"></div>
135
+ </ng-template>
136
+ <div
137
+ *ngIf="!skeleton"
138
+ class="bx--select"
139
+ [ngClass]="{
140
+ 'bx--select--inline': display === 'inline',
141
+ 'bx--select--light': theme === 'light',
142
+ 'bx--select--invalid': invalid,
143
+ 'bx--select--warning': warn,
144
+ 'bx--select--disabled': disabled
145
+ }"
146
+ >
147
+ <label *ngIf="label" [for]="id" class="bx--label">
148
+ <ng-container *ngIf="!isTemplate(label)">{{ label }}</ng-container>
149
+ <ng-template
150
+ *ngIf="isTemplate(label)"
151
+ [ngTemplateOutlet]="label"
152
+ ></ng-template>
153
+ </label>
154
+ <div *ngIf="helperText" class="bx--form__helper-text">
155
+ <ng-container *ngIf="!isTemplate(helperText)">{{
156
+ helperText
157
+ }}</ng-container>
158
+ <ng-template
159
+ *ngIf="isTemplate(helperText)"
160
+ [ngTemplateOutlet]="helperText"
161
+ ></ng-template>
162
+ </div>
163
+ <div
164
+ *ngIf="display === 'inline'; else noInline"
165
+ class="bx--select-input--inline__wrapper"
166
+ >
167
+ <ng-container *ngTemplateOutlet="noInline"></ng-container>
168
+ </div>
169
+ </div>
170
+ </div>
171
+
172
+ <!-- select element: dynamically projected based on 'display' variant -->
173
+ <ng-template #noInline>
174
+ <div
175
+ class="bx--select-input__wrapper extend"
176
+ [attr.data-invalid]="invalid ? true : null"
177
+ >
178
+ <select
179
+ #select
180
+ [attr.id]="id"
181
+ [attr.aria-label]="ariaLabel"
182
+ [disabled]="disabled"
183
+ (change)="onChange($event)"
184
+ [attr.aria-invalid]="invalid ? 'true' : null"
185
+ class="bx--select-input"
186
+ [ngClass]="{
187
+ 'bx--select-input--xl': size === 'xl',
188
+ 'bx--select-input--sm': size === 'sm'
189
+ }"
190
+ >
191
+ <ng-content></ng-content>
192
+ </select>
193
+ <svg
194
+ focusable="false"
195
+ preserveAspectRatio="xMidYMid meet"
196
+ style="will-change: transform;"
197
+ xmlns="http://www.w3.org/2000/svg"
198
+ class="bx--select__arrow"
199
+ width="16"
200
+ height="16"
201
+ viewBox="0 0 16 16"
202
+ aria-hidden="true"
203
+ >
204
+ <path d="M8 11L3 6 3.7 5.3 8 9.6 12.3 5.3 13 6z"></path>
205
+ </svg>
206
+ <svg
207
+ *ngIf="invalid"
208
+ focusable="false"
209
+ preserveAspectRatio="xMidYMid meet"
210
+ style="will-change: transform;"
211
+ xmlns="http://www.w3.org/2000/svg"
212
+ class="bx--text-input__invalid-icon"
213
+ width="16"
214
+ height="16"
215
+ viewBox="0 0 16 16"
216
+ aria-hidden="true"
217
+ >
218
+ <path
219
+ d="M8,1C4.2,1,1,4.2,1,8s3.2,7,7,7s7-3.1,7-7S11.9,1,8,1z M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2 c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z"
220
+ ></path>
221
+ <path
222
+ d="M7.5,4h1v5h-1C7.5,9,7.5,4,7.5,4z M8,12.2c-0.4,0-0.8-0.4-0.8-0.8s0.3-0.8,0.8-0.8 c0.4,0,0.8,0.4,0.8,0.8S8.4,12.2,8,12.2z"
223
+ data-icon-path="inner-path"
224
+ opacity="0"
225
+ ></path>
226
+ </svg>
227
+ </div>
228
+ <div
229
+ *ngIf="invalid && invalidText && !warn"
230
+ role="alert"
231
+ class="bx--form-requirement"
232
+ aria-live="polite"
233
+ >
234
+ <ng-container *ngIf="!isTemplate(invalidText)">{{
235
+ invalidText
236
+ }}</ng-container>
237
+ <ng-template
238
+ *ngIf="isTemplate(invalidText)"
239
+ [ngTemplateOutlet]="invalidText"
240
+ ></ng-template>
241
+ </div>
242
+ <div *ngIf="!invalid && warn" class="bx--form-requirement">
243
+ <ng-container *ngIf="!isTemplate(warnText)">{{
244
+ warnText
245
+ }}</ng-container>
246
+ <ng-template
247
+ *ngIf="isTemplate(warnText)"
248
+ [ngTemplateOutlet]="warnText"
249
+ ></ng-template>
250
+ </div>
251
+ </ng-template>
252
+ `,
253
+ providers: [
254
+ {
255
+ provide: NG_VALUE_ACCESSOR,
256
+ useExisting: Select,
257
+ multi: true
258
+ }
259
+ ],
260
+ styles: [`
261
+ .bx--select--inline .bx--form__helper-text {
262
+ order: 4;
263
+ }
264
+
265
+ .bx--select--inline:not(.bx--select--invalid) .bx--form__helper-text {
266
+ margin-top: 0;
267
+ }
268
+ .bx--select-input__wrapper {
269
+ min-width: 16rem;
270
+ }
271
+ `]
272
+ },] }
273
+ ];
274
+ Select.propDecorators = {
275
+ display: [{ type: Input }],
276
+ label: [{ type: Input }],
277
+ helperText: [{ type: Input }],
278
+ invalidText: [{ type: Input }],
279
+ warn: [{ type: Input }],
280
+ warnText: [{ type: Input }],
281
+ id: [{ type: Input }],
282
+ size: [{ type: Input }],
283
+ disabled: [{ type: Input }],
284
+ skeleton: [{ type: Input }],
285
+ invalid: [{ type: Input }],
286
+ theme: [{ type: Input }],
287
+ ariaLabel: [{ type: Input }],
288
+ valueChange: [{ type: Output }],
289
+ select: [{ type: ViewChild, args: ['select', { static: false },] }],
290
+ value: [{ type: Input }],
291
+ focusOut: [{ type: HostListener, args: ['focusout',] }]
292
+ };
293
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkRBQTJEO0FBQzNELE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sWUFBWSxFQUNaLFlBQVksRUFDWixXQUFXLEVBQ1gsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RTs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFvSkgsTUFBTSxPQUFPLE1BQU07SUFuSm5CO1FBeUpFOztXQUVHO1FBQ00sWUFBTyxHQUF5QixTQUFTLENBQUM7UUFhbkQ7O1dBRUc7UUFDTSxTQUFJLEdBQUcsS0FBSyxDQUFDO1FBS3RCOztXQUVHO1FBQ00sT0FBRSxHQUFHLFVBQVUsTUFBTSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7UUFDL0M7O1dBRUc7UUFDTSxTQUFJLEdBQXVCLElBQUksQ0FBQztRQUN6Qzs7V0FFRztRQUNNLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDMUI7O1dBRUc7UUFDTSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQzFCOztXQUVHO1FBQ00sWUFBTyxHQUFHLEtBQUssQ0FBQztRQUV6Qjs7V0FFRztRQUNNLFVBQUssR0FBcUIsTUFBTSxDQUFDO1FBR2hDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQStFM0M7O1dBRUc7UUFDTyxvQkFBZSxHQUFHLENBQUMsQ0FBTSxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDakMscUJBQWdCLEdBQUcsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUEvRUMsSUFBYSxLQUFLLENBQUMsQ0FBQztRQUNsQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztRQUNoQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUMvQztJQUNILENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUlELGVBQWU7UUFDYixJQUNFLElBQUksQ0FBQyxLQUFLLEtBQUssU0FBUztZQUN4QixJQUFJLENBQUMsS0FBSyxLQUFLLElBQUk7WUFDbkIsSUFBSSxDQUFDLE1BQU07WUFDWCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFDOUM7WUFDQSxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUM5QztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxHQUFRO1FBQ2pCLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLEVBQU87UUFDdEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaUJBQWlCLENBQUMsRUFBTztRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNILGdCQUFnQixDQUFDLFVBQW1CO1FBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRLENBQUMsS0FBSztRQUNaLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3pDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVEOztPQUVHO0lBRUgsUUFBUTtRQUNOLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxVQUFVLENBQUMsS0FBSztRQUNyQixPQUFPLEtBQUssWUFBWSxXQUFXLENBQUM7SUFDdEMsQ0FBQzs7QUFySUQ7O0dBRUc7QUFDSSxrQkFBVyxHQUFHLENBQUMsQ0FBQzs7WUF2SnhCLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTBIVDtnQkFlRCxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLE1BQU07d0JBQ25CLEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO3lCQW5CQzs7Ozs7Ozs7Ozs7S0FXQzthQVNKOzs7c0JBVUUsS0FBSztvQkFJTCxLQUFLO3lCQUlMLEtBQUs7MEJBSUwsS0FBSzttQkFJTCxLQUFLO3VCQUlMLEtBQUs7aUJBSUwsS0FBSzttQkFJTCxLQUFLO3VCQUlMLEtBQUs7dUJBSUwsS0FBSztzQkFJTCxLQUFLO29CQUtMLEtBQUs7d0JBQ0wsS0FBSzswQkFFTCxNQUFNO3FCQUdOLFNBQVMsU0FBQyxRQUFRLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO29CQUVyQyxLQUFLO3VCQWlFTCxZQUFZLFNBQUMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtY2xhc3Mtc3VmZml4ICovXG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEhvc3RMaXN0ZW5lcixcbiAgRXZlbnRFbWl0dGVyLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vKipcbiAqIGBpYm0tc2VsZWN0YCBwcm92aWRlcyBhIHN0eWxlZCBgc2VsZWN0YCBjb21wb25lbnQuXG4gKlxuICogW1NlZSBkZW1vXSguLi8uLi8/cGF0aD0vc3Rvcnkvc2VsZWN0LS1iYXNpYylcbiAqXG4gKiBFeGFtcGxlOlxuICpcbiAqIGBgYFxuICogPGlibS1zZWxlY3QgWyhuZ01vZGVsKV09XCJtb2RlbFwiPlxuICogICAgIDxvcHRpb24gdmFsdWU9XCJkZWZhdWx0XCIgZGlzYWJsZWQgc2VsZWN0ZWQgaGlkZGVuPkNob29zZSBhbiBvcHRpb248L29wdGlvbj5cbiAqICAgICA8b3B0aW9uIHZhbHVlPVwib3B0aW9uMVwiPk9wdGlvbiAxPC9vcHRpb24+XG4gKiAgICA8b3B0aW9uIHZhbHVlPVwib3B0aW9uMlwiPk9wdGlvbiAyPC9vcHRpb24+XG4gKiAgICAgPG9wdGlvbiB2YWx1ZT1cIm9wdGlvbjNcIj5PcHRpb24gMzwvb3B0aW9uPlxuICogPC9pYm0tc2VsZWN0PlxuICogICAgYGBgXG4gKlxuICogPGV4YW1wbGUtdXJsPi4uLy4uL2lmcmFtZS5odG1sP2lkPXNlbGVjdC0tYmFzaWM8L2V4YW1wbGUtdXJsPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpYm0tc2VsZWN0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYngtLWZvcm0taXRlbVwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cInNrZWxldG9uXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJsYWJlbFwiIGNsYXNzPVwiYngtLWxhYmVsIGJ4LS1za2VsZXRvblwiPjwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYngtLXNlbGVjdCBieC0tc2tlbGV0b25cIj48L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiIXNrZWxldG9uXCJcbiAgICAgICAgY2xhc3M9XCJieC0tc2VsZWN0XCJcbiAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICdieC0tc2VsZWN0LS1pbmxpbmUnOiBkaXNwbGF5ID09PSAnaW5saW5lJyxcbiAgICAgICAgICAnYngtLXNlbGVjdC0tbGlnaHQnOiB0aGVtZSA9PT0gJ2xpZ2h0JyxcbiAgICAgICAgICAnYngtLXNlbGVjdC0taW52YWxpZCc6IGludmFsaWQsXG4gICAgICAgICAgJ2J4LS1zZWxlY3QtLXdhcm5pbmcnOiB3YXJuLFxuICAgICAgICAgICdieC0tc2VsZWN0LS1kaXNhYmxlZCc6IGRpc2FibGVkXG4gICAgICAgIH1cIlxuICAgICAgPlxuICAgICAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIFtmb3JdPVwiaWRcIiBjbGFzcz1cImJ4LS1sYWJlbFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNUZW1wbGF0ZShsYWJlbClcIj57eyBsYWJlbCB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAgICAgKm5nSWY9XCJpc1RlbXBsYXRlKGxhYmVsKVwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFwiXG4gICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJoZWxwZXJUZXh0XCIgY2xhc3M9XCJieC0tZm9ybV9faGVscGVyLXRleHRcIj5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoaGVscGVyVGV4dClcIj57e1xuICAgICAgICAgICAgaGVscGVyVGV4dFxuICAgICAgICAgIH19PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAqbmdJZj1cImlzVGVtcGxhdGUoaGVscGVyVGV4dClcIlxuICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiaGVscGVyVGV4dFwiXG4gICAgICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nSWY9XCJkaXNwbGF5ID09PSAnaW5saW5lJzsgZWxzZSBub0lubGluZVwiXG4gICAgICAgICAgY2xhc3M9XCJieC0tc2VsZWN0LWlucHV0LS1pbmxpbmVfX3dyYXBwZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm5vSW5saW5lXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIHNlbGVjdCBlbGVtZW50OiBkeW5hbWljYWxseSBwcm9qZWN0ZWQgYmFzZWQgb24gJ2Rpc3BsYXknIHZhcmlhbnQgLS0+XG4gICAgPG5nLXRlbXBsYXRlICNub0lubGluZT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJieC0tc2VsZWN0LWlucHV0X193cmFwcGVyIGV4dGVuZFwiXG4gICAgICAgIFthdHRyLmRhdGEtaW52YWxpZF09XCJpbnZhbGlkID8gdHJ1ZSA6IG51bGxcIlxuICAgICAgPlxuICAgICAgICA8c2VsZWN0XG4gICAgICAgICAgI3NlbGVjdFxuICAgICAgICAgIFthdHRyLmlkXT1cImlkXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImFyaWFMYWJlbFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtaW52YWxpZF09XCJpbnZhbGlkID8gJ3RydWUnIDogbnVsbFwiXG4gICAgICAgICAgY2xhc3M9XCJieC0tc2VsZWN0LWlucHV0XCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAnYngtLXNlbGVjdC1pbnB1dC0teGwnOiBzaXplID09PSAneGwnLFxuICAgICAgICAgICAgJ2J4LS1zZWxlY3QtaW5wdXQtLXNtJzogc2l6ZSA9PT0gJ3NtJ1xuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgPHN2Z1xuICAgICAgICAgIGZvY3VzYWJsZT1cImZhbHNlXCJcbiAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPVwieE1pZFlNaWQgbWVldFwiXG4gICAgICAgICAgc3R5bGU9XCJ3aWxsLWNoYW5nZTogdHJhbnNmb3JtO1wiXG4gICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgY2xhc3M9XCJieC0tc2VsZWN0X19hcnJvd1wiXG4gICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cGF0aCBkPVwiTTggMTFMMyA2IDMuNyA1LjMgOCA5LjYgMTIuMyA1LjMgMTMgNnpcIj48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgICA8c3ZnXG4gICAgICAgICAgKm5nSWY9XCJpbnZhbGlkXCJcbiAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz1cInhNaWRZTWlkIG1lZXRcIlxuICAgICAgICAgIHN0eWxlPVwid2lsbC1jaGFuZ2U6IHRyYW5zZm9ybTtcIlxuICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgIGNsYXNzPVwiYngtLXRleHQtaW5wdXRfX2ludmFsaWQtaWNvblwiXG4gICAgICAgICAgd2lkdGg9XCIxNlwiXG4gICAgICAgICAgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgZD1cIk04LDFDNC4yLDEsMSw0LjIsMSw4czMuMiw3LDcsN3M3LTMuMSw3LTdTMTEuOSwxLDgsMXogTTcuNSw0aDF2NWgtMUM3LjUsOSw3LjUsNCw3LjUsNHogTTgsMTIuMiAgICBjLTAuNCwwLTAuOC0wLjQtMC44LTAuOHMwLjMtMC44LDAuOC0wLjhjMC40LDAsMC44LDAuNCwwLjgsMC44UzguNCwxMi4yLDgsMTIuMnpcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgIGQ9XCJNNy41LDRoMXY1aC0xQzcuNSw5LDcuNSw0LDcuNSw0eiBNOCwxMi4yYy0wLjQsMC0wLjgtMC40LTAuOC0wLjhzMC4zLTAuOCwwLjgtMC44ICAgIGMwLjQsMCwwLjgsMC40LDAuOCwwLjhTOC40LDEyLjIsOCwxMi4yelwiXG4gICAgICAgICAgICBkYXRhLWljb24tcGF0aD1cImlubmVyLXBhdGhcIlxuICAgICAgICAgICAgb3BhY2l0eT1cIjBcIlxuICAgICAgICAgID48L3BhdGg+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiaW52YWxpZCAmJiBpbnZhbGlkVGV4dCAmJiAhd2FyblwiXG4gICAgICAgIHJvbGU9XCJhbGVydFwiXG4gICAgICAgIGNsYXNzPVwiYngtLWZvcm0tcmVxdWlyZW1lbnRcIlxuICAgICAgICBhcmlhLWxpdmU9XCJwb2xpdGVcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCI+e3tcbiAgICAgICAgICBpbnZhbGlkVGV4dFxuICAgICAgICB9fTwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAqbmdJZj1cImlzVGVtcGxhdGUoaW52YWxpZFRleHQpXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJpbnZhbGlkVGV4dFwiXG4gICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2ICpuZ0lmPVwiIWludmFsaWQgJiYgd2FyblwiIGNsYXNzPVwiYngtLWZvcm0tcmVxdWlyZW1lbnRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RlbXBsYXRlKHdhcm5UZXh0KVwiPnt7XG4gICAgICAgICAgd2FyblRleHRcbiAgICAgICAgfX08L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgKm5nSWY9XCJpc1RlbXBsYXRlKHdhcm5UZXh0KVwiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwid2FyblRleHRcIlxuICAgICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5ieC0tc2VsZWN0LS1pbmxpbmUgLmJ4LS1mb3JtX19oZWxwZXItdGV4dCB7XG4gICAgICAgIG9yZGVyOiA0O1xuICAgICAgfVxuXG4gICAgICAuYngtLXNlbGVjdC0taW5saW5lOm5vdCguYngtLXNlbGVjdC0taW52YWxpZCkgLmJ4LS1mb3JtX19oZWxwZXItdGV4dCB7XG4gICAgICAgIG1hcmdpbi10b3A6IDA7XG4gICAgICB9XG4gICAgICAuYngtLXNlbGVjdC1pbnB1dF9fd3JhcHBlciB7XG4gICAgICAgIG1pbi13aWR0aDogMTZyZW07XG4gICAgICB9XG4gICAgYFxuICBdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBTZWxlY3QsXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3QgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgQWZ0ZXJWaWV3SW5pdCB7XG4gIC8qKlxuICAgKiBUcmFja3MgdGhlIHRvdGFsIG51bWJlciBvZiBzZWxlY3RzIGluc3RhbnRpYXRlZC4gVXNlZCB0byBnZW5lcmF0ZSB1bmlxdWUgSURzXG4gICAqL1xuICBzdGF0aWMgc2VsZWN0Q291bnQgPSAwO1xuXG4gIC8qKlxuICAgKiBgaW5saW5lYCBvciBgZGVmYXVsdGAgc2VsZWN0IGRpc3BsYXlzXG4gICAqL1xuICBASW5wdXQoKSBkaXNwbGF5OiAnaW5saW5lJyB8ICdkZWZhdWx0JyA9ICdkZWZhdWx0JztcbiAgLyoqXG4gICAqIExhYmVsIGZvciB0aGUgc2VsZWN0LiBBcHBlYXJzIGFib3ZlIHRoZSBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+O1xuICAvKipcbiAgICogT3B0aW9uYWwgaGVscGVyIHRleHQgdGhhdCBhcHBlYXJzIHVuZGVyIHRoZSBsYWJlbC5cbiAgICovXG4gIEBJbnB1dCgpIGhlbHBlclRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBpbnZhbGlkIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSBpbnZhbGlkVGV4dDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PjtcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgdG8gc2hvdyBhIHdhcm5pbmcgKGNvbnRlbnRzIHNldCBieSB3YXJuaW5nVGV4dClcbiAgICovXG4gIEBJbnB1dCgpIHdhcm4gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldHMgdGhlIHdhcm5pbmcgdGV4dFxuICAgKi9cbiAgQElucHV0KCkgd2FyblRleHQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT47XG4gIC8qKlxuICAgKiBTZXRzIHRoZSB1bmlxdWUgSUQuIERlZmF1bHRzIHRvIGBzZWxlY3QtJHt0b3RhbCBjb3VudCBvZiBzZWxlY3RzIGluc3RhbnRpYXRlZH1gXG4gICAqL1xuICBASW5wdXQoKSBpZCA9IGBzZWxlY3QtJHtTZWxlY3Quc2VsZWN0Q291bnQrK31gO1xuICAvKipcbiAgICogTnVtYmVyIGlucHV0IGZpZWxkIHJlbmRlciBzaXplXG4gICAqL1xuICBASW5wdXQoKSBzaXplOiAnc20nIHwgJ21kJyB8ICd4bCcgPSAnbWQnO1xuICAvKipcbiAgICogU2V0IHRvIHRydWUgdG8gZGlzYWJsZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuICAvKipcbiAgICogU2V0IHRvIHRydWUgZm9yIGEgbG9hZGluZyBzZWxlY3QuXG4gICAqL1xuICBASW5wdXQoKSBza2VsZXRvbiA9IGZhbHNlO1xuICAvKipcbiAgICogU2V0IHRvIGB0cnVlYCBmb3IgYW4gaW52YWxpZCBzZWxlY3QgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgaW52YWxpZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBgbGlnaHRgIG9yIGBkYXJrYCBzZWxlY3QgdGhlbWVcbiAgICovXG4gIEBJbnB1dCgpIHRoZW1lOiAnbGlnaHQnIHwgJ2RhcmsnID0gJ2RhcmsnO1xuICBASW5wdXQoKSBhcmlhTGFiZWw6IHN0cmluZztcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBAVmlld0NoaWxkKCdzZWxlY3QnLCB7IHN0YXRpYzogZmFsc2UgfSkgc2VsZWN0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIHNldCB2YWx1ZSh2KSB7XG4gICAgdGhpcy5fdmFsdWUgPSB2O1xuICAgIGlmICh0aGlzLnNlbGVjdCkge1xuICAgICAgdGhpcy5zZWxlY3QubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuX3ZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cblxuICBwcm90ZWN0ZWQgX3ZhbHVlO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLnZhbHVlICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMudmFsdWUgIT09IG51bGwgJiZcbiAgICAgIHRoaXMuc2VsZWN0ICYmXG4gICAgICB0aGlzLnNlbGVjdC5uYXRpdmVFbGVtZW50LnZhbHVlICE9PSB0aGlzLnZhbHVlXG4gICAgKSB7XG4gICAgICB0aGlzLnNlbGVjdC5uYXRpdmVFbGVtZW50LnZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVjZWl2ZXMgYSB2YWx1ZSBmcm9tIHRoZSBtb2RlbC5cbiAgICovXG4gIHdyaXRlVmFsdWUob2JqOiBhbnkpIHtcbiAgICB0aGlzLnZhbHVlID0gb2JqO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGxpc3RlbmVyIHRoYXQgbm90aWZpZXMgdGhlIG1vZGVsIHdoZW4gdGhlIGNvbnRyb2wgdXBkYXRlc1xuICAgKi9cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KSB7XG4gICAgdGhpcy5vbkNoYW5nZUhhbmRsZXIgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBsaXN0ZW5lciB0aGF0IG5vdGlmaWVzIHRoZSBtb2RlbCB3aGVuIHRoZSBjb250cm9sIGlzIGJsdXJyZWRcbiAgICovXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpIHtcbiAgICB0aGlzLm9uVG91Y2hlZEhhbmRsZXIgPSBmbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSBkaXNhYmxlZCBzdGF0ZSB0aHJvdWdoIHRoZSBtb2RlbFxuICAgKi9cbiAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICAvKipcbiAgICogSGFuZGxlcyB0aGUgY2hhbmdlIGV2ZW50IGZyb20gdGhlIGBzZWxlY3RgLlxuICAgKiBTZW5kcyBldmVudHMgdG8gdGhlIGNoYW5nZSBoYW5kbGVyIGFuZCBlbWl0cyBhIGBzZWxlY3RlZGAgZXZlbnQuXG4gICAqL1xuICBvbkNoYW5nZShldmVudCkge1xuICAgIHRoaXMudmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgdGhpcy5vbkNoYW5nZUhhbmRsZXIoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoZXZlbnQudGFyZ2V0LnZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0ZW5zIGZvciB0aGUgaG9zdCBibHVycmluZywgYW5kIG5vdGlmaWVzIHRoZSBtb2RlbFxuICAgKi9cbiAgQEhvc3RMaXN0ZW5lcignZm9jdXNvdXQnKVxuICBmb2N1c091dCgpIHtcbiAgICB0aGlzLm9uVG91Y2hlZEhhbmRsZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1RlbXBsYXRlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgVGVtcGxhdGVSZWY7XG4gIH1cblxuICAvKipcbiAgICogcGxhY2Vob2xkZXIgZGVjbGFyYXRpb25zLiBSZXBsYWNlZCBieSB0aGUgZnVuY3Rpb25zIHByb3ZpZGVkIHRvIGByZWdpc3Rlck9uQ2hhbmdlYCBhbmQgYHJlZ2lzdGVyT25Ub3VjaGVkYFxuICAgKi9cbiAgcHJvdGVjdGVkIG9uQ2hhbmdlSGFuZGxlciA9IChfOiBhbnkpID0+IHt9O1xuICBwcm90ZWN0ZWQgb25Ub3VjaGVkSGFuZGxlciA9ICgpID0+IHt9O1xufVxuIl19
@@ -0,0 +1,18 @@
1
+ // modules
2
+ import { NgModule } from '@angular/core';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { CommonModule } from '@angular/common';
5
+ // imports
6
+ import { Select } from './select.component';
7
+ import { Option } from './option.directive';
8
+ import { OptGroup } from './optgroup.directive';
9
+ export class SelectModule {
10
+ }
11
+ SelectModule.decorators = [
12
+ { type: NgModule, args: [{
13
+ declarations: [Select, Option, OptGroup],
14
+ exports: [Select, Option, OptGroup],
15
+ imports: [CommonModule, FormsModule]
16
+ },] }
17
+ ];
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2NvbXBvbmVudHMvc2VsZWN0L3NlbGVjdC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsVUFBVTtBQUNWLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxVQUFVO0FBQ1YsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzVDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFPaEQsTUFBTSxPQUFPLFlBQVk7OztZQUx4QixRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLENBQUM7Z0JBQ3hDLE9BQU8sRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDO2dCQUNuQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO2FBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gbW9kdWxlc1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLy8gaW1wb3J0c1xuaW1wb3J0IHsgU2VsZWN0IH0gZnJvbSAnLi9zZWxlY3QuY29tcG9uZW50JztcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gJy4vb3B0aW9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBPcHRHcm91cCB9IGZyb20gJy4vb3B0Z3JvdXAuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbU2VsZWN0LCBPcHRpb24sIE9wdEdyb3VwXSxcbiAgZXhwb3J0czogW1NlbGVjdCwgT3B0aW9uLCBPcHRHcm91cF0sXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIEZvcm1zTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,40 @@
1
+ export class AlertHelper {
2
+ hideAlert(control) {
3
+ control.shown = false;
4
+ }
5
+ showAlert(control) {
6
+ control.shown = true;
7
+ }
8
+ setAlertsForControl(control, alert) {
9
+ control.alerts.push(alert);
10
+ }
11
+ clearAlertsForControl(control) {
12
+ control.alerts.splice(0);
13
+ control.alert = '';
14
+ }
15
+ evaluateControlAlerts(control) {
16
+ let messageValue = '';
17
+ control.alerts.forEach((message) => {
18
+ message.reEvaluateAlertExpression();
19
+ if (message.shown === true) {
20
+ messageValue = message.alertMessage;
21
+ }
22
+ else {
23
+ messageValue = '';
24
+ }
25
+ });
26
+ control.alert = messageValue;
27
+ // if (control.message && control.disable) {
28
+ // control.disable();
29
+ // // control.setValue(null);
30
+ // }
31
+ }
32
+ setUpReEvaluationWhenValueChanges(control) {
33
+ if (control.updateAlert) {
34
+ control.valueChanges.subscribe((val) => {
35
+ control.updateAlert();
36
+ });
37
+ }
38
+ }
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxlcnQtaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2Zvcm0tZW50cnkvY29udHJvbC1hbGVydHMvYWxlcnQtaGVscGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxNQUFNLE9BQU8sV0FBVztJQUNmLFNBQVMsQ0FBQyxPQUFjO1FBQzdCLE9BQU8sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ3hCLENBQUM7SUFFTSxTQUFTLENBQUMsT0FBYztRQUM3QixPQUFPLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRU0sbUJBQW1CLENBQUMsT0FBeUIsRUFBRSxLQUFZO1FBQ2hFLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxPQUF5QjtRQUNwRCxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixPQUFPLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU0scUJBQXFCLENBQUMsT0FBeUI7UUFDcEQsSUFBSSxZQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDakMsT0FBTyxDQUFDLHlCQUF5QixFQUFFLENBQUM7WUFDcEMsSUFBSSxPQUFPLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtnQkFDMUIsWUFBWSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUM7YUFDckM7aUJBQU07Z0JBQ0wsWUFBWSxHQUFHLEVBQUUsQ0FBQzthQUNuQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLEtBQUssR0FBRyxZQUFZLENBQUM7UUFDN0IsNENBQTRDO1FBQzVDLHlCQUF5QjtRQUN6QixpQ0FBaUM7UUFDakMsSUFBSTtJQUNOLENBQUM7SUFFTSxpQ0FBaUMsQ0FBQyxPQUF5QjtRQUNoRSxJQUFJLE9BQU8sQ0FBQyxXQUFXLEVBQUU7WUFDdkIsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDckMsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYW5HZW5lcmF0ZUFsZXJ0LCBBbGVydCB9IGZyb20gJy4vY2FuLWdlbmVyYXRlLWFsZXJ0JztcbmV4cG9ydCBjbGFzcyBBbGVydEhlbHBlciB7XG4gIHB1YmxpYyBoaWRlQWxlcnQoY29udHJvbDogQWxlcnQpIHtcbiAgICBjb250cm9sLnNob3duID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2hvd0FsZXJ0KGNvbnRyb2w6IEFsZXJ0KSB7XG4gICAgY29udHJvbC5zaG93biA9IHRydWU7XG4gIH1cblxuICBwdWJsaWMgc2V0QWxlcnRzRm9yQ29udHJvbChjb250cm9sOiBDYW5HZW5lcmF0ZUFsZXJ0LCBhbGVydDogQWxlcnQpIHtcbiAgICBjb250cm9sLmFsZXJ0cy5wdXNoKGFsZXJ0KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckFsZXJ0c0ZvckNvbnRyb2woY29udHJvbDogQ2FuR2VuZXJhdGVBbGVydCkge1xuICAgIGNvbnRyb2wuYWxlcnRzLnNwbGljZSgwKTtcbiAgICBjb250cm9sLmFsZXJ0ID0gJyc7XG4gIH1cblxuICBwdWJsaWMgZXZhbHVhdGVDb250cm9sQWxlcnRzKGNvbnRyb2w6IENhbkdlbmVyYXRlQWxlcnQpIHtcbiAgICBsZXQgbWVzc2FnZVZhbHVlID0gJyc7XG4gICAgY29udHJvbC5hbGVydHMuZm9yRWFjaCgobWVzc2FnZSkgPT4ge1xuICAgICAgbWVzc2FnZS5yZUV2YWx1YXRlQWxlcnRFeHByZXNzaW9uKCk7XG4gICAgICBpZiAobWVzc2FnZS5zaG93biA9PT0gdHJ1ZSkge1xuICAgICAgICBtZXNzYWdlVmFsdWUgPSBtZXNzYWdlLmFsZXJ0TWVzc2FnZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG1lc3NhZ2VWYWx1ZSA9ICcnO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udHJvbC5hbGVydCA9IG1lc3NhZ2VWYWx1ZTtcbiAgICAvLyBpZiAoY29udHJvbC5tZXNzYWdlICYmIGNvbnRyb2wuZGlzYWJsZSkge1xuICAgIC8vICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICAvLyAgICAgLy8gY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICAvLyB9XG4gIH1cblxuICBwdWJsaWMgc2V0VXBSZUV2YWx1YXRpb25XaGVuVmFsdWVDaGFuZ2VzKGNvbnRyb2w6IENhbkdlbmVyYXRlQWxlcnQpIHtcbiAgICBpZiAoY29udHJvbC51cGRhdGVBbGVydCkge1xuICAgICAgY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgICAgY29udHJvbC51cGRhdGVBbGVydCgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWdlbmVyYXRlLWFsZXJ0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvZm9ybS1lbnRyeS9jb250cm9sLWFsZXJ0cy9jYW4tZ2VuZXJhdGUtYWxlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGludGVyZmFjZSBDYW5HZW5lcmF0ZUFsZXJ0IHtcbiAgYWxlcnRzOiBBbGVydFtdO1xuICBhbGVydDogc3RyaW5nO1xuICB2YWx1ZUNoYW5nZXM/OiBPYnNlcnZhYmxlPGFueT47XG4gIHNldEFsZXJ0Rm4obmV3TWVzc2FnZTogQWxlcnQpO1xuICBjbGVhck1lc3NhZ2VGbnMoKTtcbiAgdXBkYXRlQWxlcnQoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbGVydCB7XG4gIHNob3duOiBib29sZWFuO1xuICBhbGVydFdoZW5FeHByZXNzaW9uOiBzdHJpbmc7XG4gIGFsZXJ0TWVzc2FnZTogc3RyaW5nO1xuICByZUV2YWx1YXRlQWxlcnRFeHByZXNzaW9uOiBFdmFsdWF0ZUV4cHJlc3Npb25Gbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZUV4cHJlc3Npb25GbiB7XG4gICgpO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWNhbGN1bGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2Zvcm0tZW50cnkvY29udHJvbC1jYWxjdWxhdG9ycy9jYW4tY2FsY3VsYXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIENhbkNhbGN1bGF0ZSB7XG4gIGNhbGN1bGF0b3I6IEZ1bmN0aW9uO1xuICBzZXRDYWxjdWxhdG9yRm4obmV3Q2FsY3VsYXRvcjogRnVuY3Rpb24pO1xuICB1cGRhdGVDYWxjdWxhdGVkVmFsdWUoKTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWRpc2FibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9mb3JtLWVudHJ5L2NvbnRyb2wtaGlkZXJzLWRpc2FibGVycy9jYW4tZGlzYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbkRpc2FibGUge1xuICBkaXNhYmxlcnM6IERpc2FibGVyW107XG4gIGRpc2FibGVkOiBib29sZWFuO1xuICB2YWx1ZUNoYW5nZXM/OiBPYnNlcnZhYmxlPGFueT47XG4gIGRpc2FibGUoKTtcbiAgZW5hYmxlKCk7XG4gIHNldERpc2FibGluZ0ZuKG5ld0hpZGVyOiBEaXNhYmxlcik7XG4gIGNsZWFyRGlzYWJsaW5nRm5zKCk7XG4gIHVwZGF0ZURpc2FibGVkU3RhdGUoKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEaXNhYmxlciB7XG4gIHRvRGlzYWJsZTogYm9vbGVhbjtcbiAgZGlzYWJsZVdoZW5FeHByZXNzaW9uOiBzdHJpbmc7XG4gIHJlRXZhbHVhdGVEaXNhYmxpbmdFeHByZXNzaW9uOiBFdmFsdWF0ZUV4cHJlc3Npb25Gbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZUV4cHJlc3Npb25GbiB7XG4gICgpO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWhpZGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9mb3JtLWVudHJ5L2NvbnRyb2wtaGlkZXJzLWRpc2FibGVycy9jYW4taGlkZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBFdmFsdWF0ZUV4cHJlc3Npb25GbiB9IGZyb20gJy4vY2FuLWRpc2FibGUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENhbkhpZGUge1xuICBoaWRlcnM6IEhpZGVyW107XG4gIGhpZGRlbjogYm9vbGVhbjtcbiAgZGlzYWJsZWQ/OiBib29sZWFuO1xuICB2YWx1ZUNoYW5nZXM/OiBPYnNlcnZhYmxlPGFueT47XG4gIGRpc2FibGU/KCk7XG4gIGhpZGUoKTtcbiAgc2hvdygpO1xuICBzZXRIaWRpbmdGbihuZXdIaWRlcjogSGlkZXIpO1xuICBjbGVhckhpZGluZ0ZucygpO1xuICB1cGRhdGVIaWRkZW5TdGF0ZSgpO1xuICBzZXRWYWx1ZT8odmFsdWU6IGFueSk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGlkZXIge1xuICB0b0hpZGU6IGJvb2xlYW47XG4gIGhpZGVXaGVuRXhwcmVzc2lvbjogc3RyaW5nO1xuICByZUV2YWx1YXRlSGlkaW5nRXhwcmVzc2lvbjogRXZhbHVhdGVFeHByZXNzaW9uRm47XG59XG4iXX0=
@@ -0,0 +1,33 @@
1
+ export class DisablerHelper {
2
+ setDisablerForControl(control, disabler) {
3
+ control.disablers.push(disabler);
4
+ }
5
+ clearDisablersForControl(control) {
6
+ control.disablers.splice(0);
7
+ control.disable();
8
+ }
9
+ evaluateControlDisablers(control) {
10
+ let toDisable = false;
11
+ control.disablers.forEach((hider) => {
12
+ hider.reEvaluateDisablingExpression();
13
+ if (hider.toDisable === true) {
14
+ toDisable = true;
15
+ }
16
+ });
17
+ // console.log('Control', control);
18
+ if (toDisable) {
19
+ control.disable();
20
+ }
21
+ else {
22
+ control.enable();
23
+ }
24
+ }
25
+ setUpReEvaluationWhenValueChanges(control) {
26
+ if (control.updateDisabledState) {
27
+ control.valueChanges.subscribe((val) => {
28
+ control.updateDisabledState();
29
+ });
30
+ }
31
+ }
32
+ }
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzYWJsZXItaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvZm9ybS1lbnRyeS9jb250cm9sLWhpZGVycy1kaXNhYmxlcnMvZGlzYWJsZXItaGVscGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE1BQU0sT0FBTyxjQUFjO0lBQ2xCLHFCQUFxQixDQUFDLE9BQW1CLEVBQUUsUUFBa0I7UUFDbEUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLHdCQUF3QixDQUFDLE9BQW1CO1FBQ2pELE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBRU0sd0JBQXdCLENBQUMsT0FBbUI7UUFDakQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDbEMsS0FBSyxDQUFDLDZCQUE2QixFQUFFLENBQUM7WUFDdEMsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtnQkFDNUIsU0FBUyxHQUFHLElBQUksQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsbUNBQW1DO1FBRW5DLElBQUksU0FBUyxFQUFFO1lBQ2IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1NBQ25CO2FBQU07WUFDTCxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRU0saUNBQWlDLENBQUMsT0FBbUI7UUFDMUQsSUFBSSxPQUFPLENBQUMsbUJBQW1CLEVBQUU7WUFDL0IsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDckMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUM7WUFDaEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhbkRpc2FibGUsIERpc2FibGVyIH0gZnJvbSAnLi9jYW4tZGlzYWJsZSc7XG5leHBvcnQgY2xhc3MgRGlzYWJsZXJIZWxwZXIge1xuICBwdWJsaWMgc2V0RGlzYWJsZXJGb3JDb250cm9sKGNvbnRyb2w6IENhbkRpc2FibGUsIGRpc2FibGVyOiBEaXNhYmxlcikge1xuICAgIGNvbnRyb2wuZGlzYWJsZXJzLnB1c2goZGlzYWJsZXIpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyRGlzYWJsZXJzRm9yQ29udHJvbChjb250cm9sOiBDYW5EaXNhYmxlKSB7XG4gICAgY29udHJvbC5kaXNhYmxlcnMuc3BsaWNlKDApO1xuICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xuICB9XG5cbiAgcHVibGljIGV2YWx1YXRlQ29udHJvbERpc2FibGVycyhjb250cm9sOiBDYW5EaXNhYmxlKSB7XG4gICAgbGV0IHRvRGlzYWJsZSA9IGZhbHNlO1xuICAgIGNvbnRyb2wuZGlzYWJsZXJzLmZvckVhY2goKGhpZGVyKSA9PiB7XG4gICAgICBoaWRlci5yZUV2YWx1YXRlRGlzYWJsaW5nRXhwcmVzc2lvbigpO1xuICAgICAgaWYgKGhpZGVyLnRvRGlzYWJsZSA9PT0gdHJ1ZSkge1xuICAgICAgICB0b0Rpc2FibGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gY29uc29sZS5sb2coJ0NvbnRyb2wnLCBjb250cm9sKTtcblxuICAgIGlmICh0b0Rpc2FibGUpIHtcbiAgICAgIGNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb250cm9sLmVuYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRVcFJlRXZhbHVhdGlvbldoZW5WYWx1ZUNoYW5nZXMoY29udHJvbDogQ2FuRGlzYWJsZSkge1xuICAgIGlmIChjb250cm9sLnVwZGF0ZURpc2FibGVkU3RhdGUpIHtcbiAgICAgIGNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICAgIGNvbnRyb2wudXBkYXRlRGlzYWJsZWRTdGF0ZSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,40 @@
1
+ export class HiderHelper {
2
+ hideControl(control) {
3
+ control.hidden = true;
4
+ if (control.disable) {
5
+ control.disable();
6
+ }
7
+ }
8
+ showControl(control) {
9
+ control.hidden = false;
10
+ }
11
+ setHiderForControl(control, hider) {
12
+ control.hiders.push(hider);
13
+ }
14
+ clearHidersForControl(control) {
15
+ control.hiders.splice(0);
16
+ control.hidden = false;
17
+ }
18
+ evaluateControlHiders(control) {
19
+ let hiddenValue = false;
20
+ control.hiders.forEach((hider) => {
21
+ hider.reEvaluateHidingExpression();
22
+ if (hider.toHide === true) {
23
+ hiddenValue = true;
24
+ }
25
+ });
26
+ control.hidden = hiddenValue;
27
+ if (control.hidden && control.disable) {
28
+ control.disable();
29
+ // control.setValue(null);
30
+ }
31
+ }
32
+ setUpReEvaluationWhenValueChanges(control) {
33
+ if (control.updateHiddenState) {
34
+ control.valueChanges.subscribe((val) => {
35
+ control.updateHiddenState();
36
+ });
37
+ }
38
+ }
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGlkZXItaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1mb3JtZW50cnkvc3JjL2Zvcm0tZW50cnkvY29udHJvbC1oaWRlcnMtZGlzYWJsZXJzL2hpZGVyLWhlbHBlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsTUFBTSxPQUFPLFdBQVc7SUFDZixXQUFXLENBQUMsT0FBZ0I7UUFDakMsT0FBTyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ25CLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFTSxXQUFXLENBQUMsT0FBZ0I7UUFDakMsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVNLGtCQUFrQixDQUFDLE9BQWdCLEVBQUUsS0FBWTtRQUN0RCxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0scUJBQXFCLENBQUMsT0FBZ0I7UUFDM0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsT0FBTyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVNLHFCQUFxQixDQUFDLE9BQWdCO1FBQzNDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixPQUFPLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1lBQy9CLEtBQUssQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1lBQ25DLElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxJQUFJLEVBQUU7Z0JBQ3pCLFdBQVcsR0FBRyxJQUFJLENBQUM7YUFDcEI7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUVILE9BQU8sQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDO1FBQzdCLElBQUksT0FBTyxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1lBQ3JDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQiwwQkFBMEI7U0FDM0I7SUFDSCxDQUFDO0lBRU0saUNBQWlDLENBQUMsT0FBZ0I7UUFDdkQsSUFBSSxPQUFPLENBQUMsaUJBQWlCLEVBQUU7WUFDN0IsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDckMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUM7WUFDOUIsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENhbkhpZGUsIEhpZGVyIH0gZnJvbSAnLi9jYW4taGlkZSc7XG5leHBvcnQgY2xhc3MgSGlkZXJIZWxwZXIge1xuICBwdWJsaWMgaGlkZUNvbnRyb2woY29udHJvbDogQ2FuSGlkZSkge1xuICAgIGNvbnRyb2wuaGlkZGVuID0gdHJ1ZTtcbiAgICBpZiAoY29udHJvbC5kaXNhYmxlKSB7XG4gICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2hvd0NvbnRyb2woY29udHJvbDogQ2FuSGlkZSkge1xuICAgIGNvbnRyb2wuaGlkZGVuID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2V0SGlkZXJGb3JDb250cm9sKGNvbnRyb2w6IENhbkhpZGUsIGhpZGVyOiBIaWRlcikge1xuICAgIGNvbnRyb2wuaGlkZXJzLnB1c2goaGlkZXIpO1xuICB9XG5cbiAgcHVibGljIGNsZWFySGlkZXJzRm9yQ29udHJvbChjb250cm9sOiBDYW5IaWRlKSB7XG4gICAgY29udHJvbC5oaWRlcnMuc3BsaWNlKDApO1xuICAgIGNvbnRyb2wuaGlkZGVuID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgZXZhbHVhdGVDb250cm9sSGlkZXJzKGNvbnRyb2w6IENhbkhpZGUpIHtcbiAgICBsZXQgaGlkZGVuVmFsdWUgPSBmYWxzZTtcbiAgICBjb250cm9sLmhpZGVycy5mb3JFYWNoKChoaWRlcikgPT4ge1xuICAgICAgaGlkZXIucmVFdmFsdWF0ZUhpZGluZ0V4cHJlc3Npb24oKTtcbiAgICAgIGlmIChoaWRlci50b0hpZGUgPT09IHRydWUpIHtcbiAgICAgICAgaGlkZGVuVmFsdWUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udHJvbC5oaWRkZW4gPSBoaWRkZW5WYWx1ZTtcbiAgICBpZiAoY29udHJvbC5oaWRkZW4gJiYgY29udHJvbC5kaXNhYmxlKSB7XG4gICAgICBjb250cm9sLmRpc2FibGUoKTtcbiAgICAgIC8vIGNvbnRyb2wuc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNldFVwUmVFdmFsdWF0aW9uV2hlblZhbHVlQ2hhbmdlcyhjb250cm9sOiBDYW5IaWRlKSB7XG4gICAgaWYgKGNvbnRyb2wudXBkYXRlSGlkZGVuU3RhdGUpIHtcbiAgICAgIGNvbnRyb2wudmFsdWVDaGFuZ2VzLnN1YnNjcmliZSgodmFsKSA9PiB7XG4gICAgICAgIGNvbnRyb2wudXBkYXRlSGlkZGVuU3RhdGUoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuIl19
@@ -0,0 +1,30 @@
1
+ import { Injectable } from '@angular/core';
2
+ export class DataSources {
3
+ constructor() {
4
+ this._dataSources = {};
5
+ }
6
+ get dataSources() {
7
+ return this._dataSources;
8
+ }
9
+ registerDataSource(key, dataSource, unWrap = false) {
10
+ if (unWrap) {
11
+ // eslint-disable-next-line guard-for-in
12
+ for (const o in dataSource) {
13
+ // console.log('registering', o, dataSource[o]);
14
+ this.registerDataSource(o, dataSource[o], false);
15
+ }
16
+ }
17
+ if (this.dataSources[key]) {
18
+ console.warn('Overriding registered data source', key);
19
+ }
20
+ this._dataSources[key] = dataSource;
21
+ }
22
+ clearDataSource(key) {
23
+ delete this._dataSources[key];
24
+ }
25
+ }
26
+ DataSources.decorators = [
27
+ { type: Injectable }
28
+ ];
29
+ DataSources.ctorParameters = () => [];
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YS1zb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWZvcm1lbnRyeS9zcmMvZm9ybS1lbnRyeS9kYXRhLXNvdXJjZXMvZGF0YS1zb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHM0MsTUFBTSxPQUFPLFdBQVc7SUFFdEI7UUFEUSxpQkFBWSxHQUFRLEVBQUUsQ0FBQztJQUNoQixDQUFDO0lBRWhCLElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsa0JBQWtCLENBQUMsR0FBVyxFQUFFLFVBQWUsRUFBRSxNQUFNLEdBQUcsS0FBSztRQUM3RCxJQUFJLE1BQU0sRUFBRTtZQUNWLHdDQUF3QztZQUN4QyxLQUFLLE1BQU0sQ0FBQyxJQUFJLFVBQVUsRUFBRTtnQkFDMUIsZ0RBQWdEO2dCQUNoRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUNsRDtTQUNGO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsZUFBZSxDQUFDLEdBQVc7UUFDekIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7OztZQXpCRixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGF0YVNvdXJjZXMge1xuICBwcml2YXRlIF9kYXRhU291cmNlczogYW55ID0ge307XG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBnZXQgZGF0YVNvdXJjZXMoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YVNvdXJjZXM7XG4gIH1cblxuICByZWdpc3RlckRhdGFTb3VyY2Uoa2V5OiBzdHJpbmcsIGRhdGFTb3VyY2U6IGFueSwgdW5XcmFwID0gZmFsc2UpIHtcbiAgICBpZiAodW5XcmFwKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgZ3VhcmQtZm9yLWluXG4gICAgICBmb3IgKGNvbnN0IG8gaW4gZGF0YVNvdXJjZSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygncmVnaXN0ZXJpbmcnLCBvLCBkYXRhU291cmNlW29dKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlckRhdGFTb3VyY2UobywgZGF0YVNvdXJjZVtvXSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy5kYXRhU291cmNlc1trZXldKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ092ZXJyaWRpbmcgcmVnaXN0ZXJlZCBkYXRhIHNvdXJjZScsIGtleSk7XG4gICAgfVxuICAgIHRoaXMuX2RhdGFTb3VyY2VzW2tleV0gPSBkYXRhU291cmNlO1xuICB9XG5cbiAgY2xlYXJEYXRhU291cmNlKGtleTogc3RyaW5nKSB7XG4gICAgZGVsZXRlIHRoaXMuX2RhdGFTb3VyY2VzW2tleV07XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,104 @@
1
+ import { Option } from '../question-models/select-option';
2
+ import { BehaviorSubject, of } from 'rxjs';
3
+ export class DummyDataSource {
4
+ constructor() {
5
+ this.returnErrorOnNext = false;
6
+ }
7
+ resolveSelectedValue(value) {
8
+ let selectOptions = this.sampleData();
9
+ selectOptions = selectOptions.map(function (obj) {
10
+ const option = new Option({
11
+ label: obj.label,
12
+ value: obj.concept
13
+ });
14
+ return option;
15
+ });
16
+ selectOptions = selectOptions.filter((option) => option.value === value);
17
+ const test = new BehaviorSubject([]);
18
+ if (!this.returnErrorOnNext) {
19
+ test.next(selectOptions[0]);
20
+ }
21
+ else {
22
+ test.error(new Error('Error loading Options'));
23
+ }
24
+ return test.asObservable();
25
+ }
26
+ fileUpload(url) {
27
+ return of({ image: '' });
28
+ }
29
+ fetchFile(url) {
30
+ return of({ image: '' });
31
+ }
32
+ searchOptions(searchText) {
33
+ let selectOptions = this.sampleData();
34
+ selectOptions = selectOptions.map(function (obj) {
35
+ const option = new Option({
36
+ label: obj.label,
37
+ value: obj.concept
38
+ });
39
+ return option;
40
+ });
41
+ selectOptions = selectOptions.filter((option) => option.label.indexOf(searchText) !== -1);
42
+ const test = new BehaviorSubject([]);
43
+ if (!this.returnErrorOnNext) {
44
+ test.next(selectOptions);
45
+ }
46
+ else {
47
+ test.error(new Error('Error loading Options'));
48
+ }
49
+ return test.asObservable();
50
+ }
51
+ sampleData() {
52
+ return [
53
+ {
54
+ concept: 'a899e0ac-1350-11df-a1f1-0026b9348838',
55
+ label: 'None'
56
+ },
57
+ {
58
+ concept: 'a8ad1276-1350-11df-a1f1-0026b9348838',
59
+ label: 'Breathlessness'
60
+ },
61
+ {
62
+ concept: 'a892e4b4-1350-11df-a1f1-0026b9348838',
63
+ label: 'Chest pain'
64
+ },
65
+ {
66
+ concept: 'a8afc8b8-1350-11df-a1f1-0026b9348838',
67
+ label: 'Cough = 2 weeks'
68
+ },
69
+ {
70
+ concept: 'd7adae14-c386-49cc-8f7c-765d8ceec566',
71
+ label: 'Fever for = 2 weeks'
72
+ },
73
+ {
74
+ concept: '3f57aafc-7162-41da-a51b-6a804cb6f5e8',
75
+ label: 'New exposure to household contact with TB'
76
+ },
77
+ {
78
+ concept: 'a89807f0-1350-11df-a1f1-0026b9348838',
79
+ label: 'Noticeable Weight loss'
80
+ },
81
+ {
82
+ concept: 'e1862fef-68ed-4df4-90dd-a00152f719aa',
83
+ label: 'Night sweats = 2 weeks'
84
+ },
85
+ {
86
+ concept: 'a8ad462e-1350-11df-a1f1-0026b9348838',
87
+ label: 'Abdomen'
88
+ },
89
+ {
90
+ concept: 'f218c60e-4b54-475a-a4fa-facab9216da8',
91
+ label: 'Groin'
92
+ },
93
+ {
94
+ concept: 'a8a774b0-1350-11df-a1f1-0026b9348838',
95
+ label: 'Joints'
96
+ },
97
+ {
98
+ concept: '4639388c-ee31-4dcf-abb4-ad71253493bb',
99
+ label: 'Neck Kw'
100
+ }
101
+ ];
102
+ }
103
+ }
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHVtbXktZGF0YS1zb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtZm9ybWVudHJ5L3NyYy9mb3JtLWVudHJ5L2RhdGEtc291cmNlcy9kdW1teS1kYXRhLXNvdXJjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFMUQsT0FBTyxFQUFjLGVBQWUsRUFBRSxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFdkQsTUFBTSxPQUFPLGVBQWU7SUFLMUI7UUFGQSxzQkFBaUIsR0FBRyxLQUFLLENBQUM7SUFFWCxDQUFDO0lBRWhCLG9CQUFvQixDQUFDLEtBQUs7UUFDeEIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXRDLGFBQWEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRztZQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQztnQkFDeEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO2dCQUNoQixLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU87YUFDbkIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxLQUFLLENBQUMsQ0FBQztRQUV6RSxNQUFNLElBQUksR0FBeUIsSUFBSSxlQUFlLENBQU0sRUFBRSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRTtZQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO2FBQU07WUFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQztTQUNoRDtRQUVELE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFDRCxVQUFVLENBQUMsR0FBRztRQUNaLE9BQU8sRUFBRSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUNELFNBQVMsQ0FBQyxHQUFHO1FBQ1gsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMzQixDQUFDO0lBQ0QsYUFBYSxDQUFDLFVBQVU7UUFDdEIsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBRXRDLGFBQWEsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsR0FBRztZQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQztnQkFDeEIsS0FBSyxFQUFFLEdBQUcsQ0FBQyxLQUFLO2dCQUNoQixLQUFLLEVBQUUsR0FBRyxDQUFDLE9BQU87YUFDbkIsQ0FBQyxDQUFDO1lBQ0gsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxhQUFhLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FDbEMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNwRCxDQUFDO1FBRUYsTUFBTSxJQUFJLEdBQXlCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDM0IsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUMxQjthQUFNO1lBQ0wsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7U0FDaEQ7UUFFRCxPQUFPLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU87WUFDTDtnQkFDRSxPQUFPLEVBQUUsc0NBQXNDO2dCQUMvQyxLQUFLLEVBQUUsTUFBTTthQUNkO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHNDQUFzQztnQkFDL0MsS0FBSyxFQUFFLGdCQUFnQjthQUN4QjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxzQ0FBc0M7Z0JBQy9DLEtBQUssRUFBRSxZQUFZO2FBQ3BCO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHNDQUFzQztnQkFDL0MsS0FBSyxFQUFFLGlCQUFpQjthQUN6QjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxzQ0FBc0M7Z0JBQy9DLEtBQUssRUFBRSxxQkFBcUI7YUFDN0I7WUFDRDtnQkFDRSxPQUFPLEVBQUUsc0NBQXNDO2dCQUMvQyxLQUFLLEVBQUUsMkNBQTJDO2FBQ25EO1lBQ0Q7Z0JBQ0UsT0FBTyxFQUFFLHNDQUFzQztnQkFDL0MsS0FBSyxFQUFFLHdCQUF3QjthQUNoQztZQUNEO2dCQUNFLE9BQU8sRUFBRSxzQ0FBc0M7Z0JBQy9DLEtBQUssRUFBRSx3QkFBd0I7YUFDaEM7WUFDRDtnQkFDRSxPQUFPLEVBQUUsc0NBQXNDO2dCQUMvQyxLQUFLLEVBQUUsU0FBUzthQUNqQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxzQ0FBc0M7Z0JBQy9DLEtBQUssRUFBRSxPQUFPO2FBQ2Y7WUFDRDtnQkFDRSxPQUFPLEVBQUUsc0NBQXNDO2dCQUMvQyxLQUFLLEVBQUUsUUFBUTthQUNoQjtZQUNEO2dCQUNFLE9BQU8sRUFBRSxzQ0FBc0M7Z0JBQy9DLEtBQUssRUFBRSxTQUFTO2FBQ2pCO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE9wdGlvbiB9IGZyb20gJy4uL3F1ZXN0aW9uLW1vZGVscy9zZWxlY3Qtb3B0aW9uJztcbmltcG9ydCB7IERhdGFTb3VyY2UgfSBmcm9tICcuLi9xdWVzdGlvbi1tb2RlbHMvaW50ZXJmYWNlcy9kYXRhLXNvdXJjZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBCZWhhdmlvclN1YmplY3QsIG9mIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjbGFzcyBEdW1teURhdGFTb3VyY2UgaW1wbGVtZW50cyBEYXRhU291cmNlIHtcbiAgb3B0aW9uczogT2JzZXJ2YWJsZTxPcHRpb25bXT47XG4gIG9wdGlvbjogT2JzZXJ2YWJsZTxPcHRpb24+O1xuICByZXR1cm5FcnJvck9uTmV4dCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICByZXNvbHZlU2VsZWN0ZWRWYWx1ZSh2YWx1ZSk6IE9ic2VydmFibGU8T3B0aW9uPiB7XG4gICAgbGV0IHNlbGVjdE9wdGlvbnMgPSB0aGlzLnNhbXBsZURhdGEoKTtcblxuICAgIHNlbGVjdE9wdGlvbnMgPSBzZWxlY3RPcHRpb25zLm1hcChmdW5jdGlvbiAob2JqKSB7XG4gICAgICBjb25zdCBvcHRpb24gPSBuZXcgT3B0aW9uKHtcbiAgICAgICAgbGFiZWw6IG9iai5sYWJlbCxcbiAgICAgICAgdmFsdWU6IG9iai5jb25jZXB0XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvcHRpb247XG4gICAgfSk7XG5cbiAgICBzZWxlY3RPcHRpb25zID0gc2VsZWN0T3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09PSB2YWx1ZSk7XG5cbiAgICBjb25zdCB0ZXN0OiBCZWhhdmlvclN1YmplY3Q8YW55PiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8YW55PihbXSk7XG4gICAgaWYgKCF0aGlzLnJldHVybkVycm9yT25OZXh0KSB7XG4gICAgICB0ZXN0Lm5leHQoc2VsZWN0T3B0aW9uc1swXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRlc3QuZXJyb3IobmV3IEVycm9yKCdFcnJvciBsb2FkaW5nIE9wdGlvbnMnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRlc3QuYXNPYnNlcnZhYmxlKCk7XG4gIH1cbiAgZmlsZVVwbG9hZCh1cmwpIHtcbiAgICByZXR1cm4gb2YoeyBpbWFnZTogJycgfSk7XG4gIH1cbiAgZmV0Y2hGaWxlKHVybCkge1xuICAgIHJldHVybiBvZih7IGltYWdlOiAnJyB9KTtcbiAgfVxuICBzZWFyY2hPcHRpb25zKHNlYXJjaFRleHQpOiBPYnNlcnZhYmxlPE9wdGlvbltdPiB7XG4gICAgbGV0IHNlbGVjdE9wdGlvbnMgPSB0aGlzLnNhbXBsZURhdGEoKTtcblxuICAgIHNlbGVjdE9wdGlvbnMgPSBzZWxlY3RPcHRpb25zLm1hcChmdW5jdGlvbiAob2JqKSB7XG4gICAgICBjb25zdCBvcHRpb24gPSBuZXcgT3B0aW9uKHtcbiAgICAgICAgbGFiZWw6IG9iai5sYWJlbCxcbiAgICAgICAgdmFsdWU6IG9iai5jb25jZXB0XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBvcHRpb247XG4gICAgfSk7XG5cbiAgICBzZWxlY3RPcHRpb25zID0gc2VsZWN0T3B0aW9ucy5maWx0ZXIoXG4gICAgICAob3B0aW9uKSA9PiBvcHRpb24ubGFiZWwuaW5kZXhPZihzZWFyY2hUZXh0KSAhPT0gLTFcbiAgICApO1xuXG4gICAgY29uc3QgdGVzdDogQmVoYXZpb3JTdWJqZWN0PGFueT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueT4oW10pO1xuICAgIGlmICghdGhpcy5yZXR1cm5FcnJvck9uTmV4dCkge1xuICAgICAgdGVzdC5uZXh0KHNlbGVjdE9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXN0LmVycm9yKG5ldyBFcnJvcignRXJyb3IgbG9hZGluZyBPcHRpb25zJykpO1xuICAgIH1cblxuICAgIHJldHVybiB0ZXN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgc2FtcGxlRGF0YSgpOiBhbnkge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGNvbmNlcHQ6ICdhODk5ZTBhYy0xMzUwLTExZGYtYTFmMS0wMDI2YjkzNDg4MzgnLFxuICAgICAgICBsYWJlbDogJ05vbmUnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjb25jZXB0OiAnYThhZDEyNzYtMTM1MC0xMWRmLWExZjEtMDAyNmI5MzQ4ODM4JyxcbiAgICAgICAgbGFiZWw6ICdCcmVhdGhsZXNzbmVzcydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNvbmNlcHQ6ICdhODkyZTRiNC0xMzUwLTExZGYtYTFmMS0wMDI2YjkzNDg4MzgnLFxuICAgICAgICBsYWJlbDogJ0NoZXN0IHBhaW4nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjb25jZXB0OiAnYThhZmM4YjgtMTM1MC0xMWRmLWExZjEtMDAyNmI5MzQ4ODM4JyxcbiAgICAgICAgbGFiZWw6ICdDb3VnaCA9IDIgd2Vla3MnXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjb25jZXB0OiAnZDdhZGFlMTQtYzM4Ni00OWNjLThmN2MtNzY1ZDhjZWVjNTY2JyxcbiAgICAgICAgbGFiZWw6ICdGZXZlciBmb3IgPSAyIHdlZWtzJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY29uY2VwdDogJzNmNTdhYWZjLTcxNjItNDFkYS1hNTFiLTZhODA0Y2I2ZjVlOCcsXG4gICAgICAgIGxhYmVsOiAnTmV3IGV4cG9zdXJlIHRvIGhvdXNlaG9sZCBjb250YWN0IHdpdGggVEInXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjb25jZXB0OiAnYTg5ODA3ZjAtMTM1MC0xMWRmLWExZjEtMDAyNmI5MzQ4ODM4JyxcbiAgICAgICAgbGFiZWw6ICdOb3RpY2VhYmxlIFdlaWdodCBsb3NzJ1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgY29uY2VwdDogJ2UxODYyZmVmLTY4ZWQtNGRmNC05MGRkLWEwMDE1MmY3MTlhYScsXG4gICAgICAgIGxhYmVsOiAnTmlnaHQgc3dlYXRzID0gMiB3ZWVrcydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNvbmNlcHQ6ICdhOGFkNDYyZS0xMzUwLTExZGYtYTFmMS0wMDI2YjkzNDg4MzgnLFxuICAgICAgICBsYWJlbDogJ0FiZG9tZW4nXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjb25jZXB0OiAnZjIxOGM2MGUtNGI1NC00NzVhLWE0ZmEtZmFjYWI5MjE2ZGE4JyxcbiAgICAgICAgbGFiZWw6ICdHcm9pbidcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNvbmNlcHQ6ICdhOGE3NzRiMC0xMzUwLTExZGYtYTFmMS0wMDI2YjkzNDg4MzgnLFxuICAgICAgICBsYWJlbDogJ0pvaW50cydcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGNvbmNlcHQ6ICc0NjM5Mzg4Yy1lZTMxLTRkY2YtYWJiNC1hZDcxMjUzNDkzYmInLFxuICAgICAgICBsYWJlbDogJ05lY2sgS3cnXG4gICAgICB9XG4gICAgXTtcbiAgfVxufVxuIl19