@ethlete/cdk 3.17.0 → 3.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/esm2022/lib/components/bracket/components/bracket/bracket.component.mjs +7 -7
  3. package/esm2022/lib/components/bracket/utils/bracket.utils.mjs +15 -11
  4. package/esm2022/lib/components/filter/filter-overlay/components/filter-overlay-page-outlet/filter-overlay-page-outlet.component.mjs +46 -0
  5. package/esm2022/lib/components/filter/filter-overlay/components/filter-overlay-page-outlet/public-api.mjs +2 -0
  6. package/esm2022/lib/components/filter/filter-overlay/components/index.mjs +2 -0
  7. package/esm2022/lib/components/filter/filter-overlay/components/public-api.mjs +2 -0
  8. package/esm2022/lib/components/filter/filter-overlay/constants/filter-overlay.constants.mjs +3 -0
  9. package/esm2022/lib/components/filter/filter-overlay/constants/index.mjs +2 -0
  10. package/esm2022/lib/components/filter/filter-overlay/constants/public-api.mjs +2 -0
  11. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-back-or-close/filter-overlay-back-or-close.directive.mjs +45 -0
  12. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-back-or-close/public-api.mjs +2 -0
  13. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-link/filter-overlay-link.directive.mjs +46 -0
  14. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-link/public-api.mjs +2 -0
  15. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-reset/filter-overlay-reset.directive.mjs +45 -0
  16. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-reset/public-api.mjs +2 -0
  17. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-submit/filter-overlay-submit.directive.mjs +45 -0
  18. package/esm2022/lib/components/filter/filter-overlay/directives/filter-overlay-submit/public-api.mjs +2 -0
  19. package/esm2022/lib/components/filter/filter-overlay/directives/index.mjs +2 -0
  20. package/esm2022/lib/components/filter/filter-overlay/directives/public-api.mjs +5 -0
  21. package/esm2022/lib/components/filter/filter-overlay/filter-overlay.imports.mjs +14 -0
  22. package/esm2022/lib/components/filter/filter-overlay/public-api.mjs +8 -0
  23. package/esm2022/lib/components/filter/filter-overlay/services/filter-overlay.service.mjs +37 -0
  24. package/esm2022/lib/components/filter/filter-overlay/services/index.mjs +2 -0
  25. package/esm2022/lib/components/filter/filter-overlay/services/public-api.mjs +2 -0
  26. package/esm2022/lib/components/filter/filter-overlay/types/filter-overlay-config.types.mjs +2 -0
  27. package/esm2022/lib/components/filter/filter-overlay/types/index.mjs +2 -0
  28. package/esm2022/lib/components/filter/filter-overlay/types/public-api.mjs +2 -0
  29. package/esm2022/lib/components/filter/filter-overlay/utils/filter-overlay-ref.mjs +56 -0
  30. package/esm2022/lib/components/filter/filter-overlay/utils/index.mjs +2 -0
  31. package/esm2022/lib/components/filter/filter-overlay/utils/public-api.mjs +2 -0
  32. package/esm2022/lib/components/filter/public-api.mjs +3 -0
  33. package/esm2022/lib/components/filter/rich-filter/components/index.mjs +2 -0
  34. package/esm2022/lib/components/filter/rich-filter/components/public-api.mjs +2 -0
  35. package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/public-api.mjs +2 -0
  36. package/esm2022/lib/components/filter/rich-filter/components/rich-filter-host/rich-filter-host.component.mjs +66 -0
  37. package/esm2022/lib/components/filter/rich-filter/directives/index.mjs +2 -0
  38. package/esm2022/lib/components/filter/rich-filter/directives/public-api.mjs +5 -0
  39. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/public-api.mjs +2 -0
  40. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button/rich-filter-button.directive.mjs +32 -0
  41. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/public-api.mjs +2 -0
  42. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-button-slot/rich-filter-button-slot.directive.mjs +32 -0
  43. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/public-api.mjs +2 -0
  44. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-content/rich-filter-content.directive.mjs +32 -0
  45. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/public-api.mjs +2 -0
  46. package/esm2022/lib/components/filter/rich-filter/directives/rich-filter-top/rich-filter-top.directive.mjs +29 -0
  47. package/esm2022/lib/components/filter/rich-filter/public-api.mjs +4 -0
  48. package/esm2022/lib/components/filter/rich-filter/rich-filter.imports.mjs +10 -0
  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/directives/search-input/search-input.directive.mjs +3 -1
  51. package/esm2022/lib/components/forms/components/select/components/combobox/directives/combobox/combobox.directive.mjs +7 -1
  52. package/esm2022/lib/components/forms/components/select/components/select/directives/select/select.directive.mjs +2 -1
  53. package/esm2022/lib/components/forms/components/slider/components/slider/slider.component.mjs +3 -3
  54. package/esm2022/lib/components/masonry/components/masonry/masonry.component.mjs +10 -7
  55. package/esm2022/lib/components/overlay/components/bottom-sheet/services/bottom-sheet-base.service.mjs +2 -2
  56. package/esm2022/lib/components/overlay/components/dialog/services/dialog-base.service.mjs +3 -3
  57. package/esm2022/lib/components/overlay/components/menu/menu-aim.mjs +1 -1
  58. package/esm2022/lib/components/overlay/components/overlay/services/overlay.service.mjs +4 -4
  59. package/esm2022/lib/components/pagination/services/pagination-head.service.mjs +3 -3
  60. package/esm2022/lib/components/public-api.mjs +2 -2
  61. package/esm2022/lib/components/query-error/components/query-error/query-error.component.mjs +3 -3
  62. package/esm2022/lib/components/query-error/directives/query-error/query-error.directive.mjs +1 -1
  63. package/esm2022/lib/components/sort/partials/sort/sort.directive.mjs +1 -1
  64. package/esm2022/lib/services/swipe-handler.service.mjs +1 -1
  65. package/fesm2022/ethlete-cdk.mjs +255 -53
  66. package/fesm2022/ethlete-cdk.mjs.map +1 -1
  67. package/lib/components/bracket/utils/bracket.utils.d.ts +1 -1
  68. package/lib/components/{filter-overlay → filter/filter-overlay}/components/filter-overlay-page-outlet/filter-overlay-page-outlet.component.d.ts +3 -2
  69. package/lib/components/{filter-overlay → filter/filter-overlay}/services/filter-overlay.service.d.ts +1 -1
  70. package/lib/components/{filter-overlay → filter/filter-overlay}/types/filter-overlay-config.types.d.ts +1 -5
  71. package/lib/components/{filter-overlay → filter/filter-overlay}/utils/filter-overlay-ref.d.ts +4 -4
  72. package/lib/components/filter/public-api.d.ts +2 -0
  73. package/lib/components/filter/rich-filter/components/index.d.ts +1 -0
  74. package/lib/components/filter/rich-filter/components/public-api.d.ts +1 -0
  75. package/lib/components/filter/rich-filter/components/rich-filter-host/public-api.d.ts +1 -0
  76. package/lib/components/filter/rich-filter/components/rich-filter-host/rich-filter-host.component.d.ts +23 -0
  77. package/lib/components/filter/rich-filter/directives/index.d.ts +1 -0
  78. package/lib/components/filter/rich-filter/directives/public-api.d.ts +4 -0
  79. package/lib/components/filter/rich-filter/directives/rich-filter-button/public-api.d.ts +1 -0
  80. package/lib/components/filter/rich-filter/directives/rich-filter-button/rich-filter-button.directive.d.ts +8 -0
  81. package/lib/components/filter/rich-filter/directives/rich-filter-button-slot/public-api.d.ts +1 -0
  82. package/lib/components/filter/rich-filter/directives/rich-filter-button-slot/rich-filter-button-slot.directive.d.ts +10 -0
  83. package/lib/components/filter/rich-filter/directives/rich-filter-content/public-api.d.ts +1 -0
  84. package/lib/components/filter/rich-filter/directives/rich-filter-content/rich-filter-content.directive.d.ts +10 -0
  85. package/lib/components/filter/rich-filter/directives/rich-filter-top/public-api.d.ts +1 -0
  86. package/lib/components/filter/rich-filter/directives/rich-filter-top/rich-filter-top.directive.d.ts +8 -0
  87. package/lib/components/filter/rich-filter/public-api.d.ts +3 -0
  88. package/lib/components/filter/rich-filter/rich-filter.imports.d.ts +3 -0
  89. package/lib/components/public-api.d.ts +1 -1
  90. package/package.json +5 -3
  91. package/esm2022/lib/components/filter-overlay/components/filter-overlay-page-outlet/filter-overlay-page-outlet.component.mjs +0 -36
  92. package/esm2022/lib/components/filter-overlay/components/filter-overlay-page-outlet/public-api.mjs +0 -2
  93. package/esm2022/lib/components/filter-overlay/components/index.mjs +0 -2
  94. package/esm2022/lib/components/filter-overlay/components/public-api.mjs +0 -2
  95. package/esm2022/lib/components/filter-overlay/constants/filter-overlay.constants.mjs +0 -3
  96. package/esm2022/lib/components/filter-overlay/constants/index.mjs +0 -2
  97. package/esm2022/lib/components/filter-overlay/constants/public-api.mjs +0 -2
  98. package/esm2022/lib/components/filter-overlay/directives/filter-overlay-back-or-close/filter-overlay-back-or-close.directive.mjs +0 -45
  99. package/esm2022/lib/components/filter-overlay/directives/filter-overlay-back-or-close/public-api.mjs +0 -2
  100. package/esm2022/lib/components/filter-overlay/directives/filter-overlay-link/filter-overlay-link.directive.mjs +0 -46
  101. package/esm2022/lib/components/filter-overlay/directives/filter-overlay-link/public-api.mjs +0 -2
  102. package/esm2022/lib/components/filter-overlay/directives/filter-overlay-reset/filter-overlay-reset.directive.mjs +0 -45
  103. package/esm2022/lib/components/filter-overlay/directives/filter-overlay-reset/public-api.mjs +0 -2
  104. package/esm2022/lib/components/filter-overlay/directives/filter-overlay-submit/filter-overlay-submit.directive.mjs +0 -45
  105. package/esm2022/lib/components/filter-overlay/directives/filter-overlay-submit/public-api.mjs +0 -2
  106. package/esm2022/lib/components/filter-overlay/directives/index.mjs +0 -2
  107. package/esm2022/lib/components/filter-overlay/directives/public-api.mjs +0 -5
  108. package/esm2022/lib/components/filter-overlay/filter-overlay.imports.mjs +0 -14
  109. package/esm2022/lib/components/filter-overlay/public-api.mjs +0 -8
  110. package/esm2022/lib/components/filter-overlay/services/filter-overlay.service.mjs +0 -37
  111. package/esm2022/lib/components/filter-overlay/services/index.mjs +0 -2
  112. package/esm2022/lib/components/filter-overlay/services/public-api.mjs +0 -2
  113. package/esm2022/lib/components/filter-overlay/types/filter-overlay-config.types.mjs +0 -2
  114. package/esm2022/lib/components/filter-overlay/types/index.mjs +0 -2
  115. package/esm2022/lib/components/filter-overlay/types/public-api.mjs +0 -2
  116. package/esm2022/lib/components/filter-overlay/utils/filter-overlay-ref.mjs +0 -60
  117. package/esm2022/lib/components/filter-overlay/utils/index.mjs +0 -2
  118. package/esm2022/lib/components/filter-overlay/utils/public-api.mjs +0 -2
  119. /package/lib/components/{filter-overlay → filter/filter-overlay}/components/filter-overlay-page-outlet/public-api.d.ts +0 -0
  120. /package/lib/components/{filter-overlay → filter/filter-overlay}/components/index.d.ts +0 -0
  121. /package/lib/components/{filter-overlay → filter/filter-overlay}/components/public-api.d.ts +0 -0
  122. /package/lib/components/{filter-overlay → filter/filter-overlay}/constants/filter-overlay.constants.d.ts +0 -0
  123. /package/lib/components/{filter-overlay → filter/filter-overlay}/constants/index.d.ts +0 -0
  124. /package/lib/components/{filter-overlay → filter/filter-overlay}/constants/public-api.d.ts +0 -0
  125. /package/lib/components/{filter-overlay → filter/filter-overlay}/directives/filter-overlay-back-or-close/filter-overlay-back-or-close.directive.d.ts +0 -0
  126. /package/lib/components/{filter-overlay → filter/filter-overlay}/directives/filter-overlay-back-or-close/public-api.d.ts +0 -0
  127. /package/lib/components/{filter-overlay → filter/filter-overlay}/directives/filter-overlay-link/filter-overlay-link.directive.d.ts +0 -0
  128. /package/lib/components/{filter-overlay → filter/filter-overlay}/directives/filter-overlay-link/public-api.d.ts +0 -0
  129. /package/lib/components/{filter-overlay → filter/filter-overlay}/directives/filter-overlay-reset/filter-overlay-reset.directive.d.ts +0 -0
  130. /package/lib/components/{filter-overlay → filter/filter-overlay}/directives/filter-overlay-reset/public-api.d.ts +0 -0
  131. /package/lib/components/{filter-overlay → filter/filter-overlay}/directives/filter-overlay-submit/filter-overlay-submit.directive.d.ts +0 -0
  132. /package/lib/components/{filter-overlay → filter/filter-overlay}/directives/filter-overlay-submit/public-api.d.ts +0 -0
  133. /package/lib/components/{filter-overlay → filter/filter-overlay}/directives/index.d.ts +0 -0
  134. /package/lib/components/{filter-overlay → filter/filter-overlay}/directives/public-api.d.ts +0 -0
  135. /package/lib/components/{filter-overlay → filter/filter-overlay}/filter-overlay.imports.d.ts +0 -0
  136. /package/lib/components/{filter-overlay → filter/filter-overlay}/public-api.d.ts +0 -0
  137. /package/lib/components/{filter-overlay → filter/filter-overlay}/services/index.d.ts +0 -0
  138. /package/lib/components/{filter-overlay → filter/filter-overlay}/services/public-api.d.ts +0 -0
  139. /package/lib/components/{filter-overlay → filter/filter-overlay}/types/index.d.ts +0 -0
  140. /package/lib/components/{filter-overlay → filter/filter-overlay}/types/public-api.d.ts +0 -0
  141. /package/lib/components/{filter-overlay → filter/filter-overlay}/utils/index.d.ts +0 -0
  142. /package/lib/components/{filter-overlay → filter/filter-overlay}/utils/public-api.d.ts +0 -0
@@ -2,9 +2,9 @@ import * as i1 from '@angular/cdk/portal';
2
2
  import { CdkPortal, PortalModule, ComponentPortal, TemplatePortal, CdkPortalOutlet } from '@angular/cdk/portal';
3
3
  import { AsyncPipe, NgIf, NgClass, NgTemplateOutlet, NgForOf, NgFor, NgComponentOutlet, DOCUMENT, JsonPipe, formatDate } from '@angular/common';
4
4
  import * as i0 from '@angular/core';
