mis-crystal-design-system 18.0.5 → 18.0.7-test

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 (545) hide show
  1. package/action-list/action-list.component.d.ts +1 -1
  2. package/analytics/analytics.service.d.ts +1 -1
  3. package/async-search-dropdown/async-dropdown.component.d.ts +3 -2
  4. package/button/button.component.d.ts +1 -1
  5. package/button/button.directive.d.ts +1 -1
  6. package/checkbox/checkbox.component.d.ts +1 -1
  7. package/chip/chip.component.d.ts +1 -1
  8. package/datepicker_v2/models/dp-config.model.d.ts +1 -1
  9. package/datepicker_v2/tz-datepicker.directive.d.ts +1 -1
  10. package/datepicker_v2/tz-dp-container/tz-dp-container.component.d.ts +1 -1
  11. package/daterangepicker_v2/models/drp-config.model.d.ts +1 -1
  12. package/daterangepicker_v2/tz-daterangepicker.directive.d.ts +1 -1
  13. package/daterangepicker_v2/tz-drp-container/tz-drp-container.component.d.ts +1 -1
  14. package/drawer/drawer-body/drawer-body.component.d.ts +1 -1
  15. package/dropdown/calculate-container-height.directive.d.ts +1 -1
  16. package/dropdown/dropdown.component.d.ts +1 -1
  17. package/dropdown/dropdown.module.d.ts +1 -1
  18. package/dynamic-form/dynamic-form.component.d.ts +1 -1
  19. package/esm2022/action-list/action-list.component.mjs +363 -0
  20. package/{esm2020 → esm2022}/action-list/action-list.module.mjs +5 -5
  21. package/{esm2020 → esm2022}/analytics/analytics.module.mjs +5 -5
  22. package/esm2022/analytics/analytics.service.mjs +64 -0
  23. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +536 -0
  24. package/{esm2020 → esm2022}/async-search-dropdown/async-dropdown.module.mjs +5 -5
  25. package/esm2022/button/button.component.mjs +88 -0
  26. package/esm2022/button/button.directive.mjs +61 -0
  27. package/{esm2020 → esm2022}/button/button.module.mjs +5 -5
  28. package/esm2022/checkbox/checkbox.component.mjs +124 -0
  29. package/{esm2020 → esm2022}/checkbox/checkbox.module.mjs +5 -5
  30. package/esm2022/chip/chip.component.mjs +82 -0
  31. package/{esm2020 → esm2022}/chip/chip.module.mjs +5 -5
  32. package/{esm2020 → esm2022}/datepicker_v2/datepicker.module.mjs +5 -5
  33. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +183 -0
  34. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +442 -0
  35. package/{esm2020/daterangepicker_v2 → esm2022/datepicker_v2}/utils/index.mjs +1 -1
  36. package/{esm2020 → esm2022}/daterangepicker_v2/daterangepicker.module.mjs +5 -5
  37. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +165 -0
  38. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +503 -0
  39. package/esm2022/daterangepicker_v2/utils/index.mjs +45 -0
  40. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +59 -0
  41. package/{esm2020 → esm2022}/drawer/drawer-ref.mjs +4 -4
  42. package/{esm2020 → esm2022}/drawer/drawer.module.mjs +5 -5
  43. package/{esm2020 → esm2022}/drawer/drawer.service.mjs +5 -5
  44. package/esm2022/dropdown/calculate-container-height.directive.mjs +41 -0
  45. package/esm2022/dropdown/dropdown.component.mjs +464 -0
  46. package/{esm2020 → esm2022}/dropdown/dropdown.module.mjs +6 -6
  47. package/esm2022/dynamic-form/dynamic-form.component.mjs +1093 -0
  48. package/{esm2020 → esm2022}/dynamic-form/dynamic-form.module.mjs +13 -13
  49. package/esm2022/fab/fab.component.mjs +145 -0
  50. package/{esm2020 → esm2022}/fab/fab.module.mjs +5 -5
  51. package/esm2022/filter/filter-panel/filter-panel.component.mjs +396 -0
  52. package/{esm2020 → esm2022}/filter/filters.module.mjs +17 -17
  53. package/esm2022/filter/has-value.pipe.mjs +31 -0
  54. package/{esm2020 → esm2022}/input/directives/input/input.directive.mjs +6 -6
  55. package/{fesm2020/mis-crystal-design-system-input.mjs → esm2022/input/mis-input.component.mjs} +49 -109
  56. package/{esm2020 → esm2022}/input/mis-input.module.mjs +5 -5
  57. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +89 -0
  58. package/{esm2020 → esm2022}/input-stepper/input-stepper.module.mjs +5 -5
  59. package/esm2022/loader/loader.component.mjs +25 -0
  60. package/{esm2020 → esm2022}/loader/loader.module.mjs +5 -5
  61. package/esm2022/menu/menu-close.directive.mjs +25 -0
  62. package/{esm2020 → esm2022}/menu/menu.directive.mjs +7 -7
  63. package/{esm2020 → esm2022}/menu/menu.module.mjs +5 -5
  64. package/esm2022/mobile-filter/mobile-filter.component.mjs +180 -0
  65. package/{esm2020 → esm2022}/mobile-filter/mobile-filter.module.mjs +5 -5
  66. package/{esm2020 → esm2022}/modal/modal.module.mjs +5 -5
  67. package/esm2022/modal/modal.service.mjs +70 -0
  68. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +56 -0
  69. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +489 -0
  70. package/{esm2020 → esm2022}/multi-select-dropdown/multi-select-dropdown.module.mjs +5 -5
  71. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +516 -0
  72. package/{esm2020 → esm2022}/nested-multi-select-dropdown/nested-multi-select-dropdown.module.mjs +5 -5
  73. package/esm2022/phone-input/phone-input.component.mjs +72 -0
  74. package/{esm2020 → esm2022}/phone-input/phone-input.module.mjs +5 -5
  75. package/esm2022/radio-button/radio-button.component.mjs +57 -0
  76. package/{esm2020 → esm2022}/radio-button/radio-button.module.mjs +5 -5
  77. package/esm2022/ske-loader/ske-loader.component.mjs +54 -0
  78. package/{esm2020 → esm2022}/ske-loader/ske-loader.module.mjs +5 -5
  79. package/esm2022/slider/slider.component.mjs +46 -0
  80. package/{esm2020 → esm2022}/slider/slider.module.mjs +7 -7
  81. package/esm2022/snackbar/snackbar/snackbar.component.mjs +72 -0
  82. package/{esm2020 → esm2022}/snackbar/snackbar.module.mjs +5 -5
  83. package/esm2022/snackbar/snackbar.service.mjs +47 -0
  84. package/{esm2020 → esm2022}/specificdatepicker/specificdatepicker.module.mjs +5 -5
  85. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +646 -0
  86. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +196 -0
  87. package/esm2022/specificdatepicker/utils/index.mjs +45 -0
  88. package/esm2022/star-rating/star-rating.component.mjs +113 -0
  89. package/{esm2020 → esm2022}/star-rating/star-rating.module.mjs +5 -5
  90. package/esm2022/switch/switch.component.mjs +56 -0
  91. package/{esm2020 → esm2022}/switch/switch.module.mjs +5 -5
  92. package/esm2022/table/custom-table-cell.directive.mjs +42 -0
  93. package/esm2022/table/filter/filter.component.mjs +177 -0
  94. package/esm2022/table/sub-table/sub-table.component.mjs +192 -0
  95. package/esm2022/table/table.component.mjs +486 -0
  96. package/{esm2020 → esm2022}/table/table.module.mjs +5 -5
  97. package/esm2022/timepicker/timepicker.component.mjs +374 -0
  98. package/esm2022/timepicker/timepicker.directive.mjs +69 -0
  99. package/{esm2020 → esm2022}/timepicker/timepicker.module.mjs +5 -5
  100. package/esm2022/timerangepicker/timerangepicker.component.mjs +237 -0
  101. package/{esm2020 → esm2022}/timerangepicker/timerangepicker.module.mjs +5 -5
  102. package/esm2022/toast/toast.component.mjs +51 -0
  103. package/{esm2020 → esm2022}/toast/toast.data.service.mjs +8 -8
  104. package/{esm2020 → esm2022}/toast/toast.module.mjs +5 -5
  105. package/esm2022/toast/toast.service.mjs +91 -0
  106. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +79 -0
  107. package/esm2022/tooltip/tooltip.directive.mjs +143 -0
  108. package/{esm2020 → esm2022}/tooltip/tooltip.module.mjs +5 -5
  109. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +188 -0
  110. package/{esm2020 → esm2022}/virtual-scroll/virtual-scroll.module.mjs +7 -7
  111. package/esm2022/widgets/classes/async-widget.mjs +23 -0
  112. package/{esm2020 → esm2022}/widgets/classes/base-widget.mjs +1 -1
  113. package/esm2022/widgets/classes/sync-widget.mjs +20 -0
  114. package/{esm2020 → esm2022}/widgets/services/widget.service.mjs +5 -5
  115. package/{esm2020 → esm2022}/widgets/widgets.module.mjs +5 -5
  116. package/fab/fab.component.d.ts +4 -4
  117. package/{fesm2020 → fesm2022}/mis-crystal-design-system-action-list.mjs +106 -113
  118. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +1 -0
  119. package/{fesm2020 → fesm2022}/mis-crystal-design-system-analytics.mjs +9 -9
  120. package/{fesm2020 → fesm2022}/mis-crystal-design-system-analytics.mjs.map +1 -1
  121. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +561 -0
  122. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -0
  123. package/fesm2022/mis-crystal-design-system-button.mjs +173 -0
  124. package/fesm2022/mis-crystal-design-system-button.mjs.map +1 -0
  125. package/fesm2022/mis-crystal-design-system-checkbox.mjs +150 -0
  126. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +1 -0
  127. package/fesm2022/mis-crystal-design-system-chip.mjs +108 -0
  128. package/fesm2022/mis-crystal-design-system-chip.mjs.map +1 -0
  129. package/{fesm2020 → fesm2022}/mis-crystal-design-system-datepicker_v2.mjs +133 -140
  130. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +1 -0
  131. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +737 -0
  132. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -0
  133. package/{fesm2020 → fesm2022}/mis-crystal-design-system-drawer.mjs +34 -33
  134. package/{fesm2020 → fesm2022}/mis-crystal-design-system-drawer.mjs.map +1 -1
  135. package/{fesm2020 → fesm2022}/mis-crystal-design-system-dropdown.mjs +177 -186
  136. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +1 -0
  137. package/{fesm2020 → fesm2022}/mis-crystal-design-system-dynamic-form.mjs +441 -456
  138. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +1 -0
  139. package/{fesm2020 → fesm2022}/mis-crystal-design-system-fab.mjs +48 -47
  140. package/fesm2022/mis-crystal-design-system-fab.mjs.map +1 -0
  141. package/{fesm2020 → fesm2022}/mis-crystal-design-system-filter.mjs +113 -120
  142. package/fesm2022/mis-crystal-design-system-filter.mjs.map +1 -0
  143. package/{fesm2020 → fesm2022}/mis-crystal-design-system-input-stepper.mjs +35 -34
  144. package/{fesm2020 → fesm2022}/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  145. package/fesm2022/mis-crystal-design-system-input.mjs +146 -0
  146. package/{fesm2020 → fesm2022}/mis-crystal-design-system-input.mjs.map +1 -1
  147. package/fesm2022/mis-crystal-design-system-loader.mjs +51 -0
  148. package/{fesm2020 → fesm2022}/mis-crystal-design-system-loader.mjs.map +1 -1
  149. package/{fesm2020 → fesm2022}/mis-crystal-design-system-menu.mjs +16 -16
  150. package/{fesm2020 → fesm2022}/mis-crystal-design-system-menu.mjs.map +1 -1
  151. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +205 -0
  152. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +1 -0
  153. package/{fesm2020 → fesm2022}/mis-crystal-design-system-modal.mjs +34 -33
  154. package/{fesm2020 → fesm2022}/mis-crystal-design-system-modal.mjs.map +1 -1
  155. package/{fesm2020 → fesm2022}/mis-crystal-design-system-multi-select-dropdown.mjs +107 -109
  156. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -0
  157. package/{fesm2020 → fesm2022}/mis-crystal-design-system-nested-multi-select-dropdown.mjs +128 -129
  158. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -0
  159. package/{fesm2020 → fesm2022}/mis-crystal-design-system-phone-input.mjs +22 -21
  160. package/{fesm2020 → fesm2022}/mis-crystal-design-system-phone-input.mjs.map +1 -1
  161. package/fesm2022/mis-crystal-design-system-radio-button.mjs +83 -0
  162. package/{fesm2020 → fesm2022}/mis-crystal-design-system-radio-button.mjs.map +1 -1
  163. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +77 -0
  164. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +1 -0
  165. package/fesm2022/mis-crystal-design-system-slider.mjs +80 -0
  166. package/{fesm2020 → fesm2022}/mis-crystal-design-system-slider.mjs.map +1 -1
  167. package/{fesm2020 → fesm2022}/mis-crystal-design-system-snackbar.mjs +32 -32
  168. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +1 -0
  169. package/{fesm2020 → fesm2022}/mis-crystal-design-system-specificdatepicker.mjs +204 -204
  170. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +1 -0
  171. package/{fesm2020 → fesm2022}/mis-crystal-design-system-star-rating.mjs +29 -28
  172. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +1 -0
  173. package/fesm2022/mis-crystal-design-system-switch.mjs +82 -0
  174. package/fesm2022/mis-crystal-design-system-switch.mjs.map +1 -0
  175. package/fesm2022/mis-crystal-design-system-table.mjs +913 -0
  176. package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -0
  177. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timepicker.mjs +78 -74
  178. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timepicker.mjs.map +1 -1
  179. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timerangepicker.mjs +26 -25
  180. package/{fesm2020 → fesm2022}/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  181. package/{fesm2020 → fesm2022}/mis-crystal-design-system-toast.mjs +35 -34
  182. package/{fesm2020 → fesm2022}/mis-crystal-design-system-toast.mjs.map +1 -1
  183. package/{fesm2020 → fesm2022}/mis-crystal-design-system-tooltip.mjs +47 -47
  184. package/{fesm2020 → fesm2022}/mis-crystal-design-system-tooltip.mjs.map +1 -1
  185. package/{fesm2020 → fesm2022}/mis-crystal-design-system-virtual-scroll.mjs +50 -52
  186. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +1 -0
  187. package/{fesm2020 → fesm2022}/mis-crystal-design-system-widgets.mjs +4 -4
  188. package/{fesm2020 → fesm2022}/mis-crystal-design-system-widgets.mjs.map +1 -1
  189. package/filter/filter-panel/filter-panel.component.d.ts +1 -1
  190. package/input/directives/input/input.directive.d.ts +1 -1
  191. package/input/mis-input.component.d.ts +1 -1
  192. package/input-stepper/input-stepper/input-stepper.component.d.ts +1 -1
  193. package/loader/loader.component.d.ts +1 -1
  194. package/menu/menu-close.directive.d.ts +1 -1
  195. package/menu/menu.directive.d.ts +1 -1
  196. package/mobile-filter/mobile-filter.component.d.ts +1 -1
  197. package/modal/module-wrapper/module-wrapper.component.d.ts +1 -1
  198. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +1 -1
  199. package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +1 -1
  200. package/package.json +125 -207
  201. package/phone-input/phone-input.component.d.ts +1 -1
  202. package/radio-button/radio-button.component.d.ts +1 -1
  203. package/ske-loader/ske-loader.component.d.ts +1 -1
  204. package/slider/slider.component.d.ts +1 -1
  205. package/snackbar/snackbar/snackbar.component.d.ts +1 -1
  206. package/specificdatepicker/models/sdp-config.model.d.ts +1 -1
  207. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +1 -1
  208. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +1 -1
  209. package/star-rating/star-rating.component.d.ts +1 -1
  210. package/switch/switch.component.d.ts +1 -1
  211. package/table/custom-table-cell.directive.d.ts +1 -1
  212. package/table/filter/filter.component.d.ts +1 -1
  213. package/table/sub-table/sub-table.component.d.ts +1 -1
  214. package/table/table.component.d.ts +1 -1
  215. package/timepicker/timepicker.component.d.ts +1 -1
  216. package/timepicker/timepicker.directive.d.ts +1 -1
  217. package/timerangepicker/timerange.namespace.d.ts +1 -1
  218. package/timerangepicker/timerangepicker.component.d.ts +1 -1
  219. package/toast/toast.component.d.ts +1 -1
  220. package/toast/toast.service.d.ts +1 -1
  221. package/tooltip/models/tooltip.model.d.ts +1 -1
  222. package/tooltip/tooltip-container/tooltip.component.d.ts +1 -1
  223. package/tooltip/tooltip.directive.d.ts +1 -1
  224. package/virtual-scroll/virtual-scroll.component.d.ts +1 -1
  225. package/widgets/interfaces/widgets.model.d.ts +1 -1
  226. package/button/button.directive.scss +0 -69
  227. package/drawer/drawer.scss +0 -20
  228. package/esm2020/action-list/action-list.component.mjs +0 -370
  229. package/esm2020/analytics/analytics.service.mjs +0 -64
  230. package/esm2020/async-search-dropdown/async-dropdown.component.mjs +0 -525
  231. package/esm2020/button/button.component.mjs +0 -87
  232. package/esm2020/button/button.directive.mjs +0 -61
  233. package/esm2020/checkbox/checkbox.component.mjs +0 -124
  234. package/esm2020/chip/chip.component.mjs +0 -82
  235. package/esm2020/datepicker_v2/tz-datepicker.directive.mjs +0 -183
  236. package/esm2020/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +0 -449
  237. package/esm2020/datepicker_v2/utils/index.mjs +0 -45
  238. package/esm2020/daterangepicker_v2/tz-daterangepicker.directive.mjs +0 -165
  239. package/esm2020/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +0 -502
  240. package/esm2020/drawer/drawer-body/drawer-body.component.mjs +0 -58
  241. package/esm2020/dropdown/calculate-container-height.directive.mjs +0 -41
  242. package/esm2020/dropdown/dropdown.component.mjs +0 -472
  243. package/esm2020/dynamic-form/dynamic-form.component.mjs +0 -1108
  244. package/esm2020/fab/fab.component.mjs +0 -144
  245. package/esm2020/filter/filter-panel/filter-panel.component.mjs +0 -403
  246. package/esm2020/filter/has-value.pipe.mjs +0 -31
  247. package/esm2020/input/mis-input.component.mjs +0 -84
  248. package/esm2020/input-stepper/input-stepper/input-stepper.component.mjs +0 -88
  249. package/esm2020/loader/loader.component.mjs +0 -24
  250. package/esm2020/menu/menu-close.directive.mjs +0 -25
  251. package/esm2020/mobile-filter/mobile-filter.component.mjs +0 -181
  252. package/esm2020/modal/modal.service.mjs +0 -70
  253. package/esm2020/modal/module-wrapper/module-wrapper.component.mjs +0 -55
  254. package/esm2020/multi-select-dropdown/multi-select-dropdown.component.mjs +0 -491
  255. package/esm2020/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +0 -517
  256. package/esm2020/phone-input/phone-input.component.mjs +0 -71
  257. package/esm2020/radio-button/radio-button.component.mjs +0 -56
  258. package/esm2020/ske-loader/ske-loader.component.mjs +0 -53
  259. package/esm2020/slider/slider.component.mjs +0 -45
  260. package/esm2020/snackbar/snackbar/snackbar.component.mjs +0 -72
  261. package/esm2020/snackbar/snackbar.service.mjs +0 -47
  262. package/esm2020/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +0 -646
  263. package/esm2020/specificdatepicker/tz-specificdatepicker.directive.mjs +0 -196
  264. package/esm2020/specificdatepicker/utils/index.mjs +0 -45
  265. package/esm2020/star-rating/star-rating.component.mjs +0 -112
  266. package/esm2020/switch/switch.component.mjs +0 -55
  267. package/esm2020/table/custom-table-cell.directive.mjs +0 -42
  268. package/esm2020/table/filter/filter.component.mjs +0 -176
  269. package/esm2020/table/sub-table/sub-table.component.mjs +0 -193
  270. package/esm2020/table/table.component.mjs +0 -492
  271. package/esm2020/timepicker/timepicker.component.mjs +0 -370
  272. package/esm2020/timepicker/timepicker.directive.mjs +0 -69
  273. package/esm2020/timerangepicker/timerangepicker.component.mjs +0 -236
  274. package/esm2020/toast/toast.component.mjs +0 -50
  275. package/esm2020/toast/toast.service.mjs +0 -91
  276. package/esm2020/tooltip/tooltip-container/tooltip.component.mjs +0 -79
  277. package/esm2020/tooltip/tooltip.directive.mjs +0 -143
  278. package/esm2020/virtual-scroll/virtual-scroll.component.mjs +0 -190
  279. package/esm2020/widgets/classes/async-widget.mjs +0 -23
  280. package/esm2020/widgets/classes/sync-widget.mjs +0 -20
  281. package/fesm2015/mis-crystal-design-system-action-list.mjs +0 -446
  282. package/fesm2015/mis-crystal-design-system-action-list.mjs.map +0 -1
  283. package/fesm2015/mis-crystal-design-system-analytics.mjs +0 -87
  284. package/fesm2015/mis-crystal-design-system-analytics.mjs.map +0 -1
  285. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs +0 -618
  286. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
  287. package/fesm2015/mis-crystal-design-system-button.mjs +0 -189
  288. package/fesm2015/mis-crystal-design-system-button.mjs.map +0 -1
  289. package/fesm2015/mis-crystal-design-system-checkbox.mjs +0 -166
  290. package/fesm2015/mis-crystal-design-system-checkbox.mjs.map +0 -1
  291. package/fesm2015/mis-crystal-design-system-chip.mjs +0 -123
  292. package/fesm2015/mis-crystal-design-system-chip.mjs.map +0 -1
  293. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs +0 -751
  294. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
  295. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs +0 -769
  296. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
  297. package/fesm2015/mis-crystal-design-system-drawer.mjs +0 -185
  298. package/fesm2015/mis-crystal-design-system-drawer.mjs.map +0 -1
  299. package/fesm2015/mis-crystal-design-system-dropdown.mjs +0 -616
  300. package/fesm2015/mis-crystal-design-system-dropdown.mjs.map +0 -1
  301. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs +0 -1337
  302. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
  303. package/fesm2015/mis-crystal-design-system-fab.mjs +0 -186
  304. package/fesm2015/mis-crystal-design-system-fab.mjs.map +0 -1
  305. package/fesm2015/mis-crystal-design-system-filter.mjs +0 -559
  306. package/fesm2015/mis-crystal-design-system-filter.mjs.map +0 -1
  307. package/fesm2015/mis-crystal-design-system-input-stepper.mjs +0 -124
  308. package/fesm2015/mis-crystal-design-system-input-stepper.mjs.map +0 -1
  309. package/fesm2015/mis-crystal-design-system-input.mjs +0 -165
  310. package/fesm2015/mis-crystal-design-system-input.mjs.map +0 -1
  311. package/fesm2015/mis-crystal-design-system-loader.mjs +0 -57
  312. package/fesm2015/mis-crystal-design-system-loader.mjs.map +0 -1
  313. package/fesm2015/mis-crystal-design-system-menu.mjs +0 -135
  314. package/fesm2015/mis-crystal-design-system-menu.mjs.map +0 -1
  315. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs +0 -227
  316. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
  317. package/fesm2015/mis-crystal-design-system-modal.mjs +0 -184
  318. package/fesm2015/mis-crystal-design-system-modal.mjs.map +0 -1
  319. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs +0 -550
  320. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
  321. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -559
  322. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
  323. package/fesm2015/mis-crystal-design-system-phone-input.mjs +0 -107
  324. package/fesm2015/mis-crystal-design-system-phone-input.mjs.map +0 -1
  325. package/fesm2015/mis-crystal-design-system-radio-button.mjs +0 -89
  326. package/fesm2015/mis-crystal-design-system-radio-button.mjs.map +0 -1
  327. package/fesm2015/mis-crystal-design-system-ske-loader.mjs +0 -86
  328. package/fesm2015/mis-crystal-design-system-ske-loader.mjs.map +0 -1
  329. package/fesm2015/mis-crystal-design-system-slider.mjs +0 -88
  330. package/fesm2015/mis-crystal-design-system-slider.mjs.map +0 -1
  331. package/fesm2015/mis-crystal-design-system-snackbar.mjs +0 -175
  332. package/fesm2015/mis-crystal-design-system-snackbar.mjs.map +0 -1
  333. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs +0 -970
  334. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
  335. package/fesm2015/mis-crystal-design-system-star-rating.mjs +0 -145
  336. package/fesm2015/mis-crystal-design-system-star-rating.mjs.map +0 -1
  337. package/fesm2015/mis-crystal-design-system-switch.mjs +0 -88
  338. package/fesm2015/mis-crystal-design-system-switch.mjs.map +0 -1
  339. package/fesm2015/mis-crystal-design-system-table.mjs +0 -1045
  340. package/fesm2015/mis-crystal-design-system-table.mjs.map +0 -1
  341. package/fesm2015/mis-crystal-design-system-timepicker.mjs +0 -484
  342. package/fesm2015/mis-crystal-design-system-timepicker.mjs.map +0 -1
  343. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs +0 -273
  344. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs.map +0 -1
  345. package/fesm2015/mis-crystal-design-system-toast.mjs +0 -214
  346. package/fesm2015/mis-crystal-design-system-toast.mjs.map +0 -1
  347. package/fesm2015/mis-crystal-design-system-tooltip.mjs +0 -272
  348. package/fesm2015/mis-crystal-design-system-tooltip.mjs.map +0 -1
  349. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs +0 -259
  350. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
  351. package/fesm2015/mis-crystal-design-system-widgets.mjs +0 -131
  352. package/fesm2015/mis-crystal-design-system-widgets.mjs.map +0 -1
  353. package/fesm2020/mis-crystal-design-system-action-list.mjs.map +0 -1
  354. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs +0 -550
  355. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
  356. package/fesm2020/mis-crystal-design-system-button.mjs +0 -172
  357. package/fesm2020/mis-crystal-design-system-button.mjs.map +0 -1
  358. package/fesm2020/mis-crystal-design-system-checkbox.mjs +0 -150
  359. package/fesm2020/mis-crystal-design-system-checkbox.mjs.map +0 -1
  360. package/fesm2020/mis-crystal-design-system-chip.mjs +0 -108
  361. package/fesm2020/mis-crystal-design-system-chip.mjs.map +0 -1
  362. package/fesm2020/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
  363. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs +0 -736
  364. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
  365. package/fesm2020/mis-crystal-design-system-dropdown.mjs.map +0 -1
  366. package/fesm2020/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
  367. package/fesm2020/mis-crystal-design-system-fab.mjs.map +0 -1
  368. package/fesm2020/mis-crystal-design-system-filter.mjs.map +0 -1
  369. package/fesm2020/mis-crystal-design-system-loader.mjs +0 -50
  370. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs +0 -206
  371. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
  372. package/fesm2020/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
  373. package/fesm2020/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
  374. package/fesm2020/mis-crystal-design-system-radio-button.mjs +0 -82
  375. package/fesm2020/mis-crystal-design-system-ske-loader.mjs +0 -76
  376. package/fesm2020/mis-crystal-design-system-ske-loader.mjs.map +0 -1
  377. package/fesm2020/mis-crystal-design-system-slider.mjs +0 -79
  378. package/fesm2020/mis-crystal-design-system-snackbar.mjs.map +0 -1
  379. package/fesm2020/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
  380. package/fesm2020/mis-crystal-design-system-star-rating.mjs.map +0 -1
  381. package/fesm2020/mis-crystal-design-system-styles.mjs +0 -4
  382. package/fesm2020/mis-crystal-design-system-styles.mjs.map +0 -1
  383. package/fesm2020/mis-crystal-design-system-switch.mjs +0 -81
  384. package/fesm2020/mis-crystal-design-system-switch.mjs.map +0 -1
  385. package/fesm2020/mis-crystal-design-system-table.mjs +0 -919
  386. package/fesm2020/mis-crystal-design-system-table.mjs.map +0 -1
  387. package/fesm2020/mis-crystal-design-system-utils.mjs +0 -24
  388. package/fesm2020/mis-crystal-design-system-utils.mjs.map +0 -1
  389. package/fesm2020/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
  390. package/fesm2020/mis-crystal-design-system.mjs +0 -24
  391. package/fesm2020/mis-crystal-design-system.mjs.map +0 -1
  392. package/input/mis-input.component.scss +0 -180
  393. package/modal/modal.scss +0 -9
  394. package/styles/fonts/icomoon.eot +0 -0
  395. package/styles/fonts/icomoon.svg +0 -315
  396. package/styles/fonts/icomoon.ttf +0 -0
  397. package/styles/fonts/icomoon.woff +0 -0
  398. package/styles/mis-borders-backgrounds.scss +0 -764
  399. package/styles/mis-color-constants.scss +0 -149
  400. package/styles/mis-flex.scss +0 -321
  401. package/styles/mis-fonts.scss +0 -124
  402. package/styles/mis-icons.scss +0 -1054
  403. package/styles/mis-mixins.scss +0 -46
  404. package/styles/mis-old-icon-styles.scss +0 -498
  405. package/styles/mis-spacing-sizing.scss +0 -2590
  406. package/styles/mis-typography.scss +0 -462
  407. /package/{esm2020 → esm2022}/action-list/index.mjs +0 -0
  408. /package/{esm2020 → esm2022}/action-list/mis-crystal-design-system-action-list.mjs +0 -0
  409. /package/{esm2020 → esm2022}/action-list/public_api.mjs +0 -0
  410. /package/{esm2020 → esm2022}/analytics/index.mjs +0 -0
  411. /package/{esm2020 → esm2022}/analytics/mis-crystal-design-system-analytics.mjs +0 -0
  412. /package/{esm2020 → esm2022}/analytics/public_api.mjs +0 -0
  413. /package/{esm2020 → esm2022}/async-search-dropdown/index.mjs +0 -0
  414. /package/{esm2020 → esm2022}/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs +0 -0
  415. /package/{esm2020 → esm2022}/async-search-dropdown/public_api.mjs +0 -0
  416. /package/{esm2020 → esm2022}/button/index.mjs +0 -0
  417. /package/{esm2020 → esm2022}/button/mis-crystal-design-system-button.mjs +0 -0
  418. /package/{esm2020 → esm2022}/button/public_api.mjs +0 -0
  419. /package/{esm2020 → esm2022}/checkbox/index.mjs +0 -0
  420. /package/{esm2020 → esm2022}/checkbox/mis-crystal-design-system-checkbox.mjs +0 -0
  421. /package/{esm2020 → esm2022}/checkbox/public_api.mjs +0 -0
  422. /package/{esm2020 → esm2022}/chip/index.mjs +0 -0
  423. /package/{esm2020 → esm2022}/chip/mis-crystal-design-system-chip.mjs +0 -0
  424. /package/{esm2020 → esm2022}/chip/public_api.mjs +0 -0
  425. /package/{esm2020 → esm2022}/datepicker_v2/datepicker-constants.mjs +0 -0
  426. /package/{esm2020 → esm2022}/datepicker_v2/index.mjs +0 -0
  427. /package/{esm2020 → esm2022}/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs +0 -0
  428. /package/{esm2020 → esm2022}/datepicker_v2/models/dp-config.model.mjs +0 -0
  429. /package/{esm2020 → esm2022}/datepicker_v2/public_api.mjs +0 -0
  430. /package/{esm2020 → esm2022}/daterangepicker_v2/daterangepicker-constants.mjs +0 -0
  431. /package/{esm2020 → esm2022}/daterangepicker_v2/index.mjs +0 -0
  432. /package/{esm2020 → esm2022}/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs +0 -0
  433. /package/{esm2020 → esm2022}/daterangepicker_v2/models/drp-config.model.mjs +0 -0
  434. /package/{esm2020 → esm2022}/daterangepicker_v2/public_api.mjs +0 -0
  435. /package/{esm2020 → esm2022}/drawer/drawer-constants.mjs +0 -0
  436. /package/{esm2020 → esm2022}/drawer/index.mjs +0 -0
  437. /package/{esm2020 → esm2022}/drawer/mis-crystal-design-system-drawer.mjs +0 -0
  438. /package/{esm2020 → esm2022}/drawer/public_api.mjs +0 -0
  439. /package/{esm2020 → esm2022}/dropdown/index.mjs +0 -0
  440. /package/{esm2020 → esm2022}/dropdown/mis-crystal-design-system-dropdown.mjs +0 -0
  441. /package/{esm2020 → esm2022}/dropdown/public_api.mjs +0 -0
  442. /package/{esm2020 → esm2022}/dynamic-form/dynamic-form.namespace.mjs +0 -0
  443. /package/{esm2020 → esm2022}/dynamic-form/index.mjs +0 -0
  444. /package/{esm2020 → esm2022}/dynamic-form/mis-crystal-design-system-dynamic-form.mjs +0 -0
  445. /package/{esm2020 → esm2022}/dynamic-form/public_api.mjs +0 -0
  446. /package/{esm2020 → esm2022}/fab/index.mjs +0 -0
  447. /package/{esm2020 → esm2022}/fab/mis-crystal-design-system-fab.mjs +0 -0
  448. /package/{esm2020 → esm2022}/fab/public_api.mjs +0 -0
  449. /package/{esm2020 → esm2022}/filter/animations/slideFromRight.mjs +0 -0
  450. /package/{esm2020 → esm2022}/filter/index.mjs +0 -0
  451. /package/{esm2020 → esm2022}/filter/mis-crystal-design-system-filter.mjs +0 -0
  452. /package/{esm2020 → esm2022}/filter/public_api.mjs +0 -0
  453. /package/{esm2020 → esm2022}/index.mjs +0 -0
  454. /package/{esm2020 → esm2022}/input/index.mjs +0 -0
  455. /package/{esm2020 → esm2022}/input/mis-crystal-design-system-input.mjs +0 -0
  456. /package/{esm2020 → esm2022}/input/public_api.mjs +0 -0
  457. /package/{esm2020 → esm2022}/input-stepper/index.mjs +0 -0
  458. /package/{esm2020 → esm2022}/input-stepper/mis-crystal-design-system-input-stepper.mjs +0 -0
  459. /package/{esm2020 → esm2022}/input-stepper/public_api.mjs +0 -0
  460. /package/{esm2020 → esm2022}/loader/index.mjs +0 -0
  461. /package/{esm2020 → esm2022}/loader/mis-crystal-design-system-loader.mjs +0 -0
  462. /package/{esm2020 → esm2022}/loader/public_api.mjs +0 -0
  463. /package/{esm2020 → esm2022}/menu/index.mjs +0 -0
  464. /package/{esm2020 → esm2022}/menu/mis-crystal-design-system-menu.mjs +0 -0
  465. /package/{esm2020 → esm2022}/menu/public_api.mjs +0 -0
  466. /package/{esm2020 → esm2022}/mis-crystal-design-system.mjs +0 -0
  467. /package/{esm2020 → esm2022}/mobile-filter/index.mjs +0 -0
  468. /package/{esm2020 → esm2022}/mobile-filter/mis-crystal-design-system-mobile-filter.mjs +0 -0
  469. /package/{esm2020 → esm2022}/mobile-filter/public_api.mjs +0 -0
  470. /package/{esm2020 → esm2022}/modal/index.mjs +0 -0
  471. /package/{esm2020 → esm2022}/modal/mis-crystal-design-system-modal.mjs +0 -0
  472. /package/{esm2020 → esm2022}/modal/modal-constants.mjs +0 -0
  473. /package/{esm2020 → esm2022}/modal/modal-ref.mjs +0 -0
  474. /package/{esm2020 → esm2022}/modal/public_api.mjs +0 -0
  475. /package/{esm2020 → esm2022}/multi-select-dropdown/index.mjs +0 -0
  476. /package/{esm2020 → esm2022}/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.mjs +0 -0
  477. /package/{esm2020 → esm2022}/multi-select-dropdown/public_api.mjs +0 -0
  478. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/index.mjs +0 -0
  479. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -0
  480. /package/{esm2020 → esm2022}/nested-multi-select-dropdown/public_api.mjs +0 -0
  481. /package/{esm2020 → esm2022}/phone-input/index.mjs +0 -0
  482. /package/{esm2020 → esm2022}/phone-input/mis-crystal-design-system-phone-input.mjs +0 -0
  483. /package/{esm2020 → esm2022}/phone-input/public_api.mjs +0 -0
  484. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  485. /package/{esm2020 → esm2022}/radio-button/index.mjs +0 -0
  486. /package/{esm2020 → esm2022}/radio-button/mis-crystal-design-system-radio-button.mjs +0 -0
  487. /package/{esm2020 → esm2022}/radio-button/public_api.mjs +0 -0
  488. /package/{esm2020 → esm2022}/ske-loader/index.mjs +0 -0
  489. /package/{esm2020 → esm2022}/ske-loader/mis-crystal-design-system-ske-loader.mjs +0 -0
  490. /package/{esm2020 → esm2022}/ske-loader/public_api.mjs +0 -0
  491. /package/{esm2020 → esm2022}/slider/index.mjs +0 -0
  492. /package/{esm2020 → esm2022}/slider/mis-crystal-design-system-slider.mjs +0 -0
  493. /package/{esm2020 → esm2022}/slider/public_api.mjs +0 -0
  494. /package/{esm2020 → esm2022}/snackbar/index.mjs +0 -0
  495. /package/{esm2020 → esm2022}/snackbar/mis-crystal-design-system-snackbar.mjs +0 -0
  496. /package/{esm2020 → esm2022}/snackbar/public_api.mjs +0 -0
  497. /package/{esm2020 → esm2022}/specificdatepicker/daterangepicker-constants.mjs +0 -0
  498. /package/{esm2020 → esm2022}/specificdatepicker/index.mjs +0 -0
  499. /package/{esm2020 → esm2022}/specificdatepicker/mis-crystal-design-system-specificdatepicker.mjs +0 -0
  500. /package/{esm2020 → esm2022}/specificdatepicker/models/sdp-config.model.mjs +0 -0
  501. /package/{esm2020 → esm2022}/specificdatepicker/public_api.mjs +0 -0
  502. /package/{esm2020 → esm2022}/star-rating/index.mjs +0 -0
  503. /package/{esm2020 → esm2022}/star-rating/mis-crystal-design-system-star-rating.mjs +0 -0
  504. /package/{esm2020 → esm2022}/star-rating/public_api.mjs +0 -0
  505. /package/{esm2020 → esm2022}/styles/index.mjs +0 -0
  506. /package/{esm2020 → esm2022}/styles/mis-crystal-design-system-styles.mjs +0 -0
  507. /package/{esm2020 → esm2022}/styles/public_api.mjs +0 -0
  508. /package/{esm2020 → esm2022}/switch/index.mjs +0 -0
  509. /package/{esm2020 → esm2022}/switch/mis-crystal-design-system-switch.mjs +0 -0
  510. /package/{esm2020 → esm2022}/switch/public_api.mjs +0 -0
  511. /package/{esm2020 → esm2022}/table/index.mjs +0 -0
  512. /package/{esm2020 → esm2022}/table/mis-crystal-design-system-table.mjs +0 -0
  513. /package/{esm2020 → esm2022}/table/public_api.mjs +0 -0
  514. /package/{esm2020 → esm2022}/timepicker/index.mjs +0 -0
  515. /package/{esm2020 → esm2022}/timepicker/mis-crystal-design-system-timepicker.mjs +0 -0
  516. /package/{esm2020 → esm2022}/timepicker/public_api.mjs +0 -0
  517. /package/{esm2020 → esm2022}/timepicker/time.namespace.mjs +0 -0
  518. /package/{esm2020 → esm2022}/timerangepicker/index.mjs +0 -0
  519. /package/{esm2020 → esm2022}/timerangepicker/mis-crystal-design-system-timerangepicker.mjs +0 -0
  520. /package/{esm2020 → esm2022}/timerangepicker/public_api.mjs +0 -0
  521. /package/{esm2020 → esm2022}/timerangepicker/timerange.namespace.mjs +0 -0
  522. /package/{esm2020 → esm2022}/toast/index.mjs +0 -0
  523. /package/{esm2020 → esm2022}/toast/mis-crystal-design-system-toast.mjs +0 -0
  524. /package/{esm2020 → esm2022}/toast/public_api.mjs +0 -0
  525. /package/{esm2020 → esm2022}/tooltip/index.mjs +0 -0
  526. /package/{esm2020 → esm2022}/tooltip/mis-crystal-design-system-tooltip.mjs +0 -0
  527. /package/{esm2020 → esm2022}/tooltip/models/tooltip.model.mjs +0 -0
  528. /package/{esm2020 → esm2022}/tooltip/public_api.mjs +0 -0
  529. /package/{esm2020 → esm2022}/utils/index.mjs +0 -0
  530. /package/{esm2020 → esm2022}/utils/mis-crystal-design-system-utils.mjs +0 -0
  531. /package/{esm2020 → esm2022}/virtual-scroll/index.mjs +0 -0
  532. /package/{esm2020 → esm2022}/virtual-scroll/mis-crystal-design-system-virtual-scroll.mjs +0 -0
  533. /package/{esm2020 → esm2022}/virtual-scroll/public_api.mjs +0 -0
  534. /package/{esm2020 → esm2022}/virtual-scroll/virtual-scroll.constants.mjs +0 -0
  535. /package/{esm2020 → esm2022}/widgets/classes/widget-group.mjs +0 -0
  536. /package/{esm2020 → esm2022}/widgets/index.mjs +0 -0
  537. /package/{esm2020 → esm2022}/widgets/interfaces/widgets.model.mjs +0 -0
  538. /package/{esm2020 → esm2022}/widgets/mis-crystal-design-system-widgets.mjs +0 -0
  539. /package/{esm2020 → esm2022}/widgets/public_api.mjs +0 -0
  540. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-styles.mjs +0 -0
  541. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-styles.mjs.map +0 -0
  542. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-utils.mjs +0 -0
  543. /package/{fesm2015 → fesm2022}/mis-crystal-design-system-utils.mjs.map +0 -0
  544. /package/{fesm2015 → fesm2022}/mis-crystal-design-system.mjs +0 -0
  545. /package/{fesm2015 → fesm2022}/mis-crystal-design-system.mjs.map +0 -0
