@ethlete/core 1.4.2 → 1.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/esm2020/lib/components/structured-data/structured-data.component.mjs +3 -3
  2. package/esm2020/lib/directives/animatable/animatable.directive.mjs +3 -3
  3. package/esm2020/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +3 -3
  4. package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +3 -3
  5. package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +3 -3
  6. package/esm2020/lib/directives/let/let.directive.mjs +3 -3
  7. package/esm2020/lib/directives/observe-content/observe-content.directive.mjs +3 -3
  8. package/esm2020/lib/directives/observe-resize/observe-resize.directive.mjs +3 -3
  9. package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +5 -5
  10. package/esm2020/lib/directives/repeat/repeat.directive.mjs +3 -3
  11. package/esm2020/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +3 -3
  12. package/esm2020/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +3 -3
  13. package/esm2020/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +3 -3
  14. package/esm2020/lib/directives/seo/seo.directive.mjs +3 -3
  15. package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +3 -3
  16. package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +3 -3
  17. package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +3 -3
  18. package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +3 -3
  19. package/esm2020/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +3 -3
  20. package/esm2020/lib/pipes/to-array/to-array.pipe.mjs +3 -3
  21. package/esm2020/lib/services/click-observer.service.mjs +6 -6
  22. package/esm2020/lib/services/content-observer.service.mjs +6 -6
  23. package/esm2020/lib/services/destroy.service.mjs +3 -3
  24. package/esm2020/lib/services/focus-visible.service.mjs +3 -3
  25. package/esm2020/lib/services/resize-observer.service.mjs +6 -6
  26. package/esm2020/lib/services/router-state.service.mjs +3 -3
  27. package/esm2020/lib/services/viewport.service.mjs +3 -3
  28. package/esm2020/lib/utils/public-api.mjs +2 -1
  29. package/esm2020/lib/utils/smart-block-scroll-strategy.utils.mjs +70 -0
  30. package/fesm2015/ethlete-core.mjs +163 -94
  31. package/fesm2015/ethlete-core.mjs.map +1 -1
  32. package/fesm2020/ethlete-core.mjs +162 -94
  33. package/fesm2020/ethlete-core.mjs.map +1 -1
  34. package/lib/utils/public-api.d.ts +1 -0
  35. package/lib/utils/smart-block-scroll-strategy.utils.d.ts +18 -0
  36. package/package.json +9 -9
@@ -14,9 +14,9 @@ export class StructuredDataComponent {
14
14
  return this._sanitizer.bypassSecurityTrustHtml(html);
15
15
  }
16
16
  }