5
- import { Component, ViewEncapsulation, ChangeDetectionStrategy, Directive, InjectionToken, booleanAttribute, Input, ContentChild, ContentChildren, inject, ElementRef, Injector, HostBinding, signal, Optional, Inject, Injectable, SkipSelf, HostListener, ViewContainerRef, EventEmitter, NgZone, isDevMode, Output, NgModule, ChangeDetectorRef, ViewChild, computed, runInInjectionContext, TemplateRef, forwardRef, LOCALE_ID, numberAttribute, ViewChildren, Renderer2, Attribute } from '@angular/core';
5
+ import { Component, ViewEncapsulation, ChangeDetectionStrategy, Directive, InjectionToken, booleanAttribute, Input, ContentChild, ContentChildren, inject, ElementRef, Injector, HostBinding, computed, signal, Optional, Inject, Injectable, SkipSelf, HostListener, ViewContainerRef, EventEmitter, NgZone, isDevMode, Output, NgModule, ChangeDetectorRef, ViewChild, runInInjectionContext, TemplateRef, forwardRef, LOCALE_ID, numberAttribute, ViewChildren, Renderer2, Attribute } from '@angular/core';
6
6
  import * as i1$2 from '@ethlete/core';
7
- import { LetDirective, createDestroy, ScrollObserverFirstElementDirective, ScrollObserverLastElementDirective, Memo, createReactiveBindings, AnimatedIfDirective, AnimatedLifecycleDirective, SmartBlockScrollStrategy, RouterStateService, ANIMATED_LIFECYCLE_TOKEN, nextFrame, elementCanScroll, equal, ViewportService, AnimatedOverlayDirective, ClickObserverService, FocusVisibleService, cloneFormGroup, IS_EMAIL, MUST_MATCH, IS_ARRAY_NOT_EMPTY, AT_LEAST_ONE_REQUIRED, ResizeObserverService, createFlipAnimation, RuntimeError, SelectionModel, ActiveSelectionModel, KeyPressManager, scrollToElement, isEmptyArray, isObjectArray, isPrimitiveArray, ClickOutsideDirective, ObserveContentDirective, clamp, DELAYABLE_TOKEN, ObserveResizeDirective, getElementVisibleStates, IS_ACTIVE_ELEMENT, IS_ELEMENT, CursorDragScrollDirective, ObserveScrollStateDirective, IsElementDirective, IsActiveElementDirective, ScrollObserverIgnoreTargetDirective, TypedQueryList } from '@ethlete/core';
7
+ import { LetDirective, createDestroy, ScrollObserverFirstElementDirective, ScrollObserverLastElementDirective, Memo, createReactiveBindings, signalHostClasses, AnimatedIfDirective, AnimatedLifecycleDirective, SmartBlockScrollStrategy, RouterStateService, ANIMATED_LIFECYCLE_TOKEN, nextFrame, elementCanScroll, equal, ViewportService, AnimatedOverlayDirective, ClickObserverService, FocusVisibleService, cloneFormGroup, ObserveVisibilityDirective, signalVisibilityChangeClasses, IS_EMAIL, MUST_MATCH, IS_ARRAY_NOT_EMPTY, AT_LEAST_ONE_REQUIRED, ResizeObserverService, createFlipAnimation, RuntimeError, SelectionModel, ActiveSelectionModel, KeyPressManager, scrollToElement, isEmptyArray, isObjectArray, isPrimitiveArray, ClickOutsideDirective, ObserveContentDirective, clamp, DELAYABLE_TOKEN, ObserveResizeDirective, getElementVisibleStates, IS_ACTIVE_ELEMENT, IS_ELEMENT, CursorDragScrollDirective, ObserveScrollStateDirective, IsElementDirective, IsActiveElementDirective, ScrollObserverIgnoreTargetDirective, TypedQueryList } from '@ethlete/core';
8
8
  import { BehaviorSubject, startWith, map, switchMap, combineLatest, pairwise, tap, takeUntil, skip, of, Subject, filter, take, merge, skipUntil, defer, fromEvent, partition, debounceTime as debounceTime$1, distinctUntilChanged as distinctUntilChanged$1, withLatestFrom, skipWhile, catchError, throwError, firstValueFrom, timer, Subscription, Observable } from 'rxjs';
9
9
  import { trigger, state, style, transition, animate } from '@angular/animations';
10
10
  import { __decorate, __metadata } from 'tslib';
@@ -398,10 +398,10 @@ class Bracket {
398
398
  return this._roundsWithMatches.filter((r) => r.round.type === 'loser_bracket');
399
399
  }
400
400
  get firstWinnerRound() {
401
- return this.winnerRounds[0];
401
+ return this.winnerRounds[0] ?? null;
402
402
  }
403
403
  get firstLoserRound() {
404
- return (this.loserRounds[0] ?? null);
404
+ return this.loserRounds[0] ?? null;
405
405
  }
