@ethlete/core 1.10.0 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/esm2022/lib/components/structured-data/structured-data.component.mjs +38 -0
  2. package/esm2022/lib/directives/animatable/animatable.directive.mjs +116 -0
  3. package/esm2022/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +116 -0
  4. package/esm2022/lib/directives/click-outside/click-outside.directive.mjs +38 -0
  5. package/esm2022/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +148 -0
  6. package/esm2022/lib/directives/delayable/delayable.directive.mjs +56 -0
  7. package/esm2022/lib/directives/let/let.directive.mjs +41 -0
  8. package/esm2022/lib/directives/observe-content/observe-content.directive.mjs +69 -0
  9. package/esm2022/lib/directives/observe-resize/observe-resize.directive.mjs +69 -0
  10. package/esm2022/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +177 -0
  11. package/esm2022/lib/directives/repeat/repeat.directive.mjs +37 -0
  12. package/esm2022/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +32 -0
  13. package/esm2022/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +19 -0
  14. package/esm2022/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +35 -0
  15. package/esm2022/lib/directives/seo/seo.directive.mjs +167 -0
  16. package/esm2022/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +16 -0
  17. package/esm2022/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +16 -0
  18. package/esm2022/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +16 -0
  19. package/esm2022/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +16 -0
  20. package/esm2022/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +16 -0
  21. package/esm2022/lib/pipes/to-array/to-array.pipe.mjs +16 -0
  22. package/esm2022/lib/services/click-observer.service.mjs +75 -0
  23. package/esm2022/lib/services/content-observer.service.mjs +81 -0
  24. package/esm2022/lib/services/destroy.service.mjs +24 -0
  25. package/esm2022/lib/services/focus-visible.service.mjs +35 -0
  26. package/esm2022/lib/services/resize-observer.service.mjs +77 -0
  27. package/esm2022/lib/services/router-state.service.mjs +116 -0
  28. package/esm2022/lib/services/viewport.service.mjs +169 -0
  29. package/esm2022/lib/types/angular.types.mjs +15 -0
  30. package/esm2022/lib/utils/scrollable.utils.mjs +85 -0
  31. package/{fesm2020 → fesm2022}/ethlete-core.mjs +119 -140
  32. package/{fesm2020 → fesm2022}/ethlete-core.mjs.map +1 -1
  33. package/lib/components/structured-data/structured-data.component.d.ts +1 -1
  34. package/lib/directives/animatable/animatable.directive.d.ts +1 -1
  35. package/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.d.ts +1 -1
  36. package/lib/directives/let/let.directive.d.ts +1 -1
  37. package/lib/directives/observe-content/observe-content.directive.d.ts +1 -1
  38. package/lib/directives/observe-resize/observe-resize.directive.d.ts +1 -1
  39. package/lib/directives/observe-scroll-state/observe-scroll-state.directive.d.ts +1 -1
  40. package/lib/directives/repeat/repeat.directive.d.ts +1 -1
  41. package/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.d.ts +1 -1
  42. package/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.d.ts +1 -1
  43. package/lib/types/angular.types.d.ts +0 -7
  44. package/package.json +13 -19
  45. package/esm2020/lib/components/structured-data/structured-data.component.mjs +0 -37
  46. package/esm2020/lib/directives/animatable/animatable.directive.mjs +0 -115
  47. package/esm2020/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +0 -115
  48. package/esm2020/lib/directives/click-outside/click-outside.directive.mjs +0 -37
  49. package/esm2020/lib/directives/cursor-drag-scroll/cursor-drag-scroll.directive.mjs +0 -147
  50. package/esm2020/lib/directives/delayable/delayable.directive.mjs +0 -55
  51. package/esm2020/lib/directives/let/let.directive.mjs +0 -40
  52. package/esm2020/lib/directives/observe-content/observe-content.directive.mjs +0 -68
  53. package/esm2020/lib/directives/observe-resize/observe-resize.directive.mjs +0 -68
  54. package/esm2020/lib/directives/observe-scroll-state/observe-scroll-state.directive.mjs +0 -176
  55. package/esm2020/lib/directives/repeat/repeat.directive.mjs +0 -36
  56. package/esm2020/lib/directives/scroll-observer-first-element/scroll-observer-first-element.directive.mjs +0 -31
  57. package/esm2020/lib/directives/scroll-observer-ignore-target/scroll-observer-ignore-target.directive.mjs +0 -18
  58. package/esm2020/lib/directives/scroll-observer-last-element/scroll-observer-last-element.directive.mjs +0 -34
  59. package/esm2020/lib/directives/seo/seo.directive.mjs +0 -166
  60. package/esm2020/lib/pipes/normalize-game-result-type/normalize-game-result-type.pipe.mjs +0 -15
  61. package/esm2020/lib/pipes/normalize-match-participants/normalize-match-participants.pipe.mjs +0 -15
  62. package/esm2020/lib/pipes/normalize-match-score/normalize-match-score.pipe.mjs +0 -15
  63. package/esm2020/lib/pipes/normalize-match-state/normalize-match-state.pipe.mjs +0 -15
  64. package/esm2020/lib/pipes/normalize-match-type/normalize-match-type.pipe.mjs +0 -15
  65. package/esm2020/lib/pipes/to-array/to-array.pipe.mjs +0 -15
  66. package/esm2020/lib/services/click-observer.service.mjs +0 -73
  67. package/esm2020/lib/services/content-observer.service.mjs +0 -79
  68. package/esm2020/lib/services/destroy.service.mjs +0 -23
  69. package/esm2020/lib/services/focus-visible.service.mjs +0 -34
  70. package/esm2020/lib/services/resize-observer.service.mjs +0 -75
  71. package/esm2020/lib/services/router-state.service.mjs +0 -115
  72. package/esm2020/lib/services/viewport.service.mjs +0 -168
  73. package/esm2020/lib/types/angular.types.mjs +0 -36
  74. package/esm2020/lib/utils/scrollable.utils.mjs +0 -85
  75. package/fesm2015/ethlete-core.mjs +0 -2787
  76. package/fesm2015/ethlete-core.mjs.map +0 -1
  77. /package/{esm2020 → esm2022}/ethlete-core.mjs +0 -0
  78. /package/{esm2020 → esm2022}/index.mjs +0 -0
  79. /package/{esm2020 → esm2022}/lib/components/public-api.mjs +0 -0
  80. /package/{esm2020 → esm2022}/lib/components/structured-data/public-api.mjs +0 -0
  81. /package/{esm2020 → esm2022}/lib/constants/index.mjs +0 -0
  82. /package/{esm2020 → esm2022}/lib/constants/public-api.mjs +0 -0
  83. /package/{esm2020 → esm2022}/lib/constants/viewport.constants.mjs +0 -0
  84. /package/{esm2020 → esm2022}/lib/decorators/index.mjs +0 -0
  85. /package/{esm2020 → esm2022}/lib/decorators/memo/memo.decorator.mjs +0 -0
  86. /package/{esm2020 → esm2022}/lib/decorators/memo/public-api.mjs +0 -0
  87. /package/{esm2020 → esm2022}/lib/decorators/public-api.mjs +0 -0
  88. /package/{esm2020 → esm2022}/lib/directives/animatable/index.mjs +0 -0
  89. /package/{esm2020 → esm2022}/lib/directives/animatable/public-api.mjs +0 -0
  90. /package/{esm2020 → esm2022}/lib/directives/animated-lifecycle/public-api.mjs +0 -0
  91. /package/{esm2020 → esm2022}/lib/directives/click-outside/public-api.mjs +0 -0
  92. /package/{esm2020 → esm2022}/lib/directives/cursor-drag-scroll/cursor-drag-scroll.constants.mjs +0 -0
  93. /package/{esm2020 → esm2022}/lib/directives/cursor-drag-scroll/public-api.mjs +0 -0
  94. /package/{esm2020 → esm2022}/lib/directives/delayable/public-api.mjs +0 -0
  95. /package/{esm2020 → esm2022}/lib/directives/let/let.types.mjs +0 -0
  96. /package/{esm2020 → esm2022}/lib/directives/let/public-api.mjs +0 -0
  97. /package/{esm2020 → esm2022}/lib/directives/observe-content/public-api.mjs +0 -0
  98. /package/{esm2020 → esm2022}/lib/directives/observe-resize/public-api.mjs +0 -0
  99. /package/{esm2020 → esm2022}/lib/directives/observe-scroll-state/observe-scroll-state.constants.mjs +0 -0
  100. /package/{esm2020 → esm2022}/lib/directives/observe-scroll-state/observe-scroll-state.types.mjs +0 -0
  101. /package/{esm2020 → esm2022}/lib/directives/observe-scroll-state/public-api.mjs +0 -0
  102. /package/{esm2020 → esm2022}/lib/directives/public-api.mjs +0 -0
  103. /package/{esm2020 → esm2022}/lib/directives/repeat/public-api.mjs +0 -0
  104. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-first-element/index.mjs +0 -0
  105. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-first-element/public-api.mjs +0 -0
  106. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-ignore-target/index.mjs +0 -0
  107. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-ignore-target/public-api.mjs +0 -0
  108. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-last-element/index.mjs +0 -0
  109. /package/{esm2020 → esm2022}/lib/directives/scroll-observer-last-element/public-api.mjs +0 -0
  110. /package/{esm2020 → esm2022}/lib/directives/seo/public-api.mjs +0 -0
  111. /package/{esm2020 → esm2022}/lib/directives/seo/seo.directive.constants.mjs +0 -0
  112. /package/{esm2020 → esm2022}/lib/directives/seo/seo.directive.types.mjs +0 -0
  113. /package/{esm2020 → esm2022}/lib/directives/seo/seo.directive.utils.mjs +0 -0
  114. /package/{esm2020 → esm2022}/lib/pipes/normalize-game-result-type/normalize-game-result-type.types.mjs +0 -0
  115. /package/{esm2020 → esm2022}/lib/pipes/normalize-game-result-type/normalize-game-result-type.util.mjs +0 -0
  116. /package/{esm2020 → esm2022}/lib/pipes/normalize-game-result-type/public-api.mjs +0 -0
  117. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-participants/normalize-match-participants.types.mjs +0 -0
  118. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-participants/normalize-match-participants.util.mjs +0 -0
  119. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-participants/public-api.mjs +0 -0
  120. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-score/normalize-match-score.types.mjs +0 -0
  121. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-score/normalize-match-score.util.mjs +0 -0
  122. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-score/public-api.mjs +0 -0
  123. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/index.mjs +0 -0
  124. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/normalize-match-state.constants.mjs +0 -0
  125. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/normalize-match-state.util.mjs +0 -0
  126. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-state/public-api.mjs +0 -0
  127. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-type/normalize-match-type.util.mjs +0 -0
  128. /package/{esm2020 → esm2022}/lib/pipes/normalize-match-type/public-api.mjs +0 -0
  129. /package/{esm2020 → esm2022}/lib/pipes/public-api.mjs +0 -0
  130. /package/{esm2020 → esm2022}/lib/pipes/to-array/public-api.mjs +0 -0
  131. /package/{esm2020 → esm2022}/lib/pipes/to-array/to-array.util.mjs +0 -0
  132. /package/{esm2020 → esm2022}/lib/public-api.mjs +0 -0
  133. /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
  134. /package/{esm2020 → esm2022}/lib/services/public-api.mjs +0 -0
  135. /package/{esm2020 → esm2022}/lib/services/viewport.types.mjs +0 -0
  136. /package/{esm2020 → esm2022}/lib/types/i18n.types.mjs +0 -0
  137. /package/{esm2020 → esm2022}/lib/types/index.mjs +0 -0
  138. /package/{esm2020 → esm2022}/lib/types/public-api.mjs +0 -0
  139. /package/{esm2020 → esm2022}/lib/types/viewport.types.mjs +0 -0
  140. /package/{esm2020 → esm2022}/lib/utils/animation.utils.mjs +0 -0
  141. /package/{esm2020 → esm2022}/lib/utils/clamp.util.mjs +0 -0
  142. /package/{esm2020 → esm2022}/lib/utils/clone.util.mjs +0 -0
  143. /package/{esm2020 → esm2022}/lib/utils/cookie.util.mjs +0 -0
  144. /package/{esm2020 → esm2022}/lib/utils/equal.util.mjs +0 -0
  145. /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
  146. /package/{esm2020 → esm2022}/lib/utils/media-query-observable.util.mjs +0 -0
  147. /package/{esm2020 → esm2022}/lib/utils/public-api.mjs +0 -0
  148. /package/{esm2020 → esm2022}/lib/utils/reactive-binding.util.mjs +0 -0
  149. /package/{esm2020 → esm2022}/lib/utils/rxjs.utils.mjs +0 -0
  150. /package/{esm2020 → esm2022}/lib/utils/smart-block-scroll-strategy.utils.mjs +0 -0
  151. /package/{esm2020 → esm2022}/lib/utils/viewport.util.mjs +0 -0
  152. /package/{esm2020 → esm2022}/lib/validators/is-array-not-empty.validator.mjs +0 -0
  153. /package/{esm2020 → esm2022}/lib/validators/is-email.validator.mjs +0 -0
  154. /package/{esm2020 → esm2022}/lib/validators/must-match.validator.mjs +0 -0
  155. /package/{esm2020 → esm2022}/lib/validators/public-api.mjs +0 -0
