@ethlete/cdk 2.4.0 → 2.5.1

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 (238) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/esm2022/lib/components/accordion/components/accordion/accordion.component.mjs +3 -3
  3. package/esm2022/lib/components/accordion/components/accordion-group/accordion-group.component.mjs +3 -3
  4. package/esm2022/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.mjs +3 -3
  5. package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.mjs +3 -3
  6. package/esm2022/lib/components/accordion/partials/accordion-label/accordion-label.directive.mjs +3 -3
  7. package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.mjs +3 -3
  8. package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +3 -3
  9. package/esm2022/lib/components/bracket/directives/bracket-match/bracket-match.directive.mjs +3 -3
  10. package/esm2022/lib/components/bracket/directives/bracket-round/bracket-round.directive.mjs +3 -3
  11. package/esm2022/lib/components/bracket/partials/bracket-match/bracket-match.component.mjs +3 -3
  12. package/esm2022/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.mjs +3 -3
  13. package/esm2022/lib/components/button/components/button/button.component.mjs +3 -3
  14. package/esm2022/lib/components/button/components/query-button/query-button.component.mjs +3 -3
  15. package/esm2022/lib/components/button/directives/button/button.directive.mjs +3 -3
  16. package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +3 -3
  17. package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +3 -3
  18. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +3 -3
  19. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +3 -3
  20. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +3 -3
  21. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +3 -3
  22. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +3 -3
  23. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +3 -3
  24. package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +3 -3
  25. package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +3 -3
  26. package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +3 -3
  27. package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +3 -3
  28. package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +3 -3
  29. package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +3 -3
  30. package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +3 -3
  31. package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +3 -3
  32. package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +3 -3
  33. package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +3 -3
  34. package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +3 -3
  35. package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +3 -3
  36. package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +3 -3
  37. package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +3 -3
  38. package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +3 -3
  39. package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +3 -3
  40. package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +3 -3
  41. package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +3 -3
  42. package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +3 -3
  43. package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +3 -3
  44. package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +3 -3
  45. package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +3 -3
  46. package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +3 -3
  47. package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +3 -3
  48. package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +3 -3
  49. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +4 -5
  50. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +3 -3
  51. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +3 -3
  52. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +3 -3
  53. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +3 -3
  54. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +3 -3
  55. package/esm2022/lib/components/forms/components/select/components/combobox/combobox.imports.mjs +12 -0
  56. package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +486 -0
  57. package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/public-api.mjs +2 -0
  58. package/esm2022/lib/components/forms/components/select/components/combobox/components/index.mjs +2 -0
  59. package/esm2022/lib/components/forms/components/select/components/combobox/components/public-api.mjs +2 -0
  60. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +26 -0
  61. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/public-api.mjs +2 -0
  62. package/esm2022/lib/components/forms/components/select/components/combobox/directives/public-api.mjs +2 -0
  63. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +49 -0
  64. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/public-api.mjs +2 -0
  65. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +64 -0
  66. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/index.mjs +2 -0
  67. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/public-api.mjs +2 -0
  68. package/esm2022/lib/components/forms/components/select/components/combobox/partials/index.mjs +2 -0
  69. package/esm2022/lib/components/forms/components/select/components/combobox/partials/public-api.mjs +3 -0
  70. package/esm2022/lib/components/forms/components/select/components/combobox/public-api.mjs +4 -0
  71. package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +3 -3
  72. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +3 -3
  73. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +3 -3
  74. package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +3 -3
  75. package/esm2022/lib/components/forms/components/select/components/public-api.mjs +2 -1
  76. package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +18 -31
  77. package/esm2022/lib/components/forms/components/select/components/select/directives/index.mjs +2 -0
  78. package/esm2022/lib/components/forms/components/select/components/select/directives/public-api.mjs +4 -0
  79. package/esm2022/lib/components/forms/components/select/components/select/directives/select/index.mjs +2 -0
  80. package/esm2022/lib/components/forms/components/select/components/select/directives/select/public-api.mjs +2 -0
  81. package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +455 -0
  82. package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/index.mjs +2 -0
  83. package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/public-api.mjs +2 -0
  84. package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +61 -0
  85. package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/index.mjs +2 -0
  86. package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/public-api.mjs +2 -0
  87. package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +121 -0
  88. package/esm2022/lib/components/forms/components/select/components/select/partials/public-api.mjs +1 -2
  89. package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +22 -7
  90. package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +14 -8
  91. package/esm2022/lib/components/forms/components/select/components/select/public-api.mjs +2 -1
  92. package/esm2022/lib/components/forms/components/select/components/select/select.imports.mjs +2 -3
  93. package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +10 -7
  94. package/esm2022/lib/components/forms/components/select/directives/index.mjs +2 -0
  95. package/esm2022/lib/components/forms/components/select/directives/public-api.mjs +2 -0
  96. package/esm2022/lib/components/forms/components/select/directives/select-field/public-api.mjs +2 -0
  97. package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +21 -0
  98. package/esm2022/lib/components/forms/components/select/public-api.mjs +2 -1
  99. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +3 -3
  100. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +3 -3
  101. package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +3 -3
  102. package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +3 -3
  103. package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +3 -3
  104. package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +3 -3
  105. package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +3 -3
  106. package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +3 -3
  107. package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +3 -3
  108. package/esm2022/lib/components/forms/directives/input/input.directive.mjs +47 -32
  109. package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +3 -3
  110. package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +3 -3
  111. package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +3 -3
  112. package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +3 -3
  113. package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +3 -3
  114. package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +3 -3
  115. package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +3 -3
  116. package/esm2022/lib/components/forms/services/form-field-state.service.mjs +3 -3
  117. package/esm2022/lib/components/forms/services/form-group-state.service.mjs +3 -3
  118. package/esm2022/lib/components/forms/services/input-state.service.mjs +3 -3
  119. package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +3 -3
  120. package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +4 -4
  121. package/esm2022/lib/components/forms/utils/input.base.mjs +8 -8
  122. package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +3 -3
  123. package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +3 -3
  124. package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +3 -3
  125. package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +3 -3
  126. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +3 -3
  127. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +3 -3
  128. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +3 -3
  129. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +3 -3
  130. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +3 -3
  131. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +3 -3
  132. package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +3 -3
  133. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +3 -3
  134. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +3 -3
  135. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +3 -3
  136. package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +3 -3
  137. package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +3 -3
  138. package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +3 -3
  139. package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +3 -3
  140. package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +3 -3
  141. package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +3 -3
  142. package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +3 -3
  143. package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +3 -3
  144. package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +3 -3
  145. package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +3 -3
  146. package/esm2022/lib/components/picture/picture-data.directive.mjs +3 -3
  147. package/esm2022/lib/components/picture/picture.component.mjs +3 -3
  148. package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +3 -3
  149. package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +3 -3
  150. package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +3 -3
  151. package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +3 -3
  152. package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +3 -3
  153. package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +3 -3
  154. package/esm2022/lib/components/sort/services/sort-header-intl.mjs +3 -3
  155. package/esm2022/lib/components/table/components/table/table.component.mjs +3 -3
  156. package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +3 -3
  157. package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +3 -3
  158. package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +3 -3
  159. package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +3 -3
  160. package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +3 -3
  161. package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +3 -3
  162. package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +3 -3
  163. package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +3 -3
  164. package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +3 -3
  165. package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +3 -3
  166. package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +3 -3
  167. package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +3 -3
  168. package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +3 -3
  169. package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +3 -3
  170. package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +3 -3
  171. package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +3 -3
  172. package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +3 -3
  173. package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +3 -3
  174. package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +3 -3
  175. package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +3 -3
  176. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +3 -3
  177. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +3 -3
  178. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +3 -3
  179. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +3 -3
  180. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +3 -3
  181. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +3 -3
  182. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +3 -3
  183. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +3 -3
  184. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +3 -3
  185. package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +3 -3
  186. package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +3 -3
  187. package/esm2022/lib/services/swipe-handler.service.mjs +3 -3
  188. package/fesm2022/ethlete-cdk.mjs +1941 -719
  189. package/fesm2022/ethlete-cdk.mjs.map +1 -1
  190. package/lib/components/forms/components/select/components/combobox/combobox.imports.d.ts +5 -0
  191. package/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.d.ts +63 -0
  192. package/lib/components/forms/components/select/components/combobox/components/combobox/public-api.d.ts +1 -0
  193. package/lib/components/forms/components/select/components/combobox/components/index.d.ts +1 -0
  194. package/lib/components/forms/components/select/components/combobox/components/public-api.d.ts +1 -0
  195. package/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.d.ts +7 -0
  196. package/lib/components/forms/components/select/components/combobox/directives/combobox/public-api.d.ts +1 -0
  197. package/lib/components/forms/components/select/components/combobox/directives/public-api.d.ts +1 -0
  198. package/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.d.ts +16 -0
  199. package/lib/components/forms/components/select/components/combobox/partials/combobox-body/public-api.d.ts +1 -0
  200. package/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.d.ts +16 -0
  201. package/lib/components/forms/components/select/components/combobox/partials/combobox-option/index.d.ts +1 -0
  202. package/lib/components/forms/components/select/components/combobox/partials/combobox-option/public-api.d.ts +1 -0
  203. package/lib/components/forms/components/select/components/combobox/partials/index.d.ts +1 -0
  204. package/lib/components/forms/components/select/components/combobox/partials/public-api.d.ts +2 -0
  205. package/lib/components/forms/components/select/components/combobox/public-api.d.ts +3 -0
  206. package/lib/components/forms/components/select/components/public-api.d.ts +1 -0
  207. package/lib/components/forms/components/select/components/select/components/select/select.component.d.ts +8 -11
  208. package/lib/components/forms/components/select/components/select/directives/index.d.ts +1 -0
  209. package/lib/components/forms/components/select/components/select/directives/public-api.d.ts +3 -0
  210. package/lib/components/forms/components/select/components/select/directives/select/index.d.ts +1 -0
  211. package/lib/components/forms/components/select/components/select/directives/select/public-api.d.ts +1 -0
  212. package/lib/components/forms/components/select/components/select/directives/select/select.directive.d.ts +96 -0
  213. package/lib/components/forms/components/select/components/select/directives/select-body/index.d.ts +1 -0
  214. package/lib/components/forms/components/select/components/select/directives/select-body/public-api.d.ts +1 -0
  215. package/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.d.ts +14 -0
  216. package/lib/components/forms/components/select/components/select/directives/select-option/index.d.ts +1 -0
  217. package/lib/components/forms/components/select/components/select/directives/select-option/public-api.d.ts +1 -0
  218. package/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.d.ts +29 -0
  219. package/lib/components/forms/components/select/components/select/partials/public-api.d.ts +0 -1
  220. package/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.d.ts +6 -1
  221. package/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.d.ts +4 -1
  222. package/lib/components/forms/components/select/components/select/public-api.d.ts +1 -0
  223. package/lib/components/forms/components/select/components/select/select.imports.d.ts +2 -2
  224. package/lib/components/forms/components/select/components/select-field/select-field.component.d.ts +5 -4
  225. package/lib/components/forms/components/select/directives/index.d.ts +1 -0
  226. package/lib/components/forms/components/select/directives/public-api.d.ts +1 -0
  227. package/lib/components/forms/components/select/directives/select-field/public-api.d.ts +1 -0
  228. package/lib/components/forms/components/select/directives/select-field/select-field.directive.d.ts +8 -0
  229. package/lib/components/forms/components/select/public-api.d.ts +1 -0
  230. package/lib/components/forms/components/slider/components/slider/slider.component.d.ts +1 -1
  231. package/lib/components/forms/directives/input/input.directive.d.ts +3 -1
  232. package/lib/components/forms/utils/decorated-input.base.d.ts +1 -1
  233. package/lib/components/forms/utils/input.base.d.ts +2 -4
  234. package/package.json +5 -5
  235. package/esm2022/lib/components/forms/components/select/components/select/partials/tree-select-option/public-api.mjs +0 -2
  236. package/esm2022/lib/components/forms/components/select/components/select/partials/tree-select-option/tree-select-option.component.mjs +0 -23
  237. package/lib/components/forms/components/select/components/select/partials/tree-select-option/public-api.d.ts +0 -1
  238. package/lib/components/forms/components/select/components/select/partials/tree-select-option/tree-select-option.component.d.ts +0 -5
