@impartner/design-components 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (291) hide show
  1. package/README.md +5 -4
  2. package/constants/fontawesome-icons.d.ts +2 -2
  3. package/{esm2020 → esm2022}/constants/fontawesome-icons.mjs +1 -1
  4. package/{esm2020 → esm2022}/lib/alert/alert.component.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/alert/alert.module.mjs +5 -5
  6. package/{esm2020 → esm2022}/lib/avatar/avatar.component.mjs +4 -4
  7. package/{esm2020 → esm2022}/lib/avatar/avatar.module.mjs +5 -5
  8. package/{esm2020 → esm2022}/lib/avatar-group/avatar-group.component.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/avatar-group/avatar-group.module.mjs +5 -5
  10. package/esm2022/lib/backdrop/backdrop.component.mjs +52 -0
  11. package/{esm2020 → esm2022}/lib/backdrop/backdrop.module.mjs +6 -6
  12. package/esm2022/lib/badge/badge.component.mjs +105 -0
  13. package/{esm2020 → esm2022}/lib/badge/badge.module.mjs +6 -6
  14. package/{esm2020 → esm2022}/lib/badge/types/badge-size.mjs +1 -1
  15. package/{esm2020 → esm2022}/lib/branding/branded.directive.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/branding/branding.module.mjs +6 -6
  17. package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb-item.component.mjs +6 -6
  18. package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.component.mjs +5 -5
  19. package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.module.mjs +5 -5
  20. package/{esm2020 → esm2022}/lib/button/button.component.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/button/button.module.mjs +6 -6
  22. package/{esm2020 → esm2022}/lib/button-group/button-group.component.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/button-group/button-group.module.mjs +6 -6
  24. package/{esm2020 → esm2022}/lib/card-heading/card-heading.component.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/card-heading/card-heading.module.mjs +6 -6
  26. package/esm2022/lib/data-card/data-card.component.mjs +123 -0
  27. package/esm2022/lib/data-card/data-card.module.mjs +21 -0
  28. package/{esm2020 → esm2022}/lib/design-components.module.mjs +61 -61
  29. package/{esm2020 → esm2022}/lib/dropdown/components/dropdown-item/dropdown-item.component.mjs +4 -4
  30. package/esm2022/lib/dropdown/dropdown.component.mjs +143 -0
  31. package/{esm2020 → esm2022}/lib/dropdown/dropdown.module.mjs +6 -6
  32. package/{esm2020 → esm2022}/lib/file-upload/directives/file-drop.directive.mjs +4 -4
  33. package/{esm2020 → esm2022}/lib/file-upload/file-upload.component.mjs +30 -30
  34. package/{esm2020 → esm2022}/lib/file-upload/file-upload.module.mjs +8 -8
  35. package/{esm2020 → esm2022}/lib/file-upload/pipes/human-readable-byte-size.pipe.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/checkbox.component.mjs +49 -49
  37. package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/checkbox.module.mjs +5 -5
  38. package/esm2022/lib/form-field/controls/input/input.directive.mjs +233 -0
  39. package/esm2022/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +260 -0
  40. package/esm2022/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +289 -0
  41. package/{esm2020 → esm2022}/lib/form-field/controls/radio/radio.module.mjs +5 -5
  42. package/esm2022/lib/form-field/controls/select/option/select-option.component.mjs +139 -0
  43. package/esm2022/lib/form-field/controls/select/select-model.mjs +150 -0
  44. package/esm2022/lib/form-field/controls/select/select.component.mjs +522 -0
  45. package/{esm2020 → esm2022}/lib/form-field/controls/select/select.module.mjs +9 -9
  46. package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.mjs +4 -4
  47. package/esm2022/lib/form-field/controls/shared/toggle/toggle.component.mjs +96 -0
  48. package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/toggle.module.mjs +6 -6
  49. package/{esm2020 → esm2022}/lib/form-field/directives/corner-hint.directive.mjs +4 -4
  50. package/{esm2020 → esm2022}/lib/form-field/directives/error.directive.mjs +4 -4
  51. package/esm2022/lib/form-field/directives/form-root.directive.mjs +91 -0
  52. package/{esm2020 → esm2022}/lib/form-field/directives/hint.directive.mjs +4 -4
  53. package/{esm2020 → esm2022}/lib/form-field/directives/label.directive.mjs +4 -4
  54. package/{esm2020 → esm2022}/lib/form-field/directives/prefix.directive.mjs +4 -4
  55. package/{esm2020 → esm2022}/lib/form-field/directives/suffix.directive.mjs +4 -4
  56. package/{esm2020 → esm2022}/lib/form-field/form-field.component.mjs +11 -11
  57. package/{esm2020 → esm2022}/lib/form-field/impdc-forms.module.mjs +28 -28
  58. package/{esm2020 → esm2022}/lib/form-field/services/error-state-matcher.service.mjs +7 -7
  59. package/{esm2020 → esm2022}/lib/form-field/services/unique-selection-dispatcher.service.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/form-field/shared/disabled.mixin.mjs +5 -5
  61. package/esm2022/lib/form-field/shared/error-state.mixin.mjs +24 -0
  62. package/{esm2020 → esm2022}/lib/form-field/shared/form-field-control.mjs +4 -4
  63. package/{esm2020 → esm2022}/lib/form-field/shared/tab-index.mixin.mjs +6 -6
  64. package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +5 -5
  65. package/{esm2020 → esm2022}/lib/icon/icon.module.mjs +6 -6
  66. package/esm2022/lib/modal/modal.component.mjs +260 -0
  67. package/{esm2020 → esm2022}/lib/modal/modal.module.mjs +14 -14
  68. package/{esm2020 → esm2022}/lib/modal/types/modal-component-sizes.mjs +1 -1
  69. package/{esm2020 → esm2022}/lib/modal/types/modal-theme.mjs +1 -1
  70. package/esm2022/lib/pagination/pagination.component.mjs +176 -0
  71. package/{esm2020 → esm2022}/lib/pagination/pagination.module.mjs +16 -16
  72. package/{esm2020 → esm2022}/lib/progress-bar/progress-bar.component.mjs +5 -5
  73. package/{esm2020 → esm2022}/lib/progress-bar/progress-bar.module.mjs +5 -5
  74. package/esm2022/lib/scrollable/scrollable.component.mjs +186 -0
  75. package/{esm2020 → esm2022}/lib/scrollable/scrollable.module.mjs +6 -6
  76. package/esm2022/lib/select-icon/select-icon.component.mjs +308 -0
  77. package/{esm2020 → esm2022}/lib/select-icon/select-icon.module.mjs +13 -13
  78. package/{esm2020 → esm2022}/lib/size-detection/directive/size-detector.directive.mjs +5 -5
  79. package/{esm2020 → esm2022}/lib/size-detection/size-detection.module.mjs +5 -5
  80. package/{esm2020 → esm2022}/lib/spinner/spinner.component.mjs +4 -4
  81. package/{esm2020 → esm2022}/lib/spinner/spinner.module.mjs +5 -5
  82. package/{esm2020 → esm2022}/lib/table/components/bulk-actions/bulk-actions.component.mjs +4 -4
  83. package/{esm2020 → esm2022}/lib/table/components/column-heading/column-heading.component.mjs +4 -4
  84. package/{esm2020 → esm2022}/lib/table/components/index.mjs +2 -1
  85. package/esm2022/lib/table/components/row-actions/row-actions.component.mjs +61 -0
  86. package/esm2022/lib/table/containers/table.component.mjs +403 -0
  87. package/esm2022/lib/table/directives/table-inject-component.directive.mjs +46 -0
  88. package/{esm2020 → esm2022}/lib/table/directives/table.directive.mjs +4 -4
  89. package/{esm2020 → esm2022}/lib/table/enumerations/table-column-type.mjs +2 -1
  90. package/{esm2020 → esm2022}/lib/table/helpers/table-theme.helper.mjs +3 -3
  91. package/esm2022/lib/table/interfaces/index.mjs +11 -0
  92. package/esm2022/lib/table/interfaces/table-column-defs.type.mjs +2 -0
  93. package/esm2022/lib/table/interfaces/table-row-action-payload.interface.mjs +2 -0
  94. package/esm2022/lib/table/interfaces/table-row-action.interface.mjs +2 -0
  95. package/esm2022/lib/table/table.module.mjs +96 -0
  96. package/{esm2020 → esm2022}/lib/text-highlight/text-highlight.component.mjs +6 -6
  97. package/{esm2020 → esm2022}/lib/text-highlight/text-highlight.module.mjs +6 -6
  98. package/{esm2020 → esm2022}/services/index.mjs +1 -1
  99. package/esm2022/services/interaction.service.mjs +88 -0
  100. package/{esm2020 → esm2022}/types/component-theme.mjs +1 -1
  101. package/{fesm2020 → fesm2022}/impartner-design-components.mjs +1197 -1032
  102. package/fesm2022/impartner-design-components.mjs.map +1 -0
  103. package/lib/alert/alert.component.d.ts +1 -1
  104. package/lib/alert/theme/alert-theme.d.ts +1 -1
  105. package/lib/avatar/avatar.component.d.ts +1 -1
  106. package/lib/avatar-group/avatar-group.component.d.ts +1 -1
  107. package/lib/backdrop/backdrop.component.d.ts +9 -6
  108. package/lib/badge/badge.component.d.ts +3 -2
  109. package/lib/badge/types/badge-icon.d.ts +1 -1
  110. package/lib/badge/types/badge-size.d.ts +1 -1
  111. package/lib/branding/branded.directive.d.ts +1 -1
  112. package/lib/breadcrumb/breadcrumb-item.component.d.ts +1 -1
  113. package/lib/breadcrumb/breadcrumb.component.d.ts +1 -1
  114. package/lib/button/button.component.d.ts +1 -1
  115. package/lib/button/themes/button-theme.d.ts +1 -1
  116. package/lib/button-group/button-group.component.d.ts +1 -1
  117. package/lib/card-heading/card-heading.component.d.ts +1 -1
  118. package/lib/data-card/data-card.component.d.ts +14 -18
  119. package/lib/data-card/data-card.module.d.ts +2 -1
  120. package/lib/dropdown/components/dropdown-item/dropdown-item.component.d.ts +1 -1
  121. package/lib/dropdown/dropdown.component.d.ts +6 -5
  122. package/lib/dropdown/types/dropdown-position.d.ts +1 -1
  123. package/lib/file-upload/directives/file-drop.directive.d.ts +1 -1
  124. package/lib/file-upload/file-upload.component.d.ts +1 -1
  125. package/lib/form-field/controls/checkbox/checkbox.component.d.ts +1 -1
  126. package/lib/form-field/controls/input/input.directive.d.ts +1 -1
  127. package/lib/form-field/controls/radio/radio-button/radio-button.component.d.ts +1 -1
  128. package/lib/form-field/controls/radio/radio-group/radio-group.directive.d.ts +1 -1
  129. package/lib/form-field/controls/select/option/select-option.component.d.ts +4 -4
  130. package/lib/form-field/controls/select/select.component.d.ts +1 -1
  131. package/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.d.ts +1 -1
  132. package/lib/form-field/controls/shared/toggle/toggle.component.d.ts +1 -1
  133. package/lib/form-field/directives/corner-hint.directive.d.ts +1 -1
  134. package/lib/form-field/directives/error.directive.d.ts +1 -1
  135. package/lib/form-field/directives/form-root.directive.d.ts +2 -2
  136. package/lib/form-field/directives/hint.directive.d.ts +1 -1
  137. package/lib/form-field/directives/label.directive.d.ts +1 -1
  138. package/lib/form-field/directives/prefix.directive.d.ts +1 -1
  139. package/lib/form-field/directives/suffix.directive.d.ts +1 -1
  140. package/lib/form-field/form-field.component.d.ts +1 -1
  141. package/lib/form-field/services/unique-selection-dispatcher.service.d.ts +1 -1
  142. package/lib/form-field/shared/constructors.type.d.ts +2 -2
  143. package/lib/form-field/shared/disabled.mixin.d.ts +1 -1
  144. package/lib/form-field/shared/error-state.mixin.d.ts +1 -1
  145. package/lib/form-field/shared/form-field-control.d.ts +1 -1
  146. package/lib/form-field/shared/tab-index.mixin.d.ts +1 -1
  147. package/lib/icon/icon.component.d.ts +1 -1
  148. package/lib/modal/modal.component.d.ts +17 -10
  149. package/lib/modal/types/modal-component-sizes.d.ts +1 -1
  150. package/lib/modal/types/modal-theme.d.ts +1 -1
  151. package/lib/pagination/pagination.component.d.ts +1 -1
  152. package/lib/progress-bar/progress-bar.component.d.ts +1 -1
  153. package/lib/scrollable/scrollable.component.d.ts +1 -1
  154. package/lib/select-icon/select-icon.component.d.ts +1 -1
  155. package/lib/size-detection/directive/size-detector.directive.d.ts +1 -1
  156. package/lib/spinner/spinner.component.d.ts +1 -1
  157. package/lib/table/components/bulk-actions/bulk-actions.component.d.ts +1 -1
  158. package/lib/table/components/column-heading/column-heading.component.d.ts +1 -1
  159. package/lib/table/components/index.d.ts +1 -0
  160. package/lib/table/components/row-actions/row-actions.component.d.ts +21 -0
  161. package/lib/table/containers/table.component.d.ts +12 -6
  162. package/lib/table/directives/table-inject-component.directive.d.ts +3 -3
  163. package/lib/table/directives/table.directive.d.ts +1 -1
  164. package/lib/table/enumerations/table-column-type.d.ts +2 -1
  165. package/lib/table/helpers/table-theme.helper.d.ts +4 -4
  166. package/lib/table/interfaces/custom-cell-renderer-components.type.d.ts +1 -1
  167. package/lib/table/interfaces/index.d.ts +3 -1
  168. package/lib/table/interfaces/{table-column-def.interface.d.ts → table-column-defs.type.d.ts} +8 -1
  169. package/lib/table/interfaces/table-row-action-payload.interface.d.ts +6 -0
  170. package/lib/table/interfaces/table-row-action.interface.d.ts +9 -0
  171. package/lib/table/interfaces/table-row-item.interface.d.ts +3 -3
  172. package/lib/table/table.module.d.ts +12 -10
  173. package/lib/text-highlight/text-highlight.component.d.ts +1 -1
  174. package/package.json +16 -22
  175. package/services/index.d.ts +1 -1
  176. package/services/interaction.service.d.ts +20 -10
  177. package/types/component-size.d.ts +2 -2
  178. package/types/component-theme.d.ts +1 -1
  179. package/utilities/boolean-props.d.ts +1 -1
  180. package/utilities/number-props.d.ts +1 -1
  181. package/esm2020/lib/backdrop/backdrop.component.mjs +0 -40
  182. package/esm2020/lib/badge/badge.component.mjs +0 -99
  183. package/esm2020/lib/data-card/data-card.component.mjs +0 -128
  184. package/esm2020/lib/data-card/data-card.module.mjs +0 -20
  185. package/esm2020/lib/dropdown/dropdown.component.mjs +0 -142
  186. package/esm2020/lib/form-field/controls/input/input.directive.mjs +0 -233
  187. package/esm2020/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +0 -260
  188. package/esm2020/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +0 -289
  189. package/esm2020/lib/form-field/controls/select/option/select-option.component.mjs +0 -139
  190. package/esm2020/lib/form-field/controls/select/select-model.mjs +0 -150
  191. package/esm2020/lib/form-field/controls/select/select.component.mjs +0 -522
  192. package/esm2020/lib/form-field/controls/shared/toggle/toggle.component.mjs +0 -96
  193. package/esm2020/lib/form-field/directives/form-root.directive.mjs +0 -91
  194. package/esm2020/lib/form-field/shared/error-state.mixin.mjs +0 -24
  195. package/esm2020/lib/modal/modal.component.mjs +0 -187
  196. package/esm2020/lib/pagination/pagination.component.mjs +0 -176
  197. package/esm2020/lib/scrollable/scrollable.component.mjs +0 -186
  198. package/esm2020/lib/select-icon/select-icon.component.mjs +0 -308
  199. package/esm2020/lib/table/containers/table.component.mjs +0 -386
  200. package/esm2020/lib/table/directives/table-inject-component.directive.mjs +0 -46
  201. package/esm2020/lib/table/interfaces/index.mjs +0 -9
  202. package/esm2020/lib/table/interfaces/table-column-def.interface.mjs +0 -2
  203. package/esm2020/lib/table/table.module.mjs +0 -88
  204. package/esm2020/services/interaction.service.mjs +0 -81
  205. package/fesm2015/impartner-design-components.mjs +0 -9214
  206. package/fesm2015/impartner-design-components.mjs.map +0 -1
  207. package/fesm2020/impartner-design-components.mjs.map +0 -1
  208. /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
  209. /package/{esm2020 → esm2022}/impartner-design-components.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/alert/index.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/alert/theme/alert-theme.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/alert/theme/index.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/avatar/index.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/avatar-group/index.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/backdrop/index.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/badge/index.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/badge/types/badge-icon.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/badge/types/index.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/branding/index.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/breadcrumb/index.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/button/index.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/button/themes/button-theme.mjs +0 -0
  223. /package/{esm2020 → esm2022}/lib/button/themes/index.mjs +0 -0
  224. /package/{esm2020 → esm2022}/lib/button-group/index.mjs +0 -0
  225. /package/{esm2020 → esm2022}/lib/card-heading/index.mjs +0 -0
  226. /package/{esm2020 → esm2022}/lib/data-card/index.mjs +0 -0
  227. /package/{esm2020 → esm2022}/lib/dropdown/components/index.mjs +0 -0
  228. /package/{esm2020 → esm2022}/lib/dropdown/index.mjs +0 -0
  229. /package/{esm2020 → esm2022}/lib/dropdown/types/dropdown-position.mjs +0 -0
  230. /package/{esm2020 → esm2022}/lib/dropdown/types/index.mjs +0 -0
  231. /package/{esm2020 → esm2022}/lib/file-upload/directives/index.mjs +0 -0
  232. /package/{esm2020 → esm2022}/lib/file-upload/index.mjs +0 -0
  233. /package/{esm2020 → esm2022}/lib/file-upload/pipes/index.mjs +0 -0
  234. /package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/index.mjs +0 -0
  235. /package/{esm2020 → esm2022}/lib/form-field/controls/index.mjs +0 -0
  236. /package/{esm2020 → esm2022}/lib/form-field/controls/input/index.mjs +0 -0
  237. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/index.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/injection-tokens.mjs +0 -0
  239. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/index.mjs +0 -0
  240. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-button.interface.mjs +0 -0
  241. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-change-event.interface.mjs +0 -0
  242. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-group.interface.mjs +0 -0
  243. /package/{esm2020 → esm2022}/lib/form-field/controls/select/index.mjs +0 -0
  244. /package/{esm2020 → esm2022}/lib/form-field/controls/select/option/index.mjs +0 -0
  245. /package/{esm2020 → esm2022}/lib/form-field/controls/select/option-parent.mjs +0 -0
  246. /package/{esm2020 → esm2022}/lib/form-field/controls/shared/index.mjs +0 -0
  247. /package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/components/index.mjs +0 -0
  248. /package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/index.mjs +0 -0
  249. /package/{esm2020 → esm2022}/lib/form-field/directives/index.mjs +0 -0
  250. /package/{esm2020 → esm2022}/lib/form-field/form-field-errors.mjs +0 -0
  251. /package/{esm2020 → esm2022}/lib/form-field/impdc-forms.mjs +0 -0
  252. /package/{esm2020 → esm2022}/lib/form-field/index.mjs +0 -0
  253. /package/{esm2020 → esm2022}/lib/form-field/services/index.mjs +0 -0
  254. /package/{esm2020 → esm2022}/lib/form-field/shared/constructors.type.mjs +0 -0
  255. /package/{esm2020 → esm2022}/lib/form-field/shared/index.mjs +0 -0
  256. /package/{esm2020 → esm2022}/lib/icon/index.mjs +0 -0
  257. /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
  258. /package/{esm2020 → esm2022}/lib/modal/index.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/modal/types/index.mjs +0 -0
  260. /package/{esm2020 → esm2022}/lib/pagination/index.mjs +0 -0
  261. /package/{esm2020 → esm2022}/lib/progress-bar/index.mjs +0 -0
  262. /package/{esm2020 → esm2022}/lib/scrollable/index.mjs +0 -0
  263. /package/{esm2020 → esm2022}/lib/select-icon/index.mjs +0 -0
  264. /package/{esm2020 → esm2022}/lib/size-detection/directive/element-size.interface.mjs +0 -0
  265. /package/{esm2020 → esm2022}/lib/size-detection/directive/index.mjs +0 -0
  266. /package/{esm2020 → esm2022}/lib/size-detection/index.mjs +0 -0
  267. /package/{esm2020 → esm2022}/lib/spinner/index.mjs +0 -0
  268. /package/{esm2020 → esm2022}/lib/table/constants/index.mjs +0 -0
  269. /package/{esm2020 → esm2022}/lib/table/constants/public-table.constants.mjs +0 -0
  270. /package/{esm2020 → esm2022}/lib/table/constants/table.constants.mjs +0 -0
  271. /package/{esm2020 → esm2022}/lib/table/containers/index.mjs +0 -0
  272. /package/{esm2020 → esm2022}/lib/table/directives/index.mjs +0 -0
  273. /package/{esm2020 → esm2022}/lib/table/enumerations/index.mjs +0 -0
  274. /package/{esm2020 → esm2022}/lib/table/helpers/index.mjs +0 -0
  275. /package/{esm2020 → esm2022}/lib/table/index.mjs +0 -0
  276. /package/{esm2020 → esm2022}/lib/table/interfaces/cell-renderer.interface.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/table/interfaces/custom-cell-renderer-components.type.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/table/interfaces/sort-by-payload.interface.mjs +0 -0
  279. /package/{esm2020 → esm2022}/lib/table/interfaces/table-cell-option.interface.mjs +0 -0
  280. /package/{esm2020 → esm2022}/lib/table/interfaces/table-event-payload.interface.mjs +0 -0
  281. /package/{esm2020 → esm2022}/lib/table/interfaces/table-row-item.interface.mjs +0 -0
  282. /package/{esm2020 → esm2022}/lib/text-highlight/index.mjs +0 -0
  283. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  284. /package/{esm2020 → esm2022}/types/component-size.mjs +0 -0
  285. /package/{esm2020 → esm2022}/types/index.mjs +0 -0
  286. /package/{esm2020 → esm2022}/utilities/boolean-props.mjs +0 -0
  287. /package/{esm2020 → esm2022}/utilities/dc.mjs +0 -0
  288. /package/{esm2020 → esm2022}/utilities/index.mjs +0 -0
  289. /package/{esm2020 → esm2022}/utilities/lc.mjs +0 -0
  290. /package/{esm2020 → esm2022}/utilities/number-props.mjs +0 -0
  291. /package/{esm2020 → esm2022}/utilities/sanitize.mjs +0 -0