17
- StructuredDataComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: StructuredDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
- StructuredDataComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.1", 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 });
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: StructuredDataComponent, decorators: [{
17
+ StructuredDataComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: StructuredDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
18
+ StructuredDataComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.2", 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 });
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: StructuredDataComponent, decorators: [{
20
20
  type: Component,
21
21
  args: [{
22
22
  selector: 'et-structured-data',
@@ -86,15 +86,15 @@ export class AnimatableDirective {
86
86
  }
87
87
  }
88
88
  }
89
- AnimatableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: AnimatableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
90
- AnimatableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: AnimatableDirective, isStandalone: true, selector: "[etAnimatable]", inputs: { animatedElement: ["etAnimatable", "animatedElement"] }, providers: [
89
+ AnimatableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AnimatableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
90
+ AnimatableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: AnimatableDirective, isStandalone: true, selector: "[etAnimatable]", inputs: { animatedElement: ["etAnimatable", "animatedElement"] }, providers: [
91
91
  {
92
92
  provide: ANIMATABLE_TOKEN,
93
93
  useExisting: AnimatableDirective,
94
94
  },
95
95
  DestroyService,
96
96
  ], exportAs: ["etAnimatable"], ngImport: i0 });
97
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: AnimatableDirective, decorators: [{
97
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AnimatableDirective, decorators: [{
98
98
  type: Directive,
99
99
  args: [{
100
100
  selector: '[etAnimatable]',
@@ -88,15 +88,15 @@ export class AnimatedLifecycleDirective {
88
88
  .subscribe();
89
89
  }
90
90
  }
91
- AnimatedLifecycleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: AnimatedLifecycleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
92
- AnimatedLifecycleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: AnimatedLifecycleDirective, isStandalone: true, selector: "[etAnimatedLifecycle]", providers: [
91
+ AnimatedLifecycleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AnimatedLifecycleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
92
+ AnimatedLifecycleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: AnimatedLifecycleDirective, isStandalone: true, selector: "[etAnimatedLifecycle]", providers: [
93
93
  {
94
94
  provide: ANIMATED_LIFECYCLE_TOKEN,
95
95
  useExisting: AnimatedLifecycleDirective,
96
96
  },
97
97
  DestroyService,
98
98
  ], exportAs: ["etAnimatedLifecycle"], hostDirectives: [{ directive: i1.AnimatableDirective }], ngImport: i0 });
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: AnimatedLifecycleDirective, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: AnimatedLifecycleDirective, decorators: [{
100
100
  type: Directive,
101
101
  args: [{
102
102
  selector: '[etAnimatedLifecycle]',
@@ -23,9 +23,9 @@ export class ClickOutsideDirective {
23
23
  this._subscription?.unsubscribe();
24
24
  }
25
25
  }
26
- ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClickOutsideDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
27
- ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: ClickOutsideDirective, isStandalone: true, selector: "[etClickOutside]", outputs: { etClickOutside: "etClickOutside" }, ngImport: i0 });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClickOutsideDirective, decorators: [{
26
+ ClickOutsideDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClickOutsideDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
27
+ ClickOutsideDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ClickOutsideDirective, isStandalone: true, selector: "[etClickOutside]", outputs: { etClickOutside: "etClickOutside" }, ngImport: i0 });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClickOutsideDirective, decorators: [{
29
29
  type: Directive,
30
30
  args: [{
31
31
  selector: '[etClickOutside]',
@@ -130,9 +130,9 @@ export class CursorDragScrollDirective {
130
130
  }
131
131
  }
132
132
  }
133
- CursorDragScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: CursorDragScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
134
- CursorDragScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: CursorDragScrollDirective, isStandalone: true, selector: "[etCursorDragScroll]", inputs: { enabled: ["etCursorDragScroll", "enabled"] }, providers: [DestroyService], exportAs: ["etCursorDragScroll"], ngImport: i0 });
135
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: CursorDragScrollDirective, decorators: [{
133
+ CursorDragScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CursorDragScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
134
+ CursorDragScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: CursorDragScrollDirective, isStandalone: true, selector: "[etCursorDragScroll]", inputs: { enabled: ["etCursorDragScroll", "enabled"] }, providers: [DestroyService], exportAs: ["etCursorDragScroll"], ngImport: i0 });
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: CursorDragScrollDirective, decorators: [{
136
136
  type: Directive,
137
137
  args: [{
138
138
  selector: '[etCursorDragScroll]',
@@ -26,9 +26,9 @@ export class LetDirective {
26
26
  }
27
27
  }
28
28
  }
29
- LetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: LetDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
30
- LetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: LetDirective, isStandalone: true, selector: "[etLet]", inputs: { etLet: "etLet" }, ngImport: i0 });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: LetDirective, decorators: [{
29
+ LetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: LetDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive });
30
+ LetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: LetDirective, isStandalone: true, selector: "[etLet]", inputs: { etLet: "etLet" }, ngImport: i0 });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: LetDirective, decorators: [{
32
32
  type: Directive,
33
33
  args: [{
34
34
  selector: '[etLet]',
@@ -46,9 +46,9 @@ export class ObserveContentDirective {
46
46
  this._currentSubscription?.unsubscribe();
47
47
  }
48
48
  }
49
- ObserveContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ObserveContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
50
- ObserveContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: ObserveContentDirective, isStandalone: true, selector: "[etObserveContent]", inputs: { disabled: ["etObserveContentDisabled", "disabled"], debounce: ["etObserveContentDebounce", "debounce"] }, outputs: { valueChange: "etObserveContent" }, exportAs: ["etObserveContent"], ngImport: i0 });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ObserveContentDirective, decorators: [{
49
+ ObserveContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObserveContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
50
+ ObserveContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ObserveContentDirective, isStandalone: true, selector: "[etObserveContent]", inputs: { disabled: ["etObserveContentDisabled", "disabled"], debounce: ["etObserveContentDebounce", "debounce"] }, outputs: { valueChange: "etObserveContent" }, exportAs: ["etObserveContent"], ngImport: i0 });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObserveContentDirective, decorators: [{
52
52
  type: Directive,
53
53
  args: [{
54
54
  selector: '[etObserveContent]',
@@ -46,9 +46,9 @@ export class ObserveResizeDirective {
46
46
  this._currentSubscription?.unsubscribe();
47
47
  }
48
48
  }
49
- ObserveResizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ObserveResizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
50
- ObserveResizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: ObserveResizeDirective, isStandalone: true, selector: "[etObserveResize]", inputs: { disabled: ["etObserveResizeDisabled", "disabled"], debounce: ["etObserveResizeDebounce", "debounce"] }, outputs: { valueChange: "etObserveResize" }, exportAs: ["etObserveResize"], ngImport: i0 });
51
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ObserveResizeDirective, decorators: [{
49
+ ObserveResizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObserveResizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
50
+ ObserveResizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ObserveResizeDirective, isStandalone: true, selector: "[etObserveResize]", inputs: { disabled: ["etObserveResizeDisabled", "disabled"], debounce: ["etObserveResizeDebounce", "debounce"] }, outputs: { valueChange: "etObserveResize" }, exportAs: ["etObserveResize"], ngImport: i0 });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObserveResizeDirective, decorators: [{
52
52
  type: Directive,
53
53
  args: [{
54
54
  selector: '[etObserveResize]',
@@ -58,7 +58,7 @@ export class ObserveScrollStateDirective {
58
58
  ngOnInit() {
59
59
  this._contentObserverService
60
60
  .observe(this._elementRef.nativeElement)
61
- .pipe(tap(() => this._checkChildren()), takeUntil(this._destroy$))
61
+ .pipe(debounceTime(25), tap(() => this._checkChildren()), takeUntil(this._destroy$))
62
62
  .subscribe();
63
63
  this._resizeObserverService
64
64
  .observe(this._elementRef.nativeElement)
@@ -143,15 +143,15 @@ export class ObserveScrollStateDirective {
143
143
  return element;
144
144
  }
145
145
  }
146
- ObserveScrollStateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ObserveScrollStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
147
- ObserveScrollStateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: ObserveScrollStateDirective, isStandalone: true, selector: "[etObserveScrollState]", inputs: { observerRootMargin: "observerRootMargin", observerThreshold: "observerThreshold" }, outputs: { valueChange: "etObserveScrollState" }, providers: [
146
+ ObserveScrollStateDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObserveScrollStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
147
+ ObserveScrollStateDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ObserveScrollStateDirective, isStandalone: true, selector: "[etObserveScrollState]", inputs: { observerRootMargin: "observerRootMargin", observerThreshold: "observerThreshold" }, outputs: { valueChange: "etObserveScrollState" }, providers: [
148
148
  {
149
149
  provide: OBSERVE_SCROLL_STATE,
150
150
  useExisting: ObserveScrollStateDirective,
151
151
  },
152
152
  DestroyService,
153
153
  ], exportAs: ["etObserveScrollState"], ngImport: i0 });
154
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ObserveScrollStateDirective, decorators: [{
154
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ObserveScrollStateDirective, decorators: [{
155
155
  type: Directive,
156
156
  args: [{
157
157
  selector: '[etObserveScrollState]',
@@ -173,4 +173,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImpor
173
173
  type: Output,
174
174
  args: ['etObserveScrollState']
175
175
  }] } });
176
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZS1zY3JvbGwtc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9vYnNlcnZlLXNjcm9sbC1zdGF0ZS9vYnNlcnZlLXNjcm9sbC1zdGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFleEUsTUFBTSxPQUFPLDJCQUEyQjtJQVp4QztRQWFtQixjQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUU1RCxnQkFBVyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDMUQsNEJBQXVCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7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QUVVLDJCQUEyQjtrQkFadkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxvQkFBb0I7NEJBQzdCLFdBQVcsNkJBQTZCO3lCQUN6Qzt3QkFDRCxjQUFjO3FCQUNmO2lCQUNGOzhCQTRDSyxrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBVUYsaUJBQWlCO3NCQURwQixLQUFLO2dCQWlCTixXQUFXO3NCQURWLE1BQU07dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZW50T2JzZXJ2ZXJTZXJ2aWNlLCBEZXN0cm95U2VydmljZSwgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZWxlbWVudENhblNjcm9sbCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNDUk9MTF9PQlNFUlZFUl9GSVJTVF9FTEVNRU5UX0NMQVNTIH0gZnJvbSAnLi4vc2Nyb2xsLW9ic2VydmVyLWZpcnN0LWVsZW1lbnQnO1xuaW1wb3J0IHsgU0NST0xMX09CU0VSVkVSX0lHTk9SRV9UQVJHRVRfQ0xBU1MgfSBmcm9tICcuLi9zY3JvbGwtb2JzZXJ2ZXItaWdub3JlLXRhcmdldCc7XG5pbXBvcnQgeyBTQ1JPTExfT0JTRVJWRVJfTEFTVF9FTEVNRU5UX0NMQVNTIH0gZnJvbSAnLi4vc2Nyb2xsLW9ic2VydmVyLWxhc3QtZWxlbWVudCc7XG5pbXBvcnQgeyBPQlNFUlZFX1NDUk9MTF9TVEFURSB9IGZyb20gJy4vb2JzZXJ2ZS1zY3JvbGwtc3RhdGUuY29uc3RhbnRzJztcbmltcG9ydCB7IE9ic2VydmVkU2Nyb2xsYWJsZUNoaWxkLCBTY3JvbGxPYnNlcnZlclNjcm9sbFN0YXRlIH0gZnJvbSAnLi9vYnNlcnZlLXNjcm9sbC1zdGF0ZS50eXBlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tldE9ic2VydmVTY3JvbGxTdGF0ZV0nLFxuICBleHBvcnRBczogJ2V0T2JzZXJ2ZVNjcm9sbFN0YXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogT0JTRVJWRV9TQ1JPTExfU1RBVEUsXG4gICAgICB1c2VFeGlzdGluZzogT2JzZXJ2ZVNjcm9sbFN0YXRlRGlyZWN0aXZlLFxuICAgIH0sXG4gICAgRGVzdHJveVNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9ic2VydmVTY3JvbGxTdGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveVNlcnZpY2UsIHsgaG9zdDogdHJ1ZSB9KS5kZXN0cm95JDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudE9ic2VydmVyU2VydmljZSA9IGluamVjdChDb250ZW50T2JzZXJ2ZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlID0gaW5qZWN0KFJlc2l6ZU9ic2VydmVyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb2JzZXJ2ZWRDaGlsZHJlbiA9IHtcbiAgICBmaXJzdDogdGhpcy5fZmlyc3RDdXJyZW50Q2hpbGQsXG4gICAgbGFzdDogdGhpcy5fbGFzdEN1cnJlbnRDaGlsZCxcbiAgfTtcblxuICBwcml2YXRlIGdldCBfZmlyc3RDdXJyZW50Q2hpbGQoKSB7XG4gICAgY29uc3QgZXhwbGljaXRGaXJzdEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGAuJHtTQ1JPTExfT0JTRVJWRVJfRklSU1RfRUxFTUVOVF9DTEFTU31gLFxuICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgaWYgKGV4cGxpY2l0Rmlyc3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gZXhwbGljaXRGaXJzdEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0Tm9uSWdub3JlZENoaWxkKGVsZW1lbnQsICduZXh0Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfbGFzdEN1cnJlbnRDaGlsZCgpIHtcbiAgICBjb25zdCBleHBsaWNpdExhc3RFbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBgLiR7U0NST0xMX09CU0VSVkVSX0xBU1RfRUxFTUVOVF9DTEFTU31gLFxuICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgaWYgKGV4cGxpY2l0TGFzdEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBleHBsaWNpdExhc3RFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMVxuICAgIF0gYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXMuX2dldE5vbklnbm9yZWRDaGlsZChlbGVtZW50LCAncHJldmlvdXMnKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBvYnNlcnZlclJvb3RNYXJnaW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm9vdE1hcmdpbjtcbiAgfVxuICBzZXQgb2JzZXJ2ZXJSb290TWFyZ2luKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX3Jvb3RNYXJnaW4gPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfcm9vdE1hcmdpbiA9IDA7XG5cbiAgQElucHV0KClcbiAgZ2V0IG9ic2VydmVyVGhyZXNob2xkKCk6IG51bWJlciB8IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG4gIHNldCBvYnNlcnZlclRocmVzaG9sZCh2YWx1ZTogTnVtYmVySW5wdXQgfCBudW1iZXJbXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhpcy5fdGhyZXNob2xkID0gdmFsdWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGhyZXNob2xkID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX3RocmVzaG9sZDogbnVtYmVyIHwgbnVtYmVyW10gPSBbMC45OTk5OSwgMC45OTk5LCAwLjk5OSwgMC45OSwgMV07XG5cbiAgcHJpdmF0ZSBfaW50ZXJzZWN0aW9uT2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgnZXRPYnNlcnZlU2Nyb2xsU3RhdGUnKVxuICB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsT2JzZXJ2ZXJTY3JvbGxTdGF0ZT4oKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250ZW50T2JzZXJ2ZXJTZXJ2aWNlXG4gICAgICAub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2NoZWNrQ2hpbGRyZW4oKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlclNlcnZpY2VcbiAgICAgIC5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjUpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhblNjcm9sbCA9IGVsZW1lbnRDYW5TY3JvbGwodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICBpZiAoKCF0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciAmJiBjYW5TY3JvbGwpIHx8ICh0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciAmJiAhY2FuU2Nyb2xsKSkge1xuICAgICAgICAgICAgdGhpcy5fY2hlY2tDaGlsZHJlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9jaGVja0NoaWxkcmVuKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGVhckludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0NoaWxkcmVuKCkge1xuICAgIHRoaXMuX2NsZWFySW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuX2ZpcnN0Q3VycmVudENoaWxkID09PSB0aGlzLl9sYXN0Q3VycmVudENoaWxkIHx8XG4gICAgICAhdGhpcy5fZmlyc3RDdXJyZW50Q2hpbGQgfHxcbiAgICAgICF0aGlzLl9sYXN0Q3VycmVudENoaWxkIHx8XG4gICAgICAhZWxlbWVudENhblNjcm9sbCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgKSB7XG4gICAgICB0aGlzLl91bm9ic2VydmVDaGlsZCgnZmlyc3QnKTtcbiAgICAgIHRoaXMuX3Vub2JzZXJ2ZUNoaWxkKCdsYXN0Jyk7XG5cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgIGlzQXRTdGFydDogdHJ1ZSxcbiAgICAgICAgaXNBdEVuZDogdHJ1ZSxcbiAgICAgICAgY2FuU2Nyb2xsOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciA9IHRoaXMuX2luaXRpYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcblxuICAgICAgdGhpcy5fb2JzZXJ2ZUNoaWxkKCdmaXJzdCcsIHRoaXMuX2ZpcnN0Q3VycmVudENoaWxkKTtcbiAgICAgIHRoaXMuX29ic2VydmVDaGlsZCgnbGFzdCcsIHRoaXMuX2xhc3RDdXJyZW50Q2hpbGQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoZW50cmllcykgPT4ge1xuICAgICAgICBjb25zdCB7IGZpcnN0LCBsYXN0IH0gPSB0aGlzLl9vYnNlcnZlZENoaWxkcmVuO1xuXG4gICAgICAgIGNvbnN0IGlzQXRTdGFydCA9IGVudHJpZXMuZmluZCgoZW50cnkpID0+IGVudHJ5LnRhcmdldCA9PT0gZmlyc3QpPy5pc0ludGVyc2VjdGluZyA/PyBmYWxzZTtcbiAgICAgICAgY29uc3QgaXNBdEVuZCA9IGVudHJpZXMuZmluZCgoZW50cnkpID0+IGVudHJ5LnRhcmdldCA9PT0gbGFzdCk/LmlzSW50ZXJzZWN0aW5nID8/IGZhbHNlO1xuXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgaXNBdFN0YXJ0LFxuICAgICAgICAgIGlzQXRFbmQsXG4gICAgICAgICAgY2FuU2Nyb2xsOiAhaXNBdFN0YXJ0IHx8ICFpc0F0RW5kLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJvb3Q6IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgcm9vdE1hcmdpbjogdGhpcy5fcm9vdE1hcmdpbiA/IGAke3RoaXMuX3Jvb3RNYXJnaW59cHhgIDogdW5kZWZpbmVkLFxuICAgICAgICB0aHJlc2hvbGQ6IHRoaXMuX3RocmVzaG9sZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBvYnNlcnZlcjtcbiAgfVxuXG4gIHByaXZhdGUgX29ic2VydmVDaGlsZChjaGlsZDogT2JzZXJ2ZWRTY3JvbGxhYmxlQ2hpbGQsIGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI/Lm9ic2VydmUoZWxlbWVudCk7XG4gICAgdGhpcy5fb2JzZXJ2ZWRDaGlsZHJlbltjaGlsZF0gPSBlbGVtZW50O1xuXG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGBldC1zY3JvbGwtb2JzZXJ2ZXItb2JzZXJ2aW5nLSR7Y2hpbGR9LWVsZW1lbnRgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Vub2JzZXJ2ZUNoaWxkKGNoaWxkOiBPYnNlcnZlZFNjcm9sbGFibGVDaGlsZCkge1xuICAgIGNvbnN0IG9ic2VydmVkQ2hpbGQgPSB0aGlzLl9vYnNlcnZlZENoaWxkcmVuW2NoaWxkXTtcblxuICAgIGlmICghb2JzZXJ2ZWRDaGlsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG9ic2VydmVkQ2hpbGQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICdldC1zY3JvbGwtb2JzZXJ2ZXItb2JzZXJ2aW5nLWZpcnN0LWVsZW1lbnQnLFxuICAgICAgJ2V0LXNjcm9sbC1vYnNlcnZlci1vYnNlcnZpbmctbGFzdC1lbGVtZW50JyxcbiAgICApO1xuXG4gICAgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LnVub2JzZXJ2ZShvYnNlcnZlZENoaWxkKTtcbiAgICB0aGlzLl9vYnNlcnZlZENoaWxkcmVuW2NoaWxkXSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhckludGVyc2VjdGlvbk9ic2VydmVyKCkge1xuICAgIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Tm9uSWdub3JlZENoaWxkKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCwgZGlyZWN0aW9uOiAncHJldmlvdXMnIHwgJ25leHQnKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoU0NST0xMX09CU0VSVkVSX0lHTk9SRV9UQVJHRVRfQ0xBU1MpKSB7XG4gICAgICBjb25zdCBuZXh0RWxlbWVudCA9IGVsZW1lbnRbYCR7ZGlyZWN0aW9ufUVsZW1lbnRTaWJsaW5nYF0gYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICBpZiAoIW5leHRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fZ2V0Tm9uSWdub3JlZENoaWxkKG5leHRFbGVtZW50LCBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG59XG4iXX0=
176
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZS1zY3JvbGwtc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9vYnNlcnZlLXNjcm9sbC1zdGF0ZS9vYnNlcnZlLXNjcm9sbC1zdGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFleEUsTUFBTSxPQUFPLDJCQUEyQjtJQVp4QztRQWFtQixjQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUU1RCxnQkFBVyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDMUQsNEJBQXVCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7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MkI7U0FDekM7UUFDRCxjQUFjO0tBQ2Y7MkZBRVUsMkJBQTJCO2tCQVp2QyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSx3QkFBd0I7b0JBQ2xDLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLG9CQUFvQjs0QkFDN0IsV0FBVyw2QkFBNkI7eUJBQ3pDO3dCQUNELGNBQWM7cUJBQ2Y7aUJBQ0Y7OEJBNENLLGtCQUFrQjtzQkFEckIsS0FBSztnQkFVRixpQkFBaUI7c0JBRHBCLEtBQUs7Z0JBaUJOLFdBQVc7c0JBRFYsTUFBTTt1QkFBQyxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbnRlbnRPYnNlcnZlclNlcnZpY2UsIERlc3Ryb3lTZXJ2aWNlLCBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5pbXBvcnQgeyBlbGVtZW50Q2FuU2Nyb2xsIH0gZnJvbSAnLi4vLi4vdXRpbHMnO1xuaW1wb3J0IHsgU0NST0xMX09CU0VSVkVSX0ZJUlNUX0VMRU1FTlRfQ0xBU1MgfSBmcm9tICcuLi9zY3JvbGwtb2JzZXJ2ZXItZmlyc3QtZWxlbWVudCc7XG5pbXBvcnQgeyBTQ1JPTExfT0JTRVJWRVJfSUdOT1JFX1RBUkdFVF9DTEFTUyB9IGZyb20gJy4uL3Njcm9sbC1vYnNlcnZlci1pZ25vcmUtdGFyZ2V0JztcbmltcG9ydCB7IFNDUk9MTF9PQlNFUlZFUl9MQVNUX0VMRU1FTlRfQ0xBU1MgfSBmcm9tICcuLi9zY3JvbGwtb2JzZXJ2ZXItbGFzdC1lbGVtZW50JztcbmltcG9ydCB7IE9CU0VSVkVfU0NST0xMX1NUQVRFIH0gZnJvbSAnLi9vYnNlcnZlLXNjcm9sbC1zdGF0ZS5jb25zdGFudHMnO1xuaW1wb3J0IHsgT2JzZXJ2ZWRTY3JvbGxhYmxlQ2hpbGQsIFNjcm9sbE9ic2VydmVyU2Nyb2xsU3RhdGUgfSBmcm9tICcuL29ic2VydmUtc2Nyb2xsLXN0YXRlLnR5cGVzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2V0T2JzZXJ2ZVNjcm9sbFN0YXRlXScsXG4gIGV4cG9ydEFzOiAnZXRPYnNlcnZlU2Nyb2xsU3RhdGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBPQlNFUlZFX1NDUk9MTF9TVEFURSxcbiAgICAgIHVzZUV4aXN0aW5nOiBPYnNlcnZlU2Nyb2xsU3RhdGVEaXJlY3RpdmUsXG4gICAgfSxcbiAgICBEZXN0cm95U2VydmljZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgT2JzZXJ2ZVNjcm9sbFN0YXRlRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGluamVjdChEZXN0cm95U2VydmljZSwgeyBob3N0OiB0cnVlIH0pLmRlc3Ryb3kkO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb250ZW50T2JzZXJ2ZXJTZXJ2aWNlID0gaW5qZWN0KENvbnRlbnRPYnNlcnZlclNlcnZpY2UpO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNpemVPYnNlcnZlclNlcnZpY2UgPSBpbmplY3QoUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vYnNlcnZlZENoaWxkcmVuID0ge1xuICAgIGZpcnN0OiB0aGlzLl9maXJzdEN1cnJlbnRDaGlsZCxcbiAgICBsYXN0OiB0aGlzLl9sYXN0Q3VycmVudENoaWxkLFxuICB9O1xuXG4gIHByaXZhdGUgZ2V0IF9maXJzdEN1cnJlbnRDaGlsZCgpIHtcbiAgICBjb25zdCBleHBsaWNpdEZpcnN0RWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKFxuICAgICAgYC4ke1NDUk9MTF9PQlNFUlZFUl9GSVJTVF9FTEVNRU5UX0NMQVNTfWAsXG4gICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICBpZiAoZXhwbGljaXRGaXJzdEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBleHBsaWNpdEZpcnN0RWxlbWVudDtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdIGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcblxuICAgIHJldHVybiB0aGlzLl9nZXROb25JZ25vcmVkQ2hpbGQoZWxlbWVudCwgJ25leHQnKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IF9sYXN0Q3VycmVudENoaWxkKCkge1xuICAgIGNvbnN0IGV4cGxpY2l0TGFzdEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGAuJHtTQ1JPTExfT0JTRVJWRVJfTEFTVF9FTEVNRU5UX0NMQVNTfWAsXG4gICAgKSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICBpZiAoZXhwbGljaXRMYXN0RWxlbWVudCkge1xuICAgICAgcmV0dXJuIGV4cGxpY2l0TGFzdEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbltcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggLSAxXG4gICAgXSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0Tm9uSWdub3JlZENoaWxkKGVsZW1lbnQsICdwcmV2aW91cycpO1xuICB9XG5cbiAgQElucHV0KClcbiAgZ2V0IG9ic2VydmVyUm9vdE1hcmdpbigpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yb290TWFyZ2luO1xuICB9XG4gIHNldCBvYnNlcnZlclJvb3RNYXJnaW4odmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fcm9vdE1hcmdpbiA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9yb290TWFyZ2luID0gMDtcblxuICBASW5wdXQoKVxuICBnZXQgb2JzZXJ2ZXJUaHJlc2hvbGQoKTogbnVtYmVyIHwgbnVtYmVyW10ge1xuICAgIHJldHVybiB0aGlzLl90aHJlc2hvbGQ7XG4gIH1cbiAgc2V0IG9ic2VydmVyVGhyZXNob2xkKHZhbHVlOiBOdW1iZXJJbnB1dCB8IG51bWJlcltdKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICB0aGlzLl90aHJlc2hvbGQgPSB2YWx1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl90aHJlc2hvbGQgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfdGhyZXNob2xkOiBudW1iZXIgfCBudW1iZXJbXSA9IFswLjk5OTk5LCAwLjk5OTksIDAuOTk5LCAwLjk5LCAxXTtcblxuICBwcml2YXRlIF9pbnRlcnNlY3Rpb25PYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcblxuICBAT3V0cHV0KCdldE9ic2VydmVTY3JvbGxTdGF0ZScpXG4gIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTY3JvbGxPYnNlcnZlclNjcm9sbFN0YXRlPigpO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuX2NvbnRlbnRPYnNlcnZlclNlcnZpY2VcbiAgICAgIC5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjUpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fY2hlY2tDaGlsZHJlbigpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3Jlc2l6ZU9ic2VydmVyU2VydmljZVxuICAgICAgLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KVxuICAgICAgLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgyNSksXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY2FuU2Nyb2xsID0gZWxlbWVudENhblNjcm9sbCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgIGlmICgoIXRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyICYmIGNhblNjcm9sbCkgfHwgKHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyICYmICFjYW5TY3JvbGwpKSB7XG4gICAgICAgICAgICB0aGlzLl9jaGVja0NoaWxkcmVuKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX2NoZWNrQ2hpbGRyZW4oKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuX2NsZWFySW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrQ2hpbGRyZW4oKSB7XG4gICAgdGhpcy5fY2xlYXJJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuXG4gICAgaWYgKFxuICAgICAgdGhpcy5fZmlyc3RDdXJyZW50Q2hpbGQgPT09IHRoaXMuX2xhc3RDdXJyZW50Q2hpbGQgfHxcbiAgICAgICF0aGlzLl9maXJzdEN1cnJlbnRDaGlsZCB8fFxuICAgICAgIXRoaXMuX2xhc3RDdXJyZW50Q2hpbGQgfHxcbiAgICAgICFlbGVtZW50Q2FuU2Nyb2xsKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICApIHtcbiAgICAgIHRoaXMuX3Vub2JzZXJ2ZUNoaWxkKCdmaXJzdCcpO1xuICAgICAgdGhpcy5fdW5vYnNlcnZlQ2hpbGQoJ2xhc3QnKTtcblxuICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgaXNBdFN0YXJ0OiB0cnVlLFxuICAgICAgICBpc0F0RW5kOiB0cnVlLFxuICAgICAgICBjYW5TY3JvbGw6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyID0gdGhpcy5faW5pdGlhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcigpO1xuXG4gICAgICB0aGlzLl9vYnNlcnZlQ2hpbGQoJ2ZpcnN0JywgdGhpcy5fZmlyc3RDdXJyZW50Q2hpbGQpO1xuICAgICAgdGhpcy5fb2JzZXJ2ZUNoaWxkKCdsYXN0JywgdGhpcy5fbGFzdEN1cnJlbnRDaGlsZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfaW5pdGlhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcigpIHtcbiAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihcbiAgICAgIChlbnRyaWVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZmlyc3QsIGxhc3QgfSA9IHRoaXMuX29ic2VydmVkQ2hpbGRyZW47XG5cbiAgICAgICAgY29uc3QgaXNBdFN0YXJ0ID0gZW50cmllcy5maW5kKChlbnRyeSkgPT4gZW50cnkudGFyZ2V0ID09PSBmaXJzdCk/LmlzSW50ZXJzZWN0aW5nID8/IGZhbHNlO1xuICAgICAgICBjb25zdCBpc0F0RW5kID0gZW50cmllcy5maW5kKChlbnRyeSkgPT4gZW50cnkudGFyZ2V0ID09PSBsYXN0KT8uaXNJbnRlcnNlY3RpbmcgPz8gZmFsc2U7XG5cbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBpc0F0U3RhcnQsXG4gICAgICAgICAgaXNBdEVuZCxcbiAgICAgICAgICBjYW5TY3JvbGw6ICFpc0F0U3RhcnQgfHwgIWlzQXRFbmQsXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgcm9vdDogdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LFxuICAgICAgICByb290TWFyZ2luOiB0aGlzLl9yb290TWFyZ2luID8gYCR7dGhpcy5fcm9vdE1hcmdpbn1weGAgOiB1bmRlZmluZWQsXG4gICAgICAgIHRocmVzaG9sZDogdGhpcy5fdGhyZXNob2xkLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIG9ic2VydmVyO1xuICB9XG5cbiAgcHJpdmF0ZSBfb2JzZXJ2ZUNoaWxkKGNoaWxkOiBPYnNlcnZlZFNjcm9sbGFibGVDaGlsZCwgZWxlbWVudDogSFRNTEVsZW1lbnQpIHtcbiAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlcj8ub2JzZXJ2ZShlbGVtZW50KTtcbiAgICB0aGlzLl9vYnNlcnZlZENoaWxkcmVuW2NoaWxkXSA9IGVsZW1lbnQ7XG5cbiAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoYGV0LXNjcm9sbC1vYnNlcnZlci1vYnNlcnZpbmctJHtjaGlsZH0tZWxlbWVudGApO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5vYnNlcnZlQ2hpbGQoY2hpbGQ6IE9ic2VydmVkU2Nyb2xsYWJsZUNoaWxkKSB7XG4gICAgY29uc3Qgb2JzZXJ2ZWRDaGlsZCA9IHRoaXMuX29ic2VydmVkQ2hpbGRyZW5bY2hpbGRdO1xuXG4gICAgaWYgKCFvYnNlcnZlZENoaWxkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgb2JzZXJ2ZWRDaGlsZC5jbGFzc0xpc3QucmVtb3ZlKFxuICAgICAgJ2V0LXNjcm9sbC1vYnNlcnZlci1vYnNlcnZpbmctZmlyc3QtZWxlbWVudCcsXG4gICAgICAnZXQtc2Nyb2xsLW9ic2VydmVyLW9ic2VydmluZy1sYXN0LWVsZW1lbnQnLFxuICAgICk7XG5cbiAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlcj8udW5vYnNlcnZlKG9ic2VydmVkQ2hpbGQpO1xuICAgIHRoaXMuX29ic2VydmVkQ2hpbGRyZW5bY2hpbGRdID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgX2NsZWFySW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9nZXROb25JZ25vcmVkQ2hpbGQoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLCBkaXJlY3Rpb246ICdwcmV2aW91cycgfCAnbmV4dCcpOiBIVE1MRWxlbWVudCB8IG51bGwge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnQ/LmNsYXNzTGlzdC5jb250YWlucyhTQ1JPTExfT0JTRVJWRVJfSUdOT1JFX1RBUkdFVF9DTEFTUykpIHtcbiAgICAgIGNvbnN0IG5leHRFbGVtZW50ID0gZWxlbWVudFtgJHtkaXJlY3Rpb259RWxlbWVudFNpYmxpbmdgXSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICAgIGlmICghbmV4dEVsZW1lbnQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLl9nZXROb25JZ25vcmVkQ2hpbGQobmV4dEVsZW1lbnQsIGRpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cbn1cbiJdfQ==
@@ -21,9 +21,9 @@ export class RepeatDirective {
21
21
  }
22
22
  }
23
23
  }
24
- RepeatDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: RepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
25
- RepeatDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: RepeatDirective, isStandalone: true, selector: "[etRepeat]", inputs: { repeatCount: ["etRepeat", "repeatCount"] }, ngImport: i0 });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: RepeatDirective, decorators: [{
24
+ RepeatDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: RepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
25
+ RepeatDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: RepeatDirective, isStandalone: true, selector: "[etRepeat]", inputs: { repeatCount: ["etRepeat", "repeatCount"] }, ngImport: i0 });
26
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: RepeatDirective, decorators: [{
27
27
  type: Directive,
28
28
  args: [{
29
29
  selector: '[etRepeat]',
@@ -13,9 +13,9 @@ export class ScrollObserverFirstElementDirective {
13
13
  this._isFirstElement = coerceBooleanProperty(value);
14
14
  }
15
15
  }
16
- ScrollObserverFirstElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ScrollObserverFirstElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
17
- ScrollObserverFirstElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: ScrollObserverFirstElementDirective, isStandalone: true, selector: "[etScrollObserverFirstElement]", inputs: { isFirstElement: ["etScrollObserverFirstElement", "isFirstElement"] }, host: { properties: { "class.et-scroll-observer-first-element": "this.isFirstElement" } }, ngImport: i0 });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ScrollObserverFirstElementDirective, decorators: [{
16
+ ScrollObserverFirstElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ScrollObserverFirstElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
17
+ ScrollObserverFirstElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ScrollObserverFirstElementDirective, isStandalone: true, selector: "[etScrollObserverFirstElement]", inputs: { isFirstElement: ["etScrollObserverFirstElement", "isFirstElement"] }, host: { properties: { "class.et-scroll-observer-first-element": "this.isFirstElement" } }, ngImport: i0 });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ScrollObserverFirstElementDirective, decorators: [{
19
19
  type: Directive,
20
20
  args: [{
21
21
  selector: '[etScrollObserverFirstElement]',
@@ -3,9 +3,9 @@ import * as i0 from "@angular/core";
3
3
  export const SCROLL_OBSERVER_IGNORE_TARGET_CLASS = 'et-scroll-observer-ignore-target';
4
4
  export class ScrollObserverIgnoreTargetDirective {
5
5
  }
6
- ScrollObserverIgnoreTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ScrollObserverIgnoreTargetDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7
- ScrollObserverIgnoreTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: ScrollObserverIgnoreTargetDirective, isStandalone: true, selector: "[etScrollObserverIgnoreTarget]", host: { classAttribute: "et-scroll-observer-ignore-target" }, ngImport: i0 });
8
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ScrollObserverIgnoreTargetDirective, decorators: [{
6
+ ScrollObserverIgnoreTargetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ScrollObserverIgnoreTargetDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
7
+ ScrollObserverIgnoreTargetDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: ScrollObserverIgnoreTargetDirective, isStandalone: true, selector: "[etScrollObserverIgnoreTarget]", host: { classAttribute: "et-scroll-observer-ignore-target" }, ngImport: i0 });
8
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ScrollObserverIgnoreTargetDirective, decorators: [{
9
9
  type: Directive,
10
10
  args: [{
11
11
  selector: '[etScrollObserverIgnoreTarget]',
@@ -13,9 +13,9 @@ export class ScrollObserverLastElementDirective {
13
13
  this._isLastElement = coerceBooleanProperty(value);
14
14
  }
15
15
  }
16
- ScrollObserverLastElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ScrollObserverLastElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
17
- ScrollObserverLastElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", 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 });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ScrollObserverLastElementDirective, decorators: [{
16
+ ScrollObserverLastElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ScrollObserverLastElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
17
+ ScrollObserverLastElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.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 });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ScrollObserverLastElementDirective, decorators: [{
19
19
  type: Directive,
20
20
  args: [{
21
21
  selector: '[etScrollObserverLastElement]',
@@ -154,9 +154,9 @@ export class SeoDirective {
154
154
  }
155
155
  }
156
156
  }
157
- SeoDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SeoDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
158
- SeoDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.1", type: SeoDirective, isStandalone: true, providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }], ngImport: i0 });
159
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: SeoDirective, decorators: [{
157
+ SeoDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SeoDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
158
+ SeoDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.2", type: SeoDirective, isStandalone: true, providers: [{ provide: SEO_DIRECTIVE_TOKEN, useExisting: SeoDirective }], ngImport: i0 });
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: SeoDirective, decorators: [{
160
160
  type: Directive,
161
161
  args: [{
162
162
  standalone: true,
@@ -6,9 +6,9 @@ export class NormalizeGameResultTypePipe {
6
6
  this.transform = normalizeGameResultType;
7
7
  }
8
8
  }
9
- NormalizeGameResultTypePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: NormalizeGameResultTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
- NormalizeGameResultTypePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: NormalizeGameResultTypePipe, isStandalone: true, name: "etNormalizeGameResultType" });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: NormalizeGameResultTypePipe, decorators: [{
9
+ NormalizeGameResultTypePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NormalizeGameResultTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ NormalizeGameResultTypePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: NormalizeGameResultTypePipe, isStandalone: true, name: "etNormalizeGameResultType" });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NormalizeGameResultTypePipe, decorators: [{
12
12
  type: Pipe,
13
13
  args: [{ name: 'etNormalizeGameResultType', standalone: true }]
14
14
  }] });
@@ -6,9 +6,9 @@ export class NormalizeMatchParticipantsPipe {
6
6
  this.transform = normalizeMatchParticipants;
7
7
  }
8
8
  }
9
- NormalizeMatchParticipantsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchParticipantsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
- NormalizeMatchParticipantsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchParticipantsPipe, isStandalone: true, name: "etNormalizeMatchParticipants" });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchParticipantsPipe, decorators: [{
9
+ NormalizeMatchParticipantsPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchParticipantsPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ NormalizeMatchParticipantsPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchParticipantsPipe, isStandalone: true, name: "etNormalizeMatchParticipants" });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchParticipantsPipe, decorators: [{
12
12
  type: Pipe,
13
13
  args: [{ name: 'etNormalizeMatchParticipants', standalone: true }]
14
14
  }] });
@@ -6,9 +6,9 @@ export class NormalizeMatchScorePipe {
6
6
  this.transform = normalizeMatchScore;
7
7
  }
8
8
  }
9
- NormalizeMatchScorePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchScorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
- NormalizeMatchScorePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchScorePipe, isStandalone: true, name: "etNormalizeMatchScore" });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchScorePipe, decorators: [{
9
+ NormalizeMatchScorePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchScorePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ NormalizeMatchScorePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchScorePipe, isStandalone: true, name: "etNormalizeMatchScore" });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchScorePipe, decorators: [{
12
12
  type: Pipe,
13
13
  args: [{ name: 'etNormalizeMatchScore', standalone: true }]
14
14
  }] });
@@ -6,9 +6,9 @@ export class NormalizeMatchStatePipe {
6
6
  this.transform = normalizeMatchState;
7
7
  }
8
8
  }
9
- NormalizeMatchStatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
- NormalizeMatchStatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchStatePipe, isStandalone: true, name: "etNormalizeMatchState" });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchStatePipe, decorators: [{
9
+ NormalizeMatchStatePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchStatePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ NormalizeMatchStatePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchStatePipe, isStandalone: true, name: "etNormalizeMatchState" });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchStatePipe, decorators: [{
12
12
  type: Pipe,
13
13
  args: [{ name: 'etNormalizeMatchState', standalone: true }]
14
14
  }] });
@@ -6,9 +6,9 @@ export class NormalizeMatchTypePipe {
6
6
  this.transform = normalizeMatchType;
7
7
  }
8
8
  }
