@ethlete/core 0.2.0-next.23 → 0.2.0-next.25
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.
- package/esm2020/lib/directives/animatable/animatable.directive.mjs +79 -0
- package/esm2020/lib/directives/animatable/public-api.mjs +2 -0
- package/esm2020/lib/directives/animated-lifecycle/animated-lifecycle.directive.mjs +113 -0
- package/esm2020/lib/directives/animated-lifecycle/public-api.mjs +2 -0
- package/esm2020/lib/directives/public-api.mjs +3 -1
- package/esm2020/lib/public-api.mjs +2 -1
- package/esm2020/lib/utils/animation.utils.mjs +9 -0
- package/esm2020/lib/utils/public-api.mjs +2 -1
- package/esm2020/lib/validators/is-array-not-empty.validator.mjs +9 -0
- package/esm2020/lib/validators/is-email.validator.mjs +10 -0
- package/esm2020/lib/validators/must-match.validator.mjs +19 -0
- package/esm2020/lib/validators/public-api.mjs +12 -0
- package/fesm2015/ethlete-core.mjs +237 -3
- package/fesm2015/ethlete-core.mjs.map +1 -1
- package/fesm2020/ethlete-core.mjs +237 -3
- package/fesm2020/ethlete-core.mjs.map +1 -1
- package/lib/directives/animatable/animatable.directive.d.ts +20 -0
- package/lib/directives/animatable/public-api.d.ts +1 -0
- package/lib/directives/animated-lifecycle/animated-lifecycle.directive.d.ts +22 -0
- package/lib/directives/animated-lifecycle/public-api.d.ts +1 -0
- package/lib/directives/public-api.d.ts +2 -0
- package/lib/public-api.d.ts +1 -0
- package/lib/utils/animation.utils.d.ts +2 -0
- package/lib/utils/public-api.d.ts +1 -0
- package/lib/validators/is-array-not-empty.validator.d.ts +3 -0
- package/lib/validators/is-email.validator.d.ts +3 -0
- package/lib/validators/must-match.validator.d.ts +3 -0
- package/lib/validators/public-api.d.ts +8 -0
- package/package.json +3 -2
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { Directive, ElementRef, inject, InjectionToken } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, debounceTime, fromEvent, map, merge, Subject, takeUntil, tap } from 'rxjs';
|
|
3
|
+
import { DestroyService } from '../../services';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export const ANIMATABLE_TOKEN = new InjectionToken('ANIMATABLE_DIRECTIVE_TOKEN');
|
|
6
|
+
export class AnimatableDirective {
|
|
7
|
+
constructor() {
|
|
8
|
+
this._didEmitStart = false;
|
|
9
|
+
this._parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });
|
|
10
|
+
this._destroy$ = inject(DestroyService, { host: true }).destroy$;
|
|
11
|
+
this._elementRef = inject(ElementRef);
|
|
12
|
+
this._animationStart$ = new Subject();
|
|
13
|
+
this._animationEnd$ = new Subject();
|
|
14
|
+
this.animationStart$ = this._animationStart$.asObservable().pipe(debounceTime(0));
|
|
15
|
+
this.animationEnd$ = this._animationEnd$.asObservable().pipe(debounceTime(0));
|
|
16
|
+
this._hostActiveAnimationCount$ = new BehaviorSubject(0);
|
|
17
|
+
this._totalActiveAnimationCount$ = new BehaviorSubject(0);
|
|
18
|
+
this.isAnimating$ = this._totalActiveAnimationCount$.pipe(map((count) => count > 0), debounceTime(0));
|
|
19
|
+
}
|
|
20
|
+
ngOnInit() {
|
|
21
|
+
merge(fromEvent(this._elementRef.nativeElement, 'animationstart'), fromEvent(this._elementRef.nativeElement, 'transitionstart'))
|
|
22
|
+
.pipe(tap(() => {
|
|
23
|
+
const count = this._hostActiveAnimationCount$.value + 1;
|
|
24
|
+
this._hostActiveAnimationCount$.next(count);
|
|
25
|
+
this._totalActiveAnimationCount$.next(count);
|
|
26
|
+
}), takeUntil(this._destroy$))
|
|
27
|
+
.subscribe();
|
|
28
|
+
merge(fromEvent(this._elementRef.nativeElement, 'animationend'), fromEvent(this._elementRef.nativeElement, 'animationcancel'), fromEvent(this._elementRef.nativeElement, 'transitionend'), fromEvent(this._elementRef.nativeElement, 'transitioncancel'))
|
|
29
|
+
.pipe(tap(() => {
|
|
30
|
+
const count = this._hostActiveAnimationCount$.value - 1;
|
|
31
|
+
this._hostActiveAnimationCount$.next(count);
|
|
32
|
+
this._totalActiveAnimationCount$.next(count);
|
|
33
|
+
}), takeUntil(this._destroy$))
|
|
34
|
+
.subscribe();
|
|
35
|
+
this._totalActiveAnimationCount$
|
|
36
|
+
.pipe(tap((count) => {
|
|
37
|
+
if (count > 0 && !this._didEmitStart) {
|
|
38
|
+
this._animationStart$.next();
|
|
39
|
+
this._didEmitStart = true;
|
|
40
|
+
}
|
|
41
|
+
else if (count === 0) {
|
|
42
|
+
this._animationEnd$.next();
|
|
43
|
+
this._didEmitStart = false;
|
|
44
|
+
}
|
|
45
|
+
}), takeUntil(this._destroy$))
|
|
46
|
+
.subscribe();
|
|
47
|
+
if (this._parent) {
|
|
48
|
+
this._parent._hostActiveAnimationCount$
|
|
49
|
+
.pipe(takeUntil(this._destroy$), tap((count) => {
|
|
50
|
+
this._totalActiveAnimationCount$.next(count + this._hostActiveAnimationCount$.value);
|
|
51
|
+
}))
|
|
52
|
+
.subscribe();
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
AnimatableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
57
|
+
AnimatableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: AnimatableDirective, isStandalone: true, selector: "[etAnimatable]", providers: [
|
|
58
|
+
{
|
|
59
|
+
provide: ANIMATABLE_TOKEN,
|
|
60
|
+
useExisting: AnimatableDirective,
|
|
61
|
+
},
|
|
62
|
+
DestroyService,
|
|
63
|
+
], exportAs: ["etAnimatable"], ngImport: i0 });
|
|
64
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatableDirective, decorators: [{
|
|
65
|
+
type: Directive,
|
|
66
|
+
args: [{
|
|
67
|
+
selector: '[etAnimatable]',
|
|
68
|
+
exportAs: 'etAnimatable',
|
|
69
|
+
standalone: true,
|
|
70
|
+
providers: [
|
|
71
|
+
{
|
|
72
|
+
provide: ANIMATABLE_TOKEN,
|
|
73
|
+
useExisting: AnimatableDirective,
|
|
74
|
+
},
|
|
75
|
+
DestroyService,
|
|
76
|
+
],
|
|
77
|
+
}]
|
|
78
|
+
}] });
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0YWJsZS5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi9kaXJlY3RpdmVzL2FuaW1hdGFibGUvYW5pbWF0YWJsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUN0RixPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqSCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7O0FBRWhELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksY0FBYyxDQUFzQiw0QkFBNEIsQ0FBQyxDQUFDO0FBY3RHLE1BQU0sT0FBTyxtQkFBbUI7SUFaaEM7UUFhVSxrQkFBYSxHQUFHLEtBQUssQ0FBQztRQUViLFlBQU8sR0FBRyxNQUFNLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZFLGNBQVMsR0FBRyxNQUFNLENBQUMsY0FBYyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDO1FBQzVELGdCQUFXLEdBQUcsTUFBTSxDQUEwQixVQUFVLENBQUMsQ0FBQztRQUUxRCxxQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO1FBQ3ZDLG1CQUFjLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztRQUU3QyxvQkFBZSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMs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QUFTLENBQUMsRUFDekIsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3ZGLENBQUMsQ0FBQyxDQUNIO2lCQUNBLFNBQVMsRUFBRSxDQUFDO1NBQ2hCO0lBQ0gsQ0FBQzs7Z0hBN0VVLG1CQUFtQjtvR0FBbkIsbUJBQW1CLDZEQVJuQjtRQUNUO1lBQ0UsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixXQUFXLEVBQUUsbUJBQW1CO1NBQ2pDO1FBQ0QsY0FBYztLQUNmOzJGQUVVLG1CQUFtQjtrQkFaL0IsU0FBUzttQkFBQztvQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixRQUFRLEVBQUUsY0FBYztvQkFDeEIsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFNBQVMsRUFBRTt3QkFDVDs0QkFDRSxPQUFPLEVBQUUsZ0JBQWdCOzRCQUN6QixXQUFXLHFCQUFxQjt5QkFDakM7d0JBQ0QsY0FBYztxQkFDZjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgaW5qZWN0LCBJbmplY3Rpb25Ub2tlbiwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZnJvbUV2ZW50LCBtYXAsIG1lcmdlLCBPYnNlcnZhYmxlLCBTdWJqZWN0LCB0YWtlVW50aWwsIHRhcCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgRGVzdHJveVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbmV4cG9ydCBjb25zdCBBTklNQVRBQkxFX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEFuaW1hdGFibGVEaXJlY3RpdmU+KCdBTklNQVRBQkxFX0RJUkVDVElWRV9UT0tFTicpO1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbZXRBbmltYXRhYmxlXScsXG4gIGV4cG9ydEFzOiAnZXRBbmltYXRhYmxlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQU5JTUFUQUJMRV9UT0tFTixcbiAgICAgIHVzZUV4aXN0aW5nOiBBbmltYXRhYmxlRGlyZWN0aXZlLFxuICAgIH0sXG4gICAgRGVzdHJveVNlcnZpY2UsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFuaW1hdGFibGVEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9kaWRFbWl0U3RhcnQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJlbnQgPSBpbmplY3QoQU5JTUFUQUJMRV9UT0tFTiwgeyBvcHRpb25hbDogdHJ1ZSwgc2tpcFNlbGY6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc3Ryb3kkID0gaW5qZWN0KERlc3Ryb3lTZXJ2aWNlLCB7IGhvc3Q6IHRydWUgfSkuZGVzdHJveSQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWYgPSBpbmplY3Q8RWxlbWVudFJlZjxIVE1MRWxlbWVudD4+KEVsZW1lbnRSZWYpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FuaW1hdGlvblN0YXJ0JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FuaW1hdGlvbkVuZCQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIHJlYWRvbmx5IGFuaW1hdGlvblN0YXJ0JCA9IHRoaXMuX2FuaW1hdGlvblN0YXJ0JC5hc09ic2VydmFibGUoKS5waXBlKGRlYm91bmNlVGltZSgwKSk7XG4gIHJlYWRvbmx5IGFuaW1hdGlvbkVuZCQgPSB0aGlzLl9hbmltYXRpb25FbmQkLmFzT2JzZXJ2YWJsZSgpLnBpcGUoZGVib3VuY2VUaW1lKDApKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9ob3N0QWN0aXZlQW5pbWF0aW9uQ291bnQkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxudW1iZXI+KDApO1xuICBwcml2YXRlIHJlYWRvbmx5IF90b3RhbEFjdGl2ZUFuaW1hdGlvbkNvdW50JCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8bnVtYmVyPigwKTtcblxuICByZWFkb25seSBpc0FuaW1hdGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLl90b3RhbEFjdGl2ZUFuaW1hdGlvbkNvdW50JC5waXBlKFxuICAgIG1hcCgoY291bnQpID0+IGNvdW50ID4gMCksXG4gICAgZGVib3VuY2VUaW1lKDApLFxuICApO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FuaW1hdGlvbnN0YXJ0JyksXG4gICAgICBmcm9tRXZlbnQodGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndHJhbnNpdGlvbnN0YXJ0JyksXG4gICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLl9ob3N0QWN0aXZlQW5pbWF0aW9uQ291bnQkLnZhbHVlICsgMTtcbiAgICAgICAgICB0aGlzLl9ob3N0QWN0aXZlQW5pbWF0aW9uQ291bnQkLm5leHQoY291bnQpO1xuICAgICAgICAgIHRoaXMuX3RvdGFsQWN0aXZlQW5pbWF0aW9uQ291bnQkLm5leHQoY291bnQpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIG1lcmdlKFxuICAgICAgZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FuaW1hdGlvbmVuZCcpLFxuICAgICAgZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2FuaW1hdGlvbmNhbmNlbCcpLFxuICAgICAgZnJvbUV2ZW50KHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ3RyYW5zaXRpb25lbmQnKSxcbiAgICAgIGZyb21FdmVudCh0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICd0cmFuc2l0aW9uY2FuY2VsJyksXG4gICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgY29uc3QgY291bnQgPSB0aGlzLl9ob3N0QWN0aXZlQW5pbWF0aW9uQ291bnQkLnZhbHVlIC0gMTtcbiAgICAgICAgICB0aGlzLl9ob3N0QWN0aXZlQW5pbWF0aW9uQ291bnQkLm5leHQoY291bnQpO1xuICAgICAgICAgIHRoaXMuX3RvdGFsQWN0aXZlQW5pbWF0aW9uQ291bnQkLm5leHQoY291bnQpO1xuICAgICAgICB9KSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoKTtcblxuICAgIHRoaXMuX3RvdGFsQWN0aXZlQW5pbWF0aW9uQ291bnQkXG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKChjb3VudCkgPT4ge1xuICAgICAgICAgIGlmIChjb3VudCA+IDAgJiYgIXRoaXMuX2RpZEVtaXRTdGFydCkge1xuICAgICAgICAgICAgdGhpcy5fYW5pbWF0aW9uU3RhcnQkLm5leHQoKTtcbiAgICAgICAgICAgIHRoaXMuX2RpZEVtaXRTdGFydCA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIGlmIChjb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgdGhpcy5fYW5pbWF0aW9uRW5kJC5uZXh0KCk7XG4gICAgICAgICAgICB0aGlzLl9kaWRFbWl0U3RhcnQgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5fZGVzdHJveSQpLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgaWYgKHRoaXMuX3BhcmVudCkge1xuICAgICAgdGhpcy5fcGFyZW50Ll9ob3N0QWN0aXZlQW5pbWF0aW9uQ291bnQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgdGFwKChjb3VudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fdG90YWxBY3RpdmVBbmltYXRpb25Db3VudCQubmV4dChjb3VudCArIHRoaXMuX2hvc3RBY3RpdmVBbmltYXRpb25Db3VudCQudmFsdWUpO1xuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './animatable.directive';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvYW5pbWF0YWJsZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsd0JBQXdCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2FuaW1hdGFibGUuZGlyZWN0aXZlJztcbiJdfQ==
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { Directive, ElementRef, HostBinding, inject, InjectionToken } from '@angular/core';
|
|
2
|
+
import { BehaviorSubject, take, takeUntil, tap } from 'rxjs';
|
|
3
|
+
import { DestroyService } from '../../services';
|
|
4
|
+
import { forceReflow, nextFrame } from '../../utils';
|
|
5
|
+
import { AnimatableDirective, ANIMATABLE_TOKEN } from '../public-api';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
import * as i1 from "../animatable/animatable.directive";
|
|
8
|
+
export const ANIMATED_LIFECYCLE_TOKEN = new InjectionToken('ANIMATED_LIFECYCLE_DIRECTIVE_TOKEN');
|
|
9
|
+
const ANIMATION_CLASSES = {
|
|
10
|
+
enterFrom: 'et-animation-enter-from',
|
|
11
|
+
enterActive: 'et-animation-enter-active',
|
|
12
|
+
enterTo: 'et-animation-enter-to',
|
|
13
|
+
leaveFrom: 'et-animation-leave-from',
|
|
14
|
+
leaveActive: 'et-animation-leave-active',
|
|
15
|
+
leaveTo: 'et-animation-leave-to',
|
|
16
|
+
};
|
|
17
|
+
export class AnimatedLifecycleDirective {
|
|
18
|
+
constructor() {
|
|
19
|
+
this._destroy$ = inject(DestroyService, { host: true }).destroy$;
|
|
20
|
+
this._elementRef = inject(ElementRef);
|
|
21
|
+
this._animatable = inject(ANIMATABLE_TOKEN);
|
|
22
|
+
this._classList = this._elementRef.nativeElement.classList;
|
|
23
|
+
this._state$ = new BehaviorSubject('init');
|
|
24
|
+
this.state$ = this._state$.asObservable();
|
|
25
|
+
}
|
|
26
|
+
get state() {
|
|
27
|
+
return this._state$.value;
|
|
28
|
+
}
|
|
29
|
+
get _opacity() {
|
|
30
|
+
return this._state$.value === 'init' ? '0 !important' : '';
|
|
31
|
+
}
|
|
32
|
+
enter(config) {
|
|
33
|
+
this._state$.next('entering');
|
|
34
|
+
if (!config?.onlyTransition) {
|
|
35
|
+
this._classList.add(ANIMATION_CLASSES.enterFrom);
|
|
36
|
+
}
|
|
37
|
+
forceReflow();
|
|
38
|
+
this._classList.add(ANIMATION_CLASSES.enterActive);
|
|
39
|
+
nextFrame(() => {
|
|
40
|
+
if (!config?.onlyTransition) {
|
|
41
|
+
this._classList.remove(ANIMATION_CLASSES.enterFrom);
|
|
42
|
+
this._classList.add(ANIMATION_CLASSES.enterTo);
|
|
43
|
+
}
|
|
44
|
+
this._animatable.animationEnd$
|
|
45
|
+
.pipe(takeUntil(this._destroy$), take(1), tap(() => {
|
|
46
|
+
this._state$.next('entered');
|
|
47
|
+
this._classList.remove(ANIMATION_CLASSES.enterActive);
|
|
48
|
+
if (!config?.onlyTransition) {
|
|
49
|
+
this._classList.remove(ANIMATION_CLASSES.enterTo);
|
|
50
|
+
}
|
|
51
|
+
}))
|
|
52
|
+
.subscribe();
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
leave(config) {
|
|
56
|
+
if (this._classList.contains(ANIMATION_CLASSES.enterFrom) ||
|
|
57
|
+
this._classList.contains(ANIMATION_CLASSES.enterActive) ||
|
|
58
|
+
this._classList.contains(ANIMATION_CLASSES.enterTo)) {
|
|
59
|
+
this._classList.remove(ANIMATION_CLASSES.enterFrom);
|
|
60
|
+
this._classList.remove(ANIMATION_CLASSES.enterActive);
|
|
61
|
+
this._classList.remove(ANIMATION_CLASSES.enterTo);
|
|
62
|
+
}
|
|
63
|
+
this._state$.next('leaving');
|
|
64
|
+
if (!config?.onlyTransition) {
|
|
65
|
+
this._classList.add(ANIMATION_CLASSES.leaveFrom);
|
|
66
|
+
}
|
|
67
|
+
forceReflow();
|
|
68
|
+
this._classList.add(ANIMATION_CLASSES.leaveActive);
|
|
69
|
+
nextFrame(() => {
|
|
70
|
+
if (!config?.onlyTransition) {
|
|
71
|
+
this._classList.remove(ANIMATION_CLASSES.leaveFrom);
|
|
72
|
+
this._classList.add(ANIMATION_CLASSES.leaveTo);
|
|
73
|
+
}
|
|
74
|
+
this._animatable.animationEnd$
|
|
75
|
+
.pipe(takeUntil(this._destroy$), take(1), tap(() => {
|
|
76
|
+
this._state$.next('left');
|
|
77
|
+
this._classList.remove(ANIMATION_CLASSES.leaveActive);
|
|
78
|
+
if (!config?.onlyTransition) {
|
|
79
|
+
this._classList.remove(ANIMATION_CLASSES.leaveTo);
|
|
80
|
+
}
|
|
81
|
+
}))
|
|
82
|
+
.subscribe();
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
AnimatedLifecycleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatedLifecycleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
87
|
+
AnimatedLifecycleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: AnimatedLifecycleDirective, isStandalone: true, selector: "[etAnimatedLifecycle]", host: { properties: { "style.opacity": "this._opacity" } }, providers: [
|
|
88
|
+
{
|
|
89
|
+
provide: ANIMATED_LIFECYCLE_TOKEN,
|
|
90
|
+
useExisting: AnimatedLifecycleDirective,
|
|
91
|
+
},
|
|
92
|
+
DestroyService,
|
|
93
|
+
], exportAs: ["etAnimatedLifecycle"], hostDirectives: [{ directive: i1.AnimatableDirective }], ngImport: i0 });
|
|
94
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatedLifecycleDirective, decorators: [{
|
|
95
|
+
type: Directive,
|
|
96
|
+
args: [{
|
|
97
|
+
selector: '[etAnimatedLifecycle]',
|
|
98
|
+
exportAs: 'etAnimatedLifecycle',
|
|
99
|
+
standalone: true,
|
|
100
|
+
providers: [
|
|
101
|
+
{
|
|
102
|
+
provide: ANIMATED_LIFECYCLE_TOKEN,
|
|
103
|
+
useExisting: AnimatedLifecycleDirective,
|
|
104
|
+
},
|
|
105
|
+
DestroyService,
|
|
106
|
+
],
|
|
107
|
+
hostDirectives: [AnimatableDirective],
|
|
108
|
+
}]
|
|
109
|
+
}], propDecorators: { _opacity: [{
|
|
110
|
+
type: HostBinding,
|
|
111
|
+
args: ['style.opacity']
|
|
112
|
+
}] } });
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0ZWQtbGlmZWN5Y2xlLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvYW5pbWF0ZWQtbGlmZWN5Y2xlL2FuaW1hdGVkLWxpZmVjeWNsZS5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM3RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDckQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sZUFBZSxDQUFDOzs7QUFFdEUsTUFBTSxDQUFDLE1BQU0sd0JBQXdCLEdBQUcsSUFBSSxjQUFjLENBQ3hELG9DQUFvQyxDQUNyQyxDQUFDO0FBRUYsTUFBTSxpQkFBaUIsR0FBRztJQUN4QixTQUFTLEVBQUUseUJBQXlCO0lBQ3BDLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEMsT0FBTyxFQUFFLHVCQUF1QjtJQUNoQyxTQUFTLEVBQUUseUJBQXlCO0lBQ3BDLFdBQVcsRUFBRSwyQkFBMkI7SUFDeEMsT0FBTyxFQUFFLHVCQUF1QjtDQUN4QixDQUFDO0FBZVgsTUFBTSxPQUFPLDBCQUEwQjtJQWJ2QztRQWNtQixjQUFTLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztRQUM1RCxnQkFBVyxHQUFHLE1BQU0sQ0FBMEIsVUFBVSxDQUFDLENBQUM7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QkFBcUI7b0JBQy9CLFVBQVUsRUFBRSxJQUFJO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLHdCQUF3Qjs0QkFDakMsV0FBVyw0QkFBNEI7eUJBQ3hDO3dCQUNELGNBQWM7cUJBQ2Y7b0JBQ0QsY0FBYyxFQUFFLENBQUMsbUJBQW1CLENBQUM7aUJBQ3RDOzhCQWVhLFFBQVE7c0JBRG5CLFdBQVc7dUJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIGluamVjdCwgSW5qZWN0aW9uVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgdGFrZSwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERlc3Ryb3lTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuaW1wb3J0IHsgZm9yY2VSZWZsb3csIG5leHRGcmFtZSB9IGZyb20gJy4uLy4uL3V0aWxzJztcbmltcG9ydCB7IEFuaW1hdGFibGVEaXJlY3RpdmUsIEFOSU1BVEFCTEVfVE9LRU4gfSBmcm9tICcuLi9wdWJsaWMtYXBpJztcblxuZXhwb3J0IGNvbnN0IEFOSU1BVEVEX0xJRkVDWUNMRV9UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxBbmltYXRlZExpZmVjeWNsZURpcmVjdGl2ZT4oXG4gICdBTklNQVRFRF9MSUZFQ1lDTEVfRElSRUNUSVZFX1RPS0VOJyxcbik7XG5cbmNvbnN0IEFOSU1BVElPTl9DTEFTU0VTID0ge1xuICBlbnRlckZyb206ICdldC1hbmltYXRpb24tZW50ZXItZnJvbScsXG4gIGVudGVyQWN0aXZlOiAnZXQtYW5pbWF0aW9uLWVudGVyLWFjdGl2ZScsXG4gIGVudGVyVG86ICdldC1hbmltYXRpb24tZW50ZXItdG8nLFxuICBsZWF2ZUZyb206ICdldC1hbmltYXRpb24tbGVhdmUtZnJvbScsXG4gIGxlYXZlQWN0aXZlOiAnZXQtYW5pbWF0aW9uLWxlYXZlLWFjdGl2ZScsXG4gIGxlYXZlVG86ICdldC1hbmltYXRpb24tbGVhdmUtdG8nLFxufSBhcyBjb25zdDtcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2V0QW5pbWF0ZWRMaWZlY3ljbGVdJyxcbiAgZXhwb3J0QXM6ICdldEFuaW1hdGVkTGlmZWN5Y2xlJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogQU5JTUFURURfTElGRUNZQ0xFX1RPS0VOLFxuICAgICAgdXNlRXhpc3Rpbmc6IEFuaW1hdGVkTGlmZWN5Y2xlRGlyZWN0aXZlLFxuICAgIH0sXG4gICAgRGVzdHJveVNlcnZpY2UsXG4gIF0sXG4gIGhvc3REaXJlY3RpdmVzOiBbQW5pbWF0YWJsZURpcmVjdGl2ZV0sXG59KVxuZXhwb3J0IGNsYXNzIEFuaW1hdGVkTGlmZWN5Y2xlRGlyZWN0aXZlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVzdHJveSQgPSBpbmplY3QoRGVzdHJveVNlcnZpY2UsIHsgaG9zdDogdHJ1ZSB9KS5kZXN0cm95JDtcbiAgcHJpdmF0ZSByZWFkb25seSBfZWxlbWVudFJlZiA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FuaW1hdGFibGUgPSBpbmplY3QoQU5JTUFUQUJMRV9UT0tFTik7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NsYXNzTGlzdCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3Q7XG5cbiAgcHJpdmF0ZSBfc3RhdGUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDwnZW50ZXJpbmcnIHwgJ2VudGVyZWQnIHwgJ2xlYXZpbmcnIHwgJ2xlZnQnIHwgJ2luaXQnPignaW5pdCcpO1xuICByZWFkb25seSBzdGF0ZSQgPSB0aGlzLl9zdGF0ZSQuYXNPYnNlcnZhYmxlKCk7XG5cbiAgZ2V0IHN0YXRlKCkge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZSQudmFsdWU7XG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ3N0eWxlLm9wYWNpdHknKVxuICBwcml2YXRlIGdldCBfb3BhY2l0eSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhdGUkLnZhbHVlID09PSAnaW5pdCcgPyAnMCAhaW1wb3J0YW50JyA6ICcnO1xuICB9XG5cbiAgZW50ZXIoY29uZmlnPzogeyBvbmx5VHJhbnNpdGlvbj86IGJvb2xlYW4gfSkge1xuICAgIHRoaXMuX3N0YXRlJC5uZXh0KCdlbnRlcmluZycpO1xuXG4gICAgaWYgKCFjb25maWc/Lm9ubHlUcmFuc2l0aW9uKSB7XG4gICAgICB0aGlzLl9jbGFzc0xpc3QuYWRkKEFOSU1BVElPTl9DTEFTU0VTLmVudGVyRnJvbSk7XG4gICAgfVxuXG4gICAgZm9yY2VSZWZsb3coKTtcbiAgICB0aGlzLl9jbGFzc0xpc3QuYWRkKEFOSU1BVElPTl9DTEFTU0VTLmVudGVyQWN0aXZlKTtcblxuICAgIG5leHRGcmFtZSgoKSA9PiB7XG4gICAgICBpZiAoIWNvbmZpZz8ub25seVRyYW5zaXRpb24pIHtcbiAgICAgICAgdGhpcy5fY2xhc3NMaXN0LnJlbW92ZShBTklNQVRJT05fQ0xBU1NFUy5lbnRlckZyb20pO1xuICAgICAgICB0aGlzLl9jbGFzc0xpc3QuYWRkKEFOSU1BVElPTl9DTEFTU0VTLmVudGVyVG8pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9hbmltYXRhYmxlLmFuaW1hdGlvbkVuZCRcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3kkKSxcbiAgICAgICAgICB0YWtlKDEpLFxuICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLl9zdGF0ZSQubmV4dCgnZW50ZXJlZCcpO1xuICAgICAgICAgICAgdGhpcy5fY2xhc3NMaXN0LnJlbW92ZShBTklNQVRJT05fQ0xBU1NFUy5lbnRlckFjdGl2ZSk7XG5cbiAgICAgICAgICAgIGlmICghY29uZmlnPy5vbmx5VHJhbnNpdGlvbikge1xuICAgICAgICAgICAgICB0aGlzLl9jbGFzc0xpc3QucmVtb3ZlKEFOSU1BVElPTl9DTEFTU0VTLmVudGVyVG8pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKTtcbiAgICB9KTtcbiAgfVxuXG4gIGxlYXZlKGNvbmZpZz86IHsgb25seVRyYW5zaXRpb24/OiBib29sZWFuIH0pIHtcbiAgICBpZiAoXG4gICAgICB0aGlzLl9jbGFzc0xpc3QuY29udGFpbnMoQU5JTUFUSU9OX0NMQVNTRVMuZW50ZXJGcm9tKSB8fFxuICAgICAgdGhpcy5fY2xhc3NMaXN0LmNvbnRhaW5zKEFOSU1BVElPTl9DTEFTU0VTLmVudGVyQWN0aXZlKSB8fFxuICAgICAgdGhpcy5fY2xhc3NMaXN0LmNvbnRhaW5zKEFOSU1BVElPTl9DTEFTU0VTLmVudGVyVG8pXG4gICAgKSB7XG4gICAgICB0aGlzLl9jbGFzc0xpc3QucmVtb3ZlKEFOSU1BVElPTl9DTEFTU0VTLmVudGVyRnJvbSk7XG4gICAgICB0aGlzLl9jbGFzc0xpc3QucmVtb3ZlKEFOSU1BVElPTl9DTEFTU0VTLmVudGVyQWN0aXZlKTtcbiAgICAgIHRoaXMuX2NsYXNzTGlzdC5yZW1vdmUoQU5JTUFUSU9OX0NMQVNTRVMuZW50ZXJUbyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGUkLm5leHQoJ2xlYXZpbmcnKTtcblxuICAgIGlmICghY29uZmlnPy5vbmx5VHJhbnNpdGlvbikge1xuICAgICAgdGhpcy5fY2xhc3NMaXN0LmFkZChBTklNQVRJT05fQ0xBU1NFUy5sZWF2ZUZyb20pO1xuICAgIH1cblxuICAgIGZvcmNlUmVmbG93KCk7XG4gICAgdGhpcy5fY2xhc3NMaXN0LmFkZChBTklNQVRJT05fQ0xBU1NFUy5sZWF2ZUFjdGl2ZSk7XG5cbiAgICBuZXh0RnJhbWUoKCkgPT4ge1xuICAgICAgaWYgKCFjb25maWc/Lm9ubHlUcmFuc2l0aW9uKSB7XG4gICAgICAgIHRoaXMuX2NsYXNzTGlzdC5yZW1vdmUoQU5JTUFUSU9OX0NMQVNTRVMubGVhdmVGcm9tKTtcbiAgICAgICAgdGhpcy5fY2xhc3NMaXN0LmFkZChBTklNQVRJT05fQ0xBU1NFUy5sZWF2ZVRvKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fYW5pbWF0YWJsZS5hbmltYXRpb25FbmQkXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLl9kZXN0cm95JCksXG4gICAgICAgICAgdGFrZSgxKSxcbiAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fc3RhdGUkLm5leHQoJ2xlZnQnKTtcbiAgICAgICAgICAgIHRoaXMuX2NsYXNzTGlzdC5yZW1vdmUoQU5JTUFUSU9OX0NMQVNTRVMubGVhdmVBY3RpdmUpO1xuXG4gICAgICAgICAgICBpZiAoIWNvbmZpZz8ub25seVRyYW5zaXRpb24pIHtcbiAgICAgICAgICAgICAgdGhpcy5fY2xhc3NMaXN0LnJlbW92ZShBTklNQVRJT05fQ0xBU1NFUy5sZWF2ZVRvKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './animated-lifecycle.directive';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvYW5pbWF0ZWQtbGlmZWN5Y2xlL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYW5pbWF0ZWQtbGlmZWN5Y2xlLmRpcmVjdGl2ZSc7XG4iXX0=
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export * from './animatable/public-api';
|
|
2
|
+
export * from './animated-lifecycle/public-api';
|
|
1
3
|
export * from './click-outside/public-api';
|
|
2
4
|
export * from './cursor-drag-scroll/public-api';
|
|
3
5
|
export * from './let/public-api';
|
|
@@ -9,4 +11,4 @@ export * from './scroll-observer-first-element/public-api';
|
|
|
9
11
|
export * from './scroll-observer-ignore-target/public-api';
|
|
10
12
|
export * from './scroll-observer-last-element/public-api';
|
|
11
13
|
export * from './seo/public-api';
|
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL2RpcmVjdGl2ZXMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHlCQUF5QixDQUFDO0FBQ3hDLGNBQWMsaUNBQWlDLENBQUM7QUFDaEQsY0FBYyw0QkFBNEIsQ0FBQztBQUMzQyxjQUFjLGlDQUFpQyxDQUFDO0FBQ2hELGNBQWMsa0JBQWtCLENBQUM7QUFDakMsY0FBYyw4QkFBOEIsQ0FBQztBQUM3QyxjQUFjLDZCQUE2QixDQUFDO0FBQzVDLGNBQWMsbUNBQW1DLENBQUM7QUFDbEQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxjQUFjLDRDQUE0QyxDQUFDO0FBQzNELGNBQWMsNENBQTRDLENBQUM7QUFDM0QsY0FBYywyQ0FBMkMsQ0FBQztBQUMxRCxjQUFjLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmltYXRhYmxlL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9hbmltYXRlZC1saWZlY3ljbGUvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2NsaWNrLW91dHNpZGUvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2N1cnNvci1kcmFnLXNjcm9sbC9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vbGV0L3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9vYnNlcnZlLWNvbnRlbnQvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL29ic2VydmUtcmVzaXplL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9vYnNlcnZlLXNjcm9sbC1zdGF0ZS9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vcmVwZWF0L3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi9zY3JvbGwtb2JzZXJ2ZXItZmlyc3QtZWxlbWVudC9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vc2Nyb2xsLW9ic2VydmVyLWlnbm9yZS10YXJnZXQvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbC1vYnNlcnZlci1sYXN0LWVsZW1lbnQvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL3Nlby9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -6,4 +6,5 @@ export * from './pipes/public-api';
|
|
|
6
6
|
export * from './services/public-api';
|
|
7
7
|
export * from './types/public-api';
|
|
8
8
|
export * from './utils/public-api';
|
|
9
|
-
|
|
9
|
+
export * from './validators/public-api';
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLHdCQUF3QixDQUFDO0FBQ3ZDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyx5QkFBeUIsQ0FBQztBQUN4QyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLG9CQUFvQixDQUFDO0FBQ25DLGNBQWMseUJBQXlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL2NvbnN0YW50cy9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vZGVjb3JhdG9ycy9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vZGlyZWN0aXZlcy9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vcGlwZXMvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL3NlcnZpY2VzL3B1YmxpYy1hcGknO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9wdWJsaWMtYXBpJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMvcHVibGljLWFwaSc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRvcnMvcHVibGljLWFwaSc7XG4iXX0=
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const nextFrame = (cb) => {
|
|
2
|
+
requestAnimationFrame(() => {
|
|
3
|
+
requestAnimationFrame(cb);
|
|
4
|
+
});
|
|
5
|
+
};
|
|
6
|
+
export const forceReflow = (element = document.body) => {
|
|
7
|
+
return element.offsetHeight;
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvYW5pbWF0aW9uLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQWMsRUFBRSxFQUFFO0lBQzFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtRQUN6QixxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRyxDQUFDLFVBQXVCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtJQUNsRSxPQUFPLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDOUIsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IG5leHRGcmFtZSA9IChjYjogKCkgPT4gdm9pZCkgPT4ge1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcmNlUmVmbG93ID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuYm9keSkgPT4ge1xuICByZXR1cm4gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG59O1xuIl19
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export * from './animation.utils';
|
|
1
2
|
export * from './clamp.util';
|
|
2
3
|
export * from './clone.util';
|
|
3
4
|
export * from './cookie.util';
|
|
@@ -6,4 +7,4 @@ export * from './media-query-observable.util';
|
|
|
6
7
|
export * from './reactive-binding.util';
|
|
7
8
|
export * from './scrollable.utils';
|
|
8
9
|
export * from './viewport.util';
|
|
9
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmltYXRpb24udXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFtcC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY2xvbmUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Nvb2tpZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vZXF1YWwudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL21lZGlhLXF1ZXJ5LW9ic2VydmFibGUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlYWN0aXZlLWJpbmRpbmcudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3Njcm9sbGFibGUudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi92aWV3cG9ydC51dGlsJztcbiJdfQ==
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export const IS_ARRAY_NOT_EMPTY = 'isArrayNotEmpty';
|
|
2
|
+
export const IsArrayNotEmpty = (control) => {
|
|
3
|
+
const value = control.value;
|
|
4
|
+
if (!value) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
return value.length > 0 ? null : { [IS_ARRAY_NOT_EMPTY]: true };
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtYXJyYXktbm90LWVtcHR5LnZhbGlkYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3ZhbGlkYXRvcnMvaXMtYXJyYXktbm90LWVtcHR5LnZhbGlkYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFFQSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsQ0FBQyxPQUF3QixFQUEyQixFQUFFO0lBQ25GLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ2xFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IElTX0FSUkFZX05PVF9FTVBUWSA9ICdpc0FycmF5Tm90RW1wdHknO1xuXG5leHBvcnQgY29uc3QgSXNBcnJheU5vdEVtcHR5ID0gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0+IHtcbiAgY29uc3QgdmFsdWUgPSBjb250cm9sLnZhbHVlO1xuICBpZiAoIXZhbHVlKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gdmFsdWUubGVuZ3RoID4gMCA/IG51bGwgOiB7IFtJU19BUlJBWV9OT1RfRU1QVFldOiB0cnVlIH07XG59O1xuIl19
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const IS_EMAIL = 'isEmail';
|
|
2
|
+
export const IsEmail = (control) => {
|
|
3
|
+
const value = control.value;
|
|
4
|
+
if (!value) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
const regex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
|
|
8
|
+
return regex.test(value) ? null : { [IS_EMAIL]: true };
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXMtZW1haWwudmFsaWRhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdmFsaWRhdG9ycy9pcy1lbWFpbC52YWxpZGF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsTUFBTSxDQUFDLE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQztBQUVsQyxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxPQUF3QixFQUEyQixFQUFFO0lBQzNFLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDNUIsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUNWLE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFFRCxNQUFNLEtBQUssR0FBRywwQ0FBMEMsQ0FBQztJQUN6RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDO0FBQ3pELENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgVmFsaWRhdGlvbkVycm9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuZXhwb3J0IGNvbnN0IElTX0VNQUlMID0gJ2lzRW1haWwnO1xuXG5leHBvcnQgY29uc3QgSXNFbWFpbCA9IChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHZhbHVlID0gY29udHJvbC52YWx1ZTtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgcmVnZXggPSAvXlthLXowLTkuXyUrLV0rQFthLXowLTkuLV0rXFwuW2Etel17Miw0fSQvO1xuICByZXR1cm4gcmVnZXgudGVzdCh2YWx1ZSkgPyBudWxsIDogeyBbSVNfRU1BSUxdOiB0cnVlIH07XG59O1xuIl19
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export const MUST_MATCH = 'mustMatch';
|
|
2
|
+
export const MustMatch = (controlName, matchingControlName) => {
|
|
3
|
+
return (formGroup) => {
|
|
4
|
+
const control = formGroup.controls[controlName];
|
|
5
|
+
const matchingControl = formGroup.controls[matchingControlName];
|
|
6
|
+
// set error on matchingControl if validation fails
|
|
7
|
+
if (matchingControl.errors && !matchingControl.errors[MUST_MATCH]) {
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
// set error on matchingControl if validation fails
|
|
11
|
+
if (control.value !== matchingControl.value) {
|
|
12
|
+
matchingControl.setErrors({ [MUST_MATCH]: true });
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
matchingControl.setErrors(null);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVzdC1tYXRjaC52YWxpZGF0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvcmUvc3JjL2xpYi92YWxpZGF0b3JzL211c3QtbWF0Y2gudmFsaWRhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUM7QUFFdEMsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFHLENBQUMsV0FBbUIsRUFBRSxtQkFBMkIsRUFBRSxFQUFFO0lBQzVFLE9BQU8sQ0FBQyxTQUFvQixFQUFFLEVBQUU7UUFDOUIsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFFaEUsbURBQW1EO1FBQ25ELElBQUksZUFBZSxDQUFDLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDakUsT0FBTztTQUNSO1FBRUQsbURBQW1EO1FBQ25ELElBQUksT0FBTyxDQUFDLEtBQUssS0FBSyxlQUFlLENBQUMsS0FBSyxFQUFFO1lBQzNDLGVBQWUsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7U0FDbkQ7YUFBTTtZQUNMLGVBQWUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDakM7SUFDSCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmV4cG9ydCBjb25zdCBNVVNUX01BVENIID0gJ211c3RNYXRjaCc7XG5cbmV4cG9ydCBjb25zdCBNdXN0TWF0Y2ggPSAoY29udHJvbE5hbWU6IHN0cmluZywgbWF0Y2hpbmdDb250cm9sTmFtZTogc3RyaW5nKSA9PiB7XG4gIHJldHVybiAoZm9ybUdyb3VwOiBGb3JtR3JvdXApID0+IHtcbiAgICBjb25zdCBjb250cm9sID0gZm9ybUdyb3VwLmNvbnRyb2xzW2NvbnRyb2xOYW1lXTtcbiAgICBjb25zdCBtYXRjaGluZ0NvbnRyb2wgPSBmb3JtR3JvdXAuY29udHJvbHNbbWF0Y2hpbmdDb250cm9sTmFtZV07XG5cbiAgICAvLyBzZXQgZXJyb3Igb24gbWF0Y2hpbmdDb250cm9sIGlmIHZhbGlkYXRpb24gZmFpbHNcbiAgICBpZiAobWF0Y2hpbmdDb250cm9sLmVycm9ycyAmJiAhbWF0Y2hpbmdDb250cm9sLmVycm9yc1tNVVNUX01BVENIXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIHNldCBlcnJvciBvbiBtYXRjaGluZ0NvbnRyb2wgaWYgdmFsaWRhdGlvbiBmYWlsc1xuICAgIGlmIChjb250cm9sLnZhbHVlICE9PSBtYXRjaGluZ0NvbnRyb2wudmFsdWUpIHtcbiAgICAgIG1hdGNoaW5nQ29udHJvbC5zZXRFcnJvcnMoeyBbTVVTVF9NQVRDSF06IHRydWUgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hdGNoaW5nQ29udHJvbC5zZXRFcnJvcnMobnVsbCk7XG4gICAgfVxuICB9O1xufTtcbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { IsArrayNotEmpty } from './is-array-not-empty.validator';
|
|
2
|
+
import { IsEmail } from './is-email.validator';
|
|
3
|
+
import { MustMatch } from './must-match.validator';
|
|
4
|
+
export * from './is-array-not-empty.validator';
|
|
5
|
+
export * from './is-email.validator';
|
|
6
|
+
export * from './must-match.validator';
|
|
7
|
+
export const Validators = {
|
|
8
|
+
MustMatch,
|
|
9
|
+
IsEmail,
|
|
10
|
+
IsArrayNotEmpty,
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3ZhbGlkYXRvcnMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVuRCxjQUFjLGdDQUFnQyxDQUFDO0FBQy9DLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx3QkFBd0IsQ0FBQztBQUV2QyxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsU0FBUztJQUNULE9BQU87SUFDUCxlQUFlO0NBQ1AsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElzQXJyYXlOb3RFbXB0eSB9IGZyb20gJy4vaXMtYXJyYXktbm90LWVtcHR5LnZhbGlkYXRvcic7XG5pbXBvcnQgeyBJc0VtYWlsIH0gZnJvbSAnLi9pcy1lbWFpbC52YWxpZGF0b3InO1xuaW1wb3J0IHsgTXVzdE1hdGNoIH0gZnJvbSAnLi9tdXN0LW1hdGNoLnZhbGlkYXRvcic7XG5cbmV4cG9ydCAqIGZyb20gJy4vaXMtYXJyYXktbm90LWVtcHR5LnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL2lzLWVtYWlsLnZhbGlkYXRvcic7XG5leHBvcnQgKiBmcm9tICcuL211c3QtbWF0Y2gudmFsaWRhdG9yJztcblxuZXhwb3J0IGNvbnN0IFZhbGlkYXRvcnMgPSB7XG4gIE11c3RNYXRjaCxcbiAgSXNFbWFpbCxcbiAgSXNBcnJheU5vdEVtcHR5LFxufSBhcyBjb25zdDtcbiJdfQ==
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, Injectable, ElementRef, Inject, Optional,
|
|
2
|
+
import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, Injectable, ElementRef, Inject, Optional, Directive, EventEmitter, Output, NgZone, Pipe, QueryList } from '@angular/core';
|
|
3
3
|
import { DomSanitizer, Meta, Title } from '@angular/platform-browser';
|
|
4
|
+
import { fromEvent, Observable, Subject, startWith, map, takeUntil, distinctUntilChanged, BehaviorSubject, filter, combineLatest, pairwise, debounceTime, shareReplay, merge, tap, take } from 'rxjs';
|
|
4
5
|
import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
5
|
-
import { fromEvent, Observable, Subject, startWith, map, takeUntil, distinctUntilChanged, BehaviorSubject, filter, combineLatest, pairwise, debounceTime, shareReplay, tap, take } from 'rxjs';
|
|
6
6
|
import { DOCUMENT } from '@angular/common';
|
|
7
7
|
import { Router, NavigationEnd } from '@angular/router';
|
|
8
8
|
import { __decorate, __metadata } from 'tslib';
|
|
@@ -348,6 +348,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
348
348
|
args: [{ providedIn: 'root' }]
|
|
349
349
|
}], ctorParameters: function () { return [{ type: ResizeObserverFactory }]; } });
|
|
350
350
|
|
|
351
|
+
const nextFrame = (cb) => {
|
|
352
|
+
requestAnimationFrame(() => {
|
|
353
|
+
requestAnimationFrame(cb);
|
|
354
|
+
});
|
|
355
|
+
};
|
|
356
|
+
const forceReflow = (element = document.body) => {
|
|
357
|
+
return element.offsetHeight;
|
|
358
|
+
};
|
|
359
|
+
|
|
351
360
|
const clamp = (value, min = 0, max = 100) => {
|
|
352
361
|
return Math.max(min, Math.min(max, value));
|
|
353
362
|
};
|
|
@@ -1005,6 +1014,187 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImpor
|
|
|
1005
1014
|
}] }, { type: i1.BreakpointObserver }];
|
|
1006
1015
|
}, propDecorators: { _getViewportSize: [], _buildMediaQuery: [] } });
|
|
1007
1016
|
|
|
1017
|
+
const ANIMATABLE_TOKEN = new InjectionToken('ANIMATABLE_DIRECTIVE_TOKEN');
|
|
1018
|
+
class AnimatableDirective {
|
|
1019
|
+
constructor() {
|
|
1020
|
+
this._didEmitStart = false;
|
|
1021
|
+
this._parent = inject(ANIMATABLE_TOKEN, { optional: true, skipSelf: true });
|
|
1022
|
+
this._destroy$ = inject(DestroyService, { host: true }).destroy$;
|
|
1023
|
+
this._elementRef = inject(ElementRef);
|
|
1024
|
+
this._animationStart$ = new Subject();
|
|
1025
|
+
this._animationEnd$ = new Subject();
|
|
1026
|
+
this.animationStart$ = this._animationStart$.asObservable().pipe(debounceTime(0));
|
|
1027
|
+
this.animationEnd$ = this._animationEnd$.asObservable().pipe(debounceTime(0));
|
|
1028
|
+
this._hostActiveAnimationCount$ = new BehaviorSubject(0);
|
|
1029
|
+
this._totalActiveAnimationCount$ = new BehaviorSubject(0);
|
|
1030
|
+
this.isAnimating$ = this._totalActiveAnimationCount$.pipe(map((count) => count > 0), debounceTime(0));
|
|
1031
|
+
}
|
|
1032
|
+
ngOnInit() {
|
|
1033
|
+
merge(fromEvent(this._elementRef.nativeElement, 'animationstart'), fromEvent(this._elementRef.nativeElement, 'transitionstart'))
|
|
1034
|
+
.pipe(tap(() => {
|
|
1035
|
+
const count = this._hostActiveAnimationCount$.value + 1;
|
|
1036
|
+
this._hostActiveAnimationCount$.next(count);
|
|
1037
|
+
this._totalActiveAnimationCount$.next(count);
|
|
1038
|
+
}), takeUntil(this._destroy$))
|
|
1039
|
+
.subscribe();
|
|
1040
|
+
merge(fromEvent(this._elementRef.nativeElement, 'animationend'), fromEvent(this._elementRef.nativeElement, 'animationcancel'), fromEvent(this._elementRef.nativeElement, 'transitionend'), fromEvent(this._elementRef.nativeElement, 'transitioncancel'))
|
|
1041
|
+
.pipe(tap(() => {
|
|
1042
|
+
const count = this._hostActiveAnimationCount$.value - 1;
|
|
1043
|
+
this._hostActiveAnimationCount$.next(count);
|
|
1044
|
+
this._totalActiveAnimationCount$.next(count);
|
|
1045
|
+
}), takeUntil(this._destroy$))
|
|
1046
|
+
.subscribe();
|
|
1047
|
+
this._totalActiveAnimationCount$
|
|
1048
|
+
.pipe(tap((count) => {
|
|
1049
|
+
if (count > 0 && !this._didEmitStart) {
|
|
1050
|
+
this._animationStart$.next();
|
|
1051
|
+
this._didEmitStart = true;
|
|
1052
|
+
}
|
|
1053
|
+
else if (count === 0) {
|
|
1054
|
+
this._animationEnd$.next();
|
|
1055
|
+
this._didEmitStart = false;
|
|
1056
|
+
}
|
|
1057
|
+
}), takeUntil(this._destroy$))
|
|
1058
|
+
.subscribe();
|
|
1059
|
+
if (this._parent) {
|
|
1060
|
+
this._parent._hostActiveAnimationCount$
|
|
1061
|
+
.pipe(takeUntil(this._destroy$), tap((count) => {
|
|
1062
|
+
this._totalActiveAnimationCount$.next(count + this._hostActiveAnimationCount$.value);
|
|
1063
|
+
}))
|
|
1064
|
+
.subscribe();
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
}
|
|
1068
|
+
AnimatableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatableDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1069
|
+
AnimatableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: AnimatableDirective, isStandalone: true, selector: "[etAnimatable]", providers: [
|
|
1070
|
+
{
|
|
1071
|
+
provide: ANIMATABLE_TOKEN,
|
|
1072
|
+
useExisting: AnimatableDirective,
|
|
1073
|
+
},
|
|
1074
|
+
DestroyService,
|
|
1075
|
+
], exportAs: ["etAnimatable"], ngImport: i0 });
|
|
1076
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatableDirective, decorators: [{
|
|
1077
|
+
type: Directive,
|
|
1078
|
+
args: [{
|
|
1079
|
+
selector: '[etAnimatable]',
|
|
1080
|
+
exportAs: 'etAnimatable',
|
|
1081
|
+
standalone: true,
|
|
1082
|
+
providers: [
|
|
1083
|
+
{
|
|
1084
|
+
provide: ANIMATABLE_TOKEN,
|
|
1085
|
+
useExisting: AnimatableDirective,
|
|
1086
|
+
},
|
|
1087
|
+
DestroyService,
|
|
1088
|
+
],
|
|
1089
|
+
}]
|
|
1090
|
+
}] });
|
|
1091
|
+
|
|
1092
|
+
const ANIMATED_LIFECYCLE_TOKEN = new InjectionToken('ANIMATED_LIFECYCLE_DIRECTIVE_TOKEN');
|
|
1093
|
+
const ANIMATION_CLASSES = {
|
|
1094
|
+
enterFrom: 'et-animation-enter-from',
|
|
1095
|
+
enterActive: 'et-animation-enter-active',
|
|
1096
|
+
enterTo: 'et-animation-enter-to',
|
|
1097
|
+
leaveFrom: 'et-animation-leave-from',
|
|
1098
|
+
leaveActive: 'et-animation-leave-active',
|
|
1099
|
+
leaveTo: 'et-animation-leave-to',
|
|
1100
|
+
};
|
|
1101
|
+
class AnimatedLifecycleDirective {
|
|
1102
|
+
constructor() {
|
|
1103
|
+
this._destroy$ = inject(DestroyService, { host: true }).destroy$;
|
|
1104
|
+
this._elementRef = inject(ElementRef);
|
|
1105
|
+
this._animatable = inject(ANIMATABLE_TOKEN);
|
|
1106
|
+
this._classList = this._elementRef.nativeElement.classList;
|
|
1107
|
+
this._state$ = new BehaviorSubject('init');
|
|
1108
|
+
this.state$ = this._state$.asObservable();
|
|
1109
|
+
}
|
|
1110
|
+
get state() {
|
|
1111
|
+
return this._state$.value;
|
|
1112
|
+
}
|
|
1113
|
+
get _opacity() {
|
|
1114
|
+
return this._state$.value === 'init' ? '0 !important' : '';
|
|
1115
|
+
}
|
|
1116
|
+
enter(config) {
|
|
1117
|
+
this._state$.next('entering');
|
|
1118
|
+
if (!(config === null || config === void 0 ? void 0 : config.onlyTransition)) {
|
|
1119
|
+
this._classList.add(ANIMATION_CLASSES.enterFrom);
|
|
1120
|
+
}
|
|
1121
|
+
forceReflow();
|
|
1122
|
+
this._classList.add(ANIMATION_CLASSES.enterActive);
|
|
1123
|
+
nextFrame(() => {
|
|
1124
|
+
if (!(config === null || config === void 0 ? void 0 : config.onlyTransition)) {
|
|
1125
|
+
this._classList.remove(ANIMATION_CLASSES.enterFrom);
|
|
1126
|
+
this._classList.add(ANIMATION_CLASSES.enterTo);
|
|
1127
|
+
}
|
|
1128
|
+
this._animatable.animationEnd$
|
|
1129
|
+
.pipe(takeUntil(this._destroy$), take(1), tap(() => {
|
|
1130
|
+
this._state$.next('entered');
|
|
1131
|
+
this._classList.remove(ANIMATION_CLASSES.enterActive);
|
|
1132
|
+
if (!(config === null || config === void 0 ? void 0 : config.onlyTransition)) {
|
|
1133
|
+
this._classList.remove(ANIMATION_CLASSES.enterTo);
|
|
1134
|
+
}
|
|
1135
|
+
}))
|
|
1136
|
+
.subscribe();
|
|
1137
|
+
});
|
|
1138
|
+
}
|
|
1139
|
+
leave(config) {
|
|
1140
|
+
if (this._classList.contains(ANIMATION_CLASSES.enterFrom) ||
|
|
1141
|
+
this._classList.contains(ANIMATION_CLASSES.enterActive) ||
|
|
1142
|
+
this._classList.contains(ANIMATION_CLASSES.enterTo)) {
|
|
1143
|
+
this._classList.remove(ANIMATION_CLASSES.enterFrom);
|
|
1144
|
+
this._classList.remove(ANIMATION_CLASSES.enterActive);
|
|
1145
|
+
this._classList.remove(ANIMATION_CLASSES.enterTo);
|
|
1146
|
+
}
|
|
1147
|
+
this._state$.next('leaving');
|
|
1148
|
+
if (!(config === null || config === void 0 ? void 0 : config.onlyTransition)) {
|
|
1149
|
+
this._classList.add(ANIMATION_CLASSES.leaveFrom);
|
|
1150
|
+
}
|
|
1151
|
+
forceReflow();
|
|
1152
|
+
this._classList.add(ANIMATION_CLASSES.leaveActive);
|
|
1153
|
+
nextFrame(() => {
|
|
1154
|
+
if (!(config === null || config === void 0 ? void 0 : config.onlyTransition)) {
|
|
1155
|
+
this._classList.remove(ANIMATION_CLASSES.leaveFrom);
|
|
1156
|
+
this._classList.add(ANIMATION_CLASSES.leaveTo);
|
|
1157
|
+
}
|
|
1158
|
+
this._animatable.animationEnd$
|
|
1159
|
+
.pipe(takeUntil(this._destroy$), take(1), tap(() => {
|
|
1160
|
+
this._state$.next('left');
|
|
1161
|
+
this._classList.remove(ANIMATION_CLASSES.leaveActive);
|
|
1162
|
+
if (!(config === null || config === void 0 ? void 0 : config.onlyTransition)) {
|
|
1163
|
+
this._classList.remove(ANIMATION_CLASSES.leaveTo);
|
|
1164
|
+
}
|
|
1165
|
+
}))
|
|
1166
|
+
.subscribe();
|
|
1167
|
+
});
|
|
1168
|
+
}
|
|
1169
|
+
}
|
|
1170
|
+
AnimatedLifecycleDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatedLifecycleDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1171
|
+
AnimatedLifecycleDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.1.4", type: AnimatedLifecycleDirective, isStandalone: true, selector: "[etAnimatedLifecycle]", host: { properties: { "style.opacity": "this._opacity" } }, providers: [
|
|
1172
|
+
{
|
|
1173
|
+
provide: ANIMATED_LIFECYCLE_TOKEN,
|
|
1174
|
+
useExisting: AnimatedLifecycleDirective,
|
|
1175
|
+
},
|
|
1176
|
+
DestroyService,
|
|
1177
|
+
], exportAs: ["etAnimatedLifecycle"], hostDirectives: [{ directive: AnimatableDirective }], ngImport: i0 });
|
|
1178
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.1.4", ngImport: i0, type: AnimatedLifecycleDirective, decorators: [{
|
|
1179
|
+
type: Directive,
|
|
1180
|
+
args: [{
|
|
1181
|
+
selector: '[etAnimatedLifecycle]',
|
|
1182
|
+
exportAs: 'etAnimatedLifecycle',
|
|
1183
|
+
standalone: true,
|
|
1184
|
+
providers: [
|
|
1185
|
+
{
|
|
1186
|
+
provide: ANIMATED_LIFECYCLE_TOKEN,
|
|
1187
|
+
useExisting: AnimatedLifecycleDirective,
|
|
1188
|
+
},
|
|
1189
|
+
DestroyService,
|
|
1190
|
+
],
|
|
1191
|
+
hostDirectives: [AnimatableDirective],
|
|
1192
|
+
}]
|
|
1193
|
+
}], propDecorators: { _opacity: [{
|
|
1194
|
+
type: HostBinding,
|
|
1195
|
+
args: ['style.opacity']
|
|
1196
|
+
}] } });
|
|
1197
|
+
|
|
1008
1198
|
class ClickOutsideDirective {
|
|
1009
1199
|
constructor() {
|
|
1010
1200
|
this._elementRef = inject(ElementRef);
|
|
@@ -2172,9 +2362,53 @@ class TypedQueryList extends QueryList {
|
|
|
2172
2362
|
}
|
|
2173
2363
|
_a = Symbol.iterator;
|
|
2174
2364
|
|
|
2365
|
+
const IS_ARRAY_NOT_EMPTY = 'isArrayNotEmpty';
|
|
2366
|
+
const IsArrayNotEmpty = (control) => {
|
|
2367
|
+
const value = control.value;
|
|
2368
|
+
if (!value) {
|
|
2369
|
+
return null;
|
|
2370
|
+
}
|
|
2371
|
+
return value.length > 0 ? null : { [IS_ARRAY_NOT_EMPTY]: true };
|
|
2372
|
+
};
|
|
2373
|
+
|
|
2374
|
+
const IS_EMAIL = 'isEmail';
|
|
2375
|
+
const IsEmail = (control) => {
|
|
2376
|
+
const value = control.value;
|
|
2377
|
+
if (!value) {
|
|
2378
|
+
return null;
|
|
2379
|
+
}
|
|
2380
|
+
const regex = /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,4}$/;
|
|
2381
|
+
return regex.test(value) ? null : { [IS_EMAIL]: true };
|
|
2382
|
+
};
|
|
2383
|
+
|
|
2384
|
+
const MUST_MATCH = 'mustMatch';
|
|
2385
|
+
const MustMatch = (controlName, matchingControlName) => {
|
|
2386
|
+
return (formGroup) => {
|
|
2387
|
+
const control = formGroup.controls[controlName];
|
|
2388
|
+
const matchingControl = formGroup.controls[matchingControlName];
|
|
2389
|
+
// set error on matchingControl if validation fails
|
|
2390
|
+
if (matchingControl.errors && !matchingControl.errors[MUST_MATCH]) {
|
|
2391
|
+
return;
|
|
2392
|
+
}
|
|
2393
|
+
// set error on matchingControl if validation fails
|
|
2394
|
+
if (control.value !== matchingControl.value) {
|
|
2395
|
+
matchingControl.setErrors({ [MUST_MATCH]: true });
|
|
2396
|
+
}
|
|
2397
|
+
else {
|
|
2398
|
+
matchingControl.setErrors(null);
|
|
2399
|
+
}
|
|
2400
|
+
};
|
|
2401
|
+
};
|
|
2402
|
+
|
|
2403
|
+
const Validators = {
|
|
2404
|
+
MustMatch,
|
|
2405
|
+
IsEmail,
|
|
2406
|
+
IsArrayNotEmpty,
|
|
2407
|
+
};
|
|
2408
|
+
|
|
2175
2409
|
/**
|
|
2176
2410
|
* Generated bundle index. Do not edit.
|
|
2177
2411
|
*/
|
|
2178
2412
|
|
|
2179
|
-
export { ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DestroyService, FocusVisibleService, LetContext, LetDirective, Memo, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RouterStateService, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SeoDirective, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, ViewportService, clamp, clone, createMediaQueryObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isGroupMatch, isKnockoutMatch, mergeSeoConfig, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, routerDisableScrollTop, setCookie, toArray, toArrayTrackByFn };
|
|
2413
|
+
export { ANIMATABLE_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AnimatableDirective, AnimatedLifecycleDirective, ClickObserverFactory, ClickObserverService, ClickOutsideDirective, ContentObserverService, CursorDragScrollDirective, DEFAULT_VIEWPORT_CONFIG, DestroyService, FocusVisibleService, IS_ARRAY_NOT_EMPTY, IS_EMAIL, IsArrayNotEmpty, IsEmail, LetContext, LetDirective, MUST_MATCH, Memo, MustMatch, MutationObserverFactory, NormalizeGameResultTypePipe, NormalizeMatchParticipantsPipe, NormalizeMatchScorePipe, NormalizeMatchStatePipe, NormalizeMatchTypePipe, OBSERVE_SCROLL_STATE, ObserveContentDirective, ObserveResizeDirective, ObserveScrollStateDirective, RepeatDirective, ResizeObserverFactory, ResizeObserverService, RouterStateService, SCROLL_OBSERVER_FIRST_ELEMENT_CLASS, SCROLL_OBSERVER_IGNORE_TARGET_CLASS, SCROLL_OBSERVER_LAST_ELEMENT_CLASS, SEO_DIRECTIVE_TOKEN, ScrollObserverFirstElementDirective, ScrollObserverIgnoreTargetDirective, ScrollObserverLastElementDirective, SeoDirective, StructuredDataComponent, ToArrayPipe, TypedQueryList, VIEWPORT_CONFIG, Validators, ViewportService, clamp, clone, createMediaQueryObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, forceReflow, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isGroupMatch, isKnockoutMatch, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, routerDisableScrollTop, setCookie, toArray, toArrayTrackByFn };
|
|
2180
2414
|
//# sourceMappingURL=ethlete-core.mjs.map
|