@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
@@ -1,147 +0,0 @@
1
- import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
- import { Directive, ElementRef, inject, Input } from '@angular/core';
3
- import { combineLatest, debounceTime, fromEvent, startWith, Subject, take, takeUntil, tap } from 'rxjs';
4
- import { ContentObserverService, DestroyService, ResizeObserverService } from '../../services';
5
- import { elementCanScroll } from '../../utils';
6
- import { CURSOR_DRAG_SCROLLING_CLASS, CURSOR_DRAG_SCROLLING_PREPARED_CLASS } from './cursor-drag-scroll.constants';
7
- import * as i0 from "@angular/core";
8
- export class CursorDragScrollDirective {
9
- constructor() {
10
- this._subscriptions = [];
11
- this._destroy$ = inject(DestroyService, { host: true }).destroy$;
12
- this._elementRef = inject(ElementRef);
13
- this._contentObserverService = inject(ContentObserverService);
14
- this._resizeObserverService = inject(ResizeObserverService);
15
- this._bufferUntilScroll = 5;
16
- this._mouseUp$ = new Subject();
17
- this._isScrolling = false;
18
- this._canScroll = false;
19
- this._currentScrollState = {
20
- top: 0,
21
- left: 0,
22
- x: 0,
23
- y: 0,
24
- };
25
- this._enabled = false;
26
- }
27
- get enabled() {
28
- return this._enabled;
29
- }
30
- set enabled(value) {
31
- this._enabled = coerceBooleanProperty(value);
32
- if (this._enabled) {
33
- this._enableCursorDragScroll();
34
- }
35
- else {
36
- this._disableCursorDragScroll();
37
- }
38
- }
39
- ngAfterViewInit() {
40
- if (this.enabled) {
41
- this._enableCursorDragScroll();
42
- }
43
- else {
44
- this._disableCursorDragScroll();
45
- }
46
- }
47
- _enableCursorDragScroll() {
48
- const contentResizeSub = combineLatest([
49
- this._contentObserverService.observe(this._elementRef.nativeElement).pipe(startWith(null)),
50
- this._resizeObserverService.observe(this._elementRef.nativeElement).pipe(startWith(null)),
51
- ])
52
- .pipe(debounceTime(25), tap(() => this._updateCanScrollState()), takeUntil(this._destroy$))
53
- .subscribe();
54
- const mousedownSub = fromEvent(this._elementRef.nativeElement, 'mousedown')
55
- .pipe(tap((e) => this._onMouseDown(e)), takeUntil(this._destroy$))
56
- .subscribe();
57
- this._subscriptions.push(contentResizeSub, mousedownSub);
58
- this._updateCanScrollState();
59
- }
60
- _disableCursorDragScroll() {
61
- this._subscriptions.forEach((sub) => sub.unsubscribe());
62
- this._subscriptions.length = 0;
63
- this._elementRef.nativeElement.style.cursor = 'default';
64
- }
65
- _onMouseDown(e) {
66
- if (!this._elementRef?.nativeElement || !this._canScroll) {
67
- return;
68
- }
69
- const element = this._elementRef.nativeElement;
70
- element.classList.add(CURSOR_DRAG_SCROLLING_PREPARED_CLASS);
71
- this._elementRef.nativeElement.style.scrollSnapType = 'none';
72
- this._elementRef.nativeElement.style.scrollBehavior = 'unset';
73
- this._currentScrollState = {
74
- left: this._elementRef.nativeElement.scrollLeft,
75
- top: this._elementRef.nativeElement.scrollTop,
76
- x: e.clientX,
77
- y: e.clientY,
78
- };
79
- fromEvent(document, 'mousemove')
80
- .pipe(tap((e) => this._mouseMoveHandler(e)), takeUntil(this._mouseUp$), takeUntil(this._destroy$))
81
- .subscribe();
82
- fromEvent(document, 'mouseup')
83
- .pipe(tap(() => this._mouseUpHandler()), take(1), takeUntil(this._destroy$))
84
- .subscribe();
85
- }
86
- _mouseMoveHandler(e) {
87
- e.preventDefault();
88
- if (!this._elementRef?.nativeElement) {
89
- return;
90
- }
91
- const dx = e.clientX - this._currentScrollState.x;
92
- const dy = e.clientY - this._currentScrollState.y;
93
- if (Math.abs(dx) > this._bufferUntilScroll || Math.abs(dy) > this._bufferUntilScroll) {
94
- const element = this._elementRef.nativeElement;
95
- if (!this._isScrolling) {
96
- this._isScrolling = true;
97
- element.style.cursor = 'grabbing';
98
- element.classList.add(CURSOR_DRAG_SCROLLING_CLASS);
99
- element.scroll({
100
- top: this._currentScrollState.top - dy,
101
- left: this._currentScrollState.left - dx,
102
- behavior: 'smooth',
103
- });
104
- }
105
- else {
106
- element.scrollTop = this._currentScrollState.top - dy;
107
- element.scrollLeft = this._currentScrollState.left - dx;
108
- }
109
- }
110
- }
111
- _mouseUpHandler() {
112
- this._mouseUp$.next(true);
113
- this._isScrolling = false;
114
- if (!this._elementRef?.nativeElement) {
115
- return;
116
- }
117
- this._elementRef.nativeElement.style.scrollSnapType = '';
118
- this._elementRef.nativeElement.style.scrollBehavior = '';
119
- this._elementRef.nativeElement.style.cursor = 'grab';
120
- this._elementRef.nativeElement.classList.remove(CURSOR_DRAG_SCROLLING_CLASS);
121
- this._elementRef.nativeElement.classList.remove(CURSOR_DRAG_SCROLLING_PREPARED_CLASS);
122
- }
123
- _updateCanScrollState() {
124
- this._canScroll = elementCanScroll(this._elementRef.nativeElement);
125
- if (this._canScroll) {
126
- this._elementRef.nativeElement.style.cursor = 'grab';
127
- }
128
- else {
129
- this._elementRef.nativeElement.style.cursor = 'default';
130
- }
131
- }
132
- }
133
- CursorDragScrollDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: CursorDragScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
134
- CursorDragScrollDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", 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.7", ngImport: i0, type: CursorDragScrollDirective, decorators: [{
136
- type: Directive,
137
- args: [{
138
- selector: '[etCursorDragScroll]',
139
- exportAs: 'etCursorDragScroll',
140
- standalone: true,
141
- providers: [DestroyService],
142
- }]
143
- }], propDecorators: { enabled: [{
144
- type: Input,
145
- args: ['etCursorDragScroll']
146
- }] } });
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Vyc29yLWRyYWctc2Nyb2xsLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvY3Vyc29yLWRyYWctc2Nyb2xsL2N1cnNvci1kcmFnLXNjcm9sbC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBaUIsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFnQixJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0SCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsY0FBYyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDL0YsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxvQ0FBb0MsRUFBRSxNQUFNLGdDQUFnQyxDQUFDOztBQVFuSCxNQUFNLE9BQU8seUJBQXlCO0lBTnRDO1FBT21CLG1CQUFjLEdBQW1CLEVBQUUsQ0FBQztRQUNwQyxjQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM1RCxnQkFBVyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7UUFDMUQsNEJBQXVCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDekQsMkJBQXNCLEdBQUcsTUFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUM7UUFFdkQsdUJBQWtCLEdBQUcsQ0FBQyxD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SyxPQUFPO3NCQURWLEtBQUs7dUJBQUMsb0JBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBpbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBjb21iaW5lTGF0ZXN0LCBkZWJvdW5jZVRpbWUsIGZyb21FdmVudCwgc3RhcnRXaXRoLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24sIHRha2UsIHRha2VVbnRpbCwgdGFwIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDb250ZW50T2JzZXJ2ZXJTZXJ2aWNlLCBEZXN0cm95U2VydmljZSwgUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZWxlbWVudENhblNjcm9sbCB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IENVUlNPUl9EUkFHX1NDUk9MTElOR19DTEFTUywgQ1VSU09SX0RSQUdfU0NST0xMSU5HX1BSRVBBUkVEX0NMQVNTIH0gZnJvbSAnLi9jdXJzb3ItZHJhZy1zY3JvbGwuY29uc3RhbnRzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2V0Q3Vyc29yRHJhZ1Njcm9sbF0nLFxuICBleHBvcnRBczogJ2V0Q3Vyc29yRHJhZ1Njcm9sbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIHByb3ZpZGVyczogW0Rlc3Ryb3lTZXJ2aWNlXSxcbn0pXG5leHBvcnQgY2xhc3MgQ3Vyc29yRHJhZ1Njcm9sbERpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xuICBwcml2YXRlIHJlYWRvbmx5IF9zdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kZXN0cm95JCA9IGluamVjdChEZXN0cm95U2VydmljZSwgeyBob3N0OiB0cnVlIH0pLmRlc3Ryb3kkO1xuICBwcml2YXRlIHJlYWRvbmx5IF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfY29udGVudE9ic2VydmVyU2VydmljZSA9IGluamVjdChDb250ZW50T2JzZXJ2ZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlID0gaW5qZWN0KFJlc2l6ZU9ic2VydmVyU2VydmljZSk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYnVmZmVyVW50aWxTY3JvbGwgPSA1O1xuICBwcml2YXRlIHJlYWRvbmx5IF9tb3VzZVVwJCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgcHJpdmF0ZSBfaXNTY3JvbGxpbmcgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfY2FuU2Nyb2xsID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfY3VycmVudFNjcm9sbFN0YXRlID0ge1xuICAgIHRvcDogMCxcbiAgICBsZWZ0OiAwLFxuICAgIHg6IDAsXG4gICAgeTogMCxcbiAgfTtcblxuICBASW5wdXQoJ2V0Q3Vyc29yRHJhZ1Njcm9sbCcpXG4gIGdldCBlbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9lbmFibGVkO1xuICB9XG4gIHNldCBlbmFibGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICB0aGlzLl9lbmFibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcblxuICAgIGlmICh0aGlzLl9lbmFibGVkKSB7XG4gICAgICB0aGlzLl9lbmFibGVDdXJzb3JEcmFnU2Nyb2xsKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Rpc2FibGVDdXJzb3JEcmFnU2Nyb2xsKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2VuYWJsZWQgPSBmYWxzZTtcblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5fZW5hYmxlQ3Vyc29yRHJhZ1Njcm9sbCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9kaXNhYmxlQ3Vyc29yRHJhZ1Njcm9sbCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2VuYWJsZUN1cnNvckRyYWdTY3JvbGwoKSB7XG4gICAgY29uc3QgY29udGVudFJlc2l6ZVN1YiA9IGNvbWJpbmVMYXRlc3QoW1xuICAgICAgdGhpcy5fY29udGVudE9ic2VydmVyU2VydmljZS5vYnNlcnZlKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkucGlwZShzdGFydFdpdGgobnVsbCkpLFxuICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLm9ic2VydmUodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KS5waXBlKHN0YXJ0V2l0aChudWxsKSksXG4gICAgXSlcbiAgICAgIC5waXBlKFxuICAgICAgICBkZWJvdW5jZVRpbWUoMjUpLFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fdXBkYXRlQ2FuU2Nyb2xsU3RhdGUoKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBjb25zdCBtb3VzZWRvd25TdWIgPSBmcm9tRXZlbnQ8TW91c2VFdmVudD4odGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnbW91c2Vkb3duJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKGUpID0+IHRoaXMuX29uTW91c2VEb3duKGUpKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMucHVzaChjb250ZW50UmVzaXplU3ViLCBtb3VzZWRvd25TdWIpO1xuXG4gICAgdGhpcy5fdXBkYXRlQ2FuU2Nyb2xsU3RhdGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgX2Rpc2FibGVDdXJzb3JEcmFnU2Nyb2xsKCkge1xuICAgIHRoaXMuX3N1YnNjcmlwdGlvbnMuZm9yRWFjaCgoc3ViKSA9PiBzdWIudW5zdWJzY3JpYmUoKSk7XG4gICAgdGhpcy5fc3Vic2NyaXB0aW9ucy5sZW5ndGggPSAwO1xuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnZGVmYXVsdCc7XG4gIH1cblxuICBwcml2YXRlIF9vbk1vdXNlRG93bihlOiBNb3VzZUV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLl9lbGVtZW50UmVmPy5uYXRpdmVFbGVtZW50IHx8ICF0aGlzLl9jYW5TY3JvbGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuXG4gICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENVUlNPUl9EUkFHX1NDUk9MTElOR19QUkVQQVJFRF9DTEFTUyk7XG5cbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2Nyb2xsU25hcFR5cGUgPSAnbm9uZSc7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLnNjcm9sbEJlaGF2aW9yID0gJ3Vuc2V0JztcblxuICAgIHRoaXMuX2N1cnJlbnRTY3JvbGxTdGF0ZSA9IHtcbiAgICAgIGxlZnQ6IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgdG9wOiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wLFxuICAgICAgeDogZS5jbGllbnRYLFxuICAgICAgeTogZS5jbGllbnRZLFxuICAgIH07XG5cbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZW1vdmUnKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoZSkgPT4gdGhpcy5fbW91c2VNb3ZlSGFuZGxlcihlKSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9tb3VzZVVwJCksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICBmcm9tRXZlbnQ8TW91c2VFdmVudD4oZG9jdW1lbnQsICdtb3VzZXVwJylcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoKCkgPT4gdGhpcy5fbW91c2VVcEhhbmRsZXIoKSksXG4gICAgICAgIHRha2UoMSksXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9tb3VzZU1vdmVIYW5kbGVyKGU6IE1vdXNlRXZlbnQpIHtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBpZiAoIXRoaXMuX2VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkeCA9IGUuY2xpZW50WCAtIHRoaXMuX2N1cnJlbnRTY3JvbGxTdGF0ZS54O1xuICAgIGNvbnN0IGR5ID0gZS5jbGllbnRZIC0gdGhpcy5fY3VycmVudFNjcm9sbFN0YXRlLnk7XG5cbiAgICBpZiAoTWF0aC5hYnMoZHgpID4gdGhpcy5fYnVmZmVyVW50aWxTY3JvbGwgfHwgTWF0aC5hYnMoZHkpID4gdGhpcy5fYnVmZmVyVW50aWxTY3JvbGwpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgIGlmICghdGhpcy5faXNTY3JvbGxpbmcpIHtcbiAgICAgICAgdGhpcy5faXNTY3JvbGxpbmcgPSB0cnVlO1xuXG4gICAgICAgIGVsZW1lbnQuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJztcbiAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKENVUlNPUl9EUkFHX1NDUk9MTElOR19DTEFTUyk7XG4gICAgICAgIGVsZW1lbnQuc2Nyb2xsKHtcbiAgICAgICAgICB0b3A6IHRoaXMuX2N1cnJlbnRTY3JvbGxTdGF0ZS50b3AgLSBkeSxcbiAgICAgICAgICBsZWZ0OiB0aGlzLl9jdXJyZW50U2Nyb2xsU3RhdGUubGVmdCAtIGR4LFxuICAgICAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBlbGVtZW50LnNjcm9sbFRvcCA9IHRoaXMuX2N1cnJlbnRTY3JvbGxTdGF0ZS50b3AgLSBkeTtcbiAgICAgICAgZWxlbWVudC5zY3JvbGxMZWZ0ID0gdGhpcy5fY3VycmVudFNjcm9sbFN0YXRlLmxlZnQgLSBkeDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9tb3VzZVVwSGFuZGxlcigpIHtcbiAgICB0aGlzLl9tb3VzZVVwJC5uZXh0KHRydWUpO1xuICAgIHRoaXMuX2lzU2Nyb2xsaW5nID0gZmFsc2U7XG5cbiAgICBpZiAoIXRoaXMuX2VsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2Nyb2xsU25hcFR5cGUgPSAnJztcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2Nyb2xsQmVoYXZpb3IgPSAnJztcblxuICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5zdHlsZS5jdXJzb3IgPSAnZ3JhYic7XG4gICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ1VSU09SX0RSQUdfU0NST0xMSU5HX0NMQVNTKTtcbiAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDVVJTT1JfRFJBR19TQ1JPTExJTkdfUFJFUEFSRURfQ0xBU1MpO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlQ2FuU2Nyb2xsU3RhdGUoKSB7XG4gICAgdGhpcy5fY2FuU2Nyb2xsID0gZWxlbWVudENhblNjcm9sbCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgaWYgKHRoaXMuX2NhblNjcm9sbCkge1xuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdncmFiJztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnN0eWxlLmN1cnNvciA9ICdkZWZhdWx0JztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1,55 +0,0 @@
1
- import { Directive, InjectionToken } from '@angular/core';
2
- import { BehaviorSubject } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export const DELAYABLE_TOKEN = new InjectionToken('DELAYABLE_DIRECTIVE_TOKEN');
5
- export class DelayableDirective {
6
- constructor() {
7
- this._isDelayed$ = new BehaviorSubject(false);
8
- }
9
- get isDelayed$() {
10
- return this._isDelayed$.asObservable();
11
- }
12
- get isDelayed() {
13
- return this._isDelayed$.value;
14
- }
15
- enableDelayed() {
16
- if (this._isDelayed$.value) {
17
- return;
18
- }
19
- this._isDelayed$.next(true);
20
- }
21
- disableDelayed() {
22
- if (!this._isDelayed$.value) {
23
- return;
24
- }
25
- this._isDelayed$.next(false);
26
- }
27
- setDelayed(val) {
28
- if (this._isDelayed$.value === val) {
29
- return;
30
- }
31
- this._isDelayed$.next(val);
32
- }
33
- }
34
- DelayableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DelayableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
35
- DelayableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", type: DelayableDirective, isStandalone: true, selector: "[etDelayable]", providers: [
36
- {
37
- provide: DELAYABLE_TOKEN,
38
- useExisting: DelayableDirective,
39
- },
40
- ], exportAs: ["etDelayable"], ngImport: i0 });
41
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: DelayableDirective, decorators: [{
42
- type: Directive,
43
- args: [{
44
- selector: '[etDelayable]',
45
- exportAs: 'etDelayable',
46
- standalone: true,
47
- providers: [
48
- {
49
- provide: DELAYABLE_TOKEN,
50
- useExisting: DelayableDirective,
51
- },
52
- ],
53
- }]
54
- }] });
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsYXlhYmxlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvZGVsYXlhYmxlL2RlbGF5YWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDMUQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdkMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksY0FBYyxDQUFxQiwyQkFBMkIsQ0FBQyxDQUFDO0FBYW5HLE1BQU0sT0FBTyxrQkFBa0I7SUFYL0I7UUFZbUIsZ0JBQVcsR0FBRyxJQUFJLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQWlDM0Q7SUEvQkMsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtZQUMxQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtZQUMzQixPQUFPO1NBQ1I7UUFFRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVk7UUFDckIsSUFBSSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssS0FBSyxHQUFHLEVBQUU7WUFDbEMsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7K0dBakNVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDREQVBsQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGVBQWU7WUFDeEIsV0FBVyxFQUFFLGtCQUFrQjtTQUNoQztLQUNGOzJGQUVVLGtCQUFrQjtrQkFYOUIsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZUFBZTtvQkFDekIsUUFBUSxFQUFFLGFBQWE7b0JBQ3ZCLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGVBQWU7NEJBQ3hCLFdBQVcsb0JBQW9CO3lCQUNoQztxQkFDRjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgREVMQVlBQkxFX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPERlbGF5YWJsZURpcmVjdGl2ZT4oJ0RFTEFZQUJMRV9ESVJFQ1RJVkVfVE9LRU4nKTtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2V0RGVsYXlhYmxlXScsXG4gIGV4cG9ydEFzOiAnZXREZWxheWFibGUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBERUxBWUFCTEVfVE9LRU4sXG4gICAgICB1c2VFeGlzdGluZzogRGVsYXlhYmxlRGlyZWN0aXZlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIERlbGF5YWJsZURpcmVjdGl2ZSB7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2lzRGVsYXllZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBnZXQgaXNEZWxheWVkJCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNEZWxheWVkJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGdldCBpc0RlbGF5ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzRGVsYXllZCQudmFsdWU7XG4gIH1cblxuICBlbmFibGVEZWxheWVkKCkge1xuICAgIGlmICh0aGlzLl9pc0RlbGF5ZWQkLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNEZWxheWVkJC5uZXh0KHRydWUpO1xuICB9XG5cbiAgZGlzYWJsZURlbGF5ZWQoKSB7XG4gICAgaWYgKCF0aGlzLl9pc0RlbGF5ZWQkLnZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNEZWxheWVkJC5uZXh0KGZhbHNlKTtcbiAgfVxuXG4gIHNldERlbGF5ZWQodmFsOiBib29sZWFuKSB7XG4gICAgaWYgKHRoaXMuX2lzRGVsYXllZCQudmFsdWUgPT09IHZhbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzRGVsYXllZCQubmV4dCh2YWwpO1xuICB9XG59XG4iXX0=
@@ -1,40 +0,0 @@
1
- import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
2
- import { LetContext } from './let.types';
3
- import * as i0 from "@angular/core";
4
- export 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
- }
29
- LetDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", 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.7", type: LetDirective, isStandalone: true, selector: "[etLet]", inputs: { etLet: "etLet" }, ngImport: i0 });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: LetDirective, decorators: [{
32
- type: Directive,
33
- args: [{
34
- selector: '[etLet]',
35
- standalone: true,
36
- }]
37
- }], ctorParameters: function () { return [{ type: i0.ViewContainerRef }, { type: i0.TemplateRef }]; }, propDecorators: { etLet: [{
38
- type: Input
39
- }] } });
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGV0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvbGV0L2xldC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBbUIsS0FBSyxFQUFFLFdBQVcsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sYUFBYSxDQUFDOztBQU16QyxNQUFNLE9BQU8sWUFBWTtJQUN2QixJQUNJLEtBQUssQ0FBQyxLQUFRO1FBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUN0RCxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQVFELFlBQW9CLGNBQWdDLEVBQUUsV0FBdUM7UUFBekUsbUJBQWMsR0FBZCxjQUFjLENBQWtCO1FBSjVDLGFBQVEsR0FBa0IsSUFBSSxVQUFVLEVBQUssQ0FBQztRQUM5QyxpQkFBWSxHQUFzQyxJQUFJLENBQUM7UUFDdkQsYUFBUSxHQUEwQyxJQUFJLENBQUM7UUFHN0QsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7SUFDbEMsQ0FBQztJQUVELDhEQUE4RDtJQUM5RCxNQUFNLENBQUMsc0JBQXNCLENBQUksR0FBb0IsRUFBRSxHQUFRO1FBQzdELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVPLFdBQVc7UUFDakIsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUU7Z0JBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMxRjtTQUNGO0lBQ0gsQ0FBQzs7eUdBN0JVLFlBQVk7NkZBQVosWUFBWTsyRkFBWixZQUFZO2tCQUp4QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxTQUFTO29CQUNuQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7aUlBR0ssS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbWJlZGRlZFZpZXdSZWYsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTGV0Q29udGV4dCB9IGZyb20gJy4vbGV0LnR5cGVzJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2V0TGV0XScsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIExldERpcmVjdGl2ZTxUID0gdW5rbm93bj4ge1xuICBASW5wdXQoKVxuICBzZXQgZXRMZXQodmFsdWU6IFQpIHtcbiAgICB0aGlzLl9jb250ZXh0LiRpbXBsaWNpdCA9IHRoaXMuX2NvbnRleHQuZXRMZXQgPSB2YWx1ZTtcbiAgICB0aGlzLl91cGRhdGVWaWV3KCk7XG4gIH1cblxuICBzdGF0aWMgbmdUZW1wbGF0ZUd1YXJkX25nTGV0OiAnYmluZGluZyc7XG5cbiAgcHJpdmF0ZSBfY29udGV4dDogTGV0Q29udGV4dDxUPiA9IG5ldyBMZXRDb250ZXh0PFQ+KCk7XG4gIHByaXZhdGUgX3RlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxMZXRDb250ZXh0PFQ+PiB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIF92aWV3UmVmOiBFbWJlZGRlZFZpZXdSZWY8TGV0Q29udGV4dDxUPj4gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF92aWV3Q29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCB0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8TGV0Q29udGV4dDxUPj4pIHtcbiAgICB0aGlzLl90ZW1wbGF0ZVJlZiA9IHRlbXBsYXRlUmVmO1xuICB9XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgc3RhdGljIG5nVGVtcGxhdGVDb250ZXh0R3VhcmQ8VD4oZGlyOiBMZXREaXJlY3RpdmU8VD4sIGN0eDogYW55KTogY3R4IGlzIExldENvbnRleHQ8VD4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlVmlldygpIHtcbiAgICBpZiAoIXRoaXMuX3ZpZXdSZWYpIHtcbiAgICAgIHRoaXMuX3ZpZXdDb250YWluZXIuY2xlYXIoKTtcbiAgICAgIGlmICh0aGlzLl90ZW1wbGF0ZVJlZikge1xuICAgICAgICB0aGlzLl92aWV3UmVmID0gdGhpcy5fdmlld0NvbnRhaW5lci5jcmVhdGVFbWJlZGRlZFZpZXcodGhpcy5fdGVtcGxhdGVSZWYsIHRoaXMuX2NvbnRleHQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
@@ -1,68 +0,0 @@
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
- export 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
- }
49
- ObserveContentDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ObserveContentDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
50
- ObserveContentDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", 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.7", ngImport: i0, type: ObserveContentDirective, decorators: [{
52
- type: Directive,
53
- args: [{
54
- selector: '[etObserveContent]',
55
- exportAs: 'etObserveContent',
56
- standalone: true,
57
- }]
58
- }], propDecorators: { valueChange: [{
59
- type: Output,
60
- args: ['etObserveContent']
61
- }], disabled: [{
62
- type: Input,
63
- args: ['etObserveContentDisabled']
64
- }], debounce: [{
65
- type: Input,
66
- args: ['etObserveContentDebounce']
67
- }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZS1jb250ZW50LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvb2JzZXJ2ZS1jb250ZW50L29ic2VydmUtY29udGVudC5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQU94RCxNQUFNLE9BQU8sdUJBQXVCO0lBTHBDO1FBTVUscUJBQWdCLEdBQUcsTUFBTSxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDbEQsZ0JBQVcsR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQzFELFlBQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7UUFHeEIsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBb0IsQ0FBQztRQVVwRCxjQUFTLEdBQUcsS0FBSyxDQUFDO1FBVWxCLGNBQVMsR0FBa0IsSUFBSSxDQUFDO1FBRWhDLHlCQUFvQixHQUF3QixJQUFJLENBQUM7S0EwQjFEO0lBOUNDLElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBbUI7UUFDOUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMzRCxDQUFDO0lBR0QsSUFDSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFFBQVEsQ0FBQyxLQUFrQjtRQUM3QixJQUFJLENBQUMsU0FBUyxHQUFHLG9CQUFvQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNwQixDQUFDO0lBS0Qsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsb0JBQW9CLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTyxVQUFVO1FBQ2hCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUUvRCxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRTtZQUNsQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUN2RyxJQUFJLENBQUMsV0FBVyxDQUNqQixDQUFDO1FBQ0osQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLENBQUMsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDM0MsQ0FBQzs7b0hBckRVLHVCQUF1Qjt3R0FBdkIsdUJBQXVCOzJGQUF2Qix1QkFBdUI7a0JBTG5DLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFLGtCQUFrQjtvQkFDNUIsVUFBVSxFQUFFLElBQUk7aUJBQ2pCOzhCQU9VLFdBQVc7c0JBRG5CLE1BQU07dUJBQUMsa0JBQWtCO2dCQUl0QixRQUFRO3NCQURYLEtBQUs7dUJBQUMsMEJBQTBCO2dCQVc3QixRQUFRO3NCQURYLEtBQUs7dUJBQUMsMEJBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHksIGNvZXJjZU51bWJlclByb3BlcnR5LCBOdW1iZXJJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgaW5qZWN0LFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IENvbnRlbnRPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tldE9ic2VydmVDb250ZW50XScsXG4gIGV4cG9ydEFzOiAnZXRPYnNlcnZlQ29udGVudCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG59KVxuZXhwb3J0IGNsYXNzIE9ic2VydmVDb250ZW50RGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfY29udGVudE9ic2VydmVyID0gaW5qZWN0KENvbnRlbnRPYnNlcnZlclNlcnZpY2UpO1xuICBwcml2YXRlIF9lbGVtZW50UmVmID0gaW5qZWN0PEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+PihFbGVtZW50UmVmKTtcbiAgcHJpdmF0ZSBfbmdab25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgQE91dHB1dCgnZXRPYnNlcnZlQ29udGVudCcpXG4gIHJlYWRvbmx5IHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxNdXRhdGlvblJlY29yZFtdPigpO1xuXG4gIEBJbnB1dCgnZXRPYnNlcnZlQ29udGVudERpc2FibGVkJylcbiAgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDtcbiAgfVxuICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB0aGlzLl9kaXNhYmxlZCA/IHRoaXMuX3Vuc3Vic2NyaWJlKCkgOiB0aGlzLl9zdWJzY3JpYmUoKTtcbiAgfVxuICBwcml2YXRlIF9kaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgnZXRPYnNlcnZlQ29udGVudERlYm91bmNlJylcbiAgZ2V0IGRlYm91bmNlKCk6IG51bWJlciB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9kZWJvdW5jZTtcbiAgfVxuICBzZXQgZGVib3VuY2UodmFsdWU6IE51bWJlcklucHV0KSB7XG4gICAgdGhpcy5fZGVib3VuY2UgPSBjb2VyY2VOdW1iZXJQcm9wZXJ0eSh2YWx1ZSk7XG4gICAgdGhpcy5fc3Vic2NyaWJlKCk7XG4gIH1cbiAgcHJpdmF0ZSBfZGVib3VuY2U6IG51bWJlciB8IG51bGwgPSBudWxsO1xuXG4gIHByaXZhdGUgX2N1cnJlbnRTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICBpZiAoIXRoaXMuX2N1cnJlbnRTdWJzY3JpcHRpb24gJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX3N1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBwcml2YXRlIF9zdWJzY3JpYmUoKSB7XG4gICAgdGhpcy5fdW5zdWJzY3JpYmUoKTtcbiAgICBjb25zdCBzdHJlYW0gPSB0aGlzLl9jb250ZW50T2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmKTtcblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uID0gKHRoaXMuZGVib3VuY2UgPyBzdHJlYW0ucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpIDogc3RyZWFtKS5zdWJzY3JpYmUoXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmUoKSB7XG4gICAgdGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
@@ -1,68 +0,0 @@
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
- export 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
- }
49
- ObserveResizeDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.7", ngImport: i0, type: ObserveResizeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
50
- ObserveResizeDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.7", 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.7", ngImport: i0, type: ObserveResizeDirective, decorators: [{
52
- type: Directive,
53
- args: [{
54
- selector: '[etObserveResize]',
55
- exportAs: 'etObserveResize',
56
- standalone: true,
57
- }]
58
- }], propDecorators: { valueChange: [{
59
- type: Output,
60
- args: ['etObserveResize']
61
- }], disabled: [{
62
- type: Input,
63
- args: ['etObserveResizeDisabled']
64
- }], debounce: [{
65
- type: Input,
66
- args: ['etObserveResizeDebounce']
67
- }] } });
68
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2JzZXJ2ZS1yZXNpemUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvZGlyZWN0aXZlcy9vYnNlcnZlLXJlc2l6ZS9vYnNlcnZlLXJlc2l6ZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxvQkFBb0IsRUFBZSxNQUFNLHVCQUF1QixDQUFDO0FBQy9HLE9BQU8sRUFFTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUNMLE1BQU0sRUFFTixNQUFNLEdBQ1AsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBZ0IsTUFBTSxNQUFNLENBQUM7QUFDbEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBT3ZELE1BQU0sT0FBTyxzQkFBc0I7SUFMbkM7UUFNVSxvQkFBZSxHQUFHLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQ2hELGdCQUFXLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUMxRCxZQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBSXhCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQXlCLENBQUM7UUFVekQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVVsQixjQUFTLEdBQWtCLElBQUksQ0FBQztRQUVoQyx5QkFBb0IsR0FBd0IsSUFBSSxDQUFDO0tBMEIxRDtJQTlDQyxJQUNJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUNELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDM0QsQ0FBQztJQUdELElBQ0ksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBSSxRQUFRLENBQUMsS0FBa0I7UUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDcEIsQ0FBQztJQUtELGtCQUFrQjtRQUNoQixJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNoRCxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRTlELElBQUksQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsR0FBRyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQ3ZHLElBQUksQ0FBQyxXQUFXLENBQ2pCLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxZQUFZO1FBQ2xCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUMzQyxDQUFDOzttSEF0RFUsc0JBQXNCO3VHQUF0QixzQkFBc0I7MkZBQXRCLHNCQUFzQjtrQkFMbEMsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsbUJBQW1CO29CQUM3QixRQUFRLEVBQUUsaUJBQWlCO29CQUMzQixVQUFVLEVBQUUsSUFBSTtpQkFDakI7OEJBUVUsV0FBVztzQkFGbkIsTUFBTTt1QkFBQyxpQkFBaUI7Z0JBS3JCLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyx5QkFBeUI7Z0JBVzVCLFFBQVE7c0JBRFgsS0FBSzt1QkFBQyx5QkFBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgY29lcmNlTnVtYmVyUHJvcGVydHksIE51bWJlcklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7XG4gIEFmdGVyQ29udGVudEluaXQsXG4gIERpcmVjdGl2ZSxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBpbmplY3QsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3V0cHV0LFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IGRlYm91bmNlVGltZSwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1tldE9ic2VydmVSZXNpemVdJyxcbiAgZXhwb3J0QXM6ICdldE9ic2VydmVSZXNpemUnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxufSlcbmV4cG9ydCBjbGFzcyBPYnNlcnZlUmVzaXplRGlyZWN0aXZlIGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXIgPSBpbmplY3QoUmVzaXplT2JzZXJ2ZXJTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgX25nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIEBPdXRwdXQoJ2V0T2JzZXJ2ZVJlc2l6ZScpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW5hdGl2ZVxuICByZWFkb25seSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8UmVzaXplT2JzZXJ2ZXJFbnRyeVtdPigpO1xuXG4gIEBJbnB1dCgnZXRPYnNlcnZlUmVzaXplRGlzYWJsZWQnKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuX2Rpc2FibGVkID8gdGhpcy5fdW5zdWJzY3JpYmUoKSA6IHRoaXMuX3N1YnNjcmliZSgpO1xuICB9XG4gIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCdldE9ic2VydmVSZXNpemVEZWJvdW5jZScpXG4gIGdldCBkZWJvdW5jZSgpOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5fZGVib3VuY2U7XG4gIH1cbiAgc2V0IGRlYm91bmNlKHZhbHVlOiBOdW1iZXJJbnB1dCkge1xuICAgIHRoaXMuX2RlYm91bmNlID0gY29lcmNlTnVtYmVyUHJvcGVydHkodmFsdWUpO1xuICAgIHRoaXMuX3N1YnNjcmliZSgpO1xuICB9XG4gIHByaXZhdGUgX2RlYm91bmNlOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBwcml2YXRlIF9jdXJyZW50U3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb24gfCBudWxsID0gbnVsbDtcblxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgaWYgKCF0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLl9zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl91bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBfc3Vic2NyaWJlKCkge1xuICAgIHRoaXMuX3Vuc3Vic2NyaWJlKCk7XG4gICAgY29uc3Qgc3RyZWFtID0gdGhpcy5fcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLl9lbGVtZW50UmVmKTtcblxuICAgIHRoaXMuX25nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLl9jdXJyZW50U3Vic2NyaXB0aW9uID0gKHRoaXMuZGVib3VuY2UgPyBzdHJlYW0ucGlwZShkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZSkpIDogc3RyZWFtKS5zdWJzY3JpYmUoXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBfdW5zdWJzY3JpYmUoKSB7XG4gICAgdGhpcy5fY3VycmVudFN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19