@eui/ecl 17.0.0-next.7 → 17.0.0-next.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (417) hide show
  1. package/assets/i18n-ecl/bg.json +1 -0
  2. package/assets/i18n-ecl/cs.json +1 -0
  3. package/assets/i18n-ecl/da.json +1 -0
  4. package/assets/i18n-ecl/de.json +1 -0
  5. package/assets/i18n-ecl/el.json +1 -0
  6. package/assets/i18n-ecl/en.json +1 -0
  7. package/assets/i18n-ecl/es.json +1 -0
  8. package/assets/i18n-ecl/et.json +1 -0
  9. package/assets/i18n-ecl/fi.json +1 -0
  10. package/assets/i18n-ecl/fr.json +1 -0
  11. package/assets/i18n-ecl/ga.json +1 -0
  12. package/assets/i18n-ecl/hr.json +1 -0
  13. package/assets/i18n-ecl/hu.json +1 -0
  14. package/assets/i18n-ecl/it.json +1 -0
  15. package/assets/i18n-ecl/lt.json +1 -0
  16. package/assets/i18n-ecl/lv.json +1 -0
  17. package/assets/i18n-ecl/mt.json +1 -0
  18. package/assets/i18n-ecl/nl.json +1 -0
  19. package/assets/i18n-ecl/pl.json +1 -0
  20. package/assets/i18n-ecl/pt.json +1 -0
  21. package/assets/i18n-ecl/ro.json +1 -0
  22. package/assets/i18n-ecl/sk.json +1 -0
  23. package/assets/i18n-ecl/sl.json +1 -0
  24. package/assets/i18n-ecl/sv.json +1 -0
  25. package/esm2022/lib/components/ecl-accordion/ecl-accordion-item.component.mjs +3 -3
  26. package/esm2022/lib/components/ecl-accordion/ecl-accordion.component.mjs +3 -3
  27. package/esm2022/lib/components/ecl-accordion/ecl-accordion.module.mjs +4 -4
  28. package/esm2022/lib/components/ecl-app/deprecated/common/ecl-app.component.mjs +6 -6
  29. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-core/ecl-app-core.component.mjs +6 -6
  30. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-core/ecl-app-core.module.mjs +4 -4
  31. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-harmonised/ecl-app-harmonised.component.mjs +6 -6
  32. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-harmonised/ecl-app-harmonised.module.mjs +4 -4
  33. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-standardised/ecl-app-standardised.component.mjs +6 -6
  34. package/esm2022/lib/components/ecl-app/deprecated/ecl-app-standardised/ecl-app-standardised.module.mjs +4 -4
  35. package/esm2022/lib/components/ecl-app/ecl-app.component.mjs +5 -5
  36. package/esm2022/lib/components/ecl-app/ecl-app.module.mjs +4 -4
  37. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner-credit.directive.mjs +3 -3
  38. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner-cta-link.directive.mjs +5 -5
  39. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner-description.directive.mjs +3 -3
  40. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner-title.directive.mjs +3 -3
  41. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner.component.mjs +4 -4
  42. package/esm2022/lib/components/ecl-banner/deprecated/ecl-hero-banner/ecl-hero-banner.module.mjs +4 -4
  43. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner-credit.directive.mjs +3 -3
  44. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner-cta-link.directive.mjs +5 -5
  45. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner-description.directive.mjs +3 -3
  46. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner-title.directive.mjs +3 -3
  47. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner.component.mjs +4 -4
  48. package/esm2022/lib/components/ecl-banner/deprecated/ecl-page-banner/ecl-page-banner.module.mjs +4 -4
  49. package/esm2022/lib/components/ecl-banner/ecl-banner-credit.directive.mjs +3 -3
  50. package/esm2022/lib/components/ecl-banner/ecl-banner-description.directive.mjs +6 -6
  51. package/esm2022/lib/components/ecl-banner/ecl-banner-picture.directive.mjs +6 -6
  52. package/esm2022/lib/components/ecl-banner/ecl-banner-title.directive.mjs +6 -6
  53. package/esm2022/lib/components/ecl-banner/ecl-banner.component.mjs +4 -4
  54. package/esm2022/lib/components/ecl-banner/ecl-banner.module.mjs +4 -4
  55. package/esm2022/lib/components/ecl-base.directive.mjs +3 -3
  56. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote-picture.directive.mjs +6 -6
  57. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote.component.mjs +16 -6
  58. package/esm2022/lib/components/ecl-blockquote/ecl-blockquote.module.mjs +4 -4
  59. package/esm2022/lib/components/ecl-breadcrumb/deprecated/common/ecl-breadcrumb-segment.component.mjs +5 -5
  60. package/esm2022/lib/components/ecl-breadcrumb/deprecated/common/ecl-breadcrumb.component.mjs +5 -5
  61. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-core/ecl-breadcrumb-core-segment.component.mjs +5 -5
  62. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-core/ecl-breadcrumb-core.component.mjs +4 -4
  63. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-core/ecl-breadcrumb-core.module.mjs +4 -4
  64. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-harmonised/ecl-breadcrumb-harmonised-segment.component.mjs +5 -5
  65. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-harmonised/ecl-breadcrumb-harmonised.component.mjs +4 -4
  66. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-harmonised/ecl-breadcrumb-harmonised.module.mjs +4 -4
  67. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-standardised/ecl-breadcrumb-standardised-segment.component.mjs +5 -5
  68. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-standardised/ecl-breadcrumb-standardised.component.mjs +4 -4
  69. package/esm2022/lib/components/ecl-breadcrumb/deprecated/ecl-breadcrumb-standardised/ecl-breadcrumb-standardised.module.mjs +4 -4
  70. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb-segment.component.mjs +5 -5
  71. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb.component.mjs +5 -5
  72. package/esm2022/lib/components/ecl-breadcrumb/ecl-breadcrumb.module.mjs +4 -4
  73. package/esm2022/lib/components/ecl-button/ecl-button-label.directive.mjs +3 -3
  74. package/esm2022/lib/components/ecl-button/ecl-button.component.mjs +5 -5
  75. package/esm2022/lib/components/ecl-button/ecl-button.module.mjs +4 -4
  76. package/esm2022/lib/components/ecl-card/ecl-card-body.component.mjs +3 -3
  77. package/esm2022/lib/components/ecl-card/ecl-card-image/ecl-card-image.component.mjs +3 -3
  78. package/esm2022/lib/components/ecl-card/ecl-card-picture.directive.mjs +6 -6
  79. package/esm2022/lib/components/ecl-card/ecl-card.component.mjs +3 -3
  80. package/esm2022/lib/components/ecl-card/ecl-card.module.mjs +4 -4
  81. package/esm2022/lib/components/ecl-carousel/ecl-carousel-item.component.mjs +3 -3
  82. package/esm2022/lib/components/ecl-carousel/ecl-carousel.component.mjs +7 -14
  83. package/esm2022/lib/components/ecl-carousel/ecl-carousel.module.mjs +4 -4
  84. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter/ecl-category-filter.component.mjs +5 -5
  85. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-item.component.mjs +4 -4
  86. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter-list/ecl-category-filter-list.component.mjs +4 -4
  87. package/esm2022/lib/components/ecl-category-filter/ecl-category-filter.module.mjs +4 -4
  88. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-help.component.mjs +3 -3
  89. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-input.directive.mjs +6 -6
  90. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox-label.component.mjs +3 -3
  91. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox.directive.mjs +5 -4
  92. package/esm2022/lib/components/ecl-checkbox/ecl-checkbox.module.mjs +22 -8
  93. package/esm2022/lib/components/ecl-content-block/ecl-content-block-elements.directive.mjs +51 -51
  94. package/esm2022/lib/components/ecl-content-block/ecl-content-block.component.mjs +3 -3
  95. package/esm2022/lib/components/ecl-content-block/ecl-content-block.module.mjs +4 -4
  96. package/esm2022/lib/components/ecl-content-item/ecl-content-item-image.directive.mjs +6 -6
  97. package/esm2022/lib/components/ecl-content-item/ecl-content-item.component.mjs +4 -4
  98. package/esm2022/lib/components/ecl-content-item/ecl-content-item.module.mjs +4 -4
  99. package/esm2022/lib/components/ecl-date-block/ecl-date-block.component.mjs +5 -5
  100. package/esm2022/lib/components/ecl-date-block/ecl-date-block.module.mjs +4 -4
  101. package/esm2022/lib/components/ecl-date-picker/ecl-date-picker.directive.mjs +5 -5
  102. package/esm2022/lib/components/ecl-date-picker/ecl-date-picker.module.mjs +4 -4
  103. package/esm2022/lib/components/ecl-expandable/ecl-expandable.component.mjs +3 -3
  104. package/esm2022/lib/components/ecl-expandable/ecl-expandable.module.mjs +4 -4
  105. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-description.component.mjs +3 -3
  106. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-item.component.mjs +3 -3
  107. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-title.component.mjs +3 -3
  108. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-value.component.mjs +3 -3
  109. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures-view-all.component.mjs +3 -3
  110. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures.component.mjs +3 -3
  111. package/esm2022/lib/components/ecl-fact-figures/ecl-fact-figures.module.mjs +4 -4
  112. package/esm2022/lib/components/ecl-featured/ecl-featured-item-description.component.mjs +3 -3
  113. package/esm2022/lib/components/ecl-featured/ecl-featured-item-link.directive.mjs +3 -3
  114. package/esm2022/lib/components/ecl-featured/ecl-featured-item.component.mjs +3 -3
  115. package/esm2022/lib/components/ecl-featured/ecl-featured.component.mjs +3 -3
  116. package/esm2022/lib/components/ecl-featured/ecl-featured.module.mjs +4 -4
  117. package/esm2022/lib/components/ecl-feedback-message/ecl-feedback-message.directive.mjs +4 -4
  118. package/esm2022/lib/components/ecl-feedback-message/ecl-feedback-message.module.mjs +4 -4
  119. package/esm2022/lib/components/ecl-file/ecl-file-item/ecl-file-item.component.mjs +5 -5
  120. package/esm2022/lib/components/ecl-file/ecl-file-items/ecl-file-items.component.mjs +3 -3
  121. package/esm2022/lib/components/ecl-file/ecl-file-picture.directive.mjs +6 -6
  122. package/esm2022/lib/components/ecl-file/ecl-file-taxonomy/ecl-file-taxonomy.component.mjs +3 -3
  123. package/esm2022/lib/components/ecl-file/ecl-file.component.mjs +3 -3
  124. package/esm2022/lib/components/ecl-file/ecl-file.module.mjs +4 -4
  125. package/esm2022/lib/components/ecl-file-upload/ecl-file-upload.directive.mjs +6 -6
  126. package/esm2022/lib/components/ecl-file-upload/ecl-file-upload.module.mjs +4 -4
  127. package/esm2022/lib/components/ecl-form-group/ecl-form-group.component.mjs +3 -3
  128. package/esm2022/lib/components/ecl-form-group/ecl-form-group.module.mjs +4 -4
  129. package/esm2022/lib/components/ecl-form-label/ecl-form-label.component.mjs +3 -3
  130. package/esm2022/lib/components/ecl-form-label/ecl-form-label.module.mjs +4 -4
  131. package/esm2022/lib/components/ecl-gallery/ecl-gallery-footer.component.mjs +5 -5
  132. package/esm2022/lib/components/ecl-gallery/ecl-gallery-item.component.mjs +22 -7
  133. package/esm2022/lib/components/ecl-gallery/ecl-gallery-media.directive.mjs +8 -8
  134. package/esm2022/lib/components/ecl-gallery/ecl-gallery.component.mjs +91 -29
  135. package/esm2022/lib/components/ecl-gallery/ecl-gallery.module.mjs +4 -4
  136. package/esm2022/lib/components/ecl-help-block/ecl-help-block.directive.mjs +3 -3
  137. package/esm2022/lib/components/ecl-help-block/ecl-help-block.module.mjs +4 -4
  138. package/esm2022/lib/components/ecl-icon/ecl-icon.component.mjs +5 -5
  139. package/esm2022/lib/components/ecl-icon/ecl-icon.module.mjs +4 -4
  140. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation-item.component.mjs +3 -3
  141. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.mjs +3 -3
  142. package/esm2022/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.module.mjs +4 -4
  143. package/esm2022/lib/components/ecl-label/ecl-label.directive.mjs +3 -3
  144. package/esm2022/lib/components/ecl-label/ecl-label.module.mjs +4 -4
  145. package/esm2022/lib/components/ecl-language-list/ecl-language-list-item.component.mjs +5 -5
  146. package/esm2022/lib/components/ecl-language-list/ecl-language-list.component.mjs +5 -5
  147. package/esm2022/lib/components/ecl-language-list/ecl-language-list.module.mjs +4 -4
  148. package/esm2022/lib/components/ecl-link/ecl-link-label.directive.mjs +3 -3
  149. package/esm2022/lib/components/ecl-link/ecl-link.directive.mjs +5 -5
  150. package/esm2022/lib/components/ecl-link/ecl-link.module.mjs +4 -4
  151. package/esm2022/lib/components/ecl-list/ecl-description-list-definition/ecl-description-list-definition.component.mjs +3 -3
  152. package/esm2022/lib/components/ecl-list/ecl-description-list-definition-item.directive.mjs +3 -3
  153. package/esm2022/lib/components/ecl-list/ecl-list.directive.mjs +20 -20
  154. package/esm2022/lib/components/ecl-list/ecl-list.module.mjs +4 -4
  155. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-icon.directive.mjs +3 -3
  156. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-image/ecl-list-illustration-image.component.mjs +3 -3
  157. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-item.component.mjs +4 -4
  158. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration-picture.directive.mjs +6 -6
  159. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration.component.mjs +3 -3
  160. package/esm2022/lib/components/ecl-list-illustration/ecl-list-illustration.module.mjs +4 -4
  161. package/esm2022/lib/components/ecl-media-container/ecl-media-container-iframe.directive.mjs +5 -5
  162. package/esm2022/lib/components/ecl-media-container/ecl-media-container-item.directive.mjs +5 -5
  163. package/esm2022/lib/components/ecl-media-container/ecl-media-container-picture.directive.mjs +3 -3
  164. package/esm2022/lib/components/ecl-media-container/ecl-media-container.component.mjs +16 -7
  165. package/esm2022/lib/components/ecl-media-container/ecl-media-container.module.mjs +4 -4
  166. package/esm2022/lib/components/ecl-menu/ecl-menu/ecl-menu-item.component.mjs +5 -5
  167. package/esm2022/lib/components/ecl-menu/ecl-menu/ecl-menu.component.mjs +9 -5
  168. package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega-item.component.mjs +4 -4
  169. package/esm2022/lib/components/ecl-menu/ecl-menu-mega/ecl-menu-mega.component.mjs +5 -5
  170. package/esm2022/lib/components/ecl-menu/ecl-menu.module.mjs +4 -4
  171. package/esm2022/lib/components/ecl-message/ecl-message-title.directive.mjs +3 -3
  172. package/esm2022/lib/components/ecl-message/ecl-message.component.mjs +3 -3
  173. package/esm2022/lib/components/ecl-message/ecl-message.module.mjs +4 -4
  174. package/esm2022/lib/components/ecl-modal/ecl-modal-body.component.mjs +3 -3
  175. package/esm2022/lib/components/ecl-modal/ecl-modal-close.directive.mjs +3 -3
  176. package/esm2022/lib/components/ecl-modal/ecl-modal-footer.component.mjs +4 -4
  177. package/esm2022/lib/components/ecl-modal/ecl-modal-header.component.mjs +3 -3
  178. package/esm2022/lib/components/ecl-modal/ecl-modal-trigger.directive.mjs +3 -3
  179. package/esm2022/lib/components/ecl-modal/ecl-modal.component.mjs +4 -4
  180. package/esm2022/lib/components/ecl-modal/ecl-modal.module.mjs +4 -4
  181. package/esm2022/lib/components/ecl-multiselect/boldText.pipe.mjs +36 -0
  182. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.mjs +449 -0
  183. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.mjs +92 -0
  184. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.mjs +33 -0
  185. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.mjs +130 -0
  186. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect-option.directive.mjs +6 -15
  187. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect.component.mjs +88 -824
  188. package/esm2022/lib/components/ecl-multiselect/ecl-multiselect.module.mjs +49 -7
  189. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-image/ecl-navigation-list-image.component.mjs +3 -3
  190. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-item.component.mjs +4 -4
  191. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list-picture.directive.mjs +6 -6
  192. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list.component.mjs +3 -3
  193. package/esm2022/lib/components/ecl-navigation-list/ecl-navigation-list.module.mjs +4 -4
  194. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker-item.component.mjs +5 -5
  195. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker.component.mjs +5 -5
  196. package/esm2022/lib/components/ecl-news-ticker/ecl-news-ticker.module.mjs +4 -4
  197. package/esm2022/lib/components/ecl-page-header/deprecated/common/ecl-page-header.component.mjs +3 -3
  198. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core-description.directive.mjs +9 -9
  199. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core-meta.directive.mjs +6 -6
  200. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core-title.directive.mjs +3 -3
  201. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core.component.mjs +3 -3
  202. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-core/ecl-page-header-core.module.mjs +4 -4
  203. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised-description.directive.mjs +9 -9
  204. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised-meta.directive.mjs +6 -6
  205. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised-title.directive.mjs +3 -3
  206. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised.component.mjs +3 -3
  207. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-harmonised/ecl-page-header-harmonised.module.mjs +4 -4
  208. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised-description.directive.mjs +9 -9
  209. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised-meta.directive.mjs +6 -6
  210. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised-title.directive.mjs +3 -3
  211. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised.component.mjs +3 -3
  212. package/esm2022/lib/components/ecl-page-header/deprecated/ecl-page-header-standardised/ecl-page-header-standardised.module.mjs +4 -4
  213. package/esm2022/lib/components/ecl-page-header/ecl-page-header-background.directive.mjs +6 -6
  214. package/esm2022/lib/components/ecl-page-header/ecl-page-header-description/ecl-page-header-description.component.mjs +3 -3
  215. package/esm2022/lib/components/ecl-page-header/ecl-page-header-description.directive.mjs +9 -9
  216. package/esm2022/lib/components/ecl-page-header/ecl-page-header-meta.directive.mjs +6 -6
  217. package/esm2022/lib/components/ecl-page-header/ecl-page-header-title.directive.mjs +3 -3
  218. package/esm2022/lib/components/ecl-page-header/ecl-page-header.component.mjs +3 -3
  219. package/esm2022/lib/components/ecl-page-header/ecl-page-header.module.mjs +4 -4
  220. package/esm2022/lib/components/ecl-pagination/ecl-pagination-item.component.mjs +3 -3
  221. package/esm2022/lib/components/ecl-pagination/ecl-pagination.component.mjs +3 -3
  222. package/esm2022/lib/components/ecl-pagination/ecl-pagination.module.mjs +4 -4
  223. package/esm2022/lib/components/ecl-popover/ecl-popover-content.directive.mjs +3 -3
  224. package/esm2022/lib/components/ecl-popover/ecl-popover-list.directive.mjs +9 -9
  225. package/esm2022/lib/components/ecl-popover/ecl-popover-toggle.directive.mjs +5 -5
  226. package/esm2022/lib/components/ecl-popover/ecl-popover.component.mjs +3 -3
  227. package/esm2022/lib/components/ecl-popover/ecl-popover.module.mjs +4 -4
  228. package/esm2022/lib/components/ecl-radio/ecl-radio-help.component.mjs +3 -3
  229. package/esm2022/lib/components/ecl-radio/ecl-radio-input.directive.mjs +6 -6
  230. package/esm2022/lib/components/ecl-radio/ecl-radio-label.component.mjs +3 -3
  231. package/esm2022/lib/components/ecl-radio/ecl-radio.directive.mjs +4 -4
  232. package/esm2022/lib/components/ecl-radio/ecl-radio.module.mjs +4 -4
  233. package/esm2022/lib/components/ecl-range/ecl-range-value.component.mjs +3 -3
  234. package/esm2022/lib/components/ecl-range/ecl-range.directive.mjs +6 -6
  235. package/esm2022/lib/components/ecl-range/ecl-range.module.mjs +4 -4
  236. package/esm2022/lib/components/ecl-rating-field/ecl-rating-field.component.mjs +5 -5
  237. package/esm2022/lib/components/ecl-rating-field/ecl-rating-field.module.mjs +4 -4
  238. package/esm2022/lib/components/ecl-search-form/ecl-search-form.component.mjs +3 -3
  239. package/esm2022/lib/components/ecl-search-form/ecl-search-form.module.mjs +4 -4
  240. package/esm2022/lib/components/ecl-select/ecl-select-container.component.mjs +3 -3
  241. package/esm2022/lib/components/ecl-select/ecl-select.directive.mjs +6 -6
  242. package/esm2022/lib/components/ecl-select/ecl-select.module.mjs +4 -4
  243. package/esm2022/lib/components/ecl-site-footer/deprecated/common/ecl-footer.component.mjs +5 -5
  244. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-core.component.mjs +3 -3
  245. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-core.module.mjs +4 -4
  246. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-column.directive.mjs +3 -3
  247. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-description.directive.mjs +3 -3
  248. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-link.directive.mjs +3 -3
  249. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-list.directive.mjs +6 -6
  250. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-section.directive.mjs +3 -3
  251. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-core/ecl-footer-elements/ecl-footer-core-title.directive.mjs +6 -6
  252. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-column.directive.mjs +9 -9
  253. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-description.directive.mjs +3 -3
  254. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-link.directive.mjs +9 -9
  255. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-list.directive.mjs +15 -15
  256. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-section.directive.mjs +3 -3
  257. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-elements/ecl-footer-harmonised-title.directive.mjs +6 -6
  258. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-harmonised.component.mjs +3 -3
  259. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-harmonised/ecl-footer-harmonised.module.mjs +4 -4
  260. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-column.directive.mjs +9 -9
  261. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-description.directive.mjs +3 -3
  262. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-link.directive.mjs +9 -9
  263. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-list.directive.mjs +6 -6
  264. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-section.directive.mjs +3 -3
  265. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-elements/ecl-footer-standardised-title.directive.mjs +6 -6
  266. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-standardised.component.mjs +3 -3
  267. package/esm2022/lib/components/ecl-site-footer/deprecated/ecl-footer-standardised/ecl-footer-standardised.module.mjs +4 -4
  268. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ec/ecl-site-footer-fixed-content.mjs +5 -5
  269. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-column.directive.mjs +9 -9
  270. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-description.directive.mjs +3 -3
  271. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-link.directive.mjs +15 -15
  272. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-list.directive.mjs +15 -15
  273. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-section.directive.mjs +3 -3
  274. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/ecl-site-footer-title.directive.mjs +6 -6
  275. package/esm2022/lib/components/ecl-site-footer/ecl-footer-elements/eu/ecl-site-footer-fixed-content.mjs +5 -5
  276. package/esm2022/lib/components/ecl-site-footer/ecl-site-footer.component.mjs +5 -5
  277. package/esm2022/lib/components/ecl-site-footer/ecl-site-footer.module.mjs +4 -4
  278. package/esm2022/lib/components/ecl-site-header/action/ecl-site-header-action.component.mjs +3 -3
  279. package/esm2022/lib/components/ecl-site-header/banner-top/ecl-site-header-banner-top.component.mjs +3 -3
  280. package/esm2022/lib/components/ecl-site-header/cta/ecl-site-header-cta.directive.mjs +3 -3
  281. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header-action.component.mjs +3 -3
  282. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header-banner-top.component.mjs +3 -3
  283. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header-language.component.mjs +3 -3
  284. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header-login.component.mjs +3 -3
  285. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header-search.component.mjs +3 -3
  286. package/esm2022/lib/components/ecl-site-header/deprecated/common/ecl-site-header.component.mjs +5 -5
  287. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/action/ecl-site-header-core-action.component.mjs +3 -3
  288. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/ecl-site-header-core.component.mjs +5 -5
  289. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/ecl-site-header-core.module.mjs +4 -4
  290. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/language/ecl-site-header-core-language.component.mjs +3 -3
  291. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/login/ecl-site-header-core-login-details.directive.mjs +6 -6
  292. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/login/ecl-site-header-core-login.component.mjs +3 -3
  293. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-core/search/ecl-site-header-core-search.component.mjs +3 -3
  294. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/action/ecl-site-header-harmonised-action.component.mjs +3 -3
  295. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/banner-top/ecl-site-header-harmonised-banner-top.component.mjs +3 -3
  296. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/ecl-site-header-harmonised.component.mjs +5 -5
  297. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/ecl-site-header-harmonised.module.mjs +4 -4
  298. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/language/ecl-site-header-harmonised-language.component.mjs +3 -3
  299. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/login/ecl-site-header-harmonised-login-details.directive.mjs +6 -6
  300. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/login/ecl-site-header-harmonised-login.component.mjs +3 -3
  301. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-harmonised/search/ecl-site-header-harmonised-search.component.mjs +3 -3
  302. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/action/ecl-site-header-standardised-action.component.mjs +3 -3
  303. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/banner-top/ecl-site-header-standardised-banner-top.component.mjs +3 -3
  304. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/cta/ecl-site-header-standardised-cta.directive.mjs +3 -3
  305. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/ecl-site-header-standardised.component.mjs +5 -5
  306. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/ecl-site-header-standardised.module.mjs +4 -4
  307. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/language/ecl-site-header-standardised-language.component.mjs +3 -3
  308. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/login/ecl-site-header-standardised-login-details.directive.mjs +6 -6
  309. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/login/ecl-site-header-standardised-login.component.mjs +3 -3
  310. package/esm2022/lib/components/ecl-site-header/deprecated/ecl-site-header-standardised/search/ecl-site-header-standardised-search.component.mjs +3 -3
  311. package/esm2022/lib/components/ecl-site-header/ecl-site-header-environment/ecl-site-header-environment.component.mjs +5 -5
  312. package/esm2022/lib/components/ecl-site-header/ecl-site-header.component.mjs +5 -5
  313. package/esm2022/lib/components/ecl-site-header/ecl-site-header.module.mjs +4 -4
  314. package/esm2022/lib/components/ecl-site-header/language/ecl-site-header-language-popover.component.mjs +5 -5
  315. package/esm2022/lib/components/ecl-site-header/language/ecl-site-header-language.component.mjs +21 -5
  316. package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login-details.directive.mjs +6 -6
  317. package/esm2022/lib/components/ecl-site-header/login/ecl-site-header-login.component.mjs +3 -3
  318. package/esm2022/lib/components/ecl-site-header/message/ecl-site-header-message.component.mjs +3 -3
  319. package/esm2022/lib/components/ecl-site-header/search/ecl-site-header-search.component.mjs +8 -4
  320. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow-item.component.mjs +3 -3
  321. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow-link.directive.mjs +3 -3
  322. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow.component.mjs +3 -3
  323. package/esm2022/lib/components/ecl-social-media-follow/ecl-social-media-follow.module.mjs +4 -4
  324. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share-item.component.mjs +3 -3
  325. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share-link.directive.mjs +3 -3
  326. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share.component.mjs +3 -3
  327. package/esm2022/lib/components/ecl-social-media-share/ecl-social-media-share.module.mjs +4 -4
  328. package/esm2022/lib/components/ecl-spinner/ecl-spinner-label.directive.mjs +3 -3
  329. package/esm2022/lib/components/ecl-spinner/ecl-spinner.component.mjs +3 -3
  330. package/esm2022/lib/components/ecl-spinner/ecl-spinner.module.mjs +4 -4
  331. package/esm2022/lib/components/ecl-sticky-container/ecl-sticky-container.component.mjs +3 -3
  332. package/esm2022/lib/components/ecl-sticky-container/ecl-sticky-container.module.mjs +4 -4
  333. package/esm2022/lib/components/ecl-table/ecl-table-sort-button.component.mjs +5 -5
  334. package/esm2022/lib/components/ecl-table/ecl-table.directive.mjs +41 -25
  335. package/esm2022/lib/components/ecl-table/ecl-table.module.mjs +11 -8
  336. package/esm2022/lib/components/ecl-tabs/ecl-tab-label.component.mjs +3 -3
  337. package/esm2022/lib/components/ecl-tabs/ecl-tab-more.component.mjs +5 -5
  338. package/esm2022/lib/components/ecl-tabs/ecl-tab.component.mjs +5 -5
  339. package/esm2022/lib/components/ecl-tabs/ecl-tabs.component.mjs +5 -5
  340. package/esm2022/lib/components/ecl-tabs/ecl-tabs.module.mjs +4 -4
  341. package/esm2022/lib/components/ecl-tag/ecl-tag.component.mjs +3 -3
  342. package/esm2022/lib/components/ecl-tag/ecl-tag.module.mjs +4 -4
  343. package/esm2022/lib/components/ecl-text-area/ecl-text-area.directive.mjs +6 -6
  344. package/esm2022/lib/components/ecl-text-area/ecl-text-area.module.mjs +4 -4
  345. package/esm2022/lib/components/ecl-text-input/ecl-text-input.directive.mjs +7 -6
  346. package/esm2022/lib/components/ecl-text-input/ecl-text-input.module.mjs +7 -8
  347. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-label.directive.mjs +3 -3
  348. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-title.directive.mjs +3 -3
  349. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item-toggler.component.mjs +3 -3
  350. package/esm2022/lib/components/ecl-timeline/ecl-timeline-item.component.mjs +4 -4
  351. package/esm2022/lib/components/ecl-timeline/ecl-timeline.component.mjs +4 -4
  352. package/esm2022/lib/components/ecl-timeline/ecl-timeline.module.mjs +4 -4
  353. package/esm2022/lib/model/ecl-multiselect-option.model.mjs +2 -0
  354. package/esm2022/lib/services/ecl-default-language.service.mjs +5 -5
  355. package/esm2022/lib/services/ecl-theme.service.mjs +5 -5
  356. package/esm2022/lib/shared/ecl-all.module.mjs +4 -4
  357. package/esm2022/lib/utils/constants/constants.mjs +11 -0
  358. package/esm2022/lib/utils/constants/index.mjs +2 -0
  359. package/esm2022/lib/utils/directives/ecl-click-outside/ecl-click-outside.directive.mjs +5 -5
  360. package/esm2022/lib/utils/directives/ecl-hidden/ecl-hidden.directive.mjs +3 -3
  361. package/esm2022/lib/utils/directives/ecl-hidden/ecl-hidden.module.mjs +4 -4
  362. package/esm2022/lib/utils/index.mjs +2 -1
  363. package/fesm2022/eui-ecl.mjs +2408 -2268
  364. package/fesm2022/eui-ecl.mjs.map +1 -1
  365. package/lib/components/ecl-blockquote/ecl-blockquote.component.d.ts +12 -2
  366. package/lib/components/ecl-blockquote/ecl-blockquote.component.d.ts.map +1 -1
  367. package/lib/components/ecl-carousel/ecl-carousel.component.d.ts +2 -3
  368. package/lib/components/ecl-carousel/ecl-carousel.component.d.ts.map +1 -1
  369. package/lib/components/ecl-checkbox/ecl-checkbox.directive.d.ts +1 -1
  370. package/lib/components/ecl-checkbox/ecl-checkbox.directive.d.ts.map +1 -1
  371. package/lib/components/ecl-checkbox/ecl-checkbox.module.d.ts +7 -7
  372. package/lib/components/ecl-checkbox/ecl-checkbox.module.d.ts.map +1 -1
  373. package/lib/components/ecl-gallery/ecl-gallery-item.component.d.ts +11 -4
  374. package/lib/components/ecl-gallery/ecl-gallery-item.component.d.ts.map +1 -1
  375. package/lib/components/ecl-gallery/ecl-gallery.component.d.ts +39 -5
  376. package/lib/components/ecl-gallery/ecl-gallery.component.d.ts.map +1 -1
  377. package/lib/components/ecl-media-container/ecl-media-container.component.d.ts +7 -3
  378. package/lib/components/ecl-media-container/ecl-media-container.component.d.ts.map +1 -1
  379. package/lib/components/ecl-menu/ecl-menu/ecl-menu.component.d.ts +1 -0
  380. package/lib/components/ecl-menu/ecl-menu/ecl-menu.component.d.ts.map +1 -1
  381. package/lib/components/ecl-multiselect/boldText.pipe.d.ts +11 -0
  382. package/lib/components/ecl-multiselect/boldText.pipe.d.ts.map +1 -0
  383. package/lib/components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.d.ts +94 -0
  384. package/lib/components/ecl-multiselect/ecl-multiselect-dropdown/ecl-multiselect-dropdown.component.d.ts.map +1 -0
  385. package/lib/components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.d.ts +26 -0
  386. package/lib/components/ecl-multiselect/ecl-multiselect-input/ecl-multiselect-input.component.d.ts.map +1 -0
  387. package/lib/components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.d.ts +19 -0
  388. package/lib/components/ecl-multiselect/ecl-multiselect-optgroup/ecl-multiselect-optgroup.component.d.ts.map +1 -0
  389. package/lib/components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.d.ts +49 -0
  390. package/lib/components/ecl-multiselect/ecl-multiselect-option/ecl-multiselect-option.component.d.ts.map +1 -0
  391. package/lib/components/ecl-multiselect/ecl-multiselect-option.directive.d.ts +3 -6
  392. package/lib/components/ecl-multiselect/ecl-multiselect-option.directive.d.ts.map +1 -1
  393. package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts +19 -113
  394. package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts.map +1 -1
  395. package/lib/components/ecl-multiselect/ecl-multiselect.module.d.ts +12 -3
  396. package/lib/components/ecl-multiselect/ecl-multiselect.module.d.ts.map +1 -1
  397. package/lib/components/ecl-site-header/language/ecl-site-header-language.component.d.ts +4 -0
  398. package/lib/components/ecl-site-header/language/ecl-site-header-language.component.d.ts.map +1 -1
  399. package/lib/components/ecl-site-header/search/ecl-site-header-search.component.d.ts +1 -0
  400. package/lib/components/ecl-site-header/search/ecl-site-header-search.component.d.ts.map +1 -1
  401. package/lib/components/ecl-table/ecl-table.directive.d.ts +5 -0
  402. package/lib/components/ecl-table/ecl-table.directive.d.ts.map +1 -1
  403. package/lib/components/ecl-table/ecl-table.module.d.ts +1 -1
  404. package/lib/components/ecl-table/ecl-table.module.d.ts.map +1 -1
  405. package/lib/components/ecl-text-input/ecl-text-input.directive.d.ts +1 -1
  406. package/lib/components/ecl-text-input/ecl-text-input.directive.d.ts.map +1 -1
  407. package/lib/components/ecl-text-input/ecl-text-input.module.d.ts +3 -3
  408. package/lib/components/ecl-text-input/ecl-text-input.module.d.ts.map +1 -1
  409. package/lib/model/ecl-multiselect-option.model.d.ts +8 -0
  410. package/lib/model/ecl-multiselect-option.model.d.ts.map +1 -0
  411. package/lib/utils/constants/constants.d.ts +10 -0
  412. package/lib/utils/constants/constants.d.ts.map +1 -0
  413. package/lib/utils/constants/index.d.ts +2 -0
  414. package/lib/utils/constants/index.d.ts.map +1 -0
  415. package/lib/utils/index.d.ts +1 -0
  416. package/lib/utils/index.d.ts.map +1 -1
  417. package/package.json +1 -1