@@ -0,0 +1,522 @@
1
+ /* eslint-disable @angular-eslint/no-conflicting-lifecycle */
2
+ import { Attribute, ChangeDetectionStrategy, Component, ContentChildren, ElementRef, EventEmitter, Inject, Input, Optional, Output, Self, ViewChild } from '@angular/core';
3
+ import { Validators } from '@angular/forms';
4
+ import { NgbDropdown, NgbDropdownMenu } from '@ng-bootstrap/ng-bootstrap';
5
+ import { nanoid } from 'nanoid';
6
+ import { coerceBooleanPropertyValue } from '../../../../utilities';
7
+ import { defer, merge, startWith, Subject, switchMap, take, takeUntil } from 'rxjs';
8
+ import { IMPDC_FORM_ROOT } from '../../directives';
9
+ import { ImpdcFormFieldControl, mixinDisabled, mixinErrorState, mixinTabIndex } from '../../shared';
10
+ import { IMPDC_SELECT_OPTION_PARENT_COMPONENT } from './option-parent';
11
+ import { SelectOptionComponent } from './option/select-option.component';
12
+ import { SelectModel } from './select-model';
13
+ import * as i0 from "@angular/core";
14
+ import * as i1 from "../../services";
15
+ import * as i2 from "@angular/forms";
16
+ import * as i3 from "@angular/common";
17
+ import * as i4 from "@ng-bootstrap/ng-bootstrap";
18
+ export class SelectChangeEvent {
19
+ constructor(
20
+ /** The specific SelectComponent that changed. */
21
+ source,
22
+ /** The selected value(s) */
23
+ value) {
24
+ this.source = source;
25
+ this.value = value;
26
+ }
27
+ }
28
+ /**
29
+ * Returns an exception to be thrown when attempting to assign a non-array value to a select
30
+ * in `multiple` mode. Note that `undefined` and `null` are still valid values to allow for
31
+ * resetting the value.
32
+ * @ignore
33
+ */
34
+ export function getImpdcSelectNonArrayValueError() {
35
+ return Error('Value must be an array in multiple-selection mode.');
36
+ }
37
+ /**
38
+ * Returns an exception to be thrown when assigning a non-function value to the comparator
39
+ * used to determine if a value corresponds to an option. Note that whether the function
40
+ * actually takes two values and returns a boolean is not checked.
41
+ */
42
+ export function getImpdcSelectNonFunctionValueError() {
43
+ return Error('`compareWith` must be a function.');
44
+ }
45
+ /**
46
+ * Returns an exception to be thrown when attempting to change a select's `multiple` option
47
+ * after initialization.
48
+ * @ignore
49
+ */
50
+ export function getImpdcSelectDynamicMultipleError() {
51
+ return Error('Cannot change `multiple` mode of select after initialization.');
52
+ }
53
+ const _SelectComponentBase = mixinTabIndex(mixinDisabled(mixinErrorState(class {
54
+ constructor(_defaultErrorStateMatcher, _formRoot, _parentForm, _parentFormGroup, ngControl) {
55
+ this._defaultErrorStateMatcher = _defaultErrorStateMatcher;
56
+ this._formRoot = _formRoot;
57
+ this._parentForm = _parentForm;
58
+ this._parentFormGroup = _parentFormGroup;
59
+ this.ngControl = ngControl;
60
+ this.stateChanges = new Subject();
61
+ }
62
+ })));
63
+ /**
64
+ * The `SelectComponent` (`<impdc-select`) is a select-style dropdown input where an item (or multiple items) can be picked
65
+ * from a list of available options. This component can be used within a `FormFieldComponent` (`<impdc-form-field`).
66
+ * To use, import `SelectModule` or another module that imports and exports that module from `@impartner/design-components`.
67
+ */
68
+ export class SelectComponent extends _SelectComponentBase {
69
+ /**
70
+ * The placeholder text that will be displayed when no selection has been made.
71
+ *
72
+ * @default \- Select -
73
+ */
74
+ get placeholder() {
75
+ return this._placeholder;
76
+ }
77
+ set placeholder(value) {
78
+ this._placeholder = value;
79
+ this.stateChanges.next();
80
+ }
81
+ /**
82
+ * Used to set requiredness of control in a template-based manner;
83
+ * not necessary when using the Angular reactive forms API and `required` validator.
84
+ */
85
+ get required() {
86
+ return (this._required ??
87
+ this.ngControl?.control?.hasValidator(Validators.required) ??
88
+ false);
89
+ }
90
+ set required(value) {
91
+ this._required = coerceBooleanPropertyValue(value);
92
+ this.stateChanges.next();
93
+ }
94
+ /**
95
+ * Sets whether the control is a single-select or multiple-select. Cannot be changed after component initialization.
96
+ */
97
+ get multiple() {
98
+ return this._multiple;
99
+ }
100
+ set multiple(value) {
101
+ if (this._selectionModel) {
102
+ throw getImpdcSelectDynamicMultipleError();
103
+ }
104
+ this._multiple = coerceBooleanPropertyValue(value);
105
+ }
106
+ /**
107
+ * Function used to compare option values with selected values. The first arg is a
108
+ * value from an option, and the second arg is a value from the selection.
109
+ *
110
+ * @returns Boolean indicating if the values are equivalent.
111
+ */
112
+ get compareWith() {
113
+ return this._compareWith;
114
+ }
115
+ set compareWith(fn) {
116
+ if (typeof fn !== 'function') {
117
+ throw getImpdcSelectNonFunctionValueError();
118
+ }
119
+ this._compareWith = fn;
120
+ if (this._selectionModel) {
121
+ // Changing the comparator function means the visual selection may have changed.
122
+ this._initializeSelection();
123
+ }
124
+ }
125
+ get dropdownOpen() {
126
+ return this._ngbDropdown?.isOpen() ?? false;
127
+ }
128
+ constructor(_changeDetector, _ngZone, tabIndex, _defaultErrorStateMatcher, _formRoot, _parentForm, _parentFormGroup, ngControl) {
129
+ super(_defaultErrorStateMatcher, _formRoot, _parentForm, _parentFormGroup, ngControl);
130
+ this._changeDetector = _changeDetector;
131
+ this._ngZone = _ngZone;
132
+ /** @ignore */
133
+ this.optionSelectionChanges = defer(() => {
134
+ const options = this.options;
135
+ if (options) {
136
+ return options.changes.pipe(startWith(options), switchMap(() => merge(...options.map(option => option.onSelectionChange))));
137
+ }
138
+ return this._ngZone.onStable.pipe(take(1), switchMap(() => this.optionSelectionChanges));
139
+ });
140
+ this._uid = `impdc-select-${nanoid()}`;
141
+ this._ngDestroy = new Subject();
142
+ this._compareWith = (o1, o2) => o1 === o2;
143
+ this._cvaOnChange = () => { };
144
+ this._cvaOnTouched = () => { };
145
+ this._placeholder = '- Select -';
146
+ this._multiple = false;
147
+ /** Events fire when selection has been changed by the user. */
148
+ this.selectionChange = new EventEmitter();
149
+ /**
150
+ * Events fire when raw value of select changes. Mainly exists to handle
151
+ * two-way binding of `value` input property.
152
+ * @ignore
153
+ */
154
+ this.valueChange = new EventEmitter();
155
+ /* ImpdcFormFieldControl */
156
+ this.controlType = 'impdc-select';
157
+ this.supportsAffixes = true;
158
+ this._focused = false;
159
+ if (this.ngControl) {
160
+ this.ngControl.valueAccessor = this;
161
+ }
162
+ this.id = this.id;
163
+ this.tabIndex = parseInt(tabIndex) || 0;
164
+ }
165
+ get empty() {
166
+ return !this._selectionModel || this._selectionModel.isEmpty();
167
+ }
168
+ get displayedValue() {
169
+ if (this.empty) {
170
+ return '';
171
+ }
172
+ if (!this._multiple) {
173
+ return this._selectionModel.selected[0].label;
174
+ }
175
+ return this._selectionModel.selected.map(opt => opt.label).join(', ');
176
+ }
177
+ get selected() {
178
+ return this.multiple
179
+ ? this._selectionModel?.selected || []
180
+ : this._selectionModel?.selected[0];
181
+ }
182
+ /** @ignore */
183
+ focus(options) {
184
+ this._toggleButtonRef.nativeElement.focus(options);
185
+ }
186
+ _handleOpenChange(isOpen) {
187
+ if (isOpen) {
188
+ this._onFocus();
189
+ }
190
+ else {
191
+ this._onBlur();
192
+ }
193
+ this.stateChanges.next();
194
+ }
195
+ /* Angular lifecycle hooks */
196
+ /** @ignore */
197
+ ngOnInit() {
198
+ this._selectionModel = new SelectModel(this.multiple);
199
+ this.stateChanges.next();
200
+ }
201
+ /** @ignore */
202
+ ngAfterContentInit() {
203
+ this._selectionModel.changed$
204
+ .pipe(takeUntil(this._ngDestroy))
205
+ .subscribe(changeEvent => {
206
+ changeEvent.added.forEach(option => option.select());
207
+ changeEvent.removed.forEach(option => option.deselect());
208
+ });
209
+ this.options.changes
210
+ .pipe(startWith(null), takeUntil(this._ngDestroy))
211
+ .subscribe(() => {
212
+ this._resetOptions();
213
+ this._initializeSelection();
214
+ });
215
+ }
216
+ /** @ignore */
217
+ ngAfterViewInit() {
218
+ this._ngbDropdownMenu.menuItems = this.options;
219
+ }
220
+ /** @ignore */
221
+ ngDoCheck() {
222
+ const ngControl = this.ngControl;
223
+ if (!ngControl) {
224
+ return;
225
+ }
226
+ if (this._previousControl !== ngControl.control) {
227
+ if (this._previousControl !== undefined &&
228
+ ngControl.disabled !== null &&
229
+ ngControl.disabled !== this.disabled) {
230
+ this.disabled = ngControl?.disabled;
231
+ }
232
+ this._previousControl = ngControl.control;
233
+ }
234
+ this.updateErrorState();
235
+ }
236
+ /** @ignore */
237
+ ngOnChanges(changes) {
238
+ // Managing disabled state is handled via the `mixinDisabled` mixin/generator, but we still need to signal
239
+ // to the parent form field so it can run change detection when disabled state is changed.
240
+ if (changes['disabled']) {
241
+ this.stateChanges.next();
242
+ }
243
+ }
244
+ /** @ignore */
245
+ ngOnDestroy() {
246
+ this._ngDestroy.next();
247
+ this._ngDestroy.complete();
248
+ this.stateChanges.complete();
249
+ }
250
+ get value() {
251
+ return this._value;
252
+ }
253
+ set value(value) {
254
+ const hasAssigned = this._assignValue(value);
255
+ if (hasAssigned) {
256
+ this._cvaOnChange(value);
257
+ }
258
+ }
259
+ get id() {
260
+ return this._id;
261
+ }
262
+ set id(value) {
263
+ this._id = value || this._uid;
264
+ this.stateChanges.next();
265
+ }
266
+ get focused() {
267
+ return this._focused || this.dropdownOpen;
268
+ }
269
+ /* ControlValueAccessor */
270
+ /** @ignore */
271
+ writeValue(value) {
272
+ this._assignValue(value);
273
+ }
274
+ /** @ignore */
275
+ registerOnChange(fn) {
276
+ this._cvaOnChange = fn;
277
+ }
278
+ /** @ignore */
279
+ registerOnTouched(fn) {
280
+ this._cvaOnTouched = fn;
281
+ }
282
+ /** @ignore */
283
+ setDisabledState(isDisabled) {
284
+ this.disabled = isDisabled;
285
+ this._changeDetector.markForCheck();
286
+ this.stateChanges.next();
287
+ }
288
+ /* Internals */
289
+ _onFocus() {
290
+ if (!this.disabled) {
291
+ this._focused = true;
292
+ this.stateChanges.next();
293
+ }
294
+ }
295
+ /**
296
+ * Calls the CVA touched callback only if the dropdown is closed.
297
+ */
298
+ _onBlur() {
299
+ this._focused = false;
300
+ if (!this.disabled && !this.dropdownOpen) {
301
+ this._cvaOnTouched();
302
+ this._changeDetector.markForCheck();
303
+ this.stateChanges.next();
304
+ }
305
+ }
306
+ _initializeSelection() {
307
+ // We defer this work into a promise in order to avoid tripping Angular's
308
+ // "Expression has changed after it was checked" error.
309
+ Promise.resolve().then(() => {
310
+ if (this.ngControl) {
311
+ this._value = this.ngControl.value;
312
+ }
313
+ this._setSelectionByValue(this._value);
314
+ this.stateChanges.next();
315
+ });
316
+ }
317
+ _setSelectionByValue(value) {
318
+ this._selectionModel.clear();
319
+ if (this.multiple && value) {
320
+ if (!Array.isArray(value)) {
321
+ throw getImpdcSelectNonArrayValueError();
322
+ }
323
+ value.forEach(currentValue => this._selectOptionByValue(currentValue));
324
+ this._sortValues();
325
+ }
326
+ else {
327
+ this._selectOptionByValue(value);
328
+ }
329
+ this._changeDetector.detectChanges();
330
+ }
331
+ _selectOptionByValue(value) {
332
+ const correspondingOption = this.options.find((option) => {
333
+ if (this._selectionModel.isSelected(option)) {
334
+ return false;
335
+ }
336
+ try {
337
+ return option.value != null && this._compareWith(option.value, value);
338
+ }
339
+ catch (error) {
340
+ console.warn(error);
341
+ return false;
342
+ }
343
+ });
344
+ if (correspondingOption) {
345
+ this._selectionModel.select(correspondingOption);
346
+ }
347
+ return correspondingOption;
348
+ }
349
+ /** Assigns a value to the select control. Returns a boolean indicating whether or not
350
+ * the value has changed.
351
+ */
352
+ _assignValue(newValue) {
353
+ if (newValue !== this._value ||
354
+ (this._multiple && Array.isArray(newValue))) {
355
+ if (this.options) {
356
+ this._setSelectionByValue(newValue);
357
+ }
358
+ this._value = newValue;
359
+ return true;
360
+ }
361
+ return false;
362
+ }
363
+ _resetOptions() {
364
+ const changedOrDestroyed = merge(this.options.changes, this._ngDestroy);
365
+ this.optionSelectionChanges
366
+ .pipe(takeUntil(changedOrDestroyed))
367
+ .subscribe(event => {
368
+ this._onSelect(event.source, event.isUserInput);
369
+ if (event.isUserInput && !this.multiple && this.dropdownOpen) {
370
+ this._ngbDropdown.close();
371
+ this.focus();
372
+ }
373
+ });
374
+ merge(...this.options.map(option => option.stateChanges))
375
+ .pipe(takeUntil(changedOrDestroyed))
376
+ .subscribe(() => {
377
+ this._changeDetector.detectChanges();
378
+ this.stateChanges.next();
379
+ });
380
+ }
381
+ _onSelect(option, isUserInput) {
382
+ const wasSelected = this._selectionModel.isSelected(option);
383
+ if (option.value == null && !this._multiple) {
384
+ option.deselect();
385
+ this._selectionModel.clear();
386
+ if (this.value != null) {
387
+ this._propagateChanges(option.value);
388
+ }
389
+ }
390
+ else {
391
+ if (wasSelected !== option.selected) {
392
+ option.selected
393
+ ? this._selectionModel.select(option)
394
+ : this._selectionModel.deselect(option);
395
+ }
396
+ if (this.multiple) {
397
+ this._sortValues();
398
+ if (isUserInput) {
399
+ this.focus();
400
+ }
401
+ }
402
+ }
403
+ if (wasSelected !== this._selectionModel.isSelected(option)) {
404
+ this._propagateChanges();
405
+ }
406
+ this._changeDetector.markForCheck();
407
+ this.stateChanges.next();
408
+ }
409
+ _sortValues() {
410
+ if (this.multiple) {
411
+ const options = this.options.toArray();
412
+ this._selectionModel.sort((a, b) => {
413
+ return options.indexOf(a) - options.indexOf(b);
414
+ });
415
+ this.stateChanges.next();
416
+ }
417
+ }
418
+ _propagateChanges(fallbackValue) {
419
+ let valToEmit = null;
420
+ if (this.multiple) {
421
+ valToEmit = this.selected.map(option => option.value);
422
+ }
423
+ else {
424
+ valToEmit = this.selected
425
+ ? this.selected.value
426
+ : fallbackValue;
427
+ }
428
+ this._value = valToEmit;
429
+ this.valueChange.emit(valToEmit);
430
+ this._cvaOnChange(valToEmit);
431
+ this.selectionChange.emit(this._buildChangeEvent(valToEmit));
432
+ }
433
+ _buildChangeEvent(value) {
434
+ return new SelectChangeEvent(this, value);
435
+ }
436
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: 'tabindex', attribute: true }, { token: i1.ErrorStateMatcher }, { token: IMPDC_FORM_ROOT, optional: true }, { token: i2.NgForm, optional: true }, { token: i2.FormGroupDirective, optional: true }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component }); }
437
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: SelectComponent, selector: "impdc-select", inputs: { disabled: "disabled", tabIndex: "tabIndex", placeholder: "placeholder", required: "required", multiple: "multiple", compareWith: "compareWith", errorStateMatcher: "errorStateMatcher", value: "value", id: "id" }, outputs: { selectionChange: "selectionChange", valueChange: "valueChange" }, host: { listeners: { "focus": "_onFocus(); focus()" }, properties: { "attr.id": "id", "attr.tabindex": "tabIndex", "attr.aria-required": "required.toString()", "attr.aria-disabled": "disabled.toString()", "attr.aria-invalid": "errorState", "class.form-select": "true", "class.is-invalid": "errorState", "class.impdc-form-field-control": "true", "class.impdc-select--required": "required", "class.impdc-select--disabled": "disabled", "class.impdc-select--invalid": "errorState", "class.impdc-select--empty": "empty", "class.impdc-select--multiple": "multiple" } }, providers: [
438
+ {
439
+ provide: ImpdcFormFieldControl,
440
+ useExisting: SelectComponent
441
+ },
442
+ {
443
+ provide: IMPDC_SELECT_OPTION_PARENT_COMPONENT,
444
+ useExisting: SelectComponent
445
+ }
446
+ ], queries: [{ propertyName: "options", predicate: SelectOptionComponent, descendants: true }], viewQueries: [{ propertyName: "_ngbDropdown", first: true, predicate: NgbDropdown, descendants: true }, { propertyName: "_ngbDropdownMenu", first: true, predicate: NgbDropdownMenu, descendants: true }, { propertyName: "_toggleButtonRef", first: true, predicate: ["toggleButton"], descendants: true, read: ElementRef, static: true }], exportAs: ["impdcSelect"], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\n ngbDropdown\n [autoClose]=\"multiple ? 'outside' : true\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n (openChange)=\"_handleOpenChange($event)\"\n class=\"w-100\">\n <button\n #toggleButton\n class=\"impdc-select--toggle btn border-0 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n (focus)=\"_onFocus()\"\n (blur)=\"_onBlur()\"\n ngbDropdownToggle>\n <ng-container [ngSwitch]=\"empty\">\n <span\n class=\"impdc-select--text impdc-select--placeholder\"\n *ngSwitchCase=\"true\"\n >{{ placeholder }}</span\n >\n <span\n class=\"impdc-select--text impdc-select--value-text\"\n *ngSwitchCase=\"false\"\n >{{ displayedValue }}</span\n >\n </ng-container>\n </button>\n <div\n ngbDropdownMenu\n class=\"w-100 bg-white text-gray-600\"\n role=\"listbox\"\n tabindex=\"-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{padding:0!important;position:relative}:host.impdc-select--disabled{background-color:var(--impd-color-gray-100)}.impdc-select--toggle{font-weight:inherit;padding-right:3.6rem;cursor:pointer;-webkit-user-select:none;user-select:none;width:100%}:host-context(.is-invalid) .impdc-select--toggle{padding-right:6.6rem}.impdc-select--toggle:disabled{cursor:default}.impdc-select--text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}button[ngbDropdownToggle].dropdown-toggle:after{display:none}\n"], dependencies: [{ kind: "directive", type: i3.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i3.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i4.NgbDropdown, selector: "[ngbDropdown]", inputs: ["autoClose", "dropdownClass", "open", "placement", "popperOptions", "container", "display"], outputs: ["openChange"], exportAs: ["ngbDropdown"] }, { kind: "directive", type: i4.NgbDropdownToggle, selector: "[ngbDropdownToggle]" }, { kind: "directive", type: i4.NgbDropdownMenu, selector: "[ngbDropdownMenu]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
447
+ }
448
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectComponent, decorators: [{
449
+ type: Component,
450
+ args: [{ selector: 'impdc-select', exportAs: 'impdcSelect', inputs: ['disabled', 'tabIndex'], changeDetection: ChangeDetectionStrategy.OnPush, host: {
451
+ '[attr.id]': 'id',
452
+ '[attr.tabindex]': 'tabIndex',
453
+ '[attr.aria-required]': 'required.toString()',
454
+ '[attr.aria-disabled]': 'disabled.toString()',
455
+ '[attr.aria-invalid]': 'errorState',
456
+ '[class.form-select]': 'true',
457
+ '[class.is-invalid]': 'errorState',
458
+ '[class.impdc-form-field-control]': 'true',
459
+ '[class.impdc-select--required]': 'required',
460
+ '[class.impdc-select--disabled]': 'disabled',
461
+ '[class.impdc-select--invalid]': 'errorState',
462
+ '[class.impdc-select--empty]': 'empty',
463
+ '[class.impdc-select--multiple]': 'multiple',
464
+ '(focus)': '_onFocus(); focus()'
465
+ }, providers: [
466
+ {
467
+ provide: ImpdcFormFieldControl,
468
+ useExisting: SelectComponent
469
+ },
470
+ {
471
+ provide: IMPDC_SELECT_OPTION_PARENT_COMPONENT,
472
+ useExisting: SelectComponent
473
+ }
474
+ ], template: "<div\n ngbDropdown\n [autoClose]=\"multiple ? 'outside' : true\"\n container=\"body\"\n dropdownClass=\"impartner-hex\"\n (openChange)=\"_handleOpenChange($event)\"\n class=\"w-100\">\n <button\n #toggleButton\n class=\"impdc-select--toggle btn border-0 text-start\"\n type=\"button\"\n role=\"combobox\"\n [disabled]=\"disabled\"\n (focus)=\"_onFocus()\"\n (blur)=\"_onBlur()\"\n ngbDropdownToggle>\n <ng-container [ngSwitch]=\"empty\">\n <span\n class=\"impdc-select--text impdc-select--placeholder\"\n *ngSwitchCase=\"true\"\n >{{ placeholder }}</span\n >\n <span\n class=\"impdc-select--text impdc-select--value-text\"\n *ngSwitchCase=\"false\"\n >{{ displayedValue }}</span\n >\n </ng-container>\n </button>\n <div\n ngbDropdownMenu\n class=\"w-100 bg-white text-gray-600\"\n role=\"listbox\"\n tabindex=\"-1\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [":host{padding:0!important;position:relative}:host.impdc-select--disabled{background-color:var(--impd-color-gray-100)}.impdc-select--toggle{font-weight:inherit;padding-right:3.6rem;cursor:pointer;-webkit-user-select:none;user-select:none;width:100%}:host-context(.is-invalid) .impdc-select--toggle{padding-right:6.6rem}.impdc-select--toggle:disabled{cursor:default}.impdc-select--text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%}button[ngbDropdownToggle].dropdown-toggle:after{display:none}\n"] }]
475
+ }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
476
+ type: Attribute,
477
+ args: ['tabindex']
478
+ }] }, { type: i1.ErrorStateMatcher }, { type: undefined, decorators: [{
479
+ type: Optional
480
+ }, {
481
+ type: Inject,
482
+ args: [IMPDC_FORM_ROOT]
483
+ }] }, { type: i2.NgForm, decorators: [{
484
+ type: Optional
485
+ }] }, { type: i2.FormGroupDirective, decorators: [{
486
+ type: Optional
487
+ }] }, { type: i2.NgControl, decorators: [{
488
+ type: Self
489
+ }, {
490
+ type: Optional
491
+ }] }], propDecorators: { options: [{
492
+ type: ContentChildren,
493
+ args: [SelectOptionComponent, { descendants: true }]
494
+ }], _ngbDropdown: [{
495
+ type: ViewChild,
496
+ args: [NgbDropdown]
497
+ }], _ngbDropdownMenu: [{
498
+ type: ViewChild,
499
+ args: [NgbDropdownMenu]
500
+ }], _toggleButtonRef: [{
501
+ type: ViewChild,
502
+ args: ['toggleButton', { static: true, read: ElementRef }]
503
+ }], placeholder: [{
504
+ type: Input
505
+ }], required: [{
506
+ type: Input
507
+ }], multiple: [{
508
+ type: Input
509
+ }], compareWith: [{
510
+ type: Input
511
+ }], errorStateMatcher: [{
512
+ type: Input
513
+ }], selectionChange: [{
514
+ type: Output
515
+ }], valueChange: [{
516
+ type: Output
517
+ }], value: [{
518
+ type: Input
519
+ }], id: [{
520
+ type: Input
521
+ }] } });
522
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLDZEQUE2RDtBQUM3RCxPQUFPLEVBR0wsU0FBUyxFQUNULHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsZUFBZSxFQUVmLFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFLTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLElBQUksRUFFSixTQUFTLEVBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQU1MLFVBQVUsRUFDWCxNQUFNLGdCQUFnQixDQUFDO0FBQ3hCLE9BQU8sRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDMUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBRUwsMEJBQTBCLEVBQzNCLE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBRUwsU0FBUyxFQUNULE9BQU8sRUFDUCxTQUFTLEVBQ1QsSUFBSSxFQUNKLFNBQVMsRUFDVixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFBaUIsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEUsT0FBTyxFQUtMLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsZUFBZSxFQUNmLGFBQWEsRUFDZCxNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUUsb0NBQW9D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VTt3QkFDNUMsU0FBUyxFQUFFLHFCQUFxQjtxQkFDakMsYUFDVTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUscUJBQXFCOzRCQUM5QixXQUFXLGlCQUFpQjt5QkFDN0I7d0JBQ0Q7NEJBQ0UsT0FBTyxFQUFFLG9DQUFvQzs0QkFDN0MsV0FBVyxpQkFBaUI7eUJBQzdCO3FCQUNGOzswQkEySkUsU0FBUzsyQkFBQyxVQUFVOzswQkFFcEIsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxlQUFlOzswQkFDbEMsUUFBUTs7MEJBQ1IsUUFBUTs7MEJBQ1IsSUFBSTs7MEJBQUksUUFBUTt5Q0E1SVosT0FBTztzQkFEYixlQUFlO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkFJbkQsWUFBWTtzQkFEckIsU0FBUzt1QkFBQyxXQUFXO2dCQUlaLGdCQUFnQjtzQkFEekIsU0FBUzt1QkFBQyxlQUFlO2dCQUloQixnQkFBZ0I7c0JBRHpCLFNBQVM7dUJBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQXNDbEQsV0FBVztzQkFEckIsS0FBSztnQkFlSyxRQUFRO3NCQURsQixLQUFLO2dCQWtCSyxRQUFRO3NCQURsQixLQUFLO2dCQW9CSyxXQUFXO3NCQURyQixLQUFLO2dCQWtCVSxpQkFBaUI7c0JBRGhDLEtBQUs7Z0JBS1UsZUFBZTtzQkFEOUIsTUFBTTtnQkFVUyxXQUFXO3NCQUQxQixNQUFNO2dCQW1KSSxLQUFLO3NCQURmLEtBQUs7Z0JBY0ssRUFBRTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L25vLWNvbmZsaWN0aW5nLWxpZmVjeWNsZSAqL1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQXR0cmlidXRlLFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBEb0NoZWNrLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIEluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIE91dHB1dCxcbiAgUXVlcnlMaXN0LFxuICBTZWxmLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBBYnN0cmFjdENvbnRyb2wsXG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gIE5nQ29udHJvbCxcbiAgTmdGb3JtLFxuICBWYWxpZGF0b3JzXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duLCBOZ2JEcm9wZG93bk1lbnUgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHtcbiAgQm9vbGVhbklucHV0LFxuICBjb2VyY2VCb29sZWFuUHJvcGVydHlWYWx1ZVxufSBmcm9tICcuLi8uLi8uLi8uLi91dGlsaXRpZXMnO1xuaW1wb3J0IHtcbiAgZGVmZXIsXG4gIG1lcmdlLFxuICBPYnNlcnZhYmxlLFxuICBzdGFydFdpdGgsXG4gIFN1YmplY3QsXG4gIHN3aXRjaE1hcCxcbiAgdGFrZSxcbiAgdGFrZVVudGlsXG59IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRXJyb3JTdGF0ZU1hdGNoZXIgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBJbXBkY0Zvcm1Sb290LCBJTVBEQ19GT1JNX1JPT1QgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzJztcbmltcG9ydCB7XG4gIENhbkRpc2FibGUsXG4gIEhhc1RhYkluZGV4LFxuICBJQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcbiAgSUhhc0Vycm9yU3RhdGUsXG4gIEltcGRjRm9ybUZpZWxkQ29udHJvbCxcbiAgbWl4aW5EaXNhYmxlZCxcbiAgbWl4aW5FcnJvclN0YXRlLFxuICBtaXhpblRhYkluZGV4XG59IGZyb20gJy4uLy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBJTVBEQ19TRUxFQ1RfT1BUSU9OX1BBUkVOVF9DT01QT05FTlQgfSBmcm9tICcuL29wdGlvbi1wYXJlbnQnO1xuaW1wb3J0IHtcbiAgU2VsZWN0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlRXZlbnQsXG4gIFNlbGVjdE9wdGlvbkNvbXBvbmVudFxufSBmcm9tICcuL29wdGlvbi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3RNb2RlbCB9IGZyb20gJy4vc2VsZWN0LW1vZGVsJztcblxuZXhwb3J0IGNsYXNzIFNlbGVjdENoYW5nZUV2ZW50IHtcbiAgY29uc3RydWN0b3IoXG4gICAgLyoqIFRoZSBzcGVjaWZpYyBTZWxlY3RDb21wb25lbnQgdGhhdCBjaGFuZ2VkLiAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzb3VyY2U6IFNlbGVjdENvbXBvbmVudCxcbiAgICAvKiogVGhlIHNlbGVjdGVkIHZhbHVlKHMpICovXG4gICAgcHVibGljIHJlYWRvbmx5IHZhbHVlOiBhbnlcbiAgKSB7fVxufVxuXG4vKipcbiAqIFJldHVybnMgYW4gZXhjZXB0aW9uIHRvIGJlIHRocm93biB3aGVuIGF0dGVtcHRpbmcgdG8gYXNzaWduIGEgbm9uLWFycmF5IHZhbHVlIHRvIGEgc2VsZWN0XG4gKiBpbiBgbXVsdGlwbGVgIG1vZGUuIE5vdGUgdGhhdCBgdW5kZWZpbmVkYCBhbmQgYG51bGxgIGFyZSBzdGlsbCB2YWxpZCB2YWx1ZXMgdG8gYWxsb3cgZm9yXG4gKiByZXNldHRpbmcgdGhlIHZhbHVlLlxuICogQGlnbm9yZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW1wZGNTZWxlY3ROb25BcnJheVZhbHVlRXJyb3IoKTogRXJyb3Ige1xuICByZXR1cm4gRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYW4gYXJyYXkgaW4gbXVsdGlwbGUtc2VsZWN0aW9uIG1vZGUuJyk7XG59XG5cbi8qKlxuICogUmV0dXJucyBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3duIHdoZW4gYXNzaWduaW5nIGEgbm9uLWZ1bmN0aW9uIHZhbHVlIHRvIHRoZSBjb21wYXJhdG9yXG4gKiB1c2VkIHRvIGRldGVybWluZSBpZiBhIHZhbHVlIGNvcnJlc3BvbmRzIHRvIGFuIG9wdGlvbi4gTm90ZSB0aGF0IHdoZXRoZXIgdGhlIGZ1bmN0aW9uXG4gKiBhY3R1YWxseSB0YWtlcyB0d28gdmFsdWVzIGFuZCByZXR1cm5zIGEgYm9vbGVhbiBpcyBub3QgY2hlY2tlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltcGRjU2VsZWN0Tm9uRnVuY3Rpb25WYWx1ZUVycm9yKCk6IEVycm9yIHtcbiAgcmV0dXJuIEVycm9yKCdgY29tcGFyZVdpdGhgIG11c3QgYmUgYSBmdW5jdGlvbi4nKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGFuIGV4Y2VwdGlvbiB0byBiZSB0aHJvd24gd2hlbiBhdHRlbXB0aW5nIHRvIGNoYW5nZSBhIHNlbGVjdCdzIGBtdWx0aXBsZWAgb3B0aW9uXG4gKiBhZnRlciBpbml0aWFsaXphdGlvbi5cbiAqIEBpZ25vcmVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEltcGRjU2VsZWN0RHluYW1pY011bHRpcGxlRXJyb3IoKTogRXJyb3Ige1xuICByZXR1cm4gRXJyb3IoJ0Nhbm5vdCBjaGFuZ2UgYG11bHRpcGxlYCBtb2RlIG9mIHNlbGVjdCBhZnRlciBpbml0aWFsaXphdGlvbi4nKTtcbn1cblxuY29uc3QgX1NlbGVjdENvbXBvbmVudEJhc2UgPSBtaXhpblRhYkluZGV4KFxuICBtaXhpbkRpc2FibGVkKFxuICAgIG1peGluRXJyb3JTdGF0ZShcbiAgICAgIGNsYXNzIHtcbiAgICAgICAgcHVibGljIHJlYWRvbmx5IHN0YXRlQ2hhbmdlcyA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAgICAgY29uc3RydWN0b3IoXG4gICAgICAgICAgcHVibGljIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgICAgICAgIHB1YmxpYyBfZm9ybVJvb3Q6IEltcGRjRm9ybVJvb3QsXG4gICAgICAgICAgcHVibGljIF9wYXJlbnRGb3JtOiBOZ0Zvcm0sXG4gICAgICAgICAgcHVibGljIF9wYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcbiAgICAgICAgICBwdWJsaWMgbmdDb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsXG4gICAgICAgICkge31cbiAgICAgIH1cbiAgICApXG4gIClcbik7XG5cbi8qKlxuICogVGhlIGBTZWxlY3RDb21wb25lbnRgIChgPGltcGRjLXNlbGVjdGApIGlzIGEgc2VsZWN0LXN0eWxlIGRyb3Bkb3duIGlucHV0IHdoZXJlIGFuIGl0ZW0gKG9yIG11bHRpcGxlIGl0ZW1zKSBjYW4gYmUgcGlja2VkXG4gKiBmcm9tIGEgbGlzdCBvZiBhdmFpbGFibGUgb3B0aW9ucy4gVGhpcyBjb21wb25lbnQgY2FuIGJlIHVzZWQgd2l0aGluIGEgYEZvcm1GaWVsZENvbXBvbmVudGAgKGA8aW1wZGMtZm9ybS1maWVsZGApLlxuICogVG8gdXNlLCBpbXBvcnQgYFNlbGVjdE1vZHVsZWAgb3IgYW5vdGhlciBtb2R1bGUgdGhhdCBpbXBvcnRzIGFuZCBleHBvcnRzIHRoYXQgbW9kdWxlIGZyb20gYEBpbXBhcnRuZXIvZGVzaWduLWNvbXBvbmVudHNgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbXBkYy1zZWxlY3QnLFxuICBleHBvcnRBczogJ2ltcGRjU2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0cy1tZXRhZGF0YS1wcm9wZXJ0eVxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAndGFiSW5kZXgnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taG9zdC1tZXRhZGF0YS1wcm9wZXJ0eVxuICBob3N0OiB7XG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgJ1thdHRyLnRhYmluZGV4XSc6ICd0YWJJbmRleCcsXG4gICAgJ1thdHRyLmFyaWEtcmVxdWlyZWRdJzogJ3JlcXVpcmVkLnRvU3RyaW5nKCknLFxuICAgICdbYXR0ci5hcmlhLWRpc2FibGVkXSc6ICdkaXNhYmxlZC50b1N0cmluZygpJyxcbiAgICAnW2F0dHIuYXJpYS1pbnZhbGlkXSc6ICdlcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLmZvcm0tc2VsZWN0XSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmlzLWludmFsaWRdJzogJ2Vycm9yU3RhdGUnLFxuICAgICdbY2xhc3MuaW1wZGMtZm9ybS1maWVsZC1jb250cm9sXSc6ICd0cnVlJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0tcmVxdWlyZWRdJzogJ3JlcXVpcmVkJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0tZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC0taW52YWxpZF0nOiAnZXJyb3JTdGF0ZScsXG4gICAgJ1tjbGFzcy5pbXBkYy1zZWxlY3QtLWVtcHR5XSc6ICdlbXB0eScsXG4gICAgJ1tjbGFzcy5pbXBkYy1zZWxlY3QtLW11bHRpcGxlXSc6ICdtdWx0aXBsZScsXG4gICAgJyhmb2N1cyknOiAnX29uRm9jdXMoKTsgZm9jdXMoKSdcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogSW1wZGNGb3JtRmllbGRDb250cm9sLFxuICAgICAgdXNlRXhpc3Rpbmc6IFNlbGVjdENvbXBvbmVudFxuICAgIH0sXG4gICAge1xuICAgICAgcHJvdmlkZTogSU1QRENfU0VMRUNUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5ULFxuICAgICAgdXNlRXhpc3Rpbmc6IFNlbGVjdENvbXBvbmVudFxuICAgIH1cbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RDb21wb25lbnRcbiAgZXh0ZW5kcyBfU2VsZWN0Q29tcG9uZW50QmFzZVxuICBpbXBsZW1lbnRzXG4gICAgT25Jbml0LFxuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBPbkNoYW5nZXMsXG4gICAgRG9DaGVjayxcbiAgICBPbkRlc3Ryb3ksXG4gICAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gICAgSGFzVGFiSW5kZXgsXG4gICAgSW1wZGNGb3JtRmllbGRDb250cm9sPGFueT4sXG4gICAgQ2FuRGlzYWJsZSxcbiAgICBJQ2FuVXBkYXRlRXJyb3JTdGF0ZSxcbiAgICBJSGFzRXJyb3JTdGF0ZVxue1xuICAvKiogQGlnbm9yZSAqL1xuICBAQ29udGVudENoaWxkcmVuKFNlbGVjdE9wdGlvbkNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwdWJsaWMgb3B0aW9ucyE6IFF1ZXJ5TGlzdDxTZWxlY3RPcHRpb25Db21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoTmdiRHJvcGRvd24pXG4gIHByb3RlY3RlZCBfbmdiRHJvcGRvd24hOiBOZ2JEcm9wZG93bjtcblxuICBAVmlld0NoaWxkKE5nYkRyb3Bkb3duTWVudSlcbiAgcHJvdGVjdGVkIF9uZ2JEcm9wZG93bk1lbnUhOiBOZ2JEcm9wZG93bk1lbnU7XG5cbiAgQFZpZXdDaGlsZCgndG9nZ2xlQnV0dG9uJywgeyBzdGF0aWM6IHRydWUsIHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgcHJvdGVjdGVkIF90b2dnbGVCdXR0b25SZWYhOiBFbGVtZW50UmVmPEhUTUxCdXR0b25FbGVtZW50PjtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uU2VsZWN0aW9uQ2hhbmdlczogT2JzZXJ2YWJsZTxTZWxlY3RPcHRpb25TZWxlY3Rpb25DaGFuZ2VFdmVudD4gPVxuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7XG5cbiAgICAgIGlmIChvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBvcHRpb25zLmNoYW5nZXMucGlwZShcbiAgICAgICAgICBzdGFydFdpdGgob3B0aW9ucyksXG4gICAgICAgICAgc3dpdGNoTWFwKCgpID0+XG4gICAgICAgICAgICBtZXJnZSguLi5vcHRpb25zLm1hcChvcHRpb24gPT4gb3B0aW9uLm9uU2VsZWN0aW9uQ2hhbmdlKSlcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9uZ1pvbmUub25TdGFibGUucGlwZShcbiAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgc3dpdGNoTWFwKCgpID0+IHRoaXMub3B0aW9uU2VsZWN0aW9uQ2hhbmdlcylcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF91aWQgPSBgaW1wZGMtc2VsZWN0LSR7bmFub2lkKCl9YDtcbiAgcHJvdGVjdGVkIF9zZWxlY3Rpb25Nb2RlbCE6IFNlbGVjdE1vZGVsPFNlbGVjdE9wdGlvbkNvbXBvbmVudD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbmdEZXN0cm95ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfcHJldmlvdXNDb250cm9sPzogQWJzdHJhY3RDb250cm9sIHwgbnVsbDtcbiAgcHJpdmF0ZSBfY29tcGFyZVdpdGggPSAobzE6IGFueSwgbzI6IGFueSkgPT4gbzEgPT09IG8yO1xuICBwcml2YXRlIF9jdmFPbkNoYW5nZTogKHZhbHVlOiBhbnkpID0+IHZvaWQgPSAoKSA9PiB7fTtcbiAgcHJpdmF0ZSBfY3ZhT25Ub3VjaGVkID0gKCkgPT4ge307XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFjZWhvbGRlciB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgd2hlbiBubyBzZWxlY3Rpb24gaGFzIGJlZW4gbWFkZS5cbiAgICpcbiAgICogQGRlZmF1bHQgXFwtIFNlbGVjdCAtXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHBsYWNlaG9sZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyO1xuICB9XG4gIHB1YmxpYyBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3BsYWNlaG9sZGVyID0gdmFsdWU7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG4gIHByaXZhdGUgX3BsYWNlaG9sZGVyID0gJy0gU2VsZWN0IC0nO1xuXG4gIC8qKlxuICAgKiBVc2VkIHRvIHNldCByZXF1aXJlZG5lc3Mgb2YgY29udHJvbCBpbiBhIHRlbXBsYXRlLWJhc2VkIG1hbm5lcjtcbiAgICogbm90IG5lY2Vzc2FyeSB3aGVuIHVzaW5nIHRoZSBBbmd1bGFyIHJlYWN0aXZlIGZvcm1zIEFQSSBhbmQgYHJlcXVpcmVkYCB2YWxpZGF0b3IuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLl9yZXF1aXJlZCA/P1xuICAgICAgdGhpcy5uZ0NvbnRyb2w/LmNvbnRyb2w/Lmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKSA/P1xuICAgICAgZmFsc2VcbiAgICApO1xuICB9XG4gIHB1YmxpYyBzZXQgcmVxdWlyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX3JlcXVpcmVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbiB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogU2V0cyB3aGV0aGVyIHRoZSBjb250cm9sIGlzIGEgc2luZ2xlLXNlbGVjdCBvciBtdWx0aXBsZS1zZWxlY3QuIENhbm5vdCBiZSBjaGFuZ2VkIGFmdGVyIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbi5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICB9XG4gIHB1YmxpYyBzZXQgbXVsdGlwbGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgdGhyb3cgZ2V0SW1wZGNTZWxlY3REeW5hbWljTXVsdGlwbGVFcnJvcigpO1xuICAgIH1cblxuICAgIHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWUodmFsdWUpO1xuICB9XG4gIHByb3RlY3RlZCBfbXVsdGlwbGUgPSBmYWxzZTtcblxuICAvKipcbiAgICogRnVuY3Rpb24gdXNlZCB0byBjb21wYXJlIG9wdGlvbiB2YWx1ZXMgd2l0aCBzZWxlY3RlZCB2YWx1ZXMuIFRoZSBmaXJzdCBhcmcgaXMgYVxuICAgKiB2YWx1ZSBmcm9tIGFuIG9wdGlvbiwgYW5kIHRoZSBzZWNvbmQgYXJnIGlzIGEgdmFsdWUgZnJvbSB0aGUgc2VsZWN0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBCb29sZWFuIGluZGljYXRpbmcgaWYgdGhlIHZhbHVlcyBhcmUgZXF1aXZhbGVudC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBnZXQgY29tcGFyZVdpdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRoO1xuICB9XG4gIHB1YmxpYyBzZXQgY29tcGFyZVdpdGgoZm46IChhOiBhbnksIGI6IGFueSkgPT4gYm9vbGVhbikge1xuICAgIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IGdldEltcGRjU2VsZWN0Tm9uRnVuY3Rpb25WYWx1ZUVycm9yKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY29tcGFyZVdpdGggPSBmbjtcblxuICAgIGlmICh0aGlzLl9zZWxlY3Rpb25Nb2RlbCkge1xuICAgICAgLy8gQ2hhbmdpbmcgdGhlIGNvbXBhcmF0b3IgZnVuY3Rpb24gbWVhbnMgdGhlIHZpc3VhbCBzZWxlY3Rpb24gbWF5IGhhdmUgY2hhbmdlZC5cbiAgICAgIHRoaXMuX2luaXRpYWxpemVTZWxlY3Rpb24oKTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZXJyb3JTdGF0ZU1hdGNoZXIhOiBFcnJvclN0YXRlTWF0Y2hlcjtcblxuICAvKiogRXZlbnRzIGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGJlZW4gY2hhbmdlZCBieSB0aGUgdXNlci4gKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxTZWxlY3RDaGFuZ2VFdmVudD4gPVxuICAgIG5ldyBFdmVudEVtaXR0ZXI8U2VsZWN0Q2hhbmdlRXZlbnQ+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50cyBmaXJlIHdoZW4gcmF3IHZhbHVlIG9mIHNlbGVjdCBjaGFuZ2VzLiBNYWlubHkgZXhpc3RzIHRvIGhhbmRsZVxuICAgKiB0d28td2F5IGJpbmRpbmcgb2YgYHZhbHVlYCBpbnB1dCBwcm9wZXJ0eS5cbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwdWJsaWMgZ2V0IGRyb3Bkb3duT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbmdiRHJvcGRvd24/LmlzT3BlbigpID8/IGZhbHNlO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBfY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByb3RlY3RlZCByZWFkb25seSBfbmdab25lOiBOZ1pvbmUsXG4gICAgQEF0dHJpYnV0ZSgndGFiaW5kZXgnKSB0YWJJbmRleDogc3RyaW5nLFxuICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXI6IEVycm9yU3RhdGVNYXRjaGVyLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSU1QRENfRk9STV9ST09UKSBfZm9ybVJvb3Q6IEltcGRjRm9ybVJvb3QsXG4gICAgQE9wdGlvbmFsKCkgX3BhcmVudEZvcm06IE5nRm9ybSxcbiAgICBAT3B0aW9uYWwoKSBfcGFyZW50Rm9ybUdyb3VwOiBGb3JtR3JvdXBEaXJlY3RpdmUsXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbFxuICApIHtcbiAgICBzdXBlcihcbiAgICAgIF9kZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsXG4gICAgICBfZm9ybVJvb3QsXG4gICAgICBfcGFyZW50Rm9ybSxcbiAgICAgIF9wYXJlbnRGb3JtR3JvdXAsXG4gICAgICBuZ0NvbnRyb2xcbiAgICApO1xuXG4gICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICB0aGlzLm5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICB0aGlzLmlkID0gdGhpcy5pZDtcbiAgICB0aGlzLnRhYkluZGV4ID0gcGFyc2VJbnQodGFiSW5kZXgpIHx8IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5fc2VsZWN0aW9uTW9kZWwgfHwgdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNFbXB0eSgpO1xuICB9XG5cbiAgcHVibGljIGdldCBkaXNwbGF5ZWRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLmVtcHR5KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9tdWx0aXBsZSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGVkWzBdLmxhYmVsO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3RlZC5tYXAob3B0ID0+IG9wdC5sYWJlbCkuam9pbignLCAnKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWQoKTogU2VsZWN0T3B0aW9uQ29tcG9uZW50IHwgU2VsZWN0T3B0aW9uQ29tcG9uZW50W10ge1xuICAgIHJldHVybiB0aGlzLm11bHRpcGxlXG4gICAgICA/IHRoaXMuX3NlbGVjdGlvbk1vZGVsPy5zZWxlY3RlZCB8fCBbXVxuICAgICAgOiB0aGlzLl9zZWxlY3Rpb25Nb2RlbD8uc2VsZWN0ZWRbMF07XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgZm9jdXMob3B0aW9ucz86IEZvY3VzT3B0aW9ucyk6IHZvaWQge1xuICAgIHRoaXMuX3RvZ2dsZUJ1dHRvblJlZi5uYXRpdmVFbGVtZW50LmZvY3VzKG9wdGlvbnMpO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9oYW5kbGVPcGVuQ2hhbmdlKGlzT3BlbjogYm9vbGVhbik6IHZvaWQge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHRoaXMuX29uRm9jdXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb25CbHVyKCk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyogQW5ndWxhciBsaWZlY3ljbGUgaG9va3MgKi9cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwgPSBuZXcgU2VsZWN0TW9kZWw8U2VsZWN0T3B0aW9uQ29tcG9uZW50PihcbiAgICAgIHRoaXMubXVsdGlwbGVcbiAgICApO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2hhbmdlZCRcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9uZ0Rlc3Ryb3kpKVxuICAgICAgLnN1YnNjcmliZShjaGFuZ2VFdmVudCA9PiB7XG4gICAgICAgIGNoYW5nZUV2ZW50LmFkZGVkLmZvckVhY2gob3B0aW9uID0+IG9wdGlvbi5zZWxlY3QoKSk7XG4gICAgICAgIGNoYW5nZUV2ZW50LnJlbW92ZWQuZm9yRWFjaChvcHRpb24gPT4gb3B0aW9uLmRlc2VsZWN0KCkpO1xuICAgICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbnMuY2hhbmdlc1xuICAgICAgLnBpcGUoc3RhcnRXaXRoKG51bGwpLCB0YWtlVW50aWwodGhpcy5fbmdEZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZXNldE9wdGlvbnMoKTtcbiAgICAgICAgdGhpcy5faW5pdGlhbGl6ZVNlbGVjdGlvbigpO1xuICAgICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX25nYkRyb3Bkb3duTWVudS5tZW51SXRlbXMgPSB0aGlzLm9wdGlvbnM7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdEb0NoZWNrKCk6IHZvaWQge1xuICAgIGNvbnN0IG5nQ29udHJvbCA9IHRoaXMubmdDb250cm9sO1xuXG4gICAgaWYgKCFuZ0NvbnRyb2wpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcHJldmlvdXNDb250cm9sICE9PSBuZ0NvbnRyb2wuY29udHJvbCkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLl9wcmV2aW91c0NvbnRyb2wgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICBuZ0NvbnRyb2wuZGlzYWJsZWQgIT09IG51bGwgJiZcbiAgICAgICAgbmdDb250cm9sLmRpc2FibGVkICE9PSB0aGlzLmRpc2FibGVkXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IG5nQ29udHJvbD8uZGlzYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3ByZXZpb3VzQ29udHJvbCA9IG5nQ29udHJvbC5jb250cm9sO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlRXJyb3JTdGF0ZSgpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAvLyBNYW5hZ2luZyBkaXNhYmxlZCBzdGF0ZSBpcyBoYW5kbGVkIHZpYSB0aGUgYG1peGluRGlzYWJsZWRgIG1peGluL2dlbmVyYXRvciwgYnV0IHdlIHN0aWxsIG5lZWQgdG8gc2lnbmFsXG4gICAgLy8gdG8gdGhlIHBhcmVudCBmb3JtIGZpZWxkIHNvIGl0IGNhbiBydW4gY2hhbmdlIGRldGVjdGlvbiB3aGVuIGRpc2FibGVkIHN0YXRlIGlzIGNoYW5nZWQuXG4gICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fbmdEZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLl9uZ0Rlc3Ryb3kuY29tcGxldGUoKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5jb21wbGV0ZSgpO1xuICB9XG5cbiAgLyogSW1wZGNGb3JtRmllbGRDb250cm9sICovXG4gIHB1YmxpYyByZWFkb25seSBjb250cm9sVHlwZTogc3RyaW5nID0gJ2ltcGRjLXNlbGVjdCc7XG5cbiAgcHVibGljIHJlYWRvbmx5IHN1cHBvcnRzQWZmaXhlczogYm9vbGVhbiA9IHRydWU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuICBwdWJsaWMgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBjb25zdCBoYXNBc3NpZ25lZCA9IHRoaXMuX2Fzc2lnblZhbHVlKHZhbHVlKTtcblxuICAgIGlmIChoYXNBc3NpZ25lZCkge1xuICAgICAgdGhpcy5fY3ZhT25DaGFuZ2UodmFsdWUpO1xuICAgIH1cbiAgfVxuICBwcm90ZWN0ZWQgX3ZhbHVlOiBhbnk7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9pZDtcbiAgfVxuICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pZCA9IHZhbHVlIHx8IHRoaXMuX3VpZDtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gIH1cbiAgcHJvdGVjdGVkIF9pZCE6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IGZvY3VzZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2ZvY3VzZWQgfHwgdGhpcy5kcm9wZG93bk9wZW47XG4gIH1cbiAgcHJvdGVjdGVkIF9mb2N1c2VkID0gZmFsc2U7XG5cbiAgLyogQ29udHJvbFZhbHVlQWNjZXNzb3IgKi9cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX2Fzc2lnblZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMuX2N2YU9uQ2hhbmdlID0gZm47XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHt9KTogdm9pZCB7XG4gICAgdGhpcy5fY3ZhT25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgLyogSW50ZXJuYWxzICovXG5cbiAgcHJvdGVjdGVkIF9vbkZvY3VzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fZm9jdXNlZCA9IHRydWU7XG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxzIHRoZSBDVkEgdG91Y2hlZCBjYWxsYmFjayBvbmx5IGlmIHRoZSBkcm9wZG93biBpcyBjbG9zZWQuXG4gICAqL1xuICBwcm90ZWN0ZWQgX29uQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQgJiYgIXRoaXMuZHJvcGRvd25PcGVuKSB7XG4gICAgICB0aGlzLl9jdmFPblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYWxpemVTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgLy8gV2UgZGVmZXIgdGhpcyB3b3JrIGludG8gYSBwcm9taXNlIGluIG9yZGVyIHRvIGF2b2lkIHRyaXBwaW5nIEFuZ3VsYXInc1xuICAgIC8vIFwiRXhwcmVzc2lvbiBoYXMgY2hhbmdlZCBhZnRlciBpdCB3YXMgY2hlY2tlZFwiIGVycm9yLlxuICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5uZ0NvbnRyb2wudmFsdWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3NldFNlbGVjdGlvbkJ5VmFsdWUodGhpcy5fdmFsdWUpO1xuICAgICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2V0U2VsZWN0aW9uQnlWYWx1ZSh2YWx1ZTogYW55IHwgYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuXG4gICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgdmFsdWUpIHtcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgZ2V0SW1wZGNTZWxlY3ROb25BcnJheVZhbHVlRXJyb3IoKTtcbiAgICAgIH1cblxuICAgICAgdmFsdWUuZm9yRWFjaChjdXJyZW50VmFsdWUgPT4gdGhpcy5fc2VsZWN0T3B0aW9uQnlWYWx1ZShjdXJyZW50VmFsdWUpKTtcbiAgICAgIHRoaXMuX3NvcnRWYWx1ZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fc2VsZWN0T3B0aW9uQnlWYWx1ZSh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc2VsZWN0T3B0aW9uQnlWYWx1ZSh2YWx1ZTogYW55KTogU2VsZWN0T3B0aW9uQ29tcG9uZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBjb3JyZXNwb25kaW5nT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoXG4gICAgICAob3B0aW9uOiBTZWxlY3RPcHRpb25Db21wb25lbnQpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQob3B0aW9uKSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi52YWx1ZSAhPSBudWxsICYmIHRoaXMuX2NvbXBhcmVXaXRoKG9wdGlvbi52YWx1ZSwgdmFsdWUpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybihlcnJvcik7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIGlmIChjb3JyZXNwb25kaW5nT3B0aW9uKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3QoY29ycmVzcG9uZGluZ09wdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvcnJlc3BvbmRpbmdPcHRpb247XG4gIH1cblxuICAvKiogQXNzaWducyBhIHZhbHVlIHRvIHRoZSBzZWxlY3QgY29udHJvbC4gUmV0dXJucyBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdFxuICAgKiB0aGUgdmFsdWUgaGFzIGNoYW5nZWQuXG4gICAqL1xuICBwcml2YXRlIF9hc3NpZ25WYWx1ZShuZXdWYWx1ZTogYW55IHwgYW55W10pOiBib29sZWFuIHtcbiAgICBpZiAoXG4gICAgICBuZXdWYWx1ZSAhPT0gdGhpcy5fdmFsdWUgfHxcbiAgICAgICh0aGlzLl9tdWx0aXBsZSAmJiBBcnJheS5pc0FycmF5KG5ld1ZhbHVlKSlcbiAgICApIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fc2V0U2VsZWN0aW9uQnlWYWx1ZShuZXdWYWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBwcml2YXRlIF9yZXNldE9wdGlvbnMoKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbmdlZE9yRGVzdHJveWVkID0gbWVyZ2UodGhpcy5vcHRpb25zLmNoYW5nZXMsIHRoaXMuX25nRGVzdHJveSk7XG5cbiAgICB0aGlzLm9wdGlvblNlbGVjdGlvbkNoYW5nZXNcbiAgICAgIC5waXBlKHRha2VVbnRpbChjaGFuZ2VkT3JEZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZShldmVudCA9PiB7XG4gICAgICAgIHRoaXMuX29uU2VsZWN0KGV2ZW50LnNvdXJjZSwgZXZlbnQuaXNVc2VySW5wdXQpO1xuXG4gICAgICAgIGlmIChldmVudC5pc1VzZXJJbnB1dCAmJiAhdGhpcy5tdWx0aXBsZSAmJiB0aGlzLmRyb3Bkb3duT3Blbikge1xuICAgICAgICAgIHRoaXMuX25nYkRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICAgICAgdGhpcy5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIG1lcmdlKC4uLnRoaXMub3B0aW9ucy5tYXAob3B0aW9uID0+IG9wdGlvbi5zdGF0ZUNoYW5nZXMpKVxuICAgICAgLnBpcGUodGFrZVVudGlsKGNoYW5nZWRPckRlc3Ryb3llZCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgX29uU2VsZWN0KG9wdGlvbjogU2VsZWN0T3B0aW9uQ29tcG9uZW50LCBpc1VzZXJJbnB1dDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IHdhc1NlbGVjdGVkID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pO1xuXG4gICAgaWYgKG9wdGlvbi52YWx1ZSA9PSBudWxsICYmICF0aGlzLl9tdWx0aXBsZSkge1xuICAgICAgb3B0aW9uLmRlc2VsZWN0KCk7XG4gICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhcigpO1xuXG4gICAgICBpZiAodGhpcy52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHRoaXMuX3Byb3BhZ2F0ZUNoYW5nZXMob3B0aW9uLnZhbHVlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHdhc1NlbGVjdGVkICE9PSBvcHRpb24uc2VsZWN0ZWQpIHtcbiAgICAgICAgb3B0aW9uLnNlbGVjdGVkXG4gICAgICAgICAgPyB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZWxlY3Qob3B0aW9uKVxuICAgICAgICAgIDogdGhpcy5fc2VsZWN0aW9uTW9kZWwuZGVzZWxlY3Qob3B0aW9uKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUpIHtcbiAgICAgICAgdGhpcy5fc29ydFZhbHVlcygpO1xuXG4gICAgICAgIGlmIChpc1VzZXJJbnB1dCkge1xuICAgICAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh3YXNTZWxlY3RlZCAhPT0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuaXNTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICB0aGlzLl9wcm9wYWdhdGVDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc29ydFZhbHVlcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHRoaXMub3B0aW9ucy50b0FycmF5KCk7XG5cbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuaW5kZXhPZihhKSAtIG9wdGlvbnMuaW5kZXhPZihiKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfcHJvcGFnYXRlQ2hhbmdlcyhmYWxsYmFja1ZhbHVlPzogYW55KTogdm9pZCB7XG4gICAgbGV0IHZhbFRvRW1pdDogYW55ID0gbnVsbDtcblxuICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICB2YWxUb0VtaXQgPSAodGhpcy5zZWxlY3RlZCBhcyBTZWxlY3RPcHRpb25Db21wb25lbnRbXSkubWFwKFxuICAgICAgICBvcHRpb24gPT4gb3B0aW9uLnZhbHVlXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YWxUb0VtaXQgPSB0aGlzLnNlbGVjdGVkXG4gICAgICAgID8gKHRoaXMuc2VsZWN0ZWQgYXMgU2VsZWN0T3B0aW9uQ29tcG9uZW50KS52YWx1ZVxuICAgICAgICA6IGZhbGxiYWNrVmFsdWU7XG4gICAgfVxuXG4gICAgdGhpcy5fdmFsdWUgPSB2YWxUb0VtaXQ7XG4gICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbFRvRW1pdCk7XG4gICAgdGhpcy5fY3ZhT25DaGFuZ2UodmFsVG9FbWl0KTtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHRoaXMuX2J1aWxkQ2hhbmdlRXZlbnQodmFsVG9FbWl0KSk7XG4gIH1cblxuICBwcml2YXRlIF9idWlsZENoYW5nZUV2ZW50KHZhbHVlOiBhbnkpOiBTZWxlY3RDaGFuZ2VFdmVudCB7XG4gICAgcmV0dXJuIG5ldyBTZWxlY3RDaGFuZ2VFdmVudCh0aGlzLCB2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXZcbiAgbmdiRHJvcGRvd25cbiAgW2F1dG9DbG9zZV09XCJtdWx0aXBsZSA/ICdvdXRzaWRlJyA6IHRydWVcIlxuICBjb250YWluZXI9XCJib2R5XCJcbiAgZHJvcGRvd25DbGFzcz1cImltcGFydG5lci1oZXhcIlxuICAob3BlbkNoYW5nZSk9XCJfaGFuZGxlT3BlbkNoYW5nZSgkZXZlbnQpXCJcbiAgY2xhc3M9XCJ3LTEwMFwiPlxuICA8YnV0dG9uXG4gICAgI3RvZ2dsZUJ1dHRvblxuICAgIGNsYXNzPVwiaW1wZGMtc2VsZWN0LS10b2dnbGUgYnRuIGJvcmRlci0wIHRleHQtc3RhcnRcIlxuICAgIHR5cGU9XCJidXR0b25cIlxuICAgIHJvbGU9XCJjb21ib2JveFwiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAoZm9jdXMpPVwiX29uRm9jdXMoKVwiXG4gICAgKGJsdXIpPVwiX29uQmx1cigpXCJcbiAgICBuZ2JEcm9wZG93blRvZ2dsZT5cbiAgICA8bmctY29udGFpbmVyIFtuZ1N3aXRjaF09XCJlbXB0eVwiPlxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3M9XCJpbXBkYy1zZWxlY3QtLXRleHQgaW1wZGMtc2VsZWN0LS1wbGFjZWhvbGRlclwiXG4gICAgICAgICpuZ1N3aXRjaENhc2U9XCJ0cnVlXCJcbiAgICAgICAgPnt7IHBsYWNlaG9sZGVyIH19PC9zcGFuXG4gICAgICA+XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzcz1cImltcGRjLXNlbGVjdC0tdGV4dCBpbXBkYy1zZWxlY3QtLXZhbHVlLXRleHRcIlxuICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiZmFsc2VcIlxuICAgICAgICA+e3sgZGlzcGxheWVkVmFsdWUgfX08L3NwYW5cbiAgICAgID5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9idXR0b24+XG4gIDxkaXZcbiAgICBuZ2JEcm9wZG93bk1lbnVcbiAgICBjbGFzcz1cInctMTAwIGJnLXdoaXRlIHRleHQtZ3JheS02MDBcIlxuICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICB0YWJpbmRleD1cIi0xXCI+XG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -6,15 +6,15 @@ import { SelectOptionComponent } from './option/select-option.component';
6
6
  import { SelectComponent } from './select.component';
