mis-crystal-design-system 18.0.4 → 18.0.5

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 (525) 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 +2 -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/dynamic-form/dynamic-form.component.d.ts +1 -1
  18. package/esm2020/action-list/action-list.component.mjs +370 -0
  19. package/{esm2022 → esm2020}/action-list/action-list.module.mjs +5 -5
  20. package/{esm2022 → esm2020}/analytics/analytics.module.mjs +5 -5
  21. package/esm2020/analytics/analytics.service.mjs +64 -0
  22. package/esm2020/async-search-dropdown/async-dropdown.component.mjs +525 -0
  23. package/{esm2022 → esm2020}/async-search-dropdown/async-dropdown.module.mjs +5 -5
  24. package/esm2020/button/button.component.mjs +87 -0
  25. package/esm2020/button/button.directive.mjs +61 -0
  26. package/{esm2022 → esm2020}/button/button.module.mjs +5 -5
  27. package/esm2020/checkbox/checkbox.component.mjs +124 -0
  28. package/{esm2022 → esm2020}/checkbox/checkbox.module.mjs +5 -5
  29. package/esm2020/chip/chip.component.mjs +82 -0
  30. package/{esm2022 → esm2020}/chip/chip.module.mjs +5 -5
  31. package/{esm2022 → esm2020}/datepicker_v2/datepicker.module.mjs +5 -5
  32. package/esm2020/datepicker_v2/tz-datepicker.directive.mjs +183 -0
  33. package/esm2020/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +449 -0
  34. package/esm2020/datepicker_v2/utils/index.mjs +45 -0
  35. package/{esm2022 → esm2020}/daterangepicker_v2/daterangepicker.module.mjs +5 -5
  36. package/esm2020/daterangepicker_v2/tz-daterangepicker.directive.mjs +165 -0
  37. package/esm2020/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +502 -0
  38. package/{esm2022/datepicker_v2 → esm2020/daterangepicker_v2}/utils/index.mjs +1 -1
  39. package/esm2020/drawer/drawer-body/drawer-body.component.mjs +58 -0
  40. package/{esm2022 → esm2020}/drawer/drawer-ref.mjs +4 -4
  41. package/{esm2022 → esm2020}/drawer/drawer.module.mjs +5 -5
  42. package/{esm2022 → esm2020}/drawer/drawer.service.mjs +5 -5
  43. package/esm2020/dropdown/calculate-container-height.directive.mjs +41 -0
  44. package/esm2020/dropdown/dropdown.component.mjs +472 -0
  45. package/{esm2022 → esm2020}/dropdown/dropdown.module.mjs +5 -5
  46. package/esm2020/dynamic-form/dynamic-form.component.mjs +1108 -0
  47. package/{esm2022 → esm2020}/dynamic-form/dynamic-form.module.mjs +13 -13
  48. package/esm2020/fab/fab.component.mjs +144 -0
  49. package/{esm2022 → esm2020}/fab/fab.module.mjs +5 -5
  50. package/esm2020/filter/filter-panel/filter-panel.component.mjs +403 -0
  51. package/{esm2022 → esm2020}/filter/filters.module.mjs +17 -17
  52. package/esm2020/filter/has-value.pipe.mjs +31 -0
  53. package/{esm2022 → esm2020}/input/directives/input/input.directive.mjs +6 -6
  54. package/esm2020/input/mis-input.component.mjs +84 -0
  55. package/{esm2022 → esm2020}/input/mis-input.module.mjs +5 -5
  56. package/esm2020/input-stepper/input-stepper/input-stepper.component.mjs +88 -0
  57. package/{esm2022 → esm2020}/input-stepper/input-stepper.module.mjs +5 -5
  58. package/esm2020/loader/loader.component.mjs +24 -0
  59. package/{esm2022 → esm2020}/loader/loader.module.mjs +5 -5
  60. package/esm2020/menu/menu-close.directive.mjs +25 -0
  61. package/{esm2022 → esm2020}/menu/menu.directive.mjs +7 -7
  62. package/{esm2022 → esm2020}/menu/menu.module.mjs +5 -5
  63. package/esm2020/mobile-filter/mobile-filter.component.mjs +181 -0
  64. package/{esm2022 → esm2020}/mobile-filter/mobile-filter.module.mjs +5 -5
  65. package/{esm2022 → esm2020}/modal/modal.module.mjs +5 -5
  66. package/esm2020/modal/modal.service.mjs +70 -0
  67. package/esm2020/modal/module-wrapper/module-wrapper.component.mjs +55 -0
  68. package/esm2020/multi-select-dropdown/multi-select-dropdown.component.mjs +491 -0
  69. package/{esm2022 → esm2020}/multi-select-dropdown/multi-select-dropdown.module.mjs +5 -5
  70. package/esm2020/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +517 -0
  71. package/{esm2022 → esm2020}/nested-multi-select-dropdown/nested-multi-select-dropdown.module.mjs +5 -5
  72. package/esm2020/phone-input/phone-input.component.mjs +71 -0
  73. package/{esm2022 → esm2020}/phone-input/phone-input.module.mjs +5 -5
  74. package/esm2020/radio-button/radio-button.component.mjs +56 -0
  75. package/{esm2022 → esm2020}/radio-button/radio-button.module.mjs +5 -5
  76. package/esm2020/ske-loader/ske-loader.component.mjs +53 -0
  77. package/{esm2022 → esm2020}/ske-loader/ske-loader.module.mjs +5 -5
  78. package/esm2020/slider/slider.component.mjs +45 -0
  79. package/{esm2022 → esm2020}/slider/slider.module.mjs +7 -7
  80. package/esm2020/snackbar/snackbar/snackbar.component.mjs +72 -0
  81. package/{esm2022 → esm2020}/snackbar/snackbar.module.mjs +5 -5
  82. package/esm2020/snackbar/snackbar.service.mjs +47 -0
  83. package/{esm2022 → esm2020}/specificdatepicker/specificdatepicker.module.mjs +5 -5
  84. package/esm2020/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +646 -0
  85. package/esm2020/specificdatepicker/tz-specificdatepicker.directive.mjs +196 -0
  86. package/esm2020/specificdatepicker/utils/index.mjs +45 -0
  87. package/esm2020/star-rating/star-rating.component.mjs +112 -0
  88. package/{esm2022 → esm2020}/star-rating/star-rating.module.mjs +5 -5
  89. package/esm2020/switch/switch.component.mjs +55 -0
  90. package/{esm2022 → esm2020}/switch/switch.module.mjs +5 -5
  91. package/esm2020/table/custom-table-cell.directive.mjs +42 -0
  92. package/esm2020/table/filter/filter.component.mjs +176 -0
  93. package/esm2020/table/sub-table/sub-table.component.mjs +193 -0
  94. package/esm2020/table/table.component.mjs +492 -0
  95. package/{esm2022 → esm2020}/table/table.module.mjs +5 -5
  96. package/esm2020/timepicker/timepicker.component.mjs +370 -0
  97. package/esm2020/timepicker/timepicker.directive.mjs +69 -0
  98. package/{esm2022 → esm2020}/timepicker/timepicker.module.mjs +5 -5
  99. package/esm2020/timerangepicker/timerangepicker.component.mjs +236 -0
  100. package/{esm2022 → esm2020}/timerangepicker/timerangepicker.module.mjs +5 -5
  101. package/esm2020/toast/toast.component.mjs +50 -0
  102. package/{esm2022 → esm2020}/toast/toast.data.service.mjs +8 -8
  103. package/{esm2022 → esm2020}/toast/toast.module.mjs +5 -5
  104. package/esm2020/toast/toast.service.mjs +91 -0
  105. package/esm2020/tooltip/tooltip-container/tooltip.component.mjs +79 -0
  106. package/esm2020/tooltip/tooltip.directive.mjs +143 -0
  107. package/{esm2022 → esm2020}/tooltip/tooltip.module.mjs +5 -5
  108. package/esm2020/virtual-scroll/virtual-scroll.component.mjs +190 -0
  109. package/{esm2022 → esm2020}/virtual-scroll/virtual-scroll.module.mjs +7 -7
  110. package/esm2020/widgets/classes/async-widget.mjs +23 -0
  111. package/{esm2022 → esm2020}/widgets/classes/base-widget.mjs +1 -1
  112. package/esm2020/widgets/classes/sync-widget.mjs +20 -0
  113. package/{esm2022 → esm2020}/widgets/services/widget.service.mjs +5 -5
  114. package/{esm2022 → esm2020}/widgets/widgets.module.mjs +5 -5
  115. package/fab/fab.component.d.ts +4 -4
  116. package/fesm2015/mis-crystal-design-system-action-list.mjs +446 -0
  117. package/fesm2015/mis-crystal-design-system-action-list.mjs.map +1 -0
  118. package/fesm2015/mis-crystal-design-system-analytics.mjs +87 -0
  119. package/fesm2015/mis-crystal-design-system-analytics.mjs.map +1 -0
  120. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs +618 -0
  121. package/fesm2015/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -0
  122. package/fesm2015/mis-crystal-design-system-button.mjs +189 -0
  123. package/fesm2015/mis-crystal-design-system-button.mjs.map +1 -0
  124. package/fesm2015/mis-crystal-design-system-checkbox.mjs +166 -0
  125. package/fesm2015/mis-crystal-design-system-checkbox.mjs.map +1 -0
  126. package/fesm2015/mis-crystal-design-system-chip.mjs +123 -0
  127. package/fesm2015/mis-crystal-design-system-chip.mjs.map +1 -0
  128. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs +751 -0
  129. package/fesm2015/mis-crystal-design-system-datepicker_v2.mjs.map +1 -0
  130. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs +769 -0
  131. package/fesm2015/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -0
  132. package/fesm2015/mis-crystal-design-system-drawer.mjs +185 -0
  133. package/fesm2015/mis-crystal-design-system-drawer.mjs.map +1 -0
  134. package/fesm2015/mis-crystal-design-system-dropdown.mjs +616 -0
  135. package/fesm2015/mis-crystal-design-system-dropdown.mjs.map +1 -0
  136. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs +1337 -0
  137. package/fesm2015/mis-crystal-design-system-dynamic-form.mjs.map +1 -0
  138. package/fesm2015/mis-crystal-design-system-fab.mjs +186 -0
  139. package/fesm2015/mis-crystal-design-system-fab.mjs.map +1 -0
  140. package/fesm2015/mis-crystal-design-system-filter.mjs +559 -0
  141. package/fesm2015/mis-crystal-design-system-filter.mjs.map +1 -0
  142. package/fesm2015/mis-crystal-design-system-input-stepper.mjs +124 -0
  143. package/fesm2015/mis-crystal-design-system-input-stepper.mjs.map +1 -0
  144. package/fesm2015/mis-crystal-design-system-input.mjs +165 -0
  145. package/fesm2015/mis-crystal-design-system-input.mjs.map +1 -0
  146. package/fesm2015/mis-crystal-design-system-loader.mjs +57 -0
  147. package/fesm2015/mis-crystal-design-system-loader.mjs.map +1 -0
  148. package/fesm2015/mis-crystal-design-system-menu.mjs +135 -0
  149. package/fesm2015/mis-crystal-design-system-menu.mjs.map +1 -0
  150. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs +227 -0
  151. package/fesm2015/mis-crystal-design-system-mobile-filter.mjs.map +1 -0
  152. package/fesm2015/mis-crystal-design-system-modal.mjs +184 -0
  153. package/fesm2015/mis-crystal-design-system-modal.mjs.map +1 -0
  154. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs +550 -0
  155. package/fesm2015/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -0
  156. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs +559 -0
  157. package/fesm2015/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -0
  158. package/fesm2015/mis-crystal-design-system-phone-input.mjs +107 -0
  159. package/fesm2015/mis-crystal-design-system-phone-input.mjs.map +1 -0
  160. package/fesm2015/mis-crystal-design-system-radio-button.mjs +89 -0
  161. package/fesm2015/mis-crystal-design-system-radio-button.mjs.map +1 -0
  162. package/fesm2015/mis-crystal-design-system-ske-loader.mjs +86 -0
  163. package/fesm2015/mis-crystal-design-system-ske-loader.mjs.map +1 -0
  164. package/fesm2015/mis-crystal-design-system-slider.mjs +88 -0
  165. package/fesm2015/mis-crystal-design-system-slider.mjs.map +1 -0
  166. package/fesm2015/mis-crystal-design-system-snackbar.mjs +175 -0
  167. package/fesm2015/mis-crystal-design-system-snackbar.mjs.map +1 -0
  168. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs +970 -0
  169. package/fesm2015/mis-crystal-design-system-specificdatepicker.mjs.map +1 -0
  170. package/fesm2015/mis-crystal-design-system-star-rating.mjs +145 -0
  171. package/fesm2015/mis-crystal-design-system-star-rating.mjs.map +1 -0
  172. package/fesm2015/mis-crystal-design-system-switch.mjs +88 -0
  173. package/fesm2015/mis-crystal-design-system-switch.mjs.map +1 -0
  174. package/fesm2015/mis-crystal-design-system-table.mjs +1045 -0
  175. package/fesm2015/mis-crystal-design-system-table.mjs.map +1 -0
  176. package/fesm2015/mis-crystal-design-system-timepicker.mjs +484 -0
  177. package/fesm2015/mis-crystal-design-system-timepicker.mjs.map +1 -0
  178. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs +273 -0
  179. package/fesm2015/mis-crystal-design-system-timerangepicker.mjs.map +1 -0
  180. package/fesm2015/mis-crystal-design-system-toast.mjs +214 -0
  181. package/fesm2015/mis-crystal-design-system-toast.mjs.map +1 -0
  182. package/fesm2015/mis-crystal-design-system-tooltip.mjs +272 -0
  183. package/fesm2015/mis-crystal-design-system-tooltip.mjs.map +1 -0
  184. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs +259 -0
  185. package/fesm2015/mis-crystal-design-system-virtual-scroll.mjs.map +1 -0
  186. package/fesm2015/mis-crystal-design-system-widgets.mjs +131 -0
  187. package/fesm2015/mis-crystal-design-system-widgets.mjs.map +1 -0
  188. package/{fesm2022 → fesm2020}/mis-crystal-design-system-action-list.mjs +113 -106
  189. package/fesm2020/mis-crystal-design-system-action-list.mjs.map +1 -0
  190. package/{fesm2022 → fesm2020}/mis-crystal-design-system-analytics.mjs +9 -9
  191. package/{fesm2022 → fesm2020}/mis-crystal-design-system-analytics.mjs.map +1 -1
  192. package/{fesm2022 → fesm2020}/mis-crystal-design-system-async-search-dropdown.mjs +144 -138
  193. package/fesm2020/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -0
  194. package/fesm2020/mis-crystal-design-system-button.mjs +172 -0
  195. package/fesm2020/mis-crystal-design-system-button.mjs.map +1 -0
  196. package/fesm2020/mis-crystal-design-system-checkbox.mjs +150 -0
  197. package/fesm2020/mis-crystal-design-system-checkbox.mjs.map +1 -0
  198. package/fesm2020/mis-crystal-design-system-chip.mjs +108 -0
  199. package/fesm2020/mis-crystal-design-system-chip.mjs.map +1 -0
  200. package/{fesm2022 → fesm2020}/mis-crystal-design-system-datepicker_v2.mjs +140 -133
  201. package/fesm2020/mis-crystal-design-system-datepicker_v2.mjs.map +1 -0
  202. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs +736 -0
  203. package/fesm2020/mis-crystal-design-system-daterangepicker_v2.mjs.map +1 -0
  204. package/{fesm2022 → fesm2020}/mis-crystal-design-system-drawer.mjs +33 -34
  205. package/{fesm2022 → fesm2020}/mis-crystal-design-system-drawer.mjs.map +1 -1
  206. package/{fesm2022 → fesm2020}/mis-crystal-design-system-dropdown.mjs +184 -176
  207. package/fesm2020/mis-crystal-design-system-dropdown.mjs.map +1 -0
  208. package/{fesm2022 → fesm2020}/mis-crystal-design-system-dynamic-form.mjs +456 -441
  209. package/fesm2020/mis-crystal-design-system-dynamic-form.mjs.map +1 -0
  210. package/{fesm2022 → fesm2020}/mis-crystal-design-system-fab.mjs +47 -48
  211. package/fesm2020/mis-crystal-design-system-fab.mjs.map +1 -0
  212. package/{fesm2022 → fesm2020}/mis-crystal-design-system-filter.mjs +140 -133
  213. package/fesm2020/mis-crystal-design-system-filter.mjs.map +1 -0
  214. package/{fesm2022 → fesm2020}/mis-crystal-design-system-input-stepper.mjs +34 -35
  215. package/{fesm2022 → fesm2020}/mis-crystal-design-system-input-stepper.mjs.map +1 -1
  216. package/{esm2022/input/mis-input.component.mjs → fesm2020/mis-crystal-design-system-input.mjs} +109 -49
  217. package/{fesm2022 → fesm2020}/mis-crystal-design-system-input.mjs.map +1 -1
  218. package/fesm2020/mis-crystal-design-system-loader.mjs +50 -0
  219. package/{fesm2022 → fesm2020}/mis-crystal-design-system-loader.mjs.map +1 -1
  220. package/{fesm2022 → fesm2020}/mis-crystal-design-system-menu.mjs +16 -16
  221. package/{fesm2022 → fesm2020}/mis-crystal-design-system-menu.mjs.map +1 -1
  222. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs +206 -0
  223. package/fesm2020/mis-crystal-design-system-mobile-filter.mjs.map +1 -0
  224. package/{fesm2022 → fesm2020}/mis-crystal-design-system-modal.mjs +33 -34
  225. package/{fesm2022 → fesm2020}/mis-crystal-design-system-modal.mjs.map +1 -1
  226. package/{fesm2022 → fesm2020}/mis-crystal-design-system-multi-select-dropdown.mjs +109 -107
  227. package/fesm2020/mis-crystal-design-system-multi-select-dropdown.mjs.map +1 -0
  228. package/{fesm2022 → fesm2020}/mis-crystal-design-system-nested-multi-select-dropdown.mjs +129 -128
  229. package/fesm2020/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +1 -0
  230. package/{fesm2022 → fesm2020}/mis-crystal-design-system-phone-input.mjs +21 -22
  231. package/{fesm2022 → fesm2020}/mis-crystal-design-system-phone-input.mjs.map +1 -1
  232. package/fesm2020/mis-crystal-design-system-radio-button.mjs +82 -0
  233. package/{fesm2022 → fesm2020}/mis-crystal-design-system-radio-button.mjs.map +1 -1
  234. package/fesm2020/mis-crystal-design-system-ske-loader.mjs +76 -0
  235. package/fesm2020/mis-crystal-design-system-ske-loader.mjs.map +1 -0
  236. package/fesm2020/mis-crystal-design-system-slider.mjs +79 -0
  237. package/{fesm2022 → fesm2020}/mis-crystal-design-system-slider.mjs.map +1 -1
  238. package/{fesm2022 → fesm2020}/mis-crystal-design-system-snackbar.mjs +32 -32
  239. package/fesm2020/mis-crystal-design-system-snackbar.mjs.map +1 -0
  240. package/{fesm2022 → fesm2020}/mis-crystal-design-system-specificdatepicker.mjs +204 -204
  241. package/fesm2020/mis-crystal-design-system-specificdatepicker.mjs.map +1 -0
  242. package/{fesm2022 → fesm2020}/mis-crystal-design-system-star-rating.mjs +28 -29
  243. package/fesm2020/mis-crystal-design-system-star-rating.mjs.map +1 -0
  244. package/fesm2020/mis-crystal-design-system-styles.mjs +4 -0
  245. package/fesm2020/mis-crystal-design-system-styles.mjs.map +1 -0
  246. package/fesm2020/mis-crystal-design-system-switch.mjs +81 -0
  247. package/fesm2020/mis-crystal-design-system-switch.mjs.map +1 -0
  248. package/{fesm2022 → fesm2020}/mis-crystal-design-system-table.mjs +321 -314
  249. package/fesm2020/mis-crystal-design-system-table.mjs.map +1 -0
  250. package/{fesm2022 → fesm2020}/mis-crystal-design-system-timepicker.mjs +74 -78
  251. package/{fesm2022 → fesm2020}/mis-crystal-design-system-timepicker.mjs.map +1 -1
  252. package/{fesm2022 → fesm2020}/mis-crystal-design-system-timerangepicker.mjs +25 -26
  253. package/{fesm2022 → fesm2020}/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
  254. package/{fesm2022 → fesm2020}/mis-crystal-design-system-toast.mjs +34 -35
  255. package/{fesm2022 → fesm2020}/mis-crystal-design-system-toast.mjs.map +1 -1
  256. package/{fesm2022 → fesm2020}/mis-crystal-design-system-tooltip.mjs +47 -47
  257. package/{fesm2022 → fesm2020}/mis-crystal-design-system-tooltip.mjs.map +1 -1
  258. package/fesm2020/mis-crystal-design-system-utils.mjs +24 -0
  259. package/fesm2020/mis-crystal-design-system-utils.mjs.map +1 -0
  260. package/{fesm2022 → fesm2020}/mis-crystal-design-system-virtual-scroll.mjs +52 -50
  261. package/fesm2020/mis-crystal-design-system-virtual-scroll.mjs.map +1 -0
  262. package/{fesm2022 → fesm2020}/mis-crystal-design-system-widgets.mjs +4 -4
  263. package/{fesm2022 → fesm2020}/mis-crystal-design-system-widgets.mjs.map +1 -1
  264. package/fesm2020/mis-crystal-design-system.mjs +24 -0
  265. package/fesm2020/mis-crystal-design-system.mjs.map +1 -0
  266. package/filter/filter-panel/filter-panel.component.d.ts +4 -3
  267. package/input/directives/input/input.directive.d.ts +1 -1
  268. package/input/mis-input.component.d.ts +1 -1
  269. package/input-stepper/input-stepper/input-stepper.component.d.ts +1 -1
  270. package/loader/loader.component.d.ts +1 -1
  271. package/menu/menu-close.directive.d.ts +1 -1
  272. package/menu/menu.directive.d.ts +1 -1
  273. package/mobile-filter/mobile-filter.component.d.ts +1 -1
  274. package/modal/module-wrapper/module-wrapper.component.d.ts +1 -1
  275. package/multi-select-dropdown/multi-select-dropdown.component.d.ts +1 -1
  276. package/nested-multi-select-dropdown/nested-multi-select-dropdown.component.d.ts +1 -1
  277. package/package.json +204 -122
  278. package/phone-input/phone-input.component.d.ts +1 -1
  279. package/radio-button/radio-button.component.d.ts +1 -1
  280. package/ske-loader/ske-loader.component.d.ts +1 -1
  281. package/slider/slider.component.d.ts +1 -1
  282. package/snackbar/snackbar/snackbar.component.d.ts +1 -1
  283. package/specificdatepicker/models/sdp-config.model.d.ts +1 -1
  284. package/specificdatepicker/tz-sdp-container/tz-sdp-container.component.d.ts +1 -1
  285. package/specificdatepicker/tz-specificdatepicker.directive.d.ts +1 -1
  286. package/star-rating/star-rating.component.d.ts +1 -1
  287. package/switch/switch.component.d.ts +1 -1
  288. package/table/custom-table-cell.directive.d.ts +1 -1
  289. package/table/filter/filter.component.d.ts +1 -1
  290. package/table/sub-table/sub-table.component.d.ts +1 -1
  291. package/table/table.component.d.ts +1 -1
  292. package/timepicker/timepicker.component.d.ts +1 -1
  293. package/timepicker/timepicker.directive.d.ts +1 -1
  294. package/timerangepicker/timerange.namespace.d.ts +1 -1
  295. package/timerangepicker/timerangepicker.component.d.ts +1 -1
  296. package/toast/toast.component.d.ts +1 -1
  297. package/toast/toast.service.d.ts +1 -1
  298. package/tooltip/models/tooltip.model.d.ts +1 -1
  299. package/tooltip/tooltip-container/tooltip.component.d.ts +1 -1
  300. package/tooltip/tooltip.directive.d.ts +1 -1
  301. package/virtual-scroll/virtual-scroll.component.d.ts +1 -1
  302. package/widgets/interfaces/widgets.model.d.ts +1 -1
  303. package/esm2022/action-list/action-list.component.mjs +0 -363
  304. package/esm2022/analytics/analytics.service.mjs +0 -64
  305. package/esm2022/async-search-dropdown/async-dropdown.component.mjs +0 -519
  306. package/esm2022/button/button.component.mjs +0 -88
  307. package/esm2022/button/button.directive.mjs +0 -61
  308. package/esm2022/checkbox/checkbox.component.mjs +0 -124
  309. package/esm2022/chip/chip.component.mjs +0 -82
  310. package/esm2022/datepicker_v2/tz-datepicker.directive.mjs +0 -183
  311. package/esm2022/datepicker_v2/tz-dp-container/tz-dp-container.component.mjs +0 -442
  312. package/esm2022/daterangepicker_v2/tz-daterangepicker.directive.mjs +0 -165
  313. package/esm2022/daterangepicker_v2/tz-drp-container/tz-drp-container.component.mjs +0 -503
  314. package/esm2022/daterangepicker_v2/utils/index.mjs +0 -45
  315. package/esm2022/drawer/drawer-body/drawer-body.component.mjs +0 -59
  316. package/esm2022/dropdown/calculate-container-height.directive.mjs +0 -41
  317. package/esm2022/dropdown/dropdown.component.mjs +0 -464
  318. package/esm2022/dynamic-form/dynamic-form.component.mjs +0 -1093
  319. package/esm2022/fab/fab.component.mjs +0 -145
  320. package/esm2022/filter/filter-panel/filter-panel.component.mjs +0 -396
  321. package/esm2022/filter/has-value.pipe.mjs +0 -31
  322. package/esm2022/input-stepper/input-stepper/input-stepper.component.mjs +0 -89
  323. package/esm2022/loader/loader.component.mjs +0 -25
  324. package/esm2022/menu/menu-close.directive.mjs +0 -25
  325. package/esm2022/mobile-filter/mobile-filter.component.mjs +0 -180
  326. package/esm2022/modal/modal.service.mjs +0 -70
  327. package/esm2022/modal/module-wrapper/module-wrapper.component.mjs +0 -56
  328. package/esm2022/multi-select-dropdown/multi-select-dropdown.component.mjs +0 -489
  329. package/esm2022/nested-multi-select-dropdown/nested-multi-select-dropdown.component.mjs +0 -516
  330. package/esm2022/phone-input/phone-input.component.mjs +0 -72
  331. package/esm2022/radio-button/radio-button.component.mjs +0 -57
  332. package/esm2022/ske-loader/ske-loader.component.mjs +0 -54
  333. package/esm2022/slider/slider.component.mjs +0 -46
  334. package/esm2022/snackbar/snackbar/snackbar.component.mjs +0 -72
  335. package/esm2022/snackbar/snackbar.service.mjs +0 -47
  336. package/esm2022/specificdatepicker/tz-sdp-container/tz-sdp-container.component.mjs +0 -646
  337. package/esm2022/specificdatepicker/tz-specificdatepicker.directive.mjs +0 -196
  338. package/esm2022/specificdatepicker/utils/index.mjs +0 -45
  339. package/esm2022/star-rating/star-rating.component.mjs +0 -113
  340. package/esm2022/switch/switch.component.mjs +0 -56
  341. package/esm2022/table/custom-table-cell.directive.mjs +0 -42
  342. package/esm2022/table/filter/filter.component.mjs +0 -177
  343. package/esm2022/table/sub-table/sub-table.component.mjs +0 -192
  344. package/esm2022/table/table.component.mjs +0 -485
  345. package/esm2022/timepicker/timepicker.component.mjs +0 -374
  346. package/esm2022/timepicker/timepicker.directive.mjs +0 -69
  347. package/esm2022/timerangepicker/timerangepicker.component.mjs +0 -237
  348. package/esm2022/toast/toast.component.mjs +0 -51
  349. package/esm2022/toast/toast.service.mjs +0 -91
  350. package/esm2022/tooltip/tooltip-container/tooltip.component.mjs +0 -79
  351. package/esm2022/tooltip/tooltip.directive.mjs +0 -143
  352. package/esm2022/virtual-scroll/virtual-scroll.component.mjs +0 -188
  353. package/esm2022/widgets/classes/async-widget.mjs +0 -23
  354. package/esm2022/widgets/classes/sync-widget.mjs +0 -20
  355. package/fesm2022/mis-crystal-design-system-action-list.mjs.map +0 -1
  356. package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +0 -1
  357. package/fesm2022/mis-crystal-design-system-button.mjs +0 -173
  358. package/fesm2022/mis-crystal-design-system-button.mjs.map +0 -1
  359. package/fesm2022/mis-crystal-design-system-checkbox.mjs +0 -150
  360. package/fesm2022/mis-crystal-design-system-checkbox.mjs.map +0 -1
  361. package/fesm2022/mis-crystal-design-system-chip.mjs +0 -108
  362. package/fesm2022/mis-crystal-design-system-chip.mjs.map +0 -1
  363. package/fesm2022/mis-crystal-design-system-datepicker_v2.mjs.map +0 -1
  364. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs +0 -737
  365. package/fesm2022/mis-crystal-design-system-daterangepicker_v2.mjs.map +0 -1
  366. package/fesm2022/mis-crystal-design-system-dropdown.mjs.map +0 -1
  367. package/fesm2022/mis-crystal-design-system-dynamic-form.mjs.map +0 -1
  368. package/fesm2022/mis-crystal-design-system-fab.mjs.map +0 -1
  369. package/fesm2022/mis-crystal-design-system-filter.mjs.map +0 -1
  370. package/fesm2022/mis-crystal-design-system-input.mjs +0 -146
  371. package/fesm2022/mis-crystal-design-system-loader.mjs +0 -51
  372. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs +0 -205
  373. package/fesm2022/mis-crystal-design-system-mobile-filter.mjs.map +0 -1
  374. package/fesm2022/mis-crystal-design-system-multi-select-dropdown.mjs.map +0 -1
  375. package/fesm2022/mis-crystal-design-system-nested-multi-select-dropdown.mjs.map +0 -1
  376. package/fesm2022/mis-crystal-design-system-radio-button.mjs +0 -83
  377. package/fesm2022/mis-crystal-design-system-ske-loader.mjs +0 -77
  378. package/fesm2022/mis-crystal-design-system-ske-loader.mjs.map +0 -1
  379. package/fesm2022/mis-crystal-design-system-slider.mjs +0 -80
  380. package/fesm2022/mis-crystal-design-system-snackbar.mjs.map +0 -1
  381. package/fesm2022/mis-crystal-design-system-specificdatepicker.mjs.map +0 -1
  382. package/fesm2022/mis-crystal-design-system-star-rating.mjs.map +0 -1
  383. package/fesm2022/mis-crystal-design-system-switch.mjs +0 -82
  384. package/fesm2022/mis-crystal-design-system-switch.mjs.map +0 -1
  385. package/fesm2022/mis-crystal-design-system-table.mjs.map +0 -1
  386. package/fesm2022/mis-crystal-design-system-virtual-scroll.mjs.map +0 -1
  387. /package/{esm2022 → esm2020}/action-list/index.mjs +0 -0
  388. /package/{esm2022 → esm2020}/action-list/mis-crystal-design-system-action-list.mjs +0 -0
  389. /package/{esm2022 → esm2020}/action-list/public_api.mjs +0 -0
  390. /package/{esm2022 → esm2020}/analytics/index.mjs +0 -0
  391. /package/{esm2022 → esm2020}/analytics/mis-crystal-design-system-analytics.mjs +0 -0
  392. /package/{esm2022 → esm2020}/analytics/public_api.mjs +0 -0
  393. /package/{esm2022 → esm2020}/async-search-dropdown/index.mjs +0 -0
  394. /package/{esm2022 → esm2020}/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.mjs +0 -0
  395. /package/{esm2022 → esm2020}/async-search-dropdown/public_api.mjs +0 -0
  396. /package/{esm2022 → esm2020}/button/index.mjs +0 -0
  397. /package/{esm2022 → esm2020}/button/mis-crystal-design-system-button.mjs +0 -0
  398. /package/{esm2022 → esm2020}/button/public_api.mjs +0 -0
  399. /package/{esm2022 → esm2020}/checkbox/index.mjs +0 -0
  400. /package/{esm2022 → esm2020}/checkbox/mis-crystal-design-system-checkbox.mjs +0 -0
  401. /package/{esm2022 → esm2020}/checkbox/public_api.mjs +0 -0
  402. /package/{esm2022 → esm2020}/chip/index.mjs +0 -0
  403. /package/{esm2022 → esm2020}/chip/mis-crystal-design-system-chip.mjs +0 -0
  404. /package/{esm2022 → esm2020}/chip/public_api.mjs +0 -0
  405. /package/{esm2022 → esm2020}/datepicker_v2/datepicker-constants.mjs +0 -0
  406. /package/{esm2022 → esm2020}/datepicker_v2/index.mjs +0 -0
  407. /package/{esm2022 → esm2020}/datepicker_v2/mis-crystal-design-system-datepicker_v2.mjs +0 -0
  408. /package/{esm2022 → esm2020}/datepicker_v2/models/dp-config.model.mjs +0 -0
  409. /package/{esm2022 → esm2020}/datepicker_v2/public_api.mjs +0 -0
  410. /package/{esm2022 → esm2020}/daterangepicker_v2/daterangepicker-constants.mjs +0 -0
  411. /package/{esm2022 → esm2020}/daterangepicker_v2/index.mjs +0 -0
  412. /package/{esm2022 → esm2020}/daterangepicker_v2/mis-crystal-design-system-daterangepicker_v2.mjs +0 -0
  413. /package/{esm2022 → esm2020}/daterangepicker_v2/models/drp-config.model.mjs +0 -0
  414. /package/{esm2022 → esm2020}/daterangepicker_v2/public_api.mjs +0 -0
  415. /package/{esm2022 → esm2020}/drawer/drawer-constants.mjs +0 -0
  416. /package/{esm2022 → esm2020}/drawer/index.mjs +0 -0
  417. /package/{esm2022 → esm2020}/drawer/mis-crystal-design-system-drawer.mjs +0 -0
  418. /package/{esm2022 → esm2020}/drawer/public_api.mjs +0 -0
  419. /package/{esm2022 → esm2020}/dropdown/index.mjs +0 -0
  420. /package/{esm2022 → esm2020}/dropdown/mis-crystal-design-system-dropdown.mjs +0 -0
  421. /package/{esm2022 → esm2020}/dropdown/public_api.mjs +0 -0
  422. /package/{esm2022 → esm2020}/dynamic-form/dynamic-form.namespace.mjs +0 -0
  423. /package/{esm2022 → esm2020}/dynamic-form/index.mjs +0 -0
  424. /package/{esm2022 → esm2020}/dynamic-form/mis-crystal-design-system-dynamic-form.mjs +0 -0
  425. /package/{esm2022 → esm2020}/dynamic-form/public_api.mjs +0 -0
  426. /package/{esm2022 → esm2020}/fab/index.mjs +0 -0
  427. /package/{esm2022 → esm2020}/fab/mis-crystal-design-system-fab.mjs +0 -0
  428. /package/{esm2022 → esm2020}/fab/public_api.mjs +0 -0
  429. /package/{esm2022 → esm2020}/filter/animations/slideFromRight.mjs +0 -0
  430. /package/{esm2022 → esm2020}/filter/index.mjs +0 -0
  431. /package/{esm2022 → esm2020}/filter/mis-crystal-design-system-filter.mjs +0 -0
  432. /package/{esm2022 → esm2020}/filter/public_api.mjs +0 -0
  433. /package/{esm2022 → esm2020}/index.mjs +0 -0
  434. /package/{esm2022 → esm2020}/input/index.mjs +0 -0
  435. /package/{esm2022 → esm2020}/input/mis-crystal-design-system-input.mjs +0 -0
  436. /package/{esm2022 → esm2020}/input/public_api.mjs +0 -0
  437. /package/{esm2022 → esm2020}/input-stepper/index.mjs +0 -0
  438. /package/{esm2022 → esm2020}/input-stepper/mis-crystal-design-system-input-stepper.mjs +0 -0
  439. /package/{esm2022 → esm2020}/input-stepper/public_api.mjs +0 -0
  440. /package/{esm2022 → esm2020}/loader/index.mjs +0 -0
  441. /package/{esm2022 → esm2020}/loader/mis-crystal-design-system-loader.mjs +0 -0
  442. /package/{esm2022 → esm2020}/loader/public_api.mjs +0 -0
  443. /package/{esm2022 → esm2020}/menu/index.mjs +0 -0
  444. /package/{esm2022 → esm2020}/menu/mis-crystal-design-system-menu.mjs +0 -0
  445. /package/{esm2022 → esm2020}/menu/public_api.mjs +0 -0
  446. /package/{esm2022 → esm2020}/mis-crystal-design-system.mjs +0 -0
  447. /package/{esm2022 → esm2020}/mobile-filter/index.mjs +0 -0
  448. /package/{esm2022 → esm2020}/mobile-filter/mis-crystal-design-system-mobile-filter.mjs +0 -0
  449. /package/{esm2022 → esm2020}/mobile-filter/public_api.mjs +0 -0
  450. /package/{esm2022 → esm2020}/modal/index.mjs +0 -0
  451. /package/{esm2022 → esm2020}/modal/mis-crystal-design-system-modal.mjs +0 -0
  452. /package/{esm2022 → esm2020}/modal/modal-constants.mjs +0 -0
  453. /package/{esm2022 → esm2020}/modal/modal-ref.mjs +0 -0
  454. /package/{esm2022 → esm2020}/modal/public_api.mjs +0 -0
  455. /package/{esm2022 → esm2020}/multi-select-dropdown/index.mjs +0 -0
  456. /package/{esm2022 → esm2020}/multi-select-dropdown/mis-crystal-design-system-multi-select-dropdown.mjs +0 -0
  457. /package/{esm2022 → esm2020}/multi-select-dropdown/public_api.mjs +0 -0
  458. /package/{esm2022 → esm2020}/nested-multi-select-dropdown/index.mjs +0 -0
  459. /package/{esm2022 → esm2020}/nested-multi-select-dropdown/mis-crystal-design-system-nested-multi-select-dropdown.mjs +0 -0
  460. /package/{esm2022 → esm2020}/nested-multi-select-dropdown/public_api.mjs +0 -0
  461. /package/{esm2022 → esm2020}/phone-input/index.mjs +0 -0
  462. /package/{esm2022 → esm2020}/phone-input/mis-crystal-design-system-phone-input.mjs +0 -0
  463. /package/{esm2022 → esm2020}/phone-input/public_api.mjs +0 -0
  464. /package/{esm2022 → esm2020}/public-api.mjs +0 -0
  465. /package/{esm2022 → esm2020}/radio-button/index.mjs +0 -0
  466. /package/{esm2022 → esm2020}/radio-button/mis-crystal-design-system-radio-button.mjs +0 -0
  467. /package/{esm2022 → esm2020}/radio-button/public_api.mjs +0 -0
  468. /package/{esm2022 → esm2020}/ske-loader/index.mjs +0 -0
  469. /package/{esm2022 → esm2020}/ske-loader/mis-crystal-design-system-ske-loader.mjs +0 -0
  470. /package/{esm2022 → esm2020}/ske-loader/public_api.mjs +0 -0
  471. /package/{esm2022 → esm2020}/slider/index.mjs +0 -0
  472. /package/{esm2022 → esm2020}/slider/mis-crystal-design-system-slider.mjs +0 -0
  473. /package/{esm2022 → esm2020}/slider/public_api.mjs +0 -0
  474. /package/{esm2022 → esm2020}/snackbar/index.mjs +0 -0
  475. /package/{esm2022 → esm2020}/snackbar/mis-crystal-design-system-snackbar.mjs +0 -0
  476. /package/{esm2022 → esm2020}/snackbar/public_api.mjs +0 -0
  477. /package/{esm2022 → esm2020}/specificdatepicker/daterangepicker-constants.mjs +0 -0
  478. /package/{esm2022 → esm2020}/specificdatepicker/index.mjs +0 -0
  479. /package/{esm2022 → esm2020}/specificdatepicker/mis-crystal-design-system-specificdatepicker.mjs +0 -0
  480. /package/{esm2022 → esm2020}/specificdatepicker/models/sdp-config.model.mjs +0 -0
  481. /package/{esm2022 → esm2020}/specificdatepicker/public_api.mjs +0 -0
  482. /package/{esm2022 → esm2020}/star-rating/index.mjs +0 -0
  483. /package/{esm2022 → esm2020}/star-rating/mis-crystal-design-system-star-rating.mjs +0 -0
  484. /package/{esm2022 → esm2020}/star-rating/public_api.mjs +0 -0
  485. /package/{esm2022 → esm2020}/styles/index.mjs +0 -0
  486. /package/{esm2022 → esm2020}/styles/mis-crystal-design-system-styles.mjs +0 -0
  487. /package/{esm2022 → esm2020}/styles/public_api.mjs +0 -0
  488. /package/{esm2022 → esm2020}/switch/index.mjs +0 -0
  489. /package/{esm2022 → esm2020}/switch/mis-crystal-design-system-switch.mjs +0 -0
  490. /package/{esm2022 → esm2020}/switch/public_api.mjs +0 -0
  491. /package/{esm2022 → esm2020}/table/index.mjs +0 -0
  492. /package/{esm2022 → esm2020}/table/mis-crystal-design-system-table.mjs +0 -0
  493. /package/{esm2022 → esm2020}/table/public_api.mjs +0 -0
  494. /package/{esm2022 → esm2020}/timepicker/index.mjs +0 -0
  495. /package/{esm2022 → esm2020}/timepicker/mis-crystal-design-system-timepicker.mjs +0 -0
  496. /package/{esm2022 → esm2020}/timepicker/public_api.mjs +0 -0
  497. /package/{esm2022 → esm2020}/timepicker/time.namespace.mjs +0 -0
  498. /package/{esm2022 → esm2020}/timerangepicker/index.mjs +0 -0
  499. /package/{esm2022 → esm2020}/timerangepicker/mis-crystal-design-system-timerangepicker.mjs +0 -0
  500. /package/{esm2022 → esm2020}/timerangepicker/public_api.mjs +0 -0
  501. /package/{esm2022 → esm2020}/timerangepicker/timerange.namespace.mjs +0 -0
  502. /package/{esm2022 → esm2020}/toast/index.mjs +0 -0
  503. /package/{esm2022 → esm2020}/toast/mis-crystal-design-system-toast.mjs +0 -0
  504. /package/{esm2022 → esm2020}/toast/public_api.mjs +0 -0
  505. /package/{esm2022 → esm2020}/tooltip/index.mjs +0 -0
  506. /package/{esm2022 → esm2020}/tooltip/mis-crystal-design-system-tooltip.mjs +0 -0
  507. /package/{esm2022 → esm2020}/tooltip/models/tooltip.model.mjs +0 -0
  508. /package/{esm2022 → esm2020}/tooltip/public_api.mjs +0 -0
  509. /package/{esm2022 → esm2020}/utils/index.mjs +0 -0
  510. /package/{esm2022 → esm2020}/utils/mis-crystal-design-system-utils.mjs +0 -0
  511. /package/{esm2022 → esm2020}/virtual-scroll/index.mjs +0 -0
  512. /package/{esm2022 → esm2020}/virtual-scroll/mis-crystal-design-system-virtual-scroll.mjs +0 -0
  513. /package/{esm2022 → esm2020}/virtual-scroll/public_api.mjs +0 -0
  514. /package/{esm2022 → esm2020}/virtual-scroll/virtual-scroll.constants.mjs +0 -0
  515. /package/{esm2022 → esm2020}/widgets/classes/widget-group.mjs +0 -0
  516. /package/{esm2022 → esm2020}/widgets/index.mjs +0 -0
  517. /package/{esm2022 → esm2020}/widgets/interfaces/widgets.model.mjs +0 -0
  518. /package/{esm2022 → esm2020}/widgets/mis-crystal-design-system-widgets.mjs +0 -0
  519. /package/{esm2022 → esm2020}/widgets/public_api.mjs +0 -0
  520. /package/{fesm2022 → fesm2015}/mis-crystal-design-system-styles.mjs +0 -0
  521. /package/{fesm2022 → fesm2015}/mis-crystal-design-system-styles.mjs.map +0 -0
  522. /package/{fesm2022 → fesm2015}/mis-crystal-design-system-utils.mjs +0 -0
  523. /package/{fesm2022 → fesm2015}/mis-crystal-design-system-utils.mjs.map +0 -0
  524. /package/{fesm2022 → fesm2015}/mis-crystal-design-system.mjs +0 -0
  525. /package/{fesm2022 → fesm2015}/mis-crystal-design-system.mjs.map +0 -0