@@ -1,1108 +0,0 @@
1
- import { Component, ContentChild, EventEmitter, Input, Output } from "@angular/core";
2
- import { UntypedFormArray, UntypedFormControl, UntypedFormGroup, Validators } from "@angular/forms";
3
- import dayjs from 'dayjs';
4
- import timezone from 'dayjs/plugin/timezone';
5
- import utc from 'dayjs/plugin/utc';
6
- import customParseFormat from 'dayjs/plugin/customParseFormat';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@angular/common";
9
- import * as i2 from "@angular/forms";
10
- import * as i3 from "mis-crystal-design-system/dropdown";
11
- import * as i4 from "mis-crystal-design-system/switch";
12
- import * as i5 from "mis-crystal-design-system/multi-select-dropdown";
13
- import * as i6 from "mis-crystal-design-system/datepicker_v2";
14
- const _c0 = ["customInputTextNumber"];
15
- const _c1 = ["customInputTextarea"];
16
- const _c2 = ["customInputDate"];
17
- const _c3 = ["customBooleanToggle"];
18
- const _c4 = ["customSingleSelectDropdown"];
19
- const _c5 = ["customSingleSelectRadio"];
20
- const _c6 = ["customMultiSelectCheckbox"];
21
- const _c7 = ["customMultiSelectDropdown"];
22
- const _c8 = function (a0, a1) { return { $implicit: a0, control: a1 }; };
23
- function DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
24
- i0.ɵɵelementContainerStart(0);
25
- i0.ɵɵelementContainer(1, 6);
26
- i0.ɵɵelementContainerEnd();
27
- } if (rf & 2) {
28
- const subFieldControl_r9 = ctx.$implicit;
29
- const j_r10 = ctx.index;
30
- const ctx_r11 = i0.ɵɵnextContext(2);
31
- const i_r6 = ctx_r11.index;
32
- const fieldControl_r5 = ctx_r11.$implicit;
33
- const ctx_r8 = i0.ɵɵnextContext();
34
- const _r1 = i0.ɵɵreference(4);
35
- i0.ɵɵadvance(1);
36
- i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction2(2, _c8, ctx_r8.findSelectedSubFieldConfig(ctx_r8.formFields[i_r6] == null ? null : ctx_r8.formFields[i_r6].subFields, fieldControl_r5.controls.value.value.value, j_r10), subFieldControl_r9));
37
- } }
38
- function DynamicFormComponent_ng_container_2_div_2_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "div", 8);
40
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_container_2_div_2_ng_container_1_Template, 2, 5, "ng-container", 9);
41
- i0.ɵɵelementEnd();
42
- } if (rf & 2) {
43
- const fieldControl_r5 = i0.ɵɵnextContext().$implicit;
44
- i0.ɵɵadvance(1);
45
- i0.ɵɵproperty("ngForOf", fieldControl_r5.controls.subFields.controls);
46
- } }
47
- const _c9 = function (a0, a1, a2) { return { $implicit: a0, formGroup: a1, control: a2 }; };
48
- function DynamicFormComponent_ng_container_2_Template(rf, ctx) { if (rf & 1) {
49
- i0.ɵɵelementContainerStart(0, 5);
50
- i0.ɵɵelementContainer(1, 6);
51
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_div_2_Template, 2, 1, "div", 7);
52
- i0.ɵɵelementContainerEnd();
53
- } if (rf & 2) {
54
- const fieldControl_r5 = ctx.$implicit;
55
- const i_r6 = ctx.index;
56
- const ctx_r0 = i0.ɵɵnextContext();
57
- const _r1 = i0.ɵɵreference(4);
58
- i0.ɵɵproperty("formGroupName", i_r6);
59
- i0.ɵɵadvance(1);
60
- i0.ɵɵproperty("ngTemplateOutlet", _r1)("ngTemplateOutletContext", i0.ɵɵpureFunction3(4, _c9, ctx_r0.formFields[i_r6], fieldControl_r5, fieldControl_r5.controls.value));
61
- i0.ɵɵadvance(1);
62
- i0.ɵɵproperty("ngIf", (fieldControl_r5 == null ? null : fieldControl_r5.value) && (!!(ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields) && (ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields == null ? null : ctx_r0.formFields[i_r6].subFields.length) > 0 && ctx_r0.matchParentConfig(ctx_r0.formFields[i_r6] == null ? null : ctx_r0.formFields[i_r6].subFields, fieldControl_r5 == null ? null : fieldControl_r5.controls == null ? null : fieldControl_r5.controls.value == null ? null : fieldControl_r5.controls.value.value == null ? null : fieldControl_r5.controls.value.value.value)));
63
- } }
64
- function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template(rf, ctx) { }
65
- const _c10 = function (a0, a1, a2) { return { field: a0, control: a1, formgroup: a2 }; };
66
- function DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template(rf, ctx) { if (rf & 1) {
67
- i0.ɵɵelementContainerStart(0);
68
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
69
- i0.ɵɵelementContainerEnd();
70
- } if (rf & 2) {
71
- const ctx_r28 = i0.ɵɵnextContext(2);
72
- const field_r13 = ctx_r28.$implicit;
73
- const control_r14 = ctx_r28.control;
74
- const formgroup_r15 = ctx_r28.formGroup;
75
- const ctx_r24 = i0.ɵɵnextContext();
76
- i0.ɵɵadvance(1);
77
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r24.customInputTextNumber)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
78
- } }
79
- function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
80
- i0.ɵɵelementStart(0, "span");
81
- i0.ɵɵtext(1, " *");
82
- i0.ɵɵelementEnd();
83
- } }
84
- const _c11 = function (a0) { return { $implicit: a0 }; };
85
- function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
86
- i0.ɵɵelementContainer(0, 6);
87
- } if (rf & 2) {
88
- const control_r14 = i0.ɵɵnextContext(3).control;
89
- i0.ɵɵnextContext();
90
- const _r3 = i0.ɵɵreference(6);
91
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
92
- } }
93
- const _c12 = function (a0) { return { "border-bottom": a0 }; };
94
- const _c13 = function (a0) { return { "border": a0 }; };
95
- function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
96
- const _r34 = i0.ɵɵgetCurrentView();
97
- i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
98
- i0.ɵɵtext(2);
99
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_span_3_Template, 2, 0, "span", 10);
100
- i0.ɵɵelementEnd();
101
- i0.ɵɵelement(4, "div", 15);
102
- i0.ɵɵelementStart(5, "input", 16);
103
- i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template_input_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r34); const ctx_r33 = i0.ɵɵnextContext(2); const field_r13 = ctx_r33.$implicit; const formgroup_r15 = ctx_r33.formGroup; const ctx_r32 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r32.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
104
- i0.ɵɵelementEnd();
105
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 17);
106
- i0.ɵɵelementEnd();
107
- } if (rf & 2) {
108
- const ctx_r35 = i0.ɵɵnextContext(2);
109
- const formgroup_r15 = ctx_r35.formGroup;
110
- const field_r13 = ctx_r35.$implicit;
111
- const control_r14 = ctx_r35.control;
112
- const ctx_r26 = i0.ɵɵnextContext();
113
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r26.removeSepratorForSubFields ? "none" : ""));
114
- i0.ɵɵadvance(2);
115
- i0.ɵɵtextInterpolate1(" ", field_r13 == null ? null : field_r13.title, " ");
116
- i0.ɵɵadvance(1);
117
- i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
118
- i0.ɵɵadvance(2);
119
- i0.ɵɵproperty("type", field_r13.fieldInputType)("formControl", control_r14)("ngStyle", i0.ɵɵpureFunction1(11, _c13, control_r14.touched && control_r14.errors ? "1px solid #B00020" : ""))("placeholder", field_r13.placeholderText ? field_r13.placeholderText : "Input Text")("min", field_r13.fieldInputType === "number" ? 0 : "");
120
- i0.ɵɵadvance(1);
121
- i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
122
- } }
123
- function DynamicFormComponent_ng_template_3_ng_container_0_Template(rf, ctx) { if (rf & 1) {
124
- i0.ɵɵelementContainerStart(0);
125
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_0_ng_container_1_Template, 2, 6, "ng-container", 11);
126
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_0_ng_template_2_Template, 7, 13, "ng-template", null, 12, i0.ɵɵtemplateRefExtractor);
127
- i0.ɵɵelementContainerEnd();
128
- } if (rf & 2) {
129
- const _r25 = i0.ɵɵreference(3);
130
- const ctx_r16 = i0.ɵɵnextContext(2);
131
- i0.ɵɵadvance(1);
132
- i0.ɵɵproperty("ngIf", ctx_r16.customInputTextNumber)("ngIfElse", _r25);
133
- } }
134
- function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template(rf, ctx) { }
135
- function DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
136
- i0.ɵɵelementContainerStart(0);
137
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
138
- i0.ɵɵelementContainerEnd();
139
- } if (rf & 2) {
140
- const ctx_r40 = i0.ɵɵnextContext(2);
141
- const field_r13 = ctx_r40.$implicit;
142
- const control_r14 = ctx_r40.control;
143
- const formgroup_r15 = ctx_r40.formGroup;
144
- const ctx_r36 = i0.ɵɵnextContext();
145
- i0.ɵɵadvance(1);
146
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r36.customInputTextarea)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
147
- } }
148
- function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
149
- i0.ɵɵelementStart(0, "span");
150
- i0.ɵɵtext(1, " *");
151
- i0.ɵɵelementEnd();
152
- } }
153
- function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template(rf, ctx) { if (rf & 1) {
154
- i0.ɵɵelementContainer(0, 6);
155
- } if (rf & 2) {
156
- const control_r14 = i0.ɵɵnextContext(3).control;
157
- i0.ɵɵnextContext();
158
- const _r3 = i0.ɵɵreference(6);
159
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
160
- } }
161
- function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
162
- const _r46 = i0.ɵɵgetCurrentView();
163
- i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
164
- i0.ɵɵtext(2);
165
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_span_3_Template, 2, 0, "span", 10);
166
- i0.ɵɵelementEnd();
167
- i0.ɵɵelement(4, "div", 15);
168
- i0.ɵɵelementStart(5, "textarea", 19);
169
- i0.ɵɵlistener("ngModelChange", function DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template_textarea_ngModelChange_5_listener($event) { i0.ɵɵrestoreView(_r46); const ctx_r45 = i0.ɵɵnextContext(2); const field_r13 = ctx_r45.$implicit; const formgroup_r15 = ctx_r45.formGroup; const ctx_r44 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r44.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
170
- i0.ɵɵelementEnd();
171
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_ng_container_6_Template, 1, 4, "ng-container", 17);
172
- i0.ɵɵelementEnd();
173
- } if (rf & 2) {
174
- const ctx_r47 = i0.ɵɵnextContext(2);
175
- const formgroup_r15 = ctx_r47.formGroup;
176
- const field_r13 = ctx_r47.$implicit;
177
- const control_r14 = ctx_r47.control;
178
- const ctx_r38 = i0.ɵɵnextContext();
179
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(7, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r38.removeSepratorForSubFields ? "none" : ""));
180
- i0.ɵɵadvance(2);
181
- i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
182
- i0.ɵɵadvance(1);
183
- i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
184
- i0.ɵɵadvance(2);
185
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c13, control_r14.touched && control_r14.errors ? "1px solid #B00020" : ""))("placeholder", field_r13.placeholderText ? field_r13.placeholderText : "Input Text")("formControl", control_r14);
186
- i0.ɵɵadvance(1);
187
- i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
188
- } }
189
- function DynamicFormComponent_ng_template_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
190
- i0.ɵɵelementContainerStart(0);
191
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_ng_container_1_Template, 2, 6, "ng-container", 11);
192
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_1_ng_template_2_Template, 7, 11, "ng-template", null, 18, i0.ɵɵtemplateRefExtractor);
193
- i0.ɵɵelementContainerEnd();
194
- } if (rf & 2) {
195
- const _r37 = i0.ɵɵreference(3);
196
- const ctx_r17 = i0.ɵɵnextContext(2);
197
- i0.ɵɵadvance(1);
198
- i0.ɵɵproperty("ngIf", ctx_r17.customInputTextarea)("ngIfElse", _r37);
199
- } }
200
- function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template(rf, ctx) { }
201
- function DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template(rf, ctx) { if (rf & 1) {
202
- i0.ɵɵelementContainerStart(0);
203
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
204
- i0.ɵɵelementContainerEnd();
205
- } if (rf & 2) {
206
- const ctx_r52 = i0.ɵɵnextContext(2);
207
- const field_r13 = ctx_r52.$implicit;
208
- const control_r14 = ctx_r52.control;
209
- const formgroup_r15 = ctx_r52.formGroup;
210
- const ctx_r48 = i0.ɵɵnextContext();
211
- i0.ɵɵadvance(1);
212
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r48.customInputDate)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
213
- } }
214
- function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template(rf, ctx) { if (rf & 1) {
215
- i0.ɵɵelementStart(0, "span");
216
- i0.ɵɵtext(1, " *");
217
- i0.ɵɵelementEnd();
218
- } }
219
- function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template(rf, ctx) { if (rf & 1) {
220
- const _r59 = i0.ɵɵgetCurrentView();
221
- i0.ɵɵelementStart(0, "img", 28);
222
- i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r59); i0.ɵɵnextContext(); const _r55 = i0.ɵɵreference(6); return i0.ɵɵresetView(_r55.click()); });
223
- i0.ɵɵelementEnd();
224
- } if (rf & 2) {
225
- const ctx_r56 = i0.ɵɵnextContext(5);
226
- i0.ɵɵproperty("src", ctx_r56.calendarIconUrl, i0.ɵɵsanitizeUrl);
227
- } }
228
- function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template(rf, ctx) { if (rf & 1) {
229
- i0.ɵɵelementContainer(0, 6);
230
- } if (rf & 2) {
231
- const control_r14 = i0.ɵɵnextContext(4).control;
232
- i0.ɵɵnextContext();
233
- const _r3 = i0.ɵɵreference(6);
234
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
235
- } }
236
- function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {
237
- const _r63 = i0.ɵɵgetCurrentView();
238
- i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
239
- i0.ɵɵtext(2);
240
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_span_3_Template, 2, 0, "span", 10);
241
- i0.ɵɵelementEnd();
242
- i0.ɵɵelementStart(4, "div", 24)(5, "input", 25, 26);
243
- i0.ɵɵlistener("dateChange", function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template_input_dateChange_5_listener($event) { i0.ɵɵrestoreView(_r63); const control_r14 = i0.ɵɵnextContext(3).control; return i0.ɵɵresetView(control_r14.setValue($event)); });
244
- i0.ɵɵelementEnd();
245
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_img_7_Template, 1, 1, "img", 27);
246
- i0.ɵɵelementEnd();
247
- i0.ɵɵtemplate(8, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_ng_container_8_Template, 1, 4, "ng-container", 17);
248
- i0.ɵɵelementEnd();
249
- } if (rf & 2) {
250
- const ctx_r64 = i0.ɵɵnextContext(3);
251
- const formgroup_r15 = ctx_r64.formGroup;
252
- const field_r13 = ctx_r64.$implicit;
253
- const control_r14 = ctx_r64.control;
254
- const ctx_r53 = i0.ɵɵnextContext();
255
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(9, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r53.removeSepratorForSubFields ? "none" : ""));
256
- i0.ɵɵadvance(2);
257
- i0.ɵɵtextInterpolate1(" ", field_r13.title, " ");
258
- i0.ɵɵadvance(1);
259
- i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
260
- i0.ɵɵadvance(2);
261
- i0.ɵɵproperty("dpConfig", field_r13.fieldConfig)("selectedDate", control_r14.value)("offsetY", 0)("value", control_r14.value);
262
- i0.ɵɵadvance(2);
263
- i0.ɵɵproperty("ngIf", ctx_r53.calendarIconUrl);
264
- i0.ɵɵadvance(1);
265
- i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
266
- } }
267
- function DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template(rf, ctx) { if (rf & 1) {
268
- i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_div_0_Template, 9, 11, "div", 21);
269
- } if (rf & 2) {
270
- const field_r13 = i0.ɵɵnextContext(2).$implicit;
271
- i0.ɵɵproperty("ngIf", field_r13.fieldType === "input" && field_r13.fieldInputType === "date");
272
- } }
273
- function DynamicFormComponent_ng_template_3_ng_container_2_Template(rf, ctx) { if (rf & 1) {
274
- i0.ɵɵelementContainerStart(0);
275
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_2_ng_container_1_Template, 2, 6, "ng-container", 11);
276
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_2_ng_template_2_Template, 1, 1, "ng-template", null, 20, i0.ɵɵtemplateRefExtractor);
277
- i0.ɵɵelementContainerEnd();
278
- } if (rf & 2) {
279
- const _r49 = i0.ɵɵreference(3);
280
- const ctx_r18 = i0.ɵɵnextContext(2);
281
- i0.ɵɵadvance(1);
282
- i0.ɵɵproperty("ngIf", ctx_r18.customInputDate)("ngIfElse", _r49);
283
- } }
284
- function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template(rf, ctx) { }
285
- function DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
286
- i0.ɵɵelementContainerStart(0);
287
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
288
- i0.ɵɵelementContainerEnd();
289
- } if (rf & 2) {
290
- const ctx_r70 = i0.ɵɵnextContext(2);
291
- const field_r13 = ctx_r70.$implicit;
292
- const control_r14 = ctx_r70.control;
293
- const formgroup_r15 = ctx_r70.formGroup;
294
- const ctx_r66 = i0.ɵɵnextContext();
295
- i0.ɵɵadvance(1);
296
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r66.customBooleanToggle)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
297
- } }
298
- function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
299
- i0.ɵɵelementStart(0, "span");
300
- i0.ɵɵtext(1, " *");
301
- i0.ɵɵelementEnd();
302
- } }
303
- function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
304
- i0.ɵɵelementContainer(0, 6);
305
- } if (rf & 2) {
306
- const control_r14 = i0.ɵɵnextContext(3).control;
307
- i0.ɵɵnextContext();
308
- const _r3 = i0.ɵɵreference(6);
309
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
310
- } }
311
- function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template(rf, ctx) { if (rf & 1) {
312
- const _r76 = i0.ɵɵgetCurrentView();
313
- i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
314
- i0.ɵɵtext(2);
315
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_span_3_Template, 2, 0, "span", 10);
316
- i0.ɵɵelementEnd();
317
- i0.ɵɵelementStart(4, "mis-switch", 30);
318
- i0.ɵɵlistener("valueChanged", function DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template_mis_switch_valueChanged_4_listener($event) { i0.ɵɵrestoreView(_r76); const ctx_r75 = i0.ɵɵnextContext(2); const field_r13 = ctx_r75.$implicit; const formgroup_r15 = ctx_r75.formGroup; const ctx_r74 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r74.updateSubDynamicFields(field_r13, formgroup_r15, $event)); });
319
- i0.ɵɵelementEnd();
320
- i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 17);
321
- i0.ɵɵelementEnd();
322
- } if (rf & 2) {
323
- const ctx_r77 = i0.ɵɵnextContext(2);
324
- const formgroup_r15 = ctx_r77.formGroup;
325
- const field_r13 = ctx_r77.$implicit;
326
- const control_r14 = ctx_r77.control;
327
- const ctx_r68 = i0.ɵɵnextContext();
328
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r68.removeSepratorForSubFields ? "none" : ""));
329
- i0.ɵɵadvance(2);
330
- i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
331
- i0.ɵɵadvance(1);
332
- i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
333
- i0.ɵɵadvance(1);
334
- i0.ɵɵproperty("control", control_r14);
335
- i0.ɵɵadvance(1);
336
- i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
337
- } }
338
- function DynamicFormComponent_ng_template_3_ng_container_3_Template(rf, ctx) { if (rf & 1) {
339
- i0.ɵɵelementContainerStart(0);
340
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_3_ng_container_1_Template, 2, 6, "ng-container", 11);
341
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_3_ng_template_2_Template, 6, 7, "ng-template", null, 29, i0.ɵɵtemplateRefExtractor);
342
- i0.ɵɵelementContainerEnd();
343
- } if (rf & 2) {
344
- const _r67 = i0.ɵɵreference(3);
345
- const ctx_r19 = i0.ɵɵnextContext(2);
346
- i0.ɵɵadvance(1);
347
- i0.ɵɵproperty("ngIf", ctx_r19.customBooleanToggle)("ngIfElse", _r67);
348
- } }
349
- function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template(rf, ctx) { }
350
- function DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template(rf, ctx) { if (rf & 1) {
351
- i0.ɵɵelementContainerStart(0);
352
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
353
- i0.ɵɵelementContainerEnd();
354
- } if (rf & 2) {
355
- const ctx_r82 = i0.ɵɵnextContext(2);
356
- const field_r13 = ctx_r82.$implicit;
357
- const control_r14 = ctx_r82.control;
358
- const formgroup_r15 = ctx_r82.formGroup;
359
- const ctx_r78 = i0.ɵɵnextContext();
360
- i0.ɵɵadvance(1);
361
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r78.customSingleSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
362
- } }
363
- function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
364
- i0.ɵɵelementStart(0, "span");
365
- i0.ɵɵtext(1, " *");
366
- i0.ɵɵelementEnd();
367
- } }
368
- function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template(rf, ctx) { if (rf & 1) {
369
- const _r88 = i0.ɵɵgetCurrentView();
370
- i0.ɵɵelementStart(0, "img", 35);
371
- i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template_img_click_0_listener() { i0.ɵɵrestoreView(_r88); const field_r13 = i0.ɵɵnextContext(3).$implicit; const ctx_r86 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r86.fieldRemoved.emit(field_r13)); });
372
- i0.ɵɵelementEnd();
373
- } if (rf & 2) {
374
- const ctx_r84 = i0.ɵɵnextContext(4);
375
- i0.ɵɵproperty("src", ctx_r84.removeIconUrl, i0.ɵɵsanitizeUrl);
376
- } }
377
- function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
378
- i0.ɵɵelementContainer(0, 6);
379
- } if (rf & 2) {
380
- const control_r14 = i0.ɵɵnextContext(3).control;
381
- i0.ɵɵnextContext();
382
- const _r3 = i0.ɵɵreference(6);
383
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
384
- } }
385
- const _c14 = function (a0) { return { "removeable-container": a0 }; };
386
- function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template(rf, ctx) { if (rf & 1) {
387
- const _r92 = i0.ɵɵgetCurrentView();
388
- i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
389
- i0.ɵɵtext(2);
390
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_span_3_Template, 2, 0, "span", 10);
391
- i0.ɵɵelementEnd();
392
- i0.ɵɵelementStart(4, "div", 32)(5, "mis-dropdown", 33);
393
- i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template_mis_dropdown_onChange_5_listener($event) { i0.ɵɵrestoreView(_r92); const ctx_r91 = i0.ɵɵnextContext(2); const field_r13 = ctx_r91.$implicit; const control_r14 = ctx_r91.control; const formgroup_r15 = ctx_r91.formGroup; const ctx_r90 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r90.updateSelectedValueForSingleSelect(field_r13, control_r14, formgroup_r15, $event)); });
394
- i0.ɵɵelementEnd();
395
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_img_6_Template, 1, 1, "img", 34);
396
- i0.ɵɵelementEnd();
397
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 17);
398
- i0.ɵɵelementEnd();
399
- } if (rf & 2) {
400
- const ctx_r93 = i0.ɵɵnextContext(2);
401
- const formgroup_r15 = ctx_r93.formGroup;
402
- const field_r13 = ctx_r93.$implicit;
403
- const control_r14 = ctx_r93.control;
404
- const ctx_r80 = i0.ɵɵnextContext();
405
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(10, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r80.removeSepratorForSubFields ? "none" : ""));
406
- i0.ɵɵadvance(2);
407
- i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
408
- i0.ɵɵadvance(1);
409
- i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
410
- i0.ɵɵadvance(1);
411
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c14, field_r13 == null ? null : field_r13.isRemoveable));
412
- i0.ɵɵadvance(1);
413
- i0.ɵɵproperty("searchEnabled", false)("width", "140px")("data", field_r13.itemsList)("selectedItem", control_r14.value);
414
- i0.ɵɵadvance(1);
415
- i0.ɵɵproperty("ngIf", field_r13.isRemoveable && ctx_r80.removeIconUrl);
416
- i0.ɵɵadvance(1);
417
- i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
418
- } }
419
- function DynamicFormComponent_ng_template_3_ng_container_4_Template(rf, ctx) { if (rf & 1) {
420
- i0.ɵɵelementContainerStart(0);
421
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_4_ng_container_1_Template, 2, 6, "ng-container", 11);
422
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_4_ng_template_2_Template, 8, 14, "ng-template", null, 31, i0.ɵɵtemplateRefExtractor);
423
- i0.ɵɵelementContainerEnd();
424
- } if (rf & 2) {
425
- const _r79 = i0.ɵɵreference(3);
426
- const ctx_r20 = i0.ɵɵnextContext(2);
427
- i0.ɵɵadvance(1);
428
- i0.ɵɵproperty("ngIf", ctx_r20.customSingleSelectDropdown)("ngIfElse", _r79);
429
- } }
430
- function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template(rf, ctx) { }
431
- function DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
432
- i0.ɵɵelementContainerStart(0);
433
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
434
- i0.ɵɵelementContainerEnd();
435
- } if (rf & 2) {
436
- const ctx_r98 = i0.ɵɵnextContext(2);
437
- const field_r13 = ctx_r98.$implicit;
438
- const control_r14 = ctx_r98.control;
439
- const formgroup_r15 = ctx_r98.formGroup;
440
- const ctx_r94 = i0.ɵɵnextContext();
441
- i0.ɵɵadvance(1);
442
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r94.customSingleSelectRadio)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
443
- } }
444
- function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
445
- i0.ɵɵelementStart(0, "span");
446
- i0.ɵɵtext(1, " *");
447
- i0.ɵɵelementEnd();
448
- } }
449
- function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
450
- i0.ɵɵelement(0, "img", 41);
451
- } if (rf & 2) {
452
- const ctx_r103 = i0.ɵɵnextContext(5);
453
- i0.ɵɵproperty("src", ctx_r103.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
454
- } }
455
- const _c15 = function (a0) { return { "checkbox-active": a0 }; };
456
- function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
457
- const _r106 = i0.ɵɵgetCurrentView();
458
- i0.ɵɵelementStart(0, "div", 39);
459
- i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r106); const item_r102 = restoredCtx.$implicit; const ctx_r105 = i0.ɵɵnextContext(3); const field_r13 = ctx_r105.$implicit; const control_r14 = ctx_r105.control; const formgroup_r15 = ctx_r105.formGroup; const ctx_r104 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r104.updateSelectedValueForSingleSelect(field_r13, control_r14, formgroup_r15, item_r102)); });
460
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_img_1_Template, 1, 1, "img", 40);
461
- i0.ɵɵelementStart(2, "p", 23);
462
- i0.ɵɵtext(3);
463
- i0.ɵɵelementEnd()();
464
- } if (rf & 2) {
465
- const item_r102 = ctx.$implicit;
466
- const control_r14 = i0.ɵɵnextContext(3).control;
467
- const ctx_r100 = i0.ɵɵnextContext();
468
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, item_r102.label === (control_r14.value == null ? null : control_r14.value.label)));
469
- i0.ɵɵadvance(1);
470
- i0.ɵɵproperty("ngIf", item_r102.label === (control_r14.value == null ? null : control_r14.value.label) && ctx_r100.activeBtnIconUrl);
471
- i0.ɵɵadvance(2);
472
- i0.ɵɵtextInterpolate(item_r102.label);
473
- } }
474
- function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
475
- i0.ɵɵelementContainer(0, 6);
476
- } if (rf & 2) {
477
- const control_r14 = i0.ɵɵnextContext(3).control;
478
- i0.ɵɵnextContext();
479
- const _r3 = i0.ɵɵreference(6);
480
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
481
- } }
482
- function DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template(rf, ctx) { if (rf & 1) {
483
- i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
484
- i0.ɵɵtext(2);
485
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_span_3_Template, 2, 0, "span", 10);
486
- i0.ɵɵelementEnd();
487
- i0.ɵɵelement(4, "div", 15);
488
- i0.ɵɵelementStart(5, "div", 37);
489
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_div_6_Template, 4, 5, "div", 38);
490
- i0.ɵɵelementEnd();
491
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 17);
492
- i0.ɵɵelementEnd();
493
- } if (rf & 2) {
494
- const ctx_r109 = i0.ɵɵnextContext(2);
495
- const formgroup_r15 = ctx_r109.formGroup;
496
- const field_r13 = ctx_r109.$implicit;
497
- const control_r14 = ctx_r109.control;
498
- const ctx_r96 = i0.ɵɵnextContext();
499
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r96.removeSepratorForSubFields ? "none" : ""));
500
- i0.ɵɵadvance(2);
501
- i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
502
- i0.ɵɵadvance(1);
503
- i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
504
- i0.ɵɵadvance(3);
505
- i0.ɵɵproperty("ngForOf", field_r13.itemsList);
506
- i0.ɵɵadvance(1);
507
- i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
508
- } }
509
- function DynamicFormComponent_ng_template_3_ng_container_5_Template(rf, ctx) { if (rf & 1) {
510
- i0.ɵɵelementContainerStart(0);
511
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_5_ng_container_1_Template, 2, 6, "ng-container", 11);
512
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_5_ng_template_2_Template, 8, 7, "ng-template", null, 36, i0.ɵɵtemplateRefExtractor);
513
- i0.ɵɵelementContainerEnd();
514
- } if (rf & 2) {
515
- const _r95 = i0.ɵɵreference(3);
516
- const ctx_r21 = i0.ɵɵnextContext(2);
517
- i0.ɵɵadvance(1);
518
- i0.ɵɵproperty("ngIf", ctx_r21.customSingleSelectRadio)("ngIfElse", _r95);
519
- } }
520
- function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template(rf, ctx) { }
521
- function DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template(rf, ctx) { if (rf & 1) {
522
- i0.ɵɵelementContainerStart(0);
523
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
524
- i0.ɵɵelementContainerEnd();
525
- } if (rf & 2) {
526
- const ctx_r114 = i0.ɵɵnextContext(2);
527
- const field_r13 = ctx_r114.$implicit;
528
- const control_r14 = ctx_r114.control;
529
- const formgroup_r15 = ctx_r114.formGroup;
530
- const ctx_r110 = i0.ɵɵnextContext();
531
- i0.ɵɵadvance(1);
532
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r110.customMultiSelectCheckbox)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
533
- } }
534
- function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
535
- i0.ɵɵelementStart(0, "span");
536
- i0.ɵɵtext(1, " *");
537
- i0.ɵɵelementEnd();
538
- } }
539
- function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template(rf, ctx) { if (rf & 1) {
540
- i0.ɵɵelement(0, "img", 41);
541
- } if (rf & 2) {
542
- const ctx_r119 = i0.ɵɵnextContext(5);
543
- i0.ɵɵproperty("src", ctx_r119.activeBtnIconUrl, i0.ɵɵsanitizeUrl);
544
- } }
545
- function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template(rf, ctx) { if (rf & 1) {
546
- const _r122 = i0.ɵɵgetCurrentView();
547
- i0.ɵɵelementStart(0, "div", 39);
548
- i0.ɵɵlistener("click", function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template_div_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r122); const item_r118 = restoredCtx.$implicit; const ctx_r121 = i0.ɵɵnextContext(3); const field_r13 = ctx_r121.$implicit; const control_r14 = ctx_r121.control; const formgroup_r15 = ctx_r121.formGroup; const ctx_r120 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r120.updateSelectedValueForMultiSelect(field_r13, control_r14, formgroup_r15, [item_r118])); });
549
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_img_1_Template, 1, 1, "img", 40);
550
- i0.ɵɵelementStart(2, "p", 23);
551
- i0.ɵɵtext(3);
552
- i0.ɵɵelementEnd()();
553
- } if (rf & 2) {
554
- const item_r118 = ctx.$implicit;
555
- const control_r14 = i0.ɵɵnextContext(3).control;
556
- const ctx_r116 = i0.ɵɵnextContext();
557
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c15, ctx_r116.isCheckBoxSelected(item_r118.label, control_r14.value)));
558
- i0.ɵɵadvance(1);
559
- i0.ɵɵproperty("ngIf", ctx_r116.isCheckBoxSelected(item_r118.label, control_r14.value) && ctx_r116.activeBtnIconUrl);
560
- i0.ɵɵadvance(2);
561
- i0.ɵɵtextInterpolate(item_r118.label);
562
- } }
563
- function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template(rf, ctx) { if (rf & 1) {
564
- i0.ɵɵelementContainer(0, 6);
565
- } if (rf & 2) {
566
- const control_r14 = i0.ɵɵnextContext(3).control;
567
- i0.ɵɵnextContext();
568
- const _r3 = i0.ɵɵreference(6);
569
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
570
- } }
571
- function DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template(rf, ctx) { if (rf & 1) {
572
- i0.ɵɵelementStart(0, "div", 13)(1, "p", 14);
573
- i0.ɵɵtext(2);
574
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_span_3_Template, 2, 0, "span", 10);
575
- i0.ɵɵelementEnd();
576
- i0.ɵɵelement(4, "div", 15);
577
- i0.ɵɵelementStart(5, "div", 37);
578
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_div_6_Template, 4, 5, "div", 38);
579
- i0.ɵɵelementEnd();
580
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_ng_container_7_Template, 1, 4, "ng-container", 17);
581
- i0.ɵɵelementEnd();
582
- } if (rf & 2) {
583
- const ctx_r125 = i0.ɵɵnextContext(2);
584
- const formgroup_r15 = ctx_r125.formGroup;
585
- const field_r13 = ctx_r125.$implicit;
586
- const control_r14 = ctx_r125.control;
587
- const ctx_r112 = i0.ɵɵnextContext();
588
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(5, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r112.removeSepratorForSubFields ? "none" : ""));
589
- i0.ɵɵadvance(2);
590
- i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
591
- i0.ɵɵadvance(1);
592
- i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
593
- i0.ɵɵadvance(3);
594
- i0.ɵɵproperty("ngForOf", field_r13.itemsList);
595
- i0.ɵɵadvance(1);
596
- i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
597
- } }
598
- function DynamicFormComponent_ng_template_3_ng_container_6_Template(rf, ctx) { if (rf & 1) {
599
- i0.ɵɵelementContainerStart(0);
600
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_6_ng_container_1_Template, 2, 6, "ng-container", 11);
601
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_6_ng_template_2_Template, 8, 7, "ng-template", null, 42, i0.ɵɵtemplateRefExtractor);
602
- i0.ɵɵelementContainerEnd();
603
- } if (rf & 2) {
604
- const _r111 = i0.ɵɵreference(3);
605
- const ctx_r22 = i0.ɵɵnextContext(2);
606
- i0.ɵɵadvance(1);
607
- i0.ɵɵproperty("ngIf", ctx_r22.customMultiSelectCheckbox)("ngIfElse", _r111);
608
- } }
609
- function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template(rf, ctx) { }
610
- function DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template(rf, ctx) { if (rf & 1) {
611
- i0.ɵɵelementContainerStart(0);
612
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_ng_template_1_Template, 0, 0, "ng-template", 6);
613
- i0.ɵɵelementContainerEnd();
614
- } if (rf & 2) {
615
- const ctx_r130 = i0.ɵɵnextContext(2);
616
- const field_r13 = ctx_r130.$implicit;
617
- const control_r14 = ctx_r130.control;
618
- const formgroup_r15 = ctx_r130.formGroup;
619
- const ctx_r126 = i0.ɵɵnextContext();
620
- i0.ɵɵadvance(1);
621
- i0.ɵɵproperty("ngTemplateOutlet", ctx_r126.customMultiSelectDropdown)("ngTemplateOutletContext", i0.ɵɵpureFunction3(2, _c10, field_r13, control_r14, formgroup_r15));
622
- } }
623
- function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template(rf, ctx) { if (rf & 1) {
624
- i0.ɵɵelementStart(0, "span");
625
- i0.ɵɵtext(1, " *");
626
- i0.ɵɵelementEnd();
627
- } }
628
- function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template(rf, ctx) { if (rf & 1) {
629
- i0.ɵɵelementContainer(0, 6);
630
- } if (rf & 2) {
631
- const control_r14 = i0.ɵɵnextContext(3).control;
632
- i0.ɵɵnextContext();
633
- const _r3 = i0.ɵɵreference(6);
634
- i0.ɵɵproperty("ngTemplateOutlet", _r3)("ngTemplateOutletContext", i0.ɵɵpureFunction1(2, _c11, control_r14.errors));
635
- } }
636
- function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template(rf, ctx) { if (rf & 1) {
637
- const _r136 = i0.ɵɵgetCurrentView();
638
- i0.ɵɵelementStart(0, "div", 22)(1, "p", 23);
639
- i0.ɵɵtext(2);
640
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_span_3_Template, 2, 0, "span", 10);
641
- i0.ɵɵelementEnd();
642
- i0.ɵɵelementStart(4, "mis-multi-select-dropdown", 44);
643
- i0.ɵɵlistener("onChange", function DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template_mis_multi_select_dropdown_onChange_4_listener($event) { i0.ɵɵrestoreView(_r136); const ctx_r135 = i0.ɵɵnextContext(2); const field_r13 = ctx_r135.$implicit; const control_r14 = ctx_r135.control; const formgroup_r15 = ctx_r135.formGroup; const ctx_r134 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r134.updateSelectedValueForMultiSelect(field_r13, control_r14, formgroup_r15, $event)); });
644
- i0.ɵɵelementEnd();
645
- i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_ng_container_5_Template, 1, 4, "ng-container", 17);
646
- i0.ɵɵelementEnd();
647
- } if (rf & 2) {
648
- const ctx_r137 = i0.ɵɵnextContext(2);
649
- const formgroup_r15 = ctx_r137.formGroup;
650
- const field_r13 = ctx_r137.$implicit;
651
- const control_r14 = ctx_r137.control;
652
- const ctx_r128 = i0.ɵɵnextContext();
653
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(11, _c12, (formgroup_r15 == null ? null : formgroup_r15.controls == null ? null : formgroup_r15.controls.subFields == null ? null : formgroup_r15.controls.subFields.controls == null ? null : formgroup_r15.controls.subFields.controls.length) && ctx_r128.removeSepratorForSubFields ? "none" : ""));
654
- i0.ɵɵadvance(2);
655
- i0.ɵɵtextInterpolate1(" ", field_r13.title, "");
656
- i0.ɵɵadvance(1);
657
- i0.ɵɵproperty("ngIf", field_r13.validators && field_r13.validators.length > 0);
658
- i0.ɵɵadvance(1);
659
- i0.ɵɵproperty("width", "140px")("showSelectedCount", true)("dropdownListWidth", "256px")("searchEnabled", false)("hideApplyButton", true)("data", field_r13.itemsList)("selectedItems", control_r14.value);
660
- i0.ɵɵadvance(1);
661
- i0.ɵɵproperty("ngIf", control_r14.touched && control_r14.errors);
662
- } }
663
- function DynamicFormComponent_ng_template_3_ng_container_7_Template(rf, ctx) { if (rf & 1) {
664
- i0.ɵɵelementContainerStart(0);
665
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_7_ng_container_1_Template, 2, 6, "ng-container", 11);
666
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_7_ng_template_2_Template, 6, 13, "ng-template", null, 43, i0.ɵɵtemplateRefExtractor);
667
- i0.ɵɵelementContainerEnd();
668
- } if (rf & 2) {
669
- const _r127 = i0.ɵɵreference(3);
670
- const ctx_r23 = i0.ɵɵnextContext(2);
671
- i0.ɵɵadvance(1);
672
- i0.ɵɵproperty("ngIf", ctx_r23.customMultiSelectDropdown)("ngIfElse", _r127);
673
- } }
674
- function DynamicFormComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
675
- i0.ɵɵtemplate(0, DynamicFormComponent_ng_template_3_ng_container_0_Template, 4, 2, "ng-container", 10);
676
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_3_ng_container_1_Template, 4, 2, "ng-container", 10);
677
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_template_3_ng_container_2_Template, 4, 2, "ng-container", 10);
678
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_ng_container_3_Template, 4, 2, "ng-container", 10);
679
- i0.ɵɵtemplate(4, DynamicFormComponent_ng_template_3_ng_container_4_Template, 4, 2, "ng-container", 10);
680
- i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_3_ng_container_5_Template, 4, 2, "ng-container", 10);
681
- i0.ɵɵtemplate(6, DynamicFormComponent_ng_template_3_ng_container_6_Template, 4, 2, "ng-container", 10);
682
- i0.ɵɵtemplate(7, DynamicFormComponent_ng_template_3_ng_container_7_Template, 4, 2, "ng-container", 10);
683
- } if (rf & 2) {
684
- const field_r13 = ctx.$implicit;
685
- i0.ɵɵproperty("ngIf", field_r13.fieldType === "input" && (field_r13.fieldInputType === "text" || field_r13.fieldInputType === "number"));
686
- i0.ɵɵadvance(1);
687
- i0.ɵɵproperty("ngIf", field_r13.fieldType === "input" && field_r13.fieldInputType === "textarea");
688
- i0.ɵɵadvance(1);
689
- i0.ɵɵproperty("ngIf", field_r13.fieldType === "input" && field_r13.fieldInputType === "date");
690
- i0.ɵɵadvance(1);
691
- i0.ɵɵproperty("ngIf", field_r13.fieldType === "boolean" && field_r13.fieldInputType === "toggle");
692
- i0.ɵɵadvance(1);
693
- i0.ɵɵproperty("ngIf", field_r13.fieldType === "singleSelect" && field_r13.fieldInputType === "dropdown");
694
- i0.ɵɵadvance(1);
695
- i0.ɵɵproperty("ngIf", field_r13.fieldType === "singleSelect" && field_r13.fieldInputType === "radio");
696
- i0.ɵɵadvance(1);
697
- i0.ɵɵproperty("ngIf", field_r13.fieldType === "multiSelect" && field_r13.fieldInputType === "checkbox");
698
- i0.ɵɵadvance(1);
699
- i0.ɵɵproperty("ngIf", field_r13.fieldType === "multiSelect" && field_r13.fieldInputType === "dropdown");
700
- } }
701
- const _c16 = function () { return { "flex-basis": "100%", "height": "0" }; };
702
- function DynamicFormComponent_ng_template_5_ng_container_1_Template(rf, ctx) { if (rf & 1) {
703
- i0.ɵɵelementContainerStart(0);
704
- i0.ɵɵelementStart(1, "p", 46);
705
- i0.ɵɵtext(2);
706
- i0.ɵɵelementEnd();
707
- i0.ɵɵelement(3, "div", 47);
708
- i0.ɵɵelementContainerEnd();
709
- } if (rf & 2) {
710
- const error_r140 = ctx.$implicit;
711
- i0.ɵɵadvance(2);
712
- i0.ɵɵtextInterpolate1(" ", " \u2022 \u00A0" + error_r140.value, " ");
713
- i0.ɵɵadvance(1);
714
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction0(2, _c16));
715
- } }
716
- function DynamicFormComponent_ng_template_5_Template(rf, ctx) { if (rf & 1) {
717
- i0.ɵɵelementStart(0, "div", 45);
718
- i0.ɵɵtemplate(1, DynamicFormComponent_ng_template_5_ng_container_1_Template, 4, 3, "ng-container", 9);
719
- i0.ɵɵpipe(2, "keyvalue");
720
- i0.ɵɵelementEnd();
721
- } if (rf & 2) {
722
- const errors_r138 = ctx.$implicit;
723
- i0.ɵɵadvance(1);
724
- i0.ɵɵproperty("ngForOf", i0.ɵɵpipeBind1(2, 1, errors_r138));
725
- } }
726
- dayjs.extend(utc);
727
- dayjs.extend(timezone);
728
- dayjs.extend(customParseFormat);
729
- export class DynamicFormComponent {
730
- constructor() {
731
- /**
732
- * formFields: Dynamic fields recieved from the API metadata to build a dynamic form
733
- * formValues: Holds the value of the dynamic form with "key" being dynamic field "title"
734
- * and value being the user input.
735
- */
736
- this.formFields = [];
737
- this.formValues = {};
738
- // Need to deprecate these inputs and use constants.
739
- this.activeBtnIconUrl = "";
740
- this.calendarIconUrl = "";
741
- this.removeIconUrl = "";
742
- this.removeSepratorForSubFields = false;
743
- /**
744
- * formUpdated: Emits formValues Object whenever there is a change in the dynamic form.
745
- */
746
- this.formUpdated = new EventEmitter();
747
- /**
748
- * formValid: Emits boolean depending on validity of the form
749
- */
750
- this.formValid = new EventEmitter();
751
- /**
752
- * formInitialized: Emits dynamic form API on form initilization
753
- */
754
- this.formInitialized = new EventEmitter();
755
- this.fieldRemoved = new EventEmitter();
756
- }
757
- ngOnInit() {
758
- // Building the form
759
- this.dynamicForm = this.generateDynamicForm(this.formFields, this.formValues);
760
- // Subscribing to form changes and emiting values.
761
- this.valueChangesSubscription$ = this.dynamicForm.valueChanges.subscribe(formValue => {
762
- this.onFormValueChanges();
763
- });
764
- //api to expose functions
765
- this.dynamicFormAPI = {
766
- defaultFormValues: () => {
767
- return this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
768
- }
769
- };
770
- this.formInitialized.emit(this.dynamicFormAPI);
771
- this.formValid.emit(this.dynamicForm.valid);
772
- }
773
- ngOnDestroy() {
774
- this.valueChangesSubscription$?.unsubscribe();
775
- }
776
- onFormValueChanges() {
777
- let formValues = this.generateDynamicFieldsValueObject(this.dynamicForm.value.dynamicFields);
778
- this.formValid.emit(this.dynamicForm.valid);
779
- this.formUpdated.emit(formValues);
780
- console.log(formValues);
781
- }
782
- generateDynamicFieldsValueObject(formValues) {
783
- let dynamicFieldsValue = {};
784
- formValues.forEach((fieldValue, index) => {
785
- if (typeof fieldValue?.value === 'string')
786
- fieldValue.value = fieldValue?.value?.trim();
787
- let formattedValue = this.mapFormFieldToFormValue(this.formFields[index], fieldValue.value);
788
- if (fieldValue.subFields?.length > 0) {
789
- let formattedSubFieldsValues = {};
790
- let subField = this.formFields[index].subFields;
791
- if (this.formFields[index].fieldType === 'singleSelect' || this.formFields[index].fieldType === 'multiSelect') {
792
- subField = subField.filter((subField) => subField.parentConfigValue === fieldValue.value.value);
793
- }
794
- fieldValue.subFields.forEach((subFieldValue, subIndex) => {
795
- let subFormField = subField[subIndex];
796
- if (typeof subFieldValue?.value === 'string')
797
- subFieldValue.value = subFieldValue?.value?.trim();
798
- formattedSubFieldsValues[subFormField.configName] = this.mapFormFieldToFormValue(subFormField, subFieldValue);
799
- });
800
- dynamicFieldsValue[this.formFields[index].configName] = {
801
- value: formattedValue,
802
- subFields: formattedSubFieldsValues
803
- };
804
- }
805
- else {
806
- dynamicFieldsValue[this.formFields[index].configName] = formattedValue;
807
- }
808
- });
809
- return dynamicFieldsValue;
810
- }
811
- generateDynamicForm(formFields, formValues) {
812
- let formArray = new UntypedFormArray([]);
813
- for (let field of formFields) {
814
- let fieldValue = formValues[field.configName]?.value ? formValues[field.configName].value : formValues[field.configName];
815
- let fieldControl = this.mapFormValueToFormField(field, fieldValue);
816
- let subFieldsControls = this.generateSubDynamicFields(formValues, field, fieldControl.value);
817
- formArray.push(new UntypedFormGroup({
818
- value: fieldControl,
819
- subFields: subFieldsControls
820
- }));
821
- }
822
- return new UntypedFormGroup({
823
- dynamicFields: formArray
824
- });
825
- }
826
- getDynamicFieldsControls() {
827
- return this.dynamicForm.get("dynamicFields");
828
- }
829
- updateSubDynamicFields(field, formGroup, value) {
830
- if (field.subFields?.length > 0) {
831
- let subFieldsControls = this.generateSubDynamicFields(this.formValues, field, value);
832
- formGroup.removeControl('subFields');
833
- formGroup.addControl('subFields', subFieldsControls);
834
- }
835
- }
836
- updateSelectedValueForSingleSelect(field, control, formGroup, value) {
837
- if (control.value?.value !== value.value) {
838
- control.setValue(value);
839
- }
840
- else
841
- control.setValue('');
842
- this.updateSubDynamicFields(field, formGroup, value);
843
- control.markAsTouched();
844
- }
845
- updateSelectedValueForMultiSelect(field, control, formGroup, values) {
846
- let selectedValues = control.value;
847
- for (let value of values) {
848
- let itemIndex = selectedValues.findIndex(item => item.label === value.label);
849
- if (itemIndex > -1) {
850
- selectedValues.splice(itemIndex, 1);
851
- }
852
- else {
853
- selectedValues.push({ ...value });
854
- }
855
- }
856
- control.setValue(selectedValues);
857
- this.updateSubDynamicFields(field, formGroup, values);
858
- control.markAsTouched();
859
- }
860
- isCheckBoxSelected(value, selectedValues) {
861
- return selectedValues.findIndex(item => item.label === value) > -1;
862
- }
863
- findSelectedSubFieldConfig(subfields, value, subFieldIndex) {
864
- try {
865
- const selectedSubFieldConfig = subfields.filter(item => item.parentConfigValue === value)[subFieldIndex];
866
- return selectedSubFieldConfig;
867
- }
868
- catch (e) {
869
- throw new Error('Subfield index not found');
870
- }
871
- }
872
- matchParentConfig(subfields, value) {
873
- if (!subfields || subfields.length === 0) {
874
- return false;
875
- }
876
- return subfields.some(item => item.parentConfigValue === value);
877
- }
878
- generateSubDynamicFields(formValues, parentField, parentValue) {
879
- let controls = new UntypedFormArray([]);
880
- let subFields = parentField.subFields;
881
- let subFieldsValues = formValues[parentField.configName]?.subFields ? formValues[parentField.configName].subFields : {};
882
- if (!subFields)
883
- return controls;
884
- if (parentField.fieldType === 'singleSelect') {
885
- subFields = subFields.filter((subField) => subField.parentConfigValue === parentValue?.value);
886
- }
887
- else if (parentField.fieldType === 'multiSelect') {
888
- let parentValues = new Set(parentValue.map((value) => value.value));
889
- subFields = subFields.filter((subField) => parentValues.has(subField.parentConfigValue));
890
- }
891
- if (subFields?.length > 0) {
892
- for (let subField of subFields) {
893
- controls.push(this.mapFormValueToFormField(subField, subFieldsValues[subField.configName]));
894
- }
895
- }
896
- return controls;
897
- }
898
- mapFormValueToFormField(formField, formValue) {
899
- let validators = formField.validators ? [dynamicFieldValidator(formField.validators)] : [];
900
- let control = new UntypedFormControl(null, validators);
901
- if (formField.fieldType === "input") {
902
- if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
903
- control.setValue(formValue ? formValue : "");
904
- else if (formField.fieldInputType === "number")
905
- control.setValue(formValue ? formValue : 0);
906
- else if (formField.fieldInputType === "date") {
907
- if (formValue && typeof formValue === "number") {
908
- control.setValue(dayjs(formValue).tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
909
- }
910
- else {
911
- control.setValue(dayjs().tz(formField.fieldConfig.timezone).format(formField.fieldConfig.format));
912
- }
913
- }
914
- }
915
- else if (formField.fieldType === "singleSelect") {
916
- const findSelectedValue = () => {
917
- let index = formField.itemsList.findIndex(item => item.value === formValue);
918
- return index >= 0 ? formField.itemsList[index] : "";
919
- };
920
- if (formField.fieldInputType === "dropdown") {
921
- if (!formValue)
922
- control.setValue(formField.itemsList[0]);
923
- else
924
- control.setValue(findSelectedValue());
925
- }
926
- else if (formField.fieldInputType === "radio") {
927
- control.setValue(findSelectedValue());
928
- }
929
- }
930
- else if (formField.fieldType === "multiSelect") {
931
- if (formValue && Array.isArray(formValue)) {
932
- let selectedValues = [];
933
- for (let value of formValue) {
934
- let index = formField.itemsList.findIndex(item => item.value === value);
935
- if (index > -1)
936
- selectedValues.push({ ...formField.itemsList[index] });
937
- }
938
- control.setValue(selectedValues);
939
- }
940
- else {
941
- control.setValue([]);
942
- }
943
- }
944
- else if (formField.fieldType === "boolean") {
945
- control.setValue(!!formValue);
946
- }
947
- else
948
- control.setValue(null);
949
- return control;
950
- }
951
- mapFormFieldToFormValue(formField, formValue) {
952
- if (formField.fieldType === "input") {
953
- if (formField.fieldInputType === "text" || formField.fieldInputType === "textarea")
954
- return formValue;
955
- else if (formField.fieldInputType === "number")
956
- return +formValue;
957
- else if (formField.fieldInputType === "date") {
958
- return dayjs.tz(formValue, formField.fieldConfig.format, formField.fieldConfig.timezone).valueOf();
959
- }
960
- }
961
- else if (formField.fieldType === "singleSelect") {
962
- return formValue?.value ?? '';
963
- }
964
- else if (formField.fieldType === "multiSelect") {
965
- return formValue?.map(item => item.value);
966
- }
967
- else if (formField.fieldType === "boolean") {
968
- return formValue;
969
- }
970
- else
971
- return formValue;
972
- }
973
- }
974
- DynamicFormComponent.ɵfac = function DynamicFormComponent_Factory(t) { return new (t || DynamicFormComponent)(); };
975
- DynamicFormComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DynamicFormComponent, selectors: [["mis-dynamic-form"]], contentQueries: function DynamicFormComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
976
- i0.ɵɵcontentQuery(dirIndex, _c0, 5);
977
- i0.ɵɵcontentQuery(dirIndex, _c1, 5);
978
- i0.ɵɵcontentQuery(dirIndex, _c2, 5);
979
- i0.ɵɵcontentQuery(dirIndex, _c3, 5);
980
- i0.ɵɵcontentQuery(dirIndex, _c4, 5);
981
- i0.ɵɵcontentQuery(dirIndex, _c5, 5);
982
- i0.ɵɵcontentQuery(dirIndex, _c6, 5);
983
- i0.ɵɵcontentQuery(dirIndex, _c7, 5);
984
- } if (rf & 2) {
985
- let _t;
986
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextNumber = _t.first);
987
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputTextarea = _t.first);
988
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customInputDate = _t.first);
989
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customBooleanToggle = _t.first);
990
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectDropdown = _t.first);
991
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customSingleSelectRadio = _t.first);
992
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectCheckbox = _t.first);
993
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customMultiSelectDropdown = _t.first);
994
- } }, inputs: { formFields: "formFields", formValues: "formValues", activeBtnIconUrl: "activeBtnIconUrl", calendarIconUrl: "calendarIconUrl", removeIconUrl: "removeIconUrl", removeSepratorForSubFields: "removeSepratorForSubFields" }, outputs: { formUpdated: "formUpdated", formValid: "formValid", formInitialized: "formInitialized", fieldRemoved: "fieldRemoved" }, decls: 7, vars: 2, consts: [[3, "formGroup"], ["formArrayName", "dynamicFields"], [3, "formGroupName", 4, "ngFor", "ngForOf"], ["dynamicField", ""], ["dynamicFieldErrors", ""], [3, "formGroupName"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], ["class", "sub-dynamic-form", 4, "ngIf"], [1, "sub-dynamic-form"], [4, "ngFor", "ngForOf"], [4, "ngIf"], [4, "ngIf", "ngIfElse"], ["defaultInputTextNumber", ""], [1, "dynamic-field", "multi-line-field-container", 3, "ngStyle"], [1, "h7", "field-title-sm"], [2, "flex-basis", "100%"], [1, "input-field", "ip-text", 3, "type", "formControl", "ngStyle", "placeholder", "min", "ngModelChange"], [3, "ngTemplateOutlet", "ngTemplateOutletContext", 4, "ngIf"], ["defaultInputTextarea", ""], ["type", "text", 1, "input-field", "ip-textarea", 3, "ngStyle", "placeholder", "formControl", "ngModelChange"], ["defaultInputDate", ""], ["class", "dynamic-field single-line-field-container", 3, "ngStyle", 4, "ngIf"], [1, "dynamic-field", "single-line-field-container", 3, "ngStyle"], [1, "h6"], [1, "date-picker-container"], ["readonly", "", "misTzDp", "", 1, "date-picker", 3, "dpConfig", "selectedDate", "offsetY", "value", "dateChange"], ["dp", ""], ["alt", "data-picker", "class", "date-picker-icon", 3, "src", "click", 4, "ngIf"], ["alt", "data-picker", 1, "date-picker-icon", 3, "src", "click"], ["defaultBooleanToggle", ""], [3, "control", "valueChanged"], ["defaultSingleSelectDropdown", ""], [3, "ngClass"], [3, "searchEnabled", "width", "data", "selectedItem", "onChange"], ["class", "remove-icon", 3, "src", "click", 4, "ngIf"], [1, "remove-icon", 3, "src", "click"], ["defaultSingleSelectRadio", ""], ["id", "checkboxes-container"], ["class", "radio-checkbox-common", 3, "ngClass", "click", 4, "ngFor", "ngForOf"], [1, "radio-checkbox-common", 3, "ngClass", "click"], ["alt", "", 3, "src", 4, "ngIf"], ["alt", "", 3, "src"], ["defaultMultiSelectCheckbox", ""], ["defaultMultiSelectDropdown", ""], [3, "width", "showSelectedCount", "dropdownListWidth", "searchEnabled", "hideApplyButton", "data", "selectedItems", "onChange"], ["id", "error-messages-container"], [1, "h8"], [3, "ngStyle"]], template: function DynamicFormComponent_Template(rf, ctx) { if (rf & 1) {
995
- i0.ɵɵelementStart(0, "form", 0);
996
- i0.ɵɵelementContainerStart(1, 1);
997
- i0.ɵɵtemplate(2, DynamicFormComponent_ng_container_2_Template, 3, 8, "ng-container", 2);
998
- i0.ɵɵelementContainerEnd();
999
- i0.ɵɵelementEnd();
1000
- i0.ɵɵtemplate(3, DynamicFormComponent_ng_template_3_Template, 8, 8, "ng-template", null, 3, i0.ɵɵtemplateRefExtractor);
1001
- i0.ɵɵtemplate(5, DynamicFormComponent_ng_template_5_Template, 3, 3, "ng-template", null, 4, i0.ɵɵtemplateRefExtractor);
1002
- } if (rf & 2) {
1003
- i0.ɵɵproperty("formGroup", ctx.dynamicForm);
1004
- i0.ɵɵadvance(2);
1005
- i0.ɵɵproperty("ngForOf", ctx.getDynamicFieldsControls().controls);
1006
- } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i1.NgTemplateOutlet, i1.NgStyle, i2.ɵNgNoValidate, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormControlDirective, i2.FormGroupDirective, i2.FormGroupName, i2.FormArrayName, i3.DropdownComponent, i4.SwitchComponent, i5.MultiSelectDropdownComponent, i6.TzDatepickerDirective, i1.KeyValuePipe], styles: ["p[_ngcontent-%COMP%]{margin:0;cursor:default} .main-container{margin:0;max-width:100%}.sub-dynamic-form[_ngcontent-%COMP%]{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field[_ngcontent-%COMP%] .container{height:32px!important}.single-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm[_ngcontent-%COMP%]{margin-bottom:8px;cursor:default}.input-field[_ngcontent-%COMP%]{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text[_ngcontent-%COMP%]{height:44px;padding:8px 12px}.ip-textarea[_ngcontent-%COMP%]{max-height:94px;padding:8px}input[_ngcontent-%COMP%]:focus{outline:none}input[_ngcontent-%COMP%]::placeholder{color:var(--grey-seperators)}textarea[_ngcontent-%COMP%]:focus{outline:none}.date-picker-container[_ngcontent-%COMP%]{position:relative;width:140px}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container[_ngcontent-%COMP%] .date-picker[_ngcontent-%COMP%]:hover{background-color:var(--grey-hover)}.date-picker-container[_ngcontent-%COMP%] .date-picker-icon[_ngcontent-%COMP%]{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form[_ngcontent-%COMP%] .dynamic-field[_ngcontent-%COMP%]:last-child{border-bottom:none!important}#checkboxes-container[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-muted);cursor:pointer}.radio-checkbox-common[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:8px}.checkbox-active[_ngcontent-%COMP%]{background-color:var(--pmry-500)}.checkbox-active[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--text-white)}#error-messages-container[_ngcontent-%COMP%]{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{color:var(--sem-error)}.removeable-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center}.removeable-container[_ngcontent-%COMP%] .remove-icon[_ngcontent-%COMP%]{cursor:pointer;margin-left:8px;max-width:24px}span[_ngcontent-%COMP%]{color:var(--sem-error)}"] });
1007
- (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DynamicFormComponent, [{
1008
- type: Component,
1009
- args: [{ selector: "mis-dynamic-form", template: "<form [formGroup]=\"dynamicForm\">\n <ng-container formArrayName=\"dynamicFields\">\n <ng-container [formGroupName]=\"i\" *ngFor=\"let fieldControl of getDynamicFieldsControls().controls; let i = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: formFields[i],\n formGroup: fieldControl,\n control: fieldControl.controls.value\n }\"\n >\n </ng-container>\n <div class=\"sub-dynamic-form\" *ngIf=\"fieldControl?.value && (!!formFields[i]?.subFields && formFields[i]?.subFields?.length > 0 && matchParentConfig(formFields[i]?.subFields, fieldControl?.controls?.value?.value?.value))\">\n <ng-container *ngFor=\"let subFieldControl of fieldControl.controls.subFields.controls; let j = index\">\n <ng-container\n [ngTemplateOutlet]=\"dynamicField\"\n [ngTemplateOutletContext]=\"{\n $implicit: findSelectedSubFieldConfig(formFields[i]?.subFields, fieldControl.controls.value.value.value,j),\n control: subFieldControl\n }\">\n </ng-container>\n </ng-container>\n </div>\n </ng-container>\n </ng-container>\n</form>\n\n\n<ng-template #dynamicField let-field let-control=\"control\" let-formgroup=\"formGroup\">\n\n <!-- fieldType: 'input' fieldInputType: 'text' | 'number' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && (field.fieldInputType === 'text' || field.fieldInputType === 'number')\">\n <ng-container *ngIf=\"customInputTextNumber; else defaultInputTextNumber\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextNumber\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextNumber>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field?.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <input class=\"input-field ip-text\" [type]=\"field.fieldInputType\" [formControl]=\"control\"\n (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\" \n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" \n [min]=\"field.fieldInputType === 'number' ? 0 : '' \"/>\n <ng-container *ngIf=\"control.touched && control.errors\"\n [ngTemplateOutlet]=\"dynamicFieldErrors\" \n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\"\n >\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'textarea' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'textarea'\">\n <ng-container *ngIf=\"customInputTextarea; else defaultInputTextarea\">\n <ng-template\n [ngTemplateOutlet]=\"customInputTextarea\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputTextarea>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <textarea class=\"input-field ip-textarea\" type=\"text\"\n [ngStyle]=\"{'border': control.touched && control.errors ? '1px solid #B00020': ''}\"\n [placeholder]=\"field.placeholderText ? field.placeholderText : 'Input Text'\" [formControl]=\"control\" (ngModelChange)=\"updateSubDynamicFields(field, formgroup, $event)\"></textarea>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n <!-- fieldType: 'input' fieldInputType: 'date' -->\n <ng-container *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <ng-container *ngIf=\"customInputDate; else defaultInputDate\">\n <ng-template\n [ngTemplateOutlet]=\"customInputDate\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultInputDate>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\"\n *ngIf=\"field.fieldType === 'input' && field.fieldInputType === 'date'\">\n <p class=\"h6\">\n {{ field.title }} <span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div class=\"date-picker-container\">\n <input class=\"date-picker\" readonly misTzDp [dpConfig]=\"field.fieldConfig\"\n (dateChange)=\"control.setValue($event)\" [selectedDate]=\"control.value\" [offsetY]=\"0\"\n [value]=\"control.value\" #dp />\n <img alt=\"data-picker\" *ngIf=\"calendarIconUrl\" class=\"date-picker-icon\" [src]=\"calendarIconUrl\"\n (click)=\"dp.click()\" />\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'boolean' fieldInputType: 'toggle' -->\n <ng-container *ngIf=\"field.fieldType === 'boolean' && field.fieldInputType === 'toggle'\">\n <ng-container *ngIf=\"customBooleanToggle; else defaultBooleanToggle\">\n <ng-template\n [ngTemplateOutlet]=\"customBooleanToggle\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultBooleanToggle>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-switch [control]=\"control\" (valueChanged)=\"updateSubDynamicFields(field, formgroup, $event)\"></mis-switch>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div> \n </ng-template>\n </ng-container>\n\n <!-- fieldType: 'singleSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customSingleSelectDropdown; else defaultSingleSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div [ngClass]=\"{'removeable-container' : field?.isRemoveable}\">\n <mis-dropdown [searchEnabled]=\"false\" [width]=\"'140px'\" [data]=\"field.itemsList\" [selectedItem]=\"control.value\"\n (onChange)=\"updateSelectedValueForSingleSelect(field, control, formgroup, $event);\">\n </mis-dropdown>\n <img *ngIf=\"field.isRemoveable && removeIconUrl\" class=\"remove-icon\" [src]=\"removeIconUrl\" (click)=\"fieldRemoved.emit(field)\">\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container >\n \n\n <!-- fieldType: 'singleSelect' fieldInputType: 'radio' -->\n <ng-container *ngIf=\"field.fieldType === 'singleSelect' && field.fieldInputType === 'radio'\">\n <ng-container *ngIf=\"customSingleSelectRadio; else defaultSingleSelectRadio\">\n <ng-template\n [ngTemplateOutlet]=\"customSingleSelectRadio\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultSingleSelectRadio>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': item.label === control.value?.label }\"\n (click)=\"updateSelectedValueForSingleSelect(field, control, formgroup, item);\">\n <img *ngIf=\"(item.label === control.value?.label) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\" alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n \n\n <!-- fieldType: 'multiSelect' fieldInputType: 'checkbox' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'checkbox'\">\n <ng-container *ngIf=\"customMultiSelectCheckbox; else defaultMultiSelectCheckbox\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectCheckbox\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectCheckbox>\n <div class=\"dynamic-field multi-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h7 field-title-sm\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <div style=\"flex-basis: 100%\"></div>\n <div id=\"checkboxes-container\">\n <div class=\"radio-checkbox-common\" *ngFor=\"let item of field.itemsList\"\n [ngClass]=\"{ 'checkbox-active': isCheckBoxSelected(item.label, control.value) }\"\n (click)=\"updateSelectedValueForMultiSelect(field, control, formgroup, [item])\">\n <img *ngIf=\"isCheckBoxSelected(item.label, control.value) && activeBtnIconUrl\" [src]=\"activeBtnIconUrl\"\n alt=\"\" />\n <p class=\"h6\">{{ item.label }}</p>\n </div>\n </div>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n\n <!-- fieldType: 'multiSelect' fieldInputType: 'dropdown' -->\n <ng-container *ngIf=\"field.fieldType === 'multiSelect' && field.fieldInputType === 'dropdown'\">\n <ng-container *ngIf=\"customMultiSelectDropdown; else defaultMultiSelectDropdown\">\n <ng-template\n [ngTemplateOutlet]=\"customMultiSelectDropdown\"\n [ngTemplateOutletContext]=\"{ field: field, control: control, formgroup: formgroup }\"\n ></ng-template>\n </ng-container>\n <ng-template #defaultMultiSelectDropdown>\n <div class=\"dynamic-field single-line-field-container\"\n [ngStyle]=\"{'border-bottom': (formgroup?.controls?.subFields?.controls?.length && removeSepratorForSubFields) ? 'none':''}\">\n <p class=\"h6\">\n {{ field.title }}<span *ngIf=\"field.validators && field.validators.length > 0\"> *</span>\n </p>\n <mis-multi-select-dropdown [width]=\"'140px'\" [showSelectedCount]=\"true\" [dropdownListWidth]=\"'256px'\"\n [searchEnabled]=\"false\" [hideApplyButton]=\"true\" [data]=\"field.itemsList\"\n [selectedItems]=\"control.value\" (onChange)=\"updateSelectedValueForMultiSelect(field, control, formgroup, $event);\"></mis-multi-select-dropdown>\n <ng-container *ngIf=\"control.touched && control.errors\" [ngTemplateOutlet]=\"dynamicFieldErrors\"\n [ngTemplateOutletContext]=\"{ $implicit: control.errors }\">\n </ng-container>\n </div>\n </ng-template>\n </ng-container>\n\n</ng-template>\n\n<ng-template #dynamicFieldErrors let-errors>\n <div id=\"error-messages-container\">\n <ng-container *ngFor=\"let error of errors | keyvalue\">\n <p class=\"h8\">\n {{\" \u2022 &nbsp;\" + error.value}}\n </p>\n <div [ngStyle]=\"{ 'flex-basis': '100%', 'height': '0' }\"></div>\n </ng-container>\n </div>\n</ng-template>", styles: ["p{margin:0;cursor:default}::ng-deep .main-container{margin:0;max-width:100%}.sub-dynamic-form{padding-left:24px;border-bottom:1px solid var(--grey-seperators)}.dynamic-field ::ng-deep .container{height:32px!important}.single-line-field-container{display:flex;justify-content:space-between;align-items:center;padding:28px 16px;border-bottom:1px solid var(--grey-seperators)}.multi-line-field-container{display:flex;justify-content:flex-start;align-items:flex-start;padding:28px 16px;flex-wrap:wrap;border-bottom:1px solid var(--grey-seperators)}.field-title-sm{margin-bottom:8px;cursor:default}.input-field{width:100%;background-color:var(--grey-bg-1);border:1px solid var(--grey-seperators);border-radius:6px}.ip-text{height:44px;padding:8px 12px}.ip-textarea{max-height:94px;padding:8px}input:focus{outline:none}input::placeholder{color:var(--grey-seperators)}textarea:focus{outline:none}.date-picker-container{position:relative;width:140px}.date-picker-container .date-picker{cursor:pointer;height:32px;width:100%;font-size:14px;border-radius:6px;padding:0 12px;border:1px solid var(--grey-seperators);inset:10px auto auto 80px;background-color:var(--text-white)}.date-picker-container .date-picker:hover{background-color:var(--grey-hover)}.date-picker-container .date-picker-icon{position:absolute;top:50%;right:12px;transform:translateY(-50%);cursor:pointer}form .dynamic-field:last-child{border-bottom:none!important}#checkboxes-container{display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}.radio-checkbox-common{display:flex;justify-content:center;align-items:center;cursor:pointer;margin-right:8px;margin-bottom:8px;background-color:var(--text-white);padding:12px 16px;border:1px solid var(--text-muted);border-radius:8px}.radio-checkbox-common p{color:var(--text-muted);cursor:pointer}.radio-checkbox-common img{margin-right:8px}.checkbox-active{background-color:var(--pmry-500)}.checkbox-active p{color:var(--text-white)}#error-messages-container{margin-top:4px;width:100%;display:flex;justify-content:flex-start;align-items:center;flex-wrap:wrap}#error-messages-container p{color:var(--sem-error)}.removeable-container{display:flex;justify-content:center;align-items:center}.removeable-container .remove-icon{cursor:pointer;margin-left:8px;max-width:24px}span{color:var(--sem-error)}\n"] }]
1010
- }], function () { return []; }, { formFields: [{
1011
- type: Input
1012
- }], formValues: [{
1013
- type: Input
1014
- }], activeBtnIconUrl: [{
1015
- type: Input
1016
- }], calendarIconUrl: [{
1017
- type: Input
1018
- }], removeIconUrl: [{
1019
- type: Input
1020
- }], removeSepratorForSubFields: [{
1021
- type: Input
1022
- }], formUpdated: [{
1023
- type: Output
1024
- }], formValid: [{
1025
- type: Output
1026
- }], formInitialized: [{
1027
- type: Output
1028
- }], fieldRemoved: [{
1029
- type: Output
1030
- }], customInputTextNumber: [{
1031
- type: ContentChild,
1032
- args: ["customInputTextNumber", { static: false }]
1033
- }], customInputTextarea: [{
1034
- type: ContentChild,
1035
- args: ["customInputTextarea", { static: false }]
1036
- }], customInputDate: [{
1037
- type: ContentChild,
1038
- args: ["customInputDate", { static: false }]
1039
- }], customBooleanToggle: [{
1040
- type: ContentChild,
1041
- args: ["customBooleanToggle", { static: false }]
1042
- }], customSingleSelectDropdown: [{
1043
- type: ContentChild,
1044
- args: ["customSingleSelectDropdown", { static: false }]
1045
- }], customSingleSelectRadio: [{
1046
- type: ContentChild,
1047
- args: ["customSingleSelectRadio", { static: false }]
1048
- }], customMultiSelectCheckbox: [{
1049
- type: ContentChild,
1050
- args: ["customMultiSelectCheckbox", { static: false }]
1051
- }], customMultiSelectDropdown: [{
1052
- type: ContentChild,
1053
- args: ["customMultiSelectDropdown", { static: false }]
1054
- }] }); })();
1055
- export const dynamicFieldValidator = (validators) => {
1056
- return (control) => {
1057
- let value = control.value;
1058
- if (Array.isArray(value)) {
1059
- return null;
1060
- }
1061
- else if (typeof value === 'object') {
1062
- value = value?.value ? value.value : '';
1063
- }
1064
- let errors = null;
1065
- validators.forEach((validator) => {
1066
- let error = null;
1067
- let message = validator.message;
1068
- switch (validator.type) {
1069
- case "Required":
1070
- error = Validators.required(control);
1071
- if (!error && typeof value === 'string' && value.trim() === '') {
1072
- error = { Required: message };
1073
- }
1074
- if (error)
1075
- error = { Required: message };
1076
- break;
1077
- case "MinLength":
1078
- error = Validators.minLength(+validator.value)(control);
1079
- message = message.replace('${0}', error?.minlength.requiredLength);
1080
- if (error)
1081
- error = { MinLength: message };
1082
- break;
1083
- case "MaxLength":
1084
- error = Validators.maxLength(+validator.value)(control);
1085
- message = message.replace('${0}', error?.actualLength);
1086
- if (error)
1087
- error = { MaxLength: message };
1088
- break;
1089
- case "Email":
1090
- error = Validators.email(control);
1091
- if (error)
1092
- error = { Email: message };
1093
- break;
1094
- case "Custom":
1095
- error = Validators.pattern(`${validator.value}`)(control);
1096
- if (error)
1097
- error = { Custom: message };
1098
- break;
1099
- default:
1100
- break;
1101
- }
1102
- if (error)
1103
- errors = { ...errors, ...error };
1104
- });
1105
- return errors;
1106
- };
1107
- };
1108
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZHluYW1pYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2R5bmFtaWMtZm9ybS9keW5hbWljLWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvZHluYW1pYy1mb3JtL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQWdCLEtBQUssRUFBcUIsTUFBTSxFQUFlLE1BQU0sZUFBZSxDQUFDO0FBRW5JLE9BQU8sRUFBbUIsZ0JBQWdCLEVBQUUsa0JBQWtCLEVBQUUsZ0JBQWdCLEVBQWlDLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXBKLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQztBQUMxQixPQUFPLFFBQVEsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQztBQUNuQyxPQUFPLGlCQUFpQixNQUFNLGdDQUFnQyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNNdEQsNkJBQXNHO0lBQ3BHLDJCQU1lO0lBQ2pCLDBCQUFlOzs7Ozs7Ozs7SUFOWCxlQUFpQztJQUFqQyxzQ0FBaUMsNk9BQUE7OztJQUh2Qyw4QkFBOE47SUFDNU4sNEdBUWU7SUFDakIsaUJBQU07OztJQVRzQyxlQUE2QztJQUE3QyxxRUFBNkM7Ozs7SUFYM0YsZ0NBQWtIO0lBQzlHLDJCQVFhO0lBQ2Ysb0ZBVU07SUFDUiwwQkFBZTs7Ozs7O0lBckJELG9DQUFtQjtJQUU3QixlQUFpQztJQUFqQyxzQ0FBaUMsaUlBQUE7SUFRSixlQUE2TDtJQUE3TCxzbkJBQTZMOzs7OztJQW9COU4sNkJBQXlFO0lBQ3ZFLGlJQUdlO0lBQ2pCLDBCQUFlOzs7Ozs7O0lBSFgsZUFBMEM7SUFBMUMsZ0VB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IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFRlbXBsYXRlUmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IE5zRHluYW1pY0Zvcm0gfSBmcm9tIFwiLi9keW5hbWljLWZvcm0ubmFtZXNwYWNlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQXJyYXksIFVudHlwZWRGb3JtQ29udHJvbCwgVW50eXBlZEZvcm1Hcm91cCwgVmFsaWRhdGlvbkVycm9ycywgVmFsaWRhdG9yRm4sIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcblxuaW1wb3J0IGRheWpzIGZyb20gJ2RheWpzJztcbmltcG9ydCB0aW1lem9uZSBmcm9tICdkYXlqcy9wbHVnaW4vdGltZXpvbmUnO1xuaW1wb3J0IHV0YyBmcm9tICdkYXlqcy9wbHVnaW4vdXRjJztcbmltcG9ydCBjdXN0b21QYXJzZUZvcm1hdCBmcm9tICdkYXlqcy9wbHVnaW4vY3VzdG9tUGFyc2VGb3JtYXQnXG5cbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKHRpbWV6b25lKTtcbmRheWpzLmV4dGVuZChjdXN0b21QYXJzZUZvcm1hdCk7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwicnhqc1wiO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6IFwibWlzLWR5bmFtaWMtZm9ybVwiLFxuICB0ZW1wbGF0ZVVybDogXCIuL2R5bmFtaWMtZm9ybS5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vZHluYW1pYy1mb3JtLmNvbXBvbmVudC5zY3NzXCJdXG59KVxuZXhwb3J0IGNsYXNzIER5bmFtaWNGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogZm9ybUZpZWxkczogIER5bmFtaWMgZmllbGRzIHJlY2lldmVkIGZyb20gdGhlIEFQSSBtZXRhZGF0YSB0byBidWlsZCBhIGR5bmFtaWMgZm9ybVxuICAgKiBmb3JtVmFsdWVzOiAgSG9sZHMgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZvcm0gd2l0aCBcImtleVwiIGJlaW5nIGR5bmFtaWMgZmllbGQgXCJ0aXRsZVwiXG4gICAqICAgICAgICAgICAgICBhbmQgdmFsdWUgYmVpbmcgdGhlIHVzZXIgaW5wdXQuXG4gICAqL1xuICBASW5wdXQoKSBmb3JtRmllbGRzOiBBcnJheTxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+ID0gW107XG4gIEBJbnB1dCgpIGZvcm1WYWx1ZXM6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcbiAgLy8gTmVlZCB0byBkZXByZWNhdGUgdGhlc2UgaW5wdXRzIGFuZCB1c2UgY29uc3RhbnRzLlxuICBASW5wdXQoKSBhY3RpdmVCdG5JY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgY2FsZW5kYXJJY29uVXJsID0gXCJcIjtcbiAgQElucHV0KCkgcmVtb3ZlSWNvblVybCA9IFwiXCI7XG4gIEBJbnB1dCgpIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzID0gZmFsc2U7XG4gIC8qKlxuICAgKiBkeW5hbWljRm9ybTogQ29uc3RydWN0ZWQgdXNpbmcgZm9ybUZpZWxkcyBhbmQgZm9ybVZhbHVlcyhpbiBjYXNlIG9mIGVkaXQpXG4gICAqL1xuICBkeW5hbWljRm9ybTogVW50eXBlZEZvcm1Hcm91cDtcblxuICAvKipcbiAgICogZm9ybVVwZGF0ZWQ6IEVtaXRzIGZvcm1WYWx1ZXMgT2JqZWN0IHdoZW5ldmVyIHRoZXJlIGlzIGEgY2hhbmdlIGluIHRoZSBkeW5hbWljIGZvcm0uXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVVwZGF0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHsgW2tleTogc3RyaW5nXTogYW55IH0+KCk7XG4gIC8qKlxuICAgKiBmb3JtVmFsaWQ6IEVtaXRzIGJvb2xlYW4gZGVwZW5kaW5nIG9uIHZhbGlkaXR5IG9mIHRoZSBmb3JtXG4gICAqL1xuICBAT3V0cHV0KCkgZm9ybVZhbGlkID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAvKipcbiAgICogZm9ybUluaXRpYWxpemVkOiBFbWl0cyBkeW5hbWljIGZvcm0gQVBJIG9uIGZvcm0gaW5pdGlsaXphdGlvblxuICAgKi9cbiAgQE91dHB1dCgpIGZvcm1Jbml0aWFsaXplZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBAT3V0cHV0KCkgZmllbGRSZW1vdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQ+KCk7XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbUlucHV0VGV4dE51bWJlclwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tSW5wdXRUZXh0TnVtYmVyOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21JbnB1dFRleHRhcmVhXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dFRleHRhcmVhOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tSW5wdXREYXRlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JbnB1dERhdGU6IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIEBDb250ZW50Q2hpbGQoXCJjdXN0b21Cb29sZWFuVG9nZ2xlXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21Cb29sZWFuVG9nZ2xlOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbVNpbmdsZVNlbGVjdERyb3Bkb3duOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tU2luZ2xlU2VsZWN0UmFkaW9cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbVNpbmdsZVNlbGVjdFJhZGlvOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcblxuICBAQ29udGVudENoaWxkKFwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveFwiLCB7IHN0YXRpYzogZmFsc2UgfSlcbiAgY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveDogVGVtcGxhdGVSZWY8RWxlbWVudD47XG5cbiAgQENvbnRlbnRDaGlsZChcImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd25cIiwgeyBzdGF0aWM6IGZhbHNlIH0pXG4gIGN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd246IFRlbXBsYXRlUmVmPEVsZW1lbnQ+O1xuXG4gIGR5bmFtaWNGb3JtQVBJOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRm9ybUFQSTtcbiAgdmFsdWVDaGFuZ2VzU3Vic2NyaXB0aW9uJDogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAvLyBCdWlsZGluZyB0aGUgZm9ybVxuICAgIHRoaXMuZHluYW1pY0Zvcm0gPSB0aGlzLmdlbmVyYXRlRHluYW1pY0Zvcm0odGhpcy5mb3JtRmllbGRzLCB0aGlzLmZvcm1WYWx1ZXMpO1xuXG4gICAgLy8gU3Vic2NyaWJpbmcgdG8gZm9ybSBjaGFuZ2VzIGFuZCBlbWl0aW5nIHZhbHVlcy5cbiAgICB0aGlzLnZhbHVlQ2hhbmdlc1N1YnNjcmlwdGlvbiQgPSB0aGlzLmR5bmFtaWNGb3JtLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoZm9ybVZhbHVlID0+IHtcbiAgICAgIHRoaXMub25Gb3JtVmFsdWVDaGFuZ2VzKCk7XG4gICAgfSk7XG5cbiAgICAvL2FwaSB0byBleHBvc2UgZnVuY3Rpb25zXG4gICAgdGhpcy5keW5hbWljRm9ybUFQSSA9IHtcbiAgICAgIGRlZmF1bHRGb3JtVmFsdWVzOiAoKSA9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KHRoaXMuZHluYW1pY0Zvcm0udmFsdWUuZHluYW1pY0ZpZWxkcyk7XG4gICAgICB9XG4gICAgfTtcbiAgICB0aGlzLmZvcm1Jbml0aWFsaXplZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm1BUEkpO1xuICAgIHRoaXMuZm9ybVZhbGlkLmVtaXQodGhpcy5keW5hbWljRm9ybS52YWxpZCk7XG4gIH1cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZUNoYW5nZXNTdWJzY3JpcHRpb24kPy51bnN1YnNjcmliZSgpO1xuICB9XG4gIG9uRm9ybVZhbHVlQ2hhbmdlcygpOiB2b2lkIHtcbiAgICBsZXQgZm9ybVZhbHVlcyA9IHRoaXMuZ2VuZXJhdGVEeW5hbWljRmllbGRzVmFsdWVPYmplY3QodGhpcy5keW5hbWljRm9ybS52YWx1ZS5keW5hbWljRmllbGRzKTtcbiAgICB0aGlzLmZvcm1WYWxpZC5lbWl0KHRoaXMuZHluYW1pY0Zvcm0udmFsaWQpO1xuICAgIHRoaXMuZm9ybVVwZGF0ZWQuZW1pdChmb3JtVmFsdWVzKTtcbiAgICBjb25zb2xlLmxvZyhmb3JtVmFsdWVzKVxuICB9XG4gIGdlbmVyYXRlRHluYW1pY0ZpZWxkc1ZhbHVlT2JqZWN0KGZvcm1WYWx1ZXM6IEFycmF5PGFueT4pOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHtcbiAgICBsZXQgZHluYW1pY0ZpZWxkc1ZhbHVlID0ge307XG4gICAgZm9ybVZhbHVlcy5mb3JFYWNoKChmaWVsZFZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgaWYodHlwZW9mIGZpZWxkVmFsdWU/LnZhbHVlID09PSAnc3RyaW5nJykgZmllbGRWYWx1ZS52YWx1ZSA9IGZpZWxkVmFsdWU/LnZhbHVlPy50cmltKClcbiAgICAgIGxldCBmb3JtYXR0ZWRWYWx1ZSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUodGhpcy5mb3JtRmllbGRzW2luZGV4XSwgZmllbGRWYWx1ZS52YWx1ZSk7XG4gICAgICBpZiAoZmllbGRWYWx1ZS5zdWJGaWVsZHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgbGV0IGZvcm1hdHRlZFN1YkZpZWxkc1ZhbHVlcyA9IHt9XG4gICAgICAgIGxldCBzdWJGaWVsZCA9IHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uc3ViRmllbGRzXG4gICAgICAgIGlmKHRoaXMuZm9ybUZpZWxkc1tpbmRleF0uZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyB8fCB0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmZpZWxkVHlwZSA9PT0gJ211bHRpU2VsZWN0Jykge1xuICAgICAgICAgIHN1YkZpZWxkID0gc3ViRmllbGQuZmlsdGVyKChzdWJGaWVsZCkgPT4gc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUgPT09IGZpZWxkVmFsdWUudmFsdWUudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGZpZWxkVmFsdWUuc3ViRmllbGRzLmZvckVhY2goKHN1YkZpZWxkVmFsdWUsIHN1YkluZGV4KSA9PiB7XG4gICAgICAgICAgbGV0IHN1YkZvcm1GaWVsZCA9IHN1YkZpZWxkW3N1YkluZGV4XVxuICAgICAgICAgIGlmKHR5cGVvZiBzdWJGaWVsZFZhbHVlPy52YWx1ZSA9PT0gJ3N0cmluZycpIHN1YkZpZWxkVmFsdWUudmFsdWUgPSBzdWJGaWVsZFZhbHVlPy52YWx1ZT8udHJpbSgpXG4gICAgICAgICAgZm9ybWF0dGVkU3ViRmllbGRzVmFsdWVzW3N1YkZvcm1GaWVsZC5jb25maWdOYW1lXSA9IHRoaXMubWFwRm9ybUZpZWxkVG9Gb3JtVmFsdWUoc3ViRm9ybUZpZWxkLCBzdWJGaWVsZFZhbHVlKVxuICAgICAgICB9KVxuICAgICAgICBkeW5hbWljRmllbGRzVmFsdWVbdGhpcy5mb3JtRmllbGRzW2luZGV4XS5jb25maWdOYW1lXSA9IHtcbiAgICAgICAgICB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgc3ViRmllbGRzOiBmb3JtYXR0ZWRTdWJGaWVsZHNWYWx1ZXNcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGR5bmFtaWNGaWVsZHNWYWx1ZVt0aGlzLmZvcm1GaWVsZHNbaW5kZXhdLmNvbmZpZ05hbWVdID0gZm9ybWF0dGVkVmFsdWU7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGR5bmFtaWNGaWVsZHNWYWx1ZTtcbiAgfVxuICBnZW5lcmF0ZUR5bmFtaWNGb3JtKFxuICAgIGZvcm1GaWVsZHM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZD4sXG4gICAgZm9ybVZhbHVlczogeyBba2V5OiBzdHJpbmddOiBhbnkgfVxuICApOiBVbnR5cGVkRm9ybUdyb3VwIHtcbiAgICBsZXQgZm9ybUFycmF5ID0gbmV3IFVudHlwZWRGb3JtQXJyYXkoW10pXG5cbiAgICBmb3IgKGxldCBmaWVsZCBvZiBmb3JtRmllbGRzKSB7XG4gICAgICBsZXQgZmllbGRWYWx1ZSA9IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV0/LnZhbHVlID8gZm9ybVZhbHVlc1tmaWVsZC5jb25maWdOYW1lXS52YWx1ZSA6IGZvcm1WYWx1ZXNbZmllbGQuY29uZmlnTmFtZV1cbiAgICAgIGxldCBmaWVsZENvbnRyb2wgPSB0aGlzLm1hcEZvcm1WYWx1ZVRvRm9ybUZpZWxkKGZpZWxkLCBmaWVsZFZhbHVlKTtcbiAgICAgIGxldCBzdWJGaWVsZHNDb250cm9scyA9IHRoaXMuZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKGZvcm1WYWx1ZXMsIGZpZWxkLCBmaWVsZENvbnRyb2wudmFsdWUpO1xuICAgICAgZm9ybUFycmF5LnB1c2gobmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgICB2YWx1ZTogZmllbGRDb250cm9sLFxuICAgICAgICBzdWJGaWVsZHM6IHN1YkZpZWxkc0NvbnRyb2xzXG4gICAgICB9KSlcbiAgICB9ICBcbiAgICByZXR1cm4gbmV3IFVudHlwZWRGb3JtR3JvdXAoe1xuICAgICAgZHluYW1pY0ZpZWxkczogZm9ybUFycmF5XG4gICAgfSlcbiAgfVxuICBcbiAgZ2V0RHluYW1pY0ZpZWxkc0NvbnRyb2xzKCk6IFVudHlwZWRGb3JtQXJyYXkge1xuICAgIHJldHVybiB0aGlzLmR5bmFtaWNGb3JtLmdldChcImR5bmFtaWNGaWVsZHNcIikgYXMgVW50eXBlZEZvcm1BcnJheTtcbiAgfVxuICB1cGRhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZpZWxkOiBOc0R5bmFtaWNGb3JtLklEeW5hbWljRmllbGQsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGZpZWxkLnN1YkZpZWxkcz8ubGVuZ3RoID4gMCkge1xuICAgICAgbGV0IHN1YkZpZWxkc0NvbnRyb2xzID0gdGhpcy5nZW5lcmF0ZVN1YkR5bmFtaWNGaWVsZHModGhpcy5mb3JtVmFsdWVzLCBmaWVsZCwgdmFsdWUpO1xuICAgICAgZm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woJ3N1YkZpZWxkcycpXG4gICAgICBmb3JtR3JvdXAuYWRkQ29udHJvbCgnc3ViRmllbGRzJywgc3ViRmllbGRzQ29udHJvbHMpXG4gICAgfVxuICB9XG4gIHVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JTaW5nbGVTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlOiBhbnlcbiAgKTogdm9pZCB7XG4gICAgaWYgKGNvbnRyb2wudmFsdWU/LnZhbHVlICE9PSB2YWx1ZS52YWx1ZSkge1xuICAgICAgY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgY29udHJvbC5zZXRWYWx1ZSgnJyk7XG4gICAgdGhpcy51cGRhdGVTdWJEeW5hbWljRmllbGRzKGZpZWxkLCBmb3JtR3JvdXAsIHZhbHVlKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICB1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoXG4gICAgZmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCxcbiAgICBjb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wsXG4gICAgZm9ybUdyb3VwOiBVbnR5cGVkRm9ybUdyb3VwLFxuICAgIHZhbHVlczogQXJyYXk8YW55PlxuICApOiB2b2lkIHtcbiAgICBsZXQgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IGFueSB9PiA9IGNvbnRyb2wudmFsdWU7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICBsZXQgaXRlbUluZGV4ID0gc2VsZWN0ZWRWYWx1ZXMuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS5sYWJlbCA9PT0gdmFsdWUubGFiZWwpO1xuICAgICAgaWYgKGl0ZW1JbmRleCA+IC0xKSB7XG4gICAgICAgIHNlbGVjdGVkVmFsdWVzLnNwbGljZShpdGVtSW5kZXgsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWRWYWx1ZXMucHVzaCh7IC4uLnZhbHVlIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBjb250cm9sLnNldFZhbHVlKHNlbGVjdGVkVmFsdWVzKTtcbiAgICB0aGlzLnVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1Hcm91cCwgdmFsdWVzKTtcbiAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcbiAgfVxuICBpc0NoZWNrQm94U2VsZWN0ZWQodmFsdWU6IHN0cmluZywgc2VsZWN0ZWRWYWx1ZXM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9Pik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzZWxlY3RlZFZhbHVlcy5maW5kSW5kZXgoaXRlbSA9PiBpdGVtLmxhYmVsID09PSB2YWx1ZSkgPiAtMTtcbiAgfVxuXG4gIGZpbmRTZWxlY3RlZFN1YkZpZWxkQ29uZmlnKHN1YmZpZWxkcywgdmFsdWUsIHN1YkZpZWxkSW5kZXgpIHtcbiAgICB0cnl7XG4gICAgICBjb25zdCBzZWxlY3RlZFN1YkZpZWxkQ29uZmlnID0gc3ViZmllbGRzLmZpbHRlcihpdGVtID0+IGl0ZW0ucGFyZW50Q29uZmlnVmFsdWUgPT09IHZhbHVlKVtzdWJGaWVsZEluZGV4XTtcbiAgICAgIHJldHVybiBzZWxlY3RlZFN1YkZpZWxkQ29uZmlnO1xuICAgIH1cbiAgICBjYXRjaChlKXtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3ViZmllbGQgaW5kZXggbm90IGZvdW5kJyk7XG4gICAgfVxuICB9XG5cbiAgbWF0Y2hQYXJlbnRDb25maWcoc3ViZmllbGRzLCB2YWx1ZSkge1xuICAgIGlmICghc3ViZmllbGRzIHx8IHN1YmZpZWxkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHN1YmZpZWxkcy5zb21lKGl0ZW0gPT4gaXRlbS5wYXJlbnRDb25maWdWYWx1ZSA9PT0gdmFsdWUpO1xuICB9XG5cbiAgZ2VuZXJhdGVTdWJEeW5hbWljRmllbGRzKFxuICAgIGZvcm1WYWx1ZXM6IGFueSxcbiAgICBwYXJlbnRGaWVsZDogTnNEeW5hbWljRm9ybS5JRHluYW1pY0ZpZWxkLFxuICAgIHBhcmVudFZhbHVlOiBBcnJheTx7IGxhYmVsOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfT4gfCB7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhblxuICApOiBVbnR5cGVkRm9ybUFycmF5IHtcbiAgICBsZXQgY29udHJvbHMgPSBuZXcgVW50eXBlZEZvcm1BcnJheShbXSlcbiAgICBsZXQgc3ViRmllbGRzID0gcGFyZW50RmllbGQuc3ViRmllbGRzXG4gICAgbGV0IHN1YkZpZWxkc1ZhbHVlcyA9IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0/LnN1YkZpZWxkcyA/IGZvcm1WYWx1ZXNbcGFyZW50RmllbGQuY29uZmlnTmFtZV0uc3ViRmllbGRzIDoge31cbiAgICBpZighc3ViRmllbGRzKSByZXR1cm4gY29udHJvbHM7XG4gICAgaWYgKHBhcmVudEZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcpIHtcbiAgICAgIHN1YkZpZWxkcyA9IHN1YkZpZWxkcy5maWx0ZXIoKHN1YkZpZWxkKSA9PiBzdWJGaWVsZC5wYXJlbnRDb25maWdWYWx1ZSA9PT0gKDx7bGFiZWw6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9PnBhcmVudFZhbHVlKT8udmFsdWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChwYXJlbnRGaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcpIHtcbiAgICAgIGxldCBwYXJlbnRWYWx1ZXMgPSBuZXcgU2V0KCg8QXJyYXk8eyBsYWJlbDogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIH0+PnBhcmVudFZhbHVlKS5tYXAoKHZhbHVlKSA9PiB2YWx1ZS52YWx1ZSkpO1xuICAgICAgc3ViRmllbGRzID0gc3ViRmllbGRzLmZpbHRlcigoc3ViRmllbGQpID0+IHBhcmVudFZhbHVlcy5oYXMoc3ViRmllbGQucGFyZW50Q29uZmlnVmFsdWUpKTtcbiAgICB9XG5cbiAgICBpZiAoc3ViRmllbGRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGZvciAobGV0IHN1YkZpZWxkIG9mIHN1YkZpZWxkcykge1xuICAgICAgICAgIGNvbnRyb2xzLnB1c2godGhpcy5tYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChzdWJGaWVsZCwgc3ViRmllbGRzVmFsdWVzW3N1YkZpZWxkLmNvbmZpZ05hbWVdKSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIHJldHVybiBjb250cm9scztcbiAgfVxuICBtYXBGb3JtVmFsdWVUb0Zvcm1GaWVsZChmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGxldCB2YWxpZGF0b3JzID0gZm9ybUZpZWxkLnZhbGlkYXRvcnMgPyBbZHluYW1pY0ZpZWxkVmFsaWRhdG9yKGZvcm1GaWVsZC52YWxpZGF0b3JzKV06IFtdXG4gICAgbGV0IGNvbnRyb2wgPSBuZXcgVW50eXBlZEZvcm1Db250cm9sKG51bGwsIHZhbGlkYXRvcnMpO1xuXG4gICAgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiaW5wdXRcIikge1xuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0XCIgfHwgZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcInRleHRhcmVhXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogXCJcIik7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwibnVtYmVyXCIpIGNvbnRyb2wuc2V0VmFsdWUoZm9ybVZhbHVlID8gZm9ybVZhbHVlIDogMCk7XG4gICAgICBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwiZGF0ZVwiKSB7XG4gICAgICAgIGlmIChmb3JtVmFsdWUgJiYgdHlwZW9mIGZvcm1WYWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZGF5anMoZm9ybVZhbHVlKS50eihmb3JtRmllbGQuZmllbGRDb25maWcudGltZXpvbmUpLmZvcm1hdChmb3JtRmllbGQuZmllbGRDb25maWcuZm9ybWF0KSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29udHJvbC5zZXRWYWx1ZShkYXlqcygpLnR6KGZvcm1GaWVsZC5maWVsZENvbmZpZy50aW1lem9uZSkuZm9ybWF0KGZvcm1GaWVsZC5maWVsZENvbmZpZy5mb3JtYXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkVHlwZSA9PT0gXCJzaW5nbGVTZWxlY3RcIikge1xuICAgICAgY29uc3QgZmluZFNlbGVjdGVkVmFsdWUgPSAoKSA9PiB7XG4gICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gZm9ybVZhbHVlKVxuICAgICAgICByZXR1cm4gaW5kZXggPj0gMCA/IGZvcm1GaWVsZC5pdGVtc0xpc3RbaW5kZXhdOiBcIlwiO1xuICAgICAgfVxuICAgICAgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkcm9wZG93blwiKSB7XG4gICAgICAgIGlmICghZm9ybVZhbHVlKSBjb250cm9sLnNldFZhbHVlKGZvcm1GaWVsZC5pdGVtc0xpc3RbMF0pO1xuICAgICAgICBlbHNlIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJyYWRpb1wiKSB7XG4gICAgICAgIGNvbnRyb2wuc2V0VmFsdWUoZmluZFNlbGVjdGVkVmFsdWUoKSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgaWYgKGZvcm1WYWx1ZSAmJiBBcnJheS5pc0FycmF5KGZvcm1WYWx1ZSkpIHtcbiAgICAgICAgbGV0IHNlbGVjdGVkVmFsdWVzID0gW107XG4gICAgICAgIGZvciAobGV0IHZhbHVlIG9mIGZvcm1WYWx1ZSkge1xuICAgICAgICAgIGxldCBpbmRleCA9IGZvcm1GaWVsZC5pdGVtc0xpc3QuZmluZEluZGV4KGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpO1xuICAgICAgICAgIGlmIChpbmRleCA+IC0xKSBzZWxlY3RlZFZhbHVlcy5wdXNoKHsgLi4uZm9ybUZpZWxkLml0ZW1zTGlzdFtpbmRleF0gfSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZFZhbHVlcyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb250cm9sLnNldFZhbHVlKFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICBjb250cm9sLnNldFZhbHVlKCEhZm9ybVZhbHVlKTtcbiAgICB9IGVsc2UgY29udHJvbC5zZXRWYWx1ZShudWxsKTtcbiAgICByZXR1cm4gY29udHJvbDtcbiAgfVxuICBtYXBGb3JtRmllbGRUb0Zvcm1WYWx1ZShmb3JtRmllbGQ6IE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZCwgZm9ybVZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImlucHV0XCIpIHtcbiAgICAgIGlmIChmb3JtRmllbGQuZmllbGRJbnB1dFR5cGUgPT09IFwidGV4dFwiIHx8IGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJ0ZXh0YXJlYVwiKSByZXR1cm4gZm9ybVZhbHVlO1xuICAgICAgZWxzZSBpZiAoZm9ybUZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSBcIm51bWJlclwiKSByZXR1cm4gK2Zvcm1WYWx1ZTtcbiAgICAgIGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZElucHV0VHlwZSA9PT0gXCJkYXRlXCIpIHtcbiAgICAgICAgcmV0dXJuIGRheWpzLnR6KGZvcm1WYWx1ZSwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLmZvcm1hdCwgZm9ybUZpZWxkLmZpZWxkQ29uZmlnLnRpbWV6b25lKS52YWx1ZU9mKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcInNpbmdsZVNlbGVjdFwiKSB7XG4gICAgICByZXR1cm4gZm9ybVZhbHVlPy52YWx1ZSA/PyAnJztcbiAgICB9IGVsc2UgaWYgKGZvcm1GaWVsZC5maWVsZFR5cGUgPT09IFwibXVsdGlTZWxlY3RcIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZT8ubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChmb3JtRmllbGQuZmllbGRUeXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgICB9IGVsc2UgcmV0dXJuIGZvcm1WYWx1ZTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZHluYW1pY0ZpZWxkVmFsaWRhdG9yID0gKHZhbGlkYXRvcnM6IEFycmF5PE5zRHluYW1pY0Zvcm0uSUR5bmFtaWNGaWVsZFZhbGlkYXRvcj4pOiBWYWxpZGF0b3JGbiA9PiB7XG4gIHJldHVybiAoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwgPT4ge1xuICAgIGxldCB2YWx1ZSA9IGNvbnRyb2wudmFsdWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlPy52YWx1ZSA/IHZhbHVlLnZhbHVlIDogJydcbiAgICB9XG4gICAgbGV0IGVycm9ycyA9IG51bGxcblxuICAgIHZhbGlkYXRvcnMuZm9yRWFjaCgodmFsaWRhdG9yKSA9PiB7XG4gICAgICBsZXQgZXJyb3IgPSBudWxsXG4gICAgICBsZXQgbWVzc2FnZSA9IHZhbGlkYXRvci5tZXNzYWdlXG4gICAgICBzd2l0Y2ggKHZhbGlkYXRvci50eXBlKSB7XG4gICAgICAgIGNhc2UgXCJSZXF1aXJlZFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5yZXF1aXJlZChjb250cm9sKTtcbiAgICAgICAgICBpZiAoIWVycm9yICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpID09PSAnJykge1xuICAgICAgICAgICAgZXJyb3IgPSB7IFJlcXVpcmVkOiBtZXNzYWdlIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmKGVycm9yKSBlcnJvciA9IHtSZXF1aXJlZDogbWVzc2FnZX1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcIk1pbkxlbmd0aFwiOlxuICAgICAgICAgIGVycm9yID0gVmFsaWRhdG9ycy5taW5MZW5ndGgoK3ZhbGlkYXRvci52YWx1ZSkoY29udHJvbClcbiAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZS5yZXBsYWNlKCckezB9JywgZXJyb3I/Lm1pbmxlbmd0aC5yZXF1aXJlZExlbmd0aClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7IE1pbkxlbmd0aDogbWVzc2FnZSB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJNYXhMZW5ndGhcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMubWF4TGVuZ3RoKCt2YWxpZGF0b3IudmFsdWUpKGNvbnRyb2wpXG4gICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UucmVwbGFjZSgnJHswfScsIGVycm9yPy5hY3R1YWxMZW5ndGgpXG4gICAgICAgICAgaWYoZXJyb3IpIGVycm9yID0geyBNYXhMZW5ndGg6IG1lc3NhZ2UgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFwiRW1haWxcIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMuZW1haWwoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7RW1haWw6IG1lc3NhZ2V9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJDdXN0b21cIjpcbiAgICAgICAgICBlcnJvciA9IFZhbGlkYXRvcnMucGF0dGVybihgJHt2YWxpZGF0b3IudmFsdWV9YCkoY29udHJvbClcbiAgICAgICAgICBpZihlcnJvcikgZXJyb3IgPSB7Q3VzdG9tOiBtZXNzYWdlfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaWYgKGVycm9yKSBlcnJvcnMgPSB7IC4uLmVycm9ycywgLi4uZXJyb3IgfVxuICAgIH0pXG4gICAgcmV0dXJuIGVycm9yc1xuICB9XG59IiwiPGZvcm0gW2Zvcm1Hcm91cF09XCJkeW5hbWljRm9ybVwiPlxuICA8bmctY29udGFpbmVyIGZvcm1BcnJheU5hbWU9XCJkeW5hbWljRmllbGRzXCI+XG4gICAgPG5nLWNvbnRhaW5lciBbZm9ybUdyb3VwTmFtZV09XCJpXCIgKm5nRm9yPVwibGV0IGZpZWxkQ29udHJvbCBvZiBnZXREeW5hbWljRmllbGRzQ29udHJvbHMoKS5jb250cm9sczsgbGV0IGkgPSBpbmRleFwiPlxuICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7XG4gICAgICAgICAgJGltcGxpY2l0OiBmb3JtRmllbGRzW2ldLFxuICAgICAgICAgIGZvcm1Hcm91cDogZmllbGRDb250cm9sLFxuICAgICAgICAgIGNvbnRyb2w6IGZpZWxkQ29udHJvbC5jb250cm9scy52YWx1ZVxuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPGRpdiBjbGFzcz1cInN1Yi1keW5hbWljLWZvcm1cIiAqbmdJZj1cImZpZWxkQ29udHJvbD8udmFsdWUgJiYgKCEhZm9ybUZpZWxkc1tpXT8uc3ViRmllbGRzICYmIGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcz8ubGVuZ3RoID4gMCAmJiBtYXRjaFBhcmVudENvbmZpZyhmb3JtRmllbGRzW2ldPy5zdWJGaWVsZHMsIGZpZWxkQ29udHJvbD8uY29udHJvbHM/LnZhbHVlPy52YWx1ZT8udmFsdWUpKVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWJGaWVsZENvbnRyb2wgb2YgZmllbGRDb250cm9sLmNvbnRyb2xzLnN1YkZpZWxkcy5jb250cm9sczsgbGV0IGogPSBpbmRleFwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZFwiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie1xuICAgICAgICAgICAgICAkaW1wbGljaXQ6IGZpbmRTZWxlY3RlZFN1YkZpZWxkQ29uZmlnKGZvcm1GaWVsZHNbaV0/LnN1YkZpZWxkcywgZmllbGRDb250cm9sLmNvbnRyb2xzLnZhbHVlLnZhbHVlLnZhbHVlLGopLFxuICAgICAgICAgICAgICBjb250cm9sOiBzdWJGaWVsZENvbnRyb2xcbiAgICAgICAgICAgIH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG48L2Zvcm0+XG5cblxuPG5nLXRlbXBsYXRlICNkeW5hbWljRmllbGQgbGV0LWZpZWxkIGxldC1jb250cm9sPVwiY29udHJvbFwiIGxldC1mb3JtZ3JvdXA9XCJmb3JtR3JvdXBcIj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHQnIHwgJ251bWJlcicgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgKGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndGV4dCcgfHwgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdudW1iZXInKVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21JbnB1dFRleHROdW1iZXI7IGVsc2UgZGVmYXVsdElucHV0VGV4dE51bWJlclwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUlucHV0VGV4dE51bWJlclwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dFRleHROdW1iZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBtdWx0aS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkPy50aXRsZSB9fSA8c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPGlucHV0IGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dFwiIFt0eXBlXT1cImZpZWxkLmZpZWxkSW5wdXRUeXBlXCIgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiIFxuICAgICAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyJzogY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzID8gJzFweCBzb2xpZCAjQjAwMDIwJzogJyd9XCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiZmllbGQucGxhY2Vob2xkZXJUZXh0ID8gZmllbGQucGxhY2Vob2xkZXJUZXh0IDogJ0lucHV0IFRleHQnXCIgXG4gICAgICAgICAgW21pbl09XCJmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ251bWJlcicgPyAwIDogJycgXCIvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIiBcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIlxuICAgICAgICA+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG4gIFxuICA8IS0tIGZpZWxkVHlwZTogJ2lucHV0JyBmaWVsZElucHV0VHlwZTogJ3RleHRhcmVhJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3RleHRhcmVhJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21JbnB1dFRleHRhcmVhOyBlbHNlIGRlZmF1bHRJbnB1dFRleHRhcmVhXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUlucHV0VGV4dGFyZWFcIlxuICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRJbnB1dFRleHRhcmVhPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgbXVsdGktbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg3IGZpZWxkLXRpdGxlLXNtXCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPGRpdiBzdHlsZT1cImZsZXgtYmFzaXM6IDEwMCVcIj48L2Rpdj5cbiAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiaW5wdXQtZmllbGQgaXAtdGV4dGFyZWFcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgW25nU3R5bGVdPVwieydib3JkZXInOiBjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnMgPyAnMXB4IHNvbGlkICNCMDAwMjAnOiAnJ31cIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJmaWVsZC5wbGFjZWhvbGRlclRleHQgPyBmaWVsZC5wbGFjZWhvbGRlclRleHQgOiAnSW5wdXQgVGV4dCdcIiBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiIChuZ01vZGVsQ2hhbmdlKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiPjwvdGV4dGFyZWE+XG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuICBcbiAgPCEtLSBmaWVsZFR5cGU6ICdpbnB1dCcgZmllbGRJbnB1dFR5cGU6ICdkYXRlJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2lucHV0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ2RhdGUnXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUlucHV0RGF0ZTsgZWxzZSBkZWZhdWx0SW5wdXREYXRlXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tSW5wdXREYXRlXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdElucHV0RGF0ZT5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIHNpbmdsZS1saW5lLWZpZWxkLWNvbnRhaW5lclwiXG4gICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCJcbiAgICAgICAgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdpbnB1dCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkYXRlJ1wiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX0gPHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJkYXRlLXBpY2tlci1jb250YWluZXJcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJkYXRlLXBpY2tlclwiIHJlYWRvbmx5IG1pc1R6RHAgW2RwQ29uZmlnXT1cImZpZWxkLmZpZWxkQ29uZmlnXCJcbiAgICAgICAgICAgIChkYXRlQ2hhbmdlKT1cImNvbnRyb2wuc2V0VmFsdWUoJGV2ZW50KVwiIFtzZWxlY3RlZERhdGVdPVwiY29udHJvbC52YWx1ZVwiIFtvZmZzZXRZXT1cIjBcIlxuICAgICAgICAgICAgW3ZhbHVlXT1cImNvbnRyb2wudmFsdWVcIiAjZHAgLz5cbiAgICAgICAgICA8aW1nIGFsdD1cImRhdGEtcGlja2VyXCIgKm5nSWY9XCJjYWxlbmRhckljb25VcmxcIiBjbGFzcz1cImRhdGUtcGlja2VyLWljb25cIiBbc3JjXT1cImNhbGVuZGFySWNvblVybFwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZHAuY2xpY2soKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIGZpZWxkVHlwZTogJ2Jvb2xlYW4nIGZpZWxkSW5wdXRUeXBlOiAndG9nZ2xlJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ2Jvb2xlYW4nICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAndG9nZ2xlJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21Cb29sZWFuVG9nZ2xlOyBlbHNlIGRlZmF1bHRCb29sZWFuVG9nZ2xlXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tQm9vbGVhblRvZ2dsZVwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRCb29sZWFuVG9nZ2xlPlxuICAgICAgPGRpdiBjbGFzcz1cImR5bmFtaWMtZmllbGQgc2luZ2xlLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNlwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxtaXMtc3dpdGNoIFtjb250cm9sXT1cImNvbnRyb2xcIiAodmFsdWVDaGFuZ2VkKT1cInVwZGF0ZVN1YkR5bmFtaWNGaWVsZHMoZmllbGQsIGZvcm1ncm91cCwgJGV2ZW50KVwiPjwvbWlzLXN3aXRjaD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNvbnRyb2wudG91Y2hlZCAmJiBjb250cm9sLmVycm9yc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImR5bmFtaWNGaWVsZEVycm9yc1wiXG4gICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiBjb250cm9sLmVycm9ycyB9XCI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+ICAgIFxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gZmllbGRUeXBlOiAnc2luZ2xlU2VsZWN0JyBmaWVsZElucHV0VHlwZTogJ2Ryb3Bkb3duJyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLmZpZWxkVHlwZSA9PT0gJ3NpbmdsZVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdkcm9wZG93bidcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd247IGVsc2UgZGVmYXVsdFNpbmdsZVNlbGVjdERyb3Bkb3duXCI+XG4gICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tU2luZ2xlU2VsZWN0RHJvcGRvd25cIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0U2luZ2xlU2VsZWN0RHJvcGRvd24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgICBbbmdTdHlsZV09XCJ7J2JvcmRlci1ib3R0b20nOiAoZm9ybWdyb3VwPy5jb250cm9scz8uc3ViRmllbGRzPy5jb250cm9scz8ubGVuZ3RoICYmIHJlbW92ZVNlcHJhdG9yRm9yU3ViRmllbGRzKSA/ICAnbm9uZSc6Jyd9XCI+XG4gICAgICAgIDxwIGNsYXNzPVwiaDZcIj5cbiAgICAgICAgICB7eyBmaWVsZC50aXRsZSB9fTxzcGFuICpuZ0lmPVwiZmllbGQudmFsaWRhdG9ycyAmJiBmaWVsZC52YWxpZGF0b3JzLmxlbmd0aCA+IDBcIj4gKjwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsncmVtb3ZlYWJsZS1jb250YWluZXInIDogZmllbGQ/LmlzUmVtb3ZlYWJsZX1cIj5cbiAgICAgICAgICA8bWlzLWRyb3Bkb3duIFtzZWFyY2hFbmFibGVkXT1cImZhbHNlXCIgW3dpZHRoXT1cIicxNDBweCdcIiBbZGF0YV09XCJmaWVsZC5pdGVtc0xpc3RcIiBbc2VsZWN0ZWRJdGVtXT1cImNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgIChvbkNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yU2luZ2xlU2VsZWN0KGZpZWxkLCBjb250cm9sLCBmb3JtZ3JvdXAsICRldmVudCk7XCI+XG4gICAgICAgICAgPC9taXMtZHJvcGRvd24+XG4gICAgICAgICAgPGltZyAqbmdJZj1cImZpZWxkLmlzUmVtb3ZlYWJsZSAmJiByZW1vdmVJY29uVXJsXCIgY2xhc3M9XCJyZW1vdmUtaWNvblwiIFtzcmNdPVwicmVtb3ZlSWNvblVybFwiIChjbGljayk9XCJmaWVsZFJlbW92ZWQuZW1pdChmaWVsZClcIj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyID5cbiAgXG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdzaW5nbGVTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAncmFkaW8nIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnc2luZ2xlU2VsZWN0JyAmJiBmaWVsZC5maWVsZElucHV0VHlwZSA9PT0gJ3JhZGlvJ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21TaW5nbGVTZWxlY3RSYWRpbzsgZWxzZSBkZWZhdWx0U2luZ2xlU2VsZWN0UmFkaW9cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21TaW5nbGVTZWxlY3RSYWRpb1wiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgY29udHJvbDogY29udHJvbCwgZm9ybWdyb3VwOiBmb3JtZ3JvdXAgfVwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRTaW5nbGVTZWxlY3RSYWRpbz5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJjaGVja2JveGVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jaGVja2JveC1jb21tb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwgfVwiXG4gICAgICAgICAgICAoY2xpY2spPVwidXBkYXRlU2VsZWN0ZWRWYWx1ZUZvclNpbmdsZVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCBpdGVtKTtcIj5cbiAgICAgICAgICAgIDxpbWcgKm5nSWY9XCIoaXRlbS5sYWJlbCA9PT0gY29udHJvbC52YWx1ZT8ubGFiZWwpICYmIGFjdGl2ZUJ0bkljb25VcmxcIiBbc3JjXT1cImFjdGl2ZUJ0bkljb25VcmxcIiBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbiAgXG5cbiAgPCEtLSBmaWVsZFR5cGU6ICdtdWx0aVNlbGVjdCcgZmllbGRJbnB1dFR5cGU6ICdjaGVja2JveCcgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZC5maWVsZFR5cGUgPT09ICdtdWx0aVNlbGVjdCcgJiYgZmllbGQuZmllbGRJbnB1dFR5cGUgPT09ICdjaGVja2JveCdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY3VzdG9tTXVsdGlTZWxlY3RDaGVja2JveDsgZWxzZSBkZWZhdWx0TXVsdGlTZWxlY3RDaGVja2JveFwiPlxuICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbU11bHRpU2VsZWN0Q2hlY2tib3hcIlxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBmaWVsZDogZmllbGQsIGNvbnRyb2w6IGNvbnRyb2wsIGZvcm1ncm91cDogZm9ybWdyb3VwIH1cIlxuICAgICAgPjwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TXVsdGlTZWxlY3RDaGVja2JveD5cbiAgICAgIDxkaXYgY2xhc3M9XCJkeW5hbWljLWZpZWxkIG11bHRpLWxpbmUtZmllbGQtY29udGFpbmVyXCJcbiAgICAgIFtuZ1N0eWxlXT1cInsnYm9yZGVyLWJvdHRvbSc6IChmb3JtZ3JvdXA/LmNvbnRyb2xzPy5zdWJGaWVsZHM/LmNvbnRyb2xzPy5sZW5ndGggJiYgcmVtb3ZlU2VwcmF0b3JGb3JTdWJGaWVsZHMpID8gICdub25lJzonJ31cIj5cbiAgICAgICAgPHAgY2xhc3M9XCJoNyBmaWVsZC10aXRsZS1zbVwiPlxuICAgICAgICAgIHt7IGZpZWxkLnRpdGxlIH19PHNwYW4gKm5nSWY9XCJmaWVsZC52YWxpZGF0b3JzICYmIGZpZWxkLnZhbGlkYXRvcnMubGVuZ3RoID4gMFwiPiAqPC9zcGFuPlxuICAgICAgICA8L3A+XG4gICAgICAgIDxkaXYgc3R5bGU9XCJmbGV4LWJhc2lzOiAxMDAlXCI+PC9kaXY+XG4gICAgICAgIDxkaXYgaWQ9XCJjaGVja2JveGVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyYWRpby1jaGVja2JveC1jb21tb25cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBmaWVsZC5pdGVtc0xpc3RcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnY2hlY2tib3gtYWN0aXZlJzogaXNDaGVja0JveFNlbGVjdGVkKGl0ZW0ubGFiZWwsIGNvbnRyb2wudmFsdWUpIH1cIlxuICAgICAgICAgICAgKGNsaWNrKT1cInVwZGF0ZVNlbGVjdGVkVmFsdWVGb3JNdWx0aVNlbGVjdChmaWVsZCwgY29udHJvbCwgZm9ybWdyb3VwLCBbaXRlbV0pXCI+XG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiaXNDaGVja0JveFNlbGVjdGVkKGl0ZW0ubGFiZWwsIGNvbnRyb2wudmFsdWUpICYmIGFjdGl2ZUJ0bkljb25VcmxcIiBbc3JjXT1cImFjdGl2ZUJ0bkljb25VcmxcIlxuICAgICAgICAgICAgICBhbHQ9XCJcIiAvPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJoNlwiPnt7IGl0ZW0ubGFiZWwgfX08L3A+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29udHJvbC50b3VjaGVkICYmIGNvbnRyb2wuZXJyb3JzXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZHluYW1pY0ZpZWxkRXJyb3JzXCJcbiAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IGNvbnRyb2wuZXJyb3JzIH1cIj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuXG4gIDwhLS0gZmllbGRUeXBlOiAnbXVsdGlTZWxlY3QnIGZpZWxkSW5wdXRUeXBlOiAnZHJvcGRvd24nIC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQuZmllbGRUeXBlID09PSAnbXVsdGlTZWxlY3QnICYmIGZpZWxkLmZpZWxkSW5wdXRUeXBlID09PSAnZHJvcGRvd24nXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbU11bHRpU2VsZWN0RHJvcGRvd247IGVsc2UgZGVmYXVsdE11bHRpU2VsZWN0RHJvcGRvd25cIj5cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21NdWx0aVNlbGVjdERyb3Bkb3duXCJcbiAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBjb250cm9sOiBjb250cm9sLCBmb3JtZ3JvdXA6IGZvcm1ncm91cCB9XCJcbiAgICAgID48L25nLXRlbXBsYXRlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdE11bHRpU2VsZWN0RHJvcGRvd24+XG4gICAgICA8ZGl2IGNsYXNzPVwiZHluYW1pYy1maWVsZCBzaW5nbGUtbGluZS1maWVsZC1jb250YWluZXJcIlxuICAgICAgW25nU3R5bGVdPVwieydib3JkZXItYm90dG9tJzogKGZvcm1ncm91cD8uY29udHJvbHM/LnN1YkZpZWxkcz8uY29udHJvbHM/Lmxlbmd0aCAmJiByZW1vdmVTZXByYXRvckZvclN1YkZpZWxkcykgPyAgJ25vbmUnOicnfVwiPlxuICAgICAgICA8cCBjbGFzcz1cImg2XCI+XG4gICAgICAgICAge3sgZmllbGQudGl0bGUgfX08c3BhbiAqbmdJZj1cImZpZWxkLnZhbGlkYXRvcnMgJiYgZmllbGQudmFsaWRhdG9ycy5sZW5ndGggPiAwXCI+ICo8L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICAgPG1pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24gW3dpZHRoXT1cIicxNDBweCdcIiBbc2hvd1NlbGVjdGVkQ291bnRdPVwidHJ1ZVwiIFtkcm9wZG93bkxpc3RXaWR0aF09XCInMjU2cHgnXCJcbiAgICAgICAgICBbc2VhcmNoRW5hYmxlZF09XCJmYWxzZVwiIFtoaWRlQXBwbHlCdXR0b25dPVwidHJ1ZVwiIFtkYXRhXT1cImZpZWxkLml0ZW1zTGlzdFwiXG4gICAgICAgICAgW3NlbGVjdGVkSXRlbXNdPVwiY29udHJvbC52YWx1ZVwiIChvbkNoYW5nZSk9XCJ1cGRhdGVTZWxlY3RlZFZhbHVlRm9yTXVsdGlTZWxlY3QoZmllbGQsIGNvbnRyb2wsIGZvcm1ncm91cCwgJGV2ZW50KTtcIj48L21pcy1tdWx0aS1zZWxlY3QtZHJvcGRvd24+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb250cm9sLnRvdWNoZWQgJiYgY29udHJvbC5lcnJvcnNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJkeW5hbWljRmllbGRFcnJvcnNcIlxuICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogY29udHJvbC5lcnJvcnMgfVwiPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2R5bmFtaWNGaWVsZEVycm9ycyBsZXQtZXJyb3JzPlxuICA8ZGl2IGlkPVwiZXJyb3ItbWVzc2FnZXMtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzIHwga2V5dmFsdWVcIj5cbiAgICAgIDxwIGNsYXNzPVwiaDhcIj5cbiAgICAgICAge3tcIiDigKIgJm5ic3A7XCIgKyBlcnJvci52YWx1ZX19XG4gICAgICA8L3A+XG4gICAgICA8ZGl2IFtuZ1N0eWxlXT1cInsgJ2ZsZXgtYmFzaXMnOiAnMTAwJScsICdoZWlnaHQnOiAnMCcgfVwiPjwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+Il19