@ethlete/core 0.2.0-next.9 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/esm2020/lib/components/public-api.mjs +2 -0
  2. package/esm2020/lib/components/structured-data/public-api.mjs +2 -0
  3. package/esm2020/lib/components/structured-data/structured-data.component.mjs +37 -0
  4. package/esm2020/lib/directives/animatable/animatable.directive.mjs +113 -0
  5. package/esm2020/lib/directives/animatable/public-api.mjs +2 -0
  6. package/esm2020/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +115 -0
  7. package/esm2020/lib/directives/animated-lifecycle/public-api.mjs +2 -0
  8. package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +3 -3
  9. package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +5 -5
  10. package/esm2020/lib/directives/let/let.directive.mjs +8 -8
  11. package/esm2020/lib/directives/observe-content/observe-content.directive.mjs +7 -7
  12. package/esm2020/lib/directives/observe-resize/observe-resize.directive.mjs +7 -7
  13. package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +11 -10
  14. package/esm2020/lib/directives/public-api.mjs +3 -2
  15. package/esm2020/lib/directives/repeat/repeat.directive.mjs +10 -11
  16. package/esm2020/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +3 -3
  17. package/esm2020/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +3 -3
  18. package/esm2020/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +3 -3
  19. package/esm2020/lib/directives/seo/seo.directive.mjs +3 -3
  20. package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +3 -3
  21. package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +3 -3
  22. package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +3 -3
  23. package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +3 -3
  24. package/esm2020/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +3 -3
  25. package/esm2020/lib/pipes/to-array/to-array.pipe.mjs +3 -3
  26. package/esm2020/lib/public-api.mjs +3 -1
  27. package/esm2020/lib/services/click-observer.service.mjs +6 -6
  28. package/esm2020/lib/services/content-observer.service.mjs +6 -6
  29. package/esm2020/lib/services/destroy.service.mjs +3 -3
  30. package/esm2020/lib/services/focus-visible.service.mjs +7 -7
  31. package/esm2020/lib/services/public-api.mjs +2 -1
  32. package/esm2020/lib/services/resize-observer.service.mjs +6 -6
  33. package/esm2020/lib/services/router-state.service.mjs +115 -0
  34. package/esm2020/lib/services/viewport.service.mjs +16 -16
  35. package/esm2020/lib/types/angular.types.mjs +36 -2
  36. package/esm2020/lib/utils/animation.utils.mjs +18 -0
  37. package/esm2020/lib/utils/clone.util.mjs +78 -0
  38. package/esm2020/lib/utils/cookie.util.mjs +48 -0
  39. package/esm2020/lib/utils/equal.util.mjs +118 -0
  40. package/esm2020/lib/utils/media-query-observable.util.mjs +18 -0
  41. package/esm2020/lib/utils/public-api.mjs +8 -2
  42. package/esm2020/lib/utils/reactive-binding.util.mjs +111 -0
  43. package/esm2020/lib/validators/is-array-not-empty.validator.mjs +9 -0
  44. package/esm2020/lib/validators/is-email.validator.mjs +10 -0
  45. package/esm2020/lib/validators/must-match.validator.mjs +19 -0
  46. package/esm2020/lib/validators/public-api.mjs +12 -0
  47. package/fesm2015/ethlete-core.mjs +963 -153
  48. package/fesm2015/ethlete-core.mjs.map +1 -1
  49. package/fesm2020/ethlete-core.mjs +961 -153
  50. package/fesm2020/ethlete-core.mjs.map +1 -1
  51. package/lib/components/public-api.d.ts +1 -0
  52. package/lib/components/structured-data/public-api.d.ts +1 -0
  53. package/lib/components/structured-data/structured-data.component.d.ts +11 -0
  54. package/lib/directives/animatable/animatable.directive.d.ts +22 -0
  55. package/lib/directives/animatable/public-api.d.ts +1 -0
  56. package/lib/directives/animated-lifecycle/animated-lifecycle.directive.d.ts +22 -0
  57. package/lib/directives/animated-lifecycle/public-api.d.ts +1 -0
  58. package/lib/directives/observe-content/observe-content.directive.d.ts +2 -2
  59. package/lib/directives/observe-resize/observe-resize.directive.d.ts +2 -2
  60. package/lib/directives/observe-scroll-state/observe-scroll-state.directive.d.ts +2 -2
  61. package/lib/directives/observe-scroll-state/observe-scroll-state.types.d.ts +1 -1
  62. package/lib/directives/public-api.d.ts +2 -1
  63. package/lib/directives/repeat/repeat.directive.d.ts +2 -3
  64. package/lib/directives/seo/seo.directive.types.d.ts +1 -1
  65. package/lib/pipes/normalize-match-participants/normalize-match-participants.types.d.ts +2 -2
  66. package/lib/public-api.d.ts +2 -0
  67. package/lib/services/public-api.d.ts +1 -0
  68. package/lib/services/router-state.service.d.ts +40 -0
  69. package/lib/services/viewport.types.d.ts +1 -1
  70. package/lib/types/angular.types.d.ts +14 -1
  71. package/lib/types/viewport.types.d.ts +2 -2
  72. package/lib/utils/animation.utils.d.ts +4 -0
  73. package/lib/utils/clone.util.d.ts +15 -0
  74. package/lib/utils/cookie.util.d.ts +5 -0
  75. package/lib/utils/equal.util.d.ts +27 -0
  76. package/lib/utils/media-query-observable.util.d.ts +5 -0
  77. package/lib/utils/public-api.d.ts +7 -1
  78. package/lib/utils/reactive-binding.util.d.ts +19 -0
  79. package/lib/validators/is-array-not-empty.validator.d.ts +3 -0
  80. package/lib/validators/is-email.validator.d.ts +3 -0
  81. package/lib/validators/must-match.validator.d.ts +3 -0
  82. package/lib/validators/public-api.d.ts +8 -0
  83. package/package.json +8 -6
  84. package/esm2020/lib/directives/destroy/destroy.directive.mjs +0 -22
  85. package/esm2020/lib/directives/destroy/public-api.mjs +0 -2
  86. package/lib/directives/destroy/destroy.directive.d.ts +0 -9
  87. package/lib/directives/destroy/public-api.d.ts +0 -1
@@ -1,12 +1,47 @@
1
1
  import * as i0 from '@angular/core';
2
- import { InjectionToken, Injectable, inject, Inject, Optional, ElementRef, EventEmitter, Directive, Output, Input, NgZone, HostBinding, Pipe } from '@angular/core';
2
+ import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, Injectable, ElementRef, Inject, Optional, isDevMode, Directive, EventEmitter, Output, NgZone, Pipe, QueryList } from '@angular/core';
3
+ import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
4
+ import { fromEvent, Observable, Subject, startWith, map, takeUntil, distinctUntilChanged, BehaviorSubject, filter, combineLatest, pairwise, debounceTime, shareReplay, tap, merge, skip, switchMap, take } from 'rxjs';
3
5
  import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
4
- import { fromEvent, Observable, Subject, BehaviorSubject, combineLatest, map, shareReplay, startWith, debounceTime, tap, takeUntil, take } from 'rxjs';
5
6
  import { DOCUMENT } from '@angular/common';
7
+ import { Router, NavigationEnd } from '@angular/router';
6
8
  import { __decorate, __metadata } from 'tslib';
7
9
  import * as i1 from '@angular/cdk/layout';
8
10
  import { debounceTime as debounceTime$1 } from 'rxjs/operators';
9
- import { Meta, Title } from '@angular/platform-browser';
11
+
12
+ class StructuredDataComponent {
13
+ constructor() {
14
+ this._sanitizer = inject(DomSanitizer);
15
+ }
16
+ set data(currentValue) {
17
+ this.jsonLD = this.getSafeHTML(currentValue);
18
+ }
19
+ getSafeHTML(value) {
20
+ const json = value ? JSON.stringify(value, null, 2).replace(/<\/script>/g, '<\\/script>') : '';
21
+ const html = `<script type="application/ld+json">${json}</script>`;
22
+ return this._sanitizer.bypassSecurityTrustHtml(html);
23
+ }
24
+ }
25
+ StructuredDataComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: StructuredDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
+ StructuredDataComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.1.4", type: StructuredDataComponent, isStandalone: true, selector: "et-structured-data", inputs: { data: "data" }, host: { properties: { "innerHTML": "this.jsonLD" }, styleAttribute: "display: none" }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: StructuredDataComponent, decorators: [{
28
+ type: Component,
29
+ args: [{
30
+ selector: 'et-structured-data',
31
+ standalone: true,
32
+ template: '',
33
+ changeDetection: ChangeDetectionStrategy.OnPush,
34
+ encapsulation: ViewEncapsulation.None,
35
+ host: {
36
+ style: 'display: none',
37
+ },
38
+ }]
39
+ }], propDecorators: { data: [{
40
+ type: Input
41
+ }], jsonLD: [{
42
+ type: HostBinding,
43
+ args: ['innerHTML']
44
+ }] } });
10
45
 
11
46
  const VIEWPORT_CONFIG = new InjectionToken('ViewportConfig');
