@ethlete/cdk 4.14.5 → 4.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/esm2022/index.mjs +2 -1
  3. package/esm2022/lib/components/accordion/components/accordion/accordion.component.mjs +3 -3
  4. package/esm2022/lib/components/accordion/components/accordion-group/accordion-group.component.mjs +3 -3
  5. package/esm2022/lib/components/accordion/partials/accordion-hint/accordion-hint.directive.mjs +3 -3
  6. package/esm2022/lib/components/accordion/partials/accordion-hint-wrapper/accordion-hint-wrapper.directive.mjs +3 -3
  7. package/esm2022/lib/components/accordion/partials/accordion-label/accordion-label.directive.mjs +3 -3
  8. package/esm2022/lib/components/accordion/partials/accordion-label-wrapper/accordion-label-wrapper.directive.mjs +3 -3
  9. package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +3 -3
  10. package/esm2022/lib/components/bracket/directives/bracket-match/bracket-match.directive.mjs +3 -3
  11. package/esm2022/lib/components/bracket/directives/bracket-round/bracket-round.directive.mjs +3 -3
  12. package/esm2022/lib/components/bracket/partials/bracket-match/bracket-match.component.mjs +3 -3
  13. package/esm2022/lib/components/bracket/partials/bracket-round-header/bracket-round-header.component.mjs +3 -3
  14. package/esm2022/lib/components/button/components/button/button.component.mjs +3 -3
  15. package/esm2022/lib/components/button/components/query-button/query-button.component.mjs +3 -3
  16. package/esm2022/lib/components/button/directives/button/button.directive.mjs +3 -3
  17. package/esm2022/lib/components/button/directives/query-button/query-button.directive.mjs +3 -3
  18. package/esm2022/lib/components/carousel/carousel.component.mjs +51 -0
  19. package/esm2022/lib/components/carousel/carousel.directive.mjs +150 -0
  20. package/esm2022/lib/components/carousel/carousel.imports.mjs +12 -0
  21. package/esm2022/lib/components/carousel/controls/carousel-item-nav.component.mjs +65 -0
  22. package/esm2022/lib/components/carousel/controls/carousel-item-nav.directive.mjs +40 -0
  23. package/esm2022/lib/components/carousel/controls/carousel-next-button.directive.mjs +45 -0
  24. package/esm2022/lib/components/carousel/controls/carousel-previous-button.directive.mjs +45 -0
  25. package/esm2022/lib/components/carousel/controls/carousel-toggle-auto-play-button.directive.mjs +43 -0
  26. package/esm2022/lib/components/carousel/controls/index.mjs +6 -0
  27. package/esm2022/lib/components/carousel/et-carousel-item.component.mjs +24 -0
  28. package/esm2022/lib/components/carousel/et-carousel-item.directive.mjs +45 -0
  29. package/esm2022/lib/components/carousel/public-api/index.mjs +7 -0
  30. package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/rich-filter-host.component.mjs +3 -3
  31. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/rich-filter-button.directive.mjs +3 -3
  32. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/rich-filter-button-slot.directive.mjs +3 -3
  33. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/rich-filter-content.directive.mjs +3 -3
  34. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/rich-filter-top.directive.mjs +3 -3
  35. package/esm2022/lib/components/forms/components/checkbox/components/checkbox/checkbox.component.mjs +3 -3
  36. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-field/checkbox-field.component.mjs +3 -3
  37. package/esm2022/lib/components/forms/components/checkbox/components/checkbox-group/checkbox-group.component.mjs +3 -3
  38. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox/checkbox.directive.mjs +3 -3
  39. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-field/checkbox-field.directive.mjs +3 -3
  40. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group/checkbox-group.directive.mjs +3 -3
  41. package/esm2022/lib/components/forms/components/checkbox/directives/checkbox-group-control/checkbox-group-control.directive.mjs +3 -3
  42. package/esm2022/lib/components/forms/components/error/components/error/error.component.mjs +3 -3
  43. package/esm2022/lib/components/forms/components/input/components/date-input/date-input.component.mjs +3 -3
  44. package/esm2022/lib/components/forms/components/input/components/date-time-input/date-time-input.component.mjs +3 -3
  45. package/esm2022/lib/components/forms/components/input/components/email-input/email-input.component.mjs +3 -3
  46. package/esm2022/lib/components/forms/components/input/components/input-field/input-field.component.mjs +3 -3
  47. package/esm2022/lib/components/forms/components/input/components/number-input/number-input.component.mjs +3 -3
  48. package/esm2022/lib/components/forms/components/input/components/password-input/password-input.component.mjs +3 -3
  49. package/esm2022/lib/components/forms/components/input/components/search-input/search-input.component.mjs +3 -3
  50. package/esm2022/lib/components/forms/components/input/components/text-input/text-input.component.mjs +3 -3
  51. package/esm2022/lib/components/forms/components/input/components/textarea-input/textarea-input.component.mjs +3 -3
  52. package/esm2022/lib/components/forms/components/input/directives/autosize-textarea/autosize-textarea.directive.mjs +3 -3
  53. package/esm2022/lib/components/forms/components/input/directives/date-input/date-input.directive.mjs +3 -3
  54. package/esm2022/lib/components/forms/components/input/directives/date-time-input/date-time-input.directive.mjs +3 -3
  55. package/esm2022/lib/components/forms/components/input/directives/email-input/email-input.directive.mjs +3 -3
  56. package/esm2022/lib/components/forms/components/input/directives/if-supports-show-picker/if-supports-show-picker.directive.mjs +3 -3
  57. package/esm2022/lib/components/forms/components/input/directives/number-input/number-input.directive.mjs +3 -3
  58. package/esm2022/lib/components/forms/components/input/directives/password-input/password-input.directive.mjs +3 -3
  59. package/esm2022/lib/components/forms/components/input/directives/search-input/search-input.directive.mjs +3 -3
  60. package/esm2022/lib/components/forms/components/input/directives/show-picker-trigger/show-picker-trigger.directive.mjs +3 -3
  61. package/esm2022/lib/components/forms/components/input/directives/text-input/text-input.directive.mjs +3 -3
  62. package/esm2022/lib/components/forms/components/input/directives/textarea-input/textarea-input.directive.mjs +3 -3
  63. package/esm2022/lib/components/forms/components/input/partials/password-input-toggle/password-input-toggle.component.mjs +3 -3
  64. package/esm2022/lib/components/forms/components/input/partials/search-input-clear/search-input-clear.component.mjs +3 -3
  65. package/esm2022/lib/components/forms/components/label/components/label/label.component.mjs +3 -3
  66. package/esm2022/lib/components/forms/components/label/directives/label-suffix/label-suffix.directive.mjs +3 -3
  67. package/esm2022/lib/components/forms/components/radio/components/radio/radio.component.mjs +3 -3
  68. package/esm2022/lib/components/forms/components/radio/components/radio-field/radio-field.component.mjs +3 -3
  69. package/esm2022/lib/components/forms/components/radio/components/radio-group/radio-group.component.mjs +3 -3
  70. package/esm2022/lib/components/forms/components/radio/directives/radio/radio.directive.mjs +3 -3
  71. package/esm2022/lib/components/forms/components/radio/directives/radio-field/radio-field.directive.mjs +3 -3
  72. package/esm2022/lib/components/forms/components/radio/directives/radio-group/radio-group.directive.mjs +3 -3
  73. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button/segmented-button.component.mjs +3 -3
  74. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-field/segmented-button-field.component.mjs +3 -3
  75. package/esm2022/lib/components/forms/components/segmented-button/components/segmented-button-group/segmented-button-group.component.mjs +3 -3
  76. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button/segmented-button.directive.mjs +3 -3
  77. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-field/segmented-button-field.directive.mjs +3 -3
  78. package/esm2022/lib/components/forms/components/segmented-button/directives/segmented-button-group/segmented-button-group.directive.mjs +3 -3
  79. package/esm2022/lib/components/forms/components/select/components/combobox/components/combobox/combobox.component.mjs +3 -3
  80. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +3 -3
  81. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-empty-template/combobox-body-empty-template.directive.mjs +3 -3
  82. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-error-template/combobox-body-error-template.directive.mjs +3 -3
  83. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-body-loading-template/combobox-body-loading-template.directive.mjs +3 -3
  84. 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
  85. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-option-template/combobox-option-template.directive.mjs +3 -3
  86. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox-selected-option-template/combobox-selected-option-template.directive.mjs +3 -3
  87. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-body/combobox-body.component.mjs +3 -3
  88. package/esm2022/lib/components/forms/components/select/components/combobox/partials/combobox-option/combobox-option.component.mjs +3 -3
  89. package/esm2022/lib/components/forms/components/select/components/native-select/components/native-select/native-select.component.mjs +3 -3
  90. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-input/native-select-input.directive.mjs +3 -3
  91. package/esm2022/lib/components/forms/components/select/components/native-select/directives/native-select-option/native-select-option.directive.mjs +3 -3
  92. package/esm2022/lib/components/forms/components/select/components/native-select/partials/native-select-option/native-select-option.component.mjs +3 -3
  93. package/esm2022/lib/components/forms/components/select/components/select/components/select/select.component.mjs +3 -3
  94. package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +3 -3
  95. package/esm2022/lib/components/forms/components/select/components/select/directives/select-body/select-body.directive.mjs +3 -3
  96. package/esm2022/lib/components/forms/components/select/components/select/directives/select-option/select-option.directive.mjs +3 -3
  97. package/esm2022/lib/components/forms/components/select/components/select/partials/select-body/select-body.component.mjs +3 -3
  98. package/esm2022/lib/components/forms/components/select/components/select/partials/select-option/select-option.component.mjs +3 -3
  99. package/esm2022/lib/components/forms/components/select/components/select-field/select-field.component.mjs +3 -3
  100. package/esm2022/lib/components/forms/components/select/directives/select-field/select-field.directive.mjs +3 -3
  101. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-field/selection-list-field.component.mjs +3 -3
  102. package/esm2022/lib/components/forms/components/selection-list/components/selection-list-option/selection-list-option.component.mjs +3 -3
  103. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-field/selection-list-field.directive.mjs +3 -3
  104. package/esm2022/lib/components/forms/components/selection-list/directives/selection-list-option/selection-list-option.directive.mjs +3 -3
  105. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle/slide-toggle.component.mjs +3 -3
  106. package/esm2022/lib/components/forms/components/slide-toggle/components/slide-toggle-field/slide-toggle-field.component.mjs +3 -3
  107. package/esm2022/lib/components/forms/components/slide-toggle/directives/slide-toggle/slide-toggle.directive.mjs +3 -3
  108. package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +3 -3
  109. package/esm2022/lib/components/forms/components/slider/components/slider-field/slider-field.component.mjs +3 -3
  110. package/esm2022/lib/components/forms/directives/dynamic-form-field/dynamic-form-field.directive.mjs +3 -3
  111. package/esm2022/lib/components/forms/directives/dynamic-form-group/dynamic-form-group.directive.mjs +3 -3
  112. package/esm2022/lib/components/forms/directives/expose-input-vars/expose-input-vars.directive.mjs +3 -3
  113. package/esm2022/lib/components/forms/directives/if-input-empty/if-input-empty.directive.mjs +3 -3
  114. package/esm2022/lib/components/forms/directives/if-input-filled/if-input-filled.directive.mjs +3 -3
  115. package/esm2022/lib/components/forms/directives/input/input.directive.mjs +3 -3
  116. package/esm2022/lib/components/forms/directives/input-prefix/input-prefix.directive.mjs +3 -3
  117. package/esm2022/lib/components/forms/directives/input-suffix/input-suffix.directive.mjs +3 -3
  118. package/esm2022/lib/components/forms/directives/native-input-ref/native-input-ref.directive.mjs +3 -3
  119. package/esm2022/lib/components/forms/directives/static-form-field/static-form-field.directive.mjs +3 -3
  120. package/esm2022/lib/components/forms/directives/static-form-group/static-form-group.directive.mjs +3 -3
  121. package/esm2022/lib/components/forms/directives/writeable-input/writeable-input.directive.mjs +3 -3
  122. package/esm2022/lib/components/forms/services/default-validator-errors.service.mjs +3 -3
  123. package/esm2022/lib/components/forms/services/form-field-state.service.mjs +3 -3
  124. package/esm2022/lib/components/forms/services/form-group-state.service.mjs +3 -3
  125. package/esm2022/lib/components/forms/services/input-state.service.mjs +3 -3
  126. package/esm2022/lib/components/forms/utils/decorated-form-field.base.mjs +3 -3
  127. package/esm2022/lib/components/forms/utils/decorated-input.base.mjs +3 -3
  128. package/esm2022/lib/components/forms/utils/input.base.mjs +3 -3
  129. package/esm2022/lib/components/icons/chevron-icon/chevron-icon.component.mjs +3 -3
  130. package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +3 -3
  131. package/esm2022/lib/components/masonry/partials/masonry-item/masonry-item.component.mjs +3 -3
  132. package/esm2022/lib/components/overlay/components/bottom-sheet/components/bottom-sheet-container/bottom-sheet-container.component.mjs +3 -3
  133. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-container-base/bottom-sheet-container-base.component.mjs +3 -3
  134. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-drag-handle/bottom-sheet-drag-handle.component.mjs +3 -3
  135. package/esm2022/lib/components/overlay/components/bottom-sheet/partials/bottom-sheet-title/bottom-sheet-title.directive.mjs +3 -3
  136. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +3 -3
  137. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-swipe-handler.service.mjs +3 -3
  138. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet.service.mjs +3 -3
  139. package/esm2022/lib/components/overlay/components/dialog/components/dialog-container/dialog-container.component.mjs +3 -3
  140. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-close/dialog-close.directive.mjs +3 -3
  141. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-container-base/dialog-container-base.component.mjs +3 -3
  142. package/esm2022/lib/components/overlay/components/dialog/partials/dialog-title/dialog-title.directive.mjs +3 -3
  143. package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +3 -3
  144. package/esm2022/lib/components/overlay/components/dialog/services/dialog.service.mjs +3 -3
  145. package/esm2022/lib/components/overlay/components/menu/components/menu/menu.component.mjs +3 -3
  146. package/esm2022/lib/components/overlay/components/menu/components/menu-checkbox-item/menu-checkbox-item.component.mjs +3 -3
  147. package/esm2022/lib/components/overlay/components/menu/components/menu-container/menu-container.component.mjs +3 -3
  148. package/esm2022/lib/components/overlay/components/menu/components/menu-radio-item/menu-radio-item.component.mjs +3 -3
  149. package/esm2022/lib/components/overlay/components/menu/directives/menu-checkbox-group/menu-checkbox-group.directive.mjs +3 -3
  150. package/esm2022/lib/components/overlay/components/menu/directives/menu-group/menu-group.directive.mjs +3 -3
  151. package/esm2022/lib/components/overlay/components/menu/directives/menu-group-title/menu-group-title.directive.mjs +3 -3
  152. package/esm2022/lib/components/overlay/components/menu/directives/menu-item/menu-item.directive.mjs +3 -3
  153. package/esm2022/lib/components/overlay/components/menu/directives/menu-radio-group/menu-radio-group.directive.mjs +3 -3
  154. package/esm2022/lib/components/overlay/components/menu/directives/menu-trigger/menu-trigger.directive.mjs +3 -3
  155. package/esm2022/lib/components/overlay/components/menu-deprecated/context-menu-trigger.mjs +6 -6
  156. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-aim.mjs +6 -6
  157. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-bar.mjs +3 -3
  158. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-base.mjs +3 -3
  159. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-group.mjs +3 -3
  160. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-checkbox.mjs +3 -3
  161. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-radio.mjs +3 -3
  162. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item-selectable.mjs +3 -3
  163. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-item.mjs +3 -3
  164. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-module.mjs +4 -4
  165. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-stack.mjs +3 -3
  166. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger-base.mjs +3 -3
  167. package/esm2022/lib/components/overlay/components/menu-deprecated/menu-trigger.mjs +3 -3
  168. package/esm2022/lib/components/overlay/components/menu-deprecated/menu.mjs +3 -3
  169. package/esm2022/lib/components/overlay/components/overlay/components/overlay-container/overlay-container.component.mjs +3 -3
  170. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-back-or-close/overlay-back-or-close.directive.mjs +3 -3
  171. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-body/overlay-body.component.mjs +3 -3
  172. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-close/overlay-close.directive.mjs +3 -3
  173. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-footer/overlay-footer.directive.mjs +3 -3
  174. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header/overlay-header.directive.mjs +3 -3
  175. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-header-template/overlay-header-template.directive.mjs +3 -3
  176. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-main/overlay-main.directive.mjs +3 -3
  177. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-route-header-template-outlet/overlay-route-header-template-outlet.component.mjs +3 -3
  178. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-link/overlay-router-link.directive.mjs +3 -3
  179. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-router-outlet/overlay-router-outlet.component.mjs +3 -3
  180. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar/overlay-sidebar.component.mjs +3 -3
  181. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-sidebar-page/overlay-sidebar-page.component.mjs +3 -3
  182. package/esm2022/lib/components/overlay/components/overlay/partials/overlay-title/overlay-title.directive.mjs +3 -3
  183. package/esm2022/lib/components/overlay/components/overlay/services/overlay.service.mjs +3 -3
  184. package/esm2022/lib/components/overlay/components/overlay/utils/filter-overlay.mjs +3 -3
  185. package/esm2022/lib/components/overlay/components/toggletip/components/toggletip/toggletip.component.mjs +3 -3
  186. package/esm2022/lib/components/overlay/components/toggletip/directives/toggletip/toggletip.directive.mjs +5 -5
  187. package/esm2022/lib/components/overlay/components/toggletip/partials/toggletip-close/toggletip-close.directive.mjs +3 -3
  188. package/esm2022/lib/components/overlay/components/tooltip/components/tooltip/tooltip.component.mjs +3 -3
  189. package/esm2022/lib/components/overlay/components/tooltip/directives/tooltip/tooltip.directive.mjs +5 -5
  190. package/esm2022/lib/components/overlay/directives/dynamic-overlay-title/dynamic-overlay-title.directive.mjs +3 -3
  191. package/esm2022/lib/components/overlay/directives/overlay-close-auto-blocker/overlay-close-auto-blocker.directive.mjs +3 -3
  192. package/esm2022/lib/components/overlay/services/dynamic-overlay.service.mjs +3 -3
  193. package/esm2022/lib/components/pagination/components/pagination/pagination.component.mjs +3 -3
  194. package/esm2022/lib/components/pagination/partials/pagination-link/pagination-link.directive.mjs +3 -3
  195. package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +3 -3
  196. package/esm2022/lib/components/picture/index.mjs +1 -2
  197. package/esm2022/lib/components/picture/picture.component.mjs +36 -40
  198. package/esm2022/lib/components/picture/picture.utils.mjs +20 -1
  199. package/esm2022/lib/components/picture/public-api/index.mjs +1 -2
  200. package/esm2022/lib/components/progress-spinner/progress-spinner.component.mjs +3 -3
  201. package/esm2022/lib/components/query-error/components/query-error/query-error.component.mjs +3 -3
  202. package/esm2022/lib/components/query-error/directives/query-error/query-error.directive.mjs +3 -3
  203. package/esm2022/lib/components/scrollable/components/scrollable/scrollable.component.mjs +3 -3
  204. package/esm2022/lib/components/scrollable/directives/scrollable-ignore-child/scrollable-ignore-child.directive.mjs +3 -3
  205. package/esm2022/lib/components/scrollable/directives/scrollable-is-active-child/scrollable-is-active-child.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 +1203 -785
  245. package/fesm2022/ethlete-cdk.mjs.map +1 -1
  246. package/index.d.ts +1 -0
  247. package/lib/components/carousel/carousel.component.d.ts +11 -0
  248. package/lib/components/carousel/carousel.directive.d.ts +59 -0
  249. package/lib/components/carousel/carousel.imports.d.ts +4 -0
  250. package/lib/components/carousel/controls/carousel-item-nav.component.d.ts +8 -0
  251. package/lib/components/carousel/controls/carousel-item-nav.directive.d.ts +14 -0
  252. package/lib/components/carousel/controls/carousel-next-button.directive.d.ts +18 -0
  253. package/lib/components/carousel/controls/carousel-previous-button.directive.d.ts +18 -0
  254. package/lib/components/carousel/controls/carousel-toggle-auto-play-button.directive.d.ts +16 -0
  255. package/lib/components/carousel/controls/index.d.ts +5 -0
  256. package/lib/components/carousel/et-carousel-item.component.d.ts +8 -0
  257. package/lib/components/carousel/et-carousel-item.directive.d.ts +25 -0
  258. package/lib/components/carousel/public-api/index.d.ts +6 -0
  259. package/lib/components/picture/index.d.ts +0 -1
  260. package/lib/components/picture/picture.component.d.ts +18 -9
  261. package/lib/components/picture/picture.utils.d.ts +3 -1
  262. package/lib/components/picture/public-api/index.d.ts +0 -1
  263. package/package.json +8 -8
  264. package/esm2022/lib/components/picture/picture-data.directive.mjs +0 -49
  265. package/esm2022/lib/components/picture/pipes/normalize-source/index.mjs +0 -2
  266. package/esm2022/lib/components/picture/pipes/normalize-source/normalize-source.pipe.mjs +0 -18
  267. package/esm2022/lib/components/picture/pipes/normalize-source/normalize-source.util.mjs +0 -11
  268. package/lib/components/picture/picture-data.directive.d.ts +0 -19
  269. package/lib/components/picture/pipes/normalize-source/index.d.ts +0 -1
  270. package/lib/components/picture/pipes/normalize-source/normalize-source.pipe.d.ts +0 -7
  271. package/lib/components/picture/pipes/normalize-source/normalize-source.util.d.ts +0 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @ethlete/cdk