406
406
  get winnerRoundCount() {
407
407
  return this.winnerRounds.length;
@@ -410,13 +410,13 @@ class Bracket {
410
410
  return this.loserRounds.length;
411
411
  }
412
412
  get bracketSize() {
413
- return this.firstWinnerRound.matches.length * 2;
413
+ return this.firstWinnerRound ? this.firstWinnerRound.matches.length * 2 : 0;
414
414
  }
415
415
  get bracketType() {
416
416
  return !this.loserRoundCount ? 'single' : 'double';
417
417
  }
418
418
  get winnerBracketRowCount() {
419
- return this.firstWinnerRound.matches.length;
419
+ return this.firstWinnerRound?.matches.length ?? 0;
420
420
  }
421
421
  get loserBracketRowCount() {
422
422
  return this.firstLoserRound?.matches.length ?? 0;
@@ -455,7 +455,7 @@ class Bracket {
455
455
  return loserRoundCount - winnerRoundCount;
456
456
  }
457
457
  get isPartialDoubleElimination() {
458
- return (this.bracketType === 'double' && this.firstWinnerRound.matches.length === this.firstLoserRound?.matches.length);
458
+ return (this.bracketType === 'double' && this.firstWinnerRound?.matches.length === this.firstLoserRound?.matches.length);
459
459
  }
460
460
  constructor(_roundsWithMatches) {
461
461
  this._roundsWithMatches = _roundsWithMatches;
@@ -470,7 +470,7 @@ class Bracket {
470
470
  let rowStart = isWinnerBracket ? this.winnerRowStart : this.loserRowStart;
471
471
  let rowEnd = isWinnerBracket ? this.winnerRowEnd : this.loserRowEnd;
472
472
  let firstRoundMatchCount = isWinnerBracket
473
- ? this.firstWinnerRound.matches.length
473
+ ? this.firstWinnerRound?.matches.length
474
474
  : this.firstLoserRound?.matches.length;
475
475
  if (isDoubleElimination) {
476
476
  if (isWinnerBracket) {
@@ -593,8 +593,11 @@ class Bracket {
593
593
  let logicalNextRound = null;
594
594
  if ((currentRound?.round.type === 'loser_bracket' && !nextRound) ||
595
595
  (currentRound?.round.type === 'loser_bracket' && nextRound?.round.type === 'third_place')) {
596
- // Transition from last round of looser bracket to semi final round of winner bracket
597
- logicalNextRound = this._roundsWithMatches[currentRoundIndex - this.looserRowAdditionalRoundCount + 1];
596
+ const next = this._roundsWithMatches[currentRoundIndex - this.looserRowAdditionalRoundCount + 1];
597
+ if (next) {
598
+ // Transition from last round of looser bracket to semi final round of winner bracket
599
+ logicalNextRound = next;
600
+ }
598
601
  }
599
602
  else if (((currentRound && isUpperBracketMatch(currentRound)) || !currentRound?.round.type) &&
600
603
  nextRound?.round.type === 'loser_bracket') {
@@ -608,8 +611,9 @@ class Bracket {
608
611
  let previousMatchB = previousRound?.matches[matchIndex * 2 + 1]?.id ?? null;
609
612
  // previousMatchB could be the last loser bracket match
610
613
  if (!previousMatchB && currentRound && isUpperBracketMatch(currentRound)) {
611
- if (this.loserRounds.length === currentRoundIndex + this.looserRowAdditionalRoundCount) {
612
- previousMatchB = this.loserRounds[currentRoundIndex + this.looserRowAdditionalRoundCount - 1].matches[0].id;
614
+ const matchB = this.loserRounds[currentRoundIndex + this.looserRowAdditionalRoundCount - 1]?.matches[0];
615
+ if (this.loserRounds.length === currentRoundIndex + this.looserRowAdditionalRoundCount && matchB) {
616
+ previousMatchB = matchB.id;
613
617
  roundsSameSize = false;
614
618
  }
615
619
  }
@@ -806,13 +810,13 @@ class BracketComponent {
806
810
  // for connecting the last looser match and the respective semi final winner match
807
811
  if (isDoubleElimination &&
808
812
  (!nextRound || nextRound.data.type === 'third_place') &&
809
- currentRound.data.type === 'loser_bracket') {
813
+ currentRound?.data.type === 'loser_bracket') {
810
814
  return bracket.totalRowCount - 1;
811
815
  }
812
816
  if (!nextRound) {
813
817
  return 1;
814
818
  }
815
- if (nextRound.matches.length === currentRound.matches.length) {
819
+ if (nextRound.matches.length === currentRound?.matches.length) {
816
820
  return 1;
817
821
  }
818
822
  if (!isDoubleElimination) {
@@ -820,7 +824,7 @@ class BracketComponent {
820
824
  }
821
825
  else {
822
826
  let rndIndex = roundIndex;
823
- if (currentRound.data.type === 'loser_bracket') {
827
+ if (currentRound?.data.type === 'loser_bracket') {
824
828
  const totalWinnerRounds = bracket.winnerRoundCount;
825
829
  const looserRoundIndex = currentRound.data.type === 'loser_bracket' ? roundIndex - totalWinnerRounds : roundIndex;
826
830
  rndIndex = looserRoundIndex / 2;
@@ -902,7 +906,7 @@ class BracketComponent {
902
906
  provide: BRACKET_TOKEN,
903
907
  useExisting: BracketComponent,
904
908
  },
905
- ], ngImport: i0, template: "<ng-container *ngIf=\"_bracket$ | async as bracket\">\n <ng-container *ngFor=\"let round of bracket.bracketRounds; trackBy: trackByRound; let roundIndex = index\">\n <div\n *ngIf=\"_config.roundHeaderComponent\"\n [etScrollObserverFirstElement]=\"roundIndex === 0\"\n [etScrollObserverLastElement]=\"roundIndex === bracket.winnerRoundCount - 1\"\n [style.--_cs]=\"round.column.start\"\n [style.--_ce]=\"round.column.end\"\n [style.--_rs]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place' ? round.row.start + 1 : round.row.start\n \"\n [attr.special-align-end]=\"\n round.data.type === 'third_place' &&\n bracket.bracketType === 'single' &&\n bracket.firstWinnerRound.matches.length <= 4\n ? 'true'\n : 'false'\n \"\n [attr.is-loser-round-header]=\"\n (round.data.type === 'loser_bracket' || round.data.type === 'third_place') && bracket.bracketType === 'double'\n \"\n class=\"et-bracket-round\"\n >\n <ng-container *cdkPortalOutlet=\"createRoundPortal(round, _config.roundHeaderComponent)\" />\n </div>\n <ng-container *etLet=\"bracket.bracketRounds[roundIndex - 1] as lastRound\">\n <ng-container *etLet=\"bracket.bracketRounds[roundIndex + 1] as nextRound\">\n <ng-container *ngFor=\"let match of round.matches; trackBy: trackByMatch; let matchIndex = index\">\n <div\n *ngIf=\"getConnectedMatches(match, bracket) as connectedMatches\"\n [style.--_cs]=\"round.column.start\"\n [style.--_ce]=\"round.column.end\"\n [style.--_rs]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place'\n ? match.row.start + (_config.roundHeaderComponent ? 2 : 0)\n : match.row.start + (_config.roundHeaderComponent ? 1 : 0)\n \"\n [style.--_re]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place'\n ? match.row.end + (_config.roundHeaderComponent ? 2 : 0)\n : match.row.end + (_config.roundHeaderComponent ? 1 : 0)\n \"\n [style.--_line-multi-after]=\"getLineMultiAfter(roundIndex, bracket)\"\n [attr.et-has-parents]=\"!!connectedMatches.previousMatches?.length\"\n [attr.et-has-child]=\"!!connectedMatches.nextMatch\"\n [attr.et-child-connector-shape]=\"getChildConnectorShape(match, connectedMatches.nextMatch)\"\n [attr.line-span-before]=\"getLineSpan(lastRound, lastRound, round, nextRound, bracket)\"\n [attr.line-span-current]=\"getLineSpan(round, lastRound, round, nextRound, bracket)\"\n [attr.line-span-after]=\"getLineSpan(nextRound, lastRound, round, nextRound, bracket)\"\n [attr.is-first-loser-round-match]=\"\n (round.data.type === 'loser_bracket' || round.data.type === 'third_place') && matchIndex === 0\n \"\n [attr.is-last-lower-bracket-match]=\"\n round.data.type === 'loser_bracket' &&\n (roundIndex === bracket.bracketRounds.length - 1 || nextRound?.data?.type === 'third_place')\n \"\n class=\"et-bracket-match\"\n >\n <ng-container *cdkPortalOutlet=\"createMatchPortal(match, _config.matchComponent)\" />\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [".et-bracket{--connection-color: rgb(101, 101, 101);--connection-radius: 10px;--connection-size: 1.5px;display:grid;grid-auto-columns:min-content;column-gap:var(--_bracket-column-gap);row-gap:var(--_bracket-row-gap)}.et-bracket .et-bracket-round{grid-column:var(--_cs)/var(--_ce);grid-row:var(--_rs)/var(--_rs);height:var(--_round-header-height)}.et-bracket .et-bracket-round[special-align-end=true]{align-self:flex-end}.et-bracket[has-round-headers=false][is-first-loser-round-match=true],.et-bracket[has-round-headers=true] [is-loser-round-header=true]{margin-top:var(--_upper-lower-bracket-gap)}.et-bracket .et-bracket-match{--_gap-x-half: calc(var(--_bracket-column-gap) / 2);--_gap-y-half: calc(var(--_bracket-row-gap) / 2);--_bracket-item-height-half: calc(var(--_bracket-item-height) / 2);--_bracket-item-width-half: calc(var(--_bracket-item-width) / 2);--_connection-size-half: calc(var(--connection-size) / 2);position:relative;grid-column:var(--_cs)/var(--_ce);grid-row:var(--_rs)/var(--_re);inline-size:var(--_bracket-item-width);block-size:var(--_bracket-item-height);justify-self:center;align-self:center}.et-bracket .et-bracket-match[line-span-before=\"0\"][line-span-current=\"0\"]{--_gap-full-width-before: var(--_bracket-column-gap)}.et-bracket .et-bracket-match[line-span-before=\"2\"][line-span-current=\"2\"]{--_gap-full-width-before: calc(var(--_bracket-column-gap) * 2 + var(--_bracket-item-width))}.et-bracket .et-bracket-match[line-span-before=\"0\"][line-span-current=\"2\"],.et-bracket .et-bracket-match[line-span-before=\"2\"][line-span-current=\"0\"]{--_gap-full-width-before: calc( var(--_bracket-column-gap) + (var(--_bracket-item-width) / 2) + var(--_gap-x-half) )}.et-bracket .et-bracket-match[line-span-after=\"0\"][line-span-current=\"0\"]{--_gap-full-width-after: var(--_bracket-column-gap)}.et-bracket .et-bracket-match[line-span-after=\"2\"][line-span-current=\"2\"]{--_gap-full-width-after: calc(var(--_bracket-column-gap) * 2 + var(--_bracket-item-width))}.et-bracket .et-bracket-match[line-span-after=\"0\"][line-span-current=\"2\"],.et-bracket .et-bracket-match[line-span-after=\"2\"][line-span-current=\"0\"]{--_gap-full-width-after: calc(var(--_bracket-column-gap) + (var(--_bracket-item-width) / 2) + var(--_gap-x-half))}.et-bracket .et-bracket-match[et-has-parents=true]:before{content:\"\";position:absolute;inline-size:calc(var(--_gap-full-width-before) / 2);block-size:0;border-block-start:var(--connection-size) solid var(--connection-color);inset-inline-end:100%;inset-block-start:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true]:after{--_height-multi: calc(var(--_bracket-item-height-half) * var(--_line-multi-after));--_gap-y-multi: calc(var(--_gap-y-half) * var(--_line-multi-after));content:\"\";position:absolute;inline-size:calc(var(--_gap-full-width-after) / 2);block-size:calc(var(--_height-multi) + var(--_gap-y-multi));inset-inline-start:100%}.et-bracket .et-bracket-match[et-has-child=true][is-last-lower-bracket-match=true]:after{--_height-multi: calc( (var(--_bracket-item-height-half) * var(--_line-multi-after)) + var(--_upper-lower-bracket-gap) + var(--_round-header-height) )}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=down]:after{border-block-start:var(--connection-size) solid var(--connection-color);border-inline-end:var(--connection-size) solid var(--connection-color);border-start-end-radius:var(--connection-radius);inset-block-start:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=up]:after{border-block-end:var(--connection-size) solid var(--connection-color);border-inline-end:var(--connection-size) solid var(--connection-color);border-end-end-radius:var(--connection-radius);inset-block-end:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=straight]:after{border-block-start:var(--connection-size) solid var(--connection-color);inset-block-start:calc(50% - var(--_connection-size-half));block-size:0}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: ScrollObserverFirstElementDirective, selector: "[etScrollObserverFirstElement]", inputs: ["etScrollObserverFirstElement"] }, { kind: "directive", type: ScrollObserverLastElementDirective, selector: "[etScrollObserverLastElement]", inputs: ["etScrollObserverLastElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
909
+ ], ngImport: i0, template: "<ng-container *ngIf=\"_bracket$ | async as bracket\">\n <ng-container *ngFor=\"let round of bracket.bracketRounds; trackBy: trackByRound; let roundIndex = index\">\n <div\n *ngIf=\"_config.roundHeaderComponent\"\n [etScrollObserverFirstElement]=\"roundIndex === 0\"\n [etScrollObserverLastElement]=\"roundIndex === bracket.winnerRoundCount - 1\"\n [style.--_cs]=\"round.column.start\"\n [style.--_ce]=\"round.column.end\"\n [style.--_rs]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place' ? round.row.start + 1 : round.row.start\n \"\n [attr.special-align-end]=\"\n round.data.type === 'third_place' &&\n bracket.bracketType === 'single' &&\n bracket.firstWinnerRound &&\n bracket.firstWinnerRound.matches.length <= 4\n ? 'true'\n : 'false'\n \"\n [attr.is-loser-round-header]=\"\n (round.data.type === 'loser_bracket' || round.data.type === 'third_place') && bracket.bracketType === 'double'\n \"\n class=\"et-bracket-round\"\n >\n <ng-container *cdkPortalOutlet=\"createRoundPortal(round, _config.roundHeaderComponent)\" />\n </div>\n <ng-container *etLet=\"bracket.bracketRounds[roundIndex - 1] ?? null as lastRound\">\n <ng-container *etLet=\"bracket.bracketRounds[roundIndex + 1] ?? null as nextRound\">\n <ng-container *ngFor=\"let match of round.matches; trackBy: trackByMatch; let matchIndex = index\">\n <div\n *ngIf=\"getConnectedMatches(match, bracket) as connectedMatches\"\n [style.--_cs]=\"round.column.start\"\n [style.--_ce]=\"round.column.end\"\n [style.--_rs]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place'\n ? match.row.start + (_config.roundHeaderComponent ? 2 : 0)\n : match.row.start + (_config.roundHeaderComponent ? 1 : 0)\n \"\n [style.--_re]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place'\n ? match.row.end + (_config.roundHeaderComponent ? 2 : 0)\n : match.row.end + (_config.roundHeaderComponent ? 1 : 0)\n \"\n [style.--_line-multi-after]=\"getLineMultiAfter(roundIndex, bracket)\"\n [attr.et-has-parents]=\"!!connectedMatches.previousMatches?.length\"\n [attr.et-has-child]=\"!!connectedMatches.nextMatch\"\n [attr.et-child-connector-shape]=\"getChildConnectorShape(match, connectedMatches.nextMatch)\"\n [attr.line-span-before]=\"getLineSpan(lastRound, lastRound, round, nextRound, bracket)\"\n [attr.line-span-current]=\"getLineSpan(round, lastRound, round, nextRound, bracket)\"\n [attr.line-span-after]=\"getLineSpan(nextRound, lastRound, round, nextRound, bracket)\"\n [attr.is-first-loser-round-match]=\"\n (round.data.type === 'loser_bracket' || round.data.type === 'third_place') && matchIndex === 0\n \"\n [attr.is-last-lower-bracket-match]=\"\n round.data.type === 'loser_bracket' &&\n (roundIndex === bracket.bracketRounds.length - 1 || nextRound?.data?.type === 'third_place')\n \"\n class=\"et-bracket-match\"\n >\n <ng-container *cdkPortalOutlet=\"createMatchPortal(match, _config.matchComponent)\" />\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [".et-bracket{--connection-color: rgb(101, 101, 101);--connection-radius: 10px;--connection-size: 1.5px;display:grid;grid-auto-columns:min-content;column-gap:var(--_bracket-column-gap);row-gap:var(--_bracket-row-gap)}.et-bracket .et-bracket-round{grid-column:var(--_cs)/var(--_ce);grid-row:var(--_rs)/var(--_rs);height:var(--_round-header-height)}.et-bracket .et-bracket-round[special-align-end=true]{align-self:flex-end}.et-bracket[has-round-headers=false][is-first-loser-round-match=true],.et-bracket[has-round-headers=true] [is-loser-round-header=true]{margin-top:var(--_upper-lower-bracket-gap)}.et-bracket .et-bracket-match{--_gap-x-half: calc(var(--_bracket-column-gap) / 2);--_gap-y-half: calc(var(--_bracket-row-gap) / 2);--_bracket-item-height-half: calc(var(--_bracket-item-height) / 2);--_bracket-item-width-half: calc(var(--_bracket-item-width) / 2);--_connection-size-half: calc(var(--connection-size) / 2);position:relative;grid-column:var(--_cs)/var(--_ce);grid-row:var(--_rs)/var(--_re);inline-size:var(--_bracket-item-width);block-size:var(--_bracket-item-height);justify-self:center;align-self:center}.et-bracket .et-bracket-match[line-span-before=\"0\"][line-span-current=\"0\"]{--_gap-full-width-before: var(--_bracket-column-gap)}.et-bracket .et-bracket-match[line-span-before=\"2\"][line-span-current=\"2\"]{--_gap-full-width-before: calc(var(--_bracket-column-gap) * 2 + var(--_bracket-item-width))}.et-bracket .et-bracket-match[line-span-before=\"0\"][line-span-current=\"2\"],.et-bracket .et-bracket-match[line-span-before=\"2\"][line-span-current=\"0\"]{--_gap-full-width-before: calc( var(--_bracket-column-gap) + (var(--_bracket-item-width) / 2) + var(--_gap-x-half) )}.et-bracket .et-bracket-match[line-span-after=\"0\"][line-span-current=\"0\"]{--_gap-full-width-after: var(--_bracket-column-gap)}.et-bracket .et-bracket-match[line-span-after=\"2\"][line-span-current=\"2\"]{--_gap-full-width-after: calc(var(--_bracket-column-gap) * 2 + var(--_bracket-item-width))}.et-bracket .et-bracket-match[line-span-after=\"0\"][line-span-current=\"2\"],.et-bracket .et-bracket-match[line-span-after=\"2\"][line-span-current=\"0\"]{--_gap-full-width-after: calc(var(--_bracket-column-gap) + (var(--_bracket-item-width) / 2) + var(--_gap-x-half))}.et-bracket .et-bracket-match[et-has-parents=true]:before{content:\"\";position:absolute;inline-size:calc(var(--_gap-full-width-before) / 2);block-size:0;border-block-start:var(--connection-size) solid var(--connection-color);inset-inline-end:100%;inset-block-start:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true]:after{--_height-multi: calc(var(--_bracket-item-height-half) * var(--_line-multi-after));--_gap-y-multi: calc(var(--_gap-y-half) * var(--_line-multi-after));content:\"\";position:absolute;inline-size:calc(var(--_gap-full-width-after) / 2);block-size:calc(var(--_height-multi) + var(--_gap-y-multi));inset-inline-start:100%}.et-bracket .et-bracket-match[et-has-child=true][is-last-lower-bracket-match=true]:after{--_height-multi: calc( (var(--_bracket-item-height-half) * var(--_line-multi-after)) + var(--_upper-lower-bracket-gap) + var(--_round-header-height) )}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=down]:after{border-block-start:var(--connection-size) solid var(--connection-color);border-inline-end:var(--connection-size) solid var(--connection-color);border-start-end-radius:var(--connection-radius);inset-block-start:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=up]:after{border-block-end:var(--connection-size) solid var(--connection-color);border-inline-end:var(--connection-size) solid var(--connection-color);border-end-end-radius:var(--connection-radius);inset-block-end:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=straight]:after{border-block-start:var(--connection-size) solid var(--connection-color);inset-block-start:calc(50% - var(--_connection-size-half));block-size:0}\n"], dependencies: [{ kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: LetDirective, selector: "[etLet]", inputs: ["etLet"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: PortalModule }, { kind: "directive", type: i1.CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: ScrollObserverFirstElementDirective, selector: "[etScrollObserverFirstElement]", inputs: ["etScrollObserverFirstElement"] }, { kind: "directive", type: ScrollObserverLastElementDirective, selector: "[etScrollObserverLastElement]", inputs: ["etScrollObserverLastElement"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
906
910
  }
907
911
  __decorate([
908
912
  Memo({
@@ -992,7 +996,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
992
996
  provide: BRACKET_TOKEN,
993
997
  useExisting: BracketComponent,
994
998
  },
995
- ], template: "<ng-container *ngIf=\"_bracket$ | async as bracket\">\n <ng-container *ngFor=\"let round of bracket.bracketRounds; trackBy: trackByRound; let roundIndex = index\">\n <div\n *ngIf=\"_config.roundHeaderComponent\"\n [etScrollObserverFirstElement]=\"roundIndex === 0\"\n [etScrollObserverLastElement]=\"roundIndex === bracket.winnerRoundCount - 1\"\n [style.--_cs]=\"round.column.start\"\n [style.--_ce]=\"round.column.end\"\n [style.--_rs]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place' ? round.row.start + 1 : round.row.start\n \"\n [attr.special-align-end]=\"\n round.data.type === 'third_place' &&\n bracket.bracketType === 'single' &&\n bracket.firstWinnerRound.matches.length <= 4\n ? 'true'\n : 'false'\n \"\n [attr.is-loser-round-header]=\"\n (round.data.type === 'loser_bracket' || round.data.type === 'third_place') && bracket.bracketType === 'double'\n \"\n class=\"et-bracket-round\"\n >\n <ng-container *cdkPortalOutlet=\"createRoundPortal(round, _config.roundHeaderComponent)\" />\n </div>\n <ng-container *etLet=\"bracket.bracketRounds[roundIndex - 1] as lastRound\">\n <ng-container *etLet=\"bracket.bracketRounds[roundIndex + 1] as nextRound\">\n <ng-container *ngFor=\"let match of round.matches; trackBy: trackByMatch; let matchIndex = index\">\n <div\n *ngIf=\"getConnectedMatches(match, bracket) as connectedMatches\"\n [style.--_cs]=\"round.column.start\"\n [style.--_ce]=\"round.column.end\"\n [style.--_rs]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place'\n ? match.row.start + (_config.roundHeaderComponent ? 2 : 0)\n : match.row.start + (_config.roundHeaderComponent ? 1 : 0)\n \"\n [style.--_re]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place'\n ? match.row.end + (_config.roundHeaderComponent ? 2 : 0)\n : match.row.end + (_config.roundHeaderComponent ? 1 : 0)\n \"\n [style.--_line-multi-after]=\"getLineMultiAfter(roundIndex, bracket)\"\n [attr.et-has-parents]=\"!!connectedMatches.previousMatches?.length\"\n [attr.et-has-child]=\"!!connectedMatches.nextMatch\"\n [attr.et-child-connector-shape]=\"getChildConnectorShape(match, connectedMatches.nextMatch)\"\n [attr.line-span-before]=\"getLineSpan(lastRound, lastRound, round, nextRound, bracket)\"\n [attr.line-span-current]=\"getLineSpan(round, lastRound, round, nextRound, bracket)\"\n [attr.line-span-after]=\"getLineSpan(nextRound, lastRound, round, nextRound, bracket)\"\n [attr.is-first-loser-round-match]=\"\n (round.data.type === 'loser_bracket' || round.data.type === 'third_place') && matchIndex === 0\n \"\n [attr.is-last-lower-bracket-match]=\"\n round.data.type === 'loser_bracket' &&\n (roundIndex === bracket.bracketRounds.length - 1 || nextRound?.data?.type === 'third_place')\n \"\n class=\"et-bracket-match\"\n >\n <ng-container *cdkPortalOutlet=\"createMatchPortal(match, _config.matchComponent)\" />\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [".et-bracket{--connection-color: rgb(101, 101, 101);--connection-radius: 10px;--connection-size: 1.5px;display:grid;grid-auto-columns:min-content;column-gap:var(--_bracket-column-gap);row-gap:var(--_bracket-row-gap)}.et-bracket .et-bracket-round{grid-column:var(--_cs)/var(--_ce);grid-row:var(--_rs)/var(--_rs);height:var(--_round-header-height)}.et-bracket .et-bracket-round[special-align-end=true]{align-self:flex-end}.et-bracket[has-round-headers=false][is-first-loser-round-match=true],.et-bracket[has-round-headers=true] [is-loser-round-header=true]{margin-top:var(--_upper-lower-bracket-gap)}.et-bracket .et-bracket-match{--_gap-x-half: calc(var(--_bracket-column-gap) / 2);--_gap-y-half: calc(var(--_bracket-row-gap) / 2);--_bracket-item-height-half: calc(var(--_bracket-item-height) / 2);--_bracket-item-width-half: calc(var(--_bracket-item-width) / 2);--_connection-size-half: calc(var(--connection-size) / 2);position:relative;grid-column:var(--_cs)/var(--_ce);grid-row:var(--_rs)/var(--_re);inline-size:var(--_bracket-item-width);block-size:var(--_bracket-item-height);justify-self:center;align-self:center}.et-bracket .et-bracket-match[line-span-before=\"0\"][line-span-current=\"0\"]{--_gap-full-width-before: var(--_bracket-column-gap)}.et-bracket .et-bracket-match[line-span-before=\"2\"][line-span-current=\"2\"]{--_gap-full-width-before: calc(var(--_bracket-column-gap) * 2 + var(--_bracket-item-width))}.et-bracket .et-bracket-match[line-span-before=\"0\"][line-span-current=\"2\"],.et-bracket .et-bracket-match[line-span-before=\"2\"][line-span-current=\"0\"]{--_gap-full-width-before: calc( var(--_bracket-column-gap) + (var(--_bracket-item-width) / 2) + var(--_gap-x-half) )}.et-bracket .et-bracket-match[line-span-after=\"0\"][line-span-current=\"0\"]{--_gap-full-width-after: var(--_bracket-column-gap)}.et-bracket .et-bracket-match[line-span-after=\"2\"][line-span-current=\"2\"]{--_gap-full-width-after: calc(var(--_bracket-column-gap) * 2 + var(--_bracket-item-width))}.et-bracket .et-bracket-match[line-span-after=\"0\"][line-span-current=\"2\"],.et-bracket .et-bracket-match[line-span-after=\"2\"][line-span-current=\"0\"]{--_gap-full-width-after: calc(var(--_bracket-column-gap) + (var(--_bracket-item-width) / 2) + var(--_gap-x-half))}.et-bracket .et-bracket-match[et-has-parents=true]:before{content:\"\";position:absolute;inline-size:calc(var(--_gap-full-width-before) / 2);block-size:0;border-block-start:var(--connection-size) solid var(--connection-color);inset-inline-end:100%;inset-block-start:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true]:after{--_height-multi: calc(var(--_bracket-item-height-half) * var(--_line-multi-after));--_gap-y-multi: calc(var(--_gap-y-half) * var(--_line-multi-after));content:\"\";position:absolute;inline-size:calc(var(--_gap-full-width-after) / 2);block-size:calc(var(--_height-multi) + var(--_gap-y-multi));inset-inline-start:100%}.et-bracket .et-bracket-match[et-has-child=true][is-last-lower-bracket-match=true]:after{--_height-multi: calc( (var(--_bracket-item-height-half) * var(--_line-multi-after)) + var(--_upper-lower-bracket-gap) + var(--_round-header-height) )}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=down]:after{border-block-start:var(--connection-size) solid var(--connection-color);border-inline-end:var(--connection-size) solid var(--connection-color);border-start-end-radius:var(--connection-radius);inset-block-start:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=up]:after{border-block-end:var(--connection-size) solid var(--connection-color);border-inline-end:var(--connection-size) solid var(--connection-color);border-end-end-radius:var(--connection-radius);inset-block-end:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=straight]:after{border-block-start:var(--connection-size) solid var(--connection-color);inset-block-start:calc(50% - var(--_connection-size-half));block-size:0}\n"] }]
999
+ ], template: "<ng-container *ngIf=\"_bracket$ | async as bracket\">\n <ng-container *ngFor=\"let round of bracket.bracketRounds; trackBy: trackByRound; let roundIndex = index\">\n <div\n *ngIf=\"_config.roundHeaderComponent\"\n [etScrollObserverFirstElement]=\"roundIndex === 0\"\n [etScrollObserverLastElement]=\"roundIndex === bracket.winnerRoundCount - 1\"\n [style.--_cs]=\"round.column.start\"\n [style.--_ce]=\"round.column.end\"\n [style.--_rs]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place' ? round.row.start + 1 : round.row.start\n \"\n [attr.special-align-end]=\"\n round.data.type === 'third_place' &&\n bracket.bracketType === 'single' &&\n bracket.firstWinnerRound &&\n bracket.firstWinnerRound.matches.length <= 4\n ? 'true'\n : 'false'\n \"\n [attr.is-loser-round-header]=\"\n (round.data.type === 'loser_bracket' || round.data.type === 'third_place') && bracket.bracketType === 'double'\n \"\n class=\"et-bracket-round\"\n >\n <ng-container *cdkPortalOutlet=\"createRoundPortal(round, _config.roundHeaderComponent)\" />\n </div>\n <ng-container *etLet=\"bracket.bracketRounds[roundIndex - 1] ?? null as lastRound\">\n <ng-container *etLet=\"bracket.bracketRounds[roundIndex + 1] ?? null as nextRound\">\n <ng-container *ngFor=\"let match of round.matches; trackBy: trackByMatch; let matchIndex = index\">\n <div\n *ngIf=\"getConnectedMatches(match, bracket) as connectedMatches\"\n [style.--_cs]=\"round.column.start\"\n [style.--_ce]=\"round.column.end\"\n [style.--_rs]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place'\n ? match.row.start + (_config.roundHeaderComponent ? 2 : 0)\n : match.row.start + (_config.roundHeaderComponent ? 1 : 0)\n \"\n [style.--_re]=\"\n round.data.type === 'loser_bracket' || round.data.type === 'third_place'\n ? match.row.end + (_config.roundHeaderComponent ? 2 : 0)\n : match.row.end + (_config.roundHeaderComponent ? 1 : 0)\n \"\n [style.--_line-multi-after]=\"getLineMultiAfter(roundIndex, bracket)\"\n [attr.et-has-parents]=\"!!connectedMatches.previousMatches?.length\"\n [attr.et-has-child]=\"!!connectedMatches.nextMatch\"\n [attr.et-child-connector-shape]=\"getChildConnectorShape(match, connectedMatches.nextMatch)\"\n [attr.line-span-before]=\"getLineSpan(lastRound, lastRound, round, nextRound, bracket)\"\n [attr.line-span-current]=\"getLineSpan(round, lastRound, round, nextRound, bracket)\"\n [attr.line-span-after]=\"getLineSpan(nextRound, lastRound, round, nextRound, bracket)\"\n [attr.is-first-loser-round-match]=\"\n (round.data.type === 'loser_bracket' || round.data.type === 'third_place') && matchIndex === 0\n \"\n [attr.is-last-lower-bracket-match]=\"\n round.data.type === 'loser_bracket' &&\n (roundIndex === bracket.bracketRounds.length - 1 || nextRound?.data?.type === 'third_place')\n \"\n class=\"et-bracket-match\"\n >\n <ng-container *cdkPortalOutlet=\"createMatchPortal(match, _config.matchComponent)\" />\n </div>\n </ng-container>\n </ng-container>\n </ng-container>\n </ng-container>\n</ng-container>\n", styles: [".et-bracket{--connection-color: rgb(101, 101, 101);--connection-radius: 10px;--connection-size: 1.5px;display:grid;grid-auto-columns:min-content;column-gap:var(--_bracket-column-gap);row-gap:var(--_bracket-row-gap)}.et-bracket .et-bracket-round{grid-column:var(--_cs)/var(--_ce);grid-row:var(--_rs)/var(--_rs);height:var(--_round-header-height)}.et-bracket .et-bracket-round[special-align-end=true]{align-self:flex-end}.et-bracket[has-round-headers=false][is-first-loser-round-match=true],.et-bracket[has-round-headers=true] [is-loser-round-header=true]{margin-top:var(--_upper-lower-bracket-gap)}.et-bracket .et-bracket-match{--_gap-x-half: calc(var(--_bracket-column-gap) / 2);--_gap-y-half: calc(var(--_bracket-row-gap) / 2);--_bracket-item-height-half: calc(var(--_bracket-item-height) / 2);--_bracket-item-width-half: calc(var(--_bracket-item-width) / 2);--_connection-size-half: calc(var(--connection-size) / 2);position:relative;grid-column:var(--_cs)/var(--_ce);grid-row:var(--_rs)/var(--_re);inline-size:var(--_bracket-item-width);block-size:var(--_bracket-item-height);justify-self:center;align-self:center}.et-bracket .et-bracket-match[line-span-before=\"0\"][line-span-current=\"0\"]{--_gap-full-width-before: var(--_bracket-column-gap)}.et-bracket .et-bracket-match[line-span-before=\"2\"][line-span-current=\"2\"]{--_gap-full-width-before: calc(var(--_bracket-column-gap) * 2 + var(--_bracket-item-width))}.et-bracket .et-bracket-match[line-span-before=\"0\"][line-span-current=\"2\"],.et-bracket .et-bracket-match[line-span-before=\"2\"][line-span-current=\"0\"]{--_gap-full-width-before: calc( var(--_bracket-column-gap) + (var(--_bracket-item-width) / 2) + var(--_gap-x-half) )}.et-bracket .et-bracket-match[line-span-after=\"0\"][line-span-current=\"0\"]{--_gap-full-width-after: var(--_bracket-column-gap)}.et-bracket .et-bracket-match[line-span-after=\"2\"][line-span-current=\"2\"]{--_gap-full-width-after: calc(var(--_bracket-column-gap) * 2 + var(--_bracket-item-width))}.et-bracket .et-bracket-match[line-span-after=\"0\"][line-span-current=\"2\"],.et-bracket .et-bracket-match[line-span-after=\"2\"][line-span-current=\"0\"]{--_gap-full-width-after: calc(var(--_bracket-column-gap) + (var(--_bracket-item-width) / 2) + var(--_gap-x-half))}.et-bracket .et-bracket-match[et-has-parents=true]:before{content:\"\";position:absolute;inline-size:calc(var(--_gap-full-width-before) / 2);block-size:0;border-block-start:var(--connection-size) solid var(--connection-color);inset-inline-end:100%;inset-block-start:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true]:after{--_height-multi: calc(var(--_bracket-item-height-half) * var(--_line-multi-after));--_gap-y-multi: calc(var(--_gap-y-half) * var(--_line-multi-after));content:\"\";position:absolute;inline-size:calc(var(--_gap-full-width-after) / 2);block-size:calc(var(--_height-multi) + var(--_gap-y-multi));inset-inline-start:100%}.et-bracket .et-bracket-match[et-has-child=true][is-last-lower-bracket-match=true]:after{--_height-multi: calc( (var(--_bracket-item-height-half) * var(--_line-multi-after)) + var(--_upper-lower-bracket-gap) + var(--_round-header-height) )}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=down]:after{border-block-start:var(--connection-size) solid var(--connection-color);border-inline-end:var(--connection-size) solid var(--connection-color);border-start-end-radius:var(--connection-radius);inset-block-start:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=up]:after{border-block-end:var(--connection-size) solid var(--connection-color);border-inline-end:var(--connection-size) solid var(--connection-color);border-end-end-radius:var(--connection-radius);inset-block-end:calc(50% - var(--_connection-size-half))}.et-bracket .et-bracket-match[et-has-child=true][et-child-connector-shape=straight]:after{border-block-start:var(--connection-size) solid var(--connection-color);inset-block-start:calc(50% - var(--_connection-size-half));block-size:0}\n"] }]
996
1000
  }], propDecorators: { itemWith: [{
997
1001
  type: Input
998
1002
  }], itemHeight: [{
@@ -1265,32 +1269,42 @@ class FilterOverlayPageOutletComponent {
1265
1269
  constructor() {
1266
1270
  this.filterOverlayRef = inject(FILTER_OVERLAY_REF);
1267
1271
  this.trackByRoute = (_, page) => page.route;
1272
+ signalHostClasses({
1273
+ 'et-filter-overlay-page-outlet--backward': computed(() => {
1274
+ const page = this.filterOverlayRef.currentPage();
1275
+ return page?.route === '' || page?.route === '/';
1276
+ }),
1277
+ 'et-filter-overlay-page-outlet--forward': computed(() => {
1278
+ const page = this.filterOverlayRef.currentPage();
1279
+ return page?.route !== '' && page?.route !== '/';
1280
+ }),
1281
+ });
1268
1282
  }
1269
1283
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FilterOverlayPageOutletComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1270
1284
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: FilterOverlayPageOutletComponent, isStandalone: true, selector: "et-filter-overlay-page-outlet", host: { classAttribute: "et-filter-overlay-page-outlet" }, ngImport: i0, template: `
1271
- <ng-container *ngFor="let page of filterOverlayRef.pages(); trackBy: trackByRoute">
1285
+ <ng-container *ngFor="let page of filterOverlayRef.pages; trackBy: trackByRoute">
1272
1286
  <div class="et-filter-overlay-page-outlet-page" etAnimatedLifecycle>
1273
- <ng-container *etAnimatedIf="page.isActive()">
1287
+ <ng-container *etAnimatedIf="page === filterOverlayRef.currentPage()">
1274
1288
  <ng-container *ngComponentOutlet="page.component; inputs: page.inputs" />
1275
1289
  </ng-container>
1276
1290
  </div>
1277
1291
  </ng-container>
1278
- `, isInline: true, styles: [".et-filter-overlay-page-outlet{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow-x:hidden}.et-filter-overlay-page-outlet-page{--transition-easing: var(--ease-in-out-5);grid-area:1 / 1 / 2 / 2;pointer-events:none}.et-filter-overlay-page-outlet-page>*{pointer-events:auto}.et-filter-overlay-page-outlet-page.et-animation-enter-from{transform:translate(100%);opacity:0}.et-filter-overlay-page-outlet-page.et-animation-leave-to{transform:translate(-100%);opacity:0}.et-filter-overlay-page-outlet-page:is(.et-animation-enter-active,.et-animation-leave-active){transition:transform .3s var(--transition-easing),opacity .3s var(--transition-easing)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: AnimatedIfDirective, selector: "[etAnimatedIf]", inputs: ["etAnimatedIf"] }, { kind: "directive", type: AnimatedLifecycleDirective, selector: "[etAnimatedLifecycle]", exportAs: ["etAnimatedLifecycle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1292
+ `, isInline: true, styles: [".et-filter-overlay-page-outlet{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow-x:hidden;--_et-filter-transform-from: translateX(100%);--_et-filter-transform-to: translateX(-100%)}.et-filter-overlay-page-outlet.et-filter-overlay-page-outlet--backward{--_et-filter-transform-from: translateX(-100%);--_et-filter-transform-to: translateX(100%)}.et-filter-overlay-page-outlet-page{--transition-easing: var(--ease-in-out-5);grid-area:1 / 1 / 2 / 2;pointer-events:none}.et-filter-overlay-page-outlet-page>*{pointer-events:auto}.et-filter-overlay-page-outlet-page.et-animation-enter-from{transform:var(--_et-filter-transform-from);opacity:0}.et-filter-overlay-page-outlet-page.et-animation-leave-to{transform:var(--_et-filter-transform-to);opacity:0}.et-filter-overlay-page-outlet-page:is(.et-animation-enter-active,.et-animation-leave-active){transition:transform .3s var(--transition-easing),opacity .3s var(--transition-easing)}\n"], dependencies: [{ kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"] }, { kind: "directive", type: AnimatedIfDirective, selector: "[etAnimatedIf]", inputs: ["etAnimatedIf"] }, { kind: "directive", type: AnimatedLifecycleDirective, selector: "[etAnimatedLifecycle]", exportAs: ["etAnimatedLifecycle"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
1279
1293
  }
1280
1294
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: FilterOverlayPageOutletComponent, decorators: [{
1281
1295
  type: Component,
1282
1296
  args: [{ selector: 'et-filter-overlay-page-outlet', template: `
1283
- <ng-container *ngFor="let page of filterOverlayRef.pages(); trackBy: trackByRoute">
1297
+ <ng-container *ngFor="let page of filterOverlayRef.pages; trackBy: trackByRoute">
1284
1298
  <div class="et-filter-overlay-page-outlet-page" etAnimatedLifecycle>
1285
- <ng-container *etAnimatedIf="page.isActive()">
1299
+ <ng-container *etAnimatedIf="page === filterOverlayRef.currentPage()">
1286
1300
  <ng-container *ngComponentOutlet="page.component; inputs: page.inputs" />
1287
1301
  </ng-container>
1288
1302
  </div>
1289
1303
  </ng-container>
1290
1304
  `, standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
1291
1305
  class: 'et-filter-overlay-page-outlet',
1292
- }, imports: [NgFor, NgComponentOutlet, AnimatedIfDirective, AnimatedLifecycleDirective], hostDirectives: [], styles: [".et-filter-overlay-page-outlet{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow-x:hidden}.et-filter-overlay-page-outlet-page{--transition-easing: var(--ease-in-out-5);grid-area:1 / 1 / 2 / 2;pointer-events:none}.et-filter-overlay-page-outlet-page>*{pointer-events:auto}.et-filter-overlay-page-outlet-page.et-animation-enter-from{transform:translate(100%);opacity:0}.et-filter-overlay-page-outlet-page.et-animation-leave-to{transform:translate(-100%);opacity:0}.et-filter-overlay-page-outlet-page:is(.et-animation-enter-active,.et-animation-leave-active){transition:transform .3s var(--transition-easing),opacity .3s var(--transition-easing)}\n"] }]
1293
- }] });
1306
+ }, imports: [NgFor, NgComponentOutlet, AnimatedIfDirective, AnimatedLifecycleDirective], hostDirectives: [], styles: [".et-filter-overlay-page-outlet{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);overflow-x:hidden;--_et-filter-transform-from: translateX(100%);--_et-filter-transform-to: translateX(-100%)}.et-filter-overlay-page-outlet.et-filter-overlay-page-outlet--backward{--_et-filter-transform-from: translateX(-100%);--_et-filter-transform-to: translateX(100%)}.et-filter-overlay-page-outlet-page{--transition-easing: var(--ease-in-out-5);grid-area:1 / 1 / 2 / 2;pointer-events:none}.et-filter-overlay-page-outlet-page>*{pointer-events:auto}.et-filter-overlay-page-outlet-page.et-animation-enter-from{transform:var(--_et-filter-transform-from);opacity:0}.et-filter-overlay-page-outlet-page.et-animation-leave-to{transform:var(--_et-filter-transform-to);opacity:0}.et-filter-overlay-page-outlet-page:is(.et-animation-enter-active,.et-animation-leave-active){transition:transform .3s var(--transition-easing),opacity .3s var(--transition-easing)}\n"] }]
1307
+ }], ctorParameters: function () { return []; } });
1294
1308
 
1295
1309
  const FILTER_OVERLAY_BACK_OR_CLOSE_TOKEN = new InjectionToken('FILTER_OVERLAY_BACK_OR_CLOSE_TOKEN');
1296
1310
  class FilterOverlayBackOrCloseDirective {
@@ -1730,7 +1744,7 @@ class BottomSheetServiceBase {
1730
1744
  _closeBottomSheets(bottomSheets) {
1731
1745
  let i = bottomSheets.length;
1732
1746
  while (i--) {
1733
- bottomSheets[i].close();
1747
+ bottomSheets[i]?.close();
1734
1748
  }
1735
1749
  }
1736
1750
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: BottomSheetServiceBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
@@ -2358,7 +2372,7 @@ class DialogServiceBase {
2358
2372
  _closeDialogs(dialogs) {
2359
2373
  let i = dialogs.length;
2360
2374
  while (i--) {
2361
- dialogs[i].close();
2375
+ dialogs[i]?.close();
2362
2376
  }
2363
2377
  }
2364
2378
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: DialogServiceBase, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
@@ -4708,7 +4722,7 @@ class OverlayService {
4708
4722
  const originX = isHtmlElement(origin)
4709
4723
  ? origin.getBoundingClientRect().left
4710
4724
  : isTouchEvent$1(origin)
4711
- ? origin.changedTouches[0].clientX
4725
+ ? origin.targetTouches[0].clientX
4712
4726
  : isPointerEvent(origin)
4713
4727
  ? origin.clientX !== 0
4714
4728
  ? origin.clientX
@@ -4717,7 +4731,7 @@ class OverlayService {
4717
4731
  const originY = isHtmlElement(origin)
4718
4732
  ? origin.getBoundingClientRect().top
4719
4733
  : isTouchEvent$1(origin)
4720
- ? origin.changedTouches[0].clientY
4734
+ ? origin.targetTouches[0].clientY
4721
4735
  : isPointerEvent(origin)
4722
4736
  ? origin.clientY !== 0
4723
4737
  ? origin.clientY
@@ -4826,7 +4840,7 @@ class OverlayService {
4826
4840
  _closeOverlays(overlays) {
4827
4841
  let i = overlays.length;
4828
4842
  while (i--) {
4829
- overlays[i].close();
4843
+ overlays[i]?.close();
4830
4844
  }
4831
4845
  }
4832
4846
  _getAfterAllClosed() {
@@ -5445,15 +5459,11 @@ class FilterOverlayRef {
5445
5459
  this._config = _config;
5446
5460
  this._currentRoute = signal('');
5447
5461
  this.currentRoute = this._currentRoute.asReadonly();
5448
- this.pages = computed(() => this._config.pages.map((page) => {
5449
- const isActive = computed(() => this.currentRoute() === this._buildRoute(page.route));
5450
- const data = {
5451
- ...page,
5452
- isActive,
5453
- };
5454
- return data;
5455
- }));
5456
- this.currentPage = computed(() => this.pages().find((page) => page.isActive()));
5462
+ this.pages = this._config.pages;
5463
+ this.currentPage = computed(() => {
5464
+ const currentRoute = this.currentRoute();
5465
+ return this.pages.find((page) => this._buildRoute(page.route) === currentRoute);
5466
+ });
5457
5467
  this.currentPageTitle = computed(() => this.currentPage()?.title ?? null);
5458
5468
  this.canGoBack = computed(() => !!this.currentRoute());
5459
5469
  this.form = cloneFormGroup(this._config.form);
@@ -5541,6 +5551,186 @@ const provideFilterOverlay = () => {
5541
5551
  return [FilterOverlayService];
5542
5552
  };
5543
5553
 
5554
+ const RICH_FILTER_BUTTON_SLOT_TOKEN = new InjectionToken('RICH_FILTER_BUTTON_SLOT_TOKEN');
5555
+ class RichFilterButtonSlotDirective {
5556
+ constructor() {
5557
+ this.visibilityObserver = inject(ObserveVisibilityDirective);
5558
+ }
5559
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: RichFilterButtonSlotDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5560
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: RichFilterButtonSlotDirective, isStandalone: true, selector: "et-rich-filter-button-slot", providers: [
5561
+ {
5562
+ provide: RICH_FILTER_BUTTON_SLOT_TOKEN,
5563
+ useExisting: RichFilterButtonSlotDirective,
5564
+ },
5565
+ ], hostDirectives: [{ directive: i1$2.ObserveVisibilityDirective }], ngImport: i0 }); }
5566
+ }
5567
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: RichFilterButtonSlotDirective, decorators: [{
5568
+ type: Directive,
5569
+ args: [{
5570
+ selector: 'et-rich-filter-button-slot',
5571
+ standalone: true,
5572
+ providers: [
5573
+ {
5574
+ provide: RICH_FILTER_BUTTON_SLOT_TOKEN,
5575
+ useExisting: RichFilterButtonSlotDirective,
5576
+ },
5577
+ ],
5578
+ hostDirectives: [ObserveVisibilityDirective],
5579
+ }]
5580
+ }] });
5581
+
5582
+ const RICH_FILTER_BUTTON_TOKEN = new InjectionToken('RICH_FILTER_BUTTON_TOKEN');
5583
+ class RichFilterButtonDirective {
5584
+ constructor() {
5585
+ this.elementRef = inject(ElementRef);
5586
+ }
5587
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: RichFilterButtonDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5588
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: RichFilterButtonDirective, isStandalone: true, selector: "[etRichFilterButton]", host: { classAttribute: "et-rich-filter-button" }, providers: [
5589
+ {
5590
+ provide: RICH_FILTER_BUTTON_TOKEN,
5591
+ useExisting: RichFilterButtonDirective,
5592
+ },
5593
+ ], ngImport: i0 }); }
5594
+ }
5595
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: RichFilterButtonDirective, decorators: [{
5596
+ type: Directive,
5597
+ args: [{
5598
+ selector: '[etRichFilterButton]',
5599
+ standalone: true,
5600
+ providers: [
5601
+ {
5602
+ provide: RICH_FILTER_BUTTON_TOKEN,
5603
+ useExisting: RichFilterButtonDirective,
5604
+ },
5605
+ ],
5606
+ host: {
5607
+ class: 'et-rich-filter-button',
5608
+ },
5609
+ }]
5610
+ }] });
5611
+
5612
+ const RICH_FILTER_CONTENT_TOKEN = new InjectionToken('RICH_FILTER_CONTENT_TOKEN');
5613
+ class RichFilterContentDirective {
5614
+ constructor() {
5615
+ this.visibilityObserver = inject(ObserveVisibilityDirective);
5616
+ }
5617
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: RichFilterContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5618
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: RichFilterContentDirective, isStandalone: true, selector: "[etRichFilterContent]", providers: [
5619
+ {
5620
+ provide: RICH_FILTER_CONTENT_TOKEN,
5621
+ useExisting: RichFilterContentDirective,
5622
+ },
5623
+ ], hostDirectives: [{ directive: i1$2.ObserveVisibilityDirective }], ngImport: i0 }); }
5624
+ }
5625
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: RichFilterContentDirective, decorators: [{
5626
+ type: Directive,
5627
+ args: [{
5628
+ selector: '[etRichFilterContent]',
5629
+ standalone: true,
5630
+ providers: [
5631
+ {
5632
+ provide: RICH_FILTER_CONTENT_TOKEN,
5633
+ useExisting: RichFilterContentDirective,
5634
+ },
5635
+ ],
5636
+ hostDirectives: [ObserveVisibilityDirective],
5637
+ }]
5638
+ }] });
5639
+
5640
+ const RICH_FILTER_TOP_TOKEN = new InjectionToken('RICH_FILTER_TOP_TOKEN');
5641
+ class RichFilterTopDirective {
5642
+ constructor() {
5643
+ this.elementRef = inject(ElementRef);
5644
+ }
5645
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: RichFilterTopDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
5646
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.5", type: RichFilterTopDirective, isStandalone: true, selector: "[etRichFilterTop]", providers: [
5647
+ {
5648
+ provide: RICH_FILTER_TOP_TOKEN,
5649
+ useExisting: RichFilterTopDirective,
5650
+ },
5651
+ ], ngImport: i0 }); }
5652
+ }
5653
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: RichFilterTopDirective, decorators: [{
5654
+ type: Directive,
5655
+ args: [{
5656
+ selector: '[etRichFilterTop]',
5657
+ standalone: true,
5658
+ providers: [
5659
+ {
5660
+ provide: RICH_FILTER_TOP_TOKEN,
5661
+ useExisting: RichFilterTopDirective,
5662
+ },
5663
+ ],
5664
+ }]
5665
+ }] });
5666
+
5667
+ class RichFilterHostComponent {
5668
+ set _button(value) {
5669
+ this.button$.next(value ?? null);
5670
+ }
5671
+ set _buttonSlot(value) {
5672
+ this.buttonSlot$.next(value ?? null);
5673
+ }
5674
+ set _content(value) {
5675
+ this.content$.next(value ?? null);
5676
+ }
5677
+ set _top(value) {
5678
+ this.top$.next(value ?? this._implicitTop);
5679
+ }
5680
+ constructor() {
5681
+ this._implicitTop = inject(RICH_FILTER_TOP_TOKEN);
5682
+ this.button$ = new BehaviorSubject(null);
5683
+ this.buttonSlot$ = new BehaviorSubject(null);
5684
+ this.content$ = new BehaviorSubject(null);
5685
+ this.top$ = new BehaviorSubject(this._implicitTop);
5686
+ this.buttonSlotVisibilityChanges$ = this.buttonSlot$.pipe(switchMap((buttonSlot) => buttonSlot?.visibilityObserver.etObserveVisibility.pipe(startWith(null)) ?? of(null)));
5687
+ this.contentVisibilityChanges$ = this.content$.pipe(switchMap((content) => content?.visibilityObserver.etObserveVisibility.pipe(startWith(null)) ?? of(null)));
5688
+ this.buttonSlotVisibilityChanges = toSignal(this.buttonSlotVisibilityChanges$, { requireSync: true });
5689
+ this.contentVisibilityChanges = toSignal(this.contentVisibilityChanges$, { requireSync: true });
5690
+ signalHostClasses({
5691
+ ...signalVisibilityChangeClasses({
5692
+ name: 'et-rich-filter-host-button',
5693
+ signal: this.buttonSlotVisibilityChanges,
5694
+ }),
5695
+ ...signalVisibilityChangeClasses({
5696
+ name: 'et-rich-filter-host-content',
5697
+ signal: this.contentVisibilityChanges,
5698
+ }),
5699
+ });
5700
+ }
5701
+ scrollToTop(options) {
5702
+ this.top$?.value?.elementRef.nativeElement?.scrollIntoView(options);
5703
+ }
5704
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: RichFilterHostComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
5705
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: RichFilterHostComponent, isStandalone: true, selector: "et-rich-filter-host, [et-rich-filter-host]", host: { classAttribute: "et-rich-filter-host" }, queries: [{ propertyName: "_button", first: true, predicate: RICH_FILTER_BUTTON_TOKEN, descendants: true }, { propertyName: "_buttonSlot", first: true, predicate: RICH_FILTER_BUTTON_SLOT_TOKEN, descendants: true }, { propertyName: "_content", first: true, predicate: RICH_FILTER_CONTENT_TOKEN, descendants: true }, { propertyName: "_top", first: true, predicate: RICH_FILTER_TOP_TOKEN, descendants: true }], hostDirectives: [{ directive: RichFilterTopDirective }], ngImport: i0, template: '<ng-content />', isInline: true, styles: [":where(.et-rich-filter-host){--et-rich-filter-display: block;--et-rich-filter-button-inset-inline-end: 30px;--et-rich-filter-button-inset-block-end: 30px;--et-rich-filter-button-z-index: 10}.et-rich-filter-host{display:var(--et-rich-filter-display)}.et-rich-filter-host.et-rich-filter-host-button--is-above.et-rich-filter-host-content--is-visible .et-rich-filter-button,.et-rich-filter-host.et-rich-filter-host-button--is-above.et-rich-filter-host-content--is-above .et-rich-filter-button{position:fixed;inset-inline-end:var(--et-rich-filter-button-inset-inline-end);inset-block-end:var(--et-rich-filter-button-inset-block-end);z-index:var(--et-rich-filter-button-z-index);animation:scaleIn .2s ease-in-out forwards}.et-rich-filter-host.et-rich-filter-host-button--is-above.et-rich-filter-host-content--is-above .et-rich-filter-button{animation:scaleOut .2s ease-in-out forwards}@keyframes scaleIn{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes scaleOut{0%{transform:scale(1)}to{transform:scale(0)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
5706
+ }
5707
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: RichFilterHostComponent, decorators: [{
5708
+ type: Component,
5709
+ args: [{ selector: 'et-rich-filter-host, [et-rich-filter-host]', template: '<ng-content />', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, host: {
5710
+ class: 'et-rich-filter-host',
5711
+ }, hostDirectives: [RichFilterTopDirective], styles: [":where(.et-rich-filter-host){--et-rich-filter-display: block;--et-rich-filter-button-inset-inline-end: 30px;--et-rich-filter-button-inset-block-end: 30px;--et-rich-filter-button-z-index: 10}.et-rich-filter-host{display:var(--et-rich-filter-display)}.et-rich-filter-host.et-rich-filter-host-button--is-above.et-rich-filter-host-content--is-visible .et-rich-filter-button,.et-rich-filter-host.et-rich-filter-host-button--is-above.et-rich-filter-host-content--is-above .et-rich-filter-button{position:fixed;inset-inline-end:var(--et-rich-filter-button-inset-inline-end);inset-block-end:var(--et-rich-filter-button-inset-block-end);z-index:var(--et-rich-filter-button-z-index);animation:scaleIn .2s ease-in-out forwards}.et-rich-filter-host.et-rich-filter-host-button--is-above.et-rich-filter-host-content--is-above .et-rich-filter-button{animation:scaleOut .2s ease-in-out forwards}@keyframes scaleIn{0%{transform:scale(0)}to{transform:scale(1)}}@keyframes scaleOut{0%{transform:scale(1)}to{transform:scale(0)}}\n"] }]
5712
+ }], ctorParameters: function () { return []; }, propDecorators: { _button: [{
5713
+ type: ContentChild,
5714
+ args: [RICH_FILTER_BUTTON_TOKEN]
5715
+ }], _buttonSlot: [{
5716
+ type: ContentChild,
5717
+ args: [RICH_FILTER_BUTTON_SLOT_TOKEN]
5718
+ }], _content: [{
5719
+ type: ContentChild,
5720
+ args: [RICH_FILTER_CONTENT_TOKEN]
5721
+ }], _top: [{
5722
+ type: ContentChild,
5723
+ args: [RICH_FILTER_TOP_TOKEN]
5724
+ }] } });
5725
+
5726
+ const RichFilterImports = [
5727
+ RichFilterHostComponent,
5728
+ RichFilterButtonDirective,
5729
+ RichFilterButtonSlotDirective,
5730
+ RichFilterContentDirective,
5731
+ RichFilterTopDirective,
5732
+ ];
5733
+
5544
5734
  const VALIDATOR_ERROR_SERVICE_TOKEN = new InjectionToken('VALIDATOR_ERROR_SERVICE');
5545
5735
  const provideValidatorErrorsService = (service = DefaultValidatorErrorsService) => ({
5546
5736
  provide: VALIDATOR_ERROR_SERVICE_TOKEN,
@@ -7123,6 +7313,8 @@ class SearchInputDirective {
7123
7313
  this.input._setShouldDisplayError(true);
7124
7314
  }
7125
7315
  _clear(event) {
7316
+ if (this.input.value === null)
7317
+ return;
7126
7318
  event?.preventDefault();
7127
7319
  event?.stopPropagation();
7128
7320
  this.input._updateValue(null);
@@ -7339,13 +7531,13 @@ class SearchInputComponent extends DecoratedInputBase {
7339
7531
  this.searchInput = inject(SEARCH_INPUT_TOKEN);
7340
7532
  }
7341
7533
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SearchInputComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
7342
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: SearchInputComponent, isStandalone: true, selector: "et-search-input", host: { classAttribute: "et-search-input" }, usesInheritance: true, hostDirectives: [{ directive: SearchInputDirective }, { directive: InputDirective, inputs: ["autocomplete", "autocomplete", "placeholder", "placeholder"] }], ngImport: i0, template: "<ng-content select=\"[etInputPrefix]\" />\n\n<input\n [attr.id]=\"input.id\"\n [attr.aria-labelledby]=\"input.labelId$ | async\"\n [required]=\"input.required$ | async\"\n [disabled]=\"input.disabled$ | async\"\n [attr.autocomplete]=\"input.autocomplete || null\"\n [attr.placeholder]=\"input.placeholder || null\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n (input)=\"searchInput._onInputInteraction($event)\"\n (blur)=\"searchInput._controlTouched()\"\n (keyup.escape)=\"searchInput._clear($event)\"\n class=\"et-input-native-control et-search-input-native-control\"\n type=\"search\"\n etNativeInputRef\n/>\n\n<ng-content select=\"[etInputSuffix]\" />\n", styles: [".et-search-input input[type=search]::-webkit-search-cancel-button,.et-search-input input[type=search]::-webkit-search-decoration{-webkit-appearance:none}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NativeInputRefDirective, selector: "input[etNativeInputRef], textarea[etNativeInputRef], select[etNativeInputRef], button[etNativeInputRef]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7534
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: SearchInputComponent, isStandalone: true, selector: "et-search-input", host: { classAttribute: "et-search-input" }, usesInheritance: true, hostDirectives: [{ directive: SearchInputDirective }, { directive: InputDirective, inputs: ["autocomplete", "autocomplete", "placeholder", "placeholder"] }], ngImport: i0, template: "<ng-content select=\"[etInputPrefix]\" />\n\n<input\n [attr.id]=\"input.id\"\n [attr.aria-labelledby]=\"input.labelId$ | async\"\n [required]=\"input.required$ | async\"\n [disabled]=\"input.disabled$ | async\"\n [attr.autocomplete]=\"input.autocomplete || null\"\n [attr.placeholder]=\"input.placeholder || null\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n (input)=\"searchInput._onInputInteraction($event)\"\n (blur)=\"searchInput._controlTouched()\"\n (keydown.escape)=\"searchInput._clear($event)\"\n class=\"et-input-native-control et-search-input-native-control\"\n type=\"search\"\n etNativeInputRef\n/>\n\n<ng-content select=\"[etInputSuffix]\" />\n", styles: [".et-search-input input[type=search]::-webkit-search-cancel-button,.et-search-input input[type=search]::-webkit-search-decoration{-webkit-appearance:none}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NativeInputRefDirective, selector: "input[etNativeInputRef], textarea[etNativeInputRef], select[etNativeInputRef], button[etNativeInputRef]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
7343
7535
  }
7344
7536
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: SearchInputComponent, decorators: [{
7345
7537
  type: Component,
7346
7538
  args: [{ selector: 'et-search-input', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
7347
7539
  class: 'et-search-input',
7348
- }, imports: [AsyncPipe, NativeInputRefDirective], hostDirectives: [SearchInputDirective, { directive: InputDirective, inputs: ['autocomplete', 'placeholder'] }], template: "<ng-content select=\"[etInputPrefix]\" />\n\n<input\n [attr.id]=\"input.id\"\n [attr.aria-labelledby]=\"input.labelId$ | async\"\n [required]=\"input.required$ | async\"\n [disabled]=\"input.disabled$ | async\"\n [attr.autocomplete]=\"input.autocomplete || null\"\n [attr.placeholder]=\"input.placeholder || null\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n (input)=\"searchInput._onInputInteraction($event)\"\n (blur)=\"searchInput._controlTouched()\"\n (keyup.escape)=\"searchInput._clear($event)\"\n class=\"et-input-native-control et-search-input-native-control\"\n type=\"search\"\n etNativeInputRef\n/>\n\n<ng-content select=\"[etInputSuffix]\" />\n", styles: [".et-search-input input[type=search]::-webkit-search-cancel-button,.et-search-input input[type=search]::-webkit-search-decoration{-webkit-appearance:none}\n"] }]
7540
+ }, imports: [AsyncPipe, NativeInputRefDirective], hostDirectives: [SearchInputDirective, { directive: InputDirective, inputs: ['autocomplete', 'placeholder'] }], template: "<ng-content select=\"[etInputPrefix]\" />\n\n<input\n [attr.id]=\"input.id\"\n [attr.aria-labelledby]=\"input.labelId$ | async\"\n [required]=\"input.required$ | async\"\n [disabled]=\"input.disabled$ | async\"\n [attr.autocomplete]=\"input.autocomplete || null\"\n [attr.placeholder]=\"input.placeholder || null\"\n [attr.aria-describedby]=\"input.describedBy$ | async\"\n (input)=\"searchInput._onInputInteraction($event)\"\n (blur)=\"searchInput._controlTouched()\"\n (keydown.escape)=\"searchInput._clear($event)\"\n class=\"et-input-native-control et-search-input-native-control\"\n type=\"search\"\n etNativeInputRef\n/>\n\n<ng-content select=\"[etInputSuffix]\" />\n", styles: [".et-search-input input[type=search]::-webkit-search-cancel-button,.et-search-input input[type=search]::-webkit-search-decoration{-webkit-appearance:none}\n"] }]
7349
7541
  }] });
7350
7542
 
7351
7543
  class TextInputComponent extends DecoratedInputBase {
@@ -8542,8 +8734,14 @@ class ComboboxDirective {
8542
8734
  if (keyCode === ESCAPE) {
8543
8735
  if (isOpen) {
8544
8736
  result.overlayOperation = 'close';
8737
+ event.preventDefault();
8738
+ event.stopPropagation();
8545
8739
  }
8546
8740
  else if (!isMultiple) {
8741
+ if (this.currentFilter) {
8742
+ event.preventDefault();
8743
+ event.stopPropagation();
8744
+ }
8547
8745
  result.setFilter = '';
8548
8746
  result.optionAction = 'clear';
8549
8747
  }
@@ -9516,6 +9714,7 @@ class SelectDirective {
9516
9714
  }
9517
9715
  else if (keyCode === ESCAPE && !hasModifierKey(event)) {
9518
9716
  event.preventDefault();
9717
+ event.stopPropagation();
9519
9718
  this.unmountSelectBody();
9520
9719
  }
9521
9720
  else if (keyCode === ENTER || keyCode === SPACE) {
@@ -10313,10 +10512,10 @@ const getPointerPositionOnPage = (event, id) => {
10313
10512
  let point;
10314
10513
  if (isTouchEvent(event)) {
10315
10514
  if (typeof id === 'number') {
10316
- point = findMatchingTouch(event.touches, id) || findMatchingTouch(event.changedTouches, id);
10515
+ point = findMatchingTouch(event.touches, id) || findMatchingTouch(event.changedTouches, id) || null;
10317
10516
  }
10318
10517
  else {
10319
- point = event.touches[0] || event.changedTouches[0];
10518
+ point = event.touches[0] || event.changedTouches[0] || null;
10320
10519
  }
10321
10520
  }
10322
10521
  else {
@@ -10737,11 +10936,11 @@ class MasonryComponent {
10737
10936
  isInitialized: false,
10738
10937
  };
10739
10938
  this._getLowestColumn = (columnHeights) => {
10740
- let lowestColumnHeight = columnHeights[0][0];
10939
+ let lowestColumnHeight = columnHeights[0]?.[0] ?? 0;
10741
10940
  let lowestColumnIndex = 0;
10742
10941
  for (let i = 0; i < columnHeights.length; i++) {
10743
- const columnHeight = columnHeights[i][0];
10744
- if (columnHeight < lowestColumnHeight) {
10942
+ const columnHeight = columnHeights[i]?.[0];
10943
+ if (columnHeight !== undefined && columnHeight < lowestColumnHeight) {
10745
10944
  lowestColumnHeight = columnHeight;
10746
10945
  lowestColumnIndex = i;
10747
10946
  }
@@ -10749,11 +10948,11 @@ class MasonryComponent {
10749
10948
  return { lowestColumnHeight, lowestColumnIndex };
10750
10949
  };
10751
10950
  this._getHighestColumn = (columnHeights) => {
10752
- let highestColumnHeight = columnHeights[0][0];
10951
+ let highestColumnHeight = columnHeights[0]?.[0] ?? 0;
10753
10952
  let highestColumnIndex = 0;
10754
10953
  for (let i = 0; i < columnHeights.length; i++) {
10755
- const columnHeight = columnHeights[i][0];
10756
- if (columnHeight >= highestColumnHeight) {
10954
+ const columnHeight = columnHeights[i]?.[0];
10955
+ if (columnHeight !== undefined && columnHeight >= highestColumnHeight) {
10757
10956
  highestColumnHeight = columnHeight;
10758
10957
  highestColumnIndex = i;
10759
10958
  }
@@ -10854,6 +11053,9 @@ class MasonryComponent {
10854
11053
  const state = this._state;
10855
11054
  for (let itemIndex = fromIndex; itemIndex < items.length; itemIndex++) {
10856
11055
  const item = items[itemIndex];
11056
+ if (!item) {
11057
+ continue;
11058
+ }
10857
11059
  const initialItemDimensions = item.initialDimensions;
10858
11060
  const updatedDimensions = item.dimensions;
10859
11061
  if (!initialItemDimensions || !updatedDimensions) {
@@ -10985,7 +11187,7 @@ class PaginationHeadService {
10985
11187
  const element = this._getCanonicalElement(true);
10986
11188
  element.setAttribute('rel', 'canonical');
10987
11189
  element.setAttribute('href', canonicalUrl);
10988
- this._head.appendChild(element);
11190
+ this._head?.appendChild(element);
10989
11191
  }
10990
11192
  }
10991
11193
  _getCanonicalElement(createIfNotExisting) {
@@ -10996,7 +11198,7 @@ class PaginationHeadService {
10996
11198
  return element;
10997
11199
  }
10998
11200
  _removeCanonicalElement(element) {
10999
- this._head.removeChild(element);
11201
+ this._head?.removeChild(element);
11000
11202
  }
11001
11203
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: PaginationHeadService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
11002
11204
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: PaginationHeadService }); }
@@ -11576,7 +11778,7 @@ class QueryErrorComponent {
11576
11778
  extractQuery(this.host.query)?.execute({ skipCache: true });
11577
11779
  }
11578
11780
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: QueryErrorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
11579
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: QueryErrorComponent, isStandalone: true, selector: "et-query-error", host: { properties: { "class.et-query-error--can-be-retried": "canBeRetried()", "class.et-query-error--is-list": "isList()" }, classAttribute: "et-query-error" }, hostDirectives: [{ directive: QueryErrorDirective, inputs: ["error", "error", "query", "query"] }], ngImport: i0, template: "<ng-container *ngIf=\"errorList() as errorList\">\n <h3 class=\"et-query-error-title\">{{ errorList.title }}</h3>\n\n <p *ngIf=\"!errorList.isList\" class=\"et-query-error-message\">{{ errorList.items[0].message }}</p>\n\n <ul *ngIf=\"errorList.isList\" class=\"et-query-error-list\">\n <li *ngFor=\"let item of errorList.items; trackBy: trackByFn\" class=\"et-query-error-list-item\">\n {{ item.message }}\n </li>\n </ul>\n\n <button *ngIf=\"errorList.canBeRetried\" (click)=\"retry()\" class=\"et-query-error-retry-button\">Retry</button>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11781
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.5", type: QueryErrorComponent, isStandalone: true, selector: "et-query-error", host: { properties: { "class.et-query-error--can-be-retried": "canBeRetried()", "class.et-query-error--is-list": "isList()" }, classAttribute: "et-query-error" }, hostDirectives: [{ directive: QueryErrorDirective, inputs: ["error", "error", "query", "query"] }], ngImport: i0, template: "<ng-container *ngIf=\"errorList() as errorList\">\n <h3 class=\"et-query-error-title\">{{ errorList.title }}</h3>\n\n <p *ngIf=\"!errorList.isList\" class=\"et-query-error-message\">{{ errorList.items[0]!.message }}</p>\n\n <ul *ngIf=\"errorList.isList\" class=\"et-query-error-list\">\n <li *ngFor=\"let item of errorList.items; trackBy: trackByFn\" class=\"et-query-error-list-item\">\n {{ item.message }}\n </li>\n </ul>\n\n <button *ngIf=\"errorList.canBeRetried\" (click)=\"retry()\" class=\"et-query-error-retry-button\">Retry</button>\n</ng-container>\n", dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
11580
11782
  }
11581
11783
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImport: i0, type: QueryErrorComponent, decorators: [{
11582
11784
  type: Component,
@@ -11584,7 +11786,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.5", ngImpor
11584
11786
  class: 'et-query-error',
11585
11787
  '[class.et-query-error--can-be-retried]': 'canBeRetried()',
11586
11788
  '[class.et-query-error--is-list]': 'isList()',
11587
- }, imports: [NgIf, NgFor], hostDirectives: [{ directive: QueryErrorDirective, inputs: ['error', 'query'] }], template: "<ng-container *ngIf=\"errorList() as errorList\">\n <h3 class=\"et-query-error-title\">{{ errorList.title }}</h3>\n\n <p *ngIf=\"!errorList.isList\" class=\"et-query-error-message\">{{ errorList.items[0].message }}</p>\n\n <ul *ngIf=\"errorList.isList\" class=\"et-query-error-list\">\n <li *ngFor=\"let item of errorList.items; trackBy: trackByFn\" class=\"et-query-error-list-item\">\n {{ item.message }}\n </li>\n </ul>\n\n <button *ngIf=\"errorList.canBeRetried\" (click)=\"retry()\" class=\"et-query-error-retry-button\">Retry</button>\n</ng-container>\n" }]
11789
+ }, imports: [NgIf, NgFor], hostDirectives: [{ directive: QueryErrorDirective, inputs: ['error', 'query'] }], template: "<ng-container *ngIf=\"errorList() as errorList\">\n <h3 class=\"et-query-error-title\">{{ errorList.title }}</h3>\n\n <p *ngIf=\"!errorList.isList\" class=\"et-query-error-message\">{{ errorList.items[0]!.message }}</p>\n\n <ul *ngIf=\"errorList.isList\" class=\"et-query-error-list\">\n <li *ngFor=\"let item of errorList.items; trackBy: trackByFn\" class=\"et-query-error-list-item\">\n {{ item.message }}\n </li>\n </ul>\n\n <button *ngIf=\"errorList.canBeRetried\" (click)=\"retry()\" class=\"et-query-error-retry-button\">Retry</button>\n</ng-container>\n" }]
11588
11790
  }] });
11589
11791
 
11590
11792
  class ScrollableComponent {
@@ -14288,5 +14490,5 @@ const FLOATING_UI_PLACEMENTS = [
14288
14490
  * Generated bundle index. Do not edit.
14289
14491
  */
14290
14492
 
14291
- export { ACCORDION_COMPONENT, ACCORDION_HINT_WRAPPER_DIRECTIVE, ACCORDION_LABEL_WRAPPER_DIRECTIVE, AccordionComponent, AccordionGroupComponent, AccordionHintDirective, AccordionHintWrapperDirective, AccordionImports, AccordionLabelDirective, AccordionLabelWrapperDirective, ActiveTabUnderlineBarManager, ActiveTabUnderlineDirective, AutosizeTextareaDirective, BOTTOM_SHEET_CONFIG, BOTTOM_SHEET_DATA, BOTTOM_SHEET_DEFAULT_CONFIG, BOTTOM_SHEET_DEFAULT_OPTIONS, BOTTOM_SHEET_MIN_SWIPE_TO_CLOSE_LENGTH, BOTTOM_SHEET_MIN_VELOCITY_TO_CLOSE, BOTTOM_SHEET_SCROLL_STRATEGY, BOTTOM_SHEET_SCROLL_STRATEGY_PROVIDER, BOTTOM_SHEET_SCROLL_STRATEGY_PROVIDER_FACTORY, BRACKET_CONFIG_TOKEN, BRACKET_DEFAULT_CONFIG, BRACKET_MATCH_ID_TOKEN, BRACKET_ROUND_ID_TOKEN, BRACKET_TOKEN, BottomSheetContainerBaseComponent, BottomSheetContainerComponent, BottomSheetDragHandleComponent, BottomSheetImports, BottomSheetRef, BottomSheetService, BottomSheetServiceBase, BottomSheetSwipeHandlerService, BottomSheetTitleDirective, Bracket, BracketComponent, BracketImports, BracketMatchComponent, BracketMatchDirective, BracketRoundDirective, BracketRoundHeaderComponent, ButtonComponent, ButtonDirective, ButtonImports, CDK_MENU, CHECKBOX_FIELD_TOKEN, CHECKBOX_GROUP_CONTROL_TOKEN, CHECKBOX_GROUP_TOKEN, CHECKBOX_TOKEN, COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN, COMBOBOX_BODY_ERROR_TEMPLATE_TOKEN, COMBOBOX_BODY_LOADING_TEMPLATE_TOKEN, COMBOBOX_BODY_MORE_ITEMS_HINT_TEMPLATE_TOKEN, COMBOBOX_CONFIG_TOKEN, COMBOBOX_DEFAULT_CONFIG, COMBOBOX_OPTION_TEMPLATE_TOKEN, COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN, COMBOBOX_TOKEN, CdkContextMenuTrigger, CdkMenu, CdkMenuBar, CdkMenuBase, CdkMenuGroup, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio, CdkMenuItemSelectable, CdkMenuModule, CdkMenuTrigger, CdkMenuTriggerBase, CdkTargetMenuAim, CellDefDirective, CellDirective, CheckboxComponent, CheckboxDirective, CheckboxFieldComponent, CheckboxFieldDirective, CheckboxGroupComponent, CheckboxGroupControlDirective, CheckboxGroupDirective, CheckboxImports, ChevronIconComponent, ColumnDefDirective, ComboboxBodyEmptyTemplateDirective, ComboboxBodyErrorTemplateDirective, ComboboxBodyLoadingTemplateDirective, ComboboxBodyMoreItemsHintTemplateDirective, ComboboxComponent, ComboboxDirective, ComboboxImports, ComboboxOptionTemplateDirective, ComboboxSelectedOptionTemplateDirective, ContextMenuTracker, DATE_INPUT_FORMAT_TOKEN, DATE_INPUT_TOKEN, DEFAULT_DATE_INPUT_FORMAT, DIALOG_CONFIG, DIALOG_DATA, DIALOG_DEFAULT_CONFIG, DIALOG_DEFAULT_OPTIONS, DIALOG_SCROLL_STRATEGY, DIALOG_SCROLL_STRATEGY_PROVIDER, DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, DYNAMIC_FORM_FIELD_TOKEN, DYNAMIC_FORM_GROUP_TOKEN, DateInputComponent, DateInputDirective, DecoratedFormFieldBase, DecoratedInputBase, DefaultValidatorErrorsService, DialogCloseDirective, DialogContainerBaseComponent, DialogContainerComponent, DialogImports, DialogRef, DialogService, DialogServiceBase, DialogTitleDirective, DynamicFormFieldDirective, DynamicFormGroupDirective, DynamicOverlayService, DynamicOverlayTitleDirective, EMAIL_INPUT_TOKEN, ET_OVERLAY_BOTTOM_SHEET_CLASS, ET_OVERLAY_DIALOG_CLASS, ET_OVERLAY_FULL_SCREEN_DIALOG_CLASS, ET_OVERLAY_LEFT_SHEET_CLASS, ET_OVERLAY_RIGHT_SHEET_CLASS, ET_OVERLAY_TOP_SHEET_CLASS, EXPOSE_INPUT_VARS_TOKEN, EmailInputComponent, EmailInputDirective, ErrorComponent, ExposeInputVarsDirective, FILTER_OVERLAY_BACK_OR_CLOSE_TOKEN, FILTER_OVERLAY_LINK_TOKEN, FILTER_OVERLAY_REF, FILTER_OVERLAY_RESET_TOKEN, FILTER_OVERLAY_SUBMIT_TOKEN, FLOATING_UI_PLACEMENTS, FilterOverlayBackOrCloseDirective, FilterOverlayImports, FilterOverlayLinkDirective, FilterOverlayPageOutletComponent, FilterOverlayRef, FilterOverlayResetDirective, FilterOverlayService, FilterOverlaySubmitDirective, FooterCellDefDirective, FooterCellDirective, FooterRowComponent, FooterRowDefDirective, FormFieldStateService, FormGroupStateService, HeaderCellDefDirective, HeaderCellDirective, HeaderRowComponent, HeaderRowDefDirective, IMAGE_CONFIG_TOKEN, INPUT_PREFIX_TOKEN, INPUT_SUFFIX_TOKEN, INPUT_TOKEN, IconImports, IfInputEmptyDirective, IfInputFilledDirective, InlineTabBodyComponent, InlineTabBodyHostDirective, InlineTabChangeEvent, InlineTabComponent, InlineTabContentDirective, InlineTabHeaderComponent, InlineTabLabelDirective, InlineTabLabelWrapperDirective, InlineTabsComponent, InputBase, InputDirective, InputFieldComponent, InputImports, InputPrefixDirective, InputStateService, InputSuffixDirective, LABEL_TOKEN, LabelComponent, LabelImports, LabelSuffixDirective, MASONRY_ITEM_TOKEN, MAX_SAFE_INTEGER, MENU_AIM, MENU_STACK, MENU_TRIGGER, MasonryComponent, MasonryImports, MasonryItemComponent, MenuStack, NATIVE_INPUT_REF_TOKEN, NATIVE_SELECT_INPUT_TOKEN, NATIVE_SELECT_OPTION_TOKEN, NUMBER_INPUT_TOKEN, NativeInputRefDirective, NativeSelectImports, NativeSelectInputComponent, NativeSelectInputDirective, NativeSelectOptionComponent, NativeSelectOptionDirective, NavTabLinkComponent, NavTabsComponent, NavTabsOutletComponent, NoDataRowDirective, NumberInputComponent, NumberInputDirective, OVERLAY_CONFIG, OVERLAY_DATA, OVERLAY_DEFAULT_CONFIG, OVERLAY_DEFAULT_OPTIONS, OVERLAY_SCROLL_STRATEGY, OVERLAY_SCROLL_STRATEGY_PROVIDER, OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY, OVERLAY_STATE, OverlayCloseDirective, OverlayContainerComponent, OverlayImports, OverlayPositionBuilder, OverlayRef, OverlayService, OverlayTitleDirective, PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER, PARENT_OR_NEW_MENU_STACK_PROVIDER, PASSWORD_INPUT_TOKEN, PROGRESS_SPINNER_DEFAULT_OPTIONS, PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, PaginatedTabHeaderDirective, PaginationComponent, PaginationImports, PasswordInputComponent, PasswordInputDirective, PasswordInputToggleComponent, PictureComponent, PictureDataDirective, PointerFocusTracker, ProgressSpinnerComponent, QUERY_ERROR_TOKEN, QueryButtonComponent, QueryButtonDirective, QueryErrorComponent, QueryErrorDirective, RADIO_FIELD_TOKEN, RADIO_GROUP_TOKEN, RADIO_TOKEN, RadioComponent, RadioDirective, RadioFieldComponent, RadioFieldDirective, RadioGroupComponent, RadioGroupDirective, RadioImports, RecycleRowsDirective, RowComponent, RowDefDirective, SEARCH_INPUT_TOKEN, SEGMENTED_BUTTON_FIELD_TOKEN, SEGMENTED_BUTTON_GROUP_TOKEN, SEGMENTED_BUTTON_TOKEN, SELECTION_LIST_FIELD, SELECTION_LIST_OPTION, SELECT_BODY_TOKEN, SELECT_FIELD_TOKEN, SELECT_OPTION_TOKEN, SELECT_TOKEN, SLIDE_TOGGLE_TOKEN, SORT_DEFAULT_OPTIONS, SORT_HEADER_COLUMN_DEF, SORT_HEADER_INTL_PROVIDER, SORT_HEADER_INTL_PROVIDER_FACTORY, STATIC_FORM_FIELD_TOKEN, STATIC_FORM_GROUP_TOKEN, ScrollableComponent, ScrollableImports, SearchInputClearComponent, SearchInputComponent, SearchInputDirective, SegmentedButtonComponent, SegmentedButtonDirective, SegmentedButtonFieldComponent, SegmentedButtonFieldDirective, SegmentedButtonGroupComponent, SegmentedButtonGroupDirective, SegmentedButtonImports, SelectBodyComponent, SelectBodyDirective, SelectComponent, SelectDirective, SelectFieldComponent, SelectFieldDirective, SelectImports, SelectOptionComponent, SelectOptionDirective, SelectionListFieldComponent, SelectionListFieldDirective, SelectionListImports, SelectionListOptionComponent, SelectionListOptionDirective, SkeletonComponent, SkeletonImports, SkeletonItemComponent, SlideToggleComponent, SlideToggleDirective, SlideToggleFieldComponent, SlideToggleImports, SliderComponent, SliderFieldComponent, SliderImports, SortDirective, SortHeaderComponent, SortHeaderIntl, SortImports, StaticFormFieldDirective, StaticFormGroupDirective, SwipeHandlerService, TAB, TABS_CONFIG, TAB_CONTENT, TAB_GROUP, TAB_LABEL, TEXTAREA_INPUT_TOKEN, TEXT_INPUT_TOKEN, TOGGLETIP, TOGGLETIP_CONFIG, TOGGLETIP_DEFAULT_CONFIG, TOGGLETIP_DIRECTIVE, TOGGLETIP_TEMPLATE, TOGGLETIP_TEXT, TOOLTIP, TOOLTIP_CONFIG, TOOLTIP_DEFAULT_CONFIG, TOOLTIP_DIRECTIVE, TOOLTIP_TEMPLATE, TOOLTIP_TEXT, TabImports, TableBusyDirective, TableBusyOutletDirective, TableComponent, TableDataSource, TableImports, TargetMenuAim, TextColumnComponent, TextInputComponent, TextInputDirective, TextareaInputComponent, TextareaInputDirective, ToggletipComponent, ToggletipDirective, ToggletipImports, TooltipComponent, TooltipDirective, TooltipImports, VALIDATOR_ERROR_SERVICE_TOKEN, WRITEABLE_INPUT_TOKEN, WRITEABLE_INPUT_VALUE_ACCESSOR, WriteableInputDirective, _MAT_INK_BAR_POSITIONER, _MAT_INK_BAR_POSITIONER_FACTORY, accordionAnimations, convertHttpStatusCodeToMessage, createBottomSheetConfig, createBracketConfig, createComboboxConfig, createDialogConfig, createOverlayConfig, createToggletipConfig, createTooltipConfig, getClosestBottomSheet, getClosestDialog, getClosestOverlay, isOptionDisabled, isUpperBracketMatch, normalizeRoundType, orderRounds, orderRoundsByRoundNumber, paginate, provideBottomSheet, provideBottomSheetDefaultConfig, provideBracketConfig, provideComboboxConfig, provideDateFormat, provideDialog, provideDialogDefaultConfig, provideFilterOverlay, provideImageConfig, provideOverlay, provideOverlayDefaultConfig, provideSort, provideToggletipConfig, provideTooltipConfig, provideValidatorErrorsService, tabAnimations };
14493
+ export { ACCORDION_COMPONENT, ACCORDION_HINT_WRAPPER_DIRECTIVE, ACCORDION_LABEL_WRAPPER_DIRECTIVE, AccordionComponent, AccordionGroupComponent, AccordionHintDirective, AccordionHintWrapperDirective, AccordionImports, AccordionLabelDirective, AccordionLabelWrapperDirective, ActiveTabUnderlineBarManager, ActiveTabUnderlineDirective, AutosizeTextareaDirective, BOTTOM_SHEET_CONFIG, BOTTOM_SHEET_DATA, BOTTOM_SHEET_DEFAULT_CONFIG, BOTTOM_SHEET_DEFAULT_OPTIONS, BOTTOM_SHEET_MIN_SWIPE_TO_CLOSE_LENGTH, BOTTOM_SHEET_MIN_VELOCITY_TO_CLOSE, BOTTOM_SHEET_SCROLL_STRATEGY, BOTTOM_SHEET_SCROLL_STRATEGY_PROVIDER, BOTTOM_SHEET_SCROLL_STRATEGY_PROVIDER_FACTORY, BRACKET_CONFIG_TOKEN, BRACKET_DEFAULT_CONFIG, BRACKET_MATCH_ID_TOKEN, BRACKET_ROUND_ID_TOKEN, BRACKET_TOKEN, BottomSheetContainerBaseComponent, BottomSheetContainerComponent, BottomSheetDragHandleComponent, BottomSheetImports, BottomSheetRef, BottomSheetService, BottomSheetServiceBase, BottomSheetSwipeHandlerService, BottomSheetTitleDirective, Bracket, BracketComponent, BracketImports, BracketMatchComponent, BracketMatchDirective, BracketRoundDirective, BracketRoundHeaderComponent, ButtonComponent, ButtonDirective, ButtonImports, CDK_MENU, CHECKBOX_FIELD_TOKEN, CHECKBOX_GROUP_CONTROL_TOKEN, CHECKBOX_GROUP_TOKEN, CHECKBOX_TOKEN, COMBOBOX_BODY_EMPTY_TEMPLATE_TOKEN, COMBOBOX_BODY_ERROR_TEMPLATE_TOKEN, COMBOBOX_BODY_LOADING_TEMPLATE_TOKEN, COMBOBOX_BODY_MORE_ITEMS_HINT_TEMPLATE_TOKEN, COMBOBOX_CONFIG_TOKEN, COMBOBOX_DEFAULT_CONFIG, COMBOBOX_OPTION_TEMPLATE_TOKEN, COMBOBOX_SELECTED_OPTION_TEMPLATE_TOKEN, COMBOBOX_TOKEN, CdkContextMenuTrigger, CdkMenu, CdkMenuBar, CdkMenuBase, CdkMenuGroup, CdkMenuItem, CdkMenuItemCheckbox, CdkMenuItemRadio, CdkMenuItemSelectable, CdkMenuModule, CdkMenuTrigger, CdkMenuTriggerBase, CdkTargetMenuAim, CellDefDirective, CellDirective, CheckboxComponent, CheckboxDirective, CheckboxFieldComponent, CheckboxFieldDirective, CheckboxGroupComponent, CheckboxGroupControlDirective, CheckboxGroupDirective, CheckboxImports, ChevronIconComponent, ColumnDefDirective, ComboboxBodyEmptyTemplateDirective, ComboboxBodyErrorTemplateDirective, ComboboxBodyLoadingTemplateDirective, ComboboxBodyMoreItemsHintTemplateDirective, ComboboxComponent, ComboboxDirective, ComboboxImports, ComboboxOptionTemplateDirective, ComboboxSelectedOptionTemplateDirective, ContextMenuTracker, DATE_INPUT_FORMAT_TOKEN, DATE_INPUT_TOKEN, DEFAULT_DATE_INPUT_FORMAT, DIALOG_CONFIG, DIALOG_DATA, DIALOG_DEFAULT_CONFIG, DIALOG_DEFAULT_OPTIONS, DIALOG_SCROLL_STRATEGY, DIALOG_SCROLL_STRATEGY_PROVIDER, DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY, DYNAMIC_FORM_FIELD_TOKEN, DYNAMIC_FORM_GROUP_TOKEN, DateInputComponent, DateInputDirective, DecoratedFormFieldBase, DecoratedInputBase, DefaultValidatorErrorsService, DialogCloseDirective, DialogContainerBaseComponent, DialogContainerComponent, DialogImports, DialogRef, DialogService, DialogServiceBase, DialogTitleDirective, DynamicFormFieldDirective, DynamicFormGroupDirective, DynamicOverlayService, DynamicOverlayTitleDirective, EMAIL_INPUT_TOKEN, ET_OVERLAY_BOTTOM_SHEET_CLASS, ET_OVERLAY_DIALOG_CLASS, ET_OVERLAY_FULL_SCREEN_DIALOG_CLASS, ET_OVERLAY_LEFT_SHEET_CLASS, ET_OVERLAY_RIGHT_SHEET_CLASS, ET_OVERLAY_TOP_SHEET_CLASS, EXPOSE_INPUT_VARS_TOKEN, EmailInputComponent, EmailInputDirective, ErrorComponent, ExposeInputVarsDirective, FILTER_OVERLAY_BACK_OR_CLOSE_TOKEN, FILTER_OVERLAY_LINK_TOKEN, FILTER_OVERLAY_REF, FILTER_OVERLAY_RESET_TOKEN, FILTER_OVERLAY_SUBMIT_TOKEN, FLOATING_UI_PLACEMENTS, FilterOverlayBackOrCloseDirective, FilterOverlayImports, FilterOverlayLinkDirective, FilterOverlayPageOutletComponent, FilterOverlayRef, FilterOverlayResetDirective, FilterOverlayService, FilterOverlaySubmitDirective, FooterCellDefDirective, FooterCellDirective, FooterRowComponent, FooterRowDefDirective, FormFieldStateService, FormGroupStateService, HeaderCellDefDirective, HeaderCellDirective, HeaderRowComponent, HeaderRowDefDirective, IMAGE_CONFIG_TOKEN, INPUT_PREFIX_TOKEN, INPUT_SUFFIX_TOKEN, INPUT_TOKEN, IconImports, IfInputEmptyDirective, IfInputFilledDirective, InlineTabBodyComponent, InlineTabBodyHostDirective, InlineTabChangeEvent, InlineTabComponent, InlineTabContentDirective, InlineTabHeaderComponent, InlineTabLabelDirective, InlineTabLabelWrapperDirective, InlineTabsComponent, InputBase, InputDirective, InputFieldComponent, InputImports, InputPrefixDirective, InputStateService, InputSuffixDirective, LABEL_TOKEN, LabelComponent, LabelImports, LabelSuffixDirective, MASONRY_ITEM_TOKEN, MAX_SAFE_INTEGER, MENU_AIM, MENU_STACK, MENU_TRIGGER, MasonryComponent, MasonryImports, MasonryItemComponent, MenuStack, NATIVE_INPUT_REF_TOKEN, NATIVE_SELECT_INPUT_TOKEN, NATIVE_SELECT_OPTION_TOKEN, NUMBER_INPUT_TOKEN, NativeInputRefDirective, NativeSelectImports, NativeSelectInputComponent, NativeSelectInputDirective, NativeSelectOptionComponent, NativeSelectOptionDirective, NavTabLinkComponent, NavTabsComponent, NavTabsOutletComponent, NoDataRowDirective, NumberInputComponent, NumberInputDirective, OVERLAY_CONFIG, OVERLAY_DATA, OVERLAY_DEFAULT_CONFIG, OVERLAY_DEFAULT_OPTIONS, OVERLAY_SCROLL_STRATEGY, OVERLAY_SCROLL_STRATEGY_PROVIDER, OVERLAY_SCROLL_STRATEGY_PROVIDER_FACTORY, OVERLAY_STATE, OverlayCloseDirective, OverlayContainerComponent, OverlayImports, OverlayPositionBuilder, OverlayRef, OverlayService, OverlayTitleDirective, PARENT_OR_NEW_INLINE_MENU_STACK_PROVIDER, PARENT_OR_NEW_MENU_STACK_PROVIDER, PASSWORD_INPUT_TOKEN, PROGRESS_SPINNER_DEFAULT_OPTIONS, PROGRESS_SPINNER_DEFAULT_OPTIONS_FACTORY, PaginatedTabHeaderDirective, PaginationComponent, PaginationImports, PasswordInputComponent, PasswordInputDirective, PasswordInputToggleComponent, PictureComponent, PictureDataDirective, PointerFocusTracker, ProgressSpinnerComponent, QUERY_ERROR_TOKEN, QueryButtonComponent, QueryButtonDirective, QueryErrorComponent, QueryErrorDirective, RADIO_FIELD_TOKEN, RADIO_GROUP_TOKEN, RADIO_TOKEN, RICH_FILTER_BUTTON_SLOT_TOKEN, RICH_FILTER_BUTTON_TOKEN, RICH_FILTER_CONTENT_TOKEN, RICH_FILTER_TOP_TOKEN, RadioComponent, RadioDirective, RadioFieldComponent, RadioFieldDirective, RadioGroupComponent, RadioGroupDirective, RadioImports, RecycleRowsDirective, RichFilterButtonDirective, RichFilterButtonSlotDirective, RichFilterContentDirective, RichFilterHostComponent, RichFilterImports, RichFilterTopDirective, RowComponent, RowDefDirective, SEARCH_INPUT_TOKEN, SEGMENTED_BUTTON_FIELD_TOKEN, SEGMENTED_BUTTON_GROUP_TOKEN, SEGMENTED_BUTTON_TOKEN, SELECTION_LIST_FIELD, SELECTION_LIST_OPTION, SELECT_BODY_TOKEN, SELECT_FIELD_TOKEN, SELECT_OPTION_TOKEN, SELECT_TOKEN, SLIDE_TOGGLE_TOKEN, SORT_DEFAULT_OPTIONS, SORT_HEADER_COLUMN_DEF, SORT_HEADER_INTL_PROVIDER, SORT_HEADER_INTL_PROVIDER_FACTORY, STATIC_FORM_FIELD_TOKEN, STATIC_FORM_GROUP_TOKEN, ScrollableComponent, ScrollableImports, SearchInputClearComponent, SearchInputComponent, SearchInputDirective, SegmentedButtonComponent, SegmentedButtonDirective, SegmentedButtonFieldComponent, SegmentedButtonFieldDirective, SegmentedButtonGroupComponent, SegmentedButtonGroupDirective, SegmentedButtonImports, SelectBodyComponent, SelectBodyDirective, SelectComponent, SelectDirective, SelectFieldComponent, SelectFieldDirective, SelectImports, SelectOptionComponent, SelectOptionDirective, SelectionListFieldComponent, SelectionListFieldDirective, SelectionListImports, SelectionListOptionComponent, SelectionListOptionDirective, SkeletonComponent, SkeletonImports, SkeletonItemComponent, SlideToggleComponent, SlideToggleDirective, SlideToggleFieldComponent, SlideToggleImports, SliderComponent, SliderFieldComponent, SliderImports, SortDirective, SortHeaderComponent, SortHeaderIntl, SortImports, StaticFormFieldDirective, StaticFormGroupDirective, SwipeHandlerService, TAB, TABS_CONFIG, TAB_CONTENT, TAB_GROUP, TAB_LABEL, TEXTAREA_INPUT_TOKEN, TEXT_INPUT_TOKEN, TOGGLETIP, TOGGLETIP_CONFIG, TOGGLETIP_DEFAULT_CONFIG, TOGGLETIP_DIRECTIVE, TOGGLETIP_TEMPLATE, TOGGLETIP_TEXT, TOOLTIP, TOOLTIP_CONFIG, TOOLTIP_DEFAULT_CONFIG, TOOLTIP_DIRECTIVE, TOOLTIP_TEMPLATE, TOOLTIP_TEXT, TabImports, TableBusyDirective, TableBusyOutletDirective, TableComponent, TableDataSource, TableImports, TargetMenuAim, TextColumnComponent, TextInputComponent, TextInputDirective, TextareaInputComponent, TextareaInputDirective, ToggletipComponent, ToggletipDirective, ToggletipImports, TooltipComponent, TooltipDirective, TooltipImports, VALIDATOR_ERROR_SERVICE_TOKEN, WRITEABLE_INPUT_TOKEN, WRITEABLE_INPUT_VALUE_ACCESSOR, WriteableInputDirective, _MAT_INK_BAR_POSITIONER, _MAT_INK_BAR_POSITIONER_FACTORY, accordionAnimations, convertHttpStatusCodeToMessage, createBottomSheetConfig, createBracketConfig, createComboboxConfig, createDialogConfig, createOverlayConfig, createToggletipConfig, createTooltipConfig, getClosestBottomSheet, getClosestDialog, getClosestOverlay, isOptionDisabled, isUpperBracketMatch, normalizeRoundType, orderRounds, orderRoundsByRoundNumber, paginate, provideBottomSheet, provideBottomSheetDefaultConfig, provideBracketConfig, provideComboboxConfig, provideDateFormat, provideDialog, provideDialogDefaultConfig, provideFilterOverlay, provideImageConfig, provideOverlay, provideOverlayDefaultConfig, provideSort, provideToggletipConfig, provideTooltipConfig, provideValidatorErrorsService, tabAnimations };
14292
14494
  //# sourceMappingURL=ethlete-cdk.mjs.map