@@ -0,0 +1,486 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { A, DOWN_ARROW, END, ENTER, ESCAPE, HOME, PAGE_DOWN, PAGE_UP, SPACE, TAB, UP_ARROW, } from '@angular/cdk/keycodes';
3
+ import { AsyncPipe, NgFor, NgIf } from '@angular/common';
4
+ import { ChangeDetectionStrategy, Component, EventEmitter, InjectionToken, Input, Output, ViewEncapsulation, inject, isDevMode, } from '@angular/core';
5
+ import { AnimatedOverlayDirective, LetDirective, RuntimeError, SelectionModel } from '@ethlete/core';
6
+ import { BehaviorSubject, catchError, combineLatest, debounceTime, distinctUntilChanged, map, skip, skipWhile, takeUntil, tap, throwError, } from 'rxjs';
7
+ import { ChevronIconComponent } from '../../../../../../../icons';
8
+ import { INPUT_TOKEN, InputDirective, NativeInputRefDirective } from '../../../../../../directives';
9
+ import { DecoratedInputBase } from '../../../../../../utils';
10
+ import { SELECT_FIELD_TOKEN } from '../../../../directives';
11
+ import { ComboboxBodyComponent } from '../../partials';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "../../../../../../directives/input/input.directive";
14
+ import * as i2 from "@ethlete/core";
15
+ const COMBOBOX_ERRORS = {
16
+ 1: 'Expected options to be an array of objects. This is due to "bindLabel" and "bindValue" being set.',
17
+ 2: 'Expected options to be an array of primitives. This is due to "bindLabel" and "bindValue" not being set or "allowCustomValues" being set to true.',
18
+ };
19
+ const comboboxError = (code, data) => {
20
+ const message = `<et-combobox>: ${COMBOBOX_ERRORS[code]}`;
21
+ throw new RuntimeError(code, message, data);
22
+ };
23
+ const isPrimitiveArray = (value) => {
24
+ if (!Array.isArray(value))
25
+ return false;
26
+ const first = value[0];
27
+ const last = value[value.length - 1];
28
+ if (!first || !last)
29
+ return false;
30
+ return typeof first !== 'object' && typeof last !== 'object';
31
+ };
32
+ const isObjectArray = (value) => {
33
+ if (!Array.isArray(value))
34
+ return false;
35
+ const first = value[0];
36
+ const last = value[value.length - 1];
37
+ if (!first || !last)
38
+ return false;
39
+ return typeof first === 'object' && typeof last === 'object';
40
+ };
41
+ const isEmptyArray = (value) => {
42
+ return Array.isArray(value) && value.length === 0;
43
+ };
44
+ const ComboboxOptionType = {
45
+ Primitive: 'primitive',
46
+ Object: 'object',
47
+ };
48
+ export const COMBOBOX_TOKEN = new InjectionToken('ET_COMBOBOX_TOKEN');
49
+ class ComboboxComponent extends DecoratedInputBase {
50
+ //#endregion
51
+ //#region Inputs
52
+ get options() {
53
+ return this._selectionModel.getFilteredOptions();
54
+ }
55
+ set options(value) {
56
+ this._selectionModel.setOptions(value);
57
+ }
58
+ set initialValue(value) {
59
+ this._selectionModel.setSelection(value);
60
+ }
61
+ get filterInternal() {
62
+ return this._filterInternal$.value;
63
+ }
64
+ set filterInternal(value) {
65
+ const val = coerceBooleanProperty(value);
66
+ this._filterInternal$.next(val);
67
+ if (!val) {
68
+ this._selectionModel.setFilter('');
69
+ }
70
+ else {
71
+ this._selectionModel.setFilter(this._currentFilter);
72
+ }
73
+ }
74
+ get loading() {
75
+ return this._loading$.value;
76
+ }
77
+ set loading(value) {
78
+ this._loading$.next(coerceBooleanProperty(value));
79
+ }
80
+ get error() {
81
+ return this._error$.value;
82
+ }
83
+ set error(value) {
84
+ this._error$.next(value);
85
+ }
86
+ get placeholder() {
87
+ return this._placeholder$.value;
88
+ }
89
+ set placeholder(value) {
90
+ this._placeholder$.next(value);
91
+ }
92
+ set multiple(value) {
93
+ this._selectionModel.setAllowMultiple(coerceBooleanProperty(value));
94
+ }
95
+ set bindLabel(value) {
96
+ this._selectionModel.setLabelBinding(value);
97
+ }
98
+ set bindValue(value) {
99
+ this._selectionModel.setValueBinding(value);
100
+ }
101
+ get allowCustomValues() {
102
+ return this._allowCustomValues$.value;
103
+ }
104
+ set allowCustomValues(value) {
105
+ this._allowCustomValues$.next(coerceBooleanProperty(value));
106
+ }
107
+ //#endregion
108
+ //#region Members
109
+ get _currentFilter() {
110
+ return this._currentFilter$.value;
111
+ }
112
+ get _isOpen() {
113
+ return this._animatedOverlay.isMounted;
114
+ }
115
+ //#endregion
116
+ //#region Computes
117
+ //#endregion
118
+ //#region Lifecycle
119
+ constructor() {
120
+ super();
121
+ //#region Injects
122
+ this._input = inject(INPUT_TOKEN);
123
+ this._animatedOverlay = inject(AnimatedOverlayDirective);
124
+ this._selectField = inject(SELECT_FIELD_TOKEN);
125
+ this._filterInternal$ = new BehaviorSubject(true);
126
+ this._loading$ = new BehaviorSubject(false);
127
+ this.loading$ = this._loading$.asObservable();
128
+ this._error$ = new BehaviorSubject(null);
129
+ this._placeholder$ = new BehaviorSubject(null);
130
+ this._allowCustomValues$ = new BehaviorSubject(false);
131
+ //#endregion
132
+ //#region Outputs
133
+ this.filterChange = new EventEmitter();
134
+ this._currentFilter$ = new BehaviorSubject('');
135
+ this._isOpen$ = this._animatedOverlay.isMounted$;
136
+ this._selectionModel = new SelectionModel();
137
+ this.selectedOptions$ = this._selectionModel.selection$;
138
+ this.multiple$ = this._selectionModel.allowMultiple$;
139
+ this.options$ = this._selectionModel.filteredOptions$;
140
+ this._bindings.push({
141
+ attribute: 'class.et-combobox--loading',
142
+ observable: this._loading$,
143
+ });
144
+ this._bindings.push({
145
+ attribute: 'class.et-combobox--error',
146
+ observable: this._error$.pipe(map((v) => !!v)),
147
+ });
148
+ this._bindings.push({
149
+ attribute: 'class.et-combobox--open',
150
+ observable: this._isOpen$,
151
+ });
152
+ this._selectField._bindings.push({
153
+ attribute: 'class.et-select-field--open',
154
+ observable: this._isOpen$,
155
+ });
156
+ }
157
+ ngOnInit() {
158
+ this._initDispatchFilterChanges();
159
+ this._initRepositionOnValueChanges();
160
+ if (isDevMode()) {
161
+ this._debugValidateComboboxConfig();
162
+ }
163
+ this._selectionModel.value$
164
+ .pipe(takeUntil(this._destroy$), tap((value) => {
165
+ this._input._updateValue(value);
166
+ this._setFilterFromInputValue();
167
+ }))
168
+ .subscribe();
169
+ }
170
+ //#endregion
171
+ //#region Public Methods
172
+ getOptionLabel(option) {
173
+ return this._selectionModel.getLabel$(option);
174
+ }
175
+ getOptionValue(option) {
176
+ return this._selectionModel.getValue$(option);
177
+ }
178
+ removeSelectedOption(option) {
179
+ this._selectionModel.removeSelectedOption(option);
180
+ this.input._markAsTouched();
181
+ }
182
+ open() {
183
+ // if (!this._selectBodyConfig) return;
184
+ if (this._isOpen || this.input.disabled)
185
+ return;
186
+ // this._setSelectedOptionActive();
187
+ const instance = this._animatedOverlay.mount({
188
+ component: ComboboxBodyComponent,
189
+ mirrorWidth: true,
190
+ // data: { _bodyTemplate: this._selectBodyConfig.template },
191
+ });
192
+ if (!instance)
193
+ return;
194
+ // this._selectBodyId$.next(instance.selectBody.id);
195
+ }
196
+ close() {
197
+ if (!this._isOpen)
198
+ return;
199
+ this._animatedOverlay.unmount();
200
+ // this._selectBodyId$.next(null);
201
+ }
202
+ writeValueFromOption(option) {
203
+ this.input._markAsTouched();
204
+ if (this._selectionModel.allowMultiple) {
205
+ this._selectionModel.toggleSelectedOption(option);
206
+ }
207
+ else {
208
+ this._selectionModel.addSelectedOption(option);
209
+ }
210
+ if (!this._selectionModel.allowMultiple) {
211
+ this.close();
212
+ this._setFilterFromInputValue();
213
+ }
214
+ }
215
+ isOptionSelected(option) {
216
+ return this._selectionModel.isSelected$(option);
217
+ }
218
+ //#endregion
219
+ //#region Protected Methods
220
+ processKeydownEvent(event) {
221
+ const keyCode = event.keyCode;
222
+ const isOpen = this._isOpen;
223
+ const isMultiple = this._selectionModel.allowMultiple;
224
+ const canAddCustomValue = this.allowCustomValues;
225
+ const value = event.target.value;
226
+ const hasFilterValue = !!value;
227
+ const result = {};
228
+ // The user typed a custom value and pressed enter. Add it to the selected options.
229
+ if (keyCode === ENTER) {
230
+ if (canAddCustomValue && hasFilterValue) {
231
+ result.optionAction = { type: 'add', option: value };
232
+ }
233
+ else {
234
+ if (isMultiple) {
235
+ // TODO: Toggle the focused option
236
+ }
237
+ else {
238
+ // TODO: Select the focused option
239
+ }
240
+ }
241
+ if (isMultiple) {
242
+ result.setFilter = '';
243
+ }
244
+ else {
245
+ result.overlayOperation = 'close';
246
+ }
247
+ return this._interpretKeyHandlerResult(result);
248
+ }
249
+ if (keyCode === SPACE) {
250
+ if (isMultiple) {
251
+ result.setFilter = '';
252
+ // TODO: Toggle the focused option
253
+ }
254
+ else {
255
+ result.overlayOperation = 'close';
256
+ // TODO: Select the focused option
257
+ }
258
+ return this._interpretKeyHandlerResult(result);
259
+ }
260
+ if (keyCode === ESCAPE) {
261
+ if (isOpen) {
262
+ result.overlayOperation = 'close';
263
+ }
264
+ else if (!isMultiple) {
265
+ result.setFilter = '';
266
+ result.optionAction = 'clear';
267
+ }
268
+ return this._interpretKeyHandlerResult(result);
269
+ }
270
+ if (keyCode === TAB) {
271
+ result.overlayOperation = 'close';
272
+ return this._interpretKeyHandlerResult(result);
273
+ }
274
+ if (!isOpen) {
275
+ result.overlayOperation = 'open';
276
+ }
277
+ if (keyCode === DOWN_ARROW) {
278
+ result.focusAction = 'next';
279
+ }
280
+ if (keyCode === UP_ARROW) {
281
+ result.focusAction = 'previous';
282
+ }
283
+ if (keyCode === PAGE_UP) {
284
+ result.focusAction = { type: 'offset', offset: -10 };
285
+ }
286
+ if (keyCode === PAGE_DOWN) {
287
+ result.focusAction = { type: 'offset', offset: 10 };
288
+ }
289
+ if (keyCode === HOME) {
290
+ result.focusAction = 'first';
291
+ }
292
+ if (keyCode === END) {
293
+ result.focusAction = 'last';
294
+ }
295
+ if (keyCode === A && event.ctrlKey && isMultiple) {
296
+ result.optionAction = 'toggleAll';
297
+ event.preventDefault();
298
+ }
299
+ return this._interpretKeyHandlerResult(result);
300
+ }
301
+ processInputEvent(event) {
302
+ const value = event.target.value;
303
+ this._updateFilter(value);
304
+ }
305
+ handleBlurEvent() {
306
+ this.input._markAsTouched();
307
+ this.input._setShouldDisplayError(true);
308
+ if (this._selectionModel.allowMultiple)
309
+ return;
310
+ if (this._currentFilter === '') {
311
+ this._selectionModel.clearSelectedOptions();
312
+ return;
313
+ }
314
+ this._setFilterFromInputValue();
315
+ }
316
+ //#endregion
317
+ //#region Private Methods
318
+ _initDispatchFilterChanges() {
319
+ this._currentFilter$
320
+ .pipe(skipWhile(() => this.filterInternal), debounceTime(300), distinctUntilChanged(), takeUntil(this._destroy$), tap((v) => this.filterChange.emit(v)))
321
+ .subscribe();
322
+ }
323
+ _initRepositionOnValueChanges() {
324
+ this.input.valueChange$
325
+ .pipe(takeUntil(this._destroy$), debounceTime(0), tap(() => this._animatedOverlay._reposition()))
326
+ .subscribe();
327
+ }
328
+ _updateFilter(value) {
329
+ if (this.input.nativeInputRef && this.input.nativeInputRef.element.nativeElement.value !== value) {
330
+ this.input.nativeInputRef.element.nativeElement.value = value;
331
+ }
332
+ if (this._currentFilter === value)
333
+ return;
334
+ this._currentFilter$.next(value);
335
+ if (this.filterInternal) {
336
+ this._selectionModel.setFilter(value);
337
+ }
338
+ }
339
+ _setFilterFromInputValue() {
340
+ if (this._selectionModel.allowMultiple)
341
+ return;
342
+ const value = this.input.value;
343
+ if (!value || Array.isArray(value)) {
344
+ this._updateFilter('');
345
+ return;
346
+ }
347
+ const option = this._selectionModel.getOptionByValue(value);
348
+ if (!option)
349
+ return;
350
+ const label = this._selectionModel.getLabel(option);
351
+ if (typeof label !== 'string')
352
+ return;
353
+ this._updateFilter(label);
354
+ }
355
+ _interpretKeyHandlerResult(result) {
356
+ if (result.overlayOperation === 'close') {
357
+ this.close();
358
+ }
359
+ else if (result.overlayOperation === 'open') {
360
+ this.open();
361
+ }
362
+ if (result.setFilter !== undefined) {
363
+ this._updateFilter(result.setFilter);
364
+ }
365
+ if (result.optionAction) {
366
+ if (typeof result.optionAction === 'string') {
367
+ if (result.optionAction === 'clear') {
368
+ this._selectionModel.clearSelectedOptions();
369
+ }
370
+ else if (result.optionAction === 'toggleAll') {
371
+ this._selectionModel.toggleAllSelectedOptions();
372
+ }
373
+ }
374
+ else {
375
+ const { type, option } = result.optionAction;
376
+ if (type === 'add') {
377
+ this._selectionModel.addSelectedOption(option);
378
+ }
379
+ if (type === 'remove') {
380
+ this._selectionModel.removeSelectedOption(option);
381
+ }
382
+ if (type === 'toggle') {
383
+ this._selectionModel.toggleSelectedOption(option);
384
+ }
385
+ }
386
+ }
387
+ if (result.focusAction) {
388
+ if (typeof result.focusAction === 'string') {
389
+ if (result.focusAction === 'first') {
390
+ // TODO: Implement
391
+ }
392
+ if (result.focusAction === 'last') {
393
+ // TODO: Implement
394
+ }
395
+ if (result.focusAction === 'next') {
396
+ // TODO: Implement
397
+ }
398
+ if (result.focusAction === 'previous') {
399
+ // TODO: Implement
400
+ }
401
+ }
402
+ else {
403
+ const { type } = result.focusAction;
404
+ if (type === 'offset') {
405
+ const { offset } = result.focusAction;
406
+ // TODO: Implement
407
+ }
408
+ }
409
+ }
410
+ }
411
+ //#endregion
412
+ //#region Dev mode
413
+ _debugValidateComboboxConfig(isRetry = false) {
414
+ combineLatest([this._selectionModel.labelBinding$, this._selectionModel.valueBinding$, this._allowCustomValues$])
415
+ .pipe(skip(isRetry ? 1 : 0), // Skip if retrying to avoid infinite loop
416
+ debounceTime(0), takeUntil(this._destroy$), map(([bindLabel, bindValue, allowCustomValues]) => {
417
+ const shouldBeObjects = bindLabel && bindValue && !allowCustomValues;
418
+ if (shouldBeObjects) {
419
+ return ComboboxOptionType.Object;
420
+ }
421
+ return ComboboxOptionType.Primitive;
422
+ }), tap((expectedOptionType) => {
423
+ const options = this._selectionModel.options;
424
+ if (isEmptyArray(options)) {
425
+ return;
426
+ }
427
+ if (expectedOptionType === ComboboxOptionType.Object) {
428
+ if (!isObjectArray(options)) {
429
+ throw comboboxError(1, options);
430
+ }
431
+ }
432
+ else if (expectedOptionType === ComboboxOptionType.Primitive) {
433
+ if (!isPrimitiveArray(options)) {
434
+ throw comboboxError(2, options);
435
+ }
436
+ }
437
+ }), catchError((e) => {
438
+ this._debugValidateComboboxConfig(true);
439
+ return throwError(() => e);
440
+ }))
441
+ .subscribe();
442
+ }
443
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: ComboboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
444
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.2", type: ComboboxComponent, isStandalone: true, selector: "et-combobox", inputs: { options: "options", initialValue: "initialValue", filterInternal: "filterInternal", loading: "loading", error: "error", placeholder: "placeholder", multiple: "multiple", bindLabel: "bindLabel", bindValue: "bindValue", allowCustomValues: "allowCustomValues" }, outputs: { filterChange: "filterChange" }, host: { classAttribute: "et-combobox" }, providers: [
445
+ {
446
+ provide: COMBOBOX_TOKEN,
447
+ useExisting: ComboboxComponent,
448
+ },
449
+ ], usesInheritance: true, hostDirectives: [{ directive: i1.InputDirective }, { directive: i2.AnimatedOverlayDirective }], ngImport: i0, template: "<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\n<!-- eslint-disable @angular-eslint/template/use-track-by-function -->\n<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-combobox-wrapper\">\n <ul *ngIf=\"multiple$ | async\" class=\"et-combobox-selected-options\">\n <li *ngFor=\"let item of selectedOptions$ | async\" class=\"et-combobox-selected-option\">\n {{ getOptionLabel(item) | async }}\n <span (click)=\"removeSelectedOption(item)\" class=\"et-combobox-selected-option-remove\" tabindex=\"-1\"> x </span>\n </li>\n </ul>\n\n <input\n (keydown)=\"processKeydownEvent($event)\"\n (click)=\"open()\"\n (blur)=\"handleBlurEvent()\"\n (input)=\"processInputEvent($event)\"\n type=\"text\"\n etNativeInputRef\n />\n\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{opacity:0;transform:scaleY(0)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:transform 125ms var(--ease-out-5),opacity 125ms var(--ease-out-5)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:transform 50ms var(--ease-in-5),opacity 50ms var(--ease-in-5)}.et-combobox-body.et-with-default-animation[data-popper-placement^=top] .et-combobox-body-container{transform-origin:bottom}.et-combobox-body.et-with-default-animation[data-popper-placement^=bottom] .et-combobox-body-container{transform-origin:top}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:300px;overflow:auto}@supports (overflow: overlay){.et-combobox-body-container{overflow:overlay}}.et-combobox-body{width:100%;display:grid}.et-combobox-option{display:block}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}\n"], dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NativeInputRefDirective, selector: "input[etNativeInputRef], textarea[etNativeInputRef], select[etNativeInputRef], button[etNativeInputRef]" }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
450
+ }
451
+ export { ComboboxComponent };
452
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: ComboboxComponent, decorators: [{
453
+ type: Component,
454
+ args: [{ selector: 'et-combobox', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
455
+ class: 'et-combobox',
456
+ }, imports: [NgIf, NativeInputRefDirective, AsyncPipe, ChevronIconComponent, LetDirective, NgFor], hostDirectives: [{ directive: InputDirective }, AnimatedOverlayDirective], providers: [
457
+ {
458
+ provide: COMBOBOX_TOKEN,
459
+ useExisting: ComboboxComponent,
460
+ },
461
+ ], template: "<!-- eslint-disable @angular-eslint/template/click-events-have-key-events -->\n<!-- eslint-disable @angular-eslint/template/use-track-by-function -->\n<ng-content select=\"[etInputPrefix]\" />\n\n<div class=\"et-combobox-wrapper\">\n <ul *ngIf=\"multiple$ | async\" class=\"et-combobox-selected-options\">\n <li *ngFor=\"let item of selectedOptions$ | async\" class=\"et-combobox-selected-option\">\n {{ getOptionLabel(item) | async }}\n <span (click)=\"removeSelectedOption(item)\" class=\"et-combobox-selected-option-remove\" tabindex=\"-1\"> x </span>\n </li>\n </ul>\n\n <input\n (keydown)=\"processKeydownEvent($event)\"\n (click)=\"open()\"\n (blur)=\"handleBlurEvent()\"\n (input)=\"processInputEvent($event)\"\n type=\"text\"\n etNativeInputRef\n />\n\n <et-chevron-icon class=\"et-combobox-chevron\" />\n</div>\n\n<ng-content select=\"[etInputSuffix]\" />\n\n<ng-template>\n <ng-content />\n</ng-template>\n", styles: [".et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-from,.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-to{opacity:0;transform:scaleY(0)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-enter-active{transition:transform 125ms var(--ease-out-5),opacity 125ms var(--ease-out-5)}.et-combobox-body.et-with-default-animation .et-combobox-body-container.et-animation-leave-active{transition:transform 50ms var(--ease-in-5),opacity 50ms var(--ease-in-5)}.et-combobox-body.et-with-default-animation[data-popper-placement^=top] .et-combobox-body-container{transform-origin:bottom}.et-combobox-body.et-with-default-animation[data-popper-placement^=bottom] .et-combobox-body-container{transform-origin:top}.et-combobox-body-container{display:block;background-color:#3d3d3d;color:#fff;max-height:300px;overflow:auto}@supports (overflow: overlay){.et-combobox-body-container{overflow:overlay}}.et-combobox-body{width:100%;display:grid}.et-combobox-option{display:block}.et-combobox{display:block;border:1px solid #ccc;padding:15px;position:relative}.et-combobox-chevron{transform:rotate(180deg);display:block;inline-size:15px;block-size:15px;position:absolute;inset-inline-end:15px;inset-block-start:7px}\n"] }]
462
+ }], ctorParameters: function () { return []; }, propDecorators: { options: [{
463
+ type: Input,
464
+ args: [{ required: true }]
465
+ }], initialValue: [{
466
+ type: Input
467
+ }], filterInternal: [{
468
+ type: Input
469
+ }], loading: [{
470
+ type: Input
471
+ }], error: [{
472
+ type: Input
473
+ }], placeholder: [{
474
+ type: Input
475
+ }], multiple: [{
476
+ type: Input
477
+ }], bindLabel: [{
478
+ type: Input
479
+ }], bindValue: [{
480
+ type: Input
481
+ }], allowCustomValues: [{
482
+ type: Input
483
+ }], filterChange: [{
484
+ type: Output
485
+ }] } });
486
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvY29tcG9uZW50cy9jb21ib2JveC9jb21ib2JveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9jb21ib2JveC9jb21wb25lbnRzL2NvbWJvYm94L2NvbWJvYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0wsQ0FBQyxFQUNELFVBQVUsRUFDVixHQUFHLEVBQ0gsS0FBSyxFQUNMLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxFQUNULE9BQU8sRUFDUCxLQUFLLEVBQ0wsR0FBRyxFQUNILFFBQVEsR0FDVCxNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFlBQVksRUFDWixjQUFjLEVBQ2QsS0FBSyxFQUVMLE1BQU0sRUFDTixpQkFBaUIsRUFDakIsTUFBTSxFQUNOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckcsT0FBTyxFQUNMLGVBQWUsRUFDZixVQUFVLEVBQ1YsYUFBYSxF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QURYLEtBQUs7Z0JBTUYsU0FBUztzQkFEWixLQUFLO2dCQU1GLFNBQVM7c0JBRFosS0FBSztnQkFNRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBY2EsWUFBWTtzQkFEOUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEEsXG4gIERPV05fQVJST1csXG4gIEVORCxcbiAgRU5URVIsXG4gIEVTQ0FQRSxcbiAgSE9NRSxcbiAgUEFHRV9ET1dOLFxuICBQQUdFX1VQLFxuICBTUEFDRSxcbiAgVEFCLFxuICBVUF9BUlJPVyxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdGb3IsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgaW5qZWN0LFxuICBpc0Rldk1vZGUsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQW5pbWF0ZWRPdmVybGF5RGlyZWN0aXZlLCBMZXREaXJlY3RpdmUsIFJ1bnRpbWVFcnJvciwgU2VsZWN0aW9uTW9kZWwgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7XG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgY2F0Y2hFcnJvcixcbiAgY29tYmluZUxhdGVzdCxcbiAgZGVib3VuY2VUaW1lLFxuICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgbWFwLFxuICBza2lwLFxuICBza2lwV2hpbGUsXG4gIHRha2VVbnRpbCxcbiAgdGFwLFxuICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENoZXZyb25JY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vLi4vaWNvbnMnO1xuaW1wb3J0IHsgSU5QVVRfVE9LRU4sIElucHV0RGlyZWN0aXZlLCBOYXRpdmVJbnB1dFJlZkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgRGVjb3JhdGVkSW5wdXRCYXNlIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgU0VMRUNUX0ZJRUxEX1RPS0VOIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBDb21ib2JveEJvZHlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9wYXJ0aWFscyc7XG5cbmNvbnN0IENPTUJPQk9YX0VSUk9SUyA9IHtcbiAgMTogJ0V4cGVjdGVkIG9wdGlvbnMgdG8gYmUgYW4gYXJyYXkgb2Ygb2JqZWN0cy4gVGhpcyBpcyBkdWUgdG8gXCJiaW5kTGFiZWxcIiBhbmQgXCJiaW5kVmFsdWVcIiBiZWluZyBzZXQuJyxcbiAgMjogJ0V4cGVjdGVkIG9wdGlvbnMgdG8gYmUgYW4gYXJyYXkgb2YgcHJpbWl0aXZlcy4gVGhpcyBpcyBkdWUgdG8gXCJiaW5kTGFiZWxcIiBhbmQgXCJiaW5kVmFsdWVcIiBub3QgYmVpbmcgc2V0IG9yIFwiYWxsb3dDdXN0b21WYWx1ZXNcIiBiZWluZyBzZXQgdG8gdHJ1ZS4nLFxufSBhcyBjb25zdDtcblxuY29uc3QgY29tYm9ib3hFcnJvciA9IChjb2RlOiBrZXlvZiB0eXBlb2YgQ09NQk9CT1hfRVJST1JTLCBkYXRhOiB1bmtub3duKSA9PiB7XG4gIGNvbnN0IG1lc3NhZ2UgPSBgPGV0LWNvbWJvYm94PjogJHtDT01CT0JPWF9FUlJPUlNbY29kZV19YDtcblxuICB0aHJvdyBuZXcgUnVudGltZUVycm9yKGNvZGUsIG1lc3NhZ2UsIGRhdGEpO1xufTtcblxuY29uc3QgaXNQcmltaXRpdmVBcnJheSA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEFycmF5PHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4+ID0+IHtcbiAgaWYgKCFBcnJheS5pc0FycmF5KHZhbHVlKSkgcmV0dXJuIGZhbHNlO1xuXG4gIGNvbnN0IGZpcnN0ID0gdmFsdWVbMF07XG4gIGNvbnN0IGxhc3QgPSB2YWx1ZVt2YWx1ZS5sZW5ndGggLSAxXTtcblxuICBpZiAoIWZpcnN0IHx8ICFsYXN0KSByZXR1cm4gZmFsc2U7XG5cbiAgcmV0dXJuIHR5cGVvZiBmaXJzdCAhPT0gJ29iamVjdCcgJiYgdHlwZW9mIGxhc3QgIT09ICdvYmplY3QnO1xufTtcblxuY29uc3QgaXNPYmplY3RBcnJheSA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIEFycmF5PFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHJldHVybiBmYWxzZTtcblxuICBjb25zdCBmaXJzdCA9IHZhbHVlWzBdO1xuICBjb25zdCBsYXN0ID0gdmFsdWVbdmFsdWUubGVuZ3RoIC0gMV07XG5cbiAgaWYgKCFmaXJzdCB8fCAhbGFzdCkgcmV0dXJuIGZhbHNlO1xuXG4gIHJldHVybiB0eXBlb2YgZmlyc3QgPT09ICdvYmplY3QnICYmIHR5cGVvZiBsYXN0ID09PSAnb2JqZWN0Jztcbn07XG5cbmNvbnN0IGlzRW1wdHlBcnJheSA9ICh2YWx1ZTogdW5rbm93bik6IHZhbHVlIGlzIFtdID0+IHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMDtcbn07XG5cbmNvbnN0IENvbWJvYm94T3B0aW9uVHlwZSA9IHtcbiAgUHJpbWl0aXZlOiAncHJpbWl0aXZlJyxcbiAgT2JqZWN0OiAnb2JqZWN0Jyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBDT01CT0JPWF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxDb21ib2JveENvbXBvbmVudD4oJ0VUX0NPTUJPQk9YX1RPS0VOJyk7XG5cbmludGVyZmFjZSBLZXlIYW5kbGVyUmVzdWx0IHtcbiAgc2V0RmlsdGVyPzogc3RyaW5nO1xuICBvdmVybGF5T3BlcmF0aW9uPzogJ29wZW4nIHwgJ2Nsb3NlJztcbiAgb3B0aW9uQWN0aW9uPzpcbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ2FkZCc7XG4gICAgICAgIG9wdGlvbjogdW5rbm93bjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3JlbW92ZSc7XG4gICAgICAgIG9wdGlvbjogdW5rbm93bjtcbiAgICAgIH1cbiAgICB8IHtcbiAgICAgICAgdHlwZTogJ3RvZ2dsZSc7XG4gICAgICAgIG9wdGlvbjogdW5rbm93bjtcbiAgICAgIH1cbiAgICB8ICdjbGVhcidcbiAgICB8ICd0b2dnbGVBbGwnO1xuICBmb2N1c0FjdGlvbj86ICdmaXJzdCcgfCAnbGFzdCcgfCAnbmV4dCcgfCAncHJldmlvdXMnIHwgeyB0eXBlOiAnb2Zmc2V0Jzsgb2Zmc2V0OiBudW1iZXIgfTtcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtY29tYm9ib3gnLFxuICB0ZW1wbGF0ZVVybDogJy4vY29tYm9ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb21ib2JveC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtY29tYm9ib3gnLFxuICB9LFxuICBpbXBvcnRzOiBbTmdJZiwgTmF0aXZlSW5wdXRSZWZEaXJlY3RpdmUsIEFzeW5jUGlwZSwgQ2hldnJvbkljb25Db21wb25lbnQsIExldERpcmVjdGl2ZSwgTmdGb3JdLFxuICBob3N0RGlyZWN0aXZlczogW3sgZGlyZWN0aXZlOiBJbnB1dERpcmVjdGl2ZSB9LCBBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBDT01CT0JPWF9UT0tFTixcbiAgICAgIHVzZUV4aXN0aW5nOiBDb21ib2JveENvbXBvbmVudCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDb21ib2JveENvbXBvbmVudCBleHRlbmRzIERlY29yYXRlZElucHV0QmFzZSBpbXBsZW1lbnRzIE9uSW5pdCB7XG4gIC8vI3JlZ2lvbiBJbmplY3RzXG5cbiAgcHJpdmF0ZSByZWFkb25seSBfaW5wdXQgPSBpbmplY3QoSU5QVVRfVE9LRU4pO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbmltYXRlZE92ZXJsYXkgPSBpbmplY3Q8QW5pbWF0ZWRPdmVybGF5RGlyZWN0aXZlPENvbWJvYm94Qm9keUNvbXBvbmVudD4+KEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdEZpZWxkID0gaW5qZWN0KFNFTEVDVF9GSUVMRF9UT0tFTik7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIElucHV0c1xuXG4gIEBJbnB1dCh7IHJlcXVpcmVkOiB0cnVlIH0pXG4gIGdldCBvcHRpb25zKCkge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5nZXRGaWx0ZXJlZE9wdGlvbnMoKTtcbiAgfVxuICBzZXQgb3B0aW9ucyh2YWx1ZTogdW5rbm93bltdKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0T3B0aW9ucyh2YWx1ZSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgaW5pdGlhbFZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0U2VsZWN0aW9uKHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBmaWx0ZXJJbnRlcm5hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZmlsdGVySW50ZXJuYWwkLnZhbHVlO1xuICB9XG4gIHNldCBmaWx0ZXJJbnRlcm5hbCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgY29uc3QgdmFsID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9maWx0ZXJJbnRlcm5hbCQubmV4dCh2YWwpO1xuXG4gICAgaWYgKCF2YWwpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldEZpbHRlcignJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldEZpbHRlcih0aGlzLl9jdXJyZW50RmlsdGVyKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfZmlsdGVySW50ZXJuYWwkID0gbmV3IEJlaGF2aW9yU3ViamVjdCh0cnVlKTtcblxuICBASW5wdXQoKVxuICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQudmFsdWU7XG4gIH1cbiAgc2V0IGxvYWRpbmcodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2xvYWRpbmckLm5leHQoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSk7XG4gIH1cbiAgcHJpdmF0ZSBfbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZGluZyQgPSB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcblxuICBASW5wdXQoKVxuICBnZXQgZXJyb3IoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Vycm9yJC52YWx1ZTtcbiAgfVxuICBzZXQgZXJyb3IodmFsdWU6IHVua25vd24pIHtcbiAgICB0aGlzLl9lcnJvciQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfZXJyb3IkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx1bmtub3duPihudWxsKTtcblxuICBASW5wdXQoKVxuICBnZXQgcGxhY2Vob2xkZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYWNlaG9sZGVyJC52YWx1ZTtcbiAgfVxuICBzZXQgcGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9wbGFjZWhvbGRlciQubmV4dCh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfcGxhY2Vob2xkZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxzdHJpbmcgfCBudWxsPihudWxsKTtcblxuICBASW5wdXQoKVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNldEFsbG93TXVsdGlwbGUoY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKSk7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgYmluZExhYmVsKHZhbHVlOiBzdHJpbmcgfCBudWxsKSB7XG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0TGFiZWxCaW5kaW5nKHZhbHVlKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBiaW5kVmFsdWUodmFsdWU6IHN0cmluZyB8IG51bGwpIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5zZXRWYWx1ZUJpbmRpbmcodmFsdWUpO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IGFsbG93Q3VzdG9tVmFsdWVzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hbGxvd0N1c3RvbVZhbHVlcyQudmFsdWU7XG4gIH1cbiAgc2V0IGFsbG93Q3VzdG9tVmFsdWVzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9hbGxvd0N1c3RvbVZhbHVlcyQubmV4dChjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpKTtcbiAgfVxuICBwcml2YXRlIF9hbGxvd0N1c3RvbVZhbHVlcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gT3V0cHV0c1xuXG4gIEBPdXRwdXQoKVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIE1lbWJlcnNcblxuICBwcml2YXRlIGdldCBfY3VycmVudEZpbHRlcigpIHtcbiAgICByZXR1cm4gdGhpcy5fY3VycmVudEZpbHRlciQudmFsdWU7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfY3VycmVudEZpbHRlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4oJycpO1xuXG4gIHByaXZhdGUgZ2V0IF9pc09wZW4oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc01vdW50ZWQ7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfaXNPcGVuJCA9IHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc01vdW50ZWQkO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdGlvbk1vZGVsID0gbmV3IFNlbGVjdGlvbk1vZGVsKCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRPcHRpb25zJCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbiQ7XG4gIHJlYWRvbmx5IG11bHRpcGxlJCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUkO1xuICByZWFkb25seSBvcHRpb25zJCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmZpbHRlcmVkT3B0aW9ucyQ7XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIENvbXB1dGVzXG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIExpZmVjeWNsZVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLl9iaW5kaW5ncy5wdXNoKHtcbiAgICAgIGF0dHJpYnV0ZTogJ2NsYXNzLmV0LWNvbWJvYm94LS1sb2FkaW5nJyxcbiAgICAgIG9ic2VydmFibGU6IHRoaXMuX2xvYWRpbmckLFxuICAgIH0pO1xuXG4gICAgdGhpcy5fYmluZGluZ3MucHVzaCh7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1jb21ib2JveC0tZXJyb3InLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5fZXJyb3IkLnBpcGUobWFwKCh2KSA9PiAhIXYpKSxcbiAgICB9KTtcblxuICAgIHRoaXMuX2JpbmRpbmdzLnB1c2goe1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtY29tYm9ib3gtLW9wZW4nLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5faXNPcGVuJCxcbiAgICB9KTtcblxuICAgIHRoaXMuX3NlbGVjdEZpZWxkLl9iaW5kaW5ncy5wdXNoKHtcbiAgICAgIGF0dHJpYnV0ZTogJ2NsYXNzLmV0LXNlbGVjdC1maWVsZC0tb3BlbicsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9pc09wZW4kLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5faW5pdERpc3BhdGNoRmlsdGVyQ2hhbmdlcygpO1xuICAgIHRoaXMuX2luaXRSZXBvc2l0aW9uT25WYWx1ZUNoYW5nZXMoKTtcblxuICAgIGlmIChpc0Rldk1vZGUoKSkge1xuICAgICAgdGhpcy5fZGVidWdWYWxpZGF0ZUNvbWJvYm94Q29uZmlnKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudmFsdWUkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgdGFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2lucHV0Ll91cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gICAgICAgICAgdGhpcy5fc2V0RmlsdGVyRnJvbUlucHV0VmFsdWUoKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gUHVibGljIE1ldGhvZHNcblxuICBnZXRPcHRpb25MYWJlbChvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0TGFiZWwkKG9wdGlvbik7XG4gIH1cblxuICBnZXRPcHRpb25WYWx1ZShvcHRpb246IHVua25vd24pIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uTW9kZWwuZ2V0VmFsdWUkKG9wdGlvbik7XG4gIH1cblxuICByZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb246IHVua25vd24pIHtcbiAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5yZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuXG4gICAgdGhpcy5pbnB1dC5fbWFya0FzVG91Y2hlZCgpO1xuICB9XG5cbiAgb3BlbigpIHtcbiAgICAvLyBpZiAoIXRoaXMuX3NlbGVjdEJvZHlDb25maWcpIHJldHVybjtcblxuICAgIGlmICh0aGlzLl9pc09wZW4gfHwgdGhpcy5pbnB1dC5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgLy8gdGhpcy5fc2V0U2VsZWN0ZWRPcHRpb25BY3RpdmUoKTtcblxuICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5fYW5pbWF0ZWRPdmVybGF5Lm1vdW50KHtcbiAgICAgIGNvbXBvbmVudDogQ29tYm9ib3hCb2R5Q29tcG9uZW50LFxuICAgICAgbWlycm9yV2lkdGg6IHRydWUsXG4gICAgICAvLyBkYXRhOiB7IF9ib2R5VGVtcGxhdGU6IHRoaXMuX3NlbGVjdEJvZHlDb25maWcudGVtcGxhdGUgfSxcbiAgICB9KTtcblxuICAgIGlmICghaW5zdGFuY2UpIHJldHVybjtcblxuICAgIC8vIHRoaXMuX3NlbGVjdEJvZHlJZCQubmV4dChpbnN0YW5jZS5zZWxlY3RCb2R5LmlkKTtcbiAgfVxuXG4gIGNsb3NlKCkge1xuICAgIGlmICghdGhpcy5faXNPcGVuKSByZXR1cm47XG5cbiAgICB0aGlzLl9hbmltYXRlZE92ZXJsYXkudW5tb3VudCgpO1xuXG4gICAgLy8gdGhpcy5fc2VsZWN0Qm9keUlkJC5uZXh0KG51bGwpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZUZyb21PcHRpb24ob3B0aW9uOiB1bmtub3duKSB7XG4gICAgdGhpcy5pbnB1dC5fbWFya0FzVG91Y2hlZCgpO1xuXG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLnRvZ2dsZVNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFkZFNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9zZWxlY3Rpb25Nb2RlbC5hbGxvd011bHRpcGxlKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgICB0aGlzLl9zZXRGaWx0ZXJGcm9tSW5wdXRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIGlzT3B0aW9uU2VsZWN0ZWQob3B0aW9uOiB1bmtub3duKSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmlzU2VsZWN0ZWQkKG9wdGlvbik7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gUHJvdGVjdGVkIE1ldGhvZHNcblxuICBwcm90ZWN0ZWQgcHJvY2Vzc0tleWRvd25FdmVudChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IGlzT3BlbiA9IHRoaXMuX2lzT3BlbjtcbiAgICBjb25zdCBpc011bHRpcGxlID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZTtcbiAgICBjb25zdCBjYW5BZGRDdXN0b21WYWx1ZSA9IHRoaXMuYWxsb3dDdXN0b21WYWx1ZXM7XG4gICAgY29uc3QgdmFsdWUgPSAoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlO1xuICAgIGNvbnN0IGhhc0ZpbHRlclZhbHVlID0gISF2YWx1ZTtcblxuICAgIGNvbnN0IHJlc3VsdDogS2V5SGFuZGxlclJlc3VsdCA9IHt9O1xuXG4gICAgLy8gVGhlIHVzZXIgdHlwZWQgYSBjdXN0b20gdmFsdWUgYW5kIHByZXNzZWQgZW50ZXIuIEFkZCBpdCB0byB0aGUgc2VsZWN0ZWQgb3B0aW9ucy5cbiAgICBpZiAoa2V5Q29kZSA9PT0gRU5URVIpIHtcbiAgICAgIGlmIChjYW5BZGRDdXN0b21WYWx1ZSAmJiBoYXNGaWx0ZXJWYWx1ZSkge1xuICAgICAgICByZXN1bHQub3B0aW9uQWN0aW9uID0geyB0eXBlOiAnYWRkJywgb3B0aW9uOiB2YWx1ZSB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAvLyBUT0RPOiBUb2dnbGUgdGhlIGZvY3VzZWQgb3B0aW9uXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gVE9ETzogU2VsZWN0IHRoZSBmb2N1c2VkIG9wdGlvblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpc011bHRpcGxlKSB7XG4gICAgICAgIHJlc3VsdC5zZXRGaWx0ZXIgPSAnJztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5vdmVybGF5T3BlcmF0aW9uID0gJ2Nsb3NlJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX2ludGVycHJldEtleUhhbmRsZXJSZXN1bHQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBpZiAoa2V5Q29kZSA9PT0gU1BBQ0UpIHtcbiAgICAgIGlmIChpc011bHRpcGxlKSB7XG4gICAgICAgIHJlc3VsdC5zZXRGaWx0ZXIgPSAnJztcbiAgICAgICAgLy8gVE9ETzogVG9nZ2xlIHRoZSBmb2N1c2VkIG9wdGlvblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnY2xvc2UnO1xuICAgICAgICAvLyBUT0RPOiBTZWxlY3QgdGhlIGZvY3VzZWQgb3B0aW9uXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcnByZXRLZXlIYW5kbGVyUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGtleUNvZGUgPT09IEVTQ0FQRSkge1xuICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICByZXN1bHQub3ZlcmxheU9wZXJhdGlvbiA9ICdjbG9zZSc7XG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlKSB7XG4gICAgICAgIHJlc3VsdC5zZXRGaWx0ZXIgPSAnJztcbiAgICAgICAgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9ICdjbGVhcic7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcnByZXRLZXlIYW5kbGVyUmVzdWx0KHJlc3VsdCk7XG4gICAgfVxuXG4gICAgaWYgKGtleUNvZGUgPT09IFRBQikge1xuICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnY2xvc2UnO1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVycHJldEtleUhhbmRsZXJSZXN1bHQocmVzdWx0KTtcbiAgICB9XG5cbiAgICBpZiAoIWlzT3Blbikge1xuICAgICAgcmVzdWx0Lm92ZXJsYXlPcGVyYXRpb24gPSAnb3Blbic7XG4gICAgfVxuXG4gICAgaWYgKGtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgIHJlc3VsdC5mb2N1c0FjdGlvbiA9ICduZXh0JztcbiAgICB9XG5cbiAgICBpZiAoa2V5Q29kZSA9PT0gVVBfQVJST1cpIHtcbiAgICAgIHJlc3VsdC5mb2N1c0FjdGlvbiA9ICdwcmV2aW91cyc7XG4gICAgfVxuXG4gICAgaWYgKGtleUNvZGUgPT09IFBBR0VfVVApIHtcbiAgICAgIHJlc3VsdC5mb2N1c0FjdGlvbiA9IHsgdHlwZTogJ29mZnNldCcsIG9mZnNldDogLTEwIH07XG4gICAgfVxuXG4gICAgaWYgKGtleUNvZGUgPT09IFBBR0VfRE9XTikge1xuICAgICAgcmVzdWx0LmZvY3VzQWN0aW9uID0geyB0eXBlOiAnb2Zmc2V0Jywgb2Zmc2V0OiAxMCB9O1xuICAgIH1cblxuICAgIGlmIChrZXlDb2RlID09PSBIT01FKSB7XG4gICAgICByZXN1bHQuZm9jdXNBY3Rpb24gPSAnZmlyc3QnO1xuICAgIH1cblxuICAgIGlmIChrZXlDb2RlID09PSBFTkQpIHtcbiAgICAgIHJlc3VsdC5mb2N1c0FjdGlvbiA9ICdsYXN0JztcbiAgICB9XG5cbiAgICBpZiAoa2V5Q29kZSA9PT0gQSAmJiBldmVudC5jdHJsS2V5ICYmIGlzTXVsdGlwbGUpIHtcbiAgICAgIHJlc3VsdC5vcHRpb25BY3Rpb24gPSAndG9nZ2xlQWxsJztcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX2ludGVycHJldEtleUhhbmRsZXJSZXN1bHQocmVzdWx0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwcm9jZXNzSW5wdXRFdmVudChldmVudDogRXZlbnQpIHtcbiAgICBjb25zdCB2YWx1ZSA9IChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWU7XG5cbiAgICB0aGlzLl91cGRhdGVGaWx0ZXIodmFsdWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUJsdXJFdmVudCgpIHtcbiAgICB0aGlzLmlucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuXG4gICAgaWYgKHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFsbG93TXVsdGlwbGUpIHJldHVybjtcblxuICAgIGlmICh0aGlzLl9jdXJyZW50RmlsdGVyID09PSAnJykge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuY2xlYXJTZWxlY3RlZE9wdGlvbnMoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9zZXRGaWx0ZXJGcm9tSW5wdXRWYWx1ZSgpO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIFByaXZhdGUgTWV0aG9kc1xuXG4gIHByaXZhdGUgX2luaXREaXNwYXRjaEZpbHRlckNoYW5nZXMoKSB7XG4gICAgdGhpcy5fY3VycmVudEZpbHRlciRcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwV2hpbGUoKCkgPT4gdGhpcy5maWx0ZXJJbnRlcm5hbCksXG4gICAgICAgIGRlYm91bmNlVGltZSgzMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgICB0YXAoKHYpID0+IHRoaXMuZmlsdGVyQ2hhbmdlLmVtaXQodikpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdFJlcG9zaXRpb25PblZhbHVlQ2hhbmdlcygpIHtcbiAgICB0aGlzLmlucHV0LnZhbHVlQ2hhbmdlJFxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIGRlYm91bmNlVGltZSgwKSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5fcmVwb3NpdGlvbigpKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3VwZGF0ZUZpbHRlcih2YWx1ZTogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuaW5wdXQubmF0aXZlSW5wdXRSZWYgJiYgdGhpcy5pbnB1dC5uYXRpdmVJbnB1dFJlZi5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLmlucHV0Lm5hdGl2ZUlucHV0UmVmLmVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9jdXJyZW50RmlsdGVyID09PSB2YWx1ZSkgcmV0dXJuO1xuXG4gICAgdGhpcy5fY3VycmVudEZpbHRlciQubmV4dCh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5maWx0ZXJJbnRlcm5hbCkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwuc2V0RmlsdGVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9zZXRGaWx0ZXJGcm9tSW5wdXRWYWx1ZSgpIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0aW9uTW9kZWwuYWxsb3dNdWx0aXBsZSkgcmV0dXJuO1xuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmlucHV0LnZhbHVlO1xuXG4gICAgaWYgKCF2YWx1ZSB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhpcy5fdXBkYXRlRmlsdGVyKCcnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcHRpb24gPSB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5nZXRPcHRpb25CeVZhbHVlKHZhbHVlKTtcblxuICAgIGlmICghb3B0aW9uKSByZXR1cm47XG5cbiAgICBjb25zdCBsYWJlbCA9IHRoaXMuX3NlbGVjdGlvbk1vZGVsLmdldExhYmVsKG9wdGlvbik7XG5cbiAgICBpZiAodHlwZW9mIGxhYmVsICE9PSAnc3RyaW5nJykgcmV0dXJuO1xuXG4gICAgdGhpcy5fdXBkYXRlRmlsdGVyKGxhYmVsKTtcbiAgfVxuXG4gIHByaXZhdGUgX2ludGVycHJldEtleUhhbmRsZXJSZXN1bHQocmVzdWx0OiBLZXlIYW5kbGVyUmVzdWx0KSB7XG4gICAgaWYgKHJlc3VsdC5vdmVybGF5T3BlcmF0aW9uID09PSAnY2xvc2UnKSB7XG4gICAgICB0aGlzLmNsb3NlKCk7XG4gICAgfSBlbHNlIGlmIChyZXN1bHQub3ZlcmxheU9wZXJhdGlvbiA9PT0gJ29wZW4nKSB7XG4gICAgICB0aGlzLm9wZW4oKTtcbiAgICB9XG5cbiAgICBpZiAocmVzdWx0LnNldEZpbHRlciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLl91cGRhdGVGaWx0ZXIocmVzdWx0LnNldEZpbHRlcik7XG4gICAgfVxuXG4gICAgaWYgKHJlc3VsdC5vcHRpb25BY3Rpb24pIHtcbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0Lm9wdGlvbkFjdGlvbiA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHJlc3VsdC5vcHRpb25BY3Rpb24gPT09ICdjbGVhcicpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5jbGVhclNlbGVjdGVkT3B0aW9ucygpO1xuICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdC5vcHRpb25BY3Rpb24gPT09ICd0b2dnbGVBbGwnKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudG9nZ2xlQWxsU2VsZWN0ZWRPcHRpb25zKCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHsgdHlwZSwgb3B0aW9uIH0gPSByZXN1bHQub3B0aW9uQWN0aW9uO1xuXG4gICAgICAgIGlmICh0eXBlID09PSAnYWRkJykge1xuICAgICAgICAgIHRoaXMuX3NlbGVjdGlvbk1vZGVsLmFkZFNlbGVjdGVkT3B0aW9uKG9wdGlvbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZSA9PT0gJ3JlbW92ZScpIHtcbiAgICAgICAgICB0aGlzLl9zZWxlY3Rpb25Nb2RlbC5yZW1vdmVTZWxlY3RlZE9wdGlvbihvcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGUgPT09ICd0b2dnbGUnKSB7XG4gICAgICAgICAgdGhpcy5fc2VsZWN0aW9uTW9kZWwudG9nZ2xlU2VsZWN0ZWRPcHRpb24ob3B0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChyZXN1bHQuZm9jdXNBY3Rpb24pIHtcbiAgICAgIGlmICh0eXBlb2YgcmVzdWx0LmZvY3VzQWN0aW9uID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAocmVzdWx0LmZvY3VzQWN0aW9uID09PSAnZmlyc3QnKSB7XG4gICAgICAgICAgLy8gVE9ETzogSW1wbGVtZW50XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzdWx0LmZvY3VzQWN0aW9uID09PSAnbGFzdCcpIHtcbiAgICAgICAgICAvLyBUT0RPOiBJbXBsZW1lbnRcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQuZm9jdXNBY3Rpb24gPT09ICduZXh0Jykge1xuICAgICAgICAgIC8vIFRPRE86IEltcGxlbWVudFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlc3VsdC5mb2N1c0FjdGlvbiA9PT0gJ3ByZXZpb3VzJykge1xuICAgICAgICAgIC8vIFRPRE86IEltcGxlbWVudFxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCB7IHR5cGUgfSA9IHJlc3VsdC5mb2N1c0FjdGlvbjtcblxuICAgICAgICBpZiAodHlwZSA9PT0gJ29mZnNldCcpIHtcbiAgICAgICAgICBjb25zdCB7IG9mZnNldCB9ID0gcmVzdWx0LmZvY3VzQWN0aW9uO1xuXG4gICAgICAgICAgLy8gVE9ETzogSW1wbGVtZW50XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gRGV2IG1vZGVcblxuICBwcml2YXRlIF9kZWJ1Z1ZhbGlkYXRlQ29tYm9ib3hDb25maWcoaXNSZXRyeSA9IGZhbHNlKSB7XG4gICAgY29tYmluZUxhdGVzdChbdGhpcy5fc2VsZWN0aW9uTW9kZWwubGFiZWxCaW5kaW5nJCwgdGhpcy5fc2VsZWN0aW9uTW9kZWwudmFsdWVCaW5kaW5nJCwgdGhpcy5fYWxsb3dDdXN0b21WYWx1ZXMkXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBza2lwKGlzUmV0cnkgPyAxIDogMCksIC8vIFNraXAgaWYgcmV0cnlpbmcgdG8gYXZvaWQgaW5maW5pdGUgbG9vcFxuICAgICAgICBkZWJvdW5jZVRpbWUoMCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIG1hcCgoW2JpbmRMYWJlbCwgYmluZFZhbHVlLCBhbGxvd0N1c3RvbVZhbHVlc10pID0+IHtcbiAgICAgICAgICBjb25zdCBzaG91bGRCZU9iamVjdHMgPSBiaW5kTGFiZWwgJiYgYmluZFZhbHVlICYmICFhbGxvd0N1c3RvbVZhbHVlcztcblxuICAgICAgICAgIGlmIChzaG91bGRCZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHJldHVybiBDb21ib2JveE9wdGlvblR5cGUuT2JqZWN0O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBDb21ib2JveE9wdGlvblR5cGUuUHJpbWl0aXZlO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFwKChleHBlY3RlZE9wdGlvblR5cGUpID0+IHtcbiAgICAgICAgICBjb25zdCBvcHRpb25zID0gdGhpcy5fc2VsZWN0aW9uTW9kZWwub3B0aW9ucztcblxuICAgICAgICAgIGlmIChpc0VtcHR5QXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoZXhwZWN0ZWRPcHRpb25UeXBlID09PSBDb21ib2JveE9wdGlvblR5cGUuT2JqZWN0KSB7XG4gICAgICAgICAgICBpZiAoIWlzT2JqZWN0QXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgICAgICAgdGhyb3cgY29tYm9ib3hFcnJvcigxLCBvcHRpb25zKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGV4cGVjdGVkT3B0aW9uVHlwZSA9PT0gQ29tYm9ib3hPcHRpb25UeXBlLlByaW1pdGl2ZSkge1xuICAgICAgICAgICAgaWYgKCFpc1ByaW1pdGl2ZUFycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgICAgIHRocm93IGNvbWJvYm94RXJyb3IoMiwgb3B0aW9ucyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZSkgPT4ge1xuICAgICAgICAgIHRoaXMuX2RlYnVnVmFsaWRhdGVDb21ib2JveENvbmZpZyh0cnVlKTtcbiAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcigoKSA9PiBlKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cbn1cbiIsIjwhLS0gZXNsaW50LWRpc2FibGUgQGFuZ3VsYXItZXNsaW50L3RlbXBsYXRlL2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgLS0+XG48IS0tIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC90ZW1wbGF0ZS91c2UtdHJhY2stYnktZnVuY3Rpb24gLS0+XG48bmctY29udGVudCBzZWxlY3Q9XCJbZXRJbnB1dFByZWZpeF1cIiAvPlxuXG48ZGl2IGNsYXNzPVwiZXQtY29tYm9ib3gtd3JhcHBlclwiPlxuICA8dWwgKm5nSWY9XCJtdWx0aXBsZSQgfCBhc3luY1wiIGNsYXNzPVwiZXQtY29tYm9ib3gtc2VsZWN0ZWQtb3B0aW9uc1wiPlxuICAgIDxsaSAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZE9wdGlvbnMkIHwgYXN5bmNcIiBjbGFzcz1cImV0LWNvbWJvYm94LXNlbGVjdGVkLW9wdGlvblwiPlxuICAgICAge3sgZ2V0T3B0aW9uTGFiZWwoaXRlbSkgfCBhc3luYyB9fVxuICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZVNlbGVjdGVkT3B0aW9uKGl0ZW0pXCIgY2xhc3M9XCJldC1jb21ib2JveC1zZWxlY3RlZC1vcHRpb24tcmVtb3ZlXCIgdGFiaW5kZXg9XCItMVwiPiB4IDwvc3Bhbj5cbiAgICA8L2xpPlxuICA8L3VsPlxuXG4gIDxpbnB1dFxuICAgIChrZXlkb3duKT1cInByb2Nlc3NLZXlkb3duRXZlbnQoJGV2ZW50KVwiXG4gICAgKGNsaWNrKT1cIm9wZW4oKVwiXG4gICAgKGJsdXIpPVwiaGFuZGxlQmx1ckV2ZW50KClcIlxuICAgIChpbnB1dCk9XCJwcm9jZXNzSW5wdXRFdmVudCgkZXZlbnQpXCJcbiAgICB0eXBlPVwidGV4dFwiXG4gICAgZXROYXRpdmVJbnB1dFJlZlxuICAvPlxuXG4gIDxldC1jaGV2cm9uLWljb24gY2xhc3M9XCJldC1jb21ib2JveC1jaGV2cm9uXCIgLz5cbjwvZGl2PlxuXG48bmctY29udGVudCBzZWxlY3Q9XCJbZXRJbnB1dFN1ZmZpeF1cIiAvPlxuXG48bmctdGVtcGxhdGU+XG4gIDxuZy1jb250ZW50IC8+XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,2 @@
1
+ export * from './combobox.component';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9jb21wb25lbnRzL2NvbWJvYm94L2NvbXBvbmVudHMvY29tYm9ib3gvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21ib2JveC5jb21wb25lbnQnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9jb21ib2JveC9jb21wb25lbnRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './combobox/public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9jb21wb25lbnRzL2NvbWJvYm94L2NvbXBvbmVudHMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21ib2JveC9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,26 @@
1
+ import { Directive, InjectionToken } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export const COMBOBOX_DIR_TOKEN = new InjectionToken('ET_COMBOBOX_INPUT_TOKEN');
4
+ class ComboboxDirective {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: ComboboxDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: ComboboxDirective, isStandalone: true, providers: [
7
+ {
8
+ provide: COMBOBOX_DIR_TOKEN,
9
+ useExisting: ComboboxDirective,
10
+ },
11
+ ], ngImport: i0 }); }
12
+ }
13
+ export { ComboboxDirective };
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: ComboboxDirective, decorators: [{
15
+ type: Directive,
16
+ args: [{
17
+ standalone: true,
18
+ providers: [
19
+ {
20
+ provide: COMBOBOX_DIR_TOKEN,
21
+ useExisting: ComboboxDirective,
22
+ },
23
+ ],
24
+ }]
25
+ }] });
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm9ib3guZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvY29tYm9ib3gvZGlyZWN0aXZlcy9jb21ib2JveC9jb21ib2JveC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTFELE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksY0FBYyxDQUFvQix5QkFBeUIsQ0FBQyxDQUFDO0FBRW5HLE1BU2EsaUJBQWlCOzhHQUFqQixpQkFBaUI7a0dBQWpCLGlCQUFpQixpQ0FQakI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixXQUFXLEVBQUUsaUJBQWlCO2FBQy9CO1NBQ0Y7O1NBRVUsaUJBQWlCOzJGQUFqQixpQkFBaUI7a0JBVDdCLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsa0JBQWtCOzRCQUMzQixXQUFXLG1CQUFtQjt5QkFDL0I7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEluamVjdGlvblRva2VuIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBDT01CT0JPWF9ESVJfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q29tYm9ib3hEaXJlY3RpdmU+KCdFVF9DT01CT0JPWF9JTlBVVF9UT0tFTicpO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ09NQk9CT1hfRElSX1RPS0VOLFxuICAgICAgdXNlRXhpc3Rpbmc6IENvbWJvYm94RGlyZWN0aXZlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIENvbWJvYm94RGlyZWN0aXZlIHt9XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './combobox.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9jb21wb25lbnRzL2NvbWJvYm94L2RpcmVjdGl2ZXMvY29tYm9ib3gvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21ib2JveC5kaXJlY3RpdmUnO1xuIl19
@@ -0,0 +1,2 @@
1
+ export * from './combobox/public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9jb21wb25lbnRzL2NvbWJvYm94L2RpcmVjdGl2ZXMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHVCQUF1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9jb21ib2JveC9wdWJsaWMtYXBpJztcbiJdfQ==