9
- NormalizeMatchTypePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
- NormalizeMatchTypePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchTypePipe, isStandalone: true, name: "etNormalizeMatchType" });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: NormalizeMatchTypePipe, decorators: [{
9
+ NormalizeMatchTypePipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchTypePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ NormalizeMatchTypePipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchTypePipe, isStandalone: true, name: "etNormalizeMatchType" });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: NormalizeMatchTypePipe, decorators: [{
12
12
  type: Pipe,
13
13
  args: [{ name: 'etNormalizeMatchType', standalone: true }]
14
14
  }] });
@@ -6,9 +6,9 @@ export class ToArrayPipe {
6
6
  this.transform = toArray;
7
7
  }
8
8
  }
9
- ToArrayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
- ToArrayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.1", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ToArrayPipe, decorators: [{
9
+ ToArrayPipe.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ToArrayPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
10
+ ToArrayPipe.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "15.2.2", ngImport: i0, type: ToArrayPipe, isStandalone: true, name: "toArray" });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ToArrayPipe, decorators: [{
12
12
  type: Pipe,
13
13
  args: [{ name: 'toArray', standalone: true }]
14
14
  }] });
@@ -8,9 +8,9 @@ export class ClickObserverFactory {
8
8
  return fromEvent(document, 'click');
9
9
  }