12
47
  /**
@@ -55,9 +90,9 @@ class ClickObserverFactory {
55
90
  return fromEvent(document, 'click');
56
91
  }
57
92
  }
58
- ClickObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClickObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
59
- ClickObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClickObserverFactory, providedIn: 'root' });
60
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClickObserverFactory, decorators: [{
93
+ ClickObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ClickObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
94
+ ClickObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ClickObserverFactory, providedIn: 'root' });
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ClickObserverFactory, decorators: [{
61
96
  type: Injectable,
62
97
  args: [{ providedIn: 'root' }]
63
98
  }] });
@@ -111,9 +146,9 @@ class ClickObserverService {
111
146
  }
112
147
  }
113
148
  }
114
- ClickObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClickObserverService, deps: [{ token: ClickObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
115
- ClickObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClickObserverService, providedIn: 'root' });
116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClickObserverService, decorators: [{
149
+ ClickObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ClickObserverService, deps: [{ token: ClickObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
150
+ ClickObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ClickObserverService, providedIn: 'root' });
151
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ClickObserverService, decorators: [{
117
152
  type: Injectable,
118
153
  args: [{ providedIn: 'root' }]
119
154
  }], ctorParameters: function () { return [{ type: ClickObserverFactory }]; } });
@@ -124,9 +159,9 @@ class MutationObserverFactory {
124
159
  return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);
125
160
  }
126
161
  }
127
- MutationObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
128
- MutationObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });
129
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: MutationObserverFactory, decorators: [{
162
+ MutationObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
163
+ MutationObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: MutationObserverFactory, decorators: [{
130
165
  type: Injectable,
131
166
  args: [{ providedIn: 'root' }]
132
167
  }] });
@@ -186,9 +221,9 @@ class ContentObserverService {
186
221
  }
187
222
  }
188
223
  }
189
- ContentObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentObserverService, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
190
- ContentObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentObserverService, providedIn: 'root' });
191
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ContentObserverService, decorators: [{
224
+ ContentObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentObserverService, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
225
+ ContentObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentObserverService, providedIn: 'root' });
226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ContentObserverService, decorators: [{
192
227
  type: Injectable,
193
228
  args: [{ providedIn: 'root' }]
194
229
  }], ctorParameters: function () { return [{ type: MutationObserverFactory }]; } });
@@ -203,13 +238,16 @@ class DestroyService {
203
238
  this._destroy$.unsubscribe();
204
239
  }
205
240
  }
206
- DestroyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DestroyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
207
- DestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DestroyService });
208
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DestroyService, decorators: [{
241
+ DestroyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: DestroyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
242
+ DestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: DestroyService });
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: DestroyService, decorators: [{
209
244
  type: Injectable
210
245
  }] });
211
246
 
212
247
  class FocusVisibleService {
248
+ get isFocusVisible() {
249
+ return this._hadKeyboardEvent;
250
+ }
213
251
  constructor() {
214
252
  this._document = inject(DOCUMENT);
215
253
  this._hadKeyboardEvent = false;
@@ -218,9 +256,6 @@ class FocusVisibleService {
218
256
  this._document.addEventListener('pointerdown', this.onPointerDown.bind(this), true);
219
257
  this._document.addEventListener('touchstart', this.onPointerDown.bind(this), true);
220
258
  }
221
- get isFocusVisible() {
222
- return this._hadKeyboardEvent;
223
- }
224
259
  onKeyDown(e) {
225
260
  if (e.metaKey || e.altKey || e.ctrlKey) {
226
261
  return;
@@ -231,9 +266,9 @@ class FocusVisibleService {
231
266
  this._hadKeyboardEvent = false;
232
267
  }
233
268
  }
234
- FocusVisibleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusVisibleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
235
- FocusVisibleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusVisibleService, providedIn: 'root' });
236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: FocusVisibleService, decorators: [{
269
+ FocusVisibleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FocusVisibleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
270
+ FocusVisibleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FocusVisibleService, providedIn: 'root' });
271
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: FocusVisibleService, decorators: [{
237
272
  type: Injectable,
238
273
  args: [{
239
274
  providedIn: 'root',
@@ -246,9 +281,9 @@ class ResizeObserverFactory {
246
281
  return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);
247
282
  }
248
283
  }
249
- ResizeObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
250
- ResizeObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeObserverFactory, providedIn: 'root' });
251
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeObserverFactory, decorators: [{
284
+ ResizeObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ResizeObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
285
+ ResizeObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ResizeObserverFactory, providedIn: 'root' });
286
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ResizeObserverFactory, decorators: [{
252
287
  type: Injectable,
253
288
  args: [{ providedIn: 'root' }]
254
289
  }] });
@@ -304,26 +339,523 @@ class ResizeObserverService {
304
339
  }
305
340
  }
306
341
  }
307
- ResizeObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeObserverService, deps: [{ token: ResizeObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
308
- ResizeObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeObserverService, providedIn: 'root' });
309
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ResizeObserverService, decorators: [{
342
+ ResizeObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ResizeObserverService, deps: [{ token: ResizeObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
343
+ ResizeObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ResizeObserverService, providedIn: 'root' });
344
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ResizeObserverService, decorators: [{
310
345
  type: Injectable,
311
346
  args: [{ providedIn: 'root' }]
312
347
  }], ctorParameters: function () { return [{ type: ResizeObserverFactory }]; } });
313
348
 
314
- class ViewportService {
315
- constructor(_viewportConfig, _breakpointObserver) {
316
- this._breakpointObserver = _breakpointObserver;
317
- this._isXs$ = new BehaviorSubject(false);
318
- this._isSm$ = new BehaviorSubject(false);
319
- this._isMd$ = new BehaviorSubject(false);
320
- this._isLg$ = new BehaviorSubject(false);
321
- this._isXl$ = new BehaviorSubject(false);
322
- this._is2Xl$ = new BehaviorSubject(false);
323
- this.currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(map((val) => this.getCurrentViewport(val)), shareReplay());
324
- this._viewportConfig = _viewportConfig || DEFAULT_VIEWPORT_CONFIG;
325
- this._observeDefaultBreakpoints();
349
+ const nextFrame = (cb) => {
350
+ requestAnimationFrame(() => {
351
+ requestAnimationFrame(cb);
352
+ });
353
+ };
354
+ const fromNextFrame = () => {
355
+ return new Observable((observer) => {
356
+ nextFrame(() => {
357
+ observer.next();
358
+ observer.complete();
359
+ });
360
+ });
361
+ };
362
+ const forceReflow = (element = document.body) => {
363
+ return element.offsetHeight;
364
+ };
365
+
366
+ const clamp = (value, min = 0, max = 100) => {
367
+ return Math.max(min, Math.min(max, value));
368
+ };
369
+
370
+ /* eslint-disable @typescript-eslint/no-explicit-any */
371
+ /* eslint-disable no-var */
372
+ /**
373
+ * Stolen from klona to avoid adding a dependency
374
+ * https://github.com/lukeed/klona
375
+ *
376
+ * MIT License
377
+ *
378
+ * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
379
+ *
380
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
381
+ *
382
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
383
+ *
384
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
385
+ */
386
+ const set = (obj, key, val) => {
387
+ if (typeof val.value === 'object')
388
+ val.value = clone(val.value);
389
+ if (!val.enumerable || val.get || val.set || !val.configurable || !val.writable || key === '__proto__') {
390
+ Object.defineProperty(obj, key, val);
391
+ }
392
+ else
393
+ obj[key] = val.value;
394
+ };
395
+ const clone = (original) => {
396
+ if (typeof original !== 'object')
397
+ return original;
398
+ var _og = original;
399
+ var i = 0, k, list, tmp, str = Object.prototype.toString.call(_og);
400
+ if (str === '[object Object]') {
401
+ tmp = Object.create(_og.__proto__ || null);
402
+ }
403
+ else if (str === '[object Array]') {
404
+ tmp = Array(_og.length);
405
+ }
406
+ else if (str === '[object Set]') {
407
+ tmp = new Set();
408
+ _og.forEach(function (val) {
409
+ tmp.add(clone(val));
410
+ });
411
+ }
412
+ else if (str === '[object Map]') {
413
+ tmp = new Map();
414
+ _og.forEach(function (val, key) {
415
+ tmp.set(clone(key), clone(val));
416
+ });
417
+ }
418
+ else if (str === '[object Date]') {
419
+ tmp = new Date(+_og);
420
+ }
421
+ else if (str === '[object RegExp]') {
422
+ tmp = new RegExp(_og.source, _og.flags);
423
+ }
424
+ else if (str === '[object DataView]') {
425
+ tmp = new _og.constructor(clone(_og.buffer));
426
+ }
427
+ else if (str === '[object ArrayBuffer]') {
428
+ tmp = _og.slice(0);
429
+ }
430
+ else if (str.slice(-6) === 'Array]') {
431
+ // ArrayBuffer.isView(x)
432
+ // ~> `new` bcuz `Buffer.slice` => ref
433
+ tmp = new _og.constructor(_og);
434
+ }
435
+ if (tmp) {
436
+ for (list = Object.getOwnPropertySymbols(_og); i < list.length; i++) {
437
+ set(tmp, list[i], Object.getOwnPropertyDescriptor(_og, list[i]));
438
+ }
439
+ for (i = 0, list = Object.getOwnPropertyNames(_og); i < list.length; i++) {
440
+ if (Object.hasOwnProperty.call(tmp, (k = list[i])) && tmp[k] === _og[k])
441
+ continue;
442
+ set(tmp, k, Object.getOwnPropertyDescriptor(_og, k));
443
+ }
444
+ }
445
+ return tmp || _og;
446
+ };
447
+
448
+ const hasCookie = (name) => {
449
+ if (typeof document === 'undefined') {
450
+ return false;
451
+ }
452
+ return document.cookie.split(';').some((c) => {
453
+ return c.trim().startsWith(name + '=');
454
+ });
455
+ };
456
+ const getCookie = (name) => {
457
+ if (typeof document === 'undefined') {
458
+ return null;
459
+ }
460
+ // From https://stackoverflow.com/questions/10730362/get-cookie-by-name
461
+ return ('; ' + document.cookie).split(`; ${name}=`).pop()?.split(';')[0];
462
+ };
463
+ const setCookie = (name, data, expiresInDays = 30, domain = getDomain()) => {
464
+ if (typeof document === 'undefined') {
465
+ return;
466
+ }
467
+ const date = new Date();
468
+ date.setTime(date.getTime() + expiresInDays * 24 * 60 * 60 * 1000);
469
+ document.cookie = `${name}=${data}; path=/; expires=${date.toUTCString()}; domain=${domain}; SameSite=Lax;`;
470
+ };
471
+ const deleteCookie = (name, path, domain = getDomain()) => {
472
+ if (hasCookie(name)) {
473
+ document.cookie =
474
+ name +
475
+ '=' +
476
+ (path ? ';path=' + path : '') +
477
+ (domain ? ';domain=' + domain : '') +
478
+ ';expires=Thu, 01 Jan 1970 00:00:01 GMT';
479
+ }
480
+ };
481
+ const getDomain = () => {
482
+ if (typeof navigator === 'undefined') {
483
+ return null;
484
+ }
485
+ const hostname = window.location.hostname;
486
+ if (hostname.includes('localhost')) {
487
+ return 'localhost';
488
+ }
489
+ const splitHost = hostname.split('.');
490
+ if (splitHost.length > 2) {
491
+ return `${splitHost[splitHost.length - 2]}.${splitHost[splitHost.length - 1]}`;
492
+ }
493
+ return hostname;
494
+ };
495
+
496
+ /* eslint-disable @typescript-eslint/no-explicit-any */
497
+ /* eslint-disable no-var */
498
+ /**
499
+ * Stolen from dequal to avoid adding a dependency
500
+ * https://github.com/lukeed/dequal
501
+ *
502
+ * The MIT License (MIT)
503
+ *
504
+ * Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
505
+ *
506
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
507
+ * of this software and associated documentation files (the "Software"), to deal
508
+ * in the Software without restriction, including without limitation the rights
509
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
510
+ * copies of the Software, and to permit persons to whom the Software is
511
+ * furnished to do so, subject to the following conditions:
512
+ *
513
+ * The above copyright notice and this permission notice shall be included in
514
+ * all copies or substantial portions of the Software.
515
+ *
516
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
517
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
518
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
519
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
520
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
521
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
522
+ * THE SOFTWARE.
523
+ */
524
+ const has = Object.prototype.hasOwnProperty;
525
+ function find(iter, tar, key) {
526
+ for (key of iter.keys()) {
527
+ if (equal(key, tar))
528
+ return key;
529
+ }
530
+ }
531
+ const equal = (foo, bar) => {
532
+ var ctor, len, tmp;
533
+ if (foo === bar)
534
+ return true;
535
+ if (foo && bar && (ctor = foo.constructor) === bar.constructor) {
536
+ if (ctor === Date)
537
+ return foo.getTime() === bar.getTime();
538
+ if (ctor === RegExp)
539
+ return foo.toString() === bar.toString();
540
+ if (ctor === Array) {
541
+ if ((len = foo.length) === bar.length) {
542
+ while (len-- && equal(foo[len], bar[len]))
543
+ ;
544
+ }
545
+ return len === -1;
546
+ }
547
+ if (ctor === Set) {
548
+ if (foo.size !== bar.size) {
549
+ return false;
550
+ }
551
+ for (len of foo) {
552
+ tmp = len;
553
+ if (tmp && typeof tmp === 'object') {
554
+ tmp = find(bar, tmp);
555
+ if (!tmp)
556
+ return false;
557
+ }
558
+ if (!bar.has(tmp))
559
+ return false;
560
+ }
561
+ return true;
562
+ }
563
+ if (ctor === Map) {
564
+ if (foo.size !== bar.size) {
565
+ return false;
566
+ }
567
+ for (len of foo) {
568
+ tmp = len[0];
569
+ if (tmp && typeof tmp === 'object') {
570
+ tmp = find(bar, tmp);
571
+ if (!tmp)
572
+ return false;
573
+ }
574
+ if (!equal(len[1], bar.get(tmp))) {
575
+ return false;
576
+ }
577
+ }
578
+ return true;
579
+ }
580
+ if (ctor === ArrayBuffer) {
581
+ foo = new Uint8Array(foo);
582
+ bar = new Uint8Array(bar);
583
+ }
584
+ else if (ctor === DataView) {
585
+ if ((len = foo.byteLength) === bar.byteLength) {
586
+ while (len-- && foo.getInt8(len) === bar.getInt8(len))
587
+ ;
588
+ }
589
+ return len === -1;
590
+ }
591
+ if (ArrayBuffer.isView(foo)) {
592
+ if ((len = foo.byteLength) === bar.byteLength) {
593
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
594
+ //@ts-ignore
595
+ while (len-- && foo[len] === bar[len])
596
+ ;
597
+ }
598
+ return len === -1;
599
+ }
600
+ if (!ctor || typeof foo === 'object') {
601
+ len = 0;
602
+ for (ctor in foo) {
603
+ if (has.call(foo, ctor) && ++len && !has.call(bar, ctor))
604
+ return false;
605
+ if (!(ctor in bar) || !equal(foo[ctor], bar[ctor]))
606
+ return false;
607
+ }
608
+ return Object.keys(bar).length === len;
609
+ }
610
+ }
611
+ return foo !== foo && bar !== bar;
612
+ };
613
+
614
+ const createMediaQueryObservable = (query) => {
615
+ const mq = window.matchMedia(query);
616
+ const observable = new Observable((observer) => {
617
+ const eventHandler = (event) => {
618
+ observer.next(event);
619
+ };
620
+ mq.addEventListener('change', eventHandler);
621
+ return () => {
622
+ mq.removeEventListener('change', eventHandler);
623
+ };
624
+ }).pipe(startWith(mq), map(({ matches }) => ({
625
+ matches,
626
+ query,
627
+ })));
628
+ return observable;
629
+ };
630
+
631
+ const isAttributeRenderBinding = (value) => typeof value === 'boolean';
632
+ const isAttributeValueBinding = (value) => typeof value === 'object';
633
+ const createReactiveBindings = (...values) => {
634
+ const rootElementRef = inject(ElementRef);
635
+ const destroy$ = inject(DestroyService, { host: true }).destroy$;
636
+ const subscriptions = [];
637
+ const pushedAttributes = [];
638
+ const defaults = {};
639
+ const push = (value) => {
640
+ const { attribute, observable, elementRef } = value;
641
+ const elRef = elementRef || rootElementRef;
642
+ const attributes = Array.isArray(attribute) ? attribute : [attribute];
643
+ pushedAttributes.push(attributes);
644
+ for (const attribute of attributes) {
645
+ if (!defaults[attribute]) {
646
+ defaults[attribute] = elRef.nativeElement.getAttribute(attribute) || undefined;
647
+ }
648
+ }
649
+ const subscription = observable
650
+ .pipe(takeUntil(destroy$), distinctUntilChanged((a, b) => {
651
+ if (isAttributeRenderBinding(a) && isAttributeRenderBinding(b)) {
652
+ return a === b;
653
+ }
654
+ else if (isAttributeValueBinding(a) && isAttributeValueBinding(b)) {
655
+ return a.render === b.render && a.value === b.value;
656
+ }
657
+ return false;
658
+ }))
659
+ .subscribe((value) => {
660
+ const currentAttributes = pushedAttributes.find((s) => s.some((current) => attributes.includes(current))) || [];
661
+ for (const attribute of currentAttributes) {
662
+ const isSingleClassMutation = attribute.startsWith('class.');
663
+ const isMultipleClassMutation = attribute === 'class';
664
+ const render = isAttributeRenderBinding(value) ? value : value.render;
665
+ if (isSingleClassMutation) {
666
+ const className = attribute.replace('class.', '');
667
+ if (!className) {
668
+ continue;
669
+ }
670
+ if (!render) {
671
+ elRef.nativeElement.classList.remove(className);
672
+ }
673
+ else {
674
+ elRef.nativeElement.classList.add(className);
675
+ }
676
+ }
677
+ else if (isMultipleClassMutation) {
678
+ const classes = isAttributeRenderBinding(value) ? '' : `${value.value}`;
679
+ if (!classes) {
680
+ continue;
681
+ }
682
+ if (!render) {
683
+ elRef.nativeElement.classList.remove(...classes.split(' '));
684
+ }
685
+ else {
686
+ elRef.nativeElement.classList.add(...classes.split(' '));
687
+ }
688
+ }
689
+ else {
690
+ const attributeValue = isAttributeRenderBinding(value) ? true : `${value.value}`;
691
+ if (!attribute) {
692
+ continue;
693
+ }
694
+ if (!render) {
695
+ elRef.nativeElement.removeAttribute(attribute);
696
+ }
697
+ else {
698
+ elRef.nativeElement.setAttribute(attribute, `${attributeValue}`);
699
+ }
700
+ }
701
+ }
702
+ });
703
+ subscriptions.push({ attributes, subscription });
704
+ };
705
+ const remove = (...attributes) => {
706
+ for (const attribute of attributes) {
707
+ const sub = subscriptions.find((s) => s.attributes.includes(attribute));
708
+ const attributeStack = pushedAttributes.find((a) => a.includes(attribute));
709
+ if (sub) {
710
+ sub.attributes = sub.attributes.filter((a) => a !== attribute);
711
+ attributeStack?.splice(attributeStack.indexOf(attribute), 1);
712
+ if (sub.attributes.length === 0) {
713
+ sub.subscription.unsubscribe();
714
+ subscriptions.splice(subscriptions.indexOf(sub), 1);
715
+ }
716
+ }
717
+ }
718
+ };
719
+ const reset = () => {
720
+ for (const attribute in defaults) {
721
+ if (defaults[attribute] === undefined) {
722
+ rootElementRef.nativeElement.removeAttribute(attribute);
723
+ }
724
+ else {
725
+ rootElementRef.nativeElement.setAttribute(attribute, defaults[attribute]);
726
+ }
727
+ }
728
+ };
729
+ for (const value of values) {
730
+ push(value);
731
+ }
732
+ return {
733
+ push,
734
+ remove,
735
+ reset,
736
+ };
737
+ };
738
+
739
+ const elementCanScroll = (element) => {
740
+ const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;
741
+ return scrollHeight > clientHeight || scrollWidth > clientWidth;
742
+ };
743
+
744
+ const provideViewportConfig = (viewportConfig) => {
745
+ return { provide: VIEWPORT_CONFIG, useValue: viewportConfig };
746
+ };
747
+
748
+ const routerDisableScrollTop = (config = {}) => {
749
+ if (!config.asReturnRoute) {
750
+ return {
751
+ disableScrollTop: true,
752
+ };
753
+ }
754
+ return {
755
+ disableScrollTopAsReturnRoute: true,
756
+ };
757
+ };
758
+ class RouterStateService {
759
+ get route$() {
760
+ return this._route$.asObservable();
761
+ }
762
+ get state$() {
763
+ return this._state$.asObservable();
764
+ }
765
+ constructor() {
766
+ this._isScrollTopOnNavigationEnabled = false;
767
+ this._router = inject(Router);
768
+ this._route$ = new BehaviorSubject('/');
769
+ this._state$ = new BehaviorSubject({
770
+ title: null,
771
+ fragment: null,
772
+ data: {},
773
+ pathParams: {},
774
+ queryParams: {},
775
+ });
776
+ this._router.events
777
+ .pipe(filter((event) => event instanceof NavigationEnd), distinctUntilChanged((a, b) => a.url === b.url), map((event) => {
778
+ const { url } = event;
779
+ const urlWithoutQueryParams = url.split('?')[0];
780
+ const withoutFragment = urlWithoutQueryParams.split('#')[0];
781
+ return withoutFragment;
782
+ }))
783
+ .subscribe(this._route$);
784
+ this._route$
785
+ .pipe(map(() => {
786
+ let route = this._router.routerState.snapshot.root;
787
+ while (route.firstChild) {
788
+ route = route.firstChild;
789
+ }
790
+ const { data, params, queryParams, title, fragment } = route;
791
+ return {
792
+ data,
793
+ pathParams: params,
794
+ queryParams,
795
+ title: title ?? null,
796
+ fragment,
797
+ };
798
+ }))
799
+ .subscribe(this._state$);
800
+ }
801
+ enableScrollEnhancements(config = {}) {
802
+ if (this._isScrollTopOnNavigationEnabled) {
803
+ return;
804
+ }
805
+ this._isScrollTopOnNavigationEnabled = true;
806
+ combineLatest([this._state$.pipe(pairwise()), this._route$.pipe(pairwise())])
807
+ .pipe(debounceTime(1))
808
+ .subscribe(([[prevState, currState], [prevRoute, currRoute]]) => {
809
+ const sameUrlNavigation = prevRoute === currRoute && equal(prevState.pathParams, currState.pathParams);
810
+ const didFragmentChange = prevState.fragment !== currState.fragment;
811
+ if (sameUrlNavigation) {
812
+ const allQueryParams = [
813
+ ...new Set(Object.keys(prevState.queryParams).concat(Object.keys(currState.queryParams))),
814
+ ];
815
+ const changedQueryParams = allQueryParams.filter((key) => currState.queryParams[key] !== prevState.queryParams[key]);
816
+ if (!config.queryParamTriggerList?.length && !didFragmentChange) {
817
+ return;
818
+ }
819
+ const caseQueryParams = changedQueryParams.some((key) => config.queryParamTriggerList?.includes(key));
820
+ const caseFragment = didFragmentChange && config.fragment?.enabled;
821
+ if (caseQueryParams) {
822
+ (config.scrollElement ?? document.documentElement).scrollTop = 0;
823
+ }
824
+ else if (caseFragment) {
825
+ const fragmentElement = document.getElementById(currState.fragment ?? '');
826
+ if (fragmentElement) {
827
+ fragmentElement.scrollIntoView({ behavior: config.fragment?.smooth ? 'smooth' : 'auto' });
828
+ }
829
+ }
830
+ }
831
+ else {
832
+ if (!(currState.data['disableScrollTopAsReturnRoute'] && prevState.data['disableScrollTop']) &&
833
+ !currState.data['disableScrollTop']) {
834
+ (config.scrollElement ?? document.documentElement).scrollTop = 0;
835
+ }
836
+ }
837
+ });
326
838
  }
839
+ selectQueryParam(key) {
840
+ return this._state$.pipe(map((state) => state.queryParams[key]));
841
+ }
842
+ selectPathParam(key) {
843
+ return this._state$.pipe(map((state) => state.pathParams[key]));
844
+ }
845
+ selectData(key) {
846
+ return this._state$.pipe(map((state) => state.data[key]));
847
+ }
848
+ }
849
+ RouterStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RouterStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
850
+ RouterStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RouterStateService, providedIn: 'root' });
851
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RouterStateService, decorators: [{
852
+ type: Injectable,
853
+ args: [{
854
+ providedIn: 'root',
855
+ }]
856
+ }], ctorParameters: function () { return []; } });
857
+
858
+ class ViewportService {
327
859
  get isXs$() {
328
860
  return this._isXs$.asObservable();
329
861
  }
@@ -363,6 +895,18 @@ class ViewportService {
363
895
  get currentViewport() {
364
896
  return this.getCurrentViewport([this.isXs, this.isSm, this.isMd, this.isLg, this.isXl, this.is2Xl]);
365
897
  }
898
+ constructor(_viewportConfig, _breakpointObserver) {
899
+ this._breakpointObserver = _breakpointObserver;
900
+ this._isXs$ = new BehaviorSubject(false);
901
+ this._isSm$ = new BehaviorSubject(false);
902
+ this._isMd$ = new BehaviorSubject(false);
903
+ this._isLg$ = new BehaviorSubject(false);
904
+ this._isXl$ = new BehaviorSubject(false);
905
+ this._is2Xl$ = new BehaviorSubject(false);
906
+ this.currentViewport$ = combineLatest([this.isXs$, this.isSm$, this.isMd$, this.isLg$, this.isXl$, this.is2Xl$]).pipe(map((val) => this.getCurrentViewport(val)), shareReplay());
907
+ this._viewportConfig = _viewportConfig || DEFAULT_VIEWPORT_CONFIG;
908
+ this._observeDefaultBreakpoints();
909
+ }
366
910
  observe(options) {
367
911
  const mediaQuery = this._buildMediaQuery(options);
368
912
  return this._breakpointObserver.observe(mediaQuery).pipe(map((x) => x.matches), shareReplay());
@@ -441,8 +985,8 @@ class ViewportService {
441
985
  return 'xs';
442
986
  }
443
987
  }
444
- ViewportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ViewportService, deps: [{ token: VIEWPORT_CONFIG, optional: true }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Injectable });
445
- ViewportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ViewportService, providedIn: 'root' });
988
+ ViewportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ViewportService, deps: [{ token: VIEWPORT_CONFIG, optional: true }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Injectable });
989
+ ViewportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ViewportService, providedIn: 'root' });
446
990
  __decorate([
447
991
  Memo(),
448
992
  __metadata("design:type", Function),
@@ -459,7 +1003,7 @@ __decorate([
459
1003
  __metadata("design:paramtypes", [Object]),
460
1004
  __metadata("design:returntype", void 0)
461
1005
  ], ViewportService.prototype, "_buildMediaQuery", null);
462
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ViewportService, decorators: [{
1006
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ViewportService, decorators: [{
463
1007
  type: Injectable,
464
1008
  args: [{
465
1009
  providedIn: 'root',
@@ -471,6 +1015,223 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
471
1015
  type: Optional
472
1016
  }] }, { type: i1.BreakpointObserver }]; }, propDecorators: { _getViewportSize: [], _buildMediaQuery: [] } });
473
1017
 
1018
+ const ANIMATABLE_TOKEN = new InjectionToken('ANIMATABLE_DIRECTIVE_TOKEN');
1019
+ class AnimatableDirective {
1020
+ constructor() {
1021
+ this._didEmitStart = false;
1022
+ this._parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });
1023
+ this._destroy$ = inject(DestroyService, { host: true }).destroy$;
1024
+ this._elementRef = inject(ElementRef);
1025
+ this._animationStart$ = new Subject();
1026
+ this._animationEnd$ = new Subject();
1027
+ this._animatedElement$ = new BehaviorSubject(this._elementRef.nativeElement);
1028
+ this.animationStart$ = this._animationStart$.asObservable().pipe(debounceTime(0));
1029
+ this.animationEnd$ = this._animationEnd$.asObservable().pipe(debounceTime(0));
1030
+ this._hostActiveAnimationCount$ = new BehaviorSubject(0);
1031
+ this._totalActiveAnimationCount$ = new BehaviorSubject(0);
1032
+ this.isAnimating$ = this._totalActiveAnimationCount$.pipe(map((count) => count > 0), debounceTime(0));
1033
+ }
1034
+ set animatedElement(value) {
1035
+ let newElement = null;
1036
+ if (value === null || value === undefined) {
1037
+ newElement = this._elementRef.nativeElement;
1038
+ }
1039
+ else if (typeof value === 'string') {
1040
+ const el = document.querySelector(value);
1041
+ if (el) {
1042
+ newElement = el;
1043
+ }
1044
+ else {
1045
+ if (isDevMode()) {
1046
+ console.warn(`Element with selector ${value} not found. Animatable directive will use host element.`);
1047
+ }
1048
+ newElement = this._elementRef.nativeElement;
1049
+ }
1050
+ }
1051
+ else {
1052
+ newElement = value;
1053
+ }
1054
+ if (this._animatedElement$.value !== newElement) {
1055
+ this._animatedElement$.next(newElement);
1056
+ }
1057
+ }
1058
+ ngOnInit() {
1059
+ this._animatedElement$
1060
+ .pipe(tap((el) => {
1061
+ this._totalActiveAnimationCount$.next(this._totalActiveAnimationCount$.value - this._hostActiveAnimationCount$.value);
1062
+ this._hostActiveAnimationCount$.next(0);
1063
+ merge(fromEvent(el, 'animationstart'), fromEvent(el, 'transitionstart'))
1064
+ .pipe(tap(() => {
1065
+ const count = this._hostActiveAnimationCount$.value + 1;
1066
+ this._hostActiveAnimationCount$.next(count);
1067
+ this._totalActiveAnimationCount$.next(count);
1068
+ }), takeUntil(this._destroy$), takeUntil(this._animatedElement$.pipe(skip(1))))
1069
+ .subscribe();
1070
+ merge(fromEvent(el, 'animationend'), fromEvent(el, 'animationcancel'), fromEvent(el, 'transitionend'), fromEvent(el, 'transitioncancel'))
1071
+ .pipe(tap(() => {
1072
+ const count = this._hostActiveAnimationCount$.value - 1;
1073
+ this._hostActiveAnimationCount$.next(count);
1074
+ this._totalActiveAnimationCount$.next(count);
1075
+ }), takeUntil(this._destroy$), takeUntil(this._animatedElement$.pipe(skip(1))))
1076
+ .subscribe();
1077
+ }), takeUntil(this._destroy$))
1078
+ .subscribe();
1079
+ this._totalActiveAnimationCount$
1080
+ .pipe(tap((count) => {
1081
+ if (count > 0 && !this._didEmitStart) {
1082
+ this._animationStart$.next();
1083
+ this._didEmitStart = true;
1084
+ }
1085
+ else if (count === 0) {
1086
+ this._animationEnd$.next();
1087
+ this._didEmitStart = false;
1088
+ }
1089
+ }), takeUntil(this._destroy$))
1090
+ .subscribe();
1091
+ if (this._parent) {
1092
+ this._parent._hostActiveAnimationCount$
1093
+ .pipe(takeUntil(this._destroy$), tap((count) => {
1094
+ this._totalActiveAnimationCount$.next(count + this._hostActiveAnimationCount$.value);
1095
+ }))
1096
+ .subscribe();
1097
+ }
1098
+ }
1099
+ }
1100
+ AnimatableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1101
+ AnimatableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: AnimatableDirective, isStandalone: true, selector: "[etAnimatable]", inputs: { animatedElement: ["etAnimatable", "animatedElement"] }, providers: [
1102
+ {
1103
+ provide: ANIMATABLE_TOKEN,
1104
+ useExisting: AnimatableDirective,
1105
+ },
1106
+ DestroyService,
1107
+ ], exportAs: ["etAnimatable"], ngImport: i0 });
1108
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatableDirective, decorators: [{
1109
+ type: Directive,
1110
+ args: [{
1111
+ selector: '[etAnimatable]',
1112
+ exportAs: 'etAnimatable',
1113
+ standalone: true,
1114
+ providers: [
1115
+ {
1116
+ provide: ANIMATABLE_TOKEN,
1117
+ useExisting: AnimatableDirective,
1118
+ },
1119
+ DestroyService,
1120
+ ],
1121
+ }]
1122
+ }], propDecorators: { animatedElement: [{
1123
+ type: Input,
1124
+ args: ['etAnimatable']
1125
+ }] } });
1126
+
1127
+ const ANIMATED_LIFECYCLE_TOKEN = new InjectionToken('ANIMATED_LIFECYCLE_DIRECTIVE_TOKEN');
1128
+ const ANIMATION_CLASSES = {
1129
+ enterFrom: 'et-animation-enter-from',
1130
+ enterActive: 'et-animation-enter-active',
1131
+ enterTo: 'et-animation-enter-to',
1132
+ leaveFrom: 'et-animation-leave-from',
1133
+ leaveActive: 'et-animation-leave-active',
1134
+ leaveTo: 'et-animation-leave-to',
1135
+ };
1136
+ class AnimatedLifecycleDirective {
1137
+ constructor() {
1138
+ this._destroy$ = inject(DestroyService, { host: true }).destroy$;
1139
+ this._elementRef = inject(ElementRef);
1140
+ this._animatable = inject(ANIMATABLE_TOKEN);
1141
+ this._classList = this._elementRef.nativeElement.classList;
1142
+ this._state$ = new BehaviorSubject('init');
1143
+ this.state$ = this._state$.asObservable();
1144
+ this._bindings = createReactiveBindings({
1145
+ attribute: 'class.et-force-invisible',
1146
+ observable: this._state$.pipe(map((state) => state === 'init')),
1147
+ });
1148
+ }
1149
+ get state() {
1150
+ return this._state$.value;
1151
+ }
1152
+ enter(config) {
1153
+ if (this.state !== 'init' && this.state !== 'left' && isDevMode()) {
1154
+ console.warn('Tried to enter but the element is not in the initial state. This may result in unexpected behavior.', this);
1155
+ }
1156
+ this._state$.next('entering');
1157
+ if (!config?.onlyTransition) {
1158
+ this._classList.add(ANIMATION_CLASSES.enterFrom);
1159
+ }
1160
+ forceReflow();
1161
+ this._classList.add(ANIMATION_CLASSES.enterActive);
1162
+ fromNextFrame()
1163
+ .pipe(tap(() => {
1164
+ if (!config?.onlyTransition) {
1165
+ this._classList.remove(ANIMATION_CLASSES.enterFrom);
1166
+ this._classList.add(ANIMATION_CLASSES.enterTo);
1167
+ }
1168
+ }), switchMap(() => this._animatable.animationEnd$), tap(() => {
1169
+ this._state$.next('entered');
1170
+ this._classList.remove(ANIMATION_CLASSES.enterActive);
1171
+ if (!config?.onlyTransition) {
1172
+ this._classList.remove(ANIMATION_CLASSES.enterTo);
1173
+ }
1174
+ }), takeUntil(this._destroy$), take(1))
1175
+ .subscribe();
1176
+ }
1177
+ leave(config) {
1178
+ if (this.state !== 'entered' && this.state !== 'entering' && isDevMode()) {
1179
+ console.warn('Tried to leave while already leaving or left. This may result in unexpected behavior.', this);
1180
+ }
1181
+ if (this._classList.contains(ANIMATION_CLASSES.enterFrom) ||
1182
+ this._classList.contains(ANIMATION_CLASSES.enterActive) ||
1183
+ this._classList.contains(ANIMATION_CLASSES.enterTo)) {
1184
+ this._classList.remove(ANIMATION_CLASSES.enterFrom);
1185
+ this._classList.remove(ANIMATION_CLASSES.enterActive);
1186
+ this._classList.remove(ANIMATION_CLASSES.enterTo);
1187
+ }
1188
+ this._state$.next('leaving');
1189
+ if (!config?.onlyTransition) {
1190
+ this._classList.add(ANIMATION_CLASSES.leaveFrom);
1191
+ }
1192
+ forceReflow();
1193
+ this._classList.add(ANIMATION_CLASSES.leaveActive);
1194
+ fromNextFrame()
1195
+ .pipe(tap(() => {
1196
+ if (!config?.onlyTransition) {
1197
+ this._classList.remove(ANIMATION_CLASSES.leaveFrom);
1198
+ this._classList.add(ANIMATION_CLASSES.leaveTo);
1199
+ }
1200
+ }), switchMap(() => this._animatable.animationEnd$), tap(() => {
1201
+ this._state$.next('left');
1202
+ this._classList.remove(ANIMATION_CLASSES.leaveActive);
1203
+ if (!config?.onlyTransition) {
1204
+ this._classList.remove(ANIMATION_CLASSES.leaveTo);
1205
+ }
1206
+ }), takeUntil(this._destroy$), take(1))
1207
+ .subscribe();
1208
+ }
1209
+ }
1210
+ AnimatedLifecycleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatedLifecycleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1211
+ AnimatedLifecycleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: AnimatedLifecycleDirective, isStandalone: true, selector: "[etAnimatedLifecycle]", providers: [
1212
+ {
1213
+ provide: ANIMATED_LIFECYCLE_TOKEN,
1214
+ useExisting: AnimatedLifecycleDirective,
1215
+ },
1216
+ DestroyService,
1217
+ ], exportAs: ["etAnimatedLifecycle"], hostDirectives: [{ directive: AnimatableDirective }], ngImport: i0 });
1218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatedLifecycleDirective, decorators: [{
1219
+ type: Directive,
1220
+ args: [{
1221
+ selector: '[etAnimatedLifecycle]',
1222
+ exportAs: 'etAnimatedLifecycle',
1223
+ standalone: true,
1224
+ providers: [
1225
+ {
1226
+ provide: ANIMATED_LIFECYCLE_TOKEN,
1227
+ useExisting: AnimatedLifecycleDirective,
1228
+ },
1229
+ DestroyService,
1230
+ ],
1231
+ hostDirectives: [AnimatableDirective],
1232
+ }]
1233
+ }] });
1234
+
474
1235
  class ClickOutsideDirective {
475
1236
  constructor() {
476
1237
  this._elementRef = inject(ElementRef);
@@ -493,9 +1254,9 @@ class ClickOutsideDirective {
493
1254
  this._subscription?.unsubscribe();
494
1255
  }
495
1256
  }
496
- ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClickOutsideDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
497
- ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ClickOutsideDirective, isStandalone: true, selector: "[etClickOutside]", outputs: { etClickOutside: "etClickOutside" }, ngImport: i0 });
498
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ClickOutsideDirective, decorators: [{
1257
+ ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ClickOutsideDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1258
+ ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: ClickOutsideDirective, isStandalone: true, selector: "[etClickOutside]", outputs: { etClickOutside: "etClickOutside" }, ngImport: i0 });
1259
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ClickOutsideDirective, decorators: [{
499
1260
  type: Directive,
500
1261
  args: [{
501
1262
  selector: '[etClickOutside]',
@@ -505,26 +1266,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
505
1266
  type: Output
506
1267
  }] } });