@@ -0,0 +1,449 @@
1
+ import { __decorate } from "tslib";
2
+ import { Component, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Input, Output, ViewChild, ViewChildren } from '@angular/core';
3
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
+ import { coerceBoolean } from '@eui/base';
5
+ import { Subject } from 'rxjs';
6
+ import { v4 as uuidgen } from 'uuid';
7
+ import { KeyCode } from '../../../utils';
8
+ import { ECLBaseDirective } from '../../ecl-base.directive';
9
+ import { EclMultiselectOptionComponent } from '../ecl-multiselect-option/ecl-multiselect-option.component';
10
+ import * as i0 from "@angular/core";
11
+ import * as i1 from "@angular/common";
12
+ import * as i2 from "../../ecl-checkbox/ecl-checkbox.directive";
13
+ import * as i3 from "../../ecl-checkbox/ecl-checkbox-label.component";
14
+ import * as i4 from "../../ecl-checkbox/ecl-checkbox-input.directive";
15
+ import * as i5 from "../../ecl-button/ecl-button.component";
16
+ import * as i6 from "../ecl-multiselect-option/ecl-multiselect-option.component";
17
+ import * as i7 from "../ecl-multiselect-input/ecl-multiselect-input.component";
18
+ import * as i8 from "../ecl-multiselect-optgroup/ecl-multiselect-optgroup.component";
19
+ import * as i9 from "@ngx-translate/core";
20
+ export class EclMultiselectDropdownComponent extends ECLBaseDirective {
21
+ get isInvalid() {
22
+ return this._isInvalid;
23
+ }
24
+ set isInvalid(value) {
25
+ this._isInvalid = value;
26
+ }
27
+ get cssClasses() {
28
+ return [
29
+ super.getCssClasses('ecl-select__multiple'),
30
+ ].join(' ').trim();
31
+ }
32
+ get disabled() {
33
+ return this._disabled || undefined;
34
+ }
35
+ set disabled(value) {
36
+ this._disabled = value;
37
+ }
38
+ constructor(elRef, differs) {
39
+ super();
40
+ this.elRef = elRef;
41
+ this.differs = differs;
42
+ this.eclChange = new EventEmitter();
43
+ this.mainInputPlaceholder = 'Select an item';
44
+ this.searchFieldPlaceholder = 'Enter keyword';
45
+ this.eclSize = 'm';
46
+ this.selectAllId = '';
47
+ this.isShowNoResultsFound = false;
48
+ this.isShowMultiselectDropdown = false;
49
+ this.multiOptionDirectives = [];
50
+ this._disabled = false;
51
+ this._isInvalid = false;
52
+ this._selectedItems = [];
53
+ this.destroy$ = new Subject();
54
+ this.isWriteValueCalled = false;
55
+ this.values = [];
56
+ this.propagateChange = (_) => {
57
+ };
58
+ this.propagateTouched = () => {
59
+ };
60
+ this.differ = this.differs.find([]).create();
61
+ }
62
+ ngDoCheck() {
63
+ const diff = this.differ.diff(this.multiOptionComponents);
64
+ if (diff) {
65
+ if (this.isWriteValueCalled) {
66
+ this.resetComponent();
67
+ this.writeValues(this.values);
68
+ this.isWriteValueCalled = false;
69
+ }
70
+ else {
71
+ this.initSelectedOptions();
72
+ }
73
+ }
74
+ }
75
+ ngOnInit() {
76
+ this.selectAllId = this.getSelectAllId();
77
+ }
78
+ ngOnDestroy() {
79
+ this.destroy$.next(true);
80
+ this.destroy$.unsubscribe();
81
+ }
82
+ writeValue(values) {
83
+ if (this.multiOptionComponents) {
84
+ this.resetComponent();
85
+ this.writeValues(values);
86
+ }
87
+ else {
88
+ this.values = values;
89
+ this.isWriteValueCalled = true;
90
+ }
91
+ }
92
+ registerOnChange(fn) {
93
+ this.propagateChange = fn;
94
+ }
95
+ registerOnTouched(fn) {
96
+ this.propagateTouched = fn;
97
+ }
98
+ setDisabledState(isDisabled) {
99
+ this._disabled = isDisabled;
100
+ }
101
+ onEscapeKey(event) {
102
+ this.hideMultiselectDropdown();
103
+ }
104
+ onKeyUp(event) {
105
+ if (!this.elRef.nativeElement.contains(event.target)) {
106
+ this.hideMultiselectDropdown();
107
+ }
108
+ }
109
+ get optionsCount() {
110
+ return this.getActiveOptions() ? this.getActiveOptions().length : 0;
111
+ }
112
+ get selectedItems() {
113
+ return this._selectedItems.map(item => item.label);
114
+ }
115
+ get isItemsSelected() {
116
+ return this._selectedItems.length > 0;
117
+ }
118
+ get isShowToolbar() {
119
+ return this._selectedItems.length > 0;
120
+ }
121
+ initSelectedOptions() {
122
+ this._selectedItems = [];
123
+ this.multiOptionComponents.filter(elem => elem.isChecked).forEach(item => {
124
+ this._selectedItems.push(item);
125
+ });
126
+ }
127
+ onClickClearAll(evt) {
128
+ evt.stopPropagation();
129
+ this.unselectAllActiveOptions();
130
+ this.eclChange.emit([]);
131
+ this.propagateChange([]);
132
+ }
133
+ onClickClose(evt) {
134
+ evt.preventDefault();
135
+ this.hideMultiselectDropdown();
136
+ }
137
+ onArrowUpCloseClear(evt) {
138
+ evt.preventDefault();
139
+ const currentOptions = this.getActiveOptions();
140
+ currentOptions[currentOptions.length - 1].onFocus();
141
+ }
142
+ onArrowLeftClose(evt) {
143
+ evt.preventDefault();
144
+ this.clearAllBtn.nativeElement.focus();
145
+ }
146
+ onTabClose(evt) {
147
+ evt.preventDefault();
148
+ this.eclMultiselectInput.onFocus();
149
+ }
150
+ onArrowRightClear(evt) {
151
+ evt.preventDefault();
152
+ this.closeBtn.nativeElement.focus();
153
+ }
154
+ onEnterSearch(evt) {
155
+ evt.preventDefault();
156
+ }
157
+ onArrowDownSearch(evt) {
158
+ evt.preventDefault();
159
+ const currentOptions = this.getActiveOptions();
160
+ if (currentOptions.length > 1) {
161
+ this.selectAllCheckbox.nativeElement.focus();
162
+ }
163
+ else {
164
+ currentOptions[0].onFocus();
165
+ }
166
+ }
167
+ onArrowUpSearch(evt) {
168
+ evt.preventDefault();
169
+ this.hideMultiselectDropdown();
170
+ this.eclMultiselectInput.onFocus();
171
+ }
172
+ onKeydownMainInput(evt) {
173
+ evt.preventDefault();
174
+ this.showMultiselectDropdown();
175
+ setTimeout(() => this.searchInput.nativeElement.focus());
176
+ }
177
+ onClickMainInput(evt) {
178
+ evt.event.preventDefault();
179
+ this.toggleDropdown();
180
+ }
181
+ onArrowDownSelectAll(evt) {
182
+ evt.preventDefault();
183
+ const currentOptions = this.getActiveOptions();
184
+ if (currentOptions.length > 0) {
185
+ currentOptions[0].onFocus();
186
+ }
187
+ }
188
+ onArrowUpSelectAll(evt) {
189
+ evt.preventDefault();
190
+ this.searchInput.nativeElement.focus();
191
+ }
192
+ onSearch(input) {
193
+ const keyword = input.value;
194
+ let isMatchFound = false;
195
+ if (keyword === '') {
196
+ this.enableSelectAll();
197
+ isMatchFound = true;
198
+ this.multiOptionComponents.forEach(item => {
199
+ item.highlightSearchText('');
200
+ item.show();
201
+ });
202
+ }
203
+ else {
204
+ this.multiOptionComponents.forEach(item => {
205
+ if (item.label.toLowerCase().indexOf(keyword.toLowerCase()) < 0) {
206
+ item.hide();
207
+ }
208
+ else {
209
+ isMatchFound = true;
210
+ item.highlightSearchText(keyword.toLowerCase());
211
+ item.show();
212
+ }
213
+ });
214
+ this.disableSelectAll();
215
+ }
216
+ if (!isMatchFound) {
217
+ this.showNoResultsFound();
218
+ }
219
+ else {
220
+ this.hideNoResultsFound();
221
+ }
222
+ }
223
+ onSelectAll() {
224
+ if (this.selectAllCheckbox.nativeElement.checked) {
225
+ this.selectAllActiveOptions();
226
+ }
227
+ else {
228
+ this.unselectAllActiveOptions();
229
+ }
230
+ this.propagateTouched();
231
+ this.eclChange.emit(this._selectedItems.map(item => item.value));
232
+ this.propagateChange(this._selectedItems.map(item => item.value));
233
+ }
234
+ onKeydownOption(evt) {
235
+ switch (evt.keyboardEvent.key) {
236
+ case KeyCode.ARROW_DOWN: {
237
+ this.onOptionArrowDownAndTab(evt.keyboardEvent, evt.multiselectOption);
238
+ break;
239
+ }
240
+ case KeyCode.ARROW_UP: {
241
+ this.onOptionArrowUp(evt.keyboardEvent, evt.multiselectOption);
242
+ break;
243
+ }
244
+ case KeyCode.ESCAPE: {
245
+ this.hideMultiselectDropdown();
246
+ break;
247
+ }
248
+ case KeyCode.ENTER: {
249
+ evt.keyboardEvent.target.click();
250
+ break;
251
+ }
252
+ case KeyCode.TAB: {
253
+ this.onOptionArrowDownAndTab(evt.keyboardEvent, evt.multiselectOption);
254
+ break;
255
+ }
256
+ default: {
257
+ break;
258
+ }
259
+ }
260
+ }
261
+ onOptionSelected(evt) {
262
+ if (this.selectAllCheckbox.nativeElement.checked) {
263
+ this.selectAllCheckbox.nativeElement.checked = false;
264
+ }
265
+ const currOption = evt.multiselectOption;
266
+ if (currOption.isChecked) {
267
+ this._selectedItems.push(currOption);
268
+ }
269
+ else {
270
+ const index = this._selectedItems.indexOf(currOption);
271
+ this._selectedItems.splice(index, 1);
272
+ }
273
+ this.propagateChange(this._selectedItems.map(item => item.value));
274
+ this.propagateTouched();
275
+ this.eclChange.emit(this._selectedItems.map(item => item.value));
276
+ }
277
+ selectAllActiveOptions() {
278
+ this.getAllActiveOptions().forEach(item => {
279
+ if (!item.isChecked) {
280
+ item.isChecked = true;
281
+ this._selectedItems.push(item);
282
+ }
283
+ });
284
+ }
285
+ unselectAllActiveOptions() {
286
+ this.selectAllCheckbox.nativeElement.checked = false;
287
+ this._selectedItems = [];
288
+ this.getAllActiveOptions().forEach(item => {
289
+ item.isChecked = false;
290
+ });
291
+ }
292
+ getAllActiveOptions() {
293
+ return this.multiOptionComponents.filter(elem => elem.isActive);
294
+ }
295
+ showMultiselectDropdown() {
296
+ this.isShowMultiselectDropdown = true;
297
+ }
298
+ hideMultiselectDropdown() {
299
+ this.isShowMultiselectDropdown = false;
300
+ }
301
+ disableSelectAll() {
302
+ this.selectAll.isDisabled = true;
303
+ }
304
+ enableSelectAll() {
305
+ this.selectAll.isDisabled = false;
306
+ }
307
+ showNoResultsFound() {
308
+ this.isShowNoResultsFound = true;
309
+ }
310
+ hideNoResultsFound() {
311
+ this.isShowNoResultsFound = false;
312
+ }
313
+ resetComponent() {
314
+ this.multiOptionComponents.forEach(item => {
315
+ item.isChecked = false;
316
+ });
317
+ if (this.selectAllCheckbox) {
318
+ this.selectAllCheckbox.nativeElement.checked = false;
319
+ }
320
+ this._selectedItems = [];
321
+ }
322
+ writeValues(values) {
323
+ if (values) {
324
+ const selectedElementsArray = [];
325
+ if (this.multiOptionComponents && this.multiOptionComponents.length > 0) {
326
+ this.multiOptionComponents.filter(item => values.includes(item.value) &&
327
+ !item.disabled)
328
+ .forEach(el => {
329
+ el.isChecked = true;
330
+ selectedElementsArray.push(el.label);
331
+ this._selectedItems.push(el);
332
+ });
333
+ }
334
+ }
335
+ }
336
+ toggleDropdown() {
337
+ this.isShowMultiselectDropdown = !this.isShowMultiselectDropdown;
338
+ }
339
+ onOptionArrowDownAndTab(evt, option) {
340
+ evt.preventDefault();
341
+ const index = this.getOptionIndexByIdFromActiveOptions(option.id);
342
+ const currentOptions = this.getActiveOptions();
343
+ if (index !== currentOptions.length - 1) {
344
+ const nextSiblingCheckbox = currentOptions[index + 1];
345
+ nextSiblingCheckbox.onFocus();
346
+ }
347
+ else {
348
+ if (this.clearAllBtn) {
349
+ this.clearAllBtn.nativeElement.focus();
350
+ }
351
+ else {
352
+ this.eclMultiselectInput.onFocus();
353
+ }
354
+ }
355
+ }
356
+ onOptionArrowUp(evt, option) {
357
+ evt.preventDefault();
358
+ const index = this.getOptionIndexByIdFromActiveOptions(option.id);
359
+ if (index !== 0) {
360
+ const prevSiblingCheckbox = this.getActiveOptions()[index - 1];
361
+ prevSiblingCheckbox.onFocus();
362
+ }
363
+ else if (this.selectAllCheckbox.nativeElement.disabled) {
364
+ this.searchInput.nativeElement.focus();
365
+ }
366
+ else {
367
+ this.selectAllCheckbox.nativeElement.focus();
368
+ }
369
+ }
370
+ getActiveOptions() {
371
+ return this.multiOptionComponents ? this.multiOptionComponents.filter(item => item.isActive) : [];
372
+ }
373
+ getOptionIndexByIdFromActiveOptions(id) {
374
+ return this.getActiveOptions().findIndex(option => option.id === id);
375
+ }
376
+ getSelectAllId() {
377
+ return uuidgen();
378
+ }
379
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.0-next.7", ngImport: i0, type: EclMultiselectDropdownComponent, deps: [{ token: i0.ElementRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component }); }
380
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.0-next.7", type: EclMultiselectDropdownComponent, selector: "div[eclMultiselectDropdown]", inputs: { isInvalid: "isInvalid", mainInputPlaceholder: "mainInputPlaceholder", searchFieldPlaceholder: "searchFieldPlaceholder", eclSize: "eclSize", disabled: "disabled" }, outputs: { eclChange: "eclChange" }, host: { listeners: { "document:keyup.escape": "onEscapeKey($event)", "document:click": "onKeyUp($event)" }, properties: { "class": "this.cssClasses", "attr.disabled": "this.disabled" } }, providers: [
381
+ {
382
+ provide: NG_VALUE_ACCESSOR,
383
+ useExisting: forwardRef((() => EclMultiselectDropdownComponent)),
384
+ multi: true,
385
+ }
386
+ ], viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true }, { propertyName: "eclMultiselectInput", first: true, predicate: ["eclMultiselectInput"], descendants: true }, { propertyName: "selectAllCheckbox", first: true, predicate: ["selectAllCheckbox"], descendants: true }, { propertyName: "selectAll", first: true, predicate: ["selectAll"], descendants: true }, { propertyName: "closeBtn", first: true, predicate: ["closeBtn"], descendants: true, read: ElementRef }, { propertyName: "clearAllBtn", first: true, predicate: ["clearAllBtn"], descendants: true, read: ElementRef }, { propertyName: "multiOptionComponents", predicate: EclMultiselectOptionComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<div eclMultiselectInput\n #eclMultiselectInput\n [inputPlaceholder]=\"mainInputPlaceholder\"\n [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\"\n (mainInputKeydown)=\"onKeydownMainInput($event)\"\n [isDisabled]=\"disabled\"\n [isInvalid]=\"isInvalid\"></div>\n<div [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--m\">\n <input class=\"ecl-text-input\"\n type=\"search\"\n #searchInput\n [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\"\n (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\"\n (keydown.arrowdown)=\"onArrowDownSearch($event)\">\n <div eclCheckbox\n #selectAll\n class=\"ecl-select__multiple-all\">\n <input eclCheckboxInput\n #selectAllCheckbox\n [id]=\"selectAllId\"\n type=\"checkbox\"\n (click)=\"onSelectAll()\"\n (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\">\n <label [for]=\"selectAllId\"\n eclCheckboxLabel>\n {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{optionsCount}})\n </label>\n </div>\n <div class=\"ecl-select__multiple-options\">\n <ng-container *ngFor=\"let item of multiOptionDirectives\">\n <div eclMultiselectOptgroup\n *ngIf=\"item.isOptGroup()\"\n [label]=\"item.label\">\n <div eclMultiselectOption\n *ngFor=\"let elem of item.eclOptionItems\"\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\">\n </div>\n </div>\n <div eclMultiselectOption\n *ngIf=\"!item.isOptGroup()\"\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\">\n </div>\n </ng-container>\n <div *ngIf=\"isShowNoResultsFound\"\n class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n </div>\n <div *ngIf=\"isShowToolbar\"\n class=\"ecl-select-multiple-toolbar\">\n <button eclButton\n variant=\"ghost\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowright)=\"onArrowRightClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n <button eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowleft)=\"onArrowLeftClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">{{ 'ecl.common.CLOSE' | translate }}</button>\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.EclCheckboxDirective, selector: "[eclCheckbox]", inputs: ["isDisabled", "isInvalid"] }, { kind: "component", type: i3.EclCheckboxLabelComponent, selector: "label[eclCheckboxLabel]", inputs: ["isInvalid", "isDisabled"] }, { kind: "directive", type: i4.EclCheckboxInputDirective, selector: "input[eclCheckboxInput]" }, { kind: "component", type: i5.EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["variant", "containerStyleClass"] }, { kind: "component", type: i6.EclMultiselectOptionComponent, selector: "div[eclMultiselectOption]", inputs: ["value", "label", "disabled", "isChecked"], outputs: ["optionClick", "optionKeydown"] }, { kind: "component", type: i7.EclMultiselectInputComponent, selector: "div[eclMultiselectInput]", inputs: ["isDisabled", "isInvalid", "inputPlaceholder", "selectedItems"], outputs: ["mainInputClick", "mainInputKeydown"] }, { kind: "component", type: i8.EclMultiselectOptgroupComponent, selector: "div[eclMultiselectOptgroup]", inputs: ["label"] }, { kind: "pipe", type: i9.TranslatePipe, name: "translate" }] }); }
387
+ }
388
+ __decorate([
389
+ coerceBoolean
390
+ ], EclMultiselectDropdownComponent.prototype, "isInvalid", null);
391
+ __decorate([
392
+ coerceBoolean
393
+ ], EclMultiselectDropdownComponent.prototype, "disabled", null);
394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.0-next.7", ngImport: i0, type: EclMultiselectDropdownComponent, decorators: [{
395
+ type: Component,
396
+ args: [{ selector: 'div[eclMultiselectDropdown]', providers: [
397
+ {
398
+ provide: NG_VALUE_ACCESSOR,
399
+ useExisting: forwardRef((() => EclMultiselectDropdownComponent)),
400
+ multi: true,
401
+ }
402
+ ], template: "<div eclMultiselectInput\n #eclMultiselectInput\n [inputPlaceholder]=\"mainInputPlaceholder\"\n [selectedItems]=\"selectedItems\"\n (mainInputClick)=\"onClickMainInput($event)\"\n (mainInputKeydown)=\"onKeydownMainInput($event)\"\n [isDisabled]=\"disabled\"\n [isInvalid]=\"isInvalid\"></div>\n<div [style.display]=\"isShowMultiselectDropdown ? 'block' : 'none'\"\n class=\"ecl-select__multiple-dropdown ecl-select__container ecl-select__container--m\">\n <input class=\"ecl-text-input\"\n type=\"search\"\n #searchInput\n [placeholder]=\"searchFieldPlaceholder\"\n (input)=\"onSearch($event.target)\"\n (keydown.enter)=\"onEnterSearch($event)\"\n (keydown.arrowup)=\"onArrowUpSearch($event)\"\n (keydown.arrowdown)=\"onArrowDownSearch($event)\">\n <div eclCheckbox\n #selectAll\n class=\"ecl-select__multiple-all\">\n <input eclCheckboxInput\n #selectAllCheckbox\n [id]=\"selectAllId\"\n type=\"checkbox\"\n (click)=\"onSelectAll()\"\n (keydown.arrowup)=\"onArrowUpSelectAll($event)\"\n (keydown.arrowdown)=\"onArrowDownSelectAll($event)\">\n <label [for]=\"selectAllId\"\n eclCheckboxLabel>\n {{ 'ecl.multiselect.SELECT-ALL' | translate }} ({{optionsCount}})\n </label>\n </div>\n <div class=\"ecl-select__multiple-options\">\n <ng-container *ngFor=\"let item of multiOptionDirectives\">\n <div eclMultiselectOptgroup\n *ngIf=\"item.isOptGroup()\"\n [label]=\"item.label\">\n <div eclMultiselectOption\n *ngFor=\"let elem of item.eclOptionItems\"\n [value]=\"elem.value\"\n [label]=\"elem.label\"\n [disabled]=\"elem.disabled\"\n [isChecked]=\"elem.selected\"\n [class]=\"elem.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\">\n </div>\n </div>\n <div eclMultiselectOption\n *ngIf=\"!item.isOptGroup()\"\n [value]=\"item.value\"\n [label]=\"item.label\"\n [disabled]=\"item.disabled\"\n [isChecked]=\"item.selected\"\n [class]=\"item.class\"\n (optionClick)=\"onOptionSelected($event)\"\n (optionKeydown)=\"onKeydownOption($event)\">\n </div>\n </ng-container>\n <div *ngIf=\"isShowNoResultsFound\"\n class=\"ecl-select__multiple-no-results\">\n <span>{{ 'ecl.multiselect.NO-RESULTS-FOUND' | translate }}</span>\n </div>\n </div>\n <div *ngIf=\"isShowToolbar\"\n class=\"ecl-select-multiple-toolbar\">\n <button eclButton\n variant=\"ghost\"\n #clearAllBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowright)=\"onArrowRightClear($event)\"\n (click)=\"onClickClearAll($event)\">\n {{ 'ecl.multiselect.CLEAR-ALL' | translate }}\n </button>\n <button eclButton\n variant=\"primary\"\n #closeBtn\n (keydown.arrowup)=\"onArrowUpCloseClear($event)\"\n (keydown.arrowleft)=\"onArrowLeftClose($event)\"\n (keydown.tab)=\"onTabClose($event)\"\n (click)=\"onClickClose($event)\">{{ 'ecl.common.CLOSE' | translate }}</button>\n </div>\n</div>" }]
403
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.IterableDiffers }], propDecorators: { searchInput: [{
404
+ type: ViewChild,
405
+ args: ['searchInput']
406
+ }], eclMultiselectInput: [{
407
+ type: ViewChild,
408
+ args: ['eclMultiselectInput']
409
+ }], selectAllCheckbox: [{
410
+ type: ViewChild,
411
+ args: ['selectAllCheckbox']
412
+ }], selectAll: [{
413
+ type: ViewChild,
414
+ args: ['selectAll']
415
+ }], closeBtn: [{
416
+ type: ViewChild,
417
+ args: ['closeBtn', { read: ElementRef }]
418
+ }], clearAllBtn: [{
419
+ type: ViewChild,
420
+ args: ['clearAllBtn', { read: ElementRef }]
421
+ }], multiOptionComponents: [{
422
+ type: ViewChildren,
423
+ args: [EclMultiselectOptionComponent]
424
+ }], eclChange: [{
425
+ type: Output
426
+ }], isInvalid: [{
427
+ type: Input
428
+ }], cssClasses: [{
429
+ type: HostBinding,
430
+ args: ['class']
431
+ }], mainInputPlaceholder: [{
432
+ type: Input
433
+ }], searchFieldPlaceholder: [{
434
+ type: Input
435
+ }], eclSize: [{
436
+ type: Input
437
+ }], disabled: [{
438
+ type: Input
439
+ }, {
440
+ type: HostBinding,
441
+ args: ['attr.disabled']
442
+ }], onEscapeKey: [{
443
+ type: HostListener,
444
+ args: ['document:keyup.escape', ['$event']]
445
+ }], onKeyUp: [{
446
+ type: HostListener,
447
+ args: ['document:click', ['$event']]
448
+ }] } });
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9lY2wtbXVsdGlzZWxlY3QvZWNsLW11bHRpc2VsZWN0LWRyb3Bkb3duL2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZWNsLW11bHRpc2VsZWN0L2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi9lY2wtbXVsdGlzZWxlY3QtZHJvcGRvd24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQVcsVUFBVSxFQUM5QixZQUFZLEVBQ1osVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFTixTQUFTLEVBQ1QsWUFBWSxFQUNmLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBbUMsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDckMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBSzVELE9BQU8sRUFFSCw2QkFBNkIsRUFFaEMsTUFBTSw0REFBNEQsQ0FBQzs7Ozs7Ozs7Ozs7QUFjcEUsTUFBTSxPQUFPLCtCQUFnQyxTQUFRLGdCQUFnQjtJQVlsRCxJQUNYLFNBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDM0IsQ0FBQztJQUNE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YUFBYTtnQkFDVSxtQkFBbUI7c0JBQXBELFNBQVM7dUJBQUMscUJBQXFCO2dCQUNBLGlCQUFpQjtzQkFBaEQsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ04sU0FBUztzQkFBaEMsU0FBUzt1QkFBQyxXQUFXO2dCQUN1QixRQUFRO3NCQUFwRCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUU7Z0JBQ0ssV0FBVztzQkFBMUQsU0FBUzt1QkFBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUNELHFCQUFxQjtzQkFBakUsWUFBWTt1QkFBQyw2QkFBNkI7Z0JBQ2pDLFNBQVM7c0JBQWxCLE1BQU07Z0JBR0gsU0FBUztzQkFERyxLQUFLO2dCQVNqQixVQUFVO3NCQURiLFdBQVc7dUJBQUMsT0FBTztnQkFNWCxvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBQ0csc0JBQXNCO3NCQUE5QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFRixRQUFRO3NCQURJLEtBQUs7O3NCQUFJLFdBQVc7dUJBQUMsZUFBZTtnQkEyRXBELFdBQVc7c0JBRFYsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFNakQsT0FBTztzQkFETixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsIERvQ2hlY2ssIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIElucHV0LCBJdGVyYWJsZURpZmZlcixcbiAgICBJdGVyYWJsZURpZmZlcnMsIE9uRGVzdHJveSwgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdDaGlsZHJlblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBGb3JtR3JvdXAsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhbiB9IGZyb20gJ0BldWkvYmFzZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkZ2VuIH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBLZXlDb2RlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgRWNsTXVsdGlzZWxlY3RPcHRpb24gfSBmcm9tICcuLi8uLi8uLi9tb2RlbC9lY2wtbXVsdGlzZWxlY3Qtb3B0aW9uLm1vZGVsJztcbmltcG9ydCB7IEVDTEJhc2VEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9lY2wtYmFzZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRWNsQ2hlY2tib3hEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9lY2wtY2hlY2tib3gnO1xuaW1wb3J0IHsgRWNsTXVsdGlzZWxlY3RJbnB1dENvbXBvbmVudCwgRWNsTXVsdGlzZWxlY3RNYWluSW5wdXRDbGlja0V2ZW50XG4gICAgfSBmcm9tICcuLi9lY2wtbXVsdGlzZWxlY3QtaW5wdXQvZWNsLW11bHRpc2VsZWN0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24uZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgRWNsTXVsdGlzZWxlY3RPcHRpb25DbGlja0V2ZW50LFxuICAgIEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50LFxuICAgIEVjbE11bHRpc2VsZWN0T3B0aW9uS2V5ZG93bkV2ZW50XG59IGZyb20gJy4uL2VjbC1tdWx0aXNlbGVjdC1vcHRpb24vZWNsLW11bHRpc2VsZWN0LW9wdGlvbi5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L2NvbXBvbmVudC1zZWxlY3RvclxuICAgIHNlbGVjdG9yOiAnZGl2W2VjbE11bHRpc2VsZWN0RHJvcGRvd25dJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2VjbC1tdWx0aXNlbGVjdC1kcm9wZG93bi5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRWNsTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudCksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZSxcbiAgICAgICAgfVxuICAgIF1cbn0pXG5leHBvcnQgY2xhc3MgRWNsTXVsdGlzZWxlY3REcm9wZG93bkNvbXBvbmVudCBleHRlbmRzIEVDTEJhc2VEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgIERvQ2hlY2ssIE9uRGVzdHJveSB7XG5cbiAgICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpIHNlYXJjaElucHV0OiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2VjbE11bHRpc2VsZWN0SW5wdXQnKSBlY2xNdWx0aXNlbGVjdElucHV0OiBFY2xNdWx0aXNlbGVjdElucHV0Q29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdEFsbENoZWNrYm94Jykgc2VsZWN0QWxsQ2hlY2tib3g6IEVsZW1lbnRSZWY7XG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0QWxsJykgc2VsZWN0QWxsOiBFY2xDaGVja2JveERpcmVjdGl2ZTtcbiAgICBAVmlld0NoaWxkKCdjbG9zZUJ0bicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjbG9zZUJ0bjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkKCdjbGVhckFsbEJ0bicsIHsgcmVhZDogRWxlbWVudFJlZiB9KSBjbGVhckFsbEJ0bjogRWxlbWVudFJlZjtcbiAgICBAVmlld0NoaWxkcmVuKEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50KSBtdWx0aU9wdGlvbkNvbXBvbmVudHM6IFF1ZXJ5TGlzdDxFY2xNdWx0aXNlbGVjdE9wdGlvbkNvbXBvbmVudD47XG4gICAgQE91dHB1dCgpIGVjbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgQGNvZXJjZUJvb2xlYW4gQElucHV0KClcbiAgICBnZXQgaXNJbnZhbGlkKCk6IGJvb2xlYW4gfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNJbnZhbGlkO1xuICAgIH1cbiAgICBzZXQgaXNJbnZhbGlkKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2lzSW52YWxpZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICAgIGdldCBjc3NDbGFzc2VzKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBzdXBlci5nZXRDc3NDbGFzc2VzKCdlY2wtc2VsZWN0X19tdWx0aXBsZScpLFxuICAgICAgICBdLmpvaW4oJyAnKS50cmltKCk7XG4gICAgfVxuICAgIEBJbnB1dCgpIG1haW5JbnB1dFBsYWNlaG9sZGVyID0gJ1NlbGVjdCBhbiBpdGVtJztcbiAgICBASW5wdXQoKSBzZWFyY2hGaWVsZFBsYWNlaG9sZGVyID0gJ0VudGVyIGtleXdvcmQnO1xuICAgIEBJbnB1dCgpIGVjbFNpemUgPSAnbSc7XG4gICAgQGNvZXJjZUJvb2xlYW4gQElucHV0KCkgQEhvc3RCaW5kaW5nKCdhdHRyLmRpc2FibGVkJylcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZCB8fCB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbiB8IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IHZhbHVlO1xuICAgIH1cblxuICAgIHNlbGVjdEFsbElkID0gJyc7XG4gICAgaXNTaG93Tm9SZXN1bHRzRm91bmQgPSBmYWxzZTtcbiAgICBpc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duID0gZmFsc2U7XG4gICAgbXVsdGlPcHRpb25EaXJlY3RpdmVzOiBFY2xNdWx0aXNlbGVjdE9wdGlvbkRpcmVjdGl2ZVtdID0gW107XG4gICAgZm9ybTogRm9ybUdyb3VwO1xuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNJbnZhbGlkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtczogRWNsTXVsdGlzZWxlY3RPcHRpb25bXSA9IFtdO1xuICAgIHByaXZhdGUgZGlmZmVyOiBJdGVyYWJsZURpZmZlcjxFY2xNdWx0aXNlbGVjdE9wdGlvbkNvbXBvbmVudD47XG4gICAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG4gICAgcHJpdmF0ZSBpc1dyaXRlVmFsdWVDYWxsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIHZhbHVlcyA9IFtdO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgZWxSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByaXZhdGUgZGlmZmVyczogSXRlcmFibGVEaWZmZXJzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZGlmZmVyID0gdGhpcy5kaWZmZXJzLmZpbmQoW10pLmNyZWF0ZSgpO1xuICAgIH1cblxuICAgIG5nRG9DaGVjaygpOiB2b2lkIHtcblxuICAgICAgICBjb25zdCBkaWZmID0gdGhpcy5kaWZmZXIuZGlmZih0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cyk7XG5cbiAgICAgICAgaWYgKGRpZmYpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzV3JpdGVWYWx1ZUNhbGxlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRDb21wb25lbnQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLndyaXRlVmFsdWVzKHRoaXMudmFsdWVzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzV3JpdGVWYWx1ZUNhbGxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmluaXRTZWxlY3RlZE9wdGlvbnMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEFsbElkID0gdGhpcy5nZXRTZWxlY3RBbGxJZCgpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZXM6IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMpIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRDb21wb25lbnQoKTtcbiAgICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZXModmFsdWVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzID0gdmFsdWVzO1xuICAgICAgICAgICAgdGhpcy5pc1dyaXRlVmFsdWVDYWxsZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCA9IGZuO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleXVwLmVzY2FwZScsIFsnJGV2ZW50J10pXG4gICAgb25Fc2NhcGVLZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbktleVVwKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5lbFJlZi5uYXRpdmVFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgICAgICAgIHRoaXMuaGlkZU11bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCBvcHRpb25zQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpID8gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCkubGVuZ3RoIDogMDtcbiAgICB9XG5cbiAgICBnZXQgc2VsZWN0ZWRJdGVtcygpOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLm1hcChpdGVtID0+IGl0ZW0ubGFiZWwpO1xuICAgIH1cblxuICAgIGdldCBpc0l0ZW1zU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgZ2V0IGlzU2hvd1Rvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgaW5pdFNlbGVjdGVkT3B0aW9ucygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5maWx0ZXIoZWxlbSA9PiBlbGVtLmlzQ2hlY2tlZCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25DbGlja0NsZWFyQWxsKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLnVuc2VsZWN0QWxsQWN0aXZlT3B0aW9ucygpO1xuICAgICAgICB0aGlzLmVjbENoYW5nZS5lbWl0KFtdKTtcbiAgICAgICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoW10pO1xuICAgIH1cblxuICAgIG9uQ2xpY2tDbG9zZShldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmhpZGVNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgfVxuXG4gICAgb25BcnJvd1VwQ2xvc2VDbGVhcihldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0QWN0aXZlT3B0aW9ucygpO1xuICAgICAgICBjdXJyZW50T3B0aW9uc1tjdXJyZW50T3B0aW9ucy5sZW5ndGggLSAxXS5vbkZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25BcnJvd0xlZnRDbG9zZShldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmNsZWFyQWxsQnRuLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICBvblRhYkNsb3NlKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuZWNsTXVsdGlzZWxlY3RJbnB1dC5vbkZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25BcnJvd1JpZ2h0Q2xlYXIoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5jbG9zZUJ0bi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25FbnRlclNlYXJjaChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIG9uQXJyb3dEb3duU2VhcmNoKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIGlmIChjdXJyZW50T3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRPcHRpb25zWzBdLm9uRm9jdXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uQXJyb3dVcFNlYXJjaChldnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmhpZGVNdWx0aXNlbGVjdERyb3Bkb3duKCk7XG4gICAgICAgIHRoaXMuZWNsTXVsdGlzZWxlY3RJbnB1dC5vbkZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25LZXlkb3duTWFpbklucHV0KGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHRoaXMuc2hvd011bHRpc2VsZWN0RHJvcGRvd24oKTtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKSk7XG4gICAgfVxuXG4gICAgb25DbGlja01haW5JbnB1dChldnQ6IEVjbE11bHRpc2VsZWN0TWFpbklucHV0Q2xpY2tFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQuZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy50b2dnbGVEcm9wZG93bigpO1xuICAgIH1cblxuICAgIG9uQXJyb3dEb3duU2VsZWN0QWxsKGV2dDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIGlmIChjdXJyZW50T3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uc1swXS5vbkZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkFycm93VXBTZWxlY3RBbGwoZXZ0OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuXG4gICAgb25TZWFyY2goaW5wdXQ6IGFueSk6IHZvaWQge1xuICAgICAgICBjb25zdCBrZXl3b3JkID0gaW5wdXQudmFsdWU7XG4gICAgICAgIGxldCBpc01hdGNoRm91bmQgPSBmYWxzZTtcbiAgICAgICAgaWYgKGtleXdvcmQgPT09ICcnKSB7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZVNlbGVjdEFsbCgpO1xuICAgICAgICAgICAgaXNNYXRjaEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgICAgaXRlbS5oaWdobGlnaHRTZWFyY2hUZXh0KCcnKTtcbiAgICAgICAgICAgICAgICBpdGVtLnNob3coKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoaXRlbS5sYWJlbC50b0xvd2VyQ2FzZSgpLmluZGV4T2Yoa2V5d29yZC50b0xvd2VyQ2FzZSgpKSA8IDApIHtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaXNNYXRjaEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5oaWdobGlnaHRTZWFyY2hUZXh0KGtleXdvcmQudG9Mb3dlckNhc2UoKSk7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uc2hvdygpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2VsZWN0QWxsKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFpc01hdGNoRm91bmQpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd05vUmVzdWx0c0ZvdW5kKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmhpZGVOb1Jlc3VsdHNGb3VuZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxBY3RpdmVPcHRpb25zKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnVuc2VsZWN0QWxsQWN0aXZlT3B0aW9ucygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvcGFnYXRlVG91Y2hlZCgpO1xuICAgICAgICB0aGlzLmVjbENoYW5nZS5lbWl0KHRoaXMuX3NlbGVjdGVkSXRlbXMubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSkpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZUNoYW5nZSh0aGlzLl9zZWxlY3RlZEl0ZW1zLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpKTtcbiAgICB9XG5cbiAgICBvbktleWRvd25PcHRpb24oZXZ0OiBFY2xNdWx0aXNlbGVjdE9wdGlvbktleWRvd25FdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2dC5rZXlib2FyZEV2ZW50LmtleSkge1xuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX0RPV046IHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uT3B0aW9uQXJyb3dEb3duQW5kVGFiKGV2dC5rZXlib2FyZEV2ZW50LCBldnQubXVsdGlzZWxlY3RPcHRpb24pO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkFSUk9XX1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbk9wdGlvbkFycm93VXAoZXZ0LmtleWJvYXJkRXZlbnQsIGV2dC5tdWx0aXNlbGVjdE9wdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEtleUNvZGUuRVNDQVBFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oaWRlTXVsdGlzZWxlY3REcm9wZG93bigpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLkVOVEVSOiB7XG4gICAgICAgICAgICAgICAgKGV2dC5rZXlib2FyZEV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5jbGljaygpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBLZXlDb2RlLlRBQjoge1xuICAgICAgICAgICAgICAgIHRoaXMub25PcHRpb25BcnJvd0Rvd25BbmRUYWIoZXZ0LmtleWJvYXJkRXZlbnQsIGV2dC5tdWx0aXNlbGVjdE9wdGlvbik7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk9wdGlvblNlbGVjdGVkKGV2dDogRWNsTXVsdGlzZWxlY3RPcHRpb25DbGlja0V2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdEFsbENoZWNrYm94Lm5hdGl2ZUVsZW1lbnQuY2hlY2tlZCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LmNoZWNrZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyT3B0aW9uID0gZXZ0Lm11bHRpc2VsZWN0T3B0aW9uO1xuICAgICAgICBpZiAoY3Vyck9wdGlvbi5pc0NoZWNrZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChjdXJyT3B0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fc2VsZWN0ZWRJdGVtcy5pbmRleE9mKGN1cnJPcHRpb24pO1xuICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucHJvcGFnYXRlQ2hhbmdlKHRoaXMuX3NlbGVjdGVkSXRlbXMubWFwKGl0ZW0gPT4gaXRlbS52YWx1ZSkpO1xuICAgICAgICB0aGlzLnByb3BhZ2F0ZVRvdWNoZWQoKTtcbiAgICAgICAgdGhpcy5lY2xDaGFuZ2UuZW1pdCh0aGlzLl9zZWxlY3RlZEl0ZW1zLm1hcChpdGVtID0+IGl0ZW0udmFsdWUpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZ2V0QWxsQWN0aXZlT3B0aW9ucygpLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpZiAoIWl0ZW0uaXNDaGVja2VkKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5pc0NoZWNrZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1bnNlbGVjdEFsbEFjdGl2ZU9wdGlvbnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5nZXRBbGxBY3RpdmVPcHRpb25zKCkuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGl0ZW0uaXNDaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0QWxsQWN0aXZlT3B0aW9ucygpOiBFY2xNdWx0aXNlbGVjdE9wdGlvbkNvbXBvbmVudFtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmZpbHRlcihlbGVtID0+IGVsZW0uaXNBY3RpdmUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcHJvcGFnYXRlQ2hhbmdlID0gKF86IGFueSkgPT4ge1xuICAgIH07XG5cbiAgICBwcml2YXRlIHByb3BhZ2F0ZVRvdWNoZWQgPSAoKSA9PiB7XG4gICAgfTtcblxuICAgIHByaXZhdGUgc2hvd011bHRpc2VsZWN0RHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93TXVsdGlzZWxlY3REcm9wZG93biA9IHRydWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlTXVsdGlzZWxlY3REcm9wZG93bigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBkaXNhYmxlU2VsZWN0QWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNlbGVjdEFsbC5pc0Rpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGVuYWJsZVNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RBbGwuaXNEaXNhYmxlZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd05vUmVzdWx0c0ZvdW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzU2hvd05vUmVzdWx0c0ZvdW5kID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhpZGVOb1Jlc3VsdHNGb3VuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pc1Nob3dOb1Jlc3VsdHNGb3VuZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVzZXRDb21wb25lbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICBpdGVtLmlzQ2hlY2tlZCA9IGZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5jaGVja2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtcyA9IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgd3JpdGVWYWx1ZXModmFsdWVzOiBBcnJheTxzdHJpbmc+KTogdm9pZCB7XG4gICAgICAgIGlmICh2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRWxlbWVudHNBcnJheSA9IFtdO1xuICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzICYmIHRoaXMubXVsdGlPcHRpb25Db21wb25lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5maWx0ZXIoaXRlbSA9PiB2YWx1ZXMuaW5jbHVkZXMoaXRlbS52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWl0ZW0uZGlzYWJsZWQpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsLmlzQ2hlY2tlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEVsZW1lbnRzQXJyYXkucHVzaChlbC5sYWJlbCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1zLnB1c2goZWwpO1xuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNTaG93TXVsdGlzZWxlY3REcm9wZG93biA9ICF0aGlzLmlzU2hvd011bHRpc2VsZWN0RHJvcGRvd247XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBvbk9wdGlvbkFycm93RG93bkFuZFRhYihldnQ6IEtleWJvYXJkRXZlbnQsIG9wdGlvbjogRWNsTXVsdGlzZWxlY3RPcHRpb24pOiB2b2lkIHtcbiAgICAgICAgKGV2dCBhcyBLZXlib2FyZEV2ZW50KS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0T3B0aW9uSW5kZXhCeUlkRnJvbUFjdGl2ZU9wdGlvbnMob3B0aW9uLmlkKTtcbiAgICAgICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKTtcbiAgICAgICAgaWYgKGluZGV4ICE9PSBjdXJyZW50T3B0aW9ucy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgICBjb25zdCBuZXh0U2libGluZ0NoZWNrYm94ID0gY3VycmVudE9wdGlvbnNbaW5kZXggKyAxXTtcbiAgICAgICAgICAgIG5leHRTaWJsaW5nQ2hlY2tib3gub25Gb2N1cygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRoaXMuY2xlYXJBbGxCdG4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQWxsQnRuLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5lY2xNdWx0aXNlbGVjdElucHV0Lm9uRm9jdXMoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgb25PcHRpb25BcnJvd1VwKGV2dDogS2V5Ym9hcmRFdmVudCwgb3B0aW9uOiBFY2xNdWx0aXNlbGVjdE9wdGlvbik6IHZvaWQge1xuICAgICAgICAoZXZ0IGFzIEtleWJvYXJkRXZlbnQpLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5nZXRPcHRpb25JbmRleEJ5SWRGcm9tQWN0aXZlT3B0aW9ucyhvcHRpb24uaWQpO1xuICAgICAgICBpZiAoaW5kZXggIT09IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZTaWJsaW5nQ2hlY2tib3ggPSB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKVtpbmRleCAtIDFdO1xuICAgICAgICAgICAgcHJldlNpYmxpbmdDaGVja2JveC5vbkZvY3VzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RBbGxDaGVja2JveC5uYXRpdmVFbGVtZW50LmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0QWxsQ2hlY2tib3gubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRBY3RpdmVPcHRpb25zKCk6IEVjbE11bHRpc2VsZWN0T3B0aW9uQ29tcG9uZW50W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5tdWx0aU9wdGlvbkNvbXBvbmVudHMgPyB0aGlzLm11bHRpT3B0aW9uQ29tcG9uZW50cy5maWx0ZXIoaXRlbSA9PiBpdGVtLmlzQWN0aXZlKSA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3B0aW9uSW5kZXhCeUlkRnJvbUFjdGl2ZU9wdGlvbnMoaWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEFjdGl2ZU9wdGlvbnMoKS5maW5kSW5kZXgob3B0aW9uID0+IG9wdGlvbi5pZCA9PT0gaWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VsZWN0QWxsSWQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHV1aWRnZW4oKTtcbiAgICB9XG59XG4iLCI8ZGl2IGVjbE11bHRpc2VsZWN0SW5wdXRcbiAgICAgI2VjbE11bHRpc2VsZWN0SW5wdXRcbiAgICAgW2lucHV0UGxhY2Vob2xkZXJdPVwibWFpbklucHV0UGxhY2Vob2xkZXJcIlxuICAgICBbc2VsZWN0ZWRJdGVtc109XCJzZWxlY3RlZEl0ZW1zXCJcbiAgICAgKG1haW5JbnB1dENsaWNrKT1cIm9uQ2xpY2tNYWluSW5wdXQoJGV2ZW50KVwiXG4gICAgIChtYWluSW5wdXRLZXlkb3duKT1cIm9uS2V5ZG93bk1haW5JbnB1dCgkZXZlbnQpXCJcbiAgICAgW2lzRGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICBbaXNJbnZhbGlkXT1cImlzSW52YWxpZFwiPjwvZGl2PlxuPGRpdiBbc3R5bGUuZGlzcGxheV09XCJpc1Nob3dNdWx0aXNlbGVjdERyb3Bkb3duID8gJ2Jsb2NrJyA6ICdub25lJ1wiXG4gICAgIGNsYXNzPVwiZWNsLXNlbGVjdF9fbXVsdGlwbGUtZHJvcGRvd24gZWNsLXNlbGVjdF9fY29udGFpbmVyIGVjbC1zZWxlY3RfX2NvbnRhaW5lci0tbVwiPlxuICAgIDxpbnB1dCBjbGFzcz1cImVjbC10ZXh0LWlucHV0XCJcbiAgICAgICAgICAgdHlwZT1cInNlYXJjaFwiXG4gICAgICAgICAgICNzZWFyY2hJbnB1dFxuICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoRmllbGRQbGFjZWhvbGRlclwiXG4gICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRW50ZXJTZWFyY2goJGV2ZW50KVwiXG4gICAgICAgICAgIChrZXlkb3duLmFycm93dXApPVwib25BcnJvd1VwU2VhcmNoKCRldmVudClcIlxuICAgICAgICAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwib25BcnJvd0Rvd25TZWFyY2goJGV2ZW50KVwiPlxuICAgIDxkaXYgZWNsQ2hlY2tib3hcbiAgICAgICAgICNzZWxlY3RBbGxcbiAgICAgICAgIGNsYXNzPVwiZWNsLXNlbGVjdF9fbXVsdGlwbGUtYWxsXCI+XG4gICAgICAgIDxpbnB1dCBlY2xDaGVja2JveElucHV0XG4gICAgICAgICAgICAgICAjc2VsZWN0QWxsQ2hlY2tib3hcbiAgICAgICAgICAgICAgIFtpZF09XCJzZWxlY3RBbGxJZFwiXG4gICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0QWxsKClcIlxuICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJvbkFycm93VXBTZWxlY3RBbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd2Rvd24pPVwib25BcnJvd0Rvd25TZWxlY3RBbGwoJGV2ZW50KVwiPlxuICAgICAgICA8bGFiZWwgW2Zvcl09XCJzZWxlY3RBbGxJZFwiXG4gICAgICAgICAgICAgICBlY2xDaGVja2JveExhYmVsPlxuICAgICAgICAgICAge3sgJ2VjbC5tdWx0aXNlbGVjdC5TRUxFQ1QtQUxMJyB8IHRyYW5zbGF0ZSB9fSAoe3tvcHRpb25zQ291bnR9fSlcbiAgICAgICAgPC9sYWJlbD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZWNsLXNlbGVjdF9fbXVsdGlwbGUtb3B0aW9uc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIG11bHRpT3B0aW9uRGlyZWN0aXZlc1wiPlxuICAgICAgICAgICAgPGRpdiBlY2xNdWx0aXNlbGVjdE9wdGdyb3VwXG4gICAgICAgICAgICAgICAgICpuZ0lmPVwiaXRlbS5pc09wdEdyb3VwKClcIlxuICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiaXRlbS5sYWJlbFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgZWNsTXVsdGlzZWxlY3RPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBlbGVtIG9mIGl0ZW0uZWNsT3B0aW9uSXRlbXNcIlxuICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImVsZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImVsZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImVsZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2lzQ2hlY2tlZF09XCJlbGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJlbGVtLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgIChvcHRpb25DbGljayk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbktleWRvd24pPVwib25LZXlkb3duT3B0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBlY2xNdWx0aXNlbGVjdE9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXRlbS5pc09wdEdyb3VwKClcIlxuICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIml0ZW0uZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgW2lzQ2hlY2tlZF09XCJpdGVtLnNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCJpdGVtLmNsYXNzXCJcbiAgICAgICAgICAgICAgICAgICAgIChvcHRpb25DbGljayk9XCJvbk9wdGlvblNlbGVjdGVkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbktleWRvd24pPVwib25LZXlkb3duT3B0aW9uKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJpc1Nob3dOb1Jlc3VsdHNGb3VuZFwiXG4gICAgICAgICAgICAgY2xhc3M9XCJlY2wtc2VsZWN0X19tdWx0aXBsZS1uby1yZXN1bHRzXCI+XG4gICAgICAgICAgICA8c3Bhbj57eyAnZWNsLm11bHRpc2VsZWN0Lk5PLVJFU1VMVFMtRk9VTkQnIHwgdHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiaXNTaG93VG9vbGJhclwiXG4gICAgICAgICBjbGFzcz1cImVjbC1zZWxlY3QtbXVsdGlwbGUtdG9vbGJhclwiPlxuICAgICAgICA8YnV0dG9uIGVjbEJ1dHRvblxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJnaG9zdFwiXG4gICAgICAgICAgICAgICAgI2NsZWFyQWxsQnRuXG4gICAgICAgICAgICAgICAgKGtleWRvd24uYXJyb3d1cCk9XCJvbkFycm93VXBDbG9zZUNsZWFyKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93cmlnaHQpPVwib25BcnJvd1JpZ2h0Q2xlYXIoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ2xpY2tDbGVhckFsbCgkZXZlbnQpXCI+XG4gICAgICAgICAgICB7eyAnZWNsLm11bHRpc2VsZWN0LkNMRUFSLUFMTCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gZWNsQnV0dG9uXG4gICAgICAgICAgICAgICAgdmFyaWFudD1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICNjbG9zZUJ0blxuICAgICAgICAgICAgICAgIChrZXlkb3duLmFycm93dXApPVwib25BcnJvd1VwQ2xvc2VDbGVhcigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi5hcnJvd2xlZnQpPVwib25BcnJvd0xlZnRDbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoa2V5ZG93bi50YWIpPVwib25UYWJDbG9zZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGlja0Nsb3NlKCRldmVudClcIj57eyAnZWNsLmNvbW1vbi5DTE9TRScgfCB0cmFuc2xhdGUgfX08L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==