10
10
  }
11
- ClickObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClickObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
- ClickObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClickObserverFactory, providedIn: 'root' });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClickObserverFactory, decorators: [{
11
+ ClickObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClickObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
+ ClickObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClickObserverFactory, providedIn: 'root' });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClickObserverFactory, decorators: [{
14
14
  type: Injectable,
15
15
  args: [{ providedIn: 'root' }]
16
16
  }] });
@@ -64,9 +64,9 @@ export class ClickObserverService {
64
64
  }
65
65
  }
66
66
  }
67
- ClickObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClickObserverService, deps: [{ token: ClickObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
68
- ClickObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClickObserverService, providedIn: 'root' });
69
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ClickObserverService, decorators: [{
67
+ ClickObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClickObserverService, deps: [{ token: ClickObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
68
+ ClickObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClickObserverService, providedIn: 'root' });
69
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ClickObserverService, decorators: [{
70
70
  type: Injectable,
71
71
  args: [{ providedIn: 'root' }]
72
72
  }], ctorParameters: function () { return [{ type: ClickObserverFactory }]; } });
@@ -8,9 +8,9 @@ export class MutationObserverFactory {
8
8
  return typeof MutationObserver === 'undefined' ? null : new MutationObserver(callback);
9
9
  }