507
1268
 
508
- const provideViewportConfig = (viewportConfig) => {
509
- return { provide: VIEWPORT_CONFIG, useValue: viewportConfig };
510
- };
511
-
512
- const clamp = (value, min = 0, max = 100) => {
513
- return Math.max(min, Math.min(max, value));
514
- };
515
-
516
- const elementCanScroll = (element) => {
517
- const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;
518
- return scrollHeight > clientHeight || scrollWidth > clientWidth;
519
- };
520
-
521
1269
  const CURSOR_DRAG_SCROLLING_CLASS = 'et-cursor-drag-scroll--scrolling';
522
1270
  const CURSOR_DRAG_SCROLLING_PREPARED_CLASS = 'et-cursor-drag-scroll--prepared';
523
1271
 
524
1272
  class CursorDragScrollDirective {
525
1273
  constructor() {
526
1274
  this._subscriptions = [];
527
- this._destroy$ = inject(DestroyService).destroy$;
1275
+ this._destroy$ = inject(DestroyService, { host: true }).destroy$;
528
1276
  this._elementRef = inject(ElementRef);
529
1277
  this._contentObserverService = inject(ContentObserverService);
530
1278
  this._resizeObserverService = inject(ResizeObserverService);
@@ -646,9 +1394,9 @@ class CursorDragScrollDirective {
646
1394
  }
647
1395
  }
648
1396
  }