2
2
 
3
+ ## 4.16.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`ef63100`](https://github.com/ethlete-io/ethdk/commit/ef6310039b70c0321021a532b5818822518f47c6) Thanks [@TomTomB](https://github.com/TomTomB)! - Removed the `normalizeSource` pipe. Use the `normalizePictureSource` function instead inside something like a `computed`.
8
+
9
+ - [`ef63100`](https://github.com/ethlete-io/ethdk/commit/ef6310039b70c0321021a532b5818822518f47c6) Thanks [@TomTomB](https://github.com/TomTomB)! - The `normalizeSource` function was renamed to `normalizePictureSource` to better reflect its purpose.
10
+
11
+ ## 4.15.0
12
+
13
+ ### Minor Changes
14
+
15
+ - [`b2828c8`](https://github.com/ethlete-io/ethdk/commit/b2828c8807a3fdba53bf07ef3291872a19a8d8ba) Thanks [@TomTomB](https://github.com/TomTomB)! - Add carousel component and util directives
16
+
3
17
  ## 4.14.5
4
18
 
5
19
  ### Patch Changes
package/esm2022/index.mjs CHANGED
@@ -2,6 +2,7 @@
2
2
  export * from './lib/components/accordion/public-api';
3
3
  export * from './lib/components/bracket/public-api';
4
4
  export * from './lib/components/button/public-api';
5
+ export * from './lib/components/carousel/public-api';
5
6
  export * from './lib/components/filter/public-api';
6
7
  export * from './lib/components/forms/public-api';
7
8
  export * from './lib/components/icons/public-api';
@@ -20,4 +21,4 @@ export * from './lib/services';
20
21
  export * from './lib/types';
21
22
  export * from './lib/utils';
22
23
  // Burst cache
23
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMENBQTBDO0FBQzFDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsb0NBQW9DLENBQUM7QUFDbkQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHdDQUF3QyxDQUFDO0FBQ3ZELGNBQWMscUNBQXFDLENBQUM7QUFDcEQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLHlDQUF5QyxDQUFDO0FBQ3hELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxzQ0FBc0MsQ0FBQztBQUNyRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxrQ0FBa0MsQ0FBQztBQUNqRCxjQUFjLGdCQUFnQixDQUFDO0FBQy9CLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsYUFBYSxDQUFDO0FBRTVCLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLWltcG9ydHMgKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWNjb3JkaW9uL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9icmFja2V0L3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9idXR0b24vcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbHRlci9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb25zL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tYXNvbnJ5L3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vdmVybGF5L3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9waWN0dXJlL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wcm9ncmVzcy1zcGlubmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcXVlcnktZXJyb3IvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Njcm9sbGFibGUvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NrZWxldG9uL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zb3J0L3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWJsZS9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFicy9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzJztcblxuLy8gQnVyc3QgY2FjaGVcbiJdfQ==
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL2Nkay9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMENBQTBDO0FBQzFDLGNBQWMsdUNBQXVDLENBQUM7QUFDdEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG9DQUFvQyxDQUFDO0FBQ25ELGNBQWMsc0NBQXNDLENBQUM7QUFDckQsY0FBYyxvQ0FBb0MsQ0FBQztBQUNuRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsd0NBQXdDLENBQUM7QUFDdkQsY0FBYyxxQ0FBcUMsQ0FBQztBQUNwRCxjQUFjLG1DQUFtQyxDQUFDO0FBQ2xELGNBQWMseUNBQXlDLENBQUM7QUFDeEQsY0FBYyx3Q0FBd0MsQ0FBQztBQUN2RCxjQUFjLHNDQUFzQyxDQUFDO0FBQ3JELGNBQWMsa0NBQWtDLENBQUM7QUFDakQsY0FBYyxtQ0FBbUMsQ0FBQztBQUNsRCxjQUFjLGtDQUFrQyxDQUFDO0FBQ2pELGNBQWMsZ0JBQWdCLENBQUM7QUFDL0IsY0FBYyxhQUFhLENBQUM7QUFDNUIsY0FBYyxhQUFhLENBQUM7QUFFNUIsY0FBYyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtaW1wb3J0cyAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9hY2NvcmRpb24vcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2JyYWNrZXQvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2J1dHRvbi9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvY2Fyb3VzZWwvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ZpbHRlci9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvZm9ybXMvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL2ljb25zL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9tYXNvbnJ5L3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9vdmVybGF5L3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wYWdpbmF0aW9uL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9waWN0dXJlL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9wcm9ncmVzcy1zcGlubmVyJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvcXVlcnktZXJyb3IvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3Njcm9sbGFibGUvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9jb21wb25lbnRzL3NrZWxldG9uL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy9zb3J0L3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9saWIvY29tcG9uZW50cy90YWJsZS9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL2NvbXBvbmVudHMvdGFicy9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3NlcnZpY2VzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3R5cGVzJztcbmV4cG9ydCAqIGZyb20gJy4vbGliL3V0aWxzJztcblxuLy8gQnVyc3QgY2FjaGVcbiJdfQ==
@@ -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.1", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.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 }); }
45
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
46
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", 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.1", ngImport: i0, type: AccordionComponent, decorators: [{
48
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.1", ngImport: i0, type: AccordionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.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 }); }
38
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AccordionGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
39
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "17.3.3", 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.1", ngImport: i0, type: AccordionGroupComponent, decorators: [{
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.1", ngImport: i0, type: AccordionHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", 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: "17.3.3", ngImport: i0, type: AccordionHintDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", 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.1", ngImport: i0, type: AccordionHintDirective, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.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: "17.3.1", 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: "17.3.3", 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.3", 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.1", ngImport: i0, type: AccordionHintWrapperDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.1", ngImport: i0, type: AccordionLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", 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: "17.3.3", ngImport: i0, type: AccordionLabelDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", 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.1", ngImport: i0, type: AccordionLabelDirective, decorators: [{
7
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.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: "17.3.1", 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: "17.3.3", 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.3", 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.1", ngImport: i0, type: AccordionLabelWrapperDirective, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: AccordionLabelWrapperDirective, decorators: [{
13
13
  type: Directive,
14
14
  args: [{
15
15
  selector: 'ng-template[et-accordion-label-wrapper]',
@@ -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.1", ngImport: i0, type: BracketComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
226
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.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: [
225
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BracketComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
226
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", 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.1", ngImport: i0, type: BracketComponent, decorators: [{
303
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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',
@@ -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.1", ngImport: i0, type: BracketMatchDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: BracketMatchDirective, isStandalone: true, ngImport: i0 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BracketMatchDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: BracketMatchDirective, isStandalone: true, ngImport: i0 }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BracketMatchDirective, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.1", ngImport: i0, type: BracketRoundDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", type: BracketRoundDirective, isStandalone: true, ngImport: i0 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BracketRoundDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
11
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", type: BracketRoundDirective, isStandalone: true, ngImport: i0 }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: BracketRoundDirective, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.1", ngImport: i0, type: BracketMatchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.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 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BracketMatchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", 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.1", ngImport: i0, type: BracketMatchComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.1", ngImport: i0, type: BracketRoundHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.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 }); }
10
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: BracketRoundHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", 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.1", ngImport: i0, type: BracketRoundHeaderComponent, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.1", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.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 }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
10
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.3", 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.1", ngImport: i0, type: ButtonComponent, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.1", ngImport: i0, type: QueryButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.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 }); }
14
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: QueryButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
15
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.3", 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.1", ngImport: i0, type: QueryButtonComponent, decorators: [{
17
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", 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.1", ngImport: i0, type: ButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
54
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.1", 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: "17.3.3", ngImport: i0, type: ButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
54
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.3", 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.1", ngImport: i0, type: ButtonDirective, decorators: [{
56
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: ButtonDirective, decorators: [{
57
57
  type: Directive,
58
58
  args: [{
59
59
  standalone: true,
@@ -106,10 +106,10 @@ export class QueryButtonDirective {
106
106
  });
107
107
  this._button._removeDisabledBindings();
108
108
  }
109
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: QueryButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
110
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.1", type: QueryButtonDirective, isStandalone: true, inputs: { skipSuccess: ["skipSuccess", "skipSuccess", booleanAttribute], skipFailure: ["skipFailure", "skipFailure", booleanAttribute], skipLoading: ["skipLoading", "skipLoading", booleanAttribute], query: "query" }, exportAs: ["etQueryButton"], ngImport: i0 }); }
109
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: QueryButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
110
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "17.3.3", type: QueryButtonDirective, isStandalone: true, inputs: { skipSuccess: ["skipSuccess", "skipSuccess", booleanAttribute], skipFailure: ["skipFailure", "skipFailure", booleanAttribute], skipLoading: ["skipLoading", "skipLoading", booleanAttribute], query: "query" }, exportAs: ["etQueryButton"], ngImport: i0 }); }
111
111
  }
112
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.1", ngImport: i0, type: QueryButtonDirective, decorators: [{
112
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: QueryButtonDirective, decorators: [{
113
113
  type: Directive,
114
114
  args: [{
115
115
  standalone: true,
@@ -0,0 +1,51 @@
1
+ import { NgTemplateOutlet } from '@angular/common';
2
+ import { ChangeDetectionStrategy, Component, ViewEncapsulation, inject, viewChild } from '@angular/core';
3
+ import { syncSignal } from '@ethlete/core';
4
+ import { CAROUSEL_TOKEN, CarouselDirective } from './carousel.directive';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "./carousel.directive";
7
+ export class CarouselComponent {
8
+ constructor() {
9
+ this.carousel = inject(CAROUSEL_TOKEN);
10
+ this.carouselItemsWrapper = viewChild.required('carouselItemsWrapper');
11
+ syncSignal(this.carouselItemsWrapper, this.carousel.carouselItemsWrapper);
12
+ }
13
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
14
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "17.3.3", 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
+ <div class="et-carousel">
16
+ <div #carouselItemsWrapper class="et-carousel-items">
17
+ <ng-content select="et-carousel-item, [etCarouselItem]" />
18
+ </div>
19
+
20
+ <ng-content />
21
+ </div>
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:var(--et-carousel-dot-size);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 .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){transition:background-color .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
+ }
24
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CarouselComponent, decorators: [{
25
+ type: Component,
26
+ args: [{ selector: 'et-carousel', template: `
27
+ <div class="et-carousel">
28
+ <div #carouselItemsWrapper class="et-carousel-items">
29
+ <ng-content select="et-carousel-item, [etCarouselItem]" />
30
+ </div>
31
+
32
+ <ng-content />
33
+ </div>
34
+ `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
35
+ class: 'et-carousel-host',
36
+ }, imports: [NgTemplateOutlet], hostDirectives: [
37
+ {
38
+ directive: CarouselDirective,
39
+ inputs: [
40
+ 'loop',
41
+ 'autoPlay',
42
+ 'autoPlayTime',
43
+ 'pauseAutoPlayOnHover',
44
+ 'pauseAutoPlayOnFocus',
45
+ 'transitionType',
46
+ 'transitionDuration',
47
+ ],
48
+ },
49
+ ], 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:var(--et-carousel-dot-size);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 .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){transition:background-color .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"] }]
50
+ }], ctorParameters: () => [] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFjLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDckgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7OztBQW9DekUsTUFBTSxPQUFPLGlCQUFpQjtJQUk1QjtRQUhBLGFBQVEsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDbEMseUJBQW9CLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBMEIsc0JBQXNCLENBQUMsQ0FBQztRQUd6RixVQUFVLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUM1RSxDQUFDOzhHQU5VLGlCQUFpQjtrR0FBakIsaUJBQWlCLDRqQkFoQ2xCOzs7Ozs7OztHQVFUOzsyRkF3QlUsaUJBQWlCO2tCQWxDN0IsU0FBUzsrQkFDRSxhQUFhLFlBQ2I7Ozs7Ozs7O0dBUVQsY0FFVyxJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0osS0FBSyxFQUFFLGtCQUFrQjtxQkFDMUIsV0FDUSxDQUFDLGdCQUFnQixDQUFDLGtCQUNYO3dCQUNkOzRCQUNFLFNBQVMsRUFBRSxpQkFBaUI7NEJBQzVCLE1BQU0sRUFBRTtnQ0FDTixNQUFNO2dDQUNOLFVBQVU7Z0NBQ1YsY0FBYztnQ0FDZCxzQkFBc0I7Z0NBQ3RCLHNCQUFzQjtnQ0FDdEIsZ0JBQWdCO2dDQUNoQixvQkFBb0I7NkJBQ3JCO3lCQUNGO3FCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdUZW1wbGF0ZU91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBWaWV3RW5jYXBzdWxhdGlvbiwgaW5qZWN0LCB2aWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHN5bmNTaWduYWwgfSBmcm9tICdAZXRobGV0ZS9jb3JlJztcbmltcG9ydCB7IENBUk9VU0VMX1RPS0VOLCBDYXJvdXNlbERpcmVjdGl2ZSB9IGZyb20gJy4vY2Fyb3VzZWwuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZXQtY2Fyb3VzZWwnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJldC1jYXJvdXNlbFwiPlxuICAgICAgPGRpdiAjY2Fyb3VzZWxJdGVtc1dyYXBwZXIgY2xhc3M9XCJldC1jYXJvdXNlbC1pdGVtc1wiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJldC1jYXJvdXNlbC1pdGVtLCBbZXRDYXJvdXNlbEl0ZW1dXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8bmctY29udGVudCAvPlxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybDogJy4vY2Fyb3VzZWwuY29tcG9uZW50LnNjc3MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnZXQtY2Fyb3VzZWwtaG9zdCcsXG4gIH0sXG4gIGltcG9ydHM6IFtOZ1RlbXBsYXRlT3V0bGV0XSxcbiAgaG9zdERpcmVjdGl2ZXM6IFtcbiAgICB7XG4gICAgICBkaXJlY3RpdmU6IENhcm91c2VsRGlyZWN0aXZlLFxuICAgICAgaW5wdXRzOiBbXG4gICAgICAgICdsb29wJyxcbiAgICAgICAgJ2F1dG9QbGF5JyxcbiAgICAgICAgJ2F1dG9QbGF5VGltZScsXG4gICAgICAgICdwYXVzZUF1dG9QbGF5T25Ib3ZlcicsXG4gICAgICAgICdwYXVzZUF1dG9QbGF5T25Gb2N1cycsXG4gICAgICAgICd0cmFuc2l0aW9uVHlwZScsXG4gICAgICAgICd0cmFuc2l0aW9uRHVyYXRpb24nLFxuICAgICAgXSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBDYXJvdXNlbENvbXBvbmVudCB7XG4gIGNhcm91c2VsID0gaW5qZWN0KENBUk9VU0VMX1RPS0VOKTtcbiAgY2Fyb3VzZWxJdGVtc1dyYXBwZXIgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KCdjYXJvdXNlbEl0ZW1zV3JhcHBlcicpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN5bmNTaWduYWwodGhpcy5jYXJvdXNlbEl0ZW1zV3JhcHBlciwgdGhpcy5jYXJvdXNlbC5jYXJvdXNlbEl0ZW1zV3JhcHBlcik7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,150 @@
1
+ import { Directive, InjectionToken, Injector, booleanAttribute, computed, contentChildren, inject, input, numberAttribute, signal, } from '@angular/core';
2
+ import { takeUntilDestroyed, toObservable, toSignal } from '@angular/core/rxjs-interop';
3
+ import { nextFrame, previousSignalValue, signalHostAttributes, signalHostClasses, signalHostStyles, } from '@ethlete/core';
4
+ import { combineLatest, filter, fromEvent, map, merge, of, switchMap, takeWhile, tap, timer } from 'rxjs';
5
+ import { CAROUSEL_ITEM_TOKEN } from './et-carousel-item.directive';
6
+ import * as i0 from "@angular/core";
7
+ export const CAROUSEL_TOKEN = new InjectionToken('CAROUSEL_TOKEN');
8
+ export class CarouselDirective {
9
+ constructor() {
10
+ this.injector = inject(Injector);
11
+ this.loop = input(true, { transform: booleanAttribute });
12
+ this.autoPlay = input(false, { transform: booleanAttribute });
13
+ this.autoPlayTime = input(5000, { transform: numberAttribute });
14
+ this.pauseAutoPlayOnHover = input(true, { transform: booleanAttribute });
15
+ this.pauseAutoPlayOnFocus = input(true, { transform: booleanAttribute });
16
+ this.transitionType = input('mask-slide');
17
+ this.transitionDuration = input(450, { transform: numberAttribute });
18
+ this.activeIndex = signal(0);
19
+ this.previousActiveIndex = previousSignalValue(this.activeIndex);
20
+ this.transitionDirection = signal('left');
21
+ this.carouselItemsWrapper = signal(null);
22
+ this.isAutoPlayPaused = signal(false);
23
+ this.isAutoPlayPausedByInternalHover = signal(false);
24
+ this.isAutoPlayPausedByInternalFocus = signal(false);
25
+ this.isNavigationLocked = toSignal(toObservable(this.activeIndex).pipe(switchMap(() => merge(of(true), timer(this.transitionDuration()).pipe(map(() => false))))), {
26
+ initialValue: false,
27
+ });
28
+ this.items = contentChildren(CAROUSEL_ITEM_TOKEN);
29
+ this.activeItem = computed(() => this.items()[this.activeIndex()] || null);
30
+ this.isAtStart = computed(() => this.activeIndex() === 0);
31
+ this.isAtEnd = computed(() => this.activeIndex() === this.items().length - 1);
32
+ this.hostClassBindings = signalHostClasses({
33
+ 'et-carousel--slide-left': computed(() => this.transitionDirection() === 'left'),
34
+ 'et-carousel--slide-right': computed(() => this.transitionDirection() === 'right'),
35
+ });
36
+ this.hostAttributeBindings = signalHostAttributes({
37
+ 'transition-type': this.transitionType,
38
+ });
39
+ this.hostStyleBindings = signalHostStyles({
40
+ '--_carousel-slide-duration': computed(() => `${this.transitionDuration()}ms`),
41
+ });
42
+ this.activeItemAutoPlayDuration = computed(() => {
43
+ if (!this.autoPlay())
44
+ return null;
45
+ return this.activeItem()?.autoPlayTime() || this.autoPlayTime();
46
+ });
47
+ this.activeItemAutoPlayProgress = toSignal(combineLatest([toObservable(this.activeItemAutoPlayDuration), toObservable(this.activeItem)]).pipe(switchMap(([duration]) => {
48
+ if (duration === null)
49
+ return of(null);
50
+ let elapsed = 0;
51
+ return combineLatest([
52
+ toObservable(this.isAutoPlayPaused, { injector: this.injector }),
53
+ toObservable(this.isAutoPlayPausedByInternalHover, { injector: this.injector }),
54
+ toObservable(this.isAutoPlayPausedByInternalFocus, { injector: this.injector }),
55
+ ]).pipe(switchMap(([isPaused, internalIsPausedDueToHover, internalIsPausedDueToFocus]) => {
56
+ if (isPaused || internalIsPausedDueToHover || internalIsPausedDueToFocus)
57
+ return of(elapsed / duration);
58
+ return timer(0, 100).pipe(tap(() => (elapsed += 100)), map(() => elapsed / duration), takeWhile((progress) => progress < 1, true));
59
+ }));
60
+ })), { initialValue: null });
61
+ this.shouldPlayNextItem = computed(() => {
62
+ if (!this.autoPlay())
63
+ return false;
64
+ return this.activeItemAutoPlayProgress() === 1;
65
+ });
66
+ combineLatest([toObservable(this.activeItemAutoPlayProgress), toObservable(this.autoPlay)])
67
+ .pipe(filter(([progress, autoPlay]) => progress === 1 && autoPlay), tap(() => this.next()), takeUntilDestroyed())
68
+ .subscribe();
69
+ combineLatest([toObservable(this.carouselItemsWrapper), toObservable(this.pauseAutoPlayOnHover)])
70
+ .pipe(switchMap(([wrapper, pauseOnHover]) => {
71
+ if (!wrapper || !pauseOnHover) {
72
+ this.isAutoPlayPausedByInternalHover.set(false);
73
+ return of(null);
74
+ }
75
+ return merge(fromEvent(wrapper.nativeElement, 'mouseenter').pipe(map(() => true)), fromEvent(wrapper.nativeElement, 'mouseleave').pipe(map(() => false))).pipe(tap((isHovering) => this.isAutoPlayPausedByInternalHover.set(isHovering)));
76
+ }), takeUntilDestroyed())
77
+ .subscribe();
78
+ combineLatest([toObservable(this.carouselItemsWrapper), toObservable(this.pauseAutoPlayOnFocus)])
79
+ .pipe(switchMap(([wrapper, pauseOnFocus]) => {
80
+ if (!wrapper || !pauseOnFocus) {
81
+ this.isAutoPlayPausedByInternalFocus.set(false);
82
+ return of(null);
83
+ }
84
+ return merge(fromEvent(wrapper.nativeElement, 'focusin').pipe(map(() => true)), fromEvent(wrapper.nativeElement, 'focusout').pipe(map(() => false))).pipe(tap((isFocused) => this.isAutoPlayPausedByInternalFocus.set(isFocused)));
85
+ }), takeUntilDestroyed())
86
+ .subscribe();
87
+ }
88
+ next() {
89
+ if (this.isNavigationLocked())
90
+ return;
91
+ this.transitionDirection.set('right');
92
+ nextFrame(() => {
93
+ if (this.activeIndex() === this.items().length - 1) {
94
+ if (!this.loop())
95
+ return;
96
+ this.activeIndex.set(0);
97
+ return;
98
+ }
99
+ this.activeIndex.set(this.activeIndex() + 1);
100
+ });
101
+ }
102
+ prev() {
103
+ if (this.isNavigationLocked())
104
+ return;
105
+ this.transitionDirection.set('left');
106
+ nextFrame(() => {
107
+ if (this.activeIndex() === 0) {
108
+ if (!this.loop())
109
+ return;
110
+ this.activeIndex.set(this.items().length - 1);
111
+ return;
112
+ }
113
+ this.activeIndex.set(this.activeIndex() - 1);
114
+ });
115
+ }
116
+ goTo(index) {
117
+ if (this.isNavigationLocked())
118
+ return;
119
+ this.transitionDirection.set(this.activeIndex() < index ? 'right' : 'left');
120
+ nextFrame(() => {
121
+ this.activeIndex.set(index);
122
+ });
123
+ }
124
+ stopAutoPlay() {
125
+ this.isAutoPlayPaused.set(true);
126
+ }
127
+ resumeAutoPlay() {
128
+ this.isAutoPlayPaused.set(false);
129
+ }
130
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CarouselDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
131
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "17.3.3", 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
+ {
133
+ provide: CAROUSEL_TOKEN,
134
+ useExisting: CarouselDirective,
135
+ },
136
+ ], queries: [{ propertyName: "items", predicate: CAROUSEL_ITEM_TOKEN, isSignal: true }], ngImport: i0 }); }
137
+ }
138
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.3", ngImport: i0, type: CarouselDirective, decorators: [{
139
+ type: Directive,
140
+ args: [{
141
+ standalone: true,
142
+ providers: [
143
+ {
144
+ provide: CAROUSEL_TOKEN,
145
+ useExisting: CarouselDirective,
146
+ },
147
+ ],
148
+ }]
149
+ }], ctorParameters: () => [] });
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jZGsvc3JjL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUVULGNBQWMsRUFDZCxRQUFRLEVBQ1IsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixlQUFlLEVBQ2YsTUFBTSxFQUNOLEtBQUssRUFDTCxlQUFlLEVBQ2YsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEYsT0FBTyxFQUNMLFNBQVMsRUFDVCxtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFFbkUsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksY0FBYyxDQUFvQixnQkFBZ0IsQ0FBQyxDQUFDO0FBZXRGLE1BQU0sT0FBTyxpQkFBaUI7SUF3RjVCO1FBdkZBLGFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFNUIsU0FBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELGFBQVEsR0FBRyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsU0FBUyxF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LEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxjQUFjOzRCQUN2QixXQUFXLG1CQUFtQjt5QkFDL0I7cUJBQ0Y7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdGlvblRva2VuLFxuICBJbmplY3RvcixcbiAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgY29tcHV0ZWQsXG4gIGNvbnRlbnRDaGlsZHJlbixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgbnVtYmVyQXR0cmlidXRlLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHtcbiAgbmV4dEZyYW1lLFxuICBwcmV2aW91c1NpZ25hbFZhbHVlLFxuICBzaWduYWxIb3N0QXR0cmlidXRlcyxcbiAgc2lnbmFsSG9zdENsYXNzZXMsXG4gIHNpZ25hbEhvc3RTdHlsZXMsXG59IGZyb20gJ0BldGhsZXRlL2NvcmUnO1xuaW1wb3J0IHsgY29tYmluZUxhdGVzdCwgZmlsdGVyLCBmcm9tRXZlbnQsIG1hcCwgbWVyZ2UsIG9mLCBzd2l0Y2hNYXAsIHRha2VXaGlsZSwgdGFwLCB0aW1lciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQ0FST1VTRUxfSVRFTV9UT0tFTiB9IGZyb20gJy4vZXQtY2Fyb3VzZWwtaXRlbS5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgQ0FST1VTRUxfVE9LRU4gPSBuZXcgSW5qZWN0aW9uVG9rZW48Q2Fyb3VzZWxEaXJlY3RpdmU+KCdDQVJPVVNFTF9UT0tFTicpO1xuXG5leHBvcnQgdHlwZSBDYXJvdXNlbFRyYW5zaXRpb25UeXBlID0gJ21hc2stc2xpZGUnO1xuXG5leHBvcnQgdHlwZSBDYXJvdXNlbFRyYW5zaXRpb25EaXJlY3Rpb24gPSAnbGVmdCcgfCAncmlnaHQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQ0FST1VTRUxfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogQ2Fyb3VzZWxEaXJlY3RpdmUsXG4gICAgfSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2Fyb3VzZWxEaXJlY3RpdmUge1xuICBpbmplY3RvciA9IGluamVjdChJbmplY3Rvcik7XG5cbiAgbG9vcCA9IGlucHV0KHRydWUsIHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pO1xuICBhdXRvUGxheSA9IGlucHV0KGZhbHNlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgYXV0b1BsYXlUaW1lID0gaW5wdXQoNTAwMCwgeyB0cmFuc2Zvcm06IG51bWJlckF0dHJpYnV0ZSB9KTtcbiAgcGF1c2VBdXRvUGxheU9uSG92ZXIgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgcGF1c2VBdXRvUGxheU9uRm9jdXMgPSBpbnB1dCh0cnVlLCB7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KTtcbiAgdHJhbnNpdGlvblR5cGUgPSBpbnB1dDxDYXJvdXNlbFRyYW5zaXRpb25UeXBlPignbWFzay1zbGlkZScpO1xuICB0cmFuc2l0aW9uRHVyYXRpb24gPSBpbnB1dCg0NTAsIHsgdHJhbnNmb3JtOiBudW1iZXJBdHRyaWJ1dGUgfSk7XG5cbiAgYWN0aXZlSW5kZXggPSBzaWduYWwoMCk7XG4gIHByZXZpb3VzQWN0aXZlSW5kZXggPSBwcmV2aW91c1NpZ25hbFZhbHVlKHRoaXMuYWN0aXZlSW5kZXgpO1xuICB0cmFuc2l0aW9uRGlyZWN0aW9uID0gc2lnbmFsPENhcm91c2VsVHJhbnNpdGlvbkRpcmVjdGlvbj4oJ2xlZnQnKTtcbiAgY2Fyb3VzZWxJdGVtc1dyYXBwZXIgPSBzaWduYWw8RWxlbWVudFJlZjxIVE1MRGl2RWxlbWVudD4gfCBudWxsPihudWxsKTtcblxuICBpc0F1dG9QbGF5UGF1c2VkID0gc2lnbmFsKGZhbHNlKTtcbiAgaXNBdXRvUGxheVBhdXNlZEJ5SW50ZXJuYWxIb3ZlciA9IHNpZ25hbChmYWxzZSk7XG4gIGlzQXV0b1BsYXlQYXVzZWRCeUludGVybmFsRm9jdXMgPSBzaWduYWwoZmFsc2UpO1xuXG4gIGlzTmF2aWdhdGlvbkxvY2tlZCA9IHRvU2lnbmFsKFxuICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmFjdGl2ZUluZGV4KS5waXBlKFxuICAgICAgc3dpdGNoTWFwKCgpID0+IG1lcmdlKG9mKHRydWUpLCB0aW1lcih0aGlzLnRyYW5zaXRpb25EdXJhdGlvbigpKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpKSksXG4gICAgKSxcbiAgICB7XG4gICAgICBpbml0aWFsVmFsdWU6IGZhbHNlLFxuICAgIH0sXG4gICk7XG5cbiAgaXRlbXMgPSBjb250ZW50Q2hpbGRyZW4oQ0FST1VTRUxfSVRFTV9UT0tFTik7XG5cbiAgYWN0aXZlSXRlbSA9IGNvbXB1dGVkKCgpID0+IHRoaXMuaXRlbXMoKVt0aGlzLmFjdGl2ZUluZGV4KCldIHx8IG51bGwpO1xuXG4gIGlzQXRTdGFydCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuYWN0aXZlSW5kZXgoKSA9PT0gMCk7XG4gIGlzQXRFbmQgPSBjb21wdXRlZCgoKSA9PiB0aGlzLmFjdGl2ZUluZGV4KCkgPT09IHRoaXMuaXRlbXMoKS5sZW5ndGggLSAxKTtcblxuICBob3N0Q2xhc3NCaW5kaW5ncyA9IHNpZ25hbEhvc3RDbGFzc2VzKHtcbiAgICAnZXQtY2Fyb3VzZWwtLXNsaWRlLWxlZnQnOiBjb21wdXRlZCgoKSA9PiB0aGlzLnRyYW5zaXRpb25EaXJlY3Rpb24oKSA9PT0gJ2xlZnQnKSxcbiAgICAnZXQtY2Fyb3VzZWwtLXNsaWRlLXJpZ2h0JzogY29tcHV0ZWQoKCkgPT4gdGhpcy50cmFuc2l0aW9uRGlyZWN0aW9uKCkgPT09ICdyaWdodCcpLFxuICB9KTtcblxuICBob3N0QXR0cmlidXRlQmluZGluZ3MgPSBzaWduYWxIb3N0QXR0cmlidXRlcyh7XG4gICAgJ3RyYW5zaXRpb24tdHlwZSc6IHRoaXMudHJhbnNpdGlvblR5cGUsXG4gIH0pO1xuXG4gIGhvc3RTdHlsZUJpbmRpbmdzID0gc2lnbmFsSG9zdFN0eWxlcyh7XG4gICAgJy0tX2Nhcm91c2VsLXNsaWRlLWR1cmF0aW9uJzogY29tcHV0ZWQoKCkgPT4gYCR7dGhpcy50cmFuc2l0aW9uRHVyYXRpb24oKX1tc2ApLFxuICB9KTtcblxuICBhY3RpdmVJdGVtQXV0b1BsYXlEdXJhdGlvbiA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBpZiAoIXRoaXMuYXV0b1BsYXkoKSkgcmV0dXJuIG51bGw7XG5cbiAgICByZXR1cm4gdGhpcy5hY3RpdmVJdGVtKCk/LmF1dG9QbGF5VGltZSgpIHx8IHRoaXMuYXV0b1BsYXlUaW1lKCk7XG4gIH0pO1xuXG4gIGFjdGl2ZUl0ZW1BdXRvUGxheVByb2dyZXNzID0gdG9TaWduYWwoXG4gICAgY29tYmluZUxhdGVzdChbdG9PYnNlcnZhYmxlKHRoaXMuYWN0aXZlSXRlbUF1dG9QbGF5RHVyYXRpb24pLCB0b09ic2VydmFibGUodGhpcy5hY3RpdmVJdGVtKV0pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKFtkdXJhdGlvbl0pID0+IHtcbiAgICAgICAgaWYgKGR1cmF0aW9uID09PSBudWxsKSByZXR1cm4gb2YobnVsbCk7XG5cbiAgICAgICAgbGV0IGVsYXBzZWQgPSAwO1xuXG4gICAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgICB0b09ic2VydmFibGUodGhpcy5pc0F1dG9QbGF5UGF1c2VkLCB7IGluamVjdG9yOiB0aGlzLmluamVjdG9yIH0pLFxuICAgICAgICAgIHRvT2JzZXJ2YWJsZSh0aGlzLmlzQXV0b1BsYXlQYXVzZWRCeUludGVybmFsSG92ZXIsIHsgaW5qZWN0b3I6IHRoaXMuaW5qZWN0b3IgfSksXG4gICAgICAgICAgdG9PYnNlcnZhYmxlKHRoaXMuaXNBdXRvUGxheVBhdXNlZEJ5SW50ZXJuYWxGb2N1cywgeyBpbmplY3RvcjogdGhpcy5pbmplY3RvciB9KSxcbiAgICAgICAgXSkucGlwZShcbiAgICAgICAgICBzd2l0Y2hNYXAoKFtpc1BhdXNlZCwgaW50ZXJuYWxJc1BhdXNlZER1ZVRvSG92ZXIsIGludGVybmFsSXNQYXVzZWREdWVUb0ZvY3VzXSkgPT4ge1xuICAgICAgICAgICAgaWYgKGlzUGF1c2VkIHx8IGludGVybmFsSXNQYXVzZWREdWVUb0hvdmVyIHx8IGludGVybmFsSXNQYXVzZWREdWVUb0ZvY3VzKSByZXR1cm4gb2YoZWxhcHNlZCAvIGR1cmF0aW9uKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRpbWVyKDAsIDEwMCkucGlwZShcbiAgICAgICAgICAgICAgdGFwKCgpID0+IChlbGFwc2VkICs9IDEwMCkpLFxuICAgICAgICAgICAgICBtYXAoKCkgPT4gZWxhcHNlZCAvIGR1cmF0aW9uKSxcbiAgICAgICAgICAgICAgdGFrZVdoaWxlKChwcm9ncmVzcykgPT4gcHJvZ3Jlc3MgPCAxLCB0cnVlKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG4gICAgICB9KSxcbiAgICApLFxuICAgIHsgaW5pdGlhbFZhbHVlOiBudWxsIH0sXG4gICk7XG5cbiAgc2hvdWxkUGxheU5leHRJdGVtID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghdGhpcy5hdXRvUGxheSgpKSByZXR1cm4gZmFsc2U7XG5cbiAgICByZXR1cm4gdGhpcy5hY3RpdmVJdGVtQXV0b1BsYXlQcm9ncmVzcygpID09PSAxO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBjb21iaW5lTGF0ZXN0KFt0b09ic2VydmFibGUodGhpcy5hY3RpdmVJdGVtQXV0b1BsYXlQcm9ncmVzcyksIHRvT2JzZXJ2YWJsZSh0aGlzLmF1dG9QbGF5KV0pXG4gICAgICAucGlwZShcbiAgICAgICAgZmlsdGVyKChbcHJvZ3Jlc3MsIGF1dG9QbGF5XSkgPT4gcHJvZ3Jlc3MgPT09IDEgJiYgYXV0b1BsYXkpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5uZXh0KCkpLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIGNvbWJpbmVMYXRlc3QoW3RvT2JzZXJ2YWJsZSh0aGlzLmNhcm91c2VsSXRlbXNXcmFwcGVyKSwgdG9PYnNlcnZhYmxlKHRoaXMucGF1c2VBdXRvUGxheU9uSG92ZXIpXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKFt3cmFwcGVyLCBwYXVzZU9uSG92ZXJdKSA9PiB7XG4gICAgICAgICAgaWYgKCF3cmFwcGVyIHx8ICFwYXVzZU9uSG92ZXIpIHtcbiAgICAgICAgICAgIHRoaXMuaXNBdXRvUGxheVBhdXNlZEJ5SW50ZXJuYWxIb3Zlci5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBtZXJnZShcbiAgICAgICAgICAgIGZyb21FdmVudCh3cmFwcGVyLm5hdGl2ZUVsZW1lbnQsICdtb3VzZWVudGVyJykucGlwZShtYXAoKCkgPT4gdHJ1ZSkpLFxuICAgICAgICAgICAgZnJvbUV2ZW50KHdyYXBwZXIubmF0aXZlRWxlbWVudCwgJ21vdXNlbGVhdmUnKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpLFxuICAgICAgICAgICkucGlwZSh0YXAoKGlzSG92ZXJpbmcpID0+IHRoaXMuaXNBdXRvUGxheVBhdXNlZEJ5SW50ZXJuYWxIb3Zlci5zZXQoaXNIb3ZlcmluZykpKTtcbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCgpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgY29tYmluZUxhdGVzdChbdG9PYnNlcnZhYmxlKHRoaXMuY2Fyb3VzZWxJdGVtc1dyYXBwZXIpLCB0b09ic2VydmFibGUodGhpcy5wYXVzZUF1dG9QbGF5T25Gb2N1cyldKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoW3dyYXBwZXIsIHBhdXNlT25Gb2N1c10pID0+IHtcbiAgICAgICAgICBpZiAoIXdyYXBwZXIgfHwgIXBhdXNlT25Gb2N1cykge1xuICAgICAgICAgICAgdGhpcy5pc0F1dG9QbGF5UGF1c2VkQnlJbnRlcm5hbEZvY3VzLnNldChmYWxzZSk7XG4gICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIG1lcmdlKFxuICAgICAgICAgICAgZnJvbUV2ZW50KHdyYXBwZXIubmF0aXZlRWxlbWVudCwgJ2ZvY3VzaW4nKS5waXBlKG1hcCgoKSA9PiB0cnVlKSksXG4gICAgICAgICAgICBmcm9tRXZlbnQod3JhcHBlci5uYXRpdmVFbGVtZW50LCAnZm9jdXNvdXQnKS5waXBlKG1hcCgoKSA9PiBmYWxzZSkpLFxuICAgICAgICAgICkucGlwZSh0YXAoKGlzRm9jdXNlZCkgPT4gdGhpcy5pc0F1dG9QbGF5UGF1c2VkQnlJbnRlcm5hbEZvY3VzLnNldChpc0ZvY3VzZWQpKSk7XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIG5leHQoKSB7XG4gICAgaWYgKHRoaXMuaXNOYXZpZ2F0aW9uTG9ja2VkKCkpIHJldHVybjtcblxuICAgIHRoaXMudHJhbnNpdGlvbkRpcmVjdGlvbi5zZXQoJ3JpZ2h0Jyk7XG5cbiAgICBuZXh0RnJhbWUoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuYWN0aXZlSW5kZXgoKSA9PT0gdGhpcy5pdGVtcygpLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvb3AoKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KDApO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KHRoaXMuYWN0aXZlSW5kZXgoKSArIDEpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJldigpIHtcbiAgICBpZiAodGhpcy5pc05hdmlnYXRpb25Mb2NrZWQoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy50cmFuc2l0aW9uRGlyZWN0aW9uLnNldCgnbGVmdCcpO1xuXG4gICAgbmV4dEZyYW1lKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFjdGl2ZUluZGV4KCkgPT09IDApIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvb3AoKSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuYWN0aXZlSW5kZXguc2V0KHRoaXMuaXRlbXMoKS5sZW5ndGggLSAxKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmFjdGl2ZUluZGV4LnNldCh0aGlzLmFjdGl2ZUluZGV4KCkgLSAxKTtcbiAgICB9KTtcbiAgfVxuXG4gIGdvVG8oaW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmlzTmF2aWdhdGlvbkxvY2tlZCgpKSByZXR1cm47XG5cbiAgICB0aGlzLnRyYW5zaXRpb25EaXJlY3Rpb24uc2V0KHRoaXMuYWN0aXZlSW5kZXgoKSA8IGluZGV4ID8gJ3JpZ2h0JyA6ICdsZWZ0Jyk7XG5cbiAgICBuZXh0RnJhbWUoKCkgPT4ge1xuICAgICAgdGhpcy5hY3RpdmVJbmRleC5zZXQoaW5kZXgpO1xuICAgIH0pO1xuICB9XG5cbiAgc3RvcEF1dG9QbGF5KCkge1xuICAgIHRoaXMuaXNBdXRvUGxheVBhdXNlZC5zZXQodHJ1ZSk7XG4gIH1cblxuICByZXN1bWVBdXRvUGxheSgpIHtcbiAgICB0aGlzLmlzQXV0b1BsYXlQYXVzZWQuc2V0KGZhbHNlKTtcbiAgfVxufVxuIl19