10
10
  }
11
- MutationObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
- MutationObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: MutationObserverFactory, decorators: [{
11
+ MutationObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: MutationObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
+ MutationObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: MutationObserverFactory, providedIn: 'root' });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: MutationObserverFactory, decorators: [{
14
14
  type: Injectable,
15
15
  args: [{ providedIn: 'root' }]
16
16
  }] });
@@ -70,9 +70,9 @@ export class ContentObserverService {
70
70
  }
71
71
  }
72
72
  }
73
- ContentObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ContentObserverService, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
74
- ContentObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ContentObserverService, providedIn: 'root' });
75
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ContentObserverService, decorators: [{
73
+ ContentObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ContentObserverService, deps: [{ token: MutationObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
74
+ ContentObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ContentObserverService, providedIn: 'root' });
75
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ContentObserverService, decorators: [{
76
76
  type: Injectable,
77
77
  args: [{ providedIn: 'root' }]
78
78
  }], ctorParameters: function () { return [{ type: MutationObserverFactory }]; } });
@@ -15,9 +15,9 @@ export class DestroyService {
15
15
  this._destroy$.unsubscribe();
16
16
  }
17
17
  }
18
- DestroyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DestroyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
19
- DestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DestroyService });
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: DestroyService, decorators: [{
18
+ DestroyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DestroyService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
19
+ DestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DestroyService });
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: DestroyService, decorators: [{
21
21
  type: Injectable
22
22
  }] });