@@ -0,0 +1,41 @@
1
+ import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { LetContext } from './let.types';
3
+ import * as i0 from "@angular/core";
4
+ class LetDirective {
5
+ set etLet(value) {
6
+ this._context.$implicit = this._context.etLet = value;
7
+ this._updateView();
8
+ }
9
+ constructor(_viewContainer, templateRef) {
10
+ this._viewContainer = _viewContainer;
11
+ this._context = new LetContext();
12
+ this._templateRef = null;
13
+ this._viewRef = null;
14
+ this._templateRef = templateRef;
15
+ }
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ static ngTemplateContextGuard(dir, ctx) {
18
+ return true;
19
+ }
20
+ _updateView() {
21
+ if (!this._viewRef) {
22
+ this._viewContainer.clear();
23
+ if (this._templateRef) {
24
+ this._viewRef = this._viewContainer.createEmbeddedView(this._templateRef, this._context);
25
+ }
26
+ }
27
+ }
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: LetDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
29
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: LetDirective, isStandalone: true, selector: "[etLet]", inputs: { etLet: "etLet" }, ngImport: i0 }); }
30
+ }
31
+ export { LetDirective };
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: LetDirective, decorators: [{
33
+ type: Directive,
34
+ args: [{
35
+ selector: '[etLet]',
36
+ standalone: true,
37
+ }]
38
+ }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { etLet: [{
39
+ type: Input
40
+ }] } });
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvbGV0L2xldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQUV6QyxNQUlhLFlBQVk7SUFDdkIsSUFDSSxLQUFLLENBQUMsS0FBUTtRQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDdEQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFRRCxZQUFvQixjQUFnQyxFQUFFLFdBQXVDO1FBQXpFLG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUo1QyxhQUFRLEdBQWtCLElBQUksVUFBVSxFQUFLLENBQUM7UUFDOUMsaUJBQVksR0FBc0MsSUFBSSxDQUFDO1FBQ3ZELGFBQVEsR0FBMEMsSUFBSSxDQUFDO1FBRzdELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCw4REFBOEQ7SUFDOUQsTUFBTSxDQUFDLHNCQUFzQixDQUFJLEdBQW9CLEVBQUUsR0FBUTtRQUM3RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTyxXQUFXO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDNUIsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO2dCQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDMUY7U0FDRjtJQUNILENBQUM7OEdBN0JVLFlBQVk7a0dBQVosWUFBWTs7U0FBWixZQUFZOzJGQUFaLFlBQVk7a0JBSnhCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjtpSUFHSyxLQUFLO3NCQURSLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVtYmVkZGVkVmlld1JlZiwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMZXRDb250ZXh0IH0gZnJvbSAnLi9sZXQudHlwZXMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZXRMZXRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgTGV0RGlyZWN0aXZlPFQgPSB1bmtub3duPiB7XG4gIEBJbnB1dCgpXG4gIHNldCBldExldCh2YWx1ZTogVCkge1xuICAgIHRoaXMuX2NvbnRleHQuJGltcGxpY2l0ID0gdGhpcy5fY29udGV4dC5ldExldCA9IHZhbHVlO1xuICAgIHRoaXMuX3VwZGF0ZVZpZXcoKTtcbiAgfVxuXG4gIHN0YXRpYyBuZ1RlbXBsYXRlR3VhcmRfbmdMZXQ6ICdiaW5kaW5nJztcblxuICBwcml2YXRlIF9jb250ZXh0OiBMZXRDb250ZXh0PFQ+ID0gbmV3IExldENvbnRleHQ8VD4oKTtcbiAgcHJpdmF0ZSBfdGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPExldENvbnRleHQ8VD4+IHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX3ZpZXdSZWY6IEVtYmVkZGVkVmlld1JlZjxMZXRDb250ZXh0PFQ+PiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX3ZpZXdDb250YWluZXI6IFZpZXdDb250YWluZXJSZWYsIHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxMZXRDb250ZXh0PFQ+Pikge1xuICAgIHRoaXMuX3RlbXBsYXRlUmVmID0gdGVtcGxhdGVSZWY7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICBzdGF0aWMgbmdUZW1wbGF0ZUNvbnRleHRHdWFyZDxUPihkaXI6IExldERpcmVjdGl2ZTxUPiwgY3R4OiBhbnkpOiBjdHggaXMgTGV0Q29udGV4dDxUPiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVWaWV3KCkge1xuICAgIGlmICghdGhpcy5fdmlld1JlZikge1xuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lci5jbGVhcigpO1xuICAgICAgaWYgKHRoaXMuX3RlbXBsYXRlUmVmKSB7XG4gICAgICAgIHRoaXMuX3ZpZXdSZWYgPSB0aGlzLl92aWV3Q29udGFpbmVyLmNyZWF0ZUVtYmVkZGVkVmlldyh0aGlzLl90ZW1wbGF0ZVJlZiwgdGhpcy5fY29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,69 @@
1
+ import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
2
+ import { Directive, ElementRef, EventEmitter, inject, Input, NgZone, Output, } from '@angular/core';
3
+ import { debounceTime } from 'rxjs/operators';
4
+ import { ContentObserverService } from '../../services';
5
+ import * as i0 from "@angular/core";
6
+ class ObserveContentDirective {
7
+ constructor() {
8
+ this._contentObserver = inject(ContentObserverService);
9
+ this._elementRef = inject(ElementRef);
10
+ this._ngZone = inject(NgZone);
11
+ this.valueChange = new EventEmitter();
12
+ this._disabled = false;
13
+ this._debounce = null;
14
+ this._currentSubscription = null;
15
+ }
16
+ get disabled() {
17
+ return this._disabled;
18
+ }
19
+ set disabled(value) {
20
+ this._disabled = coerceBooleanProperty(value);
21
+ this._disabled ? this._unsubscribe() : this._subscribe();
22
+ }
23
+ get debounce() {
24
+ return this._debounce;
25
+ }
26
+ set debounce(value) {
27
+ this._debounce = coerceNumberProperty(value);
28
+ this._subscribe();
29
+ }
30
+ ngAfterContentInit() {
31
+ if (!this._currentSubscription && !this.disabled) {
32
+ this._subscribe();
33
+ }
34
+ }
35
+ ngOnDestroy() {
36
+ this._unsubscribe();
37
+ }
38
+ _subscribe() {
39
+ this._unsubscribe();
40
+ const stream = this._contentObserver.observe(this._elementRef);
41
+ this._ngZone.runOutsideAngular(() => {
42
+ this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.valueChange);
43
+ });
44
+ }
45
+ _unsubscribe() {
46
+ this._currentSubscription?.unsubscribe();
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ObserveContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
49
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: ObserveContentDirective, isStandalone: true, selector: "[etObserveContent]", inputs: { disabled: ["etObserveContentDisabled", "disabled"], debounce: ["etObserveContentDebounce", "debounce"] }, outputs: { valueChange: "etObserveContent" }, exportAs: ["etObserveContent"], ngImport: i0 }); }
50
+ }
51
+ export { ObserveContentDirective };
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ObserveContentDirective, decorators: [{
53
+ type: Directive,
54
+ args: [{
55
+ selector: '[etObserveContent]',
56
+ exportAs: 'etObserveContent',
57
+ standalone: true,
58
+ }]
59
+ }], propDecorators: { valueChange: [{
60
+ type: Output,
61
+ args: ['etObserveContent']
62
+ }], disabled: [{
63
+ type: Input,
64
+ args: ['etObserveContentDisabled']
65
+ }], debounce: [{
66
+ type: Input,
67
+ args: ['etObserveContentDebounce']
68
+ }] } });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZS1jb250ZW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvb2JzZXJ2ZS1jb250ZW50L29ic2VydmUtY29udGVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUV4RCxNQUthLHVCQUF1QjtJQUxwQztRQU1VLHFCQUFnQixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2xELGdCQUFXLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUMxRCxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBR3hCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFVcEQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVVsQixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUVoQyx5QkFBb0IsR0FBd0IsSUFBSSxDQUFDO0tBMEIxRDtJQTlDQyxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUdELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBa0I7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUtELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7UUFFL0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLEVBQUU7WUFDbEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FDdkcsSUFBSSxDQUFDLFdBQVcsQ0FDakIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxDQUFDO0lBQzNDLENBQUM7OEdBckRVLHVCQUF1QjtrR0FBdkIsdUJBQXVCOztTQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFMbkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsb0JBQW9CO29CQUM5QixRQUFRLEVBQUUsa0JBQWtCO29CQUM1QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBT1UsV0FBVztzQkFEbkIsTUFBTTt1QkFBQyxrQkFBa0I7Z0JBSXRCLFFBQVE7c0JBRFgsS0FBSzt1QkFBQywwQkFBMEI7Z0JBVzdCLFFBQVE7c0JBRFgsS0FBSzt1QkFBQywwQkFBMEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ29udGVudE9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2V0T2JzZXJ2ZUNvbnRlbnRdJyxcbiAgZXhwb3J0QXM6ICdldE9ic2VydmVDb250ZW50JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgT2JzZXJ2ZUNvbnRlbnREaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9jb250ZW50T2JzZXJ2ZXIgPSBpbmplY3QoQ29udGVudE9ic2VydmVyU2VydmljZSk7XG4gIHByaXZhdGUgX2VsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuICBwcml2YXRlIF9uZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICBAT3V0cHV0KCdldE9ic2VydmVDb250ZW50JylcbiAgcmVhZG9ubHkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE11dGF0aW9uUmVjb3JkW10+KCk7XG5cbiAgQElucHV0KCdldE9ic2VydmVDb250ZW50RGlzYWJsZWQnKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuX2Rpc2FibGVkID8gdGhpcy5fdW5zdWJzY3JpYmUoKSA6IHRoaXMuX3N1YnNjcmliZSgpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCdldE9ic2VydmVDb250ZW50RGVib3VuY2UnKVxuICBnZXQgZGVib3VuY2UoKTogbnVtYmVyIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX2RlYm91bmNlO1xuICB9XG4gIHNldCBkZWJvdW5jZSh2YWx1ZTogTnVtYmVySW5wdXQpIHtcbiAgICB0aGlzLl9kZWJvdW5jZSA9IGNvZXJjZU51bWJlclByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9zdWJzY3JpYmUoKTtcbiAgfVxuICBwcml2YXRlIF9kZWJvdW5jZTogbnVtYmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgcHJpdmF0ZSBfY3VycmVudFN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIGlmICghdGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbiAmJiAhdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5fc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX3N1YnNjcmliZSgpIHtcbiAgICB0aGlzLl91bnN1YnNjcmliZSgpO1xuICAgIGNvbnN0IHN0cmVhbSA9IHRoaXMuX2NvbnRlbnRPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYpO1xuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb24gPSAodGhpcy5kZWJvdW5jZSA/IHN0cmVhbS5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSkgOiBzdHJlYW0pLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF91bnN1YnNjcmliZSgpIHtcbiAgICB0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,69 @@
1
+ import { coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
2
+ import { Directive, ElementRef, EventEmitter, inject, Input, NgZone, Output, } from '@angular/core';
3
+ import { debounceTime } from 'rxjs';
4
+ import { ResizeObserverService } from '../../services';
5
+ import * as i0 from "@angular/core";
6
+ class ObserveResizeDirective {
7
+ constructor() {
8
+ this._resizeObserver = inject(ResizeObserverService);
9
+ this._elementRef = inject(ElementRef);
10
+ this._ngZone = inject(NgZone);
11
+ this.valueChange = new EventEmitter();
12
+ this._disabled = false;
13
+ this._debounce = null;
14
+ this._currentSubscription = null;
15
+ }
16
+ get disabled() {
17
+ return this._disabled;
18
+ }
19
+ set disabled(value) {
20
+ this._disabled = coerceBooleanProperty(value);
21
+ this._disabled ? this._unsubscribe() : this._subscribe();
22
+ }
23
+ get debounce() {
24
+ return this._debounce;
25
+ }
26
+ set debounce(value) {
27
+ this._debounce = coerceNumberProperty(value);
28
+ this._subscribe();
29
+ }
30
+ ngAfterContentInit() {
31
+ if (!this._currentSubscription && !this.disabled) {
32
+ this._subscribe();
33
+ }
34
+ }
35
+ ngOnDestroy() {
36
+ this._unsubscribe();
37
+ }
38
+ _subscribe() {
39
+ this._unsubscribe();
40
+ const stream = this._resizeObserver.observe(this._elementRef);
41
+ this._ngZone.runOutsideAngular(() => {
42
+ this._currentSubscription = (this.debounce ? stream.pipe(debounceTime(this.debounce)) : stream).subscribe(this.valueChange);
43
+ });
44
+ }
45
+ _unsubscribe() {
46
+ this._currentSubscription?.unsubscribe();
47
+ }
48
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ObserveResizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
49
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: ObserveResizeDirective, isStandalone: true, selector: "[etObserveResize]", inputs: { disabled: ["etObserveResizeDisabled", "disabled"], debounce: ["etObserveResizeDebounce", "debounce"] }, outputs: { valueChange: "etObserveResize" }, exportAs: ["etObserveResize"], ngImport: i0 }); }
50
+ }
51
+ export { ObserveResizeDirective };
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ObserveResizeDirective, decorators: [{
53
+ type: Directive,
54
+ args: [{
55
+ selector: '[etObserveResize]',
56
+ exportAs: 'etObserveResize',
57
+ standalone: true,
58
+ }]
59
+ }], propDecorators: { valueChange: [{
60
+ type: Output,
61
+ args: ['etObserveResize']
62
+ }], disabled: [{
63
+ type: Input,
64
+ args: ['etObserveResizeDisabled']
65
+ }], debounce: [{
66
+ type: Input,
67
+ args: ['etObserveResizeDebounce']
68
+ }] } });
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZS1yZXNpemUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9vYnNlcnZlLXJlc2l6ZS9vYnNlcnZlLXJlc2l6ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRXZELE1BS2Esc0JBQXNCO0lBTG5DO1FBTVUsb0JBQWUsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUNoRCxnQkFBVyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDMUQsWUFBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUl4QixnQkFBVyxHQUFHLElBQUksWUFBWSxFQUF5QixDQUFDO1FBVXpELGNBQVMsR0FBRyxLQUFLLENBQUM7UUFVbEIsY0FBUyxHQUFrQixJQUFJLENBQUM7UUFFaEMseUJBQW9CLEdBQXdCLElBQUksQ0FBQztLQTBCMUQ7SUE5Q0MsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFtQjtRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQzNELENBQUM7SUFHRCxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQWtCO1FBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFLRCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDaEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ25CO0lBQ0gsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU5RCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUN2RyxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDM0MsQ0FBQzs4R0F0RFUsc0JBQXNCO2tHQUF0QixzQkFBc0I7O1NBQXRCLHNCQUFzQjsyRkFBdEIsc0JBQXNCO2tCQUxsQyxTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxtQkFBbUI7b0JBQzdCLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLFVBQVUsRUFBRSxJQUFJO2lCQUNqQjs4QkFRVSxXQUFXO3NCQUZuQixNQUFNO3VCQUFDLGlCQUFpQjtnQkFLckIsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLHlCQUF5QjtnQkFXNUIsUUFBUTtzQkFEWCxLQUFLO3VCQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5LCBjb2VyY2VOdW1iZXJQcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgRGlyZWN0aXZlLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgSW5wdXQsXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2V0T2JzZXJ2ZVJlc2l6ZV0nLFxuICBleHBvcnRBczogJ2V0T2JzZXJ2ZVJlc2l6ZScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE9ic2VydmVSZXNpemVEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9yZXNpemVPYnNlcnZlciA9IGluamVjdChSZXNpemVPYnNlcnZlclNlcnZpY2UpO1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBfbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgQE91dHB1dCgnZXRPYnNlcnZlUmVzaXplJylcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZXNpemVPYnNlcnZlckVudHJ5W10+KCk7XG5cbiAgQElucHV0KCdldE9ic2VydmVSZXNpemVEaXNhYmxlZCcpXG4gIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gIH1cbiAgc2V0IGRpc2FibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5fZGlzYWJsZWQgPyB0aGlzLl91bnN1YnNjcmliZSgpIDogdGhpcy5fc3Vic2NyaWJlKCk7XG4gIH1cbiAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICBASW5wdXQoJ2V0T2JzZXJ2ZVJlc2l6ZURlYm91bmNlJylcbiAgZ2V0IGRlYm91bmNlKCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kZWJvdW5jZTtcbiAgfVxuICBzZXQgZGVib3VuY2UodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fZGVib3VuY2UgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5fc3Vic2NyaWJlKCk7XG4gIH1cbiAgcHJpdmF0ZSBfZGVib3VuY2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2N1cnJlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb24gJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX3N1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmUoKSB7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUoKTtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYpO1xuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb24gPSAodGhpcy5kZWJvdW5jZSA/IHN0cmVhbS5waXBlKGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSkgOiBzdHJlYW0pLnN1YnNjcmliZShcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZSxcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIF91bnN1YnNjcmliZSgpIHtcbiAgICB0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,177 @@
1
+ import { coerceNumberProperty } from '@angular/cdk/coercion';
2
+ import { Directive, ElementRef, EventEmitter, inject, Input, Output } from '@angular/core';
3
+ import { debounceTime, takeUntil, tap } from 'rxjs';
4
+ import { ContentObserverService, DestroyService, ResizeObserverService } from '../../services';
5
+ import { elementCanScroll } from '../../utils';
6
+ import { SCROLL_OBSERVER_FIRST_ELEMENT_CLASS } from '../scroll-observer-first-element';
7
+ import { SCROLL_OBSERVER_IGNORE_TARGET_CLASS } from '../scroll-observer-ignore-target';
8
+ import { SCROLL_OBSERVER_LAST_ELEMENT_CLASS } from '../scroll-observer-last-element';
9
+ import { OBSERVE_SCROLL_STATE } from './observe-scroll-state.constants';
10
+ import * as i0 from "@angular/core";
11
+ class ObserveScrollStateDirective {
12
+ constructor() {
13
+ this._destroy$ = inject(DestroyService, { host: true }).destroy$;
14
+ this._elementRef = inject(ElementRef);
15
+ this._contentObserverService = inject(ContentObserverService);
16
+ this._resizeObserverService = inject(ResizeObserverService);
17
+ this._observedChildren = {
18
+ first: this._firstCurrentChild,
19
+ last: this._lastCurrentChild,
20
+ };
21
+ this._rootMargin = 0;
22
+ this._threshold = [0.99999, 0.9999, 0.999, 0.99, 1];
23
+ this._intersectionObserver = null;
24
+ this.valueChange = new EventEmitter();
25
+ }
26
+ get _firstCurrentChild() {
27
+ const explicitFirstElement = this._elementRef.nativeElement.querySelector(`.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`);
28
+ if (explicitFirstElement) {
29
+ return explicitFirstElement;
30
+ }
31
+ const element = this._elementRef.nativeElement.children[0];
32
+ return this._getNonIgnoredChild(element, 'next');
33
+ }
34
+ get _lastCurrentChild() {
35
+ const explicitLastElement = this._elementRef.nativeElement.querySelector(`.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`);
36
+ if (explicitLastElement) {
37
+ return explicitLastElement;
38
+ }
39
+ const element = this._elementRef.nativeElement.children[this._elementRef.nativeElement.children.length - 1];
40
+ return this._getNonIgnoredChild(element, 'previous');
41
+ }
42
+ get observerRootMargin() {
43
+ return this._rootMargin;
44
+ }
45
+ set observerRootMargin(value) {
46
+ this._rootMargin = coerceNumberProperty(value);
47
+ }
48
+ get observerThreshold() {
49
+ return this._threshold;
50
+ }
51
+ set observerThreshold(value) {
52
+ if (Array.isArray(value)) {
53
+ this._threshold = value;
54
+ return;
55
+ }
56
+ this._threshold = coerceNumberProperty(value);
57
+ }
58
+ ngOnInit() {
59
+ this._contentObserverService
60
+ .observe(this._elementRef.nativeElement)
61
+ .pipe(debounceTime(25), tap(() => this._checkChildren()), takeUntil(this._destroy$))
62
+ .subscribe();
63
+ this._resizeObserverService
64
+ .observe(this._elementRef.nativeElement)
65
+ .pipe(debounceTime(25), tap(() => {
66
+ const canScroll = elementCanScroll(this._elementRef.nativeElement);
67
+ if ((!this._intersectionObserver && canScroll) || (this._intersectionObserver && !canScroll)) {
68
+ this._checkChildren();
69
+ }
70
+ }), takeUntil(this._destroy$))
71
+ .subscribe();
72
+ this._checkChildren();
73
+ }
74
+ ngOnDestroy() {
75
+ this._clearIntersectionObserver();
76
+ }
77
+ _checkChildren() {
78
+ this._clearIntersectionObserver();
79
+ if (this._firstCurrentChild === this._lastCurrentChild ||
80
+ !this._firstCurrentChild ||
81
+ !this._lastCurrentChild ||
82
+ !elementCanScroll(this._elementRef.nativeElement)) {
83
+ this._unobserveChild('first');
84
+ this._unobserveChild('last');
85
+ this.valueChange.emit({
86
+ isAtStart: true,
87
+ isAtEnd: true,
88
+ canScroll: false,
89
+ });
90
+ }
91
+ else {
92
+ this._intersectionObserver = this._initiateIntersectionObserver();
93
+ this._observeChild('first', this._firstCurrentChild);
94
+ this._observeChild('last', this._lastCurrentChild);
95
+ }
96
+ }
97
+ _initiateIntersectionObserver() {
98
+ const observer = new IntersectionObserver((entries) => {
99
+ const { first, last } = this._observedChildren;
100
+ const isAtStart = entries.find((entry) => entry.target === first)?.isIntersecting ?? false;
101
+ const isAtEnd = entries.find((entry) => entry.target === last)?.isIntersecting ?? false;
102
+ this.valueChange.emit({
103
+ isAtStart,
104
+ isAtEnd,
105
+ canScroll: !isAtStart || !isAtEnd,
106
+ });
107
+ }, {
108
+ root: this._elementRef.nativeElement,
109
+ rootMargin: this._rootMargin ? `${this._rootMargin}px` : undefined,
110
+ threshold: this._threshold,
111
+ });
112
+ return observer;
113
+ }
114
+ _observeChild(child, element) {
115
+ this._intersectionObserver?.observe(element);
116
+ this._observedChildren[child] = element;
117
+ element.classList.add(`et-scroll-observer-observing-${child}-element`);
118
+ }
119
+ _unobserveChild(child) {
120
+ const observedChild = this._observedChildren[child];
121
+ if (!observedChild) {
122
+ return;
123
+ }
124
+ observedChild.classList.remove('et-scroll-observer-observing-first-element', 'et-scroll-observer-observing-last-element');
125
+ this._intersectionObserver?.unobserve(observedChild);
126
+ this._observedChildren[child] = null;
127
+ }
128
+ _clearIntersectionObserver() {
129
+ this._intersectionObserver?.disconnect();
130
+ this._intersectionObserver = null;
131
+ }
132
+ _getNonIgnoredChild(element, direction) {
133
+ if (!element) {
134
+ return null;
135
+ }
136
+ if (element?.classList.contains(SCROLL_OBSERVER_IGNORE_TARGET_CLASS)) {
137
+ const nextElement = element[`${direction}ElementSibling`];
138
+ if (!nextElement) {
139
+ return null;
140
+ }
141
+ return this._getNonIgnoredChild(nextElement, direction);
142
+ }
143
+ return element;
144
+ }
145
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ObserveScrollStateDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
146
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: ObserveScrollStateDirective, isStandalone: true, selector: "[etObserveScrollState]", inputs: { observerRootMargin: "observerRootMargin", observerThreshold: "observerThreshold" }, outputs: { valueChange: "etObserveScrollState" }, providers: [
147
+ {
148
+ provide: OBSERVE_SCROLL_STATE,
149
+ useExisting: ObserveScrollStateDirective,
150
+ },
151
+ DestroyService,
152
+ ], exportAs: ["etObserveScrollState"], ngImport: i0 }); }
153
+ }
154
+ export { ObserveScrollStateDirective };
155
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ObserveScrollStateDirective, decorators: [{
156
+ type: Directive,
157
+ args: [{
158
+ selector: '[etObserveScrollState]',
159
+ exportAs: 'etObserveScrollState',
160
+ standalone: true,
161
+ providers: [
162
+ {
163
+ provide: OBSERVE_SCROLL_STATE,
164
+ useExisting: ObserveScrollStateDirective,
165
+ },
166
+ DestroyService,
167
+ ],
168
+ }]
169
+ }], propDecorators: { observerRootMargin: [{
170
+ type: Input
171
+ }], observerThreshold: [{
172
+ type: Input
173
+ }], valueChange: [{
174
+ type: Output,
175
+ args: ['etObserveScrollState']
176
+ }] } });
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZS1zY3JvbGwtc3RhdGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9vYnNlcnZlLXNjcm9sbC1zdGF0ZS9vYnNlcnZlLXNjcm9sbC1zdGF0ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEQsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGNBQWMsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQy9GLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMvQyxPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsbUNBQW1DLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN2RixPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQzs7QUFHeEUsTUFZYSwyQkFBMkI7SUFaeEM7UUFhbUIsY0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUM7UUFFNUQsZ0JBQVcsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQzFELDRCQUF1QixHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3pE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QUN6QztZQUNELGNBQWM7U0FDZjs7U0FFVSwyQkFBMkI7MkZBQTNCLDJCQUEyQjtrQkFadkMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsd0JBQXdCO29CQUNsQyxRQUFRLEVBQUUsc0JBQXNCO29CQUNoQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxvQkFBb0I7NEJBQzdCLFdBQVcsNkJBQTZCO3lCQUN6Qzt3QkFDRCxjQUFjO3FCQUNmO2lCQUNGOzhCQTRDSyxrQkFBa0I7c0JBRHJCLEtBQUs7Z0JBVUYsaUJBQWlCO3NCQURwQixLQUFLO2dCQWlCTixXQUFXO3NCQURWLE1BQU07dUJBQUMsc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBpbmplY3QsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZW50T2JzZXJ2ZXJTZXJ2aWNlLCBEZXN0cm95U2VydmljZSwgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZWxlbWVudENhblNjcm9sbCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IFNDUk9MTF9PQlNFUlZFUl9GSVJTVF9FTEVNRU5UX0NMQVNTIH0gZnJvbSAnLi4vc2Nyb2xsLW9ic2VydmVyLWZpcnN0LWVsZW1lbnQnO1xuaW1wb3J0IHsgU0NST0xMX09CU0VSVkVSX0lHTk9SRV9UQVJHRVRfQ0xBU1MgfSBmcm9tICcuLi9zY3JvbGwtb2JzZXJ2ZXItaWdub3JlLXRhcmdldCc7XG5pbXBvcnQgeyBTQ1JPTExfT0JTRVJWRVJfTEFTVF9FTEVNRU5UX0NMQVNTIH0gZnJvbSAnLi4vc2Nyb2xsLW9ic2VydmVyLWxhc3QtZWxlbWVudCc7XG5pbXBvcnQgeyBPQlNFUlZFX1NDUk9MTF9TVEFURSB9IGZyb20gJy4vb2JzZXJ2ZS1zY3JvbGwtc3RhdGUuY29uc3RhbnRzJztcbmltcG9ydCB7IE9ic2VydmVkU2Nyb2xsYWJsZUNoaWxkLCBTY3JvbGxPYnNlcnZlclNjcm9sbFN0YXRlIH0gZnJvbSAnLi9vYnNlcnZlLXNjcm9sbC1zdGF0ZS50eXBlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tldE9ic2VydmVTY3JvbGxTdGF0ZV0nLFxuICBleHBvcnRBczogJ2V0T2JzZXJ2ZVNjcm9sbFN0YXRlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogT0JTRVJWRV9TQ1JPTExfU1RBVEUsXG4gICAgICB1c2VFeGlzdGluZzogT2JzZXJ2ZVNjcm9sbFN0YXRlRGlyZWN0aXZlLFxuICAgIH0sXG4gICAgRGVzdHJveVNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIE9ic2VydmVTY3JvbGxTdGF0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveVNlcnZpY2UsIHsgaG9zdDogdHJ1ZSB9KS5kZXN0cm95JDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudE9ic2VydmVyU2VydmljZSA9IGluamVjdChDb250ZW50T2JzZXJ2ZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlID0gaW5qZWN0KFJlc2l6ZU9ic2VydmVyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb2JzZXJ2ZWRDaGlsZHJlbiA9IHtcbiAgICBmaXJzdDogdGhpcy5fZmlyc3RDdXJyZW50Q2hpbGQsXG4gICAgbGFzdDogdGhpcy5fbGFzdEN1cnJlbnRDaGlsZCxcbiAgfTtcblxuICBwcml2YXRlIGdldCBfZmlyc3RDdXJyZW50Q2hpbGQoKSB7XG4gICAgY29uc3QgZXhwbGljaXRGaXJzdEVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcihcbiAgICAgIGAuJHtTQ1JPTExfT0JTRVJWRVJfRklSU1RfRUxFTUVOVF9DTEFTU31gLFxuICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgaWYgKGV4cGxpY2l0Rmlyc3RFbGVtZW50KSB7XG4gICAgICByZXR1cm4gZXhwbGljaXRGaXJzdEVsZW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jaGlsZHJlblswXSBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG5cbiAgICByZXR1cm4gdGhpcy5fZ2V0Tm9uSWdub3JlZENoaWxkKGVsZW1lbnQsICduZXh0Jyk7XG4gIH1cblxuICBwcml2YXRlIGdldCBfbGFzdEN1cnJlbnRDaGlsZCgpIHtcbiAgICBjb25zdCBleHBsaWNpdExhc3RFbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICBgLiR7U0NST0xMX09CU0VSVkVSX0xBU1RfRUxFTUVOVF9DTEFTU31gLFxuICAgICkgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgaWYgKGV4cGxpY2l0TGFzdEVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBleHBsaWNpdExhc3RFbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bXG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW4ubGVuZ3RoIC0gMVxuICAgIF0gYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgcmV0dXJuIHRoaXMuX2dldE5vbklnbm9yZWRDaGlsZChlbGVtZW50LCAncHJldmlvdXMnKTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIGdldCBvYnNlcnZlclJvb3RNYXJnaW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcm9vdE1hcmdpbjtcbiAgfVxuICBzZXQgb2JzZXJ2ZXJSb290TWFyZ2luKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX3Jvb3RNYXJnaW4gPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfcm9vdE1hcmdpbiA9IDA7XG5cbiAgQElucHV0KClcbiAgZ2V0IG9ic2VydmVyVGhyZXNob2xkKCk6IG51bWJlciB8IG51bWJlcltdIHtcbiAgICByZXR1cm4gdGhpcy5fdGhyZXNob2xkO1xuICB9XG4gIHNldCBvYnNlcnZlclRocmVzaG9sZCh2YWx1ZTogTnVtYmVySW5wdXQgfCBudW1iZXJbXSkge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgdGhpcy5fdGhyZXNob2xkID0gdmFsdWU7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fdGhyZXNob2xkID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX3RocmVzaG9sZDogbnVtYmVyIHwgbnVtYmVyW10gPSBbMC45OTk5OSwgMC45OTk5LCAwLjk5OSwgMC45OSwgMV07XG5cbiAgcHJpdmF0ZSBfaW50ZXJzZWN0aW9uT2JzZXJ2ZXI6IEludGVyc2VjdGlvbk9ic2VydmVyIHwgbnVsbCA9IG51bGw7XG5cbiAgQE91dHB1dCgnZXRPYnNlcnZlU2Nyb2xsU3RhdGUnKVxuICB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2Nyb2xsT2JzZXJ2ZXJTY3JvbGxTdGF0ZT4oKTtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9jb250ZW50T2JzZXJ2ZXJTZXJ2aWNlXG4gICAgICAub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgICAucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDI1KSxcbiAgICAgICAgdGFwKCgpID0+IHRoaXMuX2NoZWNrQ2hpbGRyZW4oKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9yZXNpemVPYnNlcnZlclNlcnZpY2VcbiAgICAgIC5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudClcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjUpLFxuICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGNhblNjcm9sbCA9IGVsZW1lbnRDYW5TY3JvbGwodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgICBpZiAoKCF0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciAmJiBjYW5TY3JvbGwpIHx8ICh0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciAmJiAhY2FuU2Nyb2xsKSkge1xuICAgICAgICAgICAgdGhpcy5fY2hlY2tDaGlsZHJlbigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICB0aGlzLl9jaGVja0NoaWxkcmVuKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGVhckludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gIH1cblxuICBwcml2YXRlIF9jaGVja0NoaWxkcmVuKCkge1xuICAgIHRoaXMuX2NsZWFySW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuX2ZpcnN0Q3VycmVudENoaWxkID09PSB0aGlzLl9sYXN0Q3VycmVudENoaWxkIHx8XG4gICAgICAhdGhpcy5fZmlyc3RDdXJyZW50Q2hpbGQgfHxcbiAgICAgICF0aGlzLl9sYXN0Q3VycmVudENoaWxkIHx8XG4gICAgICAhZWxlbWVudENhblNjcm9sbCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpXG4gICAgKSB7XG4gICAgICB0aGlzLl91bm9ic2VydmVDaGlsZCgnZmlyc3QnKTtcbiAgICAgIHRoaXMuX3Vub2JzZXJ2ZUNoaWxkKCdsYXN0Jyk7XG5cbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgIGlzQXRTdGFydDogdHJ1ZSxcbiAgICAgICAgaXNBdEVuZDogdHJ1ZSxcbiAgICAgICAgY2FuU2Nyb2xsOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pbnRlcnNlY3Rpb25PYnNlcnZlciA9IHRoaXMuX2luaXRpYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKTtcblxuICAgICAgdGhpcy5fb2JzZXJ2ZUNoaWxkKCdmaXJzdCcsIHRoaXMuX2ZpcnN0Q3VycmVudENoaWxkKTtcbiAgICAgIHRoaXMuX29ic2VydmVDaGlsZCgnbGFzdCcsIHRoaXMuX2xhc3RDdXJyZW50Q2hpbGQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2luaXRpYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSB7XG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoZW50cmllcykgPT4ge1xuICAgICAgICBjb25zdCB7IGZpcnN0LCBsYXN0IH0gPSB0aGlzLl9vYnNlcnZlZENoaWxkcmVuO1xuXG4gICAgICAgIGNvbnN0IGlzQXRTdGFydCA9IGVudHJpZXMuZmluZCgoZW50cnkpID0+IGVudHJ5LnRhcmdldCA9PT0gZmlyc3QpPy5pc0ludGVyc2VjdGluZyA/PyBmYWxzZTtcbiAgICAgICAgY29uc3QgaXNBdEVuZCA9IGVudHJpZXMuZmluZCgoZW50cnkpID0+IGVudHJ5LnRhcmdldCA9PT0gbGFzdCk/LmlzSW50ZXJzZWN0aW5nID8/IGZhbHNlO1xuXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgaXNBdFN0YXJ0LFxuICAgICAgICAgIGlzQXRFbmQsXG4gICAgICAgICAgY2FuU2Nyb2xsOiAhaXNBdFN0YXJ0IHx8ICFpc0F0RW5kLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHJvb3Q6IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCxcbiAgICAgICAgcm9vdE1hcmdpbjogdGhpcy5fcm9vdE1hcmdpbiA/IGAke3RoaXMuX3Jvb3RNYXJnaW59cHhgIDogdW5kZWZpbmVkLFxuICAgICAgICB0aHJlc2hvbGQ6IHRoaXMuX3RocmVzaG9sZCxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBvYnNlcnZlcjtcbiAgfVxuXG4gIHByaXZhdGUgX29ic2VydmVDaGlsZChjaGlsZDogT2JzZXJ2ZWRTY3JvbGxhYmxlQ2hpbGQsIGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG4gICAgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI/Lm9ic2VydmUoZWxlbWVudCk7XG4gICAgdGhpcy5fb2JzZXJ2ZWRDaGlsZHJlbltjaGlsZF0gPSBlbGVtZW50O1xuXG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKGBldC1zY3JvbGwtb2JzZXJ2ZXItb2JzZXJ2aW5nLSR7Y2hpbGR9LWVsZW1lbnRgKTtcbiAgfVxuXG4gIHByaXZhdGUgX3Vub2JzZXJ2ZUNoaWxkKGNoaWxkOiBPYnNlcnZlZFNjcm9sbGFibGVDaGlsZCkge1xuICAgIGNvbnN0IG9ic2VydmVkQ2hpbGQgPSB0aGlzLl9vYnNlcnZlZENoaWxkcmVuW2NoaWxkXTtcblxuICAgIGlmICghb2JzZXJ2ZWRDaGlsZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG9ic2VydmVkQ2hpbGQuY2xhc3NMaXN0LnJlbW92ZShcbiAgICAgICdldC1zY3JvbGwtb2JzZXJ2ZXItb2JzZXJ2aW5nLWZpcnN0LWVsZW1lbnQnLFxuICAgICAgJ2V0LXNjcm9sbC1vYnNlcnZlci1vYnNlcnZpbmctbGFzdC1lbGVtZW50JyxcbiAgICApO1xuXG4gICAgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXI/LnVub2JzZXJ2ZShvYnNlcnZlZENoaWxkKTtcbiAgICB0aGlzLl9vYnNlcnZlZENoaWxkcmVuW2NoaWxkXSA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIF9jbGVhckludGVyc2VjdGlvbk9ic2VydmVyKCkge1xuICAgIHRoaXMuX2ludGVyc2VjdGlvbk9ic2VydmVyPy5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5faW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBfZ2V0Tm9uSWdub3JlZENoaWxkKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCwgZGlyZWN0aW9uOiAncHJldmlvdXMnIHwgJ25leHQnKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGlmIChlbGVtZW50Py5jbGFzc0xpc3QuY29udGFpbnMoU0NST0xMX09CU0VSVkVSX0lHTk9SRV9UQVJHRVRfQ0xBU1MpKSB7XG4gICAgICBjb25zdCBuZXh0RWxlbWVudCA9IGVsZW1lbnRbYCR7ZGlyZWN0aW9ufUVsZW1lbnRTaWJsaW5nYF0gYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuXG4gICAgICBpZiAoIW5leHRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fZ2V0Tm9uSWdub3JlZENoaWxkKG5leHRFbGVtZW50LCBkaXJlY3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG59XG4iXX0=
@@ -0,0 +1,37 @@
1
+ import { coerceNumberProperty } from '@angular/cdk/coercion';
2
+ import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ class RepeatDirective {
5
+ get repeatCount() {
6
+ return this._repeatCount;
7
+ }
8
+ set repeatCount(value) {
9
+ this._repeatCount = coerceNumberProperty(value);
10
+ this._render();
11
+ }
12
+ constructor(_mainTemplateRef, _viewContainerRef) {
13
+ this._mainTemplateRef = _mainTemplateRef;
14
+ this._viewContainerRef = _viewContainerRef;
15
+ this._repeatCount = 2;
16
+ }
17
+ _render() {
18
+ this._viewContainerRef.clear();
19
+ for (let i = 0; i < this.repeatCount; i++) {
20
+ this._viewContainerRef.createEmbeddedView(this._mainTemplateRef);
21
+ }
22
+ }
23
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: RepeatDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive }); }
24
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: RepeatDirective, isStandalone: true, selector: "[etRepeat]", inputs: { repeatCount: ["etRepeat", "repeatCount"] }, ngImport: i0 }); }
25
+ }
26
+ export { RepeatDirective };
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: RepeatDirective, decorators: [{
28
+ type: Directive,
29
+ args: [{
30
+ selector: '[etRepeat]',
31
+ standalone: true,
32
+ }]
33
+ }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; }, propDecorators: { repeatCount: [{
34
+ type: Input,
35
+ args: ['etRepeat']
36
+ }] } });
37
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvcmVwZWF0L3JlcGVhdC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9CQUFvQixFQUFlLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUVoRixNQUlhLGVBQWU7SUFDMUIsSUFDSSxXQUFXO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFJLFdBQVcsQ0FBQyxLQUFrQjtRQUNoQyxJQUFJLENBQUMsWUFBWSxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBR0QsWUFBb0IsZ0JBQXNDLEVBQVUsaUJBQW1DO1FBQW5GLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0I7UUFBVSxzQkFBaUIsR0FBakIsaUJBQWlCLENBQWtCO1FBRi9GLGlCQUFZLEdBQUcsQ0FBQyxDQUFDO0lBRWlGLENBQUM7SUFFbkcsT0FBTztRQUNiLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUUvQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN6QyxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDbEU7SUFDSCxDQUFDOzhHQW5CVSxlQUFlO2tHQUFmLGVBQWU7O1NBQWYsZUFBZTsyRkFBZixlQUFlO2tCQUozQixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxZQUFZO29CQUN0QixVQUFVLEVBQUUsSUFBSTtpQkFDakI7aUlBR0ssV0FBVztzQkFEZCxLQUFLO3VCQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2VyY2VOdW1iZXJQcm9wZXJ0eSwgTnVtYmVySW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2V0UmVwZWF0XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIFJlcGVhdERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgnZXRSZXBlYXQnKVxuICBnZXQgcmVwZWF0Q291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fcmVwZWF0Q291bnQ7XG4gIH1cbiAgc2V0IHJlcGVhdENvdW50KHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX3JlcGVhdENvdW50ID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuX3JlbmRlcigpO1xuICB9XG4gIHByaXZhdGUgX3JlcGVhdENvdW50ID0gMjtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9tYWluVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPHVua25vd24+LCBwcml2YXRlIF92aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7fVxuXG4gIHByaXZhdGUgX3JlbmRlcigpIHtcbiAgICB0aGlzLl92aWV3Q29udGFpbmVyUmVmLmNsZWFyKCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMucmVwZWF0Q291bnQ7IGkrKykge1xuICAgICAgdGhpcy5fdmlld0NvbnRhaW5lclJlZi5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fbWFpblRlbXBsYXRlUmVmKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,32 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { Directive, HostBinding, Input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export const SCROLL_OBSERVER_FIRST_ELEMENT_CLASS = 'et-scroll-observer-first-element';
5
+ class ScrollObserverFirstElementDirective {
6
+ constructor() {
7
+ this._isFirstElement = false;
8
+ }
9
+ get isFirstElement() {
10
+ return this._isFirstElement;
11
+ }
12
+ set isFirstElement(value) {
13
+ this._isFirstElement = coerceBooleanProperty(value);
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ScrollObserverFirstElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
16
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: ScrollObserverFirstElementDirective, isStandalone: true, selector: "[etScrollObserverFirstElement]", inputs: { isFirstElement: ["etScrollObserverFirstElement", "isFirstElement"] }, host: { properties: { "class.et-scroll-observer-first-element": "this.isFirstElement" } }, ngImport: i0 }); }
17
+ }
18
+ export { ScrollObserverFirstElementDirective };
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ScrollObserverFirstElementDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{
22
+ selector: '[etScrollObserverFirstElement]',
23
+ standalone: true,
24
+ }]
25
+ }], propDecorators: { isFirstElement: [{
26
+ type: Input,
27
+ args: ['etScrollObserverFirstElement']
28
+ }, {
29
+ type: HostBinding,
30
+ args: [`class.${SCROLL_OBSERVER_FIRST_ELEMENT_CLASS}`]
31
+ }] } });
32
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLW9ic2VydmVyLWZpcnN0LWVsZW1lbnQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9zY3JvbGwtb2JzZXJ2ZXItZmlyc3QtZWxlbWVudC9zY3JvbGwtb2JzZXJ2ZXItZmlyc3QtZWxlbWVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFOUQsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsa0NBQWtDLENBQUM7QUFFdEYsTUFJYSxtQ0FBbUM7SUFKaEQ7UUFhVSxvQkFBZSxHQUFHLEtBQUssQ0FBQztLQUNqQztJQVRDLElBRUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksY0FBYyxDQUFDLEtBQW1CO1FBQ3BDLElBQUksQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEQsQ0FBQzs4R0FSVSxtQ0FBbUM7a0dBQW5DLG1DQUFtQzs7U0FBbkMsbUNBQW1DOzJGQUFuQyxtQ0FBbUM7a0JBSi9DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGdDQUFnQztvQkFDMUMsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQUlLLGNBQWM7c0JBRmpCLEtBQUs7dUJBQUMsOEJBQThCOztzQkFDcEMsV0FBVzt1QkFBQyxTQUFTLG1DQUFtQyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgRGlyZWN0aXZlLCBIb3N0QmluZGluZywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGNvbnN0IFNDUk9MTF9PQlNFUlZFUl9GSVJTVF9FTEVNRU5UX0NMQVNTID0gJ2V0LXNjcm9sbC1vYnNlcnZlci1maXJzdC1lbGVtZW50JztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2V0U2Nyb2xsT2JzZXJ2ZXJGaXJzdEVsZW1lbnRdJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsT2JzZXJ2ZXJGaXJzdEVsZW1lbnREaXJlY3RpdmUge1xuICBASW5wdXQoJ2V0U2Nyb2xsT2JzZXJ2ZXJGaXJzdEVsZW1lbnQnKVxuICBASG9zdEJpbmRpbmcoYGNsYXNzLiR7U0NST0xMX09CU0VSVkVSX0ZJUlNUX0VMRU1FTlRfQ0xBU1N9YClcbiAgZ2V0IGlzRmlyc3RFbGVtZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0ZpcnN0RWxlbWVudDtcbiAgfVxuICBzZXQgaXNGaXJzdEVsZW1lbnQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2lzRmlyc3RFbGVtZW50ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9pc0ZpcnN0RWxlbWVudCA9IGZhbHNlO1xufVxuIl19
@@ -0,0 +1,19 @@
1
+ import { Directive } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export const SCROLL_OBSERVER_IGNORE_TARGET_CLASS = 'et-scroll-observer-ignore-target';
4
+ class ScrollObserverIgnoreTargetDirective {
5
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ScrollObserverIgnoreTargetDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
6
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", type: ScrollObserverIgnoreTargetDirective, isStandalone: true, selector: "[etScrollObserverIgnoreTarget]", host: { classAttribute: "et-scroll-observer-ignore-target" }, ngImport: i0 }); }
7
+ }
8
+ export { ScrollObserverIgnoreTargetDirective };
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ScrollObserverIgnoreTargetDirective, decorators: [{
10
+ type: Directive,
11
+ args: [{
12
+ selector: '[etScrollObserverIgnoreTarget]',
13
+ standalone: true,
14
+ host: {
15
+ class: SCROLL_OBSERVER_IGNORE_TARGET_CLASS,
16
+ },
17
+ }]
18
+ }] });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLW9ic2VydmVyLWlnbm9yZS10YXJnZXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9zY3JvbGwtb2JzZXJ2ZXItaWdub3JlLXRhcmdldC9zY3JvbGwtb2JzZXJ2ZXItaWdub3JlLXRhcmdldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFMUMsTUFBTSxDQUFDLE1BQU0sbUNBQW1DLEdBQUcsa0NBQWtDLENBQUM7QUFFdEYsTUFPYSxtQ0FBbUM7OEdBQW5DLG1DQUFtQztrR0FBbkMsbUNBQW1DOztTQUFuQyxtQ0FBbUM7MkZBQW5DLG1DQUFtQztrQkFQL0MsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0NBQWdDO29CQUMxQyxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsSUFBSSxFQUFFO3dCQUNKLEtBQUssRUFBRSxtQ0FBbUM7cUJBQzNDO2lCQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBTQ1JPTExfT0JTRVJWRVJfSUdOT1JFX1RBUkdFVF9DTEFTUyA9ICdldC1zY3JvbGwtb2JzZXJ2ZXItaWdub3JlLXRhcmdldCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tldFNjcm9sbE9ic2VydmVySWdub3JlVGFyZ2V0XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogU0NST0xMX09CU0VSVkVSX0lHTk9SRV9UQVJHRVRfQ0xBU1MsXG4gIH0sXG59KVxuZXhwb3J0IGNsYXNzIFNjcm9sbE9ic2VydmVySWdub3JlVGFyZ2V0RGlyZWN0aXZlIHt9XG4iXX0=
@@ -0,0 +1,35 @@
1
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
+ import { Directive, HostBinding, Input } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export const SCROLL_OBSERVER_LAST_ELEMENT_CLASS = 'et-scroll-observer-last-element';
5
+ class ScrollObserverLastElementDirective {
6
+ constructor() {
7
+ this._isLastElement = false;
8
+ }
9
+ get isLastElement() {
10
+ return this._isLastElement;
11
+ }
12
+ set isLastElement(value) {
13
+ this._isLastElement = coerceBooleanProperty(value);
14
+ }
15
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ScrollObserverLastElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
16
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.0.0", 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 }); }
17
+ }
18
+ export { ScrollObserverLastElementDirective };
19
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: ScrollObserverLastElementDirective, decorators: [{
20
+ type: Directive,
21
+ args: [{
22
+ selector: '[etScrollObserverLastElement]',
23
+ standalone: true,
24
+ host: {
25
+ class: SCROLL_OBSERVER_LAST_ELEMENT_CLASS,
26
+ },
27
+ }]
28
+ }], propDecorators: { isLastElement: [{
29
+ type: Input,
30
+ args: ['etScrollObserverLastElement']
31
+ }, {
32
+ type: HostBinding,
33
+ args: [`class.${SCROLL_OBSERVER_LAST_ELEMENT_CLASS}`]
34
+ }] } });
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nyb2xsLW9ic2VydmVyLWxhc3QtZWxlbWVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL3Njcm9sbC1vYnNlcnZlci1sYXN0LWVsZW1lbnQvc2Nyb2xsLW9ic2VydmVyLWxhc3QtZWxlbWVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFFOUQsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQUcsaUNBQWlDLENBQUM7QUFFcEYsTUFPYSxrQ0FBa0M7SUFQL0M7UUFnQlUsbUJBQWMsR0FBRyxLQUFLLENBQUM7S0FDaEM7SUFUQyxJQUVJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUNELElBQUksYUFBYSxDQUFDLEtBQW1CO1FBQ25DLElBQUksQ0FBQyxjQUFjLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDckQsQ0FBQzs4R0FSVSxrQ0FBa0M7a0dBQWxDLGtDQUFrQzs7U0FBbEMsa0NBQWtDOzJGQUFsQyxrQ0FBa0M7a0JBUDlDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLCtCQUErQjtvQkFDekMsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLElBQUksRUFBRTt3QkFDSixLQUFLLEVBQUUsa0NBQWtDO3FCQUMxQztpQkFDRjs4QkFJSyxhQUFhO3NCQUZoQixLQUFLO3VCQUFDLDZCQUE2Qjs7c0JBQ25DLFdBQVc7dUJBQUMsU0FBUyxrQ0FBa0MsRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmV4cG9ydCBjb25zdCBTQ1JPTExfT0JTRVJWRVJfTEFTVF9FTEVNRU5UX0NMQVNTID0gJ2V0LXNjcm9sbC1vYnNlcnZlci1sYXN0LWVsZW1lbnQnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZXRTY3JvbGxPYnNlcnZlckxhc3RFbGVtZW50XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGhvc3Q6IHtcbiAgICBjbGFzczogU0NST0xMX09CU0VSVkVSX0xBU1RfRUxFTUVOVF9DTEFTUyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgU2Nyb2xsT2JzZXJ2ZXJMYXN0RWxlbWVudERpcmVjdGl2ZSB7XG4gIEBJbnB1dCgnZXRTY3JvbGxPYnNlcnZlckxhc3RFbGVtZW50JylcbiAgQEhvc3RCaW5kaW5nKGBjbGFzcy4ke1NDUk9MTF9PQlNFUlZFUl9MQVNUX0VMRU1FTlRfQ0xBU1N9YClcbiAgZ2V0IGlzTGFzdEVsZW1lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2lzTGFzdEVsZW1lbnQ7XG4gIH1cbiAgc2V0IGlzTGFzdEVsZW1lbnQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2lzTGFzdEVsZW1lbnQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICB9XG4gIHByaXZhdGUgX2lzTGFzdEVsZW1lbnQgPSBmYWxzZTtcbn1cbiJdfQ==