649
- CursorDragScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CursorDragScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
650
- CursorDragScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: CursorDragScrollDirective, isStandalone: true, selector: "[etCursorDragScroll]", inputs: { enabled: ["etCursorDragScroll", "enabled"] }, providers: [DestroyService], exportAs: ["etCursorDragScroll"], ngImport: i0 });
651
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: CursorDragScrollDirective, decorators: [{
1397
+ CursorDragScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: CursorDragScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1398
+ CursorDragScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: CursorDragScrollDirective, isStandalone: true, selector: "[etCursorDragScroll]", inputs: { enabled: ["etCursorDragScroll", "enabled"] }, providers: [DestroyService], exportAs: ["etCursorDragScroll"], ngImport: i0 });
1399
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: CursorDragScrollDirective, decorators: [{
652
1400
  type: Directive,
653
1401
  args: [{
654
1402
  selector: '[etCursorDragScroll]',
@@ -661,25 +1409,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
661
1409
  args: ['etCursorDragScroll']
662
1410
  }] } });
663
1411
 
664
- class DestroyDirective {
665
- constructor() {
666
- this._destroy$ = new Subject();
667
- this.destroy$ = this._destroy$.asObservable();
668
- }
669
- ngOnDestroy() {
670
- this._destroy$.next(true);
671
- this._destroy$.unsubscribe();
672
- }
673
- }
674
- DestroyDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DestroyDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
675
- DestroyDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: DestroyDirective, isStandalone: true, ngImport: i0 });
676
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: DestroyDirective, decorators: [{
677
- type: Directive,
678
- args: [{
679
- standalone: true,
680
- }]
681
- }] });
682
-
683
1412
  class LetContext {
684
1413
  constructor() {
685
1414
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
@@ -690,6 +1419,10 @@ class LetContext {
690
1419
  }
691
1420
 
692
1421
  class LetDirective {
1422
+ set etLet(value) {
1423
+ this._context.$implicit = this._context.etLet = value;
1424
+ this._updateView();
1425
+ }
693
1426
  constructor(_viewContainer, templateRef) {
694
1427
  this._viewContainer = _viewContainer;
695
1428
  this._context = new LetContext();
@@ -697,10 +1430,6 @@ class LetDirective {
697
1430
  this._viewRef = null;
698
1431
  this._templateRef = templateRef;
699
1432
  }
700
- set etLet(value) {
701
- this._context.$implicit = this._context.etLet = value;
702
- this._updateView();
703
- }
704
1433
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
705
1434
  static ngTemplateContextGuard(dir, ctx) {
706
1435
  return true;
@@ -714,9 +1443,9 @@ class LetDirective {
714
1443
  }
715
1444
  }
716
1445
  }
717
- LetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LetDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
718
- LetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: LetDirective, isStandalone: true, selector: "[etLet]", inputs: { etLet: "etLet" }, ngImport: i0 });
719
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: LetDirective, decorators: [{
1446
+ LetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: LetDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
1447
+ LetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: LetDirective, isStandalone: true, selector: "[etLet]", inputs: { etLet: "etLet" }, ngImport: i0 });
1448
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: LetDirective, decorators: [{
720
1449
  type: Directive,
721
1450
  args: [{
722
1451
  selector: '[etLet]',
@@ -731,7 +1460,7 @@ class ObserveContentDirective {
731
1460
  this._contentObserver = inject(ContentObserverService);
732
1461
  this._elementRef = inject(ElementRef);
733
1462
  this._ngZone = inject(NgZone);
734
- this.event = new EventEmitter();
1463
+ this.valueChange = new EventEmitter();
735
1464
  this._disabled = false;
736
1465
  this._debounce = null;
737
1466
  this._currentSubscription = null;
@@ -762,23 +1491,23 @@ class ObserveContentDirective {
762
1491
  this._unsubscribe();
763
1492
  const stream = this._contentObserver.observe(this._elementRef);
764
1493
  this._ngZone.runOutsideAngular(() => {
765
- this._currentSubscription = (this.debounce ? stream.pipe(debounceTime$1(this.debounce)) : stream).subscribe(this.event);
1494
+ this._currentSubscription = (this.debounce ? stream.pipe(debounceTime$1(this.debounce)) : stream).subscribe(this.valueChange);
766
1495
  });
767
1496
  }
768
1497
  _unsubscribe() {
769
1498
  this._currentSubscription?.unsubscribe();
770
1499
  }
771
1500
  }
772
- ObserveContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ObserveContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
773
- ObserveContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ObserveContentDirective, isStandalone: true, selector: "[etObserveContent]", inputs: { disabled: ["etObserveContentDisabled", "disabled"], debounce: ["etObserveContentDebounce", "debounce"] }, outputs: { event: "etObserveContent" }, exportAs: ["etObserveContent"], ngImport: i0 });
774
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ObserveContentDirective, decorators: [{
1501
+ ObserveContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ObserveContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1502
+ ObserveContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: ObserveContentDirective, isStandalone: true, selector: "[etObserveContent]", inputs: { disabled: ["etObserveContentDisabled", "disabled"], debounce: ["etObserveContentDebounce", "debounce"] }, outputs: { valueChange: "etObserveContent" }, exportAs: ["etObserveContent"], ngImport: i0 });
1503
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ObserveContentDirective, decorators: [{
775
1504
  type: Directive,
776
1505
  args: [{
777
1506
  selector: '[etObserveContent]',
778
1507
  exportAs: 'etObserveContent',
779
1508
  standalone: true,
780
1509
  }]
781
- }], propDecorators: { event: [{
1510
+ }], propDecorators: { valueChange: [{
782
1511
  type: Output,
783
1512
  args: ['etObserveContent']
784
1513
  }], disabled: [{
@@ -794,7 +1523,7 @@ class ObserveResizeDirective {
794
1523
  this._resizeObserver = inject(ResizeObserverService);
795
1524
  this._elementRef = inject(ElementRef);
796
1525
  this._ngZone = inject(NgZone);
797
- this.event = new EventEmitter();
1526
+ this.valueChange = new EventEmitter();
798
1527
  this._disabled = false;
799
1528
  this._debounce = null;
800
1529
  this._currentSubscription = null;
@@ -825,23 +1554,23 @@ class ObserveResizeDirective {
825
1554
  this._unsubscribe();
826
1555
  const stream = this._resizeObserver.observe(this._elementRef);
827
1556
  this._ngZone.runOutsideAngular(() => {
828
- this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.event);
1557
+ this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.valueChange);
829
1558
  });
830
1559
  }
831
1560
  _unsubscribe() {
832
1561
  this._currentSubscription?.unsubscribe();
833
1562
  }
834
1563
  }
835
- ObserveResizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ObserveResizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
836
- ObserveResizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ObserveResizeDirective, isStandalone: true, selector: "[etObserveResize]", inputs: { disabled: ["etObserveResizeDisabled", "disabled"], debounce: ["etObserveResizeDebounce", "debounce"] }, outputs: { event: "etObserveResize" }, exportAs: ["etObserveResize"], ngImport: i0 });
837
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ObserveResizeDirective, decorators: [{
1564
+ ObserveResizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ObserveResizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1565
+ ObserveResizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: ObserveResizeDirective, isStandalone: true, selector: "[etObserveResize]", inputs: { disabled: ["etObserveResizeDisabled", "disabled"], debounce: ["etObserveResizeDebounce", "debounce"] }, outputs: { valueChange: "etObserveResize" }, exportAs: ["etObserveResize"], ngImport: i0 });
1566
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ObserveResizeDirective, decorators: [{
838
1567
  type: Directive,
839
1568
  args: [{
840
1569
  selector: '[etObserveResize]',
841
1570
  exportAs: 'etObserveResize',
842
1571
  standalone: true,
843
1572
  }]
844
- }], propDecorators: { event: [{
1573
+ }], propDecorators: { valueChange: [{
845
1574
  type: Output,
846
1575
  args: ['etObserveResize']
847
1576
  }], disabled: [{
@@ -864,9 +1593,9 @@ class ScrollObserverFirstElementDirective {
864
1593
  this._isFirstElement = coerceBooleanProperty(value);
865
1594
  }
866
1595
  }
867
- ScrollObserverFirstElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollObserverFirstElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
868
- ScrollObserverFirstElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ScrollObserverFirstElementDirective, isStandalone: true, selector: "[etScrollObserverFirstElement]", inputs: { isFirstElement: ["etScrollObserverFirstElement", "isFirstElement"] }, host: { properties: { "class.et-scroll-observer-first-element": "this.isFirstElement" } }, ngImport: i0 });
869
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollObserverFirstElementDirective, decorators: [{
1596
+ ScrollObserverFirstElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ScrollObserverFirstElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1597
+ ScrollObserverFirstElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: ScrollObserverFirstElementDirective, isStandalone: true, selector: "[etScrollObserverFirstElement]", inputs: { isFirstElement: ["etScrollObserverFirstElement", "isFirstElement"] }, host: { properties: { "class.et-scroll-observer-first-element": "this.isFirstElement" } }, ngImport: i0 });
1598
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ScrollObserverFirstElementDirective, decorators: [{
870
1599
  type: Directive,
871
1600
  args: [{
872
1601
  selector: '[etScrollObserverFirstElement]',
@@ -883,9 +1612,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
883
1612
  const SCROLL_OBSERVER_IGNORE_TARGET_CLASS = 'et-scroll-observer-ignore-target';
884
1613
  class ScrollObserverIgnoreTargetDirective {
885
1614
  }
886
- ScrollObserverIgnoreTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollObserverIgnoreTargetDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
887
- ScrollObserverIgnoreTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ScrollObserverIgnoreTargetDirective, isStandalone: true, selector: "[etScrollObserverIgnoreTarget]", host: { classAttribute: "et-scroll-observer-ignore-target" }, ngImport: i0 });
888
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollObserverIgnoreTargetDirective, decorators: [{
1615
+ ScrollObserverIgnoreTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ScrollObserverIgnoreTargetDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1616
+ ScrollObserverIgnoreTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: ScrollObserverIgnoreTargetDirective, isStandalone: true, selector: "[etScrollObserverIgnoreTarget]", host: { classAttribute: "et-scroll-observer-ignore-target" }, ngImport: i0 });
1617
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ScrollObserverIgnoreTargetDirective, decorators: [{
889
1618
  type: Directive,
890
1619
  args: [{
891
1620
  selector: '[etScrollObserverIgnoreTarget]',
@@ -908,9 +1637,9 @@ class ScrollObserverLastElementDirective {
908
1637
  this._isLastElement = coerceBooleanProperty(value);
909
1638
  }
910
1639
  }
911
- ScrollObserverLastElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollObserverLastElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
912
- ScrollObserverLastElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ScrollObserverLastElementDirective, isStandalone: true, selector: "[etScrollObserverLastElement]", inputs: { isLastElement: ["etScrollObserverLastElement", "isLastElement"] }, host: { properties: { "class.et-scroll-observer-last-element": "this.isLastElement" }, classAttribute: "et-scroll-observer-last-element" }, ngImport: i0 });
913
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ScrollObserverLastElementDirective, decorators: [{
1640
+ ScrollObserverLastElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ScrollObserverLastElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1641
+ ScrollObserverLastElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: ScrollObserverLastElementDirective, isStandalone: true, selector: "[etScrollObserverLastElement]", inputs: { isLastElement: ["etScrollObserverLastElement", "isLastElement"] }, host: { properties: { "class.et-scroll-observer-last-element": "this.isLastElement" }, classAttribute: "et-scroll-observer-last-element" }, ngImport: i0 });
1642
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ScrollObserverLastElementDirective, decorators: [{
914
1643
  type: Directive,
915
1644
  args: [{
916
1645
  selector: '[etScrollObserverLastElement]',
@@ -931,7 +1660,7 @@ const OBSERVE_SCROLL_STATE = new InjectionToken('OBSERVE_SCROLL_STATE');
931
1660
 
932
1661
  class ObserveScrollStateDirective {
933
1662
  constructor() {
934
- this._destroy$ = inject(DestroyService).destroy$;
1663
+ this._destroy$ = inject(DestroyService, { host: true }).destroy$;
935
1664
  this._elementRef = inject(ElementRef);
936
1665
  this._contentObserverService = inject(ContentObserverService);
937
1666
  this._resizeObserverService = inject(ResizeObserverService);
@@ -942,7 +1671,7 @@ class ObserveScrollStateDirective {
942
1671
  this._rootMargin = 0;
943
1672
  this._threshold = 1;
944
1673
  this._intersectionObserver = null;
945
- this.etObserveScrollState = new EventEmitter();
1674
+ this.valueChange = new EventEmitter();
946
1675
  }
947
1676
  get _firstCurrentChild() {
948
1677
  const explicitFirstElement = this._elementRef.nativeElement.querySelector(`.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`);
@@ -999,7 +1728,7 @@ class ObserveScrollStateDirective {
999
1728
  !elementCanScroll(this._elementRef.nativeElement)) {
1000
1729
  this._unobserveChild('first');
1001
1730
  this._unobserveChild('last');
1002
- this.etObserveScrollState.emit({
1731
+ this.valueChange.emit({
1003
1732
  isAtStart: true,
1004
1733
  isAtEnd: true,
1005
1734
  canScroll: false,
@@ -1016,7 +1745,7 @@ class ObserveScrollStateDirective {
1016
1745
  const { first, last } = this._observedChildren;
1017
1746
  const isAtStart = entries.find((entry) => entry.target === first)?.isIntersecting ?? false;
1018
1747
  const isAtEnd = entries.find((entry) => entry.target === last)?.isIntersecting ?? false;
1019
- this.etObserveScrollState.emit({
1748
+ this.valueChange.emit({
1020
1749
  isAtStart,
1021
1750
  isAtEnd,
1022
1751
  canScroll: !isAtStart || !isAtEnd,
@@ -1060,15 +1789,15 @@ class ObserveScrollStateDirective {
1060
1789
  return element;
1061
1790
  }
1062
1791
  }
1063
- ObserveScrollStateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ObserveScrollStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1064
- ObserveScrollStateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: ObserveScrollStateDirective, isStandalone: true, selector: "[etObserveScrollState]", inputs: { observerRootMargin: "observerRootMargin", observerThreshold: "observerThreshold" }, outputs: { etObserveScrollState: "etObserveScrollState" }, providers: [
1792
+ ObserveScrollStateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ObserveScrollStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1793
+ ObserveScrollStateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: ObserveScrollStateDirective, isStandalone: true, selector: "[etObserveScrollState]", inputs: { observerRootMargin: "observerRootMargin", observerThreshold: "observerThreshold" }, outputs: { valueChange: "etObserveScrollState" }, providers: [
1065
1794
  {
1066
1795
  provide: OBSERVE_SCROLL_STATE,
1067
1796
  useExisting: ObserveScrollStateDirective,
1068
1797
  },
1069
1798
  DestroyService,
1070
1799
  ], exportAs: ["etObserveScrollState"], ngImport: i0 });
1071
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ObserveScrollStateDirective, decorators: [{
1800
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ObserveScrollStateDirective, decorators: [{
1072
1801
  type: Directive,
1073
1802
  args: [{
1074
1803
  selector: '[etObserveScrollState]',
@@ -1086,34 +1815,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImpor
1086
1815
  type: Input
1087
1816
  }], observerThreshold: [{
1088
1817
  type: Input
1089
- }], etObserveScrollState: [{
1090
- type: Output
1818
+ }], valueChange: [{
1819
+ type: Output,
1820
+ args: ['etObserveScrollState']
1091
1821
  }] } });
1092
1822
 
1093
1823
  class RepeatDirective {
1094
- constructor(_mainTemplateRef, _viewContainerRef) {
1095
- this._mainTemplateRef = _mainTemplateRef;
1096
- this._viewContainerRef = _viewContainerRef;
1097
- this._repeatCount = 2;
1098
- }
1099
1824
  get repeatCount() {
1100
1825
  return this._repeatCount;
1101
1826
  }
1102
1827
  set repeatCount(value) {
1103
1828
  this._repeatCount = coerceNumberProperty(value);
1104
- }
1105
- ngOnInit() {
1106
1829
  this._render();
1107
1830
  }
1831
+ constructor(_mainTemplateRef, _viewContainerRef) {
1832
+ this._mainTemplateRef = _mainTemplateRef;
1833
+ this._viewContainerRef = _viewContainerRef;
1834
+ this._repeatCount = 2;
1835
+ }
1108
1836
  _render() {
1837
+ this._viewContainerRef.clear();
1109
1838
  for (let i = 0; i < this.repeatCount; i++) {
1110
1839
  this._viewContainerRef.createEmbeddedView(this._mainTemplateRef);
1111
1840
  }
1112
1841
  }
1113
1842
  }
1114
- RepeatDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: RepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
1115
- RepeatDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: RepeatDirective, isStandalone: true, selector: "[etRepeat]", inputs: { repeatCount: ["etRepeat", "repeatCount"] }, ngImport: i0 });
1116
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: RepeatDirective, decorators: [{
1843
+ RepeatDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
1844
+ RepeatDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: RepeatDirective, isStandalone: true, selector: "[etRepeat]", inputs: { repeatCount: ["etRepeat", "repeatCount"] }, ngImport: i0 });
1845
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: RepeatDirective, decorators: [{
1117
1846
  type: Directive,
1118
1847
  args: [{
1119
1848
  selector: '[etRepeat]',
@@ -1283,9 +2012,9 @@ class SeoDirective {
1283
2012
  }
1284
2013
  }
1285
2014
  }
1286
- SeoDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SeoDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1287
- SeoDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.2", type: SeoDirective, isStandalone: true, providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }], ngImport: i0 });
1288
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: SeoDirective, decorators: [{
2015
+ SeoDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SeoDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
2016
+ SeoDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: SeoDirective, isStandalone: true, providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }], ngImport: i0 });
2017
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: SeoDirective, decorators: [{
1289
2018
  type: Directive,
1290
2019
  args: [{
1291
2020
  standalone: true,
@@ -1332,9 +2061,9 @@ class NormalizeGameResultTypePipe {
1332
2061
  this.transform = normalizeGameResultType;
1333
2062
  }
1334
2063
  }
1335
- NormalizeGameResultTypePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NormalizeGameResultTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1336
- NormalizeGameResultTypePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: NormalizeGameResultTypePipe, isStandalone: true, name: "etNormalizeGameResultType" });
1337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NormalizeGameResultTypePipe, decorators: [{
2064
+ NormalizeGameResultTypePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NormalizeGameResultTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2065
+ NormalizeGameResultTypePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: NormalizeGameResultTypePipe, isStandalone: true, name: "etNormalizeGameResultType" });
2066
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NormalizeGameResultTypePipe, decorators: [{
1338
2067
  type: Pipe,
1339
2068
  args: [{ name: 'etNormalizeGameResultType', standalone: true }]
1340
2069
  }] });
@@ -1363,9 +2092,9 @@ class NormalizeMatchStatePipe {
1363
2092
  this.transform = normalizeMatchState;
1364
2093
  }
1365
2094
  }
1366
- NormalizeMatchStatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1367
- NormalizeMatchStatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchStatePipe, isStandalone: true, name: "etNormalizeMatchState" });
1368
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchStatePipe, decorators: [{
2095
+ NormalizeMatchStatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2096
+ NormalizeMatchStatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchStatePipe, isStandalone: true, name: "etNormalizeMatchState" });
2097
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchStatePipe, decorators: [{
1369
2098
  type: Pipe,
1370
2099
  args: [{ name: 'etNormalizeMatchState', standalone: true }]
1371
2100
  }] });
@@ -1421,9 +2150,9 @@ class NormalizeMatchParticipantsPipe {
1421
2150
  this.transform = normalizeMatchParticipants;
1422
2151
  }
1423
2152
  }
1424
- NormalizeMatchParticipantsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchParticipantsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1425
- NormalizeMatchParticipantsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchParticipantsPipe, isStandalone: true, name: "etNormalizeMatchParticipants" });
1426
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchParticipantsPipe, decorators: [{
2153
+ NormalizeMatchParticipantsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchParticipantsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2154
+ NormalizeMatchParticipantsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchParticipantsPipe, isStandalone: true, name: "etNormalizeMatchParticipants" });
2155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchParticipantsPipe, decorators: [{
1427
2156
  type: Pipe,
1428
2157
  args: [{ name: 'etNormalizeMatchParticipants', standalone: true }]
1429
2158
  }] });
@@ -1558,9 +2287,9 @@ class NormalizeMatchScorePipe {
1558
2287
  this.transform = normalizeMatchScore;
1559
2288
  }
1560
2289
  }
1561
- NormalizeMatchScorePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchScorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1562
- NormalizeMatchScorePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchScorePipe, isStandalone: true, name: "etNormalizeMatchScore" });
1563
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchScorePipe, decorators: [{
2290
+ NormalizeMatchScorePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchScorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2291
+ NormalizeMatchScorePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchScorePipe, isStandalone: true, name: "etNormalizeMatchScore" });
2292
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchScorePipe, decorators: [{
1564
2293
  type: Pipe,
1565
2294
  args: [{ name: 'etNormalizeMatchScore', standalone: true }]
1566
2295
  }] });
@@ -1608,9 +2337,9 @@ class NormalizeMatchTypePipe {
1608
2337
  this.transform = normalizeMatchType;
1609
2338
  }
1610
2339
  }
1611
- NormalizeMatchTypePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1612
- NormalizeMatchTypePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchTypePipe, isStandalone: true, name: "etNormalizeMatchType" });
1613
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: NormalizeMatchTypePipe, decorators: [{
2340
+ NormalizeMatchTypePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2341
+ NormalizeMatchTypePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchTypePipe, isStandalone: true, name: "etNormalizeMatchType" });
2342
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: NormalizeMatchTypePipe, decorators: [{
1614
2343
  type: Pipe,
1615
2344
  args: [{ name: 'etNormalizeMatchType', standalone: true }]
1616
2345
  }] });
