@ethlete/cdk 2.3.3 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) 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 +556 -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 +449 -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 +3 -3
  94. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +3 -3
  95. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +3 -3
  96. package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +3 -3
  97. package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +3 -3
  98. package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +3 -3
  99. package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +3 -3
  100. package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +3 -3
  101. package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +3 -3
  102. package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +3 -3
  103. package/esm2022/lib/components/forms/directives/input/input.directive.mjs +47 -32
  104. package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +3 -3
  105. package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +3 -3
  106. package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +3 -3
  107. package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +3 -3
  108. package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +3 -3
  109. package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +3 -3
  110. package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +3 -3
  111. package/esm2022/lib/components/forms/services/form-field-state.service.mjs +3 -3
  112. package/esm2022/lib/components/forms/services/form-group-state.service.mjs +3 -3
  113. package/esm2022/lib/components/forms/services/input-state.service.mjs +3 -3
  114. package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +3 -3
  115. package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +4 -4
  116. package/esm2022/lib/components/forms/utils/input.base.mjs +8 -8
  117. package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +3 -3
  118. package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +3 -3
  119. package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +3 -3
  120. package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +3 -3
  121. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +3 -3
  122. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +3 -3
  123. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +3 -3
  124. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +3 -3
  125. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +3 -3
  126. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +3 -3
  127. package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +3 -3
  128. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +3 -3
  129. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +3 -3
  130. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +3 -3
  131. package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +3 -3
  132. package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +3 -3
  133. package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +3 -3
  134. package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +3 -3
  135. package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +3 -3
  136. package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +3 -3
  137. package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +3 -3
  138. package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +3 -3
  139. package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +3 -3
  140. package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +3 -3
  141. package/esm2022/lib/components/picture/picture-data.directive.mjs +3 -3
  142. package/esm2022/lib/components/picture/picture.component.mjs +3 -3
  143. package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +3 -3
  144. package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +55 -8
  145. package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +3 -3
  146. package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +3 -3
  147. package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +3 -3
  148. package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +3 -3
  149. package/esm2022/lib/components/sort/services/sort-header-intl.mjs +3 -3
  150. package/esm2022/lib/components/table/components/table/table.component.mjs +3 -3
  151. package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +3 -3
  152. package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +3 -3
  153. package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +3 -3
  154. package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +3 -3
  155. package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +3 -3
  156. package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +3 -3
  157. package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +3 -3
  158. package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +3 -3
  159. package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +3 -3
  160. package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +3 -3
  161. package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +3 -3
  162. package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +3 -3
  163. package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +3 -3
  164. package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +3 -3
  165. package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +3 -3
  166. package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +3 -3
  167. package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +3 -3
  168. package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +3 -3
  169. package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +3 -3
  170. package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +3 -3
  171. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +3 -3
  172. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +3 -3
  173. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +3 -3
  174. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +3 -3
  175. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +3 -3
  176. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +3 -3
  177. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +3 -3
  178. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +3 -3
  179. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +3 -3
  180. package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +3 -3
  181. package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +3 -3
  182. package/esm2022/lib/services/swipe-handler.service.mjs +3 -3
  183. package/fesm2022/ethlete-cdk.mjs +2035 -718
  184. package/fesm2022/ethlete-cdk.mjs.map +1 -1
  185. package/lib/components/forms/components/select/components/combobox/combobox.imports.d.ts +5 -0
  186. package/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.d.ts +84 -0
  187. package/lib/components/forms/components/select/components/combobox/components/combobox/public-api.d.ts +1 -0
  188. package/lib/components/forms/components/select/components/combobox/components/index.d.ts +1 -0
  189. package/lib/components/forms/components/select/components/combobox/components/public-api.d.ts +1 -0
  190. package/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.d.ts +7 -0
  191. package/lib/components/forms/components/select/components/combobox/directives/combobox/public-api.d.ts +1 -0
  192. package/lib/components/forms/components/select/components/combobox/directives/public-api.d.ts +1 -0
  193. package/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.d.ts +16 -0
  194. package/lib/components/forms/components/select/components/combobox/partials/combobox-body/public-api.d.ts +1 -0
  195. package/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.d.ts +16 -0
  196. package/lib/components/forms/components/select/components/combobox/partials/combobox-option/index.d.ts +1 -0
  197. package/lib/components/forms/components/select/components/combobox/partials/combobox-option/public-api.d.ts +1 -0
  198. package/lib/components/forms/components/select/components/combobox/partials/index.d.ts +1 -0
  199. package/lib/components/forms/components/select/components/combobox/partials/public-api.d.ts +2 -0
  200. package/lib/components/forms/components/select/components/combobox/public-api.d.ts +3 -0
  201. package/lib/components/forms/components/select/components/public-api.d.ts +1 -0
  202. package/lib/components/forms/components/select/components/select/components/select/select.component.d.ts +8 -11
  203. package/lib/components/forms/components/select/components/select/directives/index.d.ts +1 -0
  204. package/lib/components/forms/components/select/components/select/directives/public-api.d.ts +3 -0
  205. package/lib/components/forms/components/select/components/select/directives/select/index.d.ts +1 -0
  206. package/lib/components/forms/components/select/components/select/directives/select/public-api.d.ts +1 -0
  207. package/lib/components/forms/components/select/components/select/directives/select/select.directive.d.ts +95 -0
  208. package/lib/components/forms/components/select/components/select/directives/select-body/index.d.ts +1 -0
  209. package/lib/components/forms/components/select/components/select/directives/select-body/public-api.d.ts +1 -0
  210. package/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.d.ts +14 -0
  211. package/lib/components/forms/components/select/components/select/directives/select-option/index.d.ts +1 -0
  212. package/lib/components/forms/components/select/components/select/directives/select-option/public-api.d.ts +1 -0
  213. package/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.d.ts +29 -0
  214. package/lib/components/forms/components/select/components/select/partials/public-api.d.ts +0 -1
  215. package/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.d.ts +6 -1
  216. package/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.d.ts +4 -1
  217. package/lib/components/forms/components/select/components/select/public-api.d.ts +1 -0
  218. package/lib/components/forms/components/select/components/select/select.imports.d.ts +2 -2
  219. package/lib/components/forms/components/slider/components/slider/slider.component.d.ts +1 -1
  220. package/lib/components/forms/directives/input/input.directive.d.ts +3 -1
  221. package/lib/components/forms/utils/decorated-input.base.d.ts +1 -1
  222. package/lib/components/forms/utils/input.base.d.ts +2 -4
  223. package/lib/components/scrollable/components/scrollable/scrollable.component.d.ts +13 -5
  224. package/package.json +5 -5
  225. package/esm2022/lib/components/forms/components/select/components/select/partials/tree-select-option/public-api.mjs +0 -2
  226. package/esm2022/lib/components/forms/components/select/components/select/partials/tree-select-option/tree-select-option.component.mjs +0 -23
  227. package/lib/components/forms/components/select/components/select/partials/tree-select-option/public-api.d.ts +0 -1
  228. package/lib/components/forms/components/select/components/select/partials/tree-select-option/tree-select-option.component.d.ts +0 -5