7
7
  import * as i0 from "@angular/core";
8
8
  export class SelectModule {
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: SelectModule, declarations: [SelectOptionComponent, SelectComponent], imports: [CommonModule, NgbDropdownModule, IconModule], exports: [NgbDropdownModule,
11
+ IconModule,
12
+ SelectOptionComponent,
13
+ SelectComponent] }); }
14
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectModule, imports: [CommonModule, NgbDropdownModule, IconModule, NgbDropdownModule,
15
+ IconModule] }); }
9
16
  }
10
- SelectModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
11
- SelectModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, declarations: [SelectOptionComponent, SelectComponent], imports: [CommonModule, NgbDropdownModule, IconModule], exports: [NgbDropdownModule,
12
- IconModule,
13
- SelectOptionComponent,
14
- SelectComponent] });
15
- SelectModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, imports: [CommonModule, NgbDropdownModule, IconModule, NgbDropdownModule,
16
- IconModule] });
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: SelectModule, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectModule, decorators: [{
18
18
  type: NgModule,
19
19
  args: [{
20
20
  imports: [CommonModule, NgbDropdownModule, IconModule],
@@ -27,4 +27,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
27
27
  ]
28
28
  }]
29
29
  }] });
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFZckQsTUFBTSxPQUFPLFlBQVk7OzBHQUFaLFlBQVk7MkdBQVosWUFBWSxpQkFSUixxQkFBcUIsRUFBRSxlQUFlLGFBRDNDLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxVQUFVLGFBR25ELGlCQUFpQjtRQUNqQixVQUFVO1FBQ1YscUJBQXFCO1FBQ3JCLGVBQWU7MkdBR04sWUFBWSxZQVRiLFlBQVksRUFBRSxpQkFBaUIsRUFBRSxVQUFVLEVBR25ELGlCQUFpQjtRQUNqQixVQUFVOzRGQUtELFlBQVk7a0JBVnhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQztvQkFDdEQsWUFBWSxFQUFFLENBQUMscUJBQXFCLEVBQUUsZUFBZSxDQUFDO29CQUN0RCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLHFCQUFxQjt3QkFDckIsZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2ljb24nO1xuaW1wb3J0IHsgU2VsZWN0T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9vcHRpb24vc2VsZWN0LW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdiRHJvcGRvd25Nb2R1bGUsIEljb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtTZWxlY3RPcHRpb25Db21wb25lbnQsIFNlbGVjdENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFNlbGVjdE9wdGlvbkNvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RNb2R1bGUge31cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvc2VsZWN0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3pFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7QUFZckQsTUFBTSxPQUFPLFlBQVk7OEdBQVosWUFBWTsrR0FBWixZQUFZLGlCQVJSLHFCQUFxQixFQUFFLGVBQWUsYUFEM0MsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsYUFHbkQsaUJBQWlCO1lBQ2pCLFVBQVU7WUFDVixxQkFBcUI7WUFDckIsZUFBZTsrR0FHTixZQUFZLFlBVGIsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsRUFHbkQsaUJBQWlCO1lBQ2pCLFVBQVU7OzJGQUtELFlBQVk7a0JBVnhCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFVBQVUsQ0FBQztvQkFDdEQsWUFBWSxFQUFFLENBQUMscUJBQXFCLEVBQUUsZUFBZSxDQUFDO29CQUN0RCxPQUFPLEVBQUU7d0JBQ1AsaUJBQWlCO3dCQUNqQixVQUFVO3dCQUNWLHFCQUFxQjt3QkFDckIsZUFBZTtxQkFDaEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5nYkRyb3Bkb3duTW9kdWxlIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgSWNvbk1vZHVsZSB9IGZyb20gJy4uLy4uLy4uL2ljb24nO1xuaW1wb3J0IHsgU2VsZWN0T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9vcHRpb24vc2VsZWN0LW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmdiRHJvcGRvd25Nb2R1bGUsIEljb25Nb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtTZWxlY3RPcHRpb25Db21wb25lbnQsIFNlbGVjdENvbXBvbmVudF0sXG4gIGV4cG9ydHM6IFtcbiAgICBOZ2JEcm9wZG93bk1vZHVsZSxcbiAgICBJY29uTW9kdWxlLFxuICAgIFNlbGVjdE9wdGlvbkNvbXBvbmVudCxcbiAgICBTZWxlY3RDb21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RNb2R1bGUge31cbiJdfQ==