@ethlete/cdk 4.24.2 → 4.24.3

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 (246) hide show
  1. package/CHANGELOG.md +6 -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 +5 -5
  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/carousel/carousel.component.mjs +3 -3
  18. package/esm2022/lib/components/carousel/carousel.directive.mjs +3 -3
  19. package/esm2022/lib/components/carousel/controls/carousel-item-nav.component.mjs +3 -3
  20. package/esm2022/lib/components/carousel/controls/carousel-item-nav.directive.mjs +3 -3
  21. package/esm2022/lib/components/carousel/controls/carousel-next-button.directive.mjs +3 -3
  22. package/esm2022/lib/components/carousel/controls/carousel-previous-button.directive.mjs +3 -3
  23. package/esm2022/lib/components/carousel/controls/carousel-toggle-auto-play-button.directive.mjs +3 -3
  24. package/esm2022/lib/components/carousel/et-carousel-item.component.mjs +3 -3
  25. package/esm2022/lib/components/carousel/et-carousel-item.directive.mjs +3 -3
  26. package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/rich-filter-host.component.mjs +3 -3
  27. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/rich-filter-button.directive.mjs +3 -3
  28. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/rich-filter-button-slot.directive.mjs +3 -3
  29. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/rich-filter-content.directive.mjs +3 -3
  30. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/rich-filter-top.directive.mjs +3 -3
  31. package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +3 -3
  32. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +3 -3
  33. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +3 -3
  34. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +3 -3
  35. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +3 -3
  36. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +3 -3
  37. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +3 -3
  38. package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +3 -3
  39. package/esm2022/lib/components/forms/components/input/components/date-input/date-input.component.mjs +3 -3
  40. package/esm2022/lib/components/forms/components/input/components/date-time-input/date-time-input.component.mjs +3 -3
  41. package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +3 -3
  42. package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +3 -3
  43. package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +3 -3
  44. package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +3 -3
  45. package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +3 -3
  46. package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +3 -3
  47. package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +3 -3
  48. package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +3 -3
  49. package/esm2022/lib/components/forms/components/input/directives/date-input/date-input.directive.mjs +3 -3
  50. package/esm2022/lib/components/forms/components/input/directives/date-time-input/date-time-input.directive.mjs +3 -3
  51. package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +3 -3
  52. package/esm2022/lib/components/forms/components/input/directives/if-supports-show-picker/if-supports-show-picker.directive.mjs +3 -3
  53. package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +3 -3
  54. package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +3 -3
  55. package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +3 -3
  56. package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/show-picker-trigger.directive.mjs +3 -3
  57. package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +3 -3
  58. package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +3 -3
  59. package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +3 -3
  60. package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +3 -3
  61. package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +3 -3
  62. package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +3 -3
  63. package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +3 -3
  64. package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +3 -3
  65. package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +3 -3
  66. package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +3 -3
  67. package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +3 -3
  68. package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +3 -3
  69. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +3 -3
  70. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +3 -3
  71. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +3 -3
  72. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +3 -3
  73. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +3 -3
  74. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +3 -3
  75. package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +3 -3
  76. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +3 -3
  77. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-empty-template/combobox-body-empty-template.directive.mjs +3 -3
  78. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-error-template/combobox-body-error-template.directive.mjs +3 -3
  79. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-loading-template/combobox-body-loading-template.directive.mjs +3 -3
  80. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-more-items-hint-template/combobox-body-more-items-hint-template.directive.mjs +3 -3
  81. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-option-template/combobox-option-template.directive.mjs +3 -3
  82. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-selected-option-template/combobox-selected-option-template.directive.mjs +3 -3
  83. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +3 -3
  84. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +3 -3
  85. package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +3 -3
  86. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +3 -3
  87. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +3 -3
  88. package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +3 -3
  89. package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +3 -3
  90. package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +3 -3
  91. package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +3 -3
  92. package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +3 -3
  93. package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +3 -3
  94. package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +3 -3
  95. package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +3 -3
  96. package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +3 -3
  97. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-field/selection-list-field.component.mjs +3 -3
  98. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-option/selection-list-option.component.mjs +3 -3
  99. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-field/selection-list-field.directive.mjs +3 -3
  100. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-option/selection-list-option.directive.mjs +3 -3
  101. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +3 -3
  102. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +3 -3
  103. package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +3 -3
  104. package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +3 -3
  105. package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +3 -3
  106. package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +3 -3
  107. package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +3 -3
  108. package/esm2022/lib/components/forms/directives/expose-input-vars/expose-input-vars.directive.mjs +3 -3
  109. package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +3 -3
  110. package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +3 -3
  111. package/esm2022/lib/components/forms/directives/input/input.directive.mjs +3 -3
  112. package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +3 -3
  113. package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +3 -3
  114. package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +3 -3
  115. package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +3 -3
  116. package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +3 -3
  117. package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +3 -3
  118. package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +3 -3
  119. package/esm2022/lib/components/forms/services/form-field-state.service.mjs +3 -3
  120. package/esm2022/lib/components/forms/services/form-group-state.service.mjs +3 -3
  121. package/esm2022/lib/components/forms/services/input-state.service.mjs +3 -3
  122. package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +3 -3
  123. package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +3 -3
  124. package/esm2022/lib/components/forms/utils/input.base.mjs +3 -3
  125. package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +3 -3
  126. package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +3 -3
  127. package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +3 -3
  128. package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +3 -3
  129. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +3 -3
  130. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +3 -3
  131. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +3 -3
  132. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +3 -3
  133. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +3 -3
  134. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +3 -3
  135. package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +3 -3
  136. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +3 -3
  137. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +3 -3
  138. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +3 -3
  139. package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +3 -3
  140. package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +3 -3
  141. package/esm2022/lib/components/overlay/components/menu/components/menu/menu.component.mjs +3 -3
  142. package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/menu-checkbox-item.component.mjs +3 -3
  143. package/esm2022/lib/components/overlay/components/menu/components/menu-container/menu-container.component.mjs +3 -3
  144. package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/menu-radio-item.component.mjs +3 -3
  145. package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/menu-checkbox-group.directive.mjs +3 -3
  146. package/esm2022/lib/components/overlay/components/menu/directives/menu-group/menu-group.directive.mjs +3 -3
  147. package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/menu-group-title.directive.mjs +3 -3
  148. package/esm2022/lib/components/overlay/components/menu/directives/menu-item/menu-item.directive.mjs +3 -3
  149. package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/menu-radio-group.directive.mjs +3 -3
  150. package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/menu-trigger.directive.mjs +3 -3
  151. package/esm2022/lib/components/overlay/components/menu-deprecated/context-menu-trigger.mjs +6 -6
  152. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-aim.mjs +6 -6
  153. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-bar.mjs +3 -3
  154. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-base.mjs +3 -3
  155. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-group.mjs +3 -3
  156. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-checkbox.mjs +3 -3
  157. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-radio.mjs +3 -3
  158. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-selectable.mjs +3 -3
  159. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item.mjs +3 -3
  160. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-module.mjs +4 -4
  161. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-stack.mjs +3 -3
  162. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger-base.mjs +3 -3
  163. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger.mjs +3 -3
  164. package/esm2022/lib/components/overlay/components/menu-deprecated/menu.mjs +3 -3
  165. package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.mjs +3 -3
  166. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-back-or-close/overlay-back-or-close.directive.mjs +3 -3
  167. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.mjs +3 -3
  168. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-close/overlay-close.directive.mjs +3 -3
  169. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/overlay-footer.directive.mjs +3 -3
  170. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/overlay-header.directive.mjs +3 -3
  171. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header-template/overlay-header-template.directive.mjs +3 -3
  172. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-main/overlay-main.directive.mjs +3 -3
  173. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/overlay-route-header-template-outlet.component.mjs +3 -3
  174. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-link/overlay-router-link.directive.mjs +3 -3
  175. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet/overlay-router-outlet.component.mjs +3 -3
  176. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet-disabled-template/overlay-router-outlet-disabled-template.directive.mjs +3 -3
  177. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template/overlay-shared-route-template.directive.mjs +3 -3
  178. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-shared-route-template-outlet/overlay-shared-route-template-outlet.component.mjs +3 -3
  179. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar/overlay-sidebar.component.mjs +3 -3
  180. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/overlay-sidebar-page.component.mjs +3 -3
  181. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-title/overlay-title.directive.mjs +3 -3
  182. package/esm2022/lib/components/overlay/components/overlay/services/overlay.service.mjs +3 -3
  183. package/esm2022/lib/components/overlay/components/overlay/utils/filter-overlay.mjs +3 -3
  184. package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +3 -3
  185. package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +3 -3
  186. package/esm2022/lib/components/overlay/components/toggletip/partials/toggletip-close/toggletip-close.directive.mjs +3 -3
  187. package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +3 -3
  188. package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +3 -3
  189. package/esm2022/lib/components/overlay/directives/dynamic-overlay-title/dynamic-overlay-title.directive.mjs +3 -3
  190. package/esm2022/lib/components/overlay/directives/overlay-close-auto-blocker/overlay-close-auto-blocker.directive.mjs +3 -3
  191. package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +3 -3
  192. package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +3 -3
  193. package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +3 -3
  194. package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +3 -3
  195. package/esm2022/lib/components/picture/picture.component.mjs +3 -3
  196. package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +3 -3
  197. package/esm2022/lib/components/query-error/components/query-error/query-error.component.mjs +3 -3
  198. package/esm2022/lib/components/query-error/directives/query-error/query-error.directive.mjs +3 -3
  199. package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +4 -4
  200. package/esm2022/lib/components/scrollable/components/scrollable-placeholder/scrollable-placeholder.component.mjs +3 -3
  201. package/esm2022/lib/components/scrollable/directives/scrollable-ignore-child/scrollable-ignore-child.directive.mjs +3 -3
  202. package/esm2022/lib/components/scrollable/directives/scrollable-is-active-child/scrollable-is-active-child.directive.mjs +3 -3
  203. package/esm2022/lib/components/scrollable/directives/scrollable-loading-template/scrollable-loading-template.directive.mjs +3 -3
  204. package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-item-template/scrollable-placeholder-item-template.directive.mjs +3 -3
  205. package/esm2022/lib/components/scrollable/directives/scrollable-placeholder-overlay-template/scrollable-placeholder-overlay-template.directive.mjs +3 -3
  206. package/esm2022/lib/components/skeleton/components/skeleton/skeleton.component.mjs +3 -3
  207. package/esm2022/lib/components/skeleton/partials/skeleton-item/skeleton-item.component.mjs +3 -3
  208. package/esm2022/lib/components/sort/components/sort-header/sort-header.component.mjs +3 -3
  209. package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +3 -3
  210. package/esm2022/lib/components/sort/services/sort-header-intl.mjs +3 -3
  211. package/esm2022/lib/components/table/components/table/table.component.mjs +3 -3
  212. package/esm2022/lib/components/table/partials/cells/cell/cell.directive.mjs +3 -3
  213. package/esm2022/lib/components/table/partials/cells/cell-def/cell-def.directive.mjs +3 -3
  214. package/esm2022/lib/components/table/partials/cells/column-def/column-def.directive.mjs +3 -3
  215. package/esm2022/lib/components/table/partials/cells/footer-cell/footer-cell.directive.mjs +3 -3
  216. package/esm2022/lib/components/table/partials/cells/footer-cell-def/footer-cell-def.directive.mjs +3 -3
  217. package/esm2022/lib/components/table/partials/cells/header-cell/header-cell.directive.mjs +3 -3
  218. package/esm2022/lib/components/table/partials/cells/header-cell-def/header-cell-def.directive.mjs +3 -3
  219. package/esm2022/lib/components/table/partials/cells/text-column/text-column.component.mjs +3 -3
  220. package/esm2022/lib/components/table/partials/rows/footer-row/footer-row.component.mjs +3 -3
  221. package/esm2022/lib/components/table/partials/rows/footer-row-def/footer-row-def.directive.mjs +3 -3
  222. package/esm2022/lib/components/table/partials/rows/header-row/header-row.component.mjs +3 -3
  223. package/esm2022/lib/components/table/partials/rows/header-row-def/header-row-def.directive.mjs +3 -3
  224. package/esm2022/lib/components/table/partials/rows/no-data-row/no-data-row.directive.mjs +3 -3
  225. package/esm2022/lib/components/table/partials/rows/recycle-rows/recycle-rows.directive.mjs +3 -3
  226. package/esm2022/lib/components/table/partials/rows/row/row.component.mjs +3 -3
  227. package/esm2022/lib/components/table/partials/rows/row-def/row-def.directive.mjs +3 -3
  228. package/esm2022/lib/components/table/partials/table-busy/table-busy.directive.mjs +3 -3
  229. package/esm2022/lib/components/table/partials/table-busy-outlet/table-busy-outlet.directive.mjs +3 -3
  230. package/esm2022/lib/components/tabs/components/inline-tabs/inline-tabs.component.mjs +3 -3
  231. package/esm2022/lib/components/tabs/components/nav-tabs/nav-tabs.component.mjs +3 -3
  232. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab/inline-tab.component.mjs +3 -3
  233. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body/inline-tab-body.component.mjs +3 -3
  234. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-body-host/inline-tab-body-host.directive.mjs +3 -3
  235. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-content/inline-tab-content.directive.mjs +3 -3
  236. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-header/inline-tab-header.component.mjs +3 -3
  237. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label/inline-tab-label.directive.mjs +3 -3
  238. package/esm2022/lib/components/tabs/partials/inline-tabs/inline-tab-label-wrapper/inline-tab-label-wrapper.directive.mjs +3 -3
  239. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tab-link/nav-tab-link.directive.mjs +3 -3
  240. package/esm2022/lib/components/tabs/partials/nav-tabs/nav-tabs-outlet/nav-tabs-outlet.component.mjs +3 -3
  241. package/esm2022/lib/components/tabs/utils/active-tab-underline.util.mjs +3 -3
  242. package/esm2022/lib/components/tabs/utils/paginated-tab-header.directive.mjs +3 -3
  243. package/esm2022/lib/services/swipe-handler.service.mjs +3 -3
  244. package/fesm2022/ethlete-cdk.mjs +735 -735
  245. package/fesm2022/ethlete-cdk.mjs.map +1 -1
  246. package/package.json +8 -8
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @ethlete/cdk
2
2
 
3
+ ## 4.24.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [`d86e8d8`](https://github.com/ethlete-io/ethdk/commit/d86e8d8b4ffa4a7432edb2aa1036e7849035a705) Thanks [@TomTomB](https://github.com/TomTomB)! - Fix scrollable child styling if set to vertical
8
+
3
9
  ## 4.24.2