@@ -0,0 +1,449 @@
1
+ import { LiveAnnouncer } from '@angular/cdk/a11y';
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { A, DOWN_ARROW, END, ENTER, ESCAPE, HOME, LEFT_ARROW, PAGE_DOWN, PAGE_UP, RIGHT_ARROW, SPACE, UP_ARROW, hasModifierKey, } from '@angular/cdk/keycodes';
4
+ import { ContentChildren, Directive, InjectionToken, Input, inject, } from '@angular/core';
5
+ import { AnimatedOverlayDirective, TypedQueryList, createDestroy, createReactiveBindings, } from '@ethlete/core';
6
+ import { BehaviorSubject, combineLatest, firstValueFrom, map, of, startWith, switchMap, takeUntil, tap } from 'rxjs';
7
+ import { INPUT_TOKEN } from '../../../../../../directives';
8
+ import { SELECT_OPTION_TOKEN } from '../select-option';
9
+ import * as i0 from "@angular/core";
10
+ import * as i1 from "@ethlete/core";
11
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
+ export const SELECT_TOKEN = new InjectionToken('ET_SELECT_INPUT_TOKEN');
13
+ let uniqueId = 0;
14
+ class SelectDirective {
15
+ get multiple() {
16
+ return this._multiple$.value;
17
+ }
18
+ set multiple(value) {
19
+ this._multiple$.next(coerceBooleanProperty(value));
20
+ this._migrateSelectValue();
21
+ }
22
+ set _selectOptionsQueryList(value) {
23
+ this._selectOptionsQueryList$.next(value);
24
+ }
25
+ constructor() {
26
+ this._selectBodyConfig = null;
27
+ this._animatedOverlay = inject(AnimatedOverlayDirective);
28
+ this._destroy$ = createDestroy();
29
+ this._liveAnnouncer = inject(LiveAnnouncer);
30
+ this.input = inject(INPUT_TOKEN);
31
+ this._selectBodyId$ = new BehaviorSubject(null);
32
+ this._isOpen$ = new BehaviorSubject(false);
33
+ this._multiple$ = new BehaviorSubject(false);
34
+ this._selectOptionsQueryList$ = new BehaviorSubject(null);
35
+ this.selectOptions$ = this._selectOptionsQueryList$.pipe(switchMap((queryList) => queryList?.changes.pipe(startWith(queryList)) ?? of(null)), switchMap((queryList) => {
36
+ if (!queryList)
37
+ return of(null);
38
+ const items = queryList
39
+ .filter((i) => !!i)
40
+ .map((opt) => combineLatest([opt.isSelected$, opt.isActive$]).pipe(map(([selected, active]) => ({ opt, selected, active }))));
41
+ return combineLatest(items ?? of(null));
42
+ }));
43
+ this.activeOption$ = this.selectOptions$.pipe(map((options) => {
44
+ if (!options)
45
+ return null;
46
+ return options.find((option) => option.active) ?? null;
47
+ }));
48
+ this.selectedOptions$ = this.selectOptions$.pipe(map((options) => {
49
+ if (!options)
50
+ return null;
51
+ const selectedOptions = options.filter((option) => option.selected);
52
+ if (!selectedOptions.length)
53
+ return null;
54
+ const inputValue = this.input.value;
55
+ if (this.multiple && Array.isArray(inputValue)) {
56
+ // sort selected options by the order of the input value
57
+ const selectedOptionsMap = new Map(selectedOptions.map((option) => [option.opt.value, option]));
58
+ return inputValue
59
+ .map((value) => selectedOptionsMap.get(value))
60
+ .filter((option) => !!option);
61
+ }
62
+ return selectedOptions;
63
+ }));
64
+ this.selectedOption$ = this.selectedOptions$.pipe(map((options) => options?.[0] ?? null));
65
+ this.selectBodyId$ = this._selectBodyId$.asObservable();
66
+ this.isOpen$ = this._isOpen$.asObservable();
67
+ this.multiple$ = this._multiple$.asObservable();
68
+ this.selectCurrentValueId = `et-select-current-value-${uniqueId++}`;
69
+ this.ariaViewValue$ = this.selectedOptions$.pipe(switchMap((options) => {
70
+ if (!options?.length)
71
+ return of(null);
72
+ const viewValues = options.map((option) => option.opt.viewValue$);
73
+ return combineLatest(viewValues);
74
+ }), map((viewValues) => {
75
+ if (!viewValues)
76
+ return null;
77
+ return viewValues.join(', ');
78
+ }));
79
+ this.activeDescendant$ = combineLatest([this.isOpen$, this.activeOption$]).pipe(map(([isOpen, activeOption]) => {
80
+ if (!isOpen || !activeOption)
81
+ return null;
82
+ return activeOption.opt.id;
83
+ }));
84
+ this.owns$ = combineLatest([this.isOpen$, this.selectBodyId$]).pipe(map(([isOpen, selectBodyId]) => {
85
+ if (!isOpen || !selectBodyId) {
86
+ return null;
87
+ }
88
+ return selectBodyId;
89
+ }));
90
+ this.labelledBy$ = this.input.labelId$.pipe(map((labelId) => {
91
+ const ids = [labelId, this.selectCurrentValueId];
92
+ return ids.filter((id) => !!id).join(' ');
93
+ }));
94
+ this._bindings = createReactiveBindings({
95
+ attribute: 'class.et-select--is-open',
96
+ observable: this.isOpen$,
97
+ }, {
98
+ attribute: 'class.et-select--disabled',
99
+ observable: this.input.disabled$,
100
+ });
101
+ this.trackByFn = (_, item) => item.id;
102
+ this._animatedOverlay.placement = 'bottom';
103
+ }
104
+ ngOnInit() {
105
+ this._unmountSelectBodyOnDisable();
106
+ this._migrateSelectValue();
107
+ }
108
+ ngAfterContentInit() {
109
+ this._setSelectedOptionActive();
110
+ }
111
+ mountSelectBody() {
112
+ if (!this._selectBodyConfig)
113
+ return;
114
+ if (this._animatedOverlay.isMounted || this.input.disabled)
115
+ return;
116
+ this._setSelectedOptionActive();
117
+ const instance = this._animatedOverlay.mount({
118
+ component: this._selectBodyConfig.component,
119
+ mirrorWidth: true,
120
+ data: { _bodyTemplate: this._selectBodyConfig.template },
121
+ });
122
+ if (!instance)
123
+ return;
124
+ this._selectBodyId$.next(instance.selectBody.id);
125
+ this._isOpen$.next(true);
126
+ }
127
+ unmountSelectBody() {
128
+ if (!this._animatedOverlay.isMounted)
129
+ return;
130
+ this._animatedOverlay.unmount();
131
+ this._selectBodyId$.next(null);
132
+ this._isOpen$.next(false);
133
+ }
134
+ setValue(value) {
135
+ this.input._updateValue(value);
136
+ this.input._markAsTouched();
137
+ this.input._setShouldDisplayError(true);
138
+ }
139
+ handleKeyDown(event) {
140
+ if (this._isOpen$.value) {
141
+ this._handleKeyDownInOpenState(event);
142
+ }
143
+ else {
144
+ this._handleKeyDownInClosedState(event);
145
+ }
146
+ }
147
+ setSelectBody(config) {
148
+ this._selectBodyConfig = config;
149
+ }
150
+ removeOptionFromSelection(option) {
151
+ if (!this.multiple || !Array.isArray(this.input.value))
152
+ return;
153
+ const value = this.input.value.filter((v) => v !== option.value);
154
+ this.setValue(value);
155
+ }
156
+ _controlTouched() {
157
+ this.input._markAsTouched();
158
+ this.input._setShouldDisplayError(true);
159
+ }
160
+ _unmountSelectBodyOnDisable() {
161
+ this.input.disabled$
162
+ .pipe(tap((disabled) => {
163
+ if (!disabled)
164
+ return;
165
+ this.unmountSelectBody();
166
+ }), takeUntil(this._destroy$))
167
+ .subscribe();
168
+ }
169
+ _handleKeyDownInClosedState(event) {
170
+ const keyCode = event.keyCode;
171
+ const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW || keyCode === LEFT_ARROW || keyCode === RIGHT_ARROW;
172
+ const isOpenKey = keyCode === ENTER || keyCode === SPACE;
173
+ if ((isOpenKey && !hasModifierKey(event)) || ((this.multiple || event.altKey) && isArrowKey)) {
174
+ event.preventDefault();
175
+ this.mountSelectBody();
176
+ }
177
+ else if (!this.multiple) {
178
+ switch (keyCode) {
179
+ case DOWN_ARROW:
180
+ this._selectOptionByOffset(1, true);
181
+ break;
182
+ case UP_ARROW:
183
+ this._selectOptionByOffset(-1, true);
184
+ break;
185
+ case HOME:
186
+ this._selectFirstOption(true);
187
+ break;
188
+ case END:
189
+ this._selectLastOption(true);
190
+ break;
191
+ case PAGE_UP:
192
+ this._selectOptionByOffset(-10, true);
193
+ break;
194
+ case PAGE_DOWN:
195
+ this._selectOptionByOffset(10, true);
196
+ break;
197
+ }
198
+ }
199
+ else if (this.multiple && isArrowKey) {
200
+ event.preventDefault();
201
+ this.mountSelectBody();
202
+ }
203
+ }
204
+ async _handleKeyDownInOpenState(event) {
205
+ const keyCode = event.keyCode;
206
+ const isArrowKey = keyCode === DOWN_ARROW || keyCode === UP_ARROW;
207
+ if (isArrowKey && event.altKey) {
208
+ event.preventDefault();
209
+ this.unmountSelectBody();
210
+ }
211
+ else if (keyCode === ESCAPE && !hasModifierKey(event)) {
212
+ event.preventDefault();
213
+ this.unmountSelectBody();
214
+ }
215
+ else if (keyCode === ENTER || keyCode === SPACE) {
216
+ if (this.multiple) {
217
+ this._toggleActiveOptionSelection();
218
+ }
219
+ else {
220
+ this._setActiveOptionSelected();
221
+ }
222
+ event.preventDefault();
223
+ }
224
+ else if (this.multiple && keyCode === A && event.ctrlKey) {
225
+ event.preventDefault();
226
+ this._toggleSelectionOfAllOptions();
227
+ }
228
+ else {
229
+ switch (keyCode) {
230
+ case DOWN_ARROW:
231
+ this._activateOptionByOffset(1);
232
+ break;
233
+ case UP_ARROW:
234
+ this._activateOptionByOffset(-1);
235
+ break;
236
+ case HOME:
237
+ this._activateFirstOption();
238
+ break;
239
+ case END:
240
+ this._activateLastOption();
241
+ break;
242
+ case PAGE_UP:
243
+ this._activateOptionByOffset(-10);
244
+ break;
245
+ case PAGE_DOWN:
246
+ this._activateOptionByOffset(10);
247
+ break;
248
+ }
249
+ }
250
+ }
251
+ async _setActiveOption(option) {
252
+ const currentActiveOption = await firstValueFrom(this.activeOption$);
253
+ if (currentActiveOption?.opt === option)
254
+ return false;
255
+ currentActiveOption?.opt._setActive(false);
256
+ if (option) {
257
+ option._setActive(true);
258
+ }
259
+ return true;
260
+ }
261
+ async _addActiveOptionToSelection() {
262
+ const activeOption = await firstValueFrom(this.activeOption$);
263
+ if (!activeOption || activeOption.opt.disabled || activeOption.selected)
264
+ return;
265
+ if (!Array.isArray(this.input.value)) {
266
+ this.setValue([activeOption.opt.value]);
267
+ return;
268
+ }
269
+ this.setValue([...this.input.value, activeOption.opt.value]);
270
+ }
271
+ async _removeActiveOptionFromSelection() {
272
+ const activeOption = await firstValueFrom(this.activeOption$);
273
+ if (!activeOption || activeOption.opt.disabled || !activeOption.selected)
274
+ return;
275
+ if (!Array.isArray(this.input.value)) {
276
+ this.setValue([]);
277
+ return;
278
+ }
279
+ this.setValue(this.input.value.filter((value) => value !== activeOption.opt.value));
280
+ }
281
+ async _toggleSelectionOfAllOptions() {
282
+ const allOptions = await firstValueFrom(this.selectOptions$);
283
+ const hasDeselectedOption = allOptions?.some((opt) => !opt.opt.disabled && !opt.selected);
284
+ if (hasDeselectedOption) {
285
+ this._selectAllOptions();
286
+ }
287
+ else {
288
+ this._deselectAllOptions();
289
+ }
290
+ }
291
+ async _selectAllOptions() {
292
+ const allOptions = await firstValueFrom(this.selectOptions$);
293
+ if (!allOptions)
294
+ return;
295
+ const selectedOptions = allOptions.filter((opt) => !opt.opt.disabled).map((opt) => opt.opt.value);
296
+ this.setValue(selectedOptions);
297
+ }
298
+ async _deselectAllOptions() {
299
+ this.setValue([]);
300
+ }
301
+ async _toggleActiveOptionSelection() {
302
+ const activeOption = await firstValueFrom(this.activeOption$);
303
+ if (!activeOption)
304
+ return;
305
+ if (activeOption.selected) {
306
+ this._removeActiveOptionFromSelection();
307
+ }
308
+ else {
309
+ this._addActiveOptionToSelection();
310
+ }
311
+ }
312
+ async _setActiveOptionSelected() {
313
+ const activeOption = await firstValueFrom(this.activeOption$);
314
+ if (!activeOption || activeOption.opt.disabled)
315
+ return;
316
+ this._setSelectedOption(activeOption.opt);
317
+ this.unmountSelectBody();
318
+ }
319
+ async _setSelectedOptionActive() {
320
+ const selectedOption = await firstValueFrom(this.selectedOption$);
321
+ if (!selectedOption)
322
+ return;
323
+ this._setActiveOption(selectedOption.opt);
324
+ }
325
+ async _setSelectedOption(option) {
326
+ const selectedOption = await firstValueFrom(this.selectedOption$);
327
+ if (selectedOption === option)
328
+ return false;
329
+ this._setActiveOption(option);
330
+ this.setValue(option?.value ?? null);
331
+ return true;
332
+ }
333
+ async _selectFirstOption(announce) {
334
+ const options = await firstValueFrom(this.selectOptions$);
335
+ if (!options)
336
+ return;
337
+ const firstOption = options[0]?.opt;
338
+ if (!firstOption)
339
+ return;
340
+ if (!this._setSelectedOption(firstOption))
341
+ return;
342
+ if (announce) {
343
+ const text = await firstValueFrom(firstOption.viewValue$);
344
+ this._liveAnnouncer.announce(text, 10000);
345
+ }
346
+ }
347
+ async _selectLastOption(announce) {
348
+ const options = await firstValueFrom(this.selectOptions$);
349
+ if (!options)
350
+ return;
351
+ const lastOption = options[options.length - 1]?.opt;
352
+ if (!lastOption)
353
+ return;
354
+ if (!this._setSelectedOption(lastOption))
355
+ return;
356
+ if (announce) {
357
+ const text = await firstValueFrom(lastOption.viewValue$);
358
+ this._liveAnnouncer.announce(text, 10000);
359
+ }
360
+ }
361
+ async _selectOptionByOffset(offset, announce) {
362
+ const options = await firstValueFrom(this.selectOptions$);
363
+ if (!options)
364
+ return;
365
+ const selectedOption = await firstValueFrom(this.selectedOption$);
366
+ const selectedOptionIndex = options.findIndex((o) => o.opt === selectedOption?.opt);
367
+ const nextOptionIndex = selectedOptionIndex + offset;
368
+ const nextOption = options[nextOptionIndex];
369
+ if (!nextOption)
370
+ return;
371
+ if (nextOption.opt.disabled) {
372
+ return this._selectOptionByOffset(offset + (offset < 0 ? -1 : 1), announce);
373
+ }
374
+ if (!this._setSelectedOption(nextOption.opt))
375
+ return;
376
+ if (announce) {
377
+ const text = await firstValueFrom(nextOption.opt.viewValue$);
378
+ this._liveAnnouncer.announce(text, 10000);
379
+ }
380
+ }
381
+ async _activateFirstOption() {
382
+ const options = await firstValueFrom(this.selectOptions$);
383
+ if (!options)
384
+ return;
385
+ const firstOption = options[0]?.opt;
386
+ if (!firstOption)
387
+ return;
388
+ await this._setActiveOption(firstOption);
389
+ }
390
+ async _activateLastOption() {
391
+ const options = await firstValueFrom(this.selectOptions$);
392
+ if (!options)
393
+ return;
394
+ const lastOption = options[options.length - 1]?.opt;
395
+ if (!lastOption)
396
+ return;
397
+ await this._setActiveOption(lastOption);
398
+ }
399
+ async _activateOptionByOffset(offset) {
400
+ const options = await firstValueFrom(this.selectOptions$);
401
+ if (!options)
402
+ return;
403
+ const activatedOption = await firstValueFrom(this.activeOption$);
404
+ const activatedOptionIndex = options.findIndex((o) => o.opt === activatedOption?.opt);
405
+ const nextOptionIndex = activatedOptionIndex + offset;
406
+ const nextOption = options[nextOptionIndex];
407
+ if (!nextOption)
408
+ return;
409
+ await this._setActiveOption(nextOption.opt);
410
+ }
411
+ async _migrateSelectValue() {
412
+ if (this.multiple && !Array.isArray(this.input.value)) {
413
+ this.setValue([]);
414
+ }
415
+ else if (!this.multiple && Array.isArray(this.input.value)) {
416
+ this.setValue(null);
417
+ }
418
+ this._setActiveOption(null);
419
+ }
420
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SelectDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
421
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: SelectDirective, isStandalone: true, inputs: { multiple: "multiple", emptyText: "emptyText" }, providers: [
422
+ {
423
+ provide: SELECT_TOKEN,
424
+ useExisting: SelectDirective,
425
+ },
426
+ ], queries: [{ propertyName: "_selectOptionsQueryList", predicate: SELECT_OPTION_TOKEN, descendants: true }], hostDirectives: [{ directive: i1.AnimatedOverlayDirective }], ngImport: i0 }); }
427
+ }
428
+ export { SelectDirective };
429
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SelectDirective, decorators: [{
430
+ type: Directive,
431
+ args: [{
432
+ standalone: true,
433
+ hostDirectives: [AnimatedOverlayDirective],
434
+ providers: [
435
+ {
436
+ provide: SELECT_TOKEN,
437
+ useExisting: SelectDirective,
438
+ },
439
+ ],
440
+ }]
441
+ }], ctorParameters: function () { return []; }, propDecorators: { multiple: [{
442
+ type: Input
443
+ }], emptyText: [{
444
+ type: Input
445
+ }], _selectOptionsQueryList: [{
446
+ type: ContentChildren,
447
+ args: [SELECT_OPTION_TOKEN, { descendants: true }]
448
+ }] } });
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9jb21wb25lbnRzL3NlbGVjdC9kaXJlY3RpdmVzL3NlbGVjdC9zZWxlY3QuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQWdCLHFCQUFxQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUUsT0FBTyxFQUNMLENBQUMsRUFDRCxVQUFVLEVBQ1YsR0FBRyxFQUNILEtBQUssRUFDTCxNQUFNLEVBQ04sSUFBSSxFQUNKLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLEVBQ0wsUUFBUSxFQUNSLGNBQWMsR0FDZixNQUFNLHVCQUF1QixDQUFDO0FBRS9CLE9BQU8sRUFFTCxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFDZCxLQUFLLEVBSUwsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsY0FBYyxFQUNkLGFBQWEsRUFDYixzQkFBc0IsR0FDdkIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLEdBQUcsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3JILE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUUzRCxPQUFPLEVBQUUsbUJBQW1CLEVBQXlCLE1BQU0sa0JBQWtCLENBQUM7OztBQUU5RSw4REFBOEQ7QUFDOUQsTUFBTSxDQUFDLE1BQU0sWUFB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O1lBQzVELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDckI7UUFFRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs4R0FqaEJVLGVBQWU7a0dBQWYsZUFBZSwyRkFQZjtZQUNUO2dCQUNFLE9BQU8sRUFBRSxZQUFZO2dCQUNyQixXQUFXLEVBQUUsZUFBZTthQUM3QjtTQUNGLGtFQTJCZ0IsbUJBQW1COztTQXpCekIsZUFBZTsyRkFBZixlQUFlO2tCQVYzQixTQUFTO21CQUFDO29CQUNULFVBQVUsRUFBRSxJQUFJO29CQUNoQixjQUFjLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQztvQkFDMUMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxZQUFZOzRCQUNyQixXQUFXLGlCQUFpQjt5QkFDN0I7cUJBQ0Y7aUJBQ0Y7MEVBYUssUUFBUTtzQkFEWCxLQUFLO2dCQVlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTSx1QkFBdUI7c0JBRGxDLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTGl2ZUFubm91bmNlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEEsXG4gIERPV05fQVJST1csXG4gIEVORCxcbiAgRU5URVIsXG4gIEVTQ0FQRSxcbiAgSE9NRSxcbiAgTEVGVF9BUlJPVyxcbiAgUEFHRV9ET1dOLFxuICBQQUdFX1VQLFxuICBSSUdIVF9BUlJPVyxcbiAgU1BBQ0UsXG4gIFVQX0FSUk9XLFxuICBoYXNNb2RpZmllcktleSxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IENvbXBvbmVudFR5cGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRGlyZWN0aXZlLFxuICBJbmplY3Rpb25Ub2tlbixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgVGVtcGxhdGVSZWYsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgaW5qZWN0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIEFuaW1hdGVkT3ZlcmxheUNvbXBvbmVudEJhc2UsXG4gIEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSxcbiAgVHlwZWRRdWVyeUxpc3QsXG4gIGNyZWF0ZURlc3Ryb3ksXG4gIGNyZWF0ZVJlYWN0aXZlQmluZGluZ3MsXG59IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBjb21iaW5lTGF0ZXN0LCBmaXJzdFZhbHVlRnJvbSwgbWFwLCBvZiwgc3RhcnRXaXRoLCBzd2l0Y2hNYXAsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBJTlBVVF9UT0tFTiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2RpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgU2VsZWN0Qm9keURpcmVjdGl2ZSB9IGZyb20gJy4uL3NlbGVjdC1ib2R5JztcbmltcG9ydCB7IFNFTEVDVF9PUFRJT05fVE9LRU4sIFNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL3NlbGVjdC1vcHRpb24nO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuZXhwb3J0IGNvbnN0IFNFTEVDVF9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxTZWxlY3REaXJlY3RpdmU8YW55Pj4oJ0VUX1NFTEVDVF9JTlBVVF9UT0tFTicpO1xuXG50eXBlIFNlbGVjdERpcmVjdGl2ZUJvZHlDb21wb25lbnRCYXNlID0gQW5pbWF0ZWRPdmVybGF5Q29tcG9uZW50QmFzZSAmIHtcbiAgX2JvZHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8dW5rbm93bj4gfCBudWxsO1xuICBzZWxlY3RCb2R5OiBTZWxlY3RCb2R5RGlyZWN0aXZlO1xufTtcblxubGV0IHVuaXF1ZUlkID0gMDtcblxuaW50ZXJmYWNlIFNlbGVjdEJvZHlDb25maWc8VCBleHRlbmRzIFNlbGVjdERpcmVjdGl2ZUJvZHlDb21wb25lbnRCYXNlPiB7XG4gIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTxUPjtcbiAgdGVtcGxhdGU6IFRlbXBsYXRlUmVmPHVua25vd24+O1xufVxuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmVdLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBTRUxFQ1RfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogU2VsZWN0RGlyZWN0aXZlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdERpcmVjdGl2ZTxUIGV4dGVuZHMgU2VsZWN0RGlyZWN0aXZlQm9keUNvbXBvbmVudEJhc2U+IGltcGxlbWVudHMgT25Jbml0LCBBZnRlckNvbnRlbnRJbml0IHtcbiAgcHJpdmF0ZSBfc2VsZWN0Qm9keUNvbmZpZzogU2VsZWN0Qm9keUNvbmZpZzxUPiB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FuaW1hdGVkT3ZlcmxheSA9IGluamVjdDxBbmltYXRlZE92ZXJsYXlEaXJlY3RpdmU8VD4+KEFuaW1hdGVkT3ZlcmxheURpcmVjdGl2ZSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gY3JlYXRlRGVzdHJveSgpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9saXZlQW5ub3VuY2VyID0gaW5qZWN0KExpdmVBbm5vdW5jZXIpO1xuICByZWFkb25seSBpbnB1dCA9IGluamVjdChJTlBVVF9UT0tFTik7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc2VsZWN0Qm9keUlkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzT3BlbiQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlJC52YWx1ZTtcbiAgfVxuICBzZXQgbXVsdGlwbGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX211bHRpcGxlJC5uZXh0KGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSkpO1xuXG4gICAgdGhpcy5fbWlncmF0ZVNlbGVjdFZhbHVlKCk7XG4gIH1cbiAgcHJpdmF0ZSBfbXVsdGlwbGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdChmYWxzZSk7XG5cbiAgQElucHV0KClcbiAgZW1wdHlUZXh0Pzogc3RyaW5nO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oU0VMRUNUX09QVElPTl9UT0tFTiwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICBwcml2YXRlIHNldCBfc2VsZWN0T3B0aW9uc1F1ZXJ5TGlzdCh2YWx1ZTogVHlwZWRRdWVyeUxpc3Q8U2VsZWN0T3B0aW9uRGlyZWN0aXZlPikge1xuICAgIHRoaXMuX3NlbGVjdE9wdGlvbnNRdWVyeUxpc3QkLm5leHQodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdE9wdGlvbnNRdWVyeUxpc3QkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxUeXBlZFF1ZXJ5TGlzdDxTZWxlY3RPcHRpb25EaXJlY3RpdmU+IHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0T3B0aW9ucyQgPSB0aGlzLl9zZWxlY3RPcHRpb25zUXVlcnlMaXN0JC5waXBlKFxuICAgIHN3aXRjaE1hcCgocXVlcnlMaXN0KSA9PiBxdWVyeUxpc3Q/LmNoYW5nZXMucGlwZShzdGFydFdpdGgocXVlcnlMaXN0KSkgPz8gb2YobnVsbCkpLFxuICAgIHN3aXRjaE1hcCgocXVlcnlMaXN0KSA9PiB7XG4gICAgICBpZiAoIXF1ZXJ5TGlzdCkgcmV0dXJuIG9mKG51bGwpO1xuXG4gICAgICBjb25zdCBpdGVtcyA9IHF1ZXJ5TGlzdFxuICAgICAgICAuZmlsdGVyKChpKTogaSBpcyBTZWxlY3RPcHRpb25EaXJlY3RpdmUgPT4gISFpKVxuICAgICAgICAubWFwKChvcHQpID0+XG4gICAgICAgICAgY29tYmluZUxhdGVzdChbb3B0LmlzU2VsZWN0ZWQkLCBvcHQuaXNBY3RpdmUkXSkucGlwZShcbiAgICAgICAgICAgIG1hcCgoW3NlbGVjdGVkLCBhY3RpdmVdKSA9PiAoeyBvcHQsIHNlbGVjdGVkLCBhY3RpdmUgfSkpLFxuICAgICAgICAgICksXG4gICAgICAgICk7XG5cbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KGl0ZW1zID8/IG9mKG51bGwpKTtcbiAgICB9KSxcbiAgKTtcblxuICByZWFkb25seSBhY3RpdmVPcHRpb24kID0gdGhpcy5zZWxlY3RPcHRpb25zJC5waXBlKFxuICAgIG1hcCgob3B0aW9ucykgPT4ge1xuICAgICAgaWYgKCFvcHRpb25zKSByZXR1cm4gbnVsbDtcblxuICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24uYWN0aXZlKSA/PyBudWxsO1xuICAgIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IHNlbGVjdGVkT3B0aW9ucyQgPSB0aGlzLnNlbGVjdE9wdGlvbnMkLnBpcGUoXG4gICAgbWFwKChvcHRpb25zKSA9PiB7XG4gICAgICBpZiAoIW9wdGlvbnMpIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSBvcHRpb25zLmZpbHRlcigob3B0aW9uKSA9PiBvcHRpb24uc2VsZWN0ZWQpO1xuXG4gICAgICBpZiAoIXNlbGVjdGVkT3B0aW9ucy5sZW5ndGgpIHJldHVybiBudWxsO1xuXG4gICAgICBjb25zdCBpbnB1dFZhbHVlID0gdGhpcy5pbnB1dC52YWx1ZTtcblxuICAgICAgaWYgKHRoaXMubXVsdGlwbGUgJiYgQXJyYXkuaXNBcnJheShpbnB1dFZhbHVlKSkge1xuICAgICAgICAvLyBzb3J0IHNlbGVjdGVkIG9wdGlvbnMgYnkgdGhlIG9yZGVyIG9mIHRoZSBpbnB1dCB2YWx1ZVxuICAgICAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnNNYXAgPSBuZXcgTWFwKHNlbGVjdGVkT3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gW29wdGlvbi5vcHQudmFsdWUsIG9wdGlvbl0pKTtcbiAgICAgICAgcmV0dXJuIGlucHV0VmFsdWVcbiAgICAgICAgICAubWFwKCh2YWx1ZSkgPT4gc2VsZWN0ZWRPcHRpb25zTWFwLmdldCh2YWx1ZSkpXG4gICAgICAgICAgLmZpbHRlcihcbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgb3B0aW9uLFxuICAgICAgICAgICAgKTogb3B0aW9uIGlzIHtcbiAgICAgICAgICAgICAgb3B0OiBTZWxlY3RPcHRpb25EaXJlY3RpdmU7XG4gICAgICAgICAgICAgIHNlbGVjdGVkOiBib29sZWFuO1xuICAgICAgICAgICAgICBhY3RpdmU6IGJvb2xlYW47XG4gICAgICAgICAgICB9ID0+ICEhb3B0aW9uLFxuICAgICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBzZWxlY3RlZE9wdGlvbnM7XG4gICAgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgc2VsZWN0ZWRPcHRpb24kID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMkLnBpcGUobWFwKChvcHRpb25zKSA9PiBvcHRpb25zPy5bMF0gPz8gbnVsbCkpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdEJvZHlJZCQgPSB0aGlzLl9zZWxlY3RCb2R5SWQkLmFzT2JzZXJ2YWJsZSgpO1xuICByZWFkb25seSBpc09wZW4kID0gdGhpcy5faXNPcGVuJC5hc09ic2VydmFibGUoKTtcbiAgcmVhZG9ubHkgbXVsdGlwbGUkID0gdGhpcy5fbXVsdGlwbGUkLmFzT2JzZXJ2YWJsZSgpO1xuXG4gIHJlYWRvbmx5IHNlbGVjdEN1cnJlbnRWYWx1ZUlkID0gYGV0LXNlbGVjdC1jdXJyZW50LXZhbHVlLSR7dW5pcXVlSWQrK31gO1xuXG4gIHJlYWRvbmx5IGFyaWFWaWV3VmFsdWUkID0gdGhpcy5zZWxlY3RlZE9wdGlvbnMkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChvcHRpb25zKSA9PiB7XG4gICAgICBpZiAoIW9wdGlvbnM/Lmxlbmd0aCkgcmV0dXJuIG9mKG51bGwpO1xuXG4gICAgICBjb25zdCB2aWV3VmFsdWVzID0gb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLm9wdC52aWV3VmFsdWUkKTtcblxuICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3Qodmlld1ZhbHVlcyk7XG4gICAgfSksXG4gICAgbWFwKCh2aWV3VmFsdWVzKSA9PiB7XG4gICAgICBpZiAoIXZpZXdWYWx1ZXMpIHJldHVybiBudWxsO1xuXG4gICAgICByZXR1cm4gdmlld1ZhbHVlcy5qb2luKCcsICcpO1xuICAgIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IGFjdGl2ZURlc2NlbmRhbnQkID0gY29tYmluZUxhdGVzdChbdGhpcy5pc09wZW4kLCB0aGlzLmFjdGl2ZU9wdGlvbiRdKS5waXBlKFxuICAgIG1hcCgoW2lzT3BlbiwgYWN0aXZlT3B0aW9uXSkgPT4ge1xuICAgICAgaWYgKCFpc09wZW4gfHwgIWFjdGl2ZU9wdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgICAgIHJldHVybiBhY3RpdmVPcHRpb24ub3B0LmlkO1xuICAgIH0pLFxuICApO1xuXG4gIHJlYWRvbmx5IG93bnMkID0gY29tYmluZUxhdGVzdChbdGhpcy5pc09wZW4kLCB0aGlzLnNlbGVjdEJvZHlJZCRdKS5waXBlKFxuICAgIG1hcCgoW2lzT3Blbiwgc2VsZWN0Qm9keUlkXSkgPT4ge1xuICAgICAgaWYgKCFpc09wZW4gfHwgIXNlbGVjdEJvZHlJZCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHNlbGVjdEJvZHlJZDtcbiAgICB9KSxcbiAgKTtcblxuICByZWFkb25seSBsYWJlbGxlZEJ5JCA9IHRoaXMuaW5wdXQubGFiZWxJZCQucGlwZShcbiAgICBtYXAoKGxhYmVsSWQpID0+IHtcbiAgICAgIGNvbnN0IGlkcyA9IFtsYWJlbElkLCB0aGlzLnNlbGVjdEN1cnJlbnRWYWx1ZUlkXTtcblxuICAgICAgcmV0dXJuIGlkcy5maWx0ZXIoKGlkKSA9PiAhIWlkKS5qb2luKCcgJyk7XG4gICAgfSksXG4gICk7XG5cbiAgcmVhZG9ubHkgX2JpbmRpbmdzID0gY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyhcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdjbGFzcy5ldC1zZWxlY3QtLWlzLW9wZW4nLFxuICAgICAgb2JzZXJ2YWJsZTogdGhpcy5pc09wZW4kLFxuICAgIH0sXG4gICAge1xuICAgICAgYXR0cmlidXRlOiAnY2xhc3MuZXQtc2VsZWN0LS1kaXNhYmxlZCcsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLmlucHV0LmRpc2FibGVkJCxcbiAgICB9LFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS5wbGFjZW1lbnQgPSAnYm90dG9tJztcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX3VubW91bnRTZWxlY3RCb2R5T25EaXNhYmxlKCk7XG4gICAgdGhpcy5fbWlncmF0ZVNlbGVjdFZhbHVlKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5fc2V0U2VsZWN0ZWRPcHRpb25BY3RpdmUoKTtcbiAgfVxuXG4gIHRyYWNrQnlGbjogVHJhY2tCeUZ1bmN0aW9uPFNlbGVjdE9wdGlvbkRpcmVjdGl2ZT4gPSAoXywgaXRlbSkgPT4gaXRlbS5pZDtcblxuICBtb3VudFNlbGVjdEJvZHkoKSB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3RCb2R5Q29uZmlnKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5fYW5pbWF0ZWRPdmVybGF5LmlzTW91bnRlZCB8fCB0aGlzLmlucHV0LmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLl9zZXRTZWxlY3RlZE9wdGlvbkFjdGl2ZSgpO1xuXG4gICAgY29uc3QgaW5zdGFuY2UgPSB0aGlzLl9hbmltYXRlZE92ZXJsYXkubW91bnQoe1xuICAgICAgY29tcG9uZW50OiB0aGlzLl9zZWxlY3RCb2R5Q29uZmlnLmNvbXBvbmVudCxcbiAgICAgIG1pcnJvcldpZHRoOiB0cnVlLFxuICAgICAgZGF0YTogeyBfYm9keVRlbXBsYXRlOiB0aGlzLl9zZWxlY3RCb2R5Q29uZmlnLnRlbXBsYXRlIH0gYXMgUGFydGlhbDxUPixcbiAgICB9KTtcblxuICAgIGlmICghaW5zdGFuY2UpIHJldHVybjtcblxuICAgIHRoaXMuX3NlbGVjdEJvZHlJZCQubmV4dChpbnN0YW5jZS5zZWxlY3RCb2R5LmlkKTtcbiAgICB0aGlzLl9pc09wZW4kLm5leHQodHJ1ZSk7XG4gIH1cblxuICB1bm1vdW50U2VsZWN0Qm9keSgpIHtcbiAgICBpZiAoIXRoaXMuX2FuaW1hdGVkT3ZlcmxheS5pc01vdW50ZWQpIHJldHVybjtcblxuICAgIHRoaXMuX2FuaW1hdGVkT3ZlcmxheS51bm1vdW50KCk7XG5cbiAgICB0aGlzLl9zZWxlY3RCb2R5SWQkLm5leHQobnVsbCk7XG4gICAgdGhpcy5faXNPcGVuJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiB1bmtub3duKSB7XG4gICAgdGhpcy5pbnB1dC5fdXBkYXRlVmFsdWUodmFsdWUpO1xuXG4gICAgdGhpcy5pbnB1dC5fbWFya0FzVG91Y2hlZCgpO1xuICAgIHRoaXMuaW5wdXQuX3NldFNob3VsZERpc3BsYXlFcnJvcih0cnVlKTtcbiAgfVxuXG4gIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBpZiAodGhpcy5faXNPcGVuJC52YWx1ZSkge1xuICAgICAgdGhpcy5faGFuZGxlS2V5RG93bkluT3BlblN0YXRlKGV2ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faGFuZGxlS2V5RG93bkluQ2xvc2VkU3RhdGUoZXZlbnQpO1xuICAgIH1cbiAgfVxuXG4gIHNldFNlbGVjdEJvZHkoY29uZmlnOiBTZWxlY3RCb2R5Q29uZmlnPFQ+KSB7XG4gICAgdGhpcy5fc2VsZWN0Qm9keUNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIHJlbW92ZU9wdGlvbkZyb21TZWxlY3Rpb24ob3B0aW9uOiBTZWxlY3RPcHRpb25EaXJlY3RpdmUpIHtcbiAgICBpZiAoIXRoaXMubXVsdGlwbGUgfHwgIUFycmF5LmlzQXJyYXkodGhpcy5pbnB1dC52YWx1ZSkpIHJldHVybjtcblxuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5pbnB1dC52YWx1ZS5maWx0ZXIoKHYpID0+IHYgIT09IG9wdGlvbi52YWx1ZSk7XG5cbiAgICB0aGlzLnNldFZhbHVlKHZhbHVlKTtcbiAgfVxuXG4gIF9jb250cm9sVG91Y2hlZCgpIHtcbiAgICB0aGlzLmlucHV0Ll9tYXJrQXNUb3VjaGVkKCk7XG4gICAgdGhpcy5pbnB1dC5fc2V0U2hvdWxkRGlzcGxheUVycm9yKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5tb3VudFNlbGVjdEJvZHlPbkRpc2FibGUoKSB7XG4gICAgdGhpcy5pbnB1dC5kaXNhYmxlZCRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGRpc2FibGVkKSA9PiB7XG4gICAgICAgICAgaWYgKCFkaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgICAgICAgdGhpcy51bm1vdW50U2VsZWN0Qm9keSgpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hhbmRsZUtleURvd25JbkNsb3NlZFN0YXRlKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgY29uc3QgaXNBcnJvd0tleSA9XG4gICAgICBrZXlDb2RlID09PSBET1dOX0FSUk9XIHx8IGtleUNvZGUgPT09IFVQX0FSUk9XIHx8IGtleUNvZGUgPT09IExFRlRfQVJST1cgfHwga2V5Q29kZSA9PT0gUklHSFRfQVJST1c7XG5cbiAgICBjb25zdCBpc09wZW5LZXkgPSBrZXlDb2RlID09PSBFTlRFUiB8fCBrZXlDb2RlID09PSBTUEFDRTtcblxuICAgIGlmICgoaXNPcGVuS2V5ICYmICFoYXNNb2RpZmllcktleShldmVudCkpIHx8ICgodGhpcy5tdWx0aXBsZSB8fCBldmVudC5hbHRLZXkpICYmIGlzQXJyb3dLZXkpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5tb3VudFNlbGVjdEJvZHkoKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlKSB7XG4gICAgICBzd2l0Y2ggKGtleUNvZGUpIHtcbiAgICAgICAgY2FzZSBET1dOX0FSUk9XOlxuICAgICAgICAgIHRoaXMuX3NlbGVjdE9wdGlvbkJ5T2Zmc2V0KDEsIHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFVQX0FSUk9XOlxuICAgICAgICAgIHRoaXMuX3NlbGVjdE9wdGlvbkJ5T2Zmc2V0KC0xLCB0cnVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBIT01FOlxuICAgICAgICAgIHRoaXMuX3NlbGVjdEZpcnN0T3B0aW9uKHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIEVORDpcbiAgICAgICAgICB0aGlzLl9zZWxlY3RMYXN0T3B0aW9uKHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlIFBBR0VfVVA6XG4gICAgICAgICAgdGhpcy5fc2VsZWN0T3B0aW9uQnlPZmZzZXQoLTEwLCB0cnVlKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBQQUdFX0RPV046XG4gICAgICAgICAgdGhpcy5fc2VsZWN0T3B0aW9uQnlPZmZzZXQoMTAsIHRydWUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5tdWx0aXBsZSAmJiBpc0Fycm93S2V5KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5tb3VudFNlbGVjdEJvZHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9oYW5kbGVLZXlEb3duSW5PcGVuU3RhdGUoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICBjb25zdCBpc0Fycm93S2V5ID0ga2V5Q29kZSA9PT0gRE9XTl9BUlJPVyB8fCBrZXlDb2RlID09PSBVUF9BUlJPVztcblxuICAgIGlmIChpc0Fycm93S2V5ICYmIGV2ZW50LmFsdEtleSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMudW5tb3VudFNlbGVjdEJvZHkoKTtcbiAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT09IEVTQ0FQRSAmJiAhaGFzTW9kaWZpZXJLZXkoZXZlbnQpKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy51bm1vdW50U2VsZWN0Qm9keSgpO1xuICAgIH0gZWxzZSBpZiAoa2V5Q29kZSA9PT0gRU5URVIgfHwga2V5Q29kZSA9PT0gU1BBQ0UpIHtcbiAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuX3RvZ2dsZUFjdGl2ZU9wdGlvblNlbGVjdGlvbigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fc2V0QWN0aXZlT3B0aW9uU2VsZWN0ZWQoKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMubXVsdGlwbGUgJiYga2V5Q29kZSA9PT0gQSAmJiBldmVudC5jdHJsS2V5KSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5fdG9nZ2xlU2VsZWN0aW9uT2ZBbGxPcHRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN3aXRjaCAoa2V5Q29kZSkge1xuICAgICAgICBjYXNlIERPV05fQVJST1c6XG4gICAgICAgICAgdGhpcy5fYWN0aXZhdGVPcHRpb25CeU9mZnNldCgxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBVUF9BUlJPVzpcbiAgICAgICAgICB0aGlzLl9hY3RpdmF0ZU9wdGlvbkJ5T2Zmc2V0KC0xKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBIT01FOlxuICAgICAgICAgIHRoaXMuX2FjdGl2YXRlRmlyc3RPcHRpb24oKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBFTkQ6XG4gICAgICAgICAgdGhpcy5fYWN0aXZhdGVMYXN0T3B0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUEFHRV9VUDpcbiAgICAgICAgICB0aGlzLl9hY3RpdmF0ZU9wdGlvbkJ5T2Zmc2V0KC0xMCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgUEFHRV9ET1dOOlxuICAgICAgICAgIHRoaXMuX2FjdGl2YXRlT3B0aW9uQnlPZmZzZXQoMTApO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3NldEFjdGl2ZU9wdGlvbihvcHRpb246IFNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB8IG51bGwpIHtcbiAgICBjb25zdCBjdXJyZW50QWN0aXZlT3B0aW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hY3RpdmVPcHRpb24kKTtcblxuICAgIGlmIChjdXJyZW50QWN0aXZlT3B0aW9uPy5vcHQgPT09IG9wdGlvbikgcmV0dXJuIGZhbHNlO1xuXG4gICAgY3VycmVudEFjdGl2ZU9wdGlvbj8ub3B0Ll9zZXRBY3RpdmUoZmFsc2UpO1xuXG4gICAgaWYgKG9wdGlvbikge1xuICAgICAgb3B0aW9uLl9zZXRBY3RpdmUodHJ1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9hZGRBY3RpdmVPcHRpb25Ub1NlbGVjdGlvbigpIHtcbiAgICBjb25zdCBhY3RpdmVPcHRpb24gPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmFjdGl2ZU9wdGlvbiQpO1xuXG4gICAgaWYgKCFhY3RpdmVPcHRpb24gfHwgYWN0aXZlT3B0aW9uLm9wdC5kaXNhYmxlZCB8fCBhY3RpdmVPcHRpb24uc2VsZWN0ZWQpIHJldHVybjtcblxuICAgIGlmICghQXJyYXkuaXNBcnJheSh0aGlzLmlucHV0LnZhbHVlKSkge1xuICAgICAgdGhpcy5zZXRWYWx1ZShbYWN0aXZlT3B0aW9uLm9wdC52YWx1ZV0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2V0VmFsdWUoWy4uLnRoaXMuaW5wdXQudmFsdWUsIGFjdGl2ZU9wdGlvbi5vcHQudmFsdWVdKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3JlbW92ZUFjdGl2ZU9wdGlvbkZyb21TZWxlY3Rpb24oKSB7XG4gICAgY29uc3QgYWN0aXZlT3B0aW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5hY3RpdmVPcHRpb24kKTtcblxuICAgIGlmICghYWN0aXZlT3B0aW9uIHx8IGFjdGl2ZU9wdGlvbi5vcHQuZGlzYWJsZWQgfHwgIWFjdGl2ZU9wdGlvbi5zZWxlY3RlZCkgcmV0dXJuO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHRoaXMuaW5wdXQudmFsdWUpKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKFtdKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnNldFZhbHVlKHRoaXMuaW5wdXQudmFsdWUuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT09IGFjdGl2ZU9wdGlvbi5vcHQudmFsdWUpKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3RvZ2dsZVNlbGVjdGlvbk9mQWxsT3B0aW9ucygpIHtcbiAgICBjb25zdCBhbGxPcHRpb25zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZWxlY3RPcHRpb25zJCk7XG5cbiAgICBjb25zdCBoYXNEZXNlbGVjdGVkT3B0aW9uID0gYWxsT3B0aW9ucz8uc29tZSgob3B0KSA9PiAhb3B0Lm9wdC5kaXNhYmxlZCAmJiAhb3B0LnNlbGVjdGVkKTtcblxuICAgIGlmIChoYXNEZXNlbGVjdGVkT3B0aW9uKSB7XG4gICAgICB0aGlzLl9zZWxlY3RBbGxPcHRpb25zKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Rlc2VsZWN0QWxsT3B0aW9ucygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3NlbGVjdEFsbE9wdGlvbnMoKSB7XG4gICAgY29uc3QgYWxsT3B0aW9ucyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0T3B0aW9ucyQpO1xuXG4gICAgaWYgKCFhbGxPcHRpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbnMgPSBhbGxPcHRpb25zLmZpbHRlcigob3B0KSA9PiAhb3B0Lm9wdC5kaXNhYmxlZCkubWFwKChvcHQpID0+IG9wdC5vcHQudmFsdWUpO1xuXG4gICAgdGhpcy5zZXRWYWx1ZShzZWxlY3RlZE9wdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfZGVzZWxlY3RBbGxPcHRpb25zKCkge1xuICAgIHRoaXMuc2V0VmFsdWUoW10pO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfdG9nZ2xlQWN0aXZlT3B0aW9uU2VsZWN0aW9uKCkge1xuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYWN0aXZlT3B0aW9uJCk7XG5cbiAgICBpZiAoIWFjdGl2ZU9wdGlvbikgcmV0dXJuO1xuXG4gICAgaWYgKGFjdGl2ZU9wdGlvbi5zZWxlY3RlZCkge1xuICAgICAgdGhpcy5fcmVtb3ZlQWN0aXZlT3B0aW9uRnJvbVNlbGVjdGlvbigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9hZGRBY3RpdmVPcHRpb25Ub1NlbGVjdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3NldEFjdGl2ZU9wdGlvblNlbGVjdGVkKCkge1xuICAgIGNvbnN0IGFjdGl2ZU9wdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYWN0aXZlT3B0aW9uJCk7XG5cbiAgICBpZiAoIWFjdGl2ZU9wdGlvbiB8fCBhY3RpdmVPcHRpb24ub3B0LmRpc2FibGVkKSByZXR1cm47XG5cbiAgICB0aGlzLl9zZXRTZWxlY3RlZE9wdGlvbihhY3RpdmVPcHRpb24ub3B0KTtcblxuICAgIHRoaXMudW5tb3VudFNlbGVjdEJvZHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX3NldFNlbGVjdGVkT3B0aW9uQWN0aXZlKCkge1xuICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZWxlY3RlZE9wdGlvbiQpO1xuXG4gICAgaWYgKCFzZWxlY3RlZE9wdGlvbikgcmV0dXJuO1xuXG4gICAgdGhpcy5fc2V0QWN0aXZlT3B0aW9uKHNlbGVjdGVkT3B0aW9uLm9wdCk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9zZXRTZWxlY3RlZE9wdGlvbihvcHRpb246IFNlbGVjdE9wdGlvbkRpcmVjdGl2ZSB8IG51bGwpIHtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0ZWRPcHRpb24kKTtcblxuICAgIGlmIChzZWxlY3RlZE9wdGlvbiA9PT0gb3B0aW9uKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLl9zZXRBY3RpdmVPcHRpb24ob3B0aW9uKTtcblxuICAgIHRoaXMuc2V0VmFsdWUob3B0aW9uPy52YWx1ZSA/PyBudWxsKTtcblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2VsZWN0Rmlyc3RPcHRpb24oYW5ub3VuY2U6IGJvb2xlYW4pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZWxlY3RPcHRpb25zJCk7XG5cbiAgICBpZiAoIW9wdGlvbnMpIHJldHVybjtcblxuICAgIGNvbnN0IGZpcnN0T3B0aW9uID0gb3B0aW9uc1swXT8ub3B0O1xuXG4gICAgaWYgKCFmaXJzdE9wdGlvbikgcmV0dXJuO1xuXG4gICAgaWYgKCF0aGlzLl9zZXRTZWxlY3RlZE9wdGlvbihmaXJzdE9wdGlvbikpIHJldHVybjtcblxuICAgIGlmIChhbm5vdW5jZSkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKGZpcnN0T3B0aW9uLnZpZXdWYWx1ZSQpO1xuICAgICAgdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0ZXh0LCAxMDAwMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2VsZWN0TGFzdE9wdGlvbihhbm5vdW5jZTogYm9vbGVhbikge1xuICAgIGNvbnN0IG9wdGlvbnMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLnNlbGVjdE9wdGlvbnMkKTtcblxuICAgIGlmICghb3B0aW9ucykgcmV0dXJuO1xuXG4gICAgY29uc3QgbGFzdE9wdGlvbiA9IG9wdGlvbnNbb3B0aW9ucy5sZW5ndGggLSAxXT8ub3B0O1xuXG4gICAgaWYgKCFsYXN0T3B0aW9uKSByZXR1cm47XG5cbiAgICBpZiAoIXRoaXMuX3NldFNlbGVjdGVkT3B0aW9uKGxhc3RPcHRpb24pKSByZXR1cm47XG5cbiAgICBpZiAoYW5ub3VuY2UpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShsYXN0T3B0aW9uLnZpZXdWYWx1ZSQpO1xuICAgICAgdGhpcy5fbGl2ZUFubm91bmNlci5hbm5vdW5jZSh0ZXh0LCAxMDAwMCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfc2VsZWN0T3B0aW9uQnlPZmZzZXQob2Zmc2V0OiBudW1iZXIsIGFubm91bmNlOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0T3B0aW9ucyQpO1xuXG4gICAgaWYgKCFvcHRpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0ZWRPcHRpb24kKTtcbiAgICBjb25zdCBzZWxlY3RlZE9wdGlvbkluZGV4ID0gb3B0aW9ucy5maW5kSW5kZXgoKG8pID0+IG8ub3B0ID09PSBzZWxlY3RlZE9wdGlvbj8ub3B0KTtcbiAgICBjb25zdCBuZXh0T3B0aW9uSW5kZXggPSBzZWxlY3RlZE9wdGlvbkluZGV4ICsgb2Zmc2V0O1xuICAgIGNvbnN0IG5leHRPcHRpb24gPSBvcHRpb25zW25leHRPcHRpb25JbmRleF07XG5cbiAgICBpZiAoIW5leHRPcHRpb24pIHJldHVybjtcblxuICAgIGlmIChuZXh0T3B0aW9uLm9wdC5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdE9wdGlvbkJ5T2Zmc2V0KG9mZnNldCArIChvZmZzZXQgPCAwID8gLTEgOiAxKSwgYW5ub3VuY2UpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5fc2V0U2VsZWN0ZWRPcHRpb24obmV4dE9wdGlvbi5vcHQpKSByZXR1cm47XG5cbiAgICBpZiAoYW5ub3VuY2UpIHtcbiAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShuZXh0T3B0aW9uLm9wdC52aWV3VmFsdWUkKTtcbiAgICAgIHRoaXMuX2xpdmVBbm5vdW5jZXIuYW5ub3VuY2UodGV4dCwgMTAwMDApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2FjdGl2YXRlRmlyc3RPcHRpb24oKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0T3B0aW9ucyQpO1xuXG4gICAgaWYgKCFvcHRpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBmaXJzdE9wdGlvbiA9IG9wdGlvbnNbMF0/Lm9wdDtcblxuICAgIGlmICghZmlyc3RPcHRpb24pIHJldHVybjtcblxuICAgIGF3YWl0IHRoaXMuX3NldEFjdGl2ZU9wdGlvbihmaXJzdE9wdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIF9hY3RpdmF0ZUxhc3RPcHRpb24oKSB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuc2VsZWN0T3B0aW9ucyQpO1xuXG4gICAgaWYgKCFvcHRpb25zKSByZXR1cm47XG5cbiAgICBjb25zdCBsYXN0T3B0aW9uID0gb3B0aW9uc1tvcHRpb25zLmxlbmd0aCAtIDFdPy5vcHQ7XG5cbiAgICBpZiAoIWxhc3RPcHRpb24pIHJldHVybjtcblxuICAgIGF3YWl0IHRoaXMuX3NldEFjdGl2ZU9wdGlvbihsYXN0T3B0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgX2FjdGl2YXRlT3B0aW9uQnlPZmZzZXQob2Zmc2V0OiBudW1iZXIpIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5zZWxlY3RPcHRpb25zJCk7XG5cbiAgICBpZiAoIW9wdGlvbnMpIHJldHVybjtcblxuICAgIGNvbnN0IGFjdGl2YXRlZE9wdGlvbiA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMuYWN0aXZlT3B0aW9uJCk7XG4gICAgY29uc3QgYWN0aXZhdGVkT3B0aW9uSW5kZXggPSBvcHRpb25zLmZpbmRJbmRleCgobykgPT4gby5vcHQgPT09IGFjdGl2YXRlZE9wdGlvbj8ub3B0KTtcbiAgICBjb25zdCBuZXh0T3B0aW9uSW5kZXggPSBhY3RpdmF0ZWRPcHRpb25JbmRleCArIG9mZnNldDtcbiAgICBjb25zdCBuZXh0T3B0aW9uID0gb3B0aW9uc1tuZXh0T3B0aW9uSW5kZXhdO1xuXG4gICAgaWYgKCFuZXh0T3B0aW9uKSByZXR1cm47XG5cbiAgICBhd2FpdCB0aGlzLl9zZXRBY3RpdmVPcHRpb24obmV4dE9wdGlvbi5vcHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBfbWlncmF0ZVNlbGVjdFZhbHVlKCkge1xuICAgIGlmICh0aGlzLm11bHRpcGxlICYmICFBcnJheS5pc0FycmF5KHRoaXMuaW5wdXQudmFsdWUpKSB7XG4gICAgICB0aGlzLnNldFZhbHVlKFtdKTtcbiAgICB9IGVsc2UgaWYgKCF0aGlzLm11bHRpcGxlICYmIEFycmF5LmlzQXJyYXkodGhpcy5pbnB1dC52YWx1ZSkpIHtcbiAgICAgIHRoaXMuc2V0VmFsdWUobnVsbCk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0QWN0aXZlT3B0aW9uKG51bGwpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9zZWxlY3QvZGlyZWN0aXZlcy9zZWxlY3QtYm9keS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './select-body.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9jb21wb25lbnRzL3NlbGVjdC9kaXJlY3RpdmVzL3NlbGVjdC1ib2R5L3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vc2VsZWN0LWJvZHkuZGlyZWN0aXZlJztcbiJdfQ==
@@ -0,0 +1,61 @@
1
+ import { Directive, InjectionToken, inject } from '@angular/core';
2
+ import { ClickOutsideDirective, createDestroy, createReactiveBindings } from '@ethlete/core';
3
+ import { map, takeUntil, tap } from 'rxjs';
4
+ import { SELECT_TOKEN } from '../select';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@ethlete/core";
7
+ export const SELECT_BODY_TOKEN = new InjectionToken('ET_SELECT_BODY_TOKEN');
8
+ let uniqueId = 0;
9
+ class SelectBodyDirective {
10
+ constructor() {
11
+ this._destroy$ = createDestroy();
12
+ this._select = inject(SELECT_TOKEN);
13
+ this._clickOutside = inject(ClickOutsideDirective);
14
+ this.id = `et-select-body-${uniqueId++}`;
15
+ this._bindings = createReactiveBindings({
16
+ attribute: 'aria-multiselectable',
17
+ observable: this._select.multiple$.pipe(map((multiple) => ({
18
+ render: true,
19
+ value: multiple,
20
+ }))),
21
+ }, {
22
+ attribute: 'aria-labelledby',
23
+ observable: this._select.input.labelId$.pipe(map((labelId) => ({
24
+ render: !!labelId,
25
+ value: labelId,
26
+ }))),
27
+ });
28
+ }
29
+ ngOnInit() {
30
+ this._clickOutside.etClickOutside
31
+ .pipe(takeUntil(this._destroy$), tap(() => this._select.unmountSelectBody()))
32
+ .subscribe();
33
+ }
34
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SelectBodyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
35
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.2", type: SelectBodyDirective, isStandalone: true, host: { attributes: { "tabindex": "-1", "role": "listbox" }, properties: { "attr.id": "id" } }, providers: [
36
+ {
37
+ provide: SELECT_BODY_TOKEN,
38
+ useExisting: SelectBodyDirective,
39
+ },
40
+ ], hostDirectives: [{ directive: i1.ClickOutsideDirective }], ngImport: i0 }); }
41
+ }
42
+ export { SelectBodyDirective };
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.2", ngImport: i0, type: SelectBodyDirective, decorators: [{
44
+ type: Directive,
45
+ args: [{
46
+ standalone: true,
47
+ providers: [
48
+ {
49
+ provide: SELECT_BODY_TOKEN,
50
+ useExisting: SelectBodyDirective,
51
+ },
52
+ ],
53
+ host: {
54
+ '[attr.id]': 'id',
55
+ tabindex: '-1',
56
+ role: 'listbox',
57
+ },
58
+ hostDirectives: [ClickOutsideDirective],
59
+ }]
60
+ }] });
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWJvZHkuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Zvcm1zL2NvbXBvbmVudHMvc2VsZWN0L2NvbXBvbmVudHMvc2VsZWN0L2RpcmVjdGl2ZXMvc2VsZWN0LWJvZHkvc2VsZWN0LWJvZHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsY0FBYyxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsYUFBYSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzdGLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMzQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7QUFFekMsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxjQUFjLENBQXNCLHNCQUFzQixDQUFDLENBQUM7QUFFakcsSUFBSSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0FBRWpCLE1BZWEsbUJBQW1CO0lBZmhDO1FBZ0JtQixjQUFTLEdBQUcsYUFBYSxFQUFFLENBQUM7UUFFNUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMvQixrQkFBYSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBRXRELE9BQUUsR0FBRyxrQkFBa0IsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUVwQyxjQUFTLEdBQUcsc0JBQXNCLENBQ3pDO1lBQ0UsU0FBUyxFQUFFLHNCQUFzQjtZQUNqQyxVQUFVLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNyQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0JBQ2pCLE1BQU0sRUFBRSxJQUFJO2dCQUNaLEtBQUssRUFBRSxRQUFRO2FBQ2hCLENBQUMsQ0FBQyxDQUNKO1NBQ0YsRUFDRDtZQUNFLFNBQVMsRUFBRSxpQkFBaUI7WUFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQzFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDaEIsTUFBTSxFQUFFLENBQUMsQ0FBQyxPQUFPO2dCQUNqQixLQUFLLEVBQUUsT0FBaUI7YUFDekIsQ0FBQyxDQUFDLENBQ0o7U0FDRixDQUNGLENBQUM7S0FVSDtJQVJDLFFBQVE7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLGNBQWM7YUFDOUIsSUFBSSxDQUNILFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQ3pCLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FDNUM7YUFDQSxTQUFTLEVBQUUsQ0FBQztJQUNqQixDQUFDOzhHQXBDVSxtQkFBbUI7a0dBQW5CLG1CQUFtQixpSUFibkI7WUFDVDtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsbUJBQW1CO2FBQ2pDO1NBQ0Y7O1NBUVUsbUJBQW1COzJGQUFuQixtQkFBbUI7a0JBZi9CLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLHFCQUFxQjt5QkFDakM7cUJBQ0Y7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixRQUFRLEVBQUUsSUFBSTt3QkFDZCxJQUFJLEVBQUUsU0FBUztxQkFDaEI7b0JBQ0QsY0FBYyxFQUFFLENBQUMscUJBQXFCLENBQUM7aUJBQ3hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3Rpb25Ub2tlbiwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENsaWNrT3V0c2lkZURpcmVjdGl2ZSwgY3JlYXRlRGVzdHJveSwgY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyB9IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgU0VMRUNUX1RPS0VOIH0gZnJvbSAnLi4vc2VsZWN0JztcblxuZXhwb3J0IGNvbnN0IFNFTEVDVF9CT0RZX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPFNlbGVjdEJvZHlEaXJlY3RpdmU+KCdFVF9TRUxFQ1RfQk9EWV9UT0tFTicpO1xuXG5sZXQgdW5pcXVlSWQgPSAwO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogU0VMRUNUX0JPRFlfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogU2VsZWN0Qm9keURpcmVjdGl2ZSxcbiAgICB9LFxuICBdLFxuICBob3N0OiB7XG4gICAgJ1thdHRyLmlkXSc6ICdpZCcsXG4gICAgdGFiaW5kZXg6ICctMScsXG4gICAgcm9sZTogJ2xpc3Rib3gnLFxuICB9LFxuICBob3N0RGlyZWN0aXZlczogW0NsaWNrT3V0c2lkZURpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIFNlbGVjdEJvZHlEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGNyZWF0ZURlc3Ryb3koKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3QgPSBpbmplY3QoU0VMRUNUX1RPS0VOKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY2xpY2tPdXRzaWRlID0gaW5qZWN0KENsaWNrT3V0c2lkZURpcmVjdGl2ZSk7XG5cbiAgcmVhZG9ubHkgaWQgPSBgZXQtc2VsZWN0LWJvZHktJHt1bmlxdWVJZCsrfWA7XG5cbiAgcmVhZG9ubHkgX2JpbmRpbmdzID0gY3JlYXRlUmVhY3RpdmVCaW5kaW5ncyhcbiAgICB7XG4gICAgICBhdHRyaWJ1dGU6ICdhcmlhLW11bHRpc2VsZWN0YWJsZScsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9zZWxlY3QubXVsdGlwbGUkLnBpcGUoXG4gICAgICAgIG1hcCgobXVsdGlwbGUpID0+ICh7XG4gICAgICAgICAgcmVuZGVyOiB0cnVlLFxuICAgICAgICAgIHZhbHVlOiBtdWx0aXBsZSxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICAgIHtcbiAgICAgIGF0dHJpYnV0ZTogJ2FyaWEtbGFiZWxsZWRieScsXG4gICAgICBvYnNlcnZhYmxlOiB0aGlzLl9zZWxlY3QuaW5wdXQubGFiZWxJZCQucGlwZShcbiAgICAgICAgbWFwKChsYWJlbElkKSA9PiAoe1xuICAgICAgICAgIHJlbmRlcjogISFsYWJlbElkLFxuICAgICAgICAgIHZhbHVlOiBsYWJlbElkIGFzIHN0cmluZyxcbiAgICAgICAgfSkpLFxuICAgICAgKSxcbiAgICB9LFxuICApO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NsaWNrT3V0c2lkZS5ldENsaWNrT3V0c2lkZVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgIHRhcCgoKSA9PiB0aGlzLl9zZWxlY3QudW5tb3VudFNlbGVjdEJvZHkoKSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './public-api';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvZm9ybXMvY29tcG9uZW50cy9zZWxlY3QvY29tcG9uZW50cy9zZWxlY3QvZGlyZWN0aXZlcy9zZWxlY3Qtb3B0aW9uL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './select-option.directive';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3NyYy9saWIvY29tcG9uZW50cy9mb3Jtcy9jb21wb25lbnRzL3NlbGVjdC9jb21wb25lbnRzL3NlbGVjdC9kaXJlY3RpdmVzL3NlbGVjdC1vcHRpb24vcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zZWxlY3Qtb3B0aW9uLmRpcmVjdGl2ZSc7XG4iXX0=