@@ -1625,16 +2354,95 @@ class ToArrayPipe {
1625
2354
  this.transform = toArray;
1626
2355
  }
1627
2356
  }
1628
- ToArrayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1629
- ToArrayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.0.2", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" });
1630
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.2", ngImport: i0, type: ToArrayPipe, decorators: [{
2357
+ ToArrayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
2358
+ ToArrayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.1.4", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" });
2359
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: ToArrayPipe, decorators: [{
1631
2360
  type: Pipe,
1632
2361
  args: [{ name: 'toArray', standalone: true }]
1633
2362
  }] });
1634
2363
 
2364
+ var _a;
2365
+ class TypedQueryList extends QueryList {
2366
+ constructor() {
2367
+ super(...arguments);
2368
+ this[_a] = () => {
2369
+ return super[Symbol.iterator]();
2370
+ };
2371
+ }
2372
+ get changes() {
2373
+ return super.changes;
2374
+ }
2375
+ toArray() {
2376
+ return super.toArray();
2377
+ }
2378
+ forEach(fn) {
2379
+ super.forEach(fn);
2380
+ }
2381
+ filter(fn) {
2382
+ return super.filter(fn);
2383
+ }
2384
+ map(fn) {
2385
+ return super.map(fn);
2386
+ }
2387
+ reduce(fn, initialValue) {
2388
+ return super.reduce(fn, initialValue);
2389
+ }
2390
+ some(fn) {
2391
+ return super.some(fn);
2392
+ }
2393
+ find(fn) {
2394
+ return super.find(fn);
2395
+ }
2396
+ }
2397
+ _a = Symbol.iterator;
2398
+
2399
+ const IS_ARRAY_NOT_EMPTY = 'isArrayNotEmpty';
2400
+ const IsArrayNotEmpty = (control) => {
2401
+ const value = control.value;
2402
+ if (!value) {
2403
+ return null;
2404
+ }
2405
+ return value.length > 0 ? null : { [IS_ARRAY_NOT_EMPTY]: true };
2406
+ };
2407
+
2408
+ const IS_EMAIL = 'isEmail';
2409
+ const IsEmail = (control) => {
2410
+ const value = control.value;
2411
+ if (!value) {
2412
+ return null;
2413
+ }
2414
+ const regex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
2415
+ return regex.test(value) ? null : { [IS_EMAIL]: true };
2416
+ };
2417
+
2418
+ const MUST_MATCH = 'mustMatch';
2419
+ const MustMatch = (controlName, matchingControlName) => {
2420
+ return (formGroup) => {
2421
+ const control = formGroup.controls[controlName];
2422
+ const matchingControl = formGroup.controls[matchingControlName];
2423
+ // set error on matchingControl if validation fails
2424
+ if (matchingControl.errors && !matchingControl.errors[MUST_MATCH]) {
2425
+ return;
2426
+ }
2427
+ // set error on matchingControl if validation fails
2428
+ if (control.value !== matchingControl.value) {
2429
+ matchingControl.setErrors({ [MUST_MATCH]: true });
2430
+ }
2431
+ else {
2432
+ matchingControl.setErrors(null);
2433
+ }
2434
+ };
2435
+ };
2436
+
2437
+ const Validators = {
2438
+ MustMatch,
2439
+ IsEmail,
2440
+ IsArrayNotEmpty,
2441
+ };
2442
+
1635
2443
  /**
1636
2444
  * Generated bundle index. Do not edit.
1637
2445
  */
1638
2446
 
1639
- export { ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DestroyDirective, DestroyService, FocusVisibleService, LetContext, LetDirective, Memo, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SeoDirective, ToArrayPipe, VIEWPORT_CONFIG, ViewportService, clamp, elementCanScroll, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, isGroupMatch, isKnockoutMatch, mergeSeoConfig, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, toArray, toArrayTrackByFn };
2447
+ export { ANIMATABLE_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AnimatableDirective, AnimatedLifecycleDirective, ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DestroyService, FocusVisibleService, IS_ARRAY_NOT_EMPTY, IS_EMAIL, IsArrayNotEmpty, IsEmail, LetContext, LetDirective, MUST_MATCH, Memo, MustMatch, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RouterStateService, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SeoDirective, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, Validators, ViewportService, clamp, clone, createMediaQueryObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, forceReflow, fromNextFrame, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isGroupMatch, isKnockoutMatch, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, routerDisableScrollTop, setCookie, toArray, toArrayTrackByFn };
1640
2448
  //# sourceMappingURL=ethlete-core.mjs.map