23
23
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvc2VydmljZXMvZGVzdHJveS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQWEsTUFBTSxlQUFlLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFL0I7O0dBRUc7QUFDSCxxRUFBcUU7QUFFckUsTUFBTSxPQUFPLGNBQWM7SUFEM0I7UUFFbUIsY0FBUyxHQUFHLElBQUksT0FBTyxFQUFXLENBQUM7UUFFM0MsYUFBUSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLENBQUM7S0FNbkQ7SUFKQyxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMvQixDQUFDOzsyR0FSVSxjQUFjOytHQUFkLGNBQWM7MkZBQWQsY0FBYztrQkFEMUIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIFdpbGwgYmUgcmVwbGFjZWQgd2l0aCB0aGUgdXBjb21pbmcgQW5ndWxhciAxNiBgRGVzdHJveVJlZmAgZmVhdHVyZS5cbiAqL1xuLy8gVE9ETzogUmVwbGFjZSB3aXRoIEFuZ3VsYXIgMTYgYERlc3Ryb3lSZWZgIGZlYXR1cmUgd2hlbiBhdmFpbGFibGUuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgRGVzdHJveVNlcnZpY2UgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgcmVhZG9ubHkgZGVzdHJveSQgPSB0aGlzLl9kZXN0cm95JC5hc09ic2VydmFibGUoKTtcblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgIHRoaXMuX2Rlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiJdfQ==
@@ -23,9 +23,9 @@ export class FocusVisibleService {
23
23
  this._hadKeyboardEvent = false;
24
24
  }