4
10
 
5
11
  ### Patch Changes
@@ -42,10 +42,10 @@ export class AccordionComponent {
42
42
  close() {
43
43
  this._isOpen$.next(false);
44
44
  }
45
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.9", type: AccordionComponent, isStandalone: true, selector: "et-accordion", inputs: { isOpenByDefault: ["isOpenByDefault", "isOpenByDefault", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], label: "label" }, host: { classAttribute: "et-accordion" }, providers: [{ provide: ACCORDION_COMPONENT, useExisting: AccordionComponent }], queries: [{ propertyName: "templateLabel", first: true, predicate: ACCORDION_LABEL_WRAPPER_DIRECTIVE, descendants: true }, { propertyName: "templateHint", first: true, predicate: ACCORDION_HINT_WRAPPER_DIRECTIVE, descendants: true }], ngImport: i0, template: "<div *etLet=\"_isOpen$ | async as isOpen\" class=\"et-accordion-container\">\n <h3 class=\"et-accordion-header-wrapper\">\n <button\n [disabled]=\"disabled\"\n [id]=\"headerId\"\n [attr.aria-controls]=\"bodyId\"\n [attr.aria-expanded]=\"isOpen\"\n [class.et-accordion-has-hint]=\"!!templateHint\"\n (click)=\"toggleAccordionOpen()\"\n class=\"et-accordion-header\"\n type=\"button\"\n >\n <div>\n @if (templateLabel) {\n <ng-template [cdkPortalOutlet]=\"templateLabel\" />\n } @else {\n <span et-accordion-label>{{ label }} </span>\n }\n </div>\n\n @if (templateHint) {\n <ng-template [cdkPortalOutlet]=\"templateHint\" />\n }\n\n <et-chevron-icon />\n </button>\n </h3>\n <div\n [@animateOpenClose]=\"(_isOpen$ | async) ? 'open' : 'close'\"\n [attr.aria-labelledby]=\"headerId\"\n [id]=\"bodyId\"\n class=\"et-accordion-body\"\n role=\"region\"\n >\n <div class=\"et-accordion-body-container\">\n <ng-content />\n </div>\n </div>\n <hr class=\"et-accordion-separator\" />\n</div>\n", styles: [":where(.et-accordion){--chevron-size: 15px}.et-accordion .et-accordion-container{position:relative;z-index:1}.et-accordion .et-chevron-icon{display:block;transform:rotate(180deg);transition:transform .3s var(--ease-5);inline-size:var(--chevron-size);block-size:var(--chevron-size)}.et-accordion [aria-expanded=true] .et-chevron-icon{transform:rotate(0)}.et-accordion .et-accordion-header{display:grid;grid-template-columns:1fr auto;inline-size:100%;block-size:100%;text-align:left;background-color:transparent;border:none;align-items:center;padding:0;gap:15px}.et-accordion .et-accordion-header:not(:disabled){cursor:pointer}.et-accordion .et-accordion-header.et-accordion-has-hint{grid-template-columns:1fr auto auto}.et-accordion .et-accordion-header-wrapper{margin:0}.et-accordion .et-accordion-body{overflow:hidden}.et-accordion .et-accordion-separator{position:relative;z-index:-1}\n"], dependencies: [{ kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: AccordionLabelDirective, selector: "[et-accordion-label]" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }], animations: [accordionAnimations.animateOpenClose], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: AccordionComponent, isStandalone: true, selector: "et-accordion", inputs: { isOpenByDefault: ["isOpenByDefault", "isOpenByDefault", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], label: "label" }, host: { classAttribute: "et-accordion" }, providers: [{ provide: ACCORDION_COMPONENT, useExisting: AccordionComponent }], queries: [{ propertyName: "templateLabel", first: true, predicate: ACCORDION_LABEL_WRAPPER_DIRECTIVE, descendants: true }, { propertyName: "templateHint", first: true, predicate: ACCORDION_HINT_WRAPPER_DIRECTIVE, descendants: true }], ngImport: i0, template: "<div *etLet=\"_isOpen$ | async as isOpen\" class=\"et-accordion-container\">\n <h3 class=\"et-accordion-header-wrapper\">\n <button\n [disabled]=\"disabled\"\n [id]=\"headerId\"\n [attr.aria-controls]=\"bodyId\"\n [attr.aria-expanded]=\"isOpen\"\n [class.et-accordion-has-hint]=\"!!templateHint\"\n (click)=\"toggleAccordionOpen()\"\n class=\"et-accordion-header\"\n type=\"button\"\n >\n <div>\n @if (templateLabel) {\n <ng-template [cdkPortalOutlet]=\"templateLabel\" />\n } @else {\n <span et-accordion-label>{{ label }} </span>\n }\n </div>\n\n @if (templateHint) {\n <ng-template [cdkPortalOutlet]=\"templateHint\" />\n }\n\n <et-chevron-icon />\n </button>\n </h3>\n <div\n [@animateOpenClose]=\"(_isOpen$ | async) ? 'open' : 'close'\"\n [attr.aria-labelledby]=\"headerId\"\n [id]=\"bodyId\"\n class=\"et-accordion-body\"\n role=\"region\"\n >\n <div class=\"et-accordion-body-container\">\n <ng-content />\n </div>\n </div>\n <hr class=\"et-accordion-separator\" />\n</div>\n", styles: [":where(.et-accordion){--chevron-size: 15px}.et-accordion .et-accordion-container{position:relative;z-index:1}.et-accordion .et-chevron-icon{display:block;transform:rotate(180deg);transition:transform .3s var(--ease-5);inline-size:var(--chevron-size);block-size:var(--chevron-size)}.et-accordion [aria-expanded=true] .et-chevron-icon{transform:rotate(0)}.et-accordion .et-accordion-header{display:grid;grid-template-columns:1fr auto;inline-size:100%;block-size:100%;text-align:left;background-color:transparent;border:none;align-items:center;padding:0;gap:15px}.et-accordion .et-accordion-header:not(:disabled){cursor:pointer}.et-accordion .et-accordion-header.et-accordion-has-hint{grid-template-columns:1fr auto auto}.et-accordion .et-accordion-header-wrapper{margin:0}.et-accordion .et-accordion-body{overflow:hidden}.et-accordion .et-accordion-separator{position:relative;z-index:-1}\n"], dependencies: [{ kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: AccordionLabelDirective, selector: "[et-accordion-label]" }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "component", type: ChevronIconComponent, selector: "et-chevron-icon" }], animations: [accordionAnimations.animateOpenClose], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
47
47
  }
48
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionComponent, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionComponent, decorators: [{
49
49
  type: Component,
50
50
  args: [{ selector: 'et-accordion', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, providers: [{ provide: ACCORDION_COMPONENT, useExisting: AccordionComponent }], imports: [
51
51
  LetDirective,
@@ -35,10 +35,10 @@ export class AccordionGroupComponent {
35
35
  }), takeUntil(this._destroy$))
36
36
  .subscribe();
37
37
  }
38
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.9", type: AccordionGroupComponent, isStandalone: true, selector: "et-accordion-group", inputs: { autoCloseOthers: ["autoCloseOthers", "autoCloseOthers", booleanAttribute] }, host: { classAttribute: "et-accordion-group" }, queries: [{ propertyName: "_accordions", predicate: ACCORDION_COMPONENT }], ngImport: i0, template: "<ng-content select=\"et-accordion\" />\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.0.1", type: AccordionGroupComponent, isStandalone: true, selector: "et-accordion-group", inputs: { autoCloseOthers: ["autoCloseOthers", "autoCloseOthers", booleanAttribute] }, host: { classAttribute: "et-accordion-group" }, queries: [{ propertyName: "_accordions", predicate: ACCORDION_COMPONENT }], ngImport: i0, template: "<ng-content select=\"et-accordion\" />\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
40
40
  }
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionGroupComponent, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionGroupComponent, decorators: [{
42
42
  type: Component,
43
43
  args: [{ selector: 'et-accordion-group', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, host: {
44
44
  class: 'et-accordion-group',
@@ -1,10 +1,10 @@
1
1
  import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class AccordionHintDirective {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: AccordionHintDirective, isStandalone: true, selector: "[et-accordion-hint]", host: { classAttribute: "et-accordion-hint" }, ngImport: i0 }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: AccordionHintDirective, isStandalone: true, selector: "[et-accordion-hint]", host: { classAttribute: "et-accordion-hint" }, ngImport: i0 }); }
6
6
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionHintDirective, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionHintDirective, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  selector: '[et-accordion-hint]',
@@ -6,10 +6,10 @@ export class AccordionHintWrapperDirective extends CdkPortal {
6
6
  constructor(templateRef, viewContainerRef) {
7
7
  super(templateRef, viewContainerRef);
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionHintWrapperDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: AccordionHintWrapperDirective, isStandalone: true, selector: "ng-template[et-accordion-hint-wrapper]", providers: [{ provide: ACCORDION_HINT_WRAPPER_DIRECTIVE, useExisting: AccordionHintWrapperDirective }], usesInheritance: true, ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionHintWrapperDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: AccordionHintWrapperDirective, isStandalone: true, selector: "ng-template[et-accordion-hint-wrapper]", providers: [{ provide: ACCORDION_HINT_WRAPPER_DIRECTIVE, useExisting: AccordionHintWrapperDirective }], usesInheritance: true, ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionHintWrapperDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionHintWrapperDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: 'ng-template[et-accordion-hint-wrapper]',
@@ -1,10 +1,10 @@
1
1
  import { Directive } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export class AccordionLabelDirective {
4
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: AccordionLabelDirective, isStandalone: true, selector: "[et-accordion-label]", host: { classAttribute: "et-accordion-label" }, ngImport: i0 }); }
4
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: AccordionLabelDirective, isStandalone: true, selector: "[et-accordion-label]", host: { classAttribute: "et-accordion-label" }, ngImport: i0 }); }
6
6
  }