@@ -0,0 +1,525 @@
1
+ import { ConnectionPositionPair, OverlayConfig } from "@angular/cdk/overlay";
2
+ import { TemplatePortal } from "@angular/cdk/portal";
3
+ import { Component, ContentChild, EventEmitter, HostListener, Input, Output, ViewChild } from "@angular/core";
4
+ import { UntypedFormControl } from "@angular/forms";
5
+ import { merge, Subject } from "rxjs";
6
+ import { debounceTime, distinctUntilChanged, tap } from "rxjs/operators";
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/cdk/overlay";
9
+ import * as i2 from "@angular/common";
10
+ import * as i3 from "@angular/forms";
11
+ import * as i4 from "mis-crystal-design-system/loader";
12
+ import * as i5 from "@angular/cdk/a11y";
13
+ const _c0 = ["misCustomItem"];
14
+ const _c1 = ["asyncCustomLoader"];
15
+ const _c2 = ["ddBtn"];
16
+ const _c3 = ["input"];
17
+ const _c4 = ["dd"];
18
+ const _c5 = function (a0, a1) { return { "chip-md": a0, "chip-sm": a1 }; };
19
+ const _c6 = function (a0, a1) { return { "h6": a0, "h8-b": a1 }; };
20
+ const _c7 = function () { return { "margin-right": "4px" }; };
21
+ const _c8 = function (a1) { return { "cursor": "pointer", "font-size": a1 }; };
22
+ function AsyncDropdownComponent_div_2_div_1_Template(rf, ctx) { if (rf & 1) {
23
+ const _r11 = i0.ɵɵgetCurrentView();
24
+ i0.ɵɵelementStart(0, "div", 11)(1, "span", 12);
25
+ i0.ɵɵtext(2);
26
+ i0.ɵɵelementEnd();
27
+ i0.ɵɵelementStart(3, "span", 13);
28
+ i0.ɵɵlistener("click", function AsyncDropdownComponent_div_2_div_1_Template_span_click_3_listener() { const restoredCtx = i0.ɵɵrestoreView(_r11); const item_r9 = restoredCtx.$implicit; const ctx_r10 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r10.removeItem(item_r9)); })("keyup.enter", function AsyncDropdownComponent_div_2_div_1_Template_span_keyup_enter_3_listener() { const restoredCtx = i0.ɵɵrestoreView(_r11); const item_r9 = restoredCtx.$implicit; const ctx_r12 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r12.removeItem(item_r9)); });
29
+ i0.ɵɵelementEnd()();
30
+ } if (rf & 2) {
31
+ const item_r9 = ctx.$implicit;
32
+ const ctx_r8 = i0.ɵɵnextContext(2);
33
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(5, _c5, ctx_r8.size === "md", ctx_r8.size === "sm"));
34
+ i0.ɵɵadvance(1);
35
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(8, _c6, ctx_r8.size === "md", ctx_r8.size === "sm"))("ngStyle", i0.ɵɵpureFunction0(11, _c7));
36
+ i0.ɵɵadvance(1);
37
+ i0.ɵɵtextInterpolate(item_r9[ctx_r8.displayKey]);
38
+ i0.ɵɵadvance(1);
39
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction1(12, _c8, ctx_r8.size === "sm" ? "12px" : "14px"));
40
+ } }
41
+ function AsyncDropdownComponent_div_2_Template(rf, ctx) { if (rf & 1) {
42
+ i0.ɵɵelementStart(0, "div", 9);
43
+ i0.ɵɵtemplate(1, AsyncDropdownComponent_div_2_div_1_Template, 4, 14, "div", 10);
44
+ i0.ɵɵelementEnd();
45
+ } if (rf & 2) {
46
+ const ctx_r1 = i0.ɵɵnextContext();
47
+ i0.ɵɵadvance(1);
48
+ i0.ɵɵproperty("ngForOf", ctx_r1.selectedItems);
49
+ } }
50
+ const _c9 = function (a0, a1) { return { "ip-md": a0, "ip-sm": a1 }; };
51
+ function AsyncDropdownComponent_input_5_Template(rf, ctx) { if (rf & 1) {
52
+ const _r15 = i0.ɵɵgetCurrentView();
53
+ i0.ɵɵelementStart(0, "input", 14, 15);
54
+ i0.ɵɵlistener("focus", function AsyncDropdownComponent_input_5_Template_input_focus_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r14 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r14.defaultCall()); })("keyup.enter", function AsyncDropdownComponent_input_5_Template_input_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r16 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r16.enablePopUpOnTab()); });
55
+ i0.ɵɵelementEnd();
56
+ } if (rf & 2) {
57
+ const ctx_r2 = i0.ɵɵnextContext();
58
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(3, _c9, ctx_r2.size === "md", ctx_r2.size === "sm"))("placeholder", ctx_r2.placeholder)("formControl", ctx_r2.searchInput);
59
+ } }
60
+ function AsyncDropdownComponent_ng_template_6_Template(rf, ctx) { if (rf & 1) {
61
+ const _r19 = i0.ɵɵgetCurrentView();
62
+ i0.ɵɵelementStart(0, "input", 16, 15);
63
+ i0.ɵɵlistener("focus", function AsyncDropdownComponent_ng_template_6_Template_input_focus_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r18 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r18.defaultCall()); })("keyup.enter", function AsyncDropdownComponent_ng_template_6_Template_input_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r20 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r20.enablePopUpOnTab()); });
64
+ i0.ɵɵelementEnd();
65
+ } if (rf & 2) {
66
+ const ctx_r4 = i0.ɵɵnextContext();
67
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(3, _c9, ctx_r4.size === "md", ctx_r4.size === "sm"))("placeholder", ctx_r4.placeholder)("formControl", ctx_r4.searchInput);
68
+ } }
69
+ function AsyncDropdownComponent_div_8_Template(rf, ctx) { if (rf & 1) {
70
+ const _r22 = i0.ɵɵgetCurrentView();
71
+ i0.ɵɵelementStart(0, "div", 17);
72
+ i0.ɵɵlistener("click", function AsyncDropdownComponent_div_8_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r21 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r21.removeInputValue()); })("keyup.enter", function AsyncDropdownComponent_div_8_Template_div_keyup_enter_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r23 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r23.removeInputValue()); });
73
+ i0.ɵɵelementEnd();
74
+ } }
75
+ function AsyncDropdownComponent_ng_template_9_ng_container_1_ng_container_1_Template(rf, ctx) { if (rf & 1) {
76
+ i0.ɵɵelementContainer(0, 22);
77
+ } if (rf & 2) {
78
+ const ctx_r28 = i0.ɵɵnextContext(3);
79
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r28.customLoader);
80
+ } }
81
+ function AsyncDropdownComponent_ng_template_9_ng_container_1_ng_template_2_div_0_Template(rf, ctx) { if (rf & 1) {
82
+ i0.ɵɵelementStart(0, "div", 24);
83
+ i0.ɵɵelement(1, "mis-loader", 25);
84
+ i0.ɵɵelementEnd();
85
+ } if (rf & 2) {
86
+ i0.ɵɵadvance(1);
87
+ i0.ɵɵproperty("mobileView", true);
88
+ } }
89
+ function AsyncDropdownComponent_ng_template_9_ng_container_1_ng_template_2_Template(rf, ctx) { if (rf & 1) {
90
+ i0.ɵɵtemplate(0, AsyncDropdownComponent_ng_template_9_ng_container_1_ng_template_2_div_0_Template, 2, 1, "div", 23);
91
+ } if (rf & 2) {
92
+ const ctx_r30 = i0.ɵɵnextContext(3);
93
+ i0.ɵɵproperty("ngIf", ctx_r30.loading && !ctx_r30.customLoader);
94
+ } }
95
+ function AsyncDropdownComponent_ng_template_9_ng_container_1_Template(rf, ctx) { if (rf & 1) {
96
+ i0.ɵɵelementContainerStart(0);
97
+ i0.ɵɵtemplate(1, AsyncDropdownComponent_ng_template_9_ng_container_1_ng_container_1_Template, 1, 1, "ng-container", 20);
98
+ i0.ɵɵtemplate(2, AsyncDropdownComponent_ng_template_9_ng_container_1_ng_template_2_Template, 1, 1, "ng-template", null, 21, i0.ɵɵtemplateRefExtractor);
99
+ i0.ɵɵelementContainerEnd();
100
+ } if (rf & 2) {
101
+ const _r29 = i0.ɵɵreference(3);
102
+ const ctx_r24 = i0.ɵɵnextContext(2);
103
+ i0.ɵɵadvance(1);
104
+ i0.ɵɵproperty("ngIf", ctx_r24.customLoader)("ngIfElse", _r29);
105
+ } }
106
+ function AsyncDropdownComponent_ng_template_9_ng_container_2_Template(rf, ctx) { if (rf & 1) {
107
+ i0.ɵɵelementContainerStart(0);
108
+ i0.ɵɵelementStart(1, "div", 24)(2, "p");
109
+ i0.ɵɵtext(3, "Unknown error has occurred, ");
110
+ i0.ɵɵelement(4, "br");
111
+ i0.ɵɵtext(5, " Please try again later.");
112
+ i0.ɵɵelementEnd()();
113
+ i0.ɵɵelementContainerEnd();
114
+ } }
115
+ const _c10 = function (a0) { return { $implicit: a0 }; };
116
+ function AsyncDropdownComponent_ng_template_9_div_3_ng_container_1_div_3_Template(rf, ctx) { if (rf & 1) {
117
+ i0.ɵɵelementStart(0, "div", 31);
118
+ i0.ɵɵelementContainer(1, 32);
119
+ i0.ɵɵelementEnd();
120
+ } if (rf & 2) {
121
+ const item_r33 = i0.ɵɵnextContext().$implicit;
122
+ const ctx_r34 = i0.ɵɵnextContext(3);
123
+ i0.ɵɵproperty("tabindex", ctx_r34.openPopUpOnTab ? 0 : -1);
124
+ i0.ɵɵadvance(1);
125
+ i0.ɵɵproperty("ngTemplateOutlet", ctx_r34.customItem)("ngTemplateOutletContext", i0.ɵɵpureFunction1(3, _c10, item_r33));
126
+ } }
127
+ function AsyncDropdownComponent_ng_template_9_div_3_ng_container_1_ng_template_4_Template(rf, ctx) { if (rf & 1) {
128
+ const _r40 = i0.ɵɵgetCurrentView();
129
+ i0.ɵɵelement(0, "div", 28);
130
+ i0.ɵɵelementStart(1, "div", 33);
131
+ i0.ɵɵlistener("click", function AsyncDropdownComponent_ng_template_9_div_3_ng_container_1_ng_template_4_Template_div_click_1_listener() { i0.ɵɵrestoreView(_r40); const item_r33 = i0.ɵɵnextContext().$implicit; const ctx_r38 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r38.selectData(item_r33, false)); })("keyup.enter", function AsyncDropdownComponent_ng_template_9_div_3_ng_container_1_ng_template_4_Template_div_keyup_enter_1_listener() { i0.ɵɵrestoreView(_r40); const item_r33 = i0.ɵɵnextContext().$implicit; const ctx_r41 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r41.selectData(item_r33, false)); });
132
+ i0.ɵɵelementStart(2, "div", 34)(3, "div", 35);
133
+ i0.ɵɵtext(4);
134
+ i0.ɵɵelementEnd();
135
+ i0.ɵɵelementStart(5, "div", 36);
136
+ i0.ɵɵtext(6);
137
+ i0.ɵɵelementEnd()()();
138
+ } if (rf & 2) {
139
+ const item_r33 = i0.ɵɵnextContext().$implicit;
140
+ const ctx_r36 = i0.ɵɵnextContext(3);
141
+ i0.ɵɵadvance(1);
142
+ i0.ɵɵproperty("tabindex", ctx_r36.openPopUpOnTab ? 0 : -1);
143
+ i0.ɵɵadvance(3);
144
+ i0.ɵɵtextInterpolate1(" ", item_r33[ctx_r36.displayKey], " ");
145
+ i0.ɵɵadvance(2);
146
+ i0.ɵɵtextInterpolate1(" ", item_r33[ctx_r36.secondaryDisplayKey], " ");
147
+ } }
148
+ function AsyncDropdownComponent_ng_template_9_div_3_ng_container_1_Template(rf, ctx) { if (rf & 1) {
149
+ const _r45 = i0.ɵɵgetCurrentView();
150
+ i0.ɵɵelementContainerStart(0);
151
+ i0.ɵɵelementStart(1, "div", 27);
152
+ i0.ɵɵlistener("click", function AsyncDropdownComponent_ng_template_9_div_3_ng_container_1_Template_div_click_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r45); const item_r33 = restoredCtx.$implicit; const ctx_r44 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r44.selectData(item_r33, false)); })("keyup.enter", function AsyncDropdownComponent_ng_template_9_div_3_ng_container_1_Template_div_keyup_enter_1_listener() { const restoredCtx = i0.ɵɵrestoreView(_r45); const item_r33 = restoredCtx.$implicit; const ctx_r46 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r46.selectData(item_r33, false)); });
153
+ i0.ɵɵelement(2, "div", 28);
154
+ i0.ɵɵtemplate(3, AsyncDropdownComponent_ng_template_9_div_3_ng_container_1_div_3_Template, 2, 5, "div", 29);
155
+ i0.ɵɵtemplate(4, AsyncDropdownComponent_ng_template_9_div_3_ng_container_1_ng_template_4_Template, 7, 3, "ng-template", null, 30, i0.ɵɵtemplateRefExtractor);
156
+ i0.ɵɵelementEnd();
157
+ i0.ɵɵelementContainerEnd();
158
+ } if (rf & 2) {
159
+ const _r35 = i0.ɵɵreference(5);
160
+ const ctx_r32 = i0.ɵɵnextContext(3);
161
+ i0.ɵɵadvance(3);
162
+ i0.ɵɵproperty("ngIf", ctx_r32.customItem)("ngIfElse", _r35);
163
+ } }
164
+ function AsyncDropdownComponent_ng_template_9_div_3_Template(rf, ctx) { if (rf & 1) {
165
+ i0.ɵɵelementStart(0, "div");
166
+ i0.ɵɵtemplate(1, AsyncDropdownComponent_ng_template_9_div_3_ng_container_1_Template, 6, 2, "ng-container", 26);
167
+ i0.ɵɵelementEnd();
168
+ } if (rf & 2) {
169
+ const ctx_r26 = i0.ɵɵnextContext(2);
170
+ i0.ɵɵadvance(1);
171
+ i0.ɵɵproperty("ngForOf", ctx_r26.data);
172
+ } }
173
+ function AsyncDropdownComponent_ng_template_9_div_4_Template(rf, ctx) { if (rf & 1) {
174
+ i0.ɵɵelementStart(0, "div")(1, "div", 37);
175
+ i0.ɵɵtext(2, "No Data Available");
176
+ i0.ɵɵelementEnd()();
177
+ } }
178
+ const _c11 = function (a0, a1) { return { "max-height": a0, "width": a1 }; };
179
+ const _c12 = function (a0) { return { "dd-list-pd": a0 }; };
180
+ function AsyncDropdownComponent_ng_template_9_Template(rf, ctx) { if (rf & 1) {
181
+ i0.ɵɵelementStart(0, "div", 18);
182
+ i0.ɵɵtemplate(1, AsyncDropdownComponent_ng_template_9_ng_container_1_Template, 4, 2, "ng-container", 19);
183
+ i0.ɵɵtemplate(2, AsyncDropdownComponent_ng_template_9_ng_container_2_Template, 6, 0, "ng-container", 19);
184
+ i0.ɵɵtemplate(3, AsyncDropdownComponent_ng_template_9_div_3_Template, 2, 1, "div", 19);
185
+ i0.ɵɵtemplate(4, AsyncDropdownComponent_ng_template_9_div_4_Template, 3, 0, "div", 19);
186
+ i0.ɵɵelementEnd();
187
+ } if (rf & 2) {
188
+ const ctx_r7 = i0.ɵɵnextContext();
189
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction2(7, _c11, ctx_r7.height, ctx_r7.dropdownListWidth))("ngClass", i0.ɵɵpureFunction1(10, _c12, ctx_r7.data.length === 0))("cdkTrapFocusAutoCapture", ctx_r7.openPopUpOnTab);
190
+ i0.ɵɵadvance(1);
191
+ i0.ɵɵproperty("ngIf", ctx_r7.loading);
192
+ i0.ɵɵadvance(1);
193
+ i0.ɵɵproperty("ngIf", ctx_r7.error);
194
+ i0.ɵɵadvance(1);
195
+ i0.ɵɵproperty("ngIf", !ctx_r7.loading && !ctx_r7.error && ctx_r7.data.length > 0);
196
+ i0.ɵɵadvance(1);
197
+ i0.ɵɵproperty("ngIf", !ctx_r7.loading && !ctx_r7.error && ctx_r7.data.length === 0 && ctx_r7.searchInput.value);
198
+ } }
199
+ const _c13 = function (a0, a1, a2) { return { opened: a0, disabled: a1, readonly: a2 }; };
200
+ export class AsyncDropdownComponent {
201
+ constructor(overlay, viewContainerRef, _ngZone) {
202
+ this.overlay = overlay;
203
+ this.viewContainerRef = viewContainerRef;
204
+ this._ngZone = _ngZone;
205
+ this.size = 'md';
206
+ this.placeholder = "Select"; // placeholder for input
207
+ this.debounceTime = 400; // wait time till which API call is paused
208
+ this.minInputLength = 2; // min length after which API call is made
209
+ this.multi = false; // maintain a list or emit value
210
+ this.disableCopyPaste = false;
211
+ this.dropdownListPosition = "Left"; //dropdown position
212
+ // tslint:disable-next-line
213
+ this.onSelect = new EventEmitter(true); // emit selected values
214
+ this.searchInput = new UntypedFormControl();
215
+ this.data = [];
216
+ this.opened = false;
217
+ this.loading = false;
218
+ this.error = false;
219
+ this.openPopUpOnTab = false;
220
+ // tslint:disable-next-line
221
+ this.selections = new Map();
222
+ this.httpStreamTrigger = new Subject();
223
+ this.searchQueryChange = new EventEmitter();
224
+ this.clear = new EventEmitter(false);
225
+ this.itemSelected = new EventEmitter();
226
+ this.itemRemoved = new EventEmitter();
227
+ this.handleControlChanges = (values) => {
228
+ values.forEach(el => {
229
+ this.selectData(el, true);
230
+ });
231
+ // tslint:disable-next-line
232
+ };
233
+ }
234
+ ngOnInit() {
235
+ if (this.multi && !this.uniqueKey) {
236
+ throw new Error("[uniqueKey] required in multi mode.");
237
+ }
238
+ if (this.disabled) {
239
+ this.searchInput.disable();
240
+ }
241
+ const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime), distinctUntilChanged());
242
+ this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)
243
+ .subscribe(res => {
244
+ this._ngZone.run(() => {
245
+ res = res?.trim() ?? '';
246
+ if (res?.length < this.minInputLength || !res?.length) {
247
+ this.closeDropdown();
248
+ return;
249
+ }
250
+ else if (res?.length > this.minInputLength && this.httpStream) {
251
+ this.loading = true;
252
+ this.error = false;
253
+ if (!this.overlayRef?.hasAttached())
254
+ this.openDropdown(this.dd, this.origin.nativeElement);
255
+ this.httpStream(res).subscribe(list => {
256
+ this.loading = false;
257
+ this.data = list;
258
+ if (!this.overlayRef?.hasAttached() && list.length > 0) {
259
+ this.openDropdown(this.dd, this.origin.nativeElement);
260
+ }
261
+ }, error => {
262
+ this.loading = false;
263
+ this.error = true;
264
+ });
265
+ }
266
+ });
267
+ });
268
+ if (this.control?.value) {
269
+ this.handleControlChanges(this.control.value);
270
+ }
271
+ this.controlSubscription = this.control?.valueChanges.subscribe(this.handleControlChanges);
272
+ }
273
+ refreshHttpStream(query) {
274
+ this.loading = true;
275
+ this.httpStreamTrigger.next(query);
276
+ }
277
+ ngOnChanges(changes) {
278
+ if (changes && changes?.searchValue?.currentValue) {
279
+ this.searchInput.patchValue(changes.searchValue.currentValue);
280
+ }
281
+ if (changes && changes.disabled) {
282
+ this.searchInput.enable();
283
+ if (this.disabled) {
284
+ this.searchInput.disable();
285
+ }
286
+ }
287
+ }
288
+ ngOnDestroy() {
289
+ this.searchSubscription?.unsubscribe();
290
+ this.defaultCallSubscription?.unsubscribe();
291
+ }
292
+ openDropdown(template, origin) {
293
+ const positionsBottom = [
294
+ new ConnectionPositionPair({ originX: "start", originY: "bottom" }, { overlayX: "start", overlayY: "top" }, 0, 4),
295
+ new ConnectionPositionPair({ originX: "end", originY: "bottom" }, { overlayX: "end", overlayY: "top" }, 0, 4)
296
+ ];
297
+ const positionsTop = [
298
+ new ConnectionPositionPair({ originX: "start", originY: "top" }, { overlayX: "start", overlayY: "bottom" }, 0, -4),
299
+ new ConnectionPositionPair({ originX: "end", originY: "top" }, { overlayX: "end", overlayY: "bottom" }, 0, -4)
300
+ ];
301
+ const positionStrategy = this.overlay
302
+ .position()
303
+ .flexibleConnectedTo(origin)
304
+ .withPositions([
305
+ ...(this.dropdownListPosition === "Right" ? positionsBottom.reverse() : positionsBottom),
306
+ ...(this.dropdownListPosition === "Right" ? positionsTop.reverse() : positionsTop)
307
+ ])
308
+ .withPush(true);
309
+ const configs = new OverlayConfig({
310
+ hasBackdrop: true,
311
+ backdropClass: "cdk-overlay-transparent-backdrop",
312
+ scrollStrategy: this.overlay.scrollStrategies.reposition(),
313
+ positionStrategy,
314
+ width: origin.clientWidth
315
+ });
316
+ this.overlayRef = this.overlay.create(configs);
317
+ if (this.dropdownListWidth)
318
+ this.overlayRef.updateSize({ width: this.dropdownListWidth });
319
+ this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));
320
+ this.overlayRef.backdropClick().subscribe(res => {
321
+ this.closeDropdown();
322
+ });
323
+ }
324
+ /**
325
+ * closes the dropdown
326
+ */
327
+ closeDropdown() {
328
+ this.opened = false;
329
+ this.openPopUpOnTab = false;
330
+ this.overlayRef?.detach();
331
+ this.data = [];
332
+ }
333
+ enablePopUpOnTab() {
334
+ this.openPopUpOnTab = true;
335
+ }
336
+ handleKeyDown(event) {
337
+ if (event.key === 'Escape') {
338
+ this.searchInput.patchValue("");
339
+ this.closeDropdown();
340
+ }
341
+ }
342
+ /**
343
+ *
344
+ * @param item item to select
345
+ * if item property disabled is set to true, selection will be disabled
346
+ * @param effectedFromOutside set to true if calling from parent component, if true will focus on search input
347
+ */
348
+ selectData(item, effectedFromOutside = true) {
349
+ if (item.disabled) {
350
+ return;
351
+ }
352
+ this.itemSelected.emit(item);
353
+ if (!this.multi) {
354
+ this.searchInput.patchValue(item[this.displayKey], { emitEvent: false });
355
+ this.setControlValue(item);
356
+ }
357
+ else {
358
+ if (!this.selections.has(item[this.uniqueKey])) {
359
+ this.selections.set(item[this.uniqueKey], item);
360
+ }
361
+ this.setControlValue(this.selectedItems);
362
+ if (!effectedFromOutside) {
363
+ setTimeout(() => {
364
+ this.input.nativeElement.focus();
365
+ this.input.nativeElement.scrollIntoView();
366
+ }, 10);
367
+ }
368
+ this.searchInput.patchValue("");
369
+ this.data = [];
370
+ }
371
+ this.closeDropdown();
372
+ }
373
+ /**
374
+ *
375
+ * @param item remove item from selected list
376
+ */
377
+ removeItem(item) {
378
+ this.itemRemoved.emit(item);
379
+ this.selections.delete(item[this.uniqueKey]);
380
+ this.setControlValue(this.selectedItems);
381
+ // tslint:disable-next-line
382
+ this.input["nativeElement"].focus();
383
+ }
384
+ setControlValue(value) {
385
+ this.onSelect.emit(value);
386
+ this.control?.patchValue(value, { emitEvent: false });
387
+ }
388
+ /**
389
+ * @returns list of selected items
390
+ */
391
+ get selectedItems() {
392
+ return Array.from(this.selections.values());
393
+ }
394
+ removeInputValue() {
395
+ this.searchInput.reset();
396
+ this.data = [];
397
+ this.clear.emit(true);
398
+ }
399
+ defaultCall() {
400
+ if (this.minInputLength === -1) {
401
+ this.loading = true;
402
+ this.defaultCallSubscription = this.httpStream(this.searchInput.value || '').subscribe(list => {
403
+ this.loading = false;
404
+ this.data = list;
405
+ if (!this.overlayRef?.hasAttached() && this.data?.length > 0) {
406
+ this.openDropdown(this.dd, this.origin.nativeElement);
407
+ }
408
+ }, error => {
409
+ this.loading = false;
410
+ this.error = true;
411
+ });
412
+ }
413
+ }
414
+ }
415
+ AsyncDropdownComponent.ɵfac = function AsyncDropdownComponent_Factory(t) { return new (t || AsyncDropdownComponent)(i0.ɵɵdirectiveInject(i1.Overlay), i0.ɵɵdirectiveInject(i0.ViewContainerRef), i0.ɵɵdirectiveInject(i0.NgZone)); };
416
+ AsyncDropdownComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AsyncDropdownComponent, selectors: [["mis-async-search-dropdown"]], contentQueries: function AsyncDropdownComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
417
+ i0.ɵɵcontentQuery(dirIndex, _c0, 5);
418
+ i0.ɵɵcontentQuery(dirIndex, _c1, 5);
419
+ } if (rf & 2) {
420
+ let _t;
421
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customItem = _t.first);
422
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.customLoader = _t.first);
423
+ } }, viewQuery: function AsyncDropdownComponent_Query(rf, ctx) { if (rf & 1) {
424
+ i0.ɵɵviewQuery(_c2, 5);
425
+ i0.ɵɵviewQuery(_c3, 5);
426
+ i0.ɵɵviewQuery(_c4, 5);
427
+ } if (rf & 2) {
428
+ let _t;
429
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.origin = _t.first);
430
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.input = _t.first);
431
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.dd = _t.first);
432
+ } }, hostBindings: function AsyncDropdownComponent_HostBindings(rf, ctx) { if (rf & 1) {
433
+ i0.ɵɵlistener("keydown", function AsyncDropdownComponent_keydown_HostBindingHandler($event) { return ctx.handleKeyDown($event); }, false, i0.ɵɵresolveDocument);
434
+ } }, inputs: { height: "height", width: "width", size: "size", httpStream: "httpStream", displayKey: "displayKey", secondaryDisplayKey: "secondaryDisplayKey", placeholder: "placeholder", debounceTime: "debounceTime", minInputLength: "minInputLength", multi: "multi", uniqueKey: "uniqueKey", control: "control", disabled: "disabled", readonly: "readonly", disableCopyPaste: "disableCopyPaste", dropdownListWidth: "dropdownListWidth", dropdownListPosition: "dropdownListPosition", selections: "selections", searchValue: "searchValue" }, outputs: { onSelect: "onSelect", searchQueryChange: "searchQueryChange", clear: "clear", itemSelected: "itemSelected", itemRemoved: "itemRemoved" }, features: [i0.ɵɵNgOnChangesFeature], decls: 11, vars: 11, consts: [[1, "dd-wrapper", 3, "ngClass"], ["ddBtn", ""], ["class", "selected-list", 4, "ngIf"], [1, "search-input"], [1, "icon-ic-action-search-24"], ["oncopy", "return false;", "onpaste", "return false", "oncut", "return false", "tabindex", "0", "type", "text", "class", "black-text h6", 3, "ngClass", "placeholder", "formControl", "focus", "keyup.enter", 4, "ngIf", "ngIfElse"], ["enableCopyPaste", ""], ["class", "icon-ic-navigation-cancel-24 croos-icon", "tabindex", "0", 3, "click", "keyup.enter", 4, "ngIf"], ["dd", ""], [1, "selected-list"], ["class", "chip", 3, "ngClass", 4, "ngFor", "ngForOf"], [1, "chip", 3, "ngClass"], [3, "ngClass", "ngStyle"], ["tabindex", "0", 1, "icon-ic-navigation-cancel-24", 2, "cursor", "pointer", 3, "ngStyle", "click", "keyup.enter"], ["oncopy", "return false;", "onpaste", "return false", "oncut", "return false", "tabindex", "0", "type", "text", 1, "black-text", "h6", 3, "ngClass", "placeholder", "formControl", "focus", "keyup.enter"], ["input", ""], ["tabindex", "0", "type", "text", 1, "black-text", "h6", 3, "ngClass", "placeholder", "formControl", "focus", "keyup.enter"], ["tabindex", "0", 1, "icon-ic-navigation-cancel-24", "croos-icon", 3, "click", "keyup.enter"], ["tabindex", "0", "cdkTrapFocus", "", 1, "dd-list", 3, "ngStyle", "ngClass", "cdkTrapFocusAutoCapture"], [4, "ngIf"], [3, "ngTemplateOutlet", 4, "ngIf", "ngIfElse"], ["defaultLoader", ""], [3, "ngTemplateOutlet"], ["class", "status-container", 4, "ngIf"], [1, "status-container"], [3, "mobileView"], [4, "ngFor", "ngForOf"], [3, "click", "keyup.enter"], ["tabindex", "-1", "cdkFocusInitial", ""], [3, "tabindex", 4, "ngIf", "ngIfElse"], ["standardItem", ""], [3, "tabindex"], [3, "ngTemplateOutlet", "ngTemplateOutletContext"], [1, "item", 3, "tabindex", "click", "keyup.enter"], [1, "value"], [1, "primary"], [1, "secondary"], [1, "data-not-found"]], template: function AsyncDropdownComponent_Template(rf, ctx) { if (rf & 1) {
435
+ i0.ɵɵelementStart(0, "div", 0, 1);
436
+ i0.ɵɵtemplate(2, AsyncDropdownComponent_div_2_Template, 2, 1, "div", 2);
437
+ i0.ɵɵelementStart(3, "div", 3);
438
+ i0.ɵɵelement(4, "span", 4);
439
+ i0.ɵɵtemplate(5, AsyncDropdownComponent_input_5_Template, 2, 6, "input", 5);
440
+ i0.ɵɵtemplate(6, AsyncDropdownComponent_ng_template_6_Template, 2, 6, "ng-template", null, 6, i0.ɵɵtemplateRefExtractor);
441
+ i0.ɵɵtemplate(8, AsyncDropdownComponent_div_8_Template, 1, 0, "div", 7);
442
+ i0.ɵɵelementEnd()();
443
+ i0.ɵɵtemplate(9, AsyncDropdownComponent_ng_template_9_Template, 5, 12, "ng-template", null, 8, i0.ɵɵtemplateRefExtractor);
444
+ } if (rf & 2) {
445
+ const _r3 = i0.ɵɵreference(7);
446
+ i0.ɵɵstyleProp("width", ctx.width);
447
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(7, _c13, ctx.opened, ctx.disabled, ctx.readonly));
448
+ i0.ɵɵadvance(2);
449
+ i0.ɵɵproperty("ngIf", ctx.multi && ctx.selections.size > 0);
450
+ i0.ɵɵadvance(3);
451
+ i0.ɵɵproperty("ngIf", ctx.disableCopyPaste)("ngIfElse", _r3);
452
+ i0.ɵɵadvance(3);
453
+ i0.ɵɵproperty("ngIf", ctx.searchInput == null ? null : ctx.searchInput.value == null ? null : ctx.searchInput.value.length);
454
+ } }, dependencies: [i2.NgClass, i2.NgForOf, i2.NgIf, i2.NgTemplateOutlet, i2.NgStyle, i3.DefaultValueAccessor, i3.NgControlStatus, i3.FormControlDirective, i4.LoaderComponent, i5.CdkTrapFocus], styles: [".dd-wrapper[_ngcontent-%COMP%]{background:#ffffff;border:1px solid #e0e0e0;box-sizing:border-box;border-radius:4px;display:block;cursor:pointer;outline:none}.dd-wrapper.opened[_ngcontent-%COMP%], .dd-wrapper[_ngcontent-%COMP%]:hover{background:#f5f5f5}.dd-wrapper[_ngcontent-%COMP%] .selected-list[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;flex-wrap:wrap;gap:4px;padding:8px 16px}.dd-wrapper[_ngcontent-%COMP%]:focus-within{border-color:#0937b2;background:#f5f5f5}.dd-wrapper.disabled[_ngcontent-%COMP%], .dd-wrapper.readonly[_ngcontent-%COMP%]{pointer-events:none}.search-input[_ngcontent-%COMP%]{position:relative;border-radius:8px}.search-input[_ngcontent-%COMP%] input[_ngcontent-%COMP%]{box-sizing:border-box;outline:none;padding-left:40px;padding-right:24px;background-color:transparent;color:#181f33;border-radius:inherit;border:1px solid transparent;width:100%}.search-input[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{position:absolute;top:50%;transform:translateY(-50%);font-size:24px;line-height:24px;height:24px;left:8px}.search-input[_ngcontent-%COMP%] .croos-icon[_ngcontent-%COMP%]{position:absolute;top:50%;transform:translateY(-50%);font-size:16px;width:24px;line-height:16px;height:16px;right:0}.dd-list[_ngcontent-%COMP%]{padding:8px 0;max-height:200px;background:#ffffff;box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:8px;min-width:100%;overflow-y:auto}.dd-list[_ngcontent-%COMP%]::-webkit-scrollbar{width:8px;border-radius:4px}.dd-list[_ngcontent-%COMP%]::-webkit-scrollbar-track{background:#ffffff;border-radius:4px}.dd-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb{background:#929dab;border-radius:4px}.dd-list[_ngcontent-%COMP%]::-webkit-scrollbar-thumb:hover{background:#929dab}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]{padding:8px 16px;cursor:pointer}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .disabled[_ngcontent-%COMP%]{color:#6a737d!important;pointer-events:none}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%]{display:flex;justify-content:space-between;align-items:center}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] .primary[_ngcontent-%COMP%], .dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .value[_ngcontent-%COMP%] .secondary[_ngcontent-%COMP%]{font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%] .reason[_ngcontent-%COMP%]{font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d}.dd-list[_ngcontent-%COMP%] .item[_ngcontent-%COMP%]:hover:not(.disabled){background:#f5f7fc}.dd-list[_ngcontent-%COMP%] .data-not-found[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;font-size:16px;padding:8px}.dd-list-pd[_ngcontent-%COMP%]{padding:unset}.chip[_ngcontent-%COMP%]{display:inline-flex;align-items:center;background:#e0e0e0;overflow-wrap:anywhere;cursor:default}.chip[_ngcontent-%COMP%] span[_ngcontent-%COMP%]{color:#181f33}.chip-md[_ngcontent-%COMP%]{border-radius:16px;padding:4px 12px}.chip-sm[_ngcontent-%COMP%]{border-radius:6px;padding:4px 8px;text-transform:uppercase}.ip-md[_ngcontent-%COMP%]{padding-top:8px;padding-bottom:8px}.ip-sm[_ngcontent-%COMP%]{padding-top:3px;padding-bottom:3px}.status-container[_ngcontent-%COMP%]{display:flex;justify-content:center;align-items:center;height:128px}.status-container[_ngcontent-%COMP%] p[_ngcontent-%COMP%]{text-align:center} #spinner{position:relative!important}"] });
455
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AsyncDropdownComponent, [{
456
+ type: Component,
457
+ args: [{ selector: "mis-async-search-dropdown", template: "<div class=\"dd-wrapper\" [ngClass]=\"{ opened: opened, disabled: disabled, readonly: readonly }\" [style.width]=\"width\" #ddBtn>\n <div class=\"selected-list\" *ngIf=\"multi && selections.size > 0\">\n <div class=\"chip\" [ngClass]=\"{'chip-md': size === 'md', 'chip-sm': size === 'sm'}\" *ngFor=\"let item of selectedItems\">\n <span [ngClass]=\"{'h6': size === 'md', 'h8-b': size === 'sm'}\" [ngStyle]=\"{ 'margin-right': '4px'}\">{{item[displayKey]}}</span>\n <span style=\"cursor: pointer;\" (click)=\"removeItem(item)\" tabindex=\"0\" (keyup.enter)=\"removeItem(item)\" [ngStyle]=\"{\n 'cursor': 'pointer',\n 'font-size': size === 'sm' ? '12px' : '14px'\n }\" class=\"icon-ic-navigation-cancel-24\"></span>\n </div>\n </div>\n <div class=\"search-input\">\n <span class=\"icon-ic-action-search-24\"></span>\n <input *ngIf=\"disableCopyPaste; else enableCopyPaste\" [ngClass]=\"{'ip-md': size === 'md', 'ip-sm': size === 'sm'}\" oncopy=\"return false;\" onpaste=\"return false\" oncut=\"return false\" tabindex=\"0\" type=\"text\" class=\"black-text h6\" #input [placeholder]=\"placeholder\" [formControl]=\"searchInput\" (focus)=\"defaultCall()\" (keyup.enter)=\"enablePopUpOnTab()\"/>\n <ng-template #enableCopyPaste>\n <input [ngClass]=\"{'ip-md': size === 'md', 'ip-sm': size === 'sm'}\" tabindex=\"0\" type=\"text\" class=\"black-text h6\" #input [placeholder]=\"placeholder\" [formControl]=\"searchInput\" (focus)=\"defaultCall()\" (keyup.enter)=\"enablePopUpOnTab()\" />\n </ng-template>\n <div class=\"icon-ic-navigation-cancel-24 croos-icon\" *ngIf=\"searchInput?.value?.length\" tabindex=\"0\" (click)=\"removeInputValue()\" (keyup.enter)=\"removeInputValue()\"></div>\n </div>\n</div>\n\n<ng-template #dd>\n <div class=\"dd-list\" [ngStyle]=\"{'max-height':height, 'width': dropdownListWidth}\" [ngClass]=\"{'dd-list-pd':data.length === 0}\" tabindex=\"0\" cdkTrapFocus [cdkTrapFocusAutoCapture]=\"openPopUpOnTab\">\n <ng-container *ngIf=\"loading\">\n <ng-container\n *ngIf=\"customLoader; else defaultLoader\"\n [ngTemplateOutlet]=\"customLoader\"\n ></ng-container>\n <ng-template #defaultLoader>\n <div class=\"status-container\" *ngIf=\"loading && !customLoader\">\n <mis-loader [mobileView]=\"true\"></mis-loader>\n </div>\n </ng-template>\n </ng-container>\n <ng-container *ngIf=\"error\">\n <div class=\"status-container\">\n <p>Unknown error has occurred, <br> Please try again later.</p>\n </div>\n </ng-container>\n <div *ngIf=\"!loading && !error && data.length > 0\">\n <ng-container *ngFor=\"let item of data\">\n <div (click)=\"selectData(item, false)\" (keyup.enter)=\"selectData(item, false)\"> \n <div tabindex=\"-1\" cdkFocusInitial></div> \n <div\n [tabindex]=\"openPopUpOnTab ? 0 : -1\"\n *ngIf=\"customItem; else standardItem\"\n >\n <ng-container\n [ngTemplateOutlet]=\"customItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n </div>\n <ng-template #standardItem>\n <div tabindex=\"-1\" cdkFocusInitial></div> \n <div class=\"item\" (click)=\"selectData(item, false)\" [tabindex]=\"openPopUpOnTab ? 0 : -1\" (keyup.enter)=\"selectData(item, false)\">\n <div class=\"value\">\n <div class=\"primary\">\n {{ item[displayKey] }}\n </div>\n <div class=\"secondary\">\n {{ item[secondaryDisplayKey] }}\n </div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n <div *ngIf=\"!loading && !error && data.length === 0 && searchInput.value\">\n <div class=\"data-not-found\">No Data Available</div>\n </div>\n </div>\n</ng-template>\n", styles: [".dd-wrapper{background:#ffffff;border:1px solid #e0e0e0;box-sizing:border-box;border-radius:4px;display:block;cursor:pointer;outline:none}.dd-wrapper.opened,.dd-wrapper:hover{background:#f5f5f5}.dd-wrapper .selected-list{display:flex;justify-content:flex-start;flex-wrap:wrap;gap:4px;padding:8px 16px}.dd-wrapper:focus-within{border-color:#0937b2;background:#f5f5f5}.dd-wrapper.disabled,.dd-wrapper.readonly{pointer-events:none}.search-input{position:relative;border-radius:8px}.search-input input{box-sizing:border-box;outline:none;padding-left:40px;padding-right:24px;background-color:transparent;color:#181f33;border-radius:inherit;border:1px solid transparent;width:100%}.search-input span{position:absolute;top:50%;transform:translateY(-50%);font-size:24px;line-height:24px;height:24px;left:8px}.search-input .croos-icon{position:absolute;top:50%;transform:translateY(-50%);font-size:16px;width:24px;line-height:16px;height:16px;right:0}.dd-list{padding:8px 0;max-height:200px;background:#ffffff;box-shadow:0 12px 24px #0000001f,0 4px 8px #0000001f;border-radius:8px;min-width:100%;overflow-y:auto}.dd-list::-webkit-scrollbar{width:8px;border-radius:4px}.dd-list::-webkit-scrollbar-track{background:#ffffff;border-radius:4px}.dd-list::-webkit-scrollbar-thumb{background:#929dab;border-radius:4px}.dd-list::-webkit-scrollbar-thumb:hover{background:#929dab}.dd-list .item{padding:8px 16px;cursor:pointer}.dd-list .item .disabled{color:#6a737d!important;pointer-events:none}.dd-list .item .value{display:flex;justify-content:space-between;align-items:center}.dd-list .item .value .primary,.dd-list .item .value .secondary{font-style:normal;font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#181f33}.dd-list .item .reason{font-weight:400;font-size:14px;line-height:20px;letter-spacing:.2px;color:#6a737d}.dd-list .item:hover:not(.disabled){background:#f5f7fc}.dd-list .data-not-found{display:flex;justify-content:center;align-items:center;font-size:16px;padding:8px}.dd-list-pd{padding:unset}.chip{display:inline-flex;align-items:center;background:#e0e0e0;overflow-wrap:anywhere;cursor:default}.chip span{color:#181f33}.chip-md{border-radius:16px;padding:4px 12px}.chip-sm{border-radius:6px;padding:4px 8px;text-transform:uppercase}.ip-md{padding-top:8px;padding-bottom:8px}.ip-sm{padding-top:3px;padding-bottom:3px}.status-container{display:flex;justify-content:center;align-items:center;height:128px}.status-container p{text-align:center}::ng-deep #spinner{position:relative!important}\n"] }]
458
+ }], function () { return [{ type: i1.Overlay }, { type: i0.ViewContainerRef }, { type: i0.NgZone }]; }, { height: [{
459
+ type: Input
460
+ }], width: [{
461
+ type: Input
462
+ }], size: [{
463
+ type: Input
464
+ }], httpStream: [{
465
+ type: Input
466
+ }], displayKey: [{
467
+ type: Input
468
+ }], secondaryDisplayKey: [{
469
+ type: Input
470
+ }], placeholder: [{
471
+ type: Input
472
+ }], debounceTime: [{
473
+ type: Input
474
+ }], minInputLength: [{
475
+ type: Input
476
+ }], multi: [{
477
+ type: Input
478
+ }], uniqueKey: [{
479
+ type: Input
480
+ }], control: [{
481
+ type: Input
482
+ }], disabled: [{
483
+ type: Input
484
+ }], readonly: [{
485
+ type: Input
486
+ }], disableCopyPaste: [{
487
+ type: Input
488
+ }], dropdownListWidth: [{
489
+ type: Input
490
+ }], dropdownListPosition: [{
491
+ type: Input
492
+ }], origin: [{
493
+ type: ViewChild,
494
+ args: ["ddBtn", { static: false }]
495
+ }], input: [{
496
+ type: ViewChild,
497
+ args: ["input", { static: false }]
498
+ }], dd: [{
499
+ type: ViewChild,
500
+ args: ["dd", { static: false }]
501
+ }], customItem: [{
502
+ type: ContentChild,
503
+ args: ["misCustomItem", { static: false }]
504
+ }], customLoader: [{
505
+ type: ContentChild,
506
+ args: ["asyncCustomLoader", { static: false }]
507
+ }], onSelect: [{
508
+ type: Output
509
+ }], selections: [{
510
+ type: Input
511
+ }], searchValue: [{
512
+ type: Input
513
+ }], searchQueryChange: [{
514
+ type: Output
515
+ }], clear: [{
516
+ type: Output
517
+ }], itemSelected: [{
518
+ type: Output
519
+ }], itemRemoved: [{
520
+ type: Output
521
+ }], handleKeyDown: [{
522
+ type: HostListener,
523
+ args: ['document:keydown', ['$event']]
524
+ }] }); })();
525
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbWlzLWNvbXBvbmVudHMvYXN5bmMtc2VhcmNoLWRyb3Bkb3duL2FzeW5jLWRyb3Bkb3duLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3Byb2plY3RzL21pcy1jb21wb25lbnRzL2FzeW5jLXNlYXJjaC1kcm9wZG93bi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsc0JBQXNCLEVBQVcsYUFBYSxFQUFjLE1BQU0sc0JBQXNCLENBQUM7QUFDbEcsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3JELE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUtMLE1BQU0sRUFHTixTQUFTLEVBRVYsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFtQixrQkFBa0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFnQixNQUFNLE1BQU0sQ0FBQztBQUNoRSxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNuQnJFLCtCQUFzSCxlQUFBO0lBQ2hCLFlBQW9CO0lBQUEsaUJBQU87SUFDL0gsZ0NBR3dDO0lBSFQscU9BQVMsZUFBQSwyQkFBZ0IsQ0FBQSxJQUFDLG9PQUE2QixlQUFBLDJCQUFnQixDQUFBLElBQTdDO0lBR2pCLGlCQUFPLEVBQUE7Ozs7SUFML0IsZ0dBQWdFO0lBQzFFLGVBQXdEO0lBQXhELGdHQUF3RCx3Q0FBQTtJQUFzQyxlQUFvQjtJQUFwQixnREFBb0I7SUFDaEIsZUFHdEc7SUFIc0csNkZBR3RHOzs7SUFOTiw4QkFB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QUs7a0JBQTNDLFNBQVM7bUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUNELEVBQUU7a0JBQXJDLFNBQVM7bUJBQUMsSUFBSSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUVsQyxVQUFVO2tCQURULFlBQVk7bUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtZQUdoRCxZQUFZO2tCQURYLFlBQVk7bUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFDO1lBR3pDLFFBQVE7a0JBQWpCLE1BQU07WUFRRSxVQUFVO2tCQUFsQixLQUFLO1lBTUcsV0FBVztrQkFBbkIsS0FBSztZQUNJLGlCQUFpQjtrQkFBMUIsTUFBTTtZQUNHLEtBQUs7a0JBQWQsTUFBTTtZQUNHLFlBQVk7a0JBQXJCLE1BQU07WUFDRyxXQUFXO2tCQUFwQixNQUFNO1lBMkhQLGFBQWE7a0JBRFosWUFBWTttQkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIsIE92ZXJsYXksIE92ZXJsYXlDb25maWcsIE92ZXJsYXlSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY2RrL292ZXJsYXlcIjtcbmltcG9ydCB7IFRlbXBsYXRlUG9ydGFsIH0gZnJvbSBcIkBhbmd1bGFyL2Nkay9wb3J0YWxcIjtcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3Q29udGFpbmVyUmVmXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIFVudHlwZWRGb3JtQ29udHJvbCB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xuaW1wb3J0IHsgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkLCB0YXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG50eXBlIElMaXN0RGF0YSA9IGFueTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiBcIm1pcy1hc3luYy1zZWFyY2gtZHJvcGRvd25cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9hc3luYy1kcm9wZG93bi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vYXN5bmMtZHJvcGRvd24uY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgQXN5bmNEcm9wZG93bkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG92ZXJsYXk6IE92ZXJsYXksIHByaXZhdGUgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZiwgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUpIHsgfVxuICBASW5wdXQoKSBoZWlnaHQ7XG4gIEBJbnB1dCgpIHdpZHRoO1xuICBASW5wdXQoKSBzaXplOiAnbWQnIHwgJ3NtJyA9ICdtZCdcbiAgQElucHV0KCkgaHR0cFN0cmVhbSE6IChzZWFyY2hLZXk6IHN0cmluZykgPT4gT2JzZXJ2YWJsZTxJTGlzdERhdGE+OyAvLyBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gaHR0cG9ic2VydmFibGVcbiAgQElucHV0KCkgZGlzcGxheUtleSE6IHN0cmluZzsgLy8gc3RyaW5nIHRvIHNob3cgdmFsdWUgaW4gbGlzdFxuICBASW5wdXQoKSBzZWNvbmRhcnlEaXNwbGF5S2V5ITogc3RyaW5nOyAvLyBzdHJpbmcgdG8gZGlzcGxheSBzZWNvbmRhcnkgdmFsdWVcbiAgQElucHV0KCkgcGxhY2Vob2xkZXIgPSBcIlNlbGVjdFwiOyAvLyBwbGFjZWhvbGRlciBmb3IgaW5wdXRcbiAgQElucHV0KCkgZGVib3VuY2VUaW1lID0gNDAwOyAvLyB3YWl0IHRpbWUgdGlsbCB3aGljaCBBUEkgY2FsbCBpcyBwYXVzZWRcbiAgQElucHV0KCkgbWluSW5wdXRMZW5ndGggPSAyOyAvLyBtaW4gbGVuZ3RoIGFmdGVyIHdoaWNoIEFQSSBjYWxsIGlzIG1hZGVcbiAgQElucHV0KCkgbXVsdGkgPSBmYWxzZTsgLy8gbWFpbnRhaW4gYSBsaXN0IG9yIGVtaXQgdmFsdWVcbiAgQElucHV0KCkgdW5pcXVlS2V5OiBzdHJpbmc7IC8vIGZvciBpZGVudGlmeWluZyB1bmlxdWUgdmFsdWVzXG4gIEBJbnB1dCgpIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCB8IG51bGw7IC8vIGZvcm0gY29udHJvbCBmb3IgcmVhY3RpdmUgZm9ybXNcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW47IC8vIGRpc2FibGUgYWN0aW9ucyBvbiBjb21wb25lbnRcbiAgQElucHV0KCkgcmVhZG9ubHk6IGJvb2xlYW47IC8vIG1ha2UgY29tcG9uZW50IHJlYWRvbmx5XG4gIEBJbnB1dCgpIGRpc2FibGVDb3B5UGFzdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZHJvcGRvd25MaXN0V2lkdGg7IC8vd2lkdGggb2YgZHJvcGRvd24gbGlzdFxuICBASW5wdXQoKSBkcm9wZG93bkxpc3RQb3NpdGlvbjogXCJMZWZ0XCIgfCBcIlJpZ2h0XCIgPSBcIkxlZnRcIjsgLy9kcm9wZG93biBwb3NpdGlvblxuICBAVmlld0NoaWxkKFwiZGRCdG5cIiwgeyBzdGF0aWM6IGZhbHNlIH0pIG9yaWdpbjogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcImlucHV0XCIsIHsgc3RhdGljOiBmYWxzZSB9KSBpbnB1dDogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChcImRkXCIsIHsgc3RhdGljOiBmYWxzZSB9KSBkZDogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIEBDb250ZW50Q2hpbGQoXCJtaXNDdXN0b21JdGVtXCIsIHsgc3RhdGljOiBmYWxzZSB9KVxuICBjdXN0b21JdGVtOiBUZW1wbGF0ZVJlZjxFbGVtZW50PjtcbiAgQENvbnRlbnRDaGlsZChcImFzeW5jQ3VzdG9tTG9hZGVyXCIsIHsgc3RhdGljOiBmYWxzZX0pXG4gIGN1c3RvbUxvYWRlcjogVGVtcGxhdGVSZWY8RWxlbWVudD47XG4gIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICBAT3V0cHV0KCkgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxJTGlzdERhdGEgfCBJTGlzdERhdGFbXT4gPSBuZXcgRXZlbnRFbWl0dGVyKHRydWUpOyAvLyBlbWl0IHNlbGVjdGVkIHZhbHVlc1xuICBzZWFyY2hJbnB1dDogVW50eXBlZEZvcm1Db250cm9sID0gbmV3IFVudHlwZWRGb3JtQ29udHJvbCgpO1xuICBkYXRhOiBJTGlzdERhdGFbXSA9IFtdO1xuICBvcGVuZWQgPSBmYWxzZTtcbiAgbG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xuICBlcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICBvcGVuUG9wVXBPblRhYjogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgQElucHV0KCkgc2VsZWN0aW9uczogTWFwPHN0cmluZywgYW55PiA9IG5ldyBNYXAoKTtcbiAgcHJpdmF0ZSBodHRwU3RyZWFtVHJpZ2dlciA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSBzZWFyY2hTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcHJpdmF0ZSBkZWZhdWx0Q2FsbFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwcml2YXRlIG92ZXJsYXlSZWY6IE92ZXJsYXlSZWY7XG4gIGNvbnRyb2xTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgc2VhcmNoVmFsdWU7XG4gIEBPdXRwdXQoKSBzZWFyY2hRdWVyeUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpXG4gIEBPdXRwdXQoKSBjbGVhcjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcihmYWxzZSk7XG4gIEBPdXRwdXQoKSBpdGVtU2VsZWN0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElMaXN0RGF0YT4oKVxuICBAT3V0cHV0KCkgaXRlbVJlbW92ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElMaXN0RGF0YT4oKVxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aSAmJiAhdGhpcy51bmlxdWVLZXkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlt1bmlxdWVLZXldIHJlcXVpcmVkIGluIG11bHRpIG1vZGUuXCIpO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5kaXNhYmxlKCk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VhcmNoT2JzZXJ2YWJsZSA9IHRoaXMuc2VhcmNoSW5wdXQudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICB0YXAoKHZhbCkgPT4gdGhpcy5zZWFyY2hRdWVyeUNoYW5nZS5lbWl0KHZhbCkpLFxuICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKSxcbiAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcbiAgICApO1xuXG4gICAgdGhpcy5zZWFyY2hTdWJzY3JpcHRpb24gPSBtZXJnZShzZWFyY2hPYnNlcnZhYmxlLCB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyKVxuICAgICAgLnN1YnNjcmliZShyZXMgPT4ge1xuICAgICAgICB0aGlzLl9uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICByZXMgPSByZXM/LnRyaW0oKSA/PyAnJztcbiAgICAgICAgICBpZiAocmVzPy5sZW5ndGggPCB0aGlzLm1pbklucHV0TGVuZ3RoIHx8ICFyZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXM/Lmxlbmd0aCA+IHRoaXMubWluSW5wdXRMZW5ndGggJiYgdGhpcy5odHRwU3RyZWFtKSB7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuICAgICAgICAgICAgaWYoIXRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKSlcbiAgICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24odGhpcy5kZCwgdGhpcy5vcmlnaW4ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgICAgICB0aGlzLmh0dHBTdHJlYW0ocmVzKS5zdWJzY3JpYmUobGlzdCA9PiB7XG4gICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBsaXN0O1xuICAgICAgICAgICAgICBpZiAoIXRoaXMub3ZlcmxheVJlZj8uaGFzQXR0YWNoZWQoKSAmJiBsaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bih0aGlzLmRkLCB0aGlzLm9yaWdpbi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgdGhpcy5lcnJvciA9IHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICBpZiAodGhpcy5jb250cm9sPy52YWx1ZSkge1xuICAgICAgdGhpcy5oYW5kbGVDb250cm9sQ2hhbmdlcyh0aGlzLmNvbnRyb2wudmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmNvbnRyb2xTdWJzY3JpcHRpb24gPSB0aGlzLmNvbnRyb2w/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodGhpcy5oYW5kbGVDb250cm9sQ2hhbmdlcyk7XG4gIH1cblxuICByZWZyZXNoSHR0cFN0cmVhbShxdWVyeTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICB0aGlzLmh0dHBTdHJlYW1UcmlnZ2VyLm5leHQocXVlcnkpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXM/LnNlYXJjaFZhbHVlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZShjaGFuZ2VzLnNlYXJjaFZhbHVlLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzICYmIGNoYW5nZXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQuZW5hYmxlKCk7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0LmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlYXJjaFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgICB0aGlzLmRlZmF1bHRDYWxsU3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDb250cm9sQ2hhbmdlcyA9ICh2YWx1ZXM6IElMaXN0RGF0YVtdKSA9PiB7XG4gICAgdmFsdWVzLmZvckVhY2goZWwgPT4ge1xuICAgICAgdGhpcy5zZWxlY3REYXRhKGVsLCB0cnVlKTtcbiAgICB9KTtcbiAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgfTtcblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bih0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8RWxlbWVudD4sIG9yaWdpbjogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBwb3NpdGlvbnNCb3R0b20gPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwic3RhcnRcIiwgb3JpZ2luWTogXCJib3R0b21cIiB9LCB7IG92ZXJsYXlYOiBcInN0YXJ0XCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sIDAsIDQpLFxuICAgICAgbmV3IENvbm5lY3Rpb25Qb3NpdGlvblBhaXIoeyBvcmlnaW5YOiBcImVuZFwiLCBvcmlnaW5ZOiBcImJvdHRvbVwiIH0sIHsgb3ZlcmxheVg6IFwiZW5kXCIsIG92ZXJsYXlZOiBcInRvcFwiIH0sIDAsIDQpXG4gICAgXTtcbiAgICBjb25zdCBwb3NpdGlvbnNUb3AgPSBbXG4gICAgICBuZXcgQ29ubmVjdGlvblBvc2l0aW9uUGFpcih7IG9yaWdpblg6IFwic3RhcnRcIiwgb3JpZ2luWTogXCJ0b3BcIiB9LCB7IG92ZXJsYXlYOiBcInN0YXJ0XCIsIG92ZXJsYXlZOiBcImJvdHRvbVwiIH0sIDAsIC00KSxcbiAgICAgIG5ldyBDb25uZWN0aW9uUG9zaXRpb25QYWlyKHsgb3JpZ2luWDogXCJlbmRcIiwgb3JpZ2luWTogXCJ0b3BcIiB9LCB7IG92ZXJsYXlYOiBcImVuZFwiLCBvdmVybGF5WTogXCJib3R0b21cIiB9LCAwLCAtNClcbiAgICBdO1xuICAgIGNvbnN0IHBvc2l0aW9uU3RyYXRlZ3kgPSB0aGlzLm92ZXJsYXlcbiAgICAgIC5wb3NpdGlvbigpXG4gICAgICAuZmxleGlibGVDb25uZWN0ZWRUbyhvcmlnaW4pXG4gICAgICAud2l0aFBvc2l0aW9ucyhbXG4gICAgICAgIC4uLih0aGlzLmRyb3Bkb3duTGlzdFBvc2l0aW9uID09PSBcIlJpZ2h0XCIgPyBwb3NpdGlvbnNCb3R0b20ucmV2ZXJzZSgpIDogcG9zaXRpb25zQm90dG9tKSxcbiAgICAgICAgLi4uKHRoaXMuZHJvcGRvd25MaXN0UG9zaXRpb24gPT09IFwiUmlnaHRcIiA/IHBvc2l0aW9uc1RvcC5yZXZlcnNlKCkgOiBwb3NpdGlvbnNUb3ApXG4gICAgICBdKVxuICAgICAgLndpdGhQdXNoKHRydWUpO1xuXG4gICAgY29uc3QgY29uZmlncyA9IG5ldyBPdmVybGF5Q29uZmlnKHtcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgYmFja2Ryb3BDbGFzczogXCJjZGstb3ZlcmxheS10cmFuc3BhcmVudC1iYWNrZHJvcFwiLFxuICAgICAgc2Nyb2xsU3RyYXRlZ3k6IHRoaXMub3ZlcmxheS5zY3JvbGxTdHJhdGVnaWVzLnJlcG9zaXRpb24oKSxcbiAgICAgIHBvc2l0aW9uU3RyYXRlZ3ksXG4gICAgICB3aWR0aDogb3JpZ2luLmNsaWVudFdpZHRoXG4gICAgfSk7XG4gICAgdGhpcy5vdmVybGF5UmVmID0gdGhpcy5vdmVybGF5LmNyZWF0ZShjb25maWdzKTtcbiAgICBpZiAodGhpcy5kcm9wZG93bkxpc3RXaWR0aCkgdGhpcy5vdmVybGF5UmVmLnVwZGF0ZVNpemUoeyB3aWR0aDogdGhpcy5kcm9wZG93bkxpc3RXaWR0aCB9KTtcbiAgICB0aGlzLm92ZXJsYXlSZWYuYXR0YWNoKG5ldyBUZW1wbGF0ZVBvcnRhbCh0ZW1wbGF0ZSwgdGhpcy52aWV3Q29udGFpbmVyUmVmKSk7XG4gICAgdGhpcy5vdmVybGF5UmVmLmJhY2tkcm9wQ2xpY2soKS5zdWJzY3JpYmUocmVzID0+IHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIGNsb3NlcyB0aGUgZHJvcGRvd25cbiAgICovXG4gIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuZWQgPSBmYWxzZTtcbiAgICB0aGlzLm9wZW5Qb3BVcE9uVGFiID0gZmFsc2U7XG4gICAgdGhpcy5vdmVybGF5UmVmPy5kZXRhY2goKTtcbiAgICB0aGlzLmRhdGEgPSBbXTtcbiAgfVxuXG4gIGVuYWJsZVBvcFVwT25UYWIoKXtcbiAgICB0aGlzLm9wZW5Qb3BVcE9uVGFiID0gdHJ1ZTtcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKVxuICBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZShcIlwiKTtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH1cbiAgfVxuXG5cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGl0ZW0gaXRlbSB0byBzZWxlY3RcbiAgICogaWYgaXRlbSBwcm9wZXJ0eSBkaXNhYmxlZCBpcyBzZXQgdG8gdHJ1ZSwgc2VsZWN0aW9uIHdpbGwgYmUgZGlzYWJsZWRcbiAgICogQHBhcmFtIGVmZmVjdGVkRnJvbU91dHNpZGUgc2V0IHRvIHRydWUgaWYgY2FsbGluZyBmcm9tIHBhcmVudCBjb21wb25lbnQsIGlmIHRydWUgd2lsbCBmb2N1cyBvbiBzZWFyY2ggaW5wdXRcbiAgICovXG4gIHNlbGVjdERhdGEoaXRlbTogSUxpc3REYXRhLCBlZmZlY3RlZEZyb21PdXRzaWRlID0gdHJ1ZSk6IHZvaWQge1xuICAgIGlmIChpdGVtLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuaXRlbVNlbGVjdGVkLmVtaXQoaXRlbSlcbiAgICBpZiAoIXRoaXMubXVsdGkpIHtcbiAgICAgIHRoaXMuc2VhcmNoSW5wdXQucGF0Y2hWYWx1ZShpdGVtW3RoaXMuZGlzcGxheUtleV0sIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgICAgIHRoaXMuc2V0Q29udHJvbFZhbHVlKGl0ZW0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIXRoaXMuc2VsZWN0aW9ucy5oYXMoaXRlbVt0aGlzLnVuaXF1ZUtleV0pKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9ucy5zZXQoaXRlbVt0aGlzLnVuaXF1ZUtleV0sIGl0ZW0pO1xuICAgICAgfVxuICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUodGhpcy5zZWxlY3RlZEl0ZW1zKTtcbiAgICAgIGlmICghZWZmZWN0ZWRGcm9tT3V0c2lkZSkge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsSW50b1ZpZXcoKTtcbiAgICAgICAgfSwgMTApO1xuICAgICAgfVxuICAgICAgdGhpcy5zZWFyY2hJbnB1dC5wYXRjaFZhbHVlKFwiXCIpO1xuICAgICAgdGhpcy5kYXRhID0gW107XG4gICAgfVxuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtIHJlbW92ZSBpdGVtIGZyb20gc2VsZWN0ZWQgbGlzdFxuICAgKi9cbiAgcmVtb3ZlSXRlbShpdGVtOiBJTGlzdERhdGEpOiB2b2lkIHtcbiAgICB0aGlzLml0ZW1SZW1vdmVkLmVtaXQoaXRlbSlcbiAgICB0aGlzLnNlbGVjdGlvbnMuZGVsZXRlKGl0ZW1bdGhpcy51bmlxdWVLZXldKTtcbiAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSh0aGlzLnNlbGVjdGVkSXRlbXMpO1xuICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZVxuICAgIHRoaXMuaW5wdXRbXCJuYXRpdmVFbGVtZW50XCJdLmZvY3VzKCk7XG4gIH1cblxuICBwcml2YXRlIHNldENvbnRyb2xWYWx1ZSh2YWx1ZTogSUxpc3REYXRhKTogdm9pZCB7XG4gICAgdGhpcy5vblNlbGVjdC5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLmNvbnRyb2w/LnBhdGNoVmFsdWUodmFsdWUsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBsaXN0IG9mIHNlbGVjdGVkIGl0ZW1zXG4gICAqL1xuICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBBcnJheTxJTGlzdERhdGE+IHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGlvbnMudmFsdWVzKCkpO1xuICB9XG5cbiAgcmVtb3ZlSW5wdXRWYWx1ZSgpIHtcbiAgICB0aGlzLnNlYXJjaElucHV0LnJlc2V0KCk7XG4gICAgdGhpcy5kYXRhID0gW107XG4gICAgdGhpcy5jbGVhci5lbWl0KHRydWUpO1xuICB9XG4gIGRlZmF1bHRDYWxsKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm1pbklucHV0TGVuZ3RoID09PSAtMSkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMuZGVmYXVsdENhbGxTdWJzY3JpcHRpb24gPSB0aGlzLmh0dHBTdHJlYW0odGhpcy5zZWFyY2hJbnB1dC52YWx1ZSB8fCAnJykuc3Vic2NyaWJlKGxpc3QgPT4ge1xuICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5kYXRhID0gbGlzdDtcbiAgICAgICAgaWYgKCF0aGlzLm92ZXJsYXlSZWY/Lmhhc0F0dGFjaGVkKCkgJiYgdGhpcy5kYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24odGhpcy5kZCwgdGhpcy5vcmlnaW4ubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZGQtd3JhcHBlclwiIFtuZ0NsYXNzXT1cInsgb3BlbmVkOiBvcGVuZWQsIGRpc2FibGVkOiBkaXNhYmxlZCwgcmVhZG9ubHk6IHJlYWRvbmx5IH1cIiBbc3R5bGUud2lkdGhdPVwid2lkdGhcIiAjZGRCdG4+XG4gIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1saXN0XCIgKm5nSWY9XCJtdWx0aSAmJiBzZWxlY3Rpb25zLnNpemUgPiAwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNoaXBcIiBbbmdDbGFzc109XCJ7J2NoaXAtbWQnOiBzaXplID09PSAnbWQnLCAnY2hpcC1zbSc6IHNpemUgPT09ICdzbSd9XCIgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygc2VsZWN0ZWRJdGVtc1wiPlxuICAgICAgPHNwYW4gW25nQ2xhc3NdPVwieydoNic6IHNpemUgPT09ICdtZCcsICdoOC1iJzogc2l6ZSA9PT0gJ3NtJ31cIiBbbmdTdHlsZV09XCJ7ICdtYXJnaW4tcmlnaHQnOiAnNHB4J31cIj57e2l0ZW1bZGlzcGxheUtleV19fTwvc3Bhbj5cbiAgICAgIDxzcGFuIHN0eWxlPVwiY3Vyc29yOiBwb2ludGVyO1wiIChjbGljayk9XCJyZW1vdmVJdGVtKGl0ZW0pXCIgdGFiaW5kZXg9XCIwXCIgKGtleXVwLmVudGVyKT1cInJlbW92ZUl0ZW0oaXRlbSlcIiBbbmdTdHlsZV09XCJ7XG4gICAgICAgICdjdXJzb3InOiAncG9pbnRlcicsXG4gICAgICAgICdmb250LXNpemUnOiBzaXplID09PSAnc20nID8gJzEycHgnIDogJzE0cHgnXG4gICAgICB9XCIgY2xhc3M9XCJpY29uLWljLW5hdmlnYXRpb24tY2FuY2VsLTI0XCI+PC9zcGFuPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiPlxuICAgIDxzcGFuIGNsYXNzPVwiaWNvbi1pYy1hY3Rpb24tc2VhcmNoLTI0XCI+PC9zcGFuPlxuICAgIDxpbnB1dCAqbmdJZj1cImRpc2FibGVDb3B5UGFzdGU7IGVsc2UgZW5hYmxlQ29weVBhc3RlXCIgW25nQ2xhc3NdPVwieydpcC1tZCc6IHNpemUgPT09ICdtZCcsICdpcC1zbSc6IHNpemUgPT09ICdzbSd9XCIgb25jb3B5PVwicmV0dXJuIGZhbHNlO1wiIG9ucGFzdGU9XCJyZXR1cm4gZmFsc2VcIiBvbmN1dD1cInJldHVybiBmYWxzZVwiIHRhYmluZGV4PVwiMFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJibGFjay10ZXh0IGg2XCIgI2lucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIChmb2N1cyk9XCJkZWZhdWx0Q2FsbCgpXCIgKGtleXVwLmVudGVyKT1cImVuYWJsZVBvcFVwT25UYWIoKVwiLz5cbiAgICA8bmctdGVtcGxhdGUgI2VuYWJsZUNvcHlQYXN0ZT5cbiAgICAgIDxpbnB1dCBbbmdDbGFzc109XCJ7J2lwLW1kJzogc2l6ZSA9PT0gJ21kJywgJ2lwLXNtJzogc2l6ZSA9PT0gJ3NtJ31cIiB0YWJpbmRleD1cIjBcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiYmxhY2stdGV4dCBoNlwiICNpbnB1dCBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoSW5wdXRcIiAoZm9jdXMpPVwiZGVmYXVsdENhbGwoKVwiIChrZXl1cC5lbnRlcik9XCJlbmFibGVQb3BVcE9uVGFiKClcIiAvPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPGRpdiBjbGFzcz1cImljb24taWMtbmF2aWdhdGlvbi1jYW5jZWwtMjQgY3Jvb3MtaWNvblwiICpuZ0lmPVwic2VhcmNoSW5wdXQ/LnZhbHVlPy5sZW5ndGhcIiB0YWJpbmRleD1cIjBcIiAoY2xpY2spPVwicmVtb3ZlSW5wdXRWYWx1ZSgpXCIgKGtleXVwLmVudGVyKT1cInJlbW92ZUlucHV0VmFsdWUoKVwiPjwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2RkPlxuICA8ZGl2IGNsYXNzPVwiZGQtbGlzdFwiIFtuZ1N0eWxlXT1cInsnbWF4LWhlaWdodCc6aGVpZ2h0LCAnd2lkdGgnOiBkcm9wZG93bkxpc3RXaWR0aH1cIiAgW25nQ2xhc3NdPVwieydkZC1saXN0LXBkJzpkYXRhLmxlbmd0aCA9PT0gMH1cIiB0YWJpbmRleD1cIjBcIiBjZGtUcmFwRm9jdXMgW2Nka1RyYXBGb2N1c0F1dG9DYXB0dXJlXT1cIm9wZW5Qb3BVcE9uVGFiXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJjdXN0b21Mb2FkZXI7IGVsc2UgZGVmYXVsdExvYWRlclwiXG4gICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUxvYWRlclwiXG4gICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2FkZXI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzdGF0dXMtY29udGFpbmVyXCIgKm5nSWY9XCJsb2FkaW5nICYmICFjdXN0b21Mb2FkZXJcIj5cbiAgICAgICAgICA8bWlzLWxvYWRlciBbbW9iaWxlVmlld109XCJ0cnVlXCI+PC9taXMtbG9hZGVyPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9yXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwic3RhdHVzLWNvbnRhaW5lclwiPlxuICAgICAgICA8cD5Vbmtub3duIGVycm9yIGhhcyBvY2N1cnJlZCwgPGJyPiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3IgJiYgZGF0YS5sZW5ndGggPiAwXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGRhdGFcIj5cbiAgICAgICAgPGRpdiAoY2xpY2spPVwic2VsZWN0RGF0YShpdGVtLCBmYWxzZSlcIiAoa2V5dXAuZW50ZXIpPVwic2VsZWN0RGF0YShpdGVtLCBmYWxzZSlcIj4gXG4gICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PiAgXG4gICAgICAgICAgPGRpdlxuICAgICAgICAgIFt0YWJpbmRleF09XCJvcGVuUG9wVXBPblRhYiA/IDAgOiAtMVwiXG4gICAgICAgICAgKm5nSWY9XCJjdXN0b21JdGVtOyBlbHNlIHN0YW5kYXJkSXRlbVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21JdGVtXCJcbiAgICAgICAgICAgIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogaXRlbSB9XCJcbiAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3RhbmRhcmRJdGVtPlxuICAgICAgICAgICAgPGRpdiB0YWJpbmRleD1cIi0xXCIgY2RrRm9jdXNJbml0aWFsPjwvZGl2PiAgXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbVwiIChjbGljayk9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiIFt0YWJpbmRleF09XCJvcGVuUG9wVXBPblRhYiA/IDAgOiAtMVwiIChrZXl1cC5lbnRlcik9XCJzZWxlY3REYXRhKGl0ZW0sIGZhbHNlKVwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJpbWFyeVwiPlxuICAgICAgICAgICAgICAgICAge3sgaXRlbVtkaXNwbGF5S2V5XSB9fVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWNvbmRhcnlcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGl0ZW1bc2Vjb25kYXJ5RGlzcGxheUtleV0gfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhbG9hZGluZyAmJiAhZXJyb3IgJiYgZGF0YS5sZW5ndGggPT09IDAgJiYgc2VhcmNoSW5wdXQudmFsdWVcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkYXRhLW5vdC1mb3VuZFwiPk5vIERhdGEgQXZhaWxhYmxlPC9kaXY+XG4gIDwvZGl2PlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=