25
25
  }
26
- FocusVisibleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: FocusVisibleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27
- FocusVisibleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: FocusVisibleService, providedIn: 'root' });
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: FocusVisibleService, decorators: [{
26
+ FocusVisibleService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FocusVisibleService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
27
+ FocusVisibleService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FocusVisibleService, providedIn: 'root' });
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: FocusVisibleService, decorators: [{
29
29
  type: Injectable,
30
30
  args: [{
31
31
  providedIn: 'root',
@@ -8,9 +8,9 @@ export class ResizeObserverFactory {
8
8
  return typeof ResizeObserver === 'undefined' ? null : new ResizeObserver(callback);
9
9
  }
10
10
  }
11
- ResizeObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ResizeObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
- ResizeObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ResizeObserverFactory, providedIn: 'root' });
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ResizeObserverFactory, decorators: [{
11
+ ResizeObserverFactory.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ResizeObserverFactory, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
12
+ ResizeObserverFactory.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ResizeObserverFactory, providedIn: 'root' });
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ResizeObserverFactory, decorators: [{
14
14
  type: Injectable,
15
15
  args: [{ providedIn: 'root' }]
16
16
  }] });
@@ -66,9 +66,9 @@ export class ResizeObserverService {
66
66
  }
67
67
  }
68
68
  }
69
- ResizeObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ResizeObserverService, deps: [{ token: ResizeObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
70
- ResizeObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ResizeObserverService, providedIn: 'root' });
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ResizeObserverService, decorators: [{
69
+ ResizeObserverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ResizeObserverService, deps: [{ token: ResizeObserverFactory }], target: i0.ɵɵFactoryTarget.Injectable });
70
+ ResizeObserverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ResizeObserverService, providedIn: 'root' });
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ResizeObserverService, decorators: [{
72
72
  type: Injectable,
73
73
  args: [{ providedIn: 'root' }]
74
74
  }], ctorParameters: function () { return [{ type: ResizeObserverFactory }]; } });
@@ -104,9 +104,9 @@ export class RouterStateService {
104
104
  return this._state$.pipe(map((state) => state.data[key]));
105
105
  }
106
106
  }
107
- RouterStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: RouterStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
108
- RouterStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: RouterStateService, providedIn: 'root' });
109
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: RouterStateService, decorators: [{
107
+ RouterStateService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: RouterStateService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
108
+ RouterStateService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: RouterStateService, providedIn: 'root' });
109
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: RouterStateService, decorators: [{
110
110
  type: Injectable,
111
111
  args: [{
112
112
  providedIn: 'root',
@@ -136,8 +136,8 @@ export class ViewportService {
136
136
  return 'xs';
137
137
  }
138
138
  }
139
- ViewportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ViewportService, deps: [{ token: VIEWPORT_CONFIG, optional: true }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Injectable });
140
- ViewportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ViewportService, providedIn: 'root' });
139
+ ViewportService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ViewportService, deps: [{ token: VIEWPORT_CONFIG, optional: true }, { token: i1.BreakpointObserver }], target: i0.ɵɵFactoryTarget.Injectable });
140
+ ViewportService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ViewportService, providedIn: 'root' });
141
141
  __decorate([
142
142
  Memo(),
143
143
  __metadata("design:type", Function),
@@ -154,7 +154,7 @@ __decorate([
154
154
  __metadata("design:paramtypes", [Object]),
155
155
  __metadata("design:returntype", void 0)
156
156
  ], ViewportService.prototype, "_buildMediaQuery", null);
157
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.1", ngImport: i0, type: ViewportService, decorators: [{
157
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.2", ngImport: i0, type: ViewportService, decorators: [{
158
158
  type: Injectable,
159
159
  args: [{
160
160
  providedIn: 'root',
@@ -7,5 +7,6 @@ export * from './media-query-observable.util';
7
7
  export * from './reactive-binding.util';
8
8
  export * from './rxjs.utils';
9
9
  export * from './scrollable.utils';
10
+ export * from './smart-block-scroll-strategy.utils';
10
11
  export * from './viewport.util';
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmltYXRpb24udXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFtcC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY2xvbmUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Nvb2tpZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vZXF1YWwudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL21lZGlhLXF1ZXJ5LW9ic2VydmFibGUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlYWN0aXZlLWJpbmRpbmcudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3J4anMudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zY3JvbGxhYmxlLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlld3BvcnQudXRpbCc7XG4iXX0=
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLHFDQUFxQyxDQUFDO0FBQ3BELGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FuaW1hdGlvbi51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL2NsYW1wLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9jbG9uZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY29va2llLnV0aWwnO1xuZXhwb3J0ICogZnJvbSAnLi9lcXVhbC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vbWVkaWEtcXVlcnktb2JzZXJ2YWJsZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vcmVhY3RpdmUtYmluZGluZy51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vcnhqcy51dGlscyc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbGFibGUudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zbWFydC1ibG9jay1zY3JvbGwtc3RyYXRlZ3kudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3cG9ydC51dGlsJztcbiJdfQ==