7
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionLabelDirective, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionLabelDirective, decorators: [{
8
8
  type: Directive,
9
9
  args: [{
10
10
  selector: '[et-accordion-label]',
@@ -6,10 +6,10 @@ export class AccordionLabelWrapperDirective extends CdkPortal {
6
6
  constructor(templateRef, viewContainerRef) {
7
7
  super(templateRef, viewContainerRef);
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionLabelWrapperDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: AccordionLabelWrapperDirective, isStandalone: true, selector: "ng-template[et-accordion-label-wrapper]", providers: [{ provide: ACCORDION_LABEL_WRAPPER_DIRECTIVE, useExisting: AccordionLabelWrapperDirective }], usesInheritance: true, ngImport: i0 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionLabelWrapperDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
10
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: AccordionLabelWrapperDirective, isStandalone: true, selector: "ng-template[et-accordion-label-wrapper]", providers: [{ provide: ACCORDION_LABEL_WRAPPER_DIRECTIVE, useExisting: AccordionLabelWrapperDirective }], usesInheritance: true, ngImport: i0 }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: AccordionLabelWrapperDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AccordionLabelWrapperDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: 'ng-template[et-accordion-label-wrapper]',
@@ -88,7 +88,7 @@ export class BracketComponent {
88
88
  this._config = createBracketConfig(this._bracketConfig, v);
89
89
  }
90
90
  get hasRoundHeaders() {
91
- return !!this._config?.roundHeaderComponent ?? false;
91
+ return !!this._config?.roundHeaderComponent;
92
92
  }
93
93
  getBracketMatchById(id) {
94
94
  return this._bracket$.pipe(map((bracket) => bracket?.getMatchById(id) ?? null));
@@ -222,8 +222,8 @@ export class BracketComponent {
222
222
  const round = this._getRoundById(roundId, bracket);
223
223
  return round?.matches.find((match) => match.data.id === matchId) ?? null;
224
224
  }
225
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BracketComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
226
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.9", type: BracketComponent, isStandalone: true, selector: "et-bracket", inputs: { itemWith: "itemWith", itemHeight: "itemHeight", roundHeaderHeight: "roundHeaderHeight", upperLowerBracketGap: "upperLowerBracketGap", columnGap: "columnGap", rowGap: "rowGap", roundsWithMatches: "roundsWithMatches", componentConfig: "componentConfig" }, host: { properties: { "attr.has-round-headers": "this.hasRoundHeaders" }, classAttribute: "et-bracket" }, providers: [
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BracketComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
226
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: BracketComponent, isStandalone: true, selector: "et-bracket", inputs: { itemWith: "itemWith", itemHeight: "itemHeight", roundHeaderHeight: "roundHeaderHeight", upperLowerBracketGap: "upperLowerBracketGap", columnGap: "columnGap", rowGap: "rowGap", roundsWithMatches: "roundsWithMatches", componentConfig: "componentConfig" }, host: { properties: { "attr.has-round-headers": "this.hasRoundHeaders" }, classAttribute: "et-bracket" }, providers: [
227
227
  {
228
228
  provide: BRACKET_TOKEN,
229
229
  useExisting: BracketComponent,
@@ -300,7 +300,7 @@ __decorate([
300
300
  __metadata("design:paramtypes", [Object, Bracket]),
301
301
  __metadata("design:returntype", void 0)
302
302
  ], BracketComponent.prototype, "_getNextMatch", null);
303
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BracketComponent, decorators: [{
303
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BracketComponent, decorators: [{
304
304
  type: Component,
305
305
  args: [{ selector: 'et-bracket', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [NgClass, LetDirective, PortalModule, AsyncPipe], host: {
306
306
  class: 'et-bracket',
@@ -330,4 +330,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImpor
330
330
  type: HostBinding,
331
331
  args: ['attr.has-round-headers']
332
332
  }], getConnectedMatches: [], getChildConnectorShape: [], getLineMultiAfter: [], getLineSpan: [], createRoundPortal: [], createMatchPortal: [], _getRoundById: [], _getPreviousMatches: [], _getNextMatch: [] } });
333
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhY2tldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL2JyYWNrZXQvYnJhY2tldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL2JyYWNrZXQvYnJhY2tldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGVBQWUsRUFBaUIsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFDUixLQUFLLEVBRUwsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQXFCeEUsTUFBTSxPQUFPLGdCQUFnQjtJQWxCN0I7UUFtQlUsZ0JBQVcsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQzFELG1CQUFjLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsUUFBUSxF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RixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBV0Ysb0JBQW9CO3NCQUR2QixLQUFLO2dCQVdGLFNBQVM7c0JBRFosS0FBSztnQkFXRixNQUFNO3NCQURULEtBQUs7Z0JBV0YsaUJBQWlCO3NCQURwQixLQUFLO2dCQW9CRixlQUFlO3NCQURsQixLQUFLO2dCQVdGLGVBQWU7c0JBRGxCLFdBQVc7dUJBQUMsd0JBQXdCO2dCQXVCM0IsbUJBQW1CLE1BY25CLHNCQUFzQixNQWdDdEIsaUJBQWlCLE1BaURqQixXQUFXLE1BZ0NYLGlCQUFpQixNQW1CakIsaUJBQWlCLE1BaUJuQixhQUFhLE1BUWIsbUJBQW1CLE1Ba0JuQixhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50UG9ydGFsLCBDb21wb25lbnRUeXBlLCBQb3J0YWxNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcbmltcG9ydCB7IEFzeW5jUGlwZSwgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBUcmFja0J5RnVuY3Rpb24sXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGV0RGlyZWN0aXZlLCBNZW1vIH0gZnJvbSAnQGV0aGxldGUvY29yZSc7XG5pbXBvcnQgeyBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3IH0gZnJvbSAnQGV0aGxldGUvdHlwZXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBtYXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJSQUNLRVRfQ09ORklHX1RPS0VOLCBCUkFDS0VUX01BVENIX0lEX1RPS0VOLCBCUkFDS0VUX1JPVU5EX0lEX1RPS0VOLCBCUkFDS0VUX1RPS0VOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IEJyYWNrZXRDb25maWcsIEJyYWNrZXRNYXRjaCwgQnJhY2tldFJvdW5kIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQnJhY2tldCwgY3JlYXRlQnJhY2tldENvbmZpZywgb3JkZXJSb3VuZHMgfSBmcm9tICcuLi8uLi91dGlscyc7XG5pbXBvcnQgeyBDb25uZWN0ZWRNYXRjaGVzIH0gZnJvbSAnLi9icmFja2V0LmNvbXBvbmVudC50eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2V0LWJyYWNrZXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vYnJhY2tldC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2JyYWNrZXQuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtOZ0NsYXNzLCBMZXREaXJlY3RpdmUsIFBvcnRhbE1vZHVsZSwgQXN5bmNQaXBlXSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtYnJhY2tldCcsXG4gIH0sXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IEJSQUNLRVRfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogQnJhY2tldENvbXBvbmVudCxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBCcmFja2V0Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX2JyYWNrZXRDb25maWcgPSBpbmplY3QoQlJBQ0tFVF9DT05GSUdfVE9LRU4sIHsgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgX2luamVjdG9yID0gaW5qZWN0KEluamVjdG9yKTtcblxuICBASW5wdXQoKVxuICBnZXQgaXRlbVdpdGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2l0ZW1XaXRoO1xuICB9XG4gIHNldCBpdGVtV2l0aCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pdGVtV2l0aCA9IHY7XG5cbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tX2JyYWNrZXQtaXRlbS13aWR0aCcsIHYpO1xuICB9XG4gIHByaXZhdGUgX2l0ZW1XaXRoID0gJzIwMHB4JztcblxuICBASW5wdXQoKVxuICBnZXQgaXRlbUhlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbUhlaWdodDtcbiAgfVxuICBzZXQgaXRlbUhlaWdodCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9pdGVtSGVpZ2h0ID0gdjtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tX2JyYWNrZXQtaXRlbS1oZWlnaHQnLCB2KTtcbiAgfVxuICBwcml2YXRlIF9pdGVtSGVpZ2h0ID0gJzEwMHB4JztcblxuICBASW5wdXQoKVxuICBnZXQgcm91bmRIZWFkZXJIZWlnaHQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kSGVhZGVySGVpZ2h0O1xuICB9XG4gIHNldCByb3VuZEhlYWRlckhlaWdodCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9yb3VuZEhlYWRlckhlaWdodCA9IHY7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLV9yb3VuZC1oZWFkZXItaGVpZ2h0Jywgdik7XG4gIH1cbiAgcHJpdmF0ZSBfcm91bmRIZWFkZXJIZWlnaHQgPSAnNTBweCc7XG5cbiAgQElucHV0KClcbiAgZ2V0IHVwcGVyTG93ZXJCcmFja2V0R2FwKCkge1xuICAgIHJldHVybiB0aGlzLl91cHBlckxvd2VyQnJhY2tldEdhcDtcbiAgfVxuICBzZXQgdXBwZXJMb3dlckJyYWNrZXRHYXAodjogc3RyaW5nKSB7XG4gICAgdGhpcy5fdXBwZXJMb3dlckJyYWNrZXRHYXAgPSB2O1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1fdXBwZXItbG93ZXItYnJhY2tldC1nYXAnLCB2KTtcbiAgfVxuICBwcml2YXRlIF91cHBlckxvd2VyQnJhY2tldEdhcCA9ICcwcHgnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBjb2x1bW5HYXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NvbHVtbkdhcDtcbiAgfVxuICBzZXQgY29sdW1uR2FwKHY6IHN0cmluZykge1xuICAgIHRoaXMuX2NvbHVtbkdhcCA9IHY7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLV9icmFja2V0LWNvbHVtbi1nYXAnLCB2KTtcbiAgfVxuICBwcml2YXRlIF9jb2x1bW5HYXAhOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgZ2V0IHJvd0dhcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm93R2FwO1xuICB9XG4gIHNldCByb3dHYXAodjogc3RyaW5nKSB7XG4gICAgdGhpcy5fcm93R2FwID0gdjtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tX2JyYWNrZXQtcm93LWdhcCcsIHYpO1xuICB9XG4gIHByaXZhdGUgX3Jvd0dhcCE6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBnZXQgcm91bmRzV2l0aE1hdGNoZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdW5kc1dpdGhNYXRjaGVzO1xuICB9XG4gIHNldCByb3VuZHNXaXRoTWF0Y2hlcyh2OiBSb3VuZFN0YWdlU3RydWN0dXJlV2l0aE1hdGNoZXNWaWV3W10gfCBudWxsIHwgdW5kZWZpbmVkKSB7XG4gICAgdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMgPSB2O1xuXG4gICAgaWYgKCF2IHx8IHYubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9icmFja2V0JC5uZXh0KG51bGwpO1xuICAgICAgdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMgPSBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBzb3J0ZWRSb3VuZHMgPSBvcmRlclJvdW5kcyh2KTtcblxuICAgICAgdGhpcy5fYnJhY2tldCQubmV4dChuZXcgQnJhY2tldChzb3J0ZWRSb3VuZHMpKTtcbiAgICAgIHRoaXMuX3JvdW5kc1dpdGhNYXRjaGVzID0gc29ydGVkUm91bmRzO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9yb3VuZHNXaXRoTWF0Y2hlcyE6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXdbXSB8IG51bGwgfCB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbXBvbmVudENvbmZpZygpIHtcbiAgICByZXR1cm4gdGhpcy5fY29tcG9uZW50Q29uZmlnO1xuICB9XG4gIHNldCBjb21wb25lbnRDb25maWcodjogQnJhY2tldENvbmZpZyB8IG51bGwpIHtcbiAgICB0aGlzLl9jb21wb25lbnRDb25maWcgPSB2O1xuICAgIHRoaXMuX2NvbmZpZyA9IGNyZWF0ZUJyYWNrZXRDb25maWcodGhpcy5fYnJhY2tldENvbmZpZywgdik7XG4gIH1cbiAgcHJpdmF0ZSBfY29tcG9uZW50Q29uZmlnOiBCcmFja2V0Q29uZmlnIHwgbnVsbCA9IG51bGw7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmhhcy1yb3VuZC1oZWFkZXJzJylcbiAgZ2V0IGhhc1JvdW5kSGVhZGVycygpIHtcbiAgICByZXR1cm4gISF0aGlzLl9jb25maWc/LnJvdW5kSGVhZGVyQ29tcG9uZW50ID8/IGZhbHNlO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9jb25maWcgPSBjcmVhdGVCcmFja2V0Q29uZmlnKHRoaXMuX2NvbXBvbmVudENvbmZpZywgdGhpcy5fYnJhY2tldENvbmZpZyk7XG4gIHByb3RlY3RlZCBfYnJhY2tldCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PEJyYWNrZXQgfCBudWxsPihudWxsKTtcblxuICB0cmFja0J5Um91bmQ6IFRyYWNrQnlGdW5jdGlvbjxCcmFja2V0Um91bmQ+ID0gKF8sIHJvdW5kKSA9PiByb3VuZC5kYXRhLmlkO1xuICB0cmFja0J5TWF0Y2g6IFRyYWNrQnlGdW5jdGlvbjxCcmFja2V0TWF0Y2g+ID0gKF8sIG1hdGNoKSA9PiBtYXRjaC5kYXRhLmlkO1xuXG4gIGdldEJyYWNrZXRNYXRjaEJ5SWQoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9icmFja2V0JC5waXBlKG1hcCgoYnJhY2tldCkgPT4gYnJhY2tldD8uZ2V0TWF0Y2hCeUlkKGlkKSA/PyBudWxsKSk7XG4gIH1cblxuICBnZXRCcmFja2V0Um91bmRCeUlkKGlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5fYnJhY2tldCQucGlwZShtYXAoKGJyYWNrZXQpID0+IGJyYWNrZXQ/LmdldFJvdW5kQnlJZChpZCkgPz8gbnVsbCkpO1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAobWF0Y2g6IEJyYWNrZXRNYXRjaCwgYnJhY2tldDogQnJhY2tldCkgPT5cbiAgICAgIGAke21hdGNoLmRhdGEuaWR9LSR7bWF0Y2gucHJldmlvdXNNYXRjaGVzPy5yb3VuZElkID8/IG51bGx9ICR7YnJhY2tldC5pZH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgZ2V0Q29ubmVjdGVkTWF0Y2hlcyhtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KTogQ29ubmVjdGVkTWF0Y2hlcyB7XG4gICAgY29uc3QgcHJldmlvdXNNYXRjaGVzID0gdGhpcy5fZ2V0UHJldmlvdXNNYXRjaGVzKG1hdGNoLCBicmFja2V0KTtcbiAgICBjb25zdCBuZXh0TWF0Y2ggPSB0aGlzLl9nZXROZXh0TWF0Y2gobWF0Y2gsIGJyYWNrZXQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHByZXZpb3VzTWF0Y2hlcyxcbiAgICAgIG5leHRNYXRjaCxcbiAgICB9O1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAoY3VycmVudE1hdGNoOiBCcmFja2V0TWF0Y2gsIG5leHRNYXRjaDogQnJhY2tldE1hdGNoIHwgbnVsbCkgPT5cbiAgICAgIGAke2N1cnJlbnRNYXRjaC5kYXRhLmlkfS0ke25leHRNYXRjaD8ucHJldmlvdXNNYXRjaGVzPy5yb3VuZElkID8/IG51bGx9YCxcbiAgfSlcbiAgcHJvdGVjdGVkIGdldENoaWxkQ29ubmVjdG9yU2hhcGUoY3VycmVudE1hdGNoOiBCcmFja2V0TWF0Y2gsIG5leHRNYXRjaDogQnJhY2tldE1hdGNoIHwgbnVsbCkge1xuICAgIGlmICghbmV4dE1hdGNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0TWF0Y2hQcmV2aW91c01hdGNoZXMgPSBuZXh0TWF0Y2gucHJldmlvdXNNYXRjaGVzPy5tYXRjaElkcztcblxuICAgIGlmICghbmV4dE1hdGNoUHJldmlvdXNNYXRjaGVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0TWF0Y2hQcmV2aW91c01hdGNoQSA9IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hlc1swXTtcbiAgICBjb25zdCBuZXh0TWF0Y2hQcmV2aW91c01hdGNoQiA9IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hlc1sxXTtcblxuICAgIGlmIChuZXh0TWF0Y2hQcmV2aW91c01hdGNoZXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gJ3N0cmFpZ2h0JztcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudE1hdGNoLmRhdGEuaWQgPT09IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hBKSB7XG4gICAgICByZXR1cm4gJ2Rvd24nO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50TWF0Y2guZGF0YS5pZCA9PT0gbmV4dE1hdGNoUHJldmlvdXNNYXRjaEIpIHtcbiAgICAgIHJldHVybiAndXAnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAocm91bmRJbmRleDogbnVtYmVyLCBicmFja2V0OiBCcmFja2V0KSA9PiBgJHtyb3VuZEluZGV4fS0ke2JyYWNrZXQuaWR9YCxcbiAgfSlcbiAgcHJvdGVjdGVkIGdldExpbmVNdWx0aUFmdGVyKHJvdW5kSW5kZXg6IG51bWJlciwgYnJhY2tldDogQnJhY2tldCkge1xuICAgIGNvbnN0IGlzRG91YmxlRWxpbWluYXRpb24gPSBicmFja2V0LmJyYWNrZXRUeXBlID09PSAnZG91YmxlJztcbiAgICBjb25zdCBjdXJyZW50Um91bmQgPSBicmFja2V0LmJyYWNrZXRSb3VuZHNbcm91bmRJbmRleF07XG4gICAgY29uc3QgbmV4dFJvdW5kID0gYnJhY2tldC5icmFja2V0Um91bmRzW3JvdW5kSW5kZXggKyAxXTtcblxuICAgIC8vIGZvciBjb25uZWN0aW5nIHRoZSBsYXN0IGxvb3NlciBtYXRjaCBhbmQgdGhlIHJlc3BlY3RpdmUgc2VtaSBmaW5hbCB3aW5uZXIgbWF0Y2hcbiAgICBpZiAoXG4gICAgICBpc0RvdWJsZUVsaW1pbmF0aW9uICYmXG4gICAgICAoIW5leHRSb3VuZCB8fCBuZXh0Um91bmQuZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnKSAmJlxuICAgICAgY3VycmVudFJvdW5kPy5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0J1xuICAgICkge1xuICAgICAgcmV0dXJuIGJyYWNrZXQudG90YWxSb3dDb3VudCAtIDE7XG4gICAgfVxuXG4gICAgaWYgKCFuZXh0Um91bmQpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmIChuZXh0Um91bmQubWF0Y2hlcy5sZW5ndGggPT09IGN1cnJlbnRSb3VuZD8ubWF0Y2hlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIGlmICghaXNEb3VibGVFbGltaW5hdGlvbikge1xuICAgICAgcmV0dXJuIDIgKiogcm91bmRJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgbGV0IHJuZEluZGV4ID0gcm91bmRJbmRleDtcblxuICAgICAgaWYgKGN1cnJlbnRSb3VuZD8uZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcpIHtcbiAgICAgICAgY29uc3QgdG90YWxXaW5uZXJSb3VuZHMgPSBicmFja2V0Lndpbm5lclJvdW5kQ291bnQ7XG4gICAgICAgIGNvbnN0IGxvb3NlclJvdW5kSW5kZXggPVxuICAgICAgICAgIGN1cnJlbnRSb3VuZC5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyA/IHJvdW5kSW5kZXggLSB0b3RhbFdpbm5lclJvdW5kcyA6IHJvdW5kSW5kZXg7XG5cbiAgICAgICAgcm5kSW5kZXggPSBsb29zZXJSb3VuZEluZGV4IC8gMjtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDIgKiogcm5kSW5kZXg7XG4gICAgfVxuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAoXG4gICAgICBhZmZlY3RlZFJvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgICAgcHJldmlvdXNSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICAgIGN1cnJlbnRSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICAgIG5leHRSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICAgIGJyYWNrZXQ6IEJyYWNrZXQsXG4gICAgKSA9PlxuICAgICAgYCR7YWZmZWN0ZWRSb3VuZD8uZGF0YS5pZH0gJHtwcmV2aW91c1JvdW5kPy5kYXRhLmlkfSAke2N1cnJlbnRSb3VuZD8uZGF0YS5pZH0gJHtuZXh0Um91bmQ/LmRhdGEuaWR9ICR7YnJhY2tldC5pZH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgZ2V0TGluZVNwYW4oXG4gICAgYWZmZWN0ZWRSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICBwcmV2aW91c1JvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgIGN1cnJlbnRSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICBuZXh0Um91bmQ6IEJyYWNrZXRSb3VuZCB8IG51bGwsXG4gICAgYnJhY2tldDogQnJhY2tldCxcbiAgKSB7XG4gICAgaWYgKCFhZmZlY3RlZFJvdW5kKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICAvLyBUaGVyZSBpcyBuZXZlciBhIGNvbm5lY3Rpb24gdG8gdGhlIHRoaXJkIHBsYWNlIG1hdGNoXG4gICAgaWYgKG5leHRSb3VuZD8uZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBpZiAoYnJhY2tldC5pc1BhcnRpYWxEb3VibGVFbGltaW5hdGlvbikge1xuICAgICAgaWYgKGFmZmVjdGVkUm91bmQgPT09IG5leHRSb3VuZCAmJiBuZXh0Um91bmQuZGF0YS50eXBlID09PSAnZmluYWwnKSB7XG4gICAgICAgIHJldHVybiAyO1xuICAgICAgfSBlbHNlIGlmIChhZmZlY3RlZFJvdW5kID09PSBjdXJyZW50Um91bmQgJiYgY3VycmVudFJvdW5kPy5kYXRhLnR5cGUgPT09ICdmaW5hbCcpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9IGVsc2UgaWYgKGFmZmVjdGVkUm91bmQgPT09IHByZXZpb3VzUm91bmQgJiYgY3VycmVudFJvdW5kPy5kYXRhLnR5cGUgPT09ICdmaW5hbCcpIHtcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFmZmVjdGVkUm91bmQuY29sdW1uLmVuZCAtIGFmZmVjdGVkUm91bmQuY29sdW1uLnN0YXJ0O1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAocm91bmQ6IEJyYWNrZXRSb3VuZCkgPT4gYCR7cm91bmQuZGF0YS5pZH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgY3JlYXRlUm91bmRQb3J0YWwocm91bmQ6IEJyYWNrZXRSb3VuZCwgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+KSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBCUkFDS0VUX1JPVU5EX0lEX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiByb3VuZC5kYXRhLmlkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudCwgbnVsbCwgaW5qZWN0b3IpO1xuXG4gICAgcmV0dXJuIHBvcnRhbDtcbiAgfVxuXG4gIEBNZW1vKHtcbiAgICByZXNvbHZlcjogKG1hdGNoOiBCcmFja2V0TWF0Y2gpID0+IGAke21hdGNoLmRhdGEuaWR9YCxcbiAgfSlcbiAgcHJvdGVjdGVkIGNyZWF0ZU1hdGNoUG9ydGFsKG1hdGNoOiBCcmFja2V0TWF0Y2gsIGNvbXBvbmVudDogQ29tcG9uZW50VHlwZTx1bmtub3duPikge1xuICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtcbiAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgcHJvdmlkZTogQlJBQ0tFVF9NQVRDSF9JRF9UT0tFTixcbiAgICAgICAgICB1c2VWYWx1ZTogbWF0Y2guZGF0YS5pZCxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBwYXJlbnQ6IHRoaXMuX2luamVjdG9yLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbChjb21wb25lbnQsIG51bGwsIGluamVjdG9yKTtcblxuICAgIHJldHVybiBwb3J0YWw7XG4gIH1cblxuICBATWVtbyh7IHJlc29sdmVyOiAoaWQ6IHN0cmluZywgYnJhY2tldDogQnJhY2tldCkgPT4gYCR7aWR9LSR7YnJhY2tldC5pZH1gIH0pXG4gIHByaXZhdGUgX2dldFJvdW5kQnlJZChpZDogc3RyaW5nLCBicmFja2V0OiBCcmFja2V0KSB7XG4gICAgcmV0dXJuIGJyYWNrZXQ/LmJyYWNrZXRSb3VuZHMuZmluZCgocm91bmQpID0+IHJvdW5kLmRhdGEuaWQgPT09IGlkKSA/PyBudWxsO1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAobWF0Y2g6IEJyYWNrZXRNYXRjaCwgYnJhY2tldDogQnJhY2tldCkgPT5cbiAgICAgIGAke21hdGNoLmRhdGEuaWR9LSR7bWF0Y2gucHJldmlvdXNNYXRjaGVzPy5yb3VuZElkID8/IG51bGx9ICR7YnJhY2tldC5pZH1gLFxuICB9KVxuICBwcml2YXRlIF9nZXRQcmV2aW91c01hdGNoZXMobWF0Y2g6IEJyYWNrZXRNYXRjaCwgYnJhY2tldDogQnJhY2tldCkge1xuICAgIGlmICghbWF0Y2gucHJldmlvdXNNYXRjaGVzKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJvdW5kSWQsIG1hdGNoSWRzIH0gPSBtYXRjaC5wcmV2aW91c01hdGNoZXM7XG5cbiAgICBjb25zdCByb3VuZCA9IHRoaXMuX2dldFJvdW5kQnlJZChyb3VuZElkLCBicmFja2V0KTtcblxuICAgIHJldHVybiBtYXRjaElkcy5tYXAoKG1hdGNoSWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIHJvdW5kPy5tYXRjaGVzLmZpbmQoKG1hdGNoKSA9PiBtYXRjaC5kYXRhLmlkID09PSBtYXRjaElkKSA/PyBudWxsO1xuICAgIH0pO1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAobWF0Y2g6IEJyYWNrZXRNYXRjaCwgYnJhY2tldDogQnJhY2tldCkgPT5cbiAgICAgIGAke21hdGNoLmRhdGEuaWR9LSR7bWF0Y2gucHJldmlvdXNNYXRjaGVzPy5yb3VuZElkID8/IG51bGx9ICR7YnJhY2tldC5pZH1gLFxuICB9KVxuICBwcml2YXRlIF9nZXROZXh0TWF0Y2gobWF0Y2g6IEJyYWNrZXRNYXRjaCwgYnJhY2tldDogQnJhY2tldCkge1xuICAgIGlmICghbWF0Y2gubmV4dE1hdGNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCB7IHJvdW5kSWQsIG1hdGNoSWQgfSA9IG1hdGNoLm5leHRNYXRjaDtcblxuICAgIGNvbnN0IHJvdW5kID0gdGhpcy5fZ2V0Um91bmRCeUlkKHJvdW5kSWQsIGJyYWNrZXQpO1xuXG4gICAgcmV0dXJuIHJvdW5kPy5tYXRjaGVzLmZpbmQoKG1hdGNoKSA9PiBtYXRjaC5kYXRhLmlkID09PSBtYXRjaElkKSA/PyBudWxsO1xuICB9XG59XG4iLCJAaWYgKF9icmFja2V0JCB8IGFzeW5jOyBhcyBicmFja2V0KSB7XG4gIEBmb3IgKHJvdW5kIG9mIGJyYWNrZXQuYnJhY2tldFJvdW5kczsgdHJhY2sgdHJhY2tCeVJvdW5kKHJvdW5kSW5kZXgsIHJvdW5kKTsgbGV0IHJvdW5kSW5kZXggPSAkaW5kZXgpIHtcbiAgICBAaWYgKF9jb25maWcucm91bmRIZWFkZXJDb21wb25lbnQpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgW3N0eWxlLi0tX2NzXT1cInJvdW5kLmNvbHVtbi5zdGFydFwiXG4gICAgICAgIFtzdHlsZS4tLV9jZV09XCJyb3VuZC5jb2x1bW4uZW5kXCJcbiAgICAgICAgW3N0eWxlLi0tX3JzXT1cIlxuICAgICAgICAgIHJvdW5kLmRhdGEudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnIHx8IHJvdW5kLmRhdGEudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJ1xuICAgICAgICAgICAgPyByb3VuZC5yb3cuc3RhcnQgKyAxXG4gICAgICAgICAgICA6IHJvdW5kLnJvdy5zdGFydFxuICAgICAgICBcIlxuICAgICAgICBbYXR0ci5zcGVjaWFsLWFsaWduLWVuZF09XCJcbiAgICAgICAgICByb3VuZC5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZScgJiZcbiAgICAgICAgICBicmFja2V0LmJyYWNrZXRUeXBlID09PSAnc2luZ2xlJyAmJlxuICAgICAgICAgIGJyYWNrZXQuZmlyc3RXaW5uZXJSb3VuZCAmJlxuICAgICAgICAgIGJyYWNrZXQuZmlyc3RXaW5uZXJSb3VuZC5tYXRjaGVzLmxlbmd0aCA8PSA0XG4gICAgICAgICAgICA/ICd0cnVlJ1xuICAgICAgICAgICAgOiAnZmFsc2UnXG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLmlzLWxvc2VyLXJvdW5kLWhlYWRlcl09XCJcbiAgICAgICAgICAocm91bmQuZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgfHwgcm91bmQuZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnKSAmJiBicmFja2V0LmJyYWNrZXRUeXBlID09PSAnZG91YmxlJ1xuICAgICAgICBcIlxuICAgICAgICBjbGFzcz1cImV0LWJyYWNrZXQtcm91bmRcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJjcmVhdGVSb3VuZFBvcnRhbChyb3VuZCwgX2NvbmZpZy5yb3VuZEhlYWRlckNvbXBvbmVudClcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIDxuZy1jb250YWluZXIgKmV0TGV0PVwiYnJhY2tldC5icmFja2V0Um91bmRzW3JvdW5kSW5kZXggLSAxXSA/PyBudWxsIGFzIGxhc3RSb3VuZFwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqZXRMZXQ9XCJicmFja2V0LmJyYWNrZXRSb3VuZHNbcm91bmRJbmRleCArIDFdID8/IG51bGwgYXMgbmV4dFJvdW5kXCI+XG4gICAgICAgIEBmb3IgKG1hdGNoIG9mIHJvdW5kLm1hdGNoZXM7IHRyYWNrIHRyYWNrQnlNYXRjaChtYXRjaEluZGV4LCBtYXRjaCk7IGxldCBtYXRjaEluZGV4ID0gJGluZGV4KSB7XG4gICAgICAgICAgQGlmIChnZXRDb25uZWN0ZWRNYXRjaGVzKG1hdGNoLCBicmFja2V0KTsgYXMgY29ubmVjdGVkTWF0Y2hlcykge1xuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBbc3R5bGUuLS1fY3NdPVwicm91bmQuY29sdW1uLnN0YXJ0XCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tX2NlXT1cInJvdW5kLmNvbHVtbi5lbmRcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1fcnNdPVwiXG4gICAgICAgICAgICAgICAgcm91bmQuZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgfHwgcm91bmQuZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnXG4gICAgICAgICAgICAgICAgICA/IG1hdGNoLnJvdy5zdGFydCArIChfY29uZmlnLnJvdW5kSGVhZGVyQ29tcG9uZW50ID8gMiA6IDApXG4gICAgICAgICAgICAgICAgICA6IG1hdGNoLnJvdy5zdGFydCArIChfY29uZmlnLnJvdW5kSGVhZGVyQ29tcG9uZW50ID8gMSA6IDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLV9yZV09XCJcbiAgICAgICAgICAgICAgICByb3VuZC5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyB8fCByb3VuZC5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZSdcbiAgICAgICAgICAgICAgICAgID8gbWF0Y2gucm93LmVuZCArIChfY29uZmlnLnJvdW5kSGVhZGVyQ29tcG9uZW50ID8gMiA6IDApXG4gICAgICAgICAgICAgICAgICA6IG1hdGNoLnJvdy5lbmQgKyAoX2NvbmZpZy5yb3VuZEhlYWRlckNvbXBvbmVudCA/IDEgOiAwKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1fbGluZS1tdWx0aS1hZnRlcl09XCJnZXRMaW5lTXVsdGlBZnRlcihyb3VuZEluZGV4LCBicmFja2V0KVwiXG4gICAgICAgICAgICAgIFthdHRyLmV0LWhhcy1wYXJlbnRzXT1cIiEhY29ubmVjdGVkTWF0Y2hlcy5wcmV2aW91c01hdGNoZXM/Lmxlbmd0aFwiXG4gICAgICAgICAgICAgIFthdHRyLmV0LWhhcy1jaGlsZF09XCIhIWNvbm5lY3RlZE1hdGNoZXMubmV4dE1hdGNoXCJcbiAgICAgICAgICAgICAgW2F0dHIuZXQtY2hpbGQtY29ubmVjdG9yLXNoYXBlXT1cImdldENoaWxkQ29ubmVjdG9yU2hhcGUobWF0Y2gsIGNvbm5lY3RlZE1hdGNoZXMubmV4dE1hdGNoKVwiXG4gICAgICAgICAgICAgIFthdHRyLmxpbmUtc3Bhbi1iZWZvcmVdPVwiZ2V0TGluZVNwYW4obGFzdFJvdW5kLCBsYXN0Um91bmQsIHJvdW5kLCBuZXh0Um91bmQsIGJyYWNrZXQpXCJcbiAgICAgICAgICAgICAgW2F0dHIubGluZS1zcGFuLWN1cnJlbnRdPVwiZ2V0TGluZVNwYW4ocm91bmQsIGxhc3RSb3VuZCwgcm91bmQsIG5leHRSb3VuZCwgYnJhY2tldClcIlxuICAgICAgICAgICAgICBbYXR0ci5saW5lLXNwYW4tYWZ0ZXJdPVwiZ2V0TGluZVNwYW4obmV4dFJvdW5kLCBsYXN0Um91bmQsIHJvdW5kLCBuZXh0Um91bmQsIGJyYWNrZXQpXCJcbiAgICAgICAgICAgICAgW2F0dHIuaXMtZmlyc3QtbG9zZXItcm91bmQtbWF0Y2hdPVwiXG4gICAgICAgICAgICAgICAgKHJvdW5kLmRhdGEudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnIHx8IHJvdW5kLmRhdGEudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJykgJiYgbWF0Y2hJbmRleCA9PT0gMFxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBbYXR0ci5pcy1sYXN0LWxvd2VyLWJyYWNrZXQtbWF0Y2hdPVwiXG4gICAgICAgICAgICAgICAgcm91bmQuZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgJiZcbiAgICAgICAgICAgICAgICAocm91bmRJbmRleCA9PT0gYnJhY2tldC5icmFja2V0Um91bmRzLmxlbmd0aCAtIDEgfHwgbmV4dFJvdW5kPy5kYXRhPy50eXBlID09PSAndGhpcmRfcGxhY2UnKVxuICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICBjbGFzcz1cImV0LWJyYWNrZXQtbWF0Y2hcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpjZGtQb3J0YWxPdXRsZXQ9XCJjcmVhdGVNYXRjaFBvcnRhbChtYXRjaCwgX2NvbmZpZy5tYXRjaENvbXBvbmVudClcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgfVxufVxuIl19
333
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJhY2tldC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL2JyYWNrZXQvYnJhY2tldC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvbGliL2NvbXBvbmVudHMvYnJhY2tldC9jb21wb25lbnRzL2JyYWNrZXQvYnJhY2tldC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLGVBQWUsRUFBaUIsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkYsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNyRCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFFBQVEsRUFDUixLQUFLLEVBRUwsaUJBQWlCLEVBQ2pCLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsc0JBQXNCLEVBQUUsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFdEgsT0FBTyxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQXFCeEUsTUFBTSxPQUFPLGdCQUFnQjtJQWxCN0I7UUFtQlUsZ0JBQVcsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQzFELG1CQUFjLEdBQUcsTUFBTSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsUUFBUSxF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QkFEcEIsS0FBSztnQkFXRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBV0YsU0FBUztzQkFEWixLQUFLO2dCQVdGLE1BQU07c0JBRFQsS0FBSztnQkFXRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBb0JGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBV0YsZUFBZTtzQkFEbEIsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBdUIzQixtQkFBbUIsTUFjbkIsc0JBQXNCLE1BZ0N0QixpQkFBaUIsTUFpRGpCLFdBQVcsTUFnQ1gsaUJBQWlCLE1BbUJqQixpQkFBaUIsTUFpQm5CLGFBQWEsTUFRYixtQkFBbUIsTUFrQm5CLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnRQb3J0YWwsIENvbXBvbmVudFR5cGUsIFBvcnRhbE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3RvcixcbiAgSW5wdXQsXG4gIFRyYWNrQnlGdW5jdGlvbixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIGluamVjdCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMZXREaXJlY3RpdmUsIE1lbW8gfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXcgfSBmcm9tICdAZXRobGV0ZS90eXBlcyc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIG1hcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQlJBQ0tFVF9DT05GSUdfVE9LRU4sIEJSQUNLRVRfTUFUQ0hfSURfVE9LRU4sIEJSQUNLRVRfUk9VTkRfSURfVE9LRU4sIEJSQUNLRVRfVE9LRU4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgQnJhY2tldENvbmZpZywgQnJhY2tldE1hdGNoLCBCcmFja2V0Um91bmQgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBCcmFja2V0LCBjcmVhdGVCcmFja2V0Q29uZmlnLCBvcmRlclJvdW5kcyB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENvbm5lY3RlZE1hdGNoZXMgfSBmcm9tICcuL2JyYWNrZXQuY29tcG9uZW50LnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtYnJhY2tldCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9icmFja2V0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnJhY2tldC5jb21wb25lbnQuc2NzcyddLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW1wb3J0czogW05nQ2xhc3MsIExldERpcmVjdGl2ZSwgUG9ydGFsTW9kdWxlLCBBc3luY1BpcGVdLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdldC1icmFja2V0JyxcbiAgfSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQlJBQ0tFVF9UT0tFTixcbiAgICAgIHVzZUV4aXN0aW5nOiBCcmFja2V0Q29tcG9uZW50LFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEJyYWNrZXRDb21wb25lbnQge1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBfYnJhY2tldENvbmZpZyA9IGluamVjdChCUkFDS0VUX0NPTkZJR19UT0tFTiwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSBfaW5qZWN0b3IgPSBpbmplY3QoSW5qZWN0b3IpO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtV2l0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXRlbVdpdGg7XG4gIH1cbiAgc2V0IGl0ZW1XaXRoKHY6IHN0cmluZykge1xuICAgIHRoaXMuX2l0ZW1XaXRoID0gdjtcblxuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1fYnJhY2tldC1pdGVtLXdpZHRoJywgdik7XG4gIH1cbiAgcHJpdmF0ZSBfaXRlbVdpdGggPSAnMjAwcHgnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCBpdGVtSGVpZ2h0KCkge1xuICAgIHJldHVybiB0aGlzLl9pdGVtSGVpZ2h0O1xuICB9XG4gIHNldCBpdGVtSGVpZ2h0KHY6IHN0cmluZykge1xuICAgIHRoaXMuX2l0ZW1IZWlnaHQgPSB2O1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1fYnJhY2tldC1pdGVtLWhlaWdodCcsIHYpO1xuICB9XG4gIHByaXZhdGUgX2l0ZW1IZWlnaHQgPSAnMTAwcHgnO1xuXG4gIEBJbnB1dCgpXG4gIGdldCByb3VuZEhlYWRlckhlaWdodCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRIZWFkZXJIZWlnaHQ7XG4gIH1cbiAgc2V0IHJvdW5kSGVhZGVySGVpZ2h0KHY6IHN0cmluZykge1xuICAgIHRoaXMuX3JvdW5kSGVhZGVySGVpZ2h0ID0gdjtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tX3JvdW5kLWhlYWRlci1oZWlnaHQnLCB2KTtcbiAgfVxuICBwcml2YXRlIF9yb3VuZEhlYWRlckhlaWdodCA9ICc1MHB4JztcblxuICBASW5wdXQoKVxuICBnZXQgdXBwZXJMb3dlckJyYWNrZXRHYXAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3VwcGVyTG93ZXJCcmFja2V0R2FwO1xuICB9XG4gIHNldCB1cHBlckxvd2VyQnJhY2tldEdhcCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl91cHBlckxvd2VyQnJhY2tldEdhcCA9IHY7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLV91cHBlci1sb3dlci1icmFja2V0LWdhcCcsIHYpO1xuICB9XG4gIHByaXZhdGUgX3VwcGVyTG93ZXJCcmFja2V0R2FwID0gJzBweCc7XG5cbiAgQElucHV0KClcbiAgZ2V0IGNvbHVtbkdhcCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29sdW1uR2FwO1xuICB9XG4gIHNldCBjb2x1bW5HYXAodjogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29sdW1uR2FwID0gdjtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tX2JyYWNrZXQtY29sdW1uLWdhcCcsIHYpO1xuICB9XG4gIHByaXZhdGUgX2NvbHVtbkdhcCE6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBnZXQgcm93R2FwKCkge1xuICAgIHJldHVybiB0aGlzLl9yb3dHYXA7XG4gIH1cbiAgc2V0IHJvd0dhcCh2OiBzdHJpbmcpIHtcbiAgICB0aGlzLl9yb3dHYXAgPSB2O1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1fYnJhY2tldC1yb3ctZ2FwJywgdik7XG4gIH1cbiAgcHJpdmF0ZSBfcm93R2FwITogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGdldCByb3VuZHNXaXRoTWF0Y2hlcygpIHtcbiAgICByZXR1cm4gdGhpcy5fcm91bmRzV2l0aE1hdGNoZXM7XG4gIH1cbiAgc2V0IHJvdW5kc1dpdGhNYXRjaGVzKHY6IFJvdW5kU3RhZ2VTdHJ1Y3R1cmVXaXRoTWF0Y2hlc1ZpZXdbXSB8IG51bGwgfCB1bmRlZmluZWQpIHtcbiAgICB0aGlzLl9yb3VuZHNXaXRoTWF0Y2hlcyA9IHY7XG5cbiAgICBpZiAoIXYgfHwgdi5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuX2JyYWNrZXQkLm5leHQobnVsbCk7XG4gICAgICB0aGlzLl9yb3VuZHNXaXRoTWF0Y2hlcyA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHNvcnRlZFJvdW5kcyA9IG9yZGVyUm91bmRzKHYpO1xuXG4gICAgICB0aGlzLl9icmFja2V0JC5uZXh0KG5ldyBCcmFja2V0KHNvcnRlZFJvdW5kcykpO1xuICAgICAgdGhpcy5fcm91bmRzV2l0aE1hdGNoZXMgPSBzb3J0ZWRSb3VuZHM7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX3JvdW5kc1dpdGhNYXRjaGVzITogUm91bmRTdGFnZVN0cnVjdHVyZVdpdGhNYXRjaGVzVmlld1tdIHwgbnVsbCB8IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBnZXQgY29tcG9uZW50Q29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLl9jb21wb25lbnRDb25maWc7XG4gIH1cbiAgc2V0IGNvbXBvbmVudENvbmZpZyh2OiBCcmFja2V0Q29uZmlnIHwgbnVsbCkge1xuICAgIHRoaXMuX2NvbXBvbmVudENvbmZpZyA9IHY7XG4gICAgdGhpcy5fY29uZmlnID0gY3JlYXRlQnJhY2tldENvbmZpZyh0aGlzLl9icmFja2V0Q29uZmlnLCB2KTtcbiAgfVxuICBwcml2YXRlIF9jb21wb25lbnRDb25maWc6IEJyYWNrZXRDb25maWcgfCBudWxsID0gbnVsbDtcblxuICBASG9zdEJpbmRpbmcoJ2F0dHIuaGFzLXJvdW5kLWhlYWRlcnMnKVxuICBnZXQgaGFzUm91bmRIZWFkZXJzKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2NvbmZpZz8ucm91bmRIZWFkZXJDb21wb25lbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgX2NvbmZpZyA9IGNyZWF0ZUJyYWNrZXRDb25maWcodGhpcy5fY29tcG9uZW50Q29uZmlnLCB0aGlzLl9icmFja2V0Q29uZmlnKTtcbiAgcHJvdGVjdGVkIF9icmFja2V0JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8QnJhY2tldCB8IG51bGw+KG51bGwpO1xuXG4gIHRyYWNrQnlSb3VuZDogVHJhY2tCeUZ1bmN0aW9uPEJyYWNrZXRSb3VuZD4gPSAoXywgcm91bmQpID0+IHJvdW5kLmRhdGEuaWQ7XG4gIHRyYWNrQnlNYXRjaDogVHJhY2tCeUZ1bmN0aW9uPEJyYWNrZXRNYXRjaD4gPSAoXywgbWF0Y2gpID0+IG1hdGNoLmRhdGEuaWQ7XG5cbiAgZ2V0QnJhY2tldE1hdGNoQnlJZChpZDogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHRoaXMuX2JyYWNrZXQkLnBpcGUobWFwKChicmFja2V0KSA9PiBicmFja2V0Py5nZXRNYXRjaEJ5SWQoaWQpID8/IG51bGwpKTtcbiAgfVxuXG4gIGdldEJyYWNrZXRSb3VuZEJ5SWQoaWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLl9icmFja2V0JC5waXBlKG1hcCgoYnJhY2tldCkgPT4gYnJhY2tldD8uZ2V0Um91bmRCeUlkKGlkKSA/PyBudWxsKSk7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KSA9PlxuICAgICAgYCR7bWF0Y2guZGF0YS5pZH0tJHttYXRjaC5wcmV2aW91c01hdGNoZXM/LnJvdW5kSWQgPz8gbnVsbH0gJHticmFja2V0LmlkfWAsXG4gIH0pXG4gIHByb3RlY3RlZCBnZXRDb25uZWN0ZWRNYXRjaGVzKG1hdGNoOiBCcmFja2V0TWF0Y2gsIGJyYWNrZXQ6IEJyYWNrZXQpOiBDb25uZWN0ZWRNYXRjaGVzIHtcbiAgICBjb25zdCBwcmV2aW91c01hdGNoZXMgPSB0aGlzLl9nZXRQcmV2aW91c01hdGNoZXMobWF0Y2gsIGJyYWNrZXQpO1xuICAgIGNvbnN0IG5leHRNYXRjaCA9IHRoaXMuX2dldE5leHRNYXRjaChtYXRjaCwgYnJhY2tldCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHJldmlvdXNNYXRjaGVzLFxuICAgICAgbmV4dE1hdGNoLFxuICAgIH07XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChjdXJyZW50TWF0Y2g6IEJyYWNrZXRNYXRjaCwgbmV4dE1hdGNoOiBCcmFja2V0TWF0Y2ggfCBudWxsKSA9PlxuICAgICAgYCR7Y3VycmVudE1hdGNoLmRhdGEuaWR9LSR7bmV4dE1hdGNoPy5wcmV2aW91c01hdGNoZXM/LnJvdW5kSWQgPz8gbnVsbH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgZ2V0Q2hpbGRDb25uZWN0b3JTaGFwZShjdXJyZW50TWF0Y2g6IEJyYWNrZXRNYXRjaCwgbmV4dE1hdGNoOiBCcmFja2V0TWF0Y2ggfCBudWxsKSB7XG4gICAgaWYgKCFuZXh0TWF0Y2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hlcyA9IG5leHRNYXRjaC5wcmV2aW91c01hdGNoZXM/Lm1hdGNoSWRzO1xuXG4gICAgaWYgKCFuZXh0TWF0Y2hQcmV2aW91c01hdGNoZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hBID0gbmV4dE1hdGNoUHJldmlvdXNNYXRjaGVzWzBdO1xuICAgIGNvbnN0IG5leHRNYXRjaFByZXZpb3VzTWF0Y2hCID0gbmV4dE1hdGNoUHJldmlvdXNNYXRjaGVzWzFdO1xuXG4gICAgaWYgKG5leHRNYXRjaFByZXZpb3VzTWF0Y2hlcy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHJldHVybiAnc3RyYWlnaHQnO1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50TWF0Y2guZGF0YS5pZCA9PT0gbmV4dE1hdGNoUHJldmlvdXNNYXRjaEEpIHtcbiAgICAgIHJldHVybiAnZG93bic7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRNYXRjaC5kYXRhLmlkID09PSBuZXh0TWF0Y2hQcmV2aW91c01hdGNoQikge1xuICAgICAgcmV0dXJuICd1cCc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChyb3VuZEluZGV4OiBudW1iZXIsIGJyYWNrZXQ6IEJyYWNrZXQpID0+IGAke3JvdW5kSW5kZXh9LSR7YnJhY2tldC5pZH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgZ2V0TGluZU11bHRpQWZ0ZXIocm91bmRJbmRleDogbnVtYmVyLCBicmFja2V0OiBCcmFja2V0KSB7XG4gICAgY29uc3QgaXNEb3VibGVFbGltaW5hdGlvbiA9IGJyYWNrZXQuYnJhY2tldFR5cGUgPT09ICdkb3VibGUnO1xuICAgIGNvbnN0IGN1cnJlbnRSb3VuZCA9IGJyYWNrZXQuYnJhY2tldFJvdW5kc1tyb3VuZEluZGV4XTtcbiAgICBjb25zdCBuZXh0Um91bmQgPSBicmFja2V0LmJyYWNrZXRSb3VuZHNbcm91bmRJbmRleCArIDFdO1xuXG4gICAgLy8gZm9yIGNvbm5lY3RpbmcgdGhlIGxhc3QgbG9vc2VyIG1hdGNoIGFuZCB0aGUgcmVzcGVjdGl2ZSBzZW1pIGZpbmFsIHdpbm5lciBtYXRjaFxuICAgIGlmIChcbiAgICAgIGlzRG91YmxlRWxpbWluYXRpb24gJiZcbiAgICAgICghbmV4dFJvdW5kIHx8IG5leHRSb3VuZC5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZScpICYmXG4gICAgICBjdXJyZW50Um91bmQ/LmRhdGEudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnXG4gICAgKSB7XG4gICAgICByZXR1cm4gYnJhY2tldC50b3RhbFJvd0NvdW50IC0gMTtcbiAgICB9XG5cbiAgICBpZiAoIW5leHRSb3VuZCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKG5leHRSb3VuZC5tYXRjaGVzLmxlbmd0aCA9PT0gY3VycmVudFJvdW5kPy5tYXRjaGVzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIDE7XG4gICAgfVxuXG4gICAgaWYgKCFpc0RvdWJsZUVsaW1pbmF0aW9uKSB7XG4gICAgICByZXR1cm4gMiAqKiByb3VuZEluZGV4O1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgcm5kSW5kZXggPSByb3VuZEluZGV4O1xuXG4gICAgICBpZiAoY3VycmVudFJvdW5kPy5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0Jykge1xuICAgICAgICBjb25zdCB0b3RhbFdpbm5lclJvdW5kcyA9IGJyYWNrZXQud2lubmVyUm91bmRDb3VudDtcbiAgICAgICAgY29uc3QgbG9vc2VyUm91bmRJbmRleCA9XG4gICAgICAgICAgY3VycmVudFJvdW5kLmRhdGEudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnID8gcm91bmRJbmRleCAtIHRvdGFsV2lubmVyUm91bmRzIDogcm91bmRJbmRleDtcblxuICAgICAgICBybmRJbmRleCA9IGxvb3NlclJvdW5kSW5kZXggLyAyO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gMiAqKiBybmRJbmRleDtcbiAgICB9XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChcbiAgICAgIGFmZmVjdGVkUm91bmQ6IEJyYWNrZXRSb3VuZCB8IG51bGwsXG4gICAgICBwcmV2aW91c1JvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgICAgY3VycmVudFJvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgICAgbmV4dFJvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgICAgYnJhY2tldDogQnJhY2tldCxcbiAgICApID0+XG4gICAgICBgJHthZmZlY3RlZFJvdW5kPy5kYXRhLmlkfSAke3ByZXZpb3VzUm91bmQ/LmRhdGEuaWR9ICR7Y3VycmVudFJvdW5kPy5kYXRhLmlkfSAke25leHRSb3VuZD8uZGF0YS5pZH0gJHticmFja2V0LmlkfWAsXG4gIH0pXG4gIHByb3RlY3RlZCBnZXRMaW5lU3BhbihcbiAgICBhZmZlY3RlZFJvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgIHByZXZpb3VzUm91bmQ6IEJyYWNrZXRSb3VuZCB8IG51bGwsXG4gICAgY3VycmVudFJvdW5kOiBCcmFja2V0Um91bmQgfCBudWxsLFxuICAgIG5leHRSb3VuZDogQnJhY2tldFJvdW5kIHwgbnVsbCxcbiAgICBicmFja2V0OiBCcmFja2V0LFxuICApIHtcbiAgICBpZiAoIWFmZmVjdGVkUm91bmQpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIC8vIFRoZXJlIGlzIG5ldmVyIGEgY29ubmVjdGlvbiB0byB0aGUgdGhpcmQgcGxhY2UgbWF0Y2hcbiAgICBpZiAobmV4dFJvdW5kPy5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZScpIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cblxuICAgIGlmIChicmFja2V0LmlzUGFydGlhbERvdWJsZUVsaW1pbmF0aW9uKSB7XG4gICAgICBpZiAoYWZmZWN0ZWRSb3VuZCA9PT0gbmV4dFJvdW5kICYmIG5leHRSb3VuZC5kYXRhLnR5cGUgPT09ICdmaW5hbCcpIHtcbiAgICAgICAgcmV0dXJuIDI7XG4gICAgICB9IGVsc2UgaWYgKGFmZmVjdGVkUm91bmQgPT09IGN1cnJlbnRSb3VuZCAmJiBjdXJyZW50Um91bmQ/LmRhdGEudHlwZSA9PT0gJ2ZpbmFsJykge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH0gZWxzZSBpZiAoYWZmZWN0ZWRSb3VuZCA9PT0gcHJldmlvdXNSb3VuZCAmJiBjdXJyZW50Um91bmQ/LmRhdGEudHlwZSA9PT0gJ2ZpbmFsJykge1xuICAgICAgICByZXR1cm4gMDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gYWZmZWN0ZWRSb3VuZC5jb2x1bW4uZW5kIC0gYWZmZWN0ZWRSb3VuZC5jb2x1bW4uc3RhcnQ7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChyb3VuZDogQnJhY2tldFJvdW5kKSA9PiBgJHtyb3VuZC5kYXRhLmlkfWAsXG4gIH0pXG4gIHByb3RlY3RlZCBjcmVhdGVSb3VuZFBvcnRhbChyb3VuZDogQnJhY2tldFJvdW5kLCBjb21wb25lbnQ6IENvbXBvbmVudFR5cGU8dW5rbm93bj4pIHtcbiAgICBjb25zdCBpbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XG4gICAgICBwcm92aWRlcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIHByb3ZpZGU6IEJSQUNLRVRfUk9VTkRfSURfVE9LRU4sXG4gICAgICAgICAgdXNlVmFsdWU6IHJvdW5kLmRhdGEuaWQsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgICAgcGFyZW50OiB0aGlzLl9pbmplY3RvcixcbiAgICB9KTtcblxuICAgIGNvbnN0IHBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwoY29tcG9uZW50LCBudWxsLCBpbmplY3Rvcik7XG5cbiAgICByZXR1cm4gcG9ydGFsO1xuICB9XG5cbiAgQE1lbW8oe1xuICAgIHJlc29sdmVyOiAobWF0Y2g6IEJyYWNrZXRNYXRjaCkgPT4gYCR7bWF0Y2guZGF0YS5pZH1gLFxuICB9KVxuICBwcm90ZWN0ZWQgY3JlYXRlTWF0Y2hQb3J0YWwobWF0Y2g6IEJyYWNrZXRNYXRjaCwgY29tcG9uZW50OiBDb21wb25lbnRUeXBlPHVua25vd24+KSB7XG4gICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe1xuICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBwcm92aWRlOiBCUkFDS0VUX01BVENIX0lEX1RPS0VOLFxuICAgICAgICAgIHVzZVZhbHVlOiBtYXRjaC5kYXRhLmlkLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHBhcmVudDogdGhpcy5faW5qZWN0b3IsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwb3J0YWwgPSBuZXcgQ29tcG9uZW50UG9ydGFsKGNvbXBvbmVudCwgbnVsbCwgaW5qZWN0b3IpO1xuXG4gICAgcmV0dXJuIHBvcnRhbDtcbiAgfVxuXG4gIEBNZW1vKHsgcmVzb2x2ZXI6IChpZDogc3RyaW5nLCBicmFja2V0OiBCcmFja2V0KSA9PiBgJHtpZH0tJHticmFja2V0LmlkfWAgfSlcbiAgcHJpdmF0ZSBfZ2V0Um91bmRCeUlkKGlkOiBzdHJpbmcsIGJyYWNrZXQ6IEJyYWNrZXQpIHtcbiAgICByZXR1cm4gYnJhY2tldD8uYnJhY2tldFJvdW5kcy5maW5kKChyb3VuZCkgPT4gcm91bmQuZGF0YS5pZCA9PT0gaWQpID8/IG51bGw7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KSA9PlxuICAgICAgYCR7bWF0Y2guZGF0YS5pZH0tJHttYXRjaC5wcmV2aW91c01hdGNoZXM/LnJvdW5kSWQgPz8gbnVsbH0gJHticmFja2V0LmlkfWAsXG4gIH0pXG4gIHByaXZhdGUgX2dldFByZXZpb3VzTWF0Y2hlcyhtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KSB7XG4gICAgaWYgKCFtYXRjaC5wcmV2aW91c01hdGNoZXMpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcm91bmRJZCwgbWF0Y2hJZHMgfSA9IG1hdGNoLnByZXZpb3VzTWF0Y2hlcztcblxuICAgIGNvbnN0IHJvdW5kID0gdGhpcy5fZ2V0Um91bmRCeUlkKHJvdW5kSWQsIGJyYWNrZXQpO1xuXG4gICAgcmV0dXJuIG1hdGNoSWRzLm1hcCgobWF0Y2hJZDogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gcm91bmQ/Lm1hdGNoZXMuZmluZCgobWF0Y2gpID0+IG1hdGNoLmRhdGEuaWQgPT09IG1hdGNoSWQpID8/IG51bGw7XG4gICAgfSk7XG4gIH1cblxuICBATWVtbyh7XG4gICAgcmVzb2x2ZXI6IChtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KSA9PlxuICAgICAgYCR7bWF0Y2guZGF0YS5pZH0tJHttYXRjaC5wcmV2aW91c01hdGNoZXM/LnJvdW5kSWQgPz8gbnVsbH0gJHticmFja2V0LmlkfWAsXG4gIH0pXG4gIHByaXZhdGUgX2dldE5leHRNYXRjaChtYXRjaDogQnJhY2tldE1hdGNoLCBicmFja2V0OiBCcmFja2V0KSB7XG4gICAgaWYgKCFtYXRjaC5uZXh0TWF0Y2gpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcm91bmRJZCwgbWF0Y2hJZCB9ID0gbWF0Y2gubmV4dE1hdGNoO1xuXG4gICAgY29uc3Qgcm91bmQgPSB0aGlzLl9nZXRSb3VuZEJ5SWQocm91bmRJZCwgYnJhY2tldCk7XG5cbiAgICByZXR1cm4gcm91bmQ/Lm1hdGNoZXMuZmluZCgobWF0Y2gpID0+IG1hdGNoLmRhdGEuaWQgPT09IG1hdGNoSWQpID8/IG51bGw7XG4gIH1cbn1cbiIsIkBpZiAoX2JyYWNrZXQkIHwgYXN5bmM7IGFzIGJyYWNrZXQpIHtcbiAgQGZvciAocm91bmQgb2YgYnJhY2tldC5icmFja2V0Um91bmRzOyB0cmFjayB0cmFja0J5Um91bmQocm91bmRJbmRleCwgcm91bmQpOyBsZXQgcm91bmRJbmRleCA9ICRpbmRleCkge1xuICAgIEBpZiAoX2NvbmZpZy5yb3VuZEhlYWRlckNvbXBvbmVudCkge1xuICAgICAgPGRpdlxuICAgICAgICBbc3R5bGUuLS1fY3NdPVwicm91bmQuY29sdW1uLnN0YXJ0XCJcbiAgICAgICAgW3N0eWxlLi0tX2NlXT1cInJvdW5kLmNvbHVtbi5lbmRcIlxuICAgICAgICBbc3R5bGUuLS1fcnNdPVwiXG4gICAgICAgICAgcm91bmQuZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgfHwgcm91bmQuZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnXG4gICAgICAgICAgICA/IHJvdW5kLnJvdy5zdGFydCArIDFcbiAgICAgICAgICAgIDogcm91bmQucm93LnN0YXJ0XG4gICAgICAgIFwiXG4gICAgICAgIFthdHRyLnNwZWNpYWwtYWxpZ24tZW5kXT1cIlxuICAgICAgICAgIHJvdW5kLmRhdGEudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJyAmJlxuICAgICAgICAgIGJyYWNrZXQuYnJhY2tldFR5cGUgPT09ICdzaW5nbGUnICYmXG4gICAgICAgICAgYnJhY2tldC5maXJzdFdpbm5lclJvdW5kICYmXG4gICAgICAgICAgYnJhY2tldC5maXJzdFdpbm5lclJvdW5kLm1hdGNoZXMubGVuZ3RoIDw9IDRcbiAgICAgICAgICAgID8gJ3RydWUnXG4gICAgICAgICAgICA6ICdmYWxzZSdcbiAgICAgICAgXCJcbiAgICAgICAgW2F0dHIuaXMtbG9zZXItcm91bmQtaGVhZGVyXT1cIlxuICAgICAgICAgIChyb3VuZC5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyB8fCByb3VuZC5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZScpICYmIGJyYWNrZXQuYnJhY2tldFR5cGUgPT09ICdkb3VibGUnXG4gICAgICAgIFwiXG4gICAgICAgIGNsYXNzPVwiZXQtYnJhY2tldC1yb3VuZFwiXG4gICAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKmNka1BvcnRhbE91dGxldD1cImNyZWF0ZVJvdW5kUG9ydGFsKHJvdW5kLCBfY29uZmlnLnJvdW5kSGVhZGVyQ29tcG9uZW50KVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgPG5nLWNvbnRhaW5lciAqZXRMZXQ9XCJicmFja2V0LmJyYWNrZXRSb3VuZHNbcm91bmRJbmRleCAtIDFdID8/IG51bGwgYXMgbGFzdFJvdW5kXCI+XG4gICAgICA8bmctY29udGFpbmVyICpldExldD1cImJyYWNrZXQuYnJhY2tldFJvdW5kc1tyb3VuZEluZGV4ICsgMV0gPz8gbnVsbCBhcyBuZXh0Um91bmRcIj5cbiAgICAgICAgQGZvciAobWF0Y2ggb2Ygcm91bmQubWF0Y2hlczsgdHJhY2sgdHJhY2tCeU1hdGNoKG1hdGNoSW5kZXgsIG1hdGNoKTsgbGV0IG1hdGNoSW5kZXggPSAkaW5kZXgpIHtcbiAgICAgICAgICBAaWYgKGdldENvbm5lY3RlZE1hdGNoZXMobWF0Y2gsIGJyYWNrZXQpOyBhcyBjb25uZWN0ZWRNYXRjaGVzKSB7XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIFtzdHlsZS4tLV9jc109XCJyb3VuZC5jb2x1bW4uc3RhcnRcIlxuICAgICAgICAgICAgICBbc3R5bGUuLS1fY2VdPVwicm91bmQuY29sdW1uLmVuZFwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLV9yc109XCJcbiAgICAgICAgICAgICAgICByb3VuZC5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyB8fCByb3VuZC5kYXRhLnR5cGUgPT09ICd0aGlyZF9wbGFjZSdcbiAgICAgICAgICAgICAgICAgID8gbWF0Y2gucm93LnN0YXJ0ICsgKF9jb25maWcucm91bmRIZWFkZXJDb21wb25lbnQgPyAyIDogMClcbiAgICAgICAgICAgICAgICAgIDogbWF0Y2gucm93LnN0YXJ0ICsgKF9jb25maWcucm91bmRIZWFkZXJDb21wb25lbnQgPyAxIDogMClcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgW3N0eWxlLi0tX3JlXT1cIlxuICAgICAgICAgICAgICAgIHJvdW5kLmRhdGEudHlwZSA9PT0gJ2xvc2VyX2JyYWNrZXQnIHx8IHJvdW5kLmRhdGEudHlwZSA9PT0gJ3RoaXJkX3BsYWNlJ1xuICAgICAgICAgICAgICAgICAgPyBtYXRjaC5yb3cuZW5kICsgKF9jb25maWcucm91bmRIZWFkZXJDb21wb25lbnQgPyAyIDogMClcbiAgICAgICAgICAgICAgICAgIDogbWF0Y2gucm93LmVuZCArIChfY29uZmlnLnJvdW5kSGVhZGVyQ29tcG9uZW50ID8gMSA6IDApXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFtzdHlsZS4tLV9saW5lLW11bHRpLWFmdGVyXT1cImdldExpbmVNdWx0aUFmdGVyKHJvdW5kSW5kZXgsIGJyYWNrZXQpXCJcbiAgICAgICAgICAgICAgW2F0dHIuZXQtaGFzLXBhcmVudHNdPVwiISFjb25uZWN0ZWRNYXRjaGVzLnByZXZpb3VzTWF0Y2hlcz8ubGVuZ3RoXCJcbiAgICAgICAgICAgICAgW2F0dHIuZXQtaGFzLWNoaWxkXT1cIiEhY29ubmVjdGVkTWF0Y2hlcy5uZXh0TWF0Y2hcIlxuICAgICAgICAgICAgICBbYXR0ci5ldC1jaGlsZC1jb25uZWN0b3Itc2hhcGVdPVwiZ2V0Q2hpbGRDb25uZWN0b3JTaGFwZShtYXRjaCwgY29ubmVjdGVkTWF0Y2hlcy5uZXh0TWF0Y2gpXCJcbiAgICAgICAgICAgICAgW2F0dHIubGluZS1zcGFuLWJlZm9yZV09XCJnZXRMaW5lU3BhbihsYXN0Um91bmQsIGxhc3RSb3VuZCwgcm91bmQsIG5leHRSb3VuZCwgYnJhY2tldClcIlxuICAgICAgICAgICAgICBbYXR0ci5saW5lLXNwYW4tY3VycmVudF09XCJnZXRMaW5lU3Bhbihyb3VuZCwgbGFzdFJvdW5kLCByb3VuZCwgbmV4dFJvdW5kLCBicmFja2V0KVwiXG4gICAgICAgICAgICAgIFthdHRyLmxpbmUtc3Bhbi1hZnRlcl09XCJnZXRMaW5lU3BhbihuZXh0Um91bmQsIGxhc3RSb3VuZCwgcm91bmQsIG5leHRSb3VuZCwgYnJhY2tldClcIlxuICAgICAgICAgICAgICBbYXR0ci5pcy1maXJzdC1sb3Nlci1yb3VuZC1tYXRjaF09XCJcbiAgICAgICAgICAgICAgICAocm91bmQuZGF0YS50eXBlID09PSAnbG9zZXJfYnJhY2tldCcgfHwgcm91bmQuZGF0YS50eXBlID09PSAndGhpcmRfcGxhY2UnKSAmJiBtYXRjaEluZGV4ID09PSAwXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIFthdHRyLmlzLWxhc3QtbG93ZXItYnJhY2tldC1tYXRjaF09XCJcbiAgICAgICAgICAgICAgICByb3VuZC5kYXRhLnR5cGUgPT09ICdsb3Nlcl9icmFja2V0JyAmJlxuICAgICAgICAgICAgICAgIChyb3VuZEluZGV4ID09PSBicmFja2V0LmJyYWNrZXRSb3VuZHMubGVuZ3RoIC0gMSB8fCBuZXh0Um91bmQ/LmRhdGE/LnR5cGUgPT09ICd0aGlyZF9wbGFjZScpXG4gICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiZXQtYnJhY2tldC1tYXRjaFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKmNka1BvcnRhbE91dGxldD1cImNyZWF0ZU1hdGNoUG9ydGFsKG1hdGNoLCBfY29uZmlnLm1hdGNoQ29tcG9uZW50KVwiIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICB9XG59XG4iXX0=
@@ -7,10 +7,10 @@ export class BracketMatchDirective {
7
7
  this.bracket = inject(BRACKET_TOKEN);
8
8
  this.match$ = this.bracket.getBracketMatchById(this.matchId);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BracketMatchDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: BracketMatchDirective, isStandalone: true, ngImport: i0 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BracketMatchDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: BracketMatchDirective, isStandalone: true, ngImport: i0 }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BracketMatchDirective, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BracketMatchDirective, decorators: [{
14
14
  type: Directive,
15
15
  args: [{
16
16
  standalone: true,
@@ -7,10 +7,10 @@ export class BracketRoundDirective {
7
7
  this.bracket = inject(BRACKET_TOKEN);
8
8
  this.round$ = this.bracket.getBracketRoundById(this.roundId);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BracketRoundDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: BracketRoundDirective, isStandalone: true, ngImport: i0 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BracketRoundDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: BracketRoundDirective, isStandalone: true, ngImport: i0 }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BracketRoundDirective, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BracketRoundDirective, decorators: [{
14
14
  type: Directive,
15
15
  args: [{
16
16
  standalone: true,
@@ -7,10 +7,10 @@ export class BracketMatchComponent {
7
7
  constructor() {
8
8
  this.matchData = inject(BracketMatchDirective);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BracketMatchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.9", type: BracketMatchComponent, isStandalone: true, selector: "et-bracket-match", host: { classAttribute: "et-bracket-match" }, hostDirectives: [{ directive: i1.BracketMatchDirective }], ngImport: i0, template: "@if (matchData.match$ | async; as match) {\n {{ match.data.id }}\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BracketMatchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: BracketMatchComponent, isStandalone: true, selector: "et-bracket-match", host: { classAttribute: "et-bracket-match" }, hostDirectives: [{ directive: i1.BracketMatchDirective }], ngImport: i0, template: "@if (matchData.match$ | async; as match) {\n {{ match.data.id }}\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BracketMatchComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BracketMatchComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ selector: 'et-bracket-match', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
16
16
  class: 'et-bracket-match',
@@ -7,10 +7,10 @@ export class BracketRoundHeaderComponent {
7
7
  constructor() {
8
8
  this.roundData = inject(BracketRoundDirective);
9
9
  }
10
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BracketRoundHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.9", type: BracketRoundHeaderComponent, isStandalone: true, selector: "et-bracket-round-header", host: { classAttribute: "et-bracket-round-header" }, hostDirectives: [{ directive: i1.BracketRoundDirective }], ngImport: i0, template: "@if (roundData.round$ | async; as round) {\n {{ round.name }}\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BracketRoundHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: BracketRoundHeaderComponent, isStandalone: true, selector: "et-bracket-round-header", host: { classAttribute: "et-bracket-round-header" }, hostDirectives: [{ directive: i1.BracketRoundDirective }], ngImport: i0, template: "@if (roundData.round$ | async; as round) {\n {{ round.name }}\n}\n", styles: [""], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: BracketRoundHeaderComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BracketRoundHeaderComponent, decorators: [{
14
14
  type: Component,
15
15
  args: [{ selector: 'et-bracket-round-header', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
16
16
  class: 'et-bracket-round-header',
@@ -6,10 +6,10 @@ export class ButtonComponent {
6
6
  constructor() {
7
7
  this.button = inject(ButtonDirective);
8
8
  }
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.9", type: ButtonComponent, isStandalone: true, selector: "[et-button]", host: { classAttribute: "et-button" }, hostDirectives: [{ directive: i1.ButtonDirective, inputs: ["disabled", "disabled", "type", "type", "pressed", "pressed"] }], ngImport: i0, template: "<span class=\"et-button-content\">\n <span class=\"et-button-text\">\n <ng-content />\n </span>\n</span>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.1", type: ButtonComponent, isStandalone: true, selector: "[et-button]", host: { classAttribute: "et-button" }, hostDirectives: [{ directive: i1.ButtonDirective, inputs: ["disabled", "disabled", "type", "type", "pressed", "pressed"] }], ngImport: i0, template: "<span class=\"et-button-content\">\n <span class=\"et-button-text\">\n <ng-content />\n </span>\n</span>\n", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11
11
  }
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ButtonComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ButtonComponent, decorators: [{
13
13
  type: Component,
14
14
  args: [{ selector: '[et-button]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, hostDirectives: [{ directive: ButtonDirective, inputs: ['disabled', 'type', 'pressed'] }], host: {
15
15
  class: 'et-button',
@@ -11,10 +11,10 @@ export class QueryButtonComponent {
11
11
  constructor() {
12
12
  this.queryButton = inject(QueryButtonDirective);
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: QueryButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.9", type: QueryButtonComponent, isStandalone: true, selector: "[et-query-button]", host: { classAttribute: "et-query-button" }, hostDirectives: [{ directive: i1.QueryButtonDirective, inputs: ["query", "query", "skipSuccess", "skipSuccess", "skipFailure", "skipFailure", "skipLoading", "skipLoading"] }, { directive: i2.ButtonDirective, inputs: ["disabled", "disabled", "type", "type", "pressed", "pressed"] }], ngImport: i0, template: "<ng-container *etLet=\"queryButton.showSuccess$ | async as showSuccess\">\n <ng-container *etLet=\"queryButton.showFailure$ | async as showFailure\">\n <span *etQuery=\"queryButton.query$ | async; loading as loading\" class=\"et-button-content et-query-button-content\">\n <span\n [attr.aria-hidden]=\"(loading && !queryButton.skipLoading) || showSuccess || showFailure ? 'true' : undefined\"\n class=\"et-button-text et-query-button-text et-query-button-text--default\"\n >\n <ng-content />\n </span>\n\n @if (loading && !queryButton.skipLoading) {\n <span class=\"et-query-button-loading\"> </span>\n }\n @if (loading && !queryButton.skipLoading) {\n <span class=\"et-button-text et-query-button-text et-query-button-text--loading\">Loading</span>\n }\n\n @if (showSuccess) {\n <span class=\"et-button-text et-query-button-text et-query-button-text--success\">Success</span>\n }\n @if (showFailure) {\n <span class=\"et-button-text et-query-button-text et-query-button-text--failure\">Failure</span>\n }\n </span>\n </ng-container>\n</ng-container>\n", styles: [".et-query-button .et-button-content{display:grid}.et-query-button .et-query-button-text,.et-query-button .et-query-button-loading{grid-area:1/1/2/2}.et-query-button.et-query-button--loading .et-query-button-text--default,.et-query-button.et-query-button--success .et-query-button-text--default,.et-query-button.et-query-button--failure .et-query-button-text--default{opacity:0;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: QueryDirective, selector: "[etQuery]", inputs: ["etQuery", "etQueryCache"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: QueryButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: QueryButtonComponent, isStandalone: true, selector: "[et-query-button]", host: { classAttribute: "et-query-button" }, hostDirectives: [{ directive: i1.QueryButtonDirective, inputs: ["query", "query", "skipSuccess", "skipSuccess", "skipFailure", "skipFailure", "skipLoading", "skipLoading"] }, { directive: i2.ButtonDirective, inputs: ["disabled", "disabled", "type", "type", "pressed", "pressed"] }], ngImport: i0, template: "<ng-container *etLet=\"queryButton.showSuccess$ | async as showSuccess\">\n <ng-container *etLet=\"queryButton.showFailure$ | async as showFailure\">\n <span *etQuery=\"queryButton.query$ | async; loading as loading\" class=\"et-button-content et-query-button-content\">\n <span\n [attr.aria-hidden]=\"(loading && !queryButton.skipLoading) || showSuccess || showFailure ? 'true' : undefined\"\n class=\"et-button-text et-query-button-text et-query-button-text--default\"\n >\n <ng-content />\n </span>\n\n @if (loading && !queryButton.skipLoading) {\n <span class=\"et-query-button-loading\"> </span>\n }\n @if (loading && !queryButton.skipLoading) {\n <span class=\"et-button-text et-query-button-text et-query-button-text--loading\">Loading</span>\n }\n\n @if (showSuccess) {\n <span class=\"et-button-text et-query-button-text et-query-button-text--success\">Success</span>\n }\n @if (showFailure) {\n <span class=\"et-button-text et-query-button-text et-query-button-text--failure\">Failure</span>\n }\n </span>\n </ng-container>\n</ng-container>\n", styles: [".et-query-button .et-button-content{display:grid}.et-query-button .et-query-button-text,.et-query-button .et-query-button-loading{grid-area:1/1/2/2}.et-query-button.et-query-button--loading .et-query-button-text--default,.et-query-button.et-query-button--success .et-query-button-text--default,.et-query-button.et-query-button--failure .et-query-button-text--default{opacity:0;-webkit-user-select:none;user-select:none}\n"], dependencies: [{ kind: "directive", type: QueryDirective, selector: "[etQuery]", inputs: ["etQuery", "etQueryCache"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
16
16
  }
17
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: QueryButtonComponent, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: QueryButtonComponent, decorators: [{
18
18
  type: Component,
19
19
  args: [{ selector: '[et-query-button]', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, hostDirectives: [
20
20
  { directive: QueryButtonDirective, inputs: ['query', 'skipSuccess', 'skipFailure', 'skipLoading'] },
@@ -50,10 +50,10 @@ export class ButtonDirective {
50
50
  _removeTabIndexBindings() {
51
51
  this.hostAttributeBindings.remove('tabindex');
52
52
  }
53
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
54
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: ButtonDirective, isStandalone: true, inputs: { disabled: "disabled", type: "type", pressed: "pressed" }, exportAs: ["etButton"], ngImport: i0 }); }
53
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
54
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: ButtonDirective, isStandalone: true, inputs: { disabled: "disabled", type: "type", pressed: "pressed" }, exportAs: ["etButton"], ngImport: i0 }); }
55
55
  }
56
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: ButtonDirective, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: ButtonDirective, decorators: [{
57
57
  type: Directive,
58
58
  args: [{
59
59
  standalone: true,
@@ -112,10 +112,10 @@ export class QueryButtonDirective {
112
112
  });
113
113
  this._button._removeDisabledBindings();
114
114
  }
115
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: QueryButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
116
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.9", type: QueryButtonDirective, isStandalone: true, inputs: { skipSuccess: ["skipSuccess", "skipSuccess", booleanAttribute], skipFailure: ["skipFailure", "skipFailure", booleanAttribute], skipLoading: ["skipLoading", "skipLoading", booleanAttribute], query: "query" }, exportAs: ["etQueryButton"], ngImport: i0 }); }
115
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: QueryButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
116
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "18.0.1", type: QueryButtonDirective, isStandalone: true, inputs: { skipSuccess: ["skipSuccess", "skipSuccess", booleanAttribute], skipFailure: ["skipFailure", "skipFailure", booleanAttribute], skipLoading: ["skipLoading", "skipLoading", booleanAttribute], query: "query" }, exportAs: ["etQueryButton"], ngImport: i0 }); }
117
117
  }
118
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: QueryButtonDirective, decorators: [{
118
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: QueryButtonDirective, decorators: [{
119
119
  type: Directive,
120
120
  args: [{
121
121
  standalone: true,
@@ -10,8 +10,8 @@ export class CarouselComponent {
10
10
  this.carouselItemsWrapper = viewChild.required('carouselItemsWrapper');
11
11
  syncSignal(this.carouselItemsWrapper, this.carousel.carouselItemsWrapper);
12
12
  }
13
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.3.9", type: CarouselComponent, isStandalone: true, selector: "et-carousel", host: { classAttribute: "et-carousel-host" }, viewQueries: [{ propertyName: "carouselItemsWrapper", first: true, predicate: ["carouselItemsWrapper"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.CarouselDirective, inputs: ["loop", "loop", "autoPlay", "autoPlay", "autoPlayTime", "autoPlayTime", "pauseAutoPlayOnHover", "pauseAutoPlayOnHover", "pauseAutoPlayOnFocus", "pauseAutoPlayOnFocus", "transitionType", "transitionType", "transitionDuration", "transitionDuration"] }], ngImport: i0, template: `
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.0.1", type: CarouselComponent, isStandalone: true, selector: "et-carousel", host: { classAttribute: "et-carousel-host" }, viewQueries: [{ propertyName: "carouselItemsWrapper", first: true, predicate: ["carouselItemsWrapper"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.CarouselDirective, inputs: ["loop", "loop", "autoPlay", "autoPlay", "autoPlayTime", "autoPlayTime", "pauseAutoPlayOnHover", "pauseAutoPlayOnHover", "pauseAutoPlayOnFocus", "pauseAutoPlayOnFocus", "transitionType", "transitionType", "transitionDuration", "transitionDuration"] }], ngImport: i0, template: `
15
15
  <div class="et-carousel">
16
16
  <div #carouselItemsWrapper class="et-carousel-items">
17
17
  <ng-content select="et-carousel-item, [etCarouselItem]" />
@@ -21,7 +21,7 @@ export class CarouselComponent {
21
21
  </div>
22
22
  `, isInline: true, styles: [".et-carousel-host{--et-carousel-slide-easing: cubic-bezier(.25, .64, .44, 1);--et-carousel-dot-size: 10px;--et-carousel-dot-gap: 10px;--et-carousel-dot-radius: 5px;--et-carousel-dot-color: rgb(var(--et-color-primary, 51 51 51));--et-carousel-dot-color-hover: rgb(var(--et-color-primary-hover, 197 197 197));--et-carousel-dot-color-focus: rgb(var(--et-color-primary-focus, 197 197 197));--et-carousel-dot-color-active: rgb(var(--et-color-primary-active, 147 147 147));--et-carousel-dot-color-current: rgb(var(--et-color-primary, 255 255 255));--et-carousel-progress-inline-size: 50px;--_et-carousel-slide-duration: .5s}.et-carousel-host[transition-type=mask-slide]{--et-carousel-slide-translate: 125px;--_et-carousel-slide-direction-inactive: polygon(100% 0, 100% 0, 100% 100%, 100% 100%);--_et-carousel-slide-direction-active: polygon(0 0, 100% 0, 100% 100%, 0 100%);--_et-carousel-slide-transform: translateX(var(--et-carousel-slide-translate));--_et-carousel-slide-transform-inverse: translateX(calc(var(--et-carousel-slide-translate) * -1))}.et-carousel-host[transition-type=mask-slide].et-carousel--slide-left{--_et-carousel-slide-direction-inactive: polygon(0 0, 0 0, 0 100%, 0% 100%);--_et-carousel-slide-transform: translateX(calc(var(--et-carousel-slide-translate) * -1));--_et-carousel-slide-transform-inverse: translateX(var(--et-carousel-slide-translate))}.et-carousel-host[transition-type=mask-slide] .et-carousel-item{transform:var(--_et-carousel-slide-transform);clip-path:var(--_et-carousel-slide-direction-inactive);filter:brightness(.5)}.et-carousel-host[transition-type=mask-slide] .et-carousel-item.active,.et-carousel-host[transition-type=mask-slide] .et-carousel-item.previous-active{transition-timing-function:var(--et-carousel-slide-easing);transition-duration:var(--_et-carousel-slide-duration);transition-property:clip-path,transform,filter;clip-path:var(--_et-carousel-slide-direction-active)}.et-carousel-host[transition-type=mask-slide] .et-carousel-item.active{z-index:1;transform:translate(0);pointer-events:auto;filter:brightness(1)}.et-carousel-host[transition-type=mask-slide] .et-carousel-item.previous-active{transform:var(--_et-carousel-slide-transform-inverse)}.et-carousel-items{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow:hidden}.et-carousel-item{grid-area:1/1/2/2;position:relative;pointer-events:none}.et-carousel-item-nav{list-style:none;padding:0;display:flex;gap:var(--et-carousel-dot-gap)}.et-carousel-item-nav .et-carousel-item-nav-button{inline-size:10px;block-size:var(--et-carousel-dot-size);border-radius:var(--et-carousel-dot-radius);background-color:var(--et-carousel-dot-color);border:0;padding:0;overflow:hidden;transition:inline-size var(--_et-carousel-slide-duration) var(--et-carousel-slide-easing),background-color .1s linear;cursor:pointer}.et-carousel-item-nav .et-carousel-item-nav-button--progressing{inline-size:var(--et-carousel-progress-inline-size)}.et-carousel-item-nav .et-carousel-item-nav-button--progressing .et-carousel-item-nav-button-progress{transition:transform .1s linear}.et-carousel-item-nav .et-carousel-item-nav-button:not(.et-carousel-item-nav .et-carousel-item-nav-button--progressing):hover{background-color:var(--et-carousel-dot-color-hover)}.et-carousel-item-nav .et-carousel-item-nav-button:not(.et-carousel-item-nav .et-carousel-item-nav-button--progressing):active{background-color:var(--et-carousel-dot-color-active)}.et-carousel-item-nav .et-carousel-item-nav-button:not(.et-carousel-item-nav .et-carousel-item-nav-button--progressing).et-carousel-item-nav-button--active-static{background-color:var(--et-carousel-dot-color-current)}.et-carousel-item-nav .et-carousel-item-nav-button-progress{inline-size:100%;block-size:100%;background-color:var(--et-carousel-dot-color-current);transform-origin:left;transform:scaleX(var(--_et-carousel-item-nav-button-progress, 0))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
23
23
  }
24
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CarouselComponent, decorators: [{
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CarouselComponent, decorators: [{
25
25
  type: Component,
26
26
  args: [{ selector: 'et-carousel', template: `
27
27
  <div class="et-carousel">
@@ -127,15 +127,15 @@ export class CarouselDirective {
127
127
  resumeAutoPlay() {
128
128
  this.isAutoPlayPaused.set(false);
129
129
  }
130
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CarouselDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
131
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "17.3.9", type: CarouselDirective, isStandalone: true, inputs: { loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, autoPlay: { classPropertyName: "autoPlay", publicName: "autoPlay", isSignal: true, isRequired: false, transformFunction: null }, autoPlayTime: { classPropertyName: "autoPlayTime", publicName: "autoPlayTime", isSignal: true, isRequired: false, transformFunction: null }, pauseAutoPlayOnHover: { classPropertyName: "pauseAutoPlayOnHover", publicName: "pauseAutoPlayOnHover", isSignal: true, isRequired: false, transformFunction: null }, pauseAutoPlayOnFocus: { classPropertyName: "pauseAutoPlayOnFocus", publicName: "pauseAutoPlayOnFocus", isSignal: true, isRequired: false, transformFunction: null }, transitionType: { classPropertyName: "transitionType", publicName: "transitionType", isSignal: true, isRequired: false, transformFunction: null }, transitionDuration: { classPropertyName: "transitionDuration", publicName: "transitionDuration", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CarouselDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
131
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "18.0.1", type: CarouselDirective, isStandalone: true, inputs: { loop: { classPropertyName: "loop", publicName: "loop", isSignal: true, isRequired: false, transformFunction: null }, autoPlay: { classPropertyName: "autoPlay", publicName: "autoPlay", isSignal: true, isRequired: false, transformFunction: null }, autoPlayTime: { classPropertyName: "autoPlayTime", publicName: "autoPlayTime", isSignal: true, isRequired: false, transformFunction: null }, pauseAutoPlayOnHover: { classPropertyName: "pauseAutoPlayOnHover", publicName: "pauseAutoPlayOnHover", isSignal: true, isRequired: false, transformFunction: null }, pauseAutoPlayOnFocus: { classPropertyName: "pauseAutoPlayOnFocus", publicName: "pauseAutoPlayOnFocus", isSignal: true, isRequired: false, transformFunction: null }, transitionType: { classPropertyName: "transitionType", publicName: "transitionType", isSignal: true, isRequired: false, transformFunction: null }, transitionDuration: { classPropertyName: "transitionDuration", publicName: "transitionDuration", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
132
132
  {
133
133
  provide: CAROUSEL_TOKEN,
134
134
  useExisting: CarouselDirective,
135
135
  },
136
136
  ], queries: [{ propertyName: "items", predicate: CAROUSEL_ITEM_TOKEN, isSignal: true }], ngImport: i0 }); }
137
137
  }
138
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CarouselDirective, decorators: [{
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CarouselDirective, decorators: [{
139
139
  type: Directive,
140
140
  args: [{
141
141
  standalone: true,
@@ -12,8 +12,8 @@ export class CarouselItemNavComponent {
12
12
  '--_et-carousel-item-nav-button-progress': this.nav.autoPlayProgress,
13
13
  });
14
14
  }
15
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CarouselItemNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.9", type: CarouselItemNavComponent, isStandalone: true, selector: "et-carousel-item-nav", host: { classAttribute: "et-carousel-item-nav-host" }, viewQueries: [{ propertyName: "progressBars", predicate: ["progress"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.CarouselItemNavDirective }], ngImport: i0, template: `
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CarouselItemNavComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: CarouselItemNavComponent, isStandalone: true, selector: "et-carousel-item-nav", host: { classAttribute: "et-carousel-item-nav-host" }, viewQueries: [{ propertyName: "progressBars", predicate: ["progress"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.CarouselItemNavDirective }], ngImport: i0, template: `
17
17
  <ul class="et-carousel-item-nav">
18
18
  @for (item of nav.carousel.items(); track $index) {
19
19
  <li class="et-carousel-item-nav-item">
@@ -31,7 +31,7 @@ export class CarouselItemNavComponent {
31
31
  </ul>
32
32
  `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
33
33
  }
34
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CarouselItemNavComponent, decorators: [{
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CarouselItemNavComponent, decorators: [{
35
35
  type: Component,
36
36
  args: [{
37
37
  selector: 'et-carousel-item-nav',
@@ -11,15 +11,15 @@ export class CarouselItemNavDirective {
11
11
  goTo(index) {
12
12
  this.carousel.goTo(index);
13
13
  }
14
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CarouselItemNavDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.9", type: CarouselItemNavDirective, isStandalone: true, providers: [
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CarouselItemNavDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
15
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.1", type: CarouselItemNavDirective, isStandalone: true, providers: [
16
16
  {
17
17
  provide: CAROUSEL_ITEM_NAV_TOKEN,
18
18
  useExisting: CarouselItemNavDirective,
19
19
  },
20
20
  ], ngImport: i0 }); }
21
21
  }
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.9", ngImport: i0, type: CarouselItemNavDirective, decorators: [{
22
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: CarouselItemNavDirective, decorators: [{
23
23
  type: Directive,
24
24
  args: [{
25
25
  standalone: true,