@ethlete/core 1.2.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/utils/animation.utils.mjs +26 -2
- package/esm2020/lib/utils/public-api.mjs +2 -1
- package/esm2020/lib/utils/rxjs.utils.mjs +27 -0
- package/fesm2015/ethlete-core.mjs +49 -2
- package/fesm2015/ethlete-core.mjs.map +1 -1
- package/fesm2020/ethlete-core.mjs +52 -2
- package/fesm2020/ethlete-core.mjs.map +1 -1
- package/lib/utils/animation.utils.d.ts +12 -0
- package/lib/utils/public-api.d.ts +1 -0
- package/lib/utils/rxjs.utils.d.ts +9 -0
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Observable, Subject } from 'rxjs';
|
|
1
|
+
import { combineLatest, Observable, Subject } from 'rxjs';
|
|
2
2
|
export const nextFrame = (cb) => {
|
|
3
3
|
requestAnimationFrame(() => {
|
|
4
4
|
requestAnimationFrame(cb);
|
|
@@ -15,6 +15,30 @@ export const fromNextFrame = () => {
|
|
|
15
15
|
export const forceReflow = (element = document.body) => {
|
|
16
16
|
return element.offsetHeight;
|
|
17
17
|
};
|
|
18
|
+
export const createFlipAnimationGroup = (config) => {
|
|
19
|
+
const { elements, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;
|
|
20
|
+
const flips = elements.map((el) => createFlipAnimation({ element: el, duration, easing }));
|
|
21
|
+
const onStart$ = combineLatest(flips.map((animation) => animation.onStart$));
|
|
22
|
+
const onFinish$ = combineLatest(flips.map((animation) => animation.onFinish$));
|
|
23
|
+
const onCancel$ = combineLatest(flips.map((animation) => animation.onCancel$));
|
|
24
|
+
const updateInit = () => {
|
|
25
|
+
flips.forEach((animation) => animation.updateInit());
|
|
26
|
+
};
|
|
27
|
+
const play = () => {
|
|
28
|
+
flips.forEach((animation) => animation.play());
|
|
29
|
+
};
|
|
30
|
+
const cancel = () => {
|
|
31
|
+
flips.forEach((animation) => animation.cancel());
|
|
32
|
+
};
|
|
33
|
+
return {
|
|
34
|
+
updateInit,
|
|
35
|
+
play,
|
|
36
|
+
cancel,
|
|
37
|
+
onStart$,
|
|
38
|
+
onFinish$,
|
|
39
|
+
onCancel$,
|
|
40
|
+
};
|
|
41
|
+
};
|
|
18
42
|
export const createFlipAnimation = (config) => {
|
|
19
43
|
const { element: el, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;
|
|
20
44
|
let initialRect = el.getBoundingClientRect();
|
|
@@ -82,4 +106,4 @@ export const createFlipAnimation = (config) => {
|
|
|
82
106
|
onCancel$: onCancel$.asObservable(),
|
|
83
107
|
};
|
|
84
108
|
};
|
|
85
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvYW5pbWF0aW9uLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUUxRCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsQ0FBQyxFQUFjLEVBQUUsRUFBRTtJQUMxQyxxQkFBcUIsQ0FBQyxHQUFHLEVBQUU7UUFDekIscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDNUIsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsR0FBRyxFQUFFO0lBQ2hDLE9BQU8sSUFBSSxVQUFVLENBQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUN2QyxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsVUFBdUIsUUFBUSxDQUFDLElBQUksRUFBRSxFQUFFO0lBQ2xFLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQztBQUM5QixDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSx3QkFBd0IsR0FBRyxDQUFDLE1BQXVFLEVBQUUsRUFBRTtJQUNsSCxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLDhCQUE4QixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRXJGLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFB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QyxZQUFZLEVBQUU7S0FDcEMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbWJpbmVMYXRlc3QsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGNvbnN0IG5leHRGcmFtZSA9IChjYjogKCkgPT4gdm9pZCkgPT4ge1xuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShjYik7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGZyb21OZXh0RnJhbWUgPSAoKSA9PiB7XG4gIHJldHVybiBuZXcgT2JzZXJ2YWJsZTx2b2lkPigob2JzZXJ2ZXIpID0+IHtcbiAgICBuZXh0RnJhbWUoKCkgPT4ge1xuICAgICAgb2JzZXJ2ZXIubmV4dCgpO1xuICAgICAgb2JzZXJ2ZXIuY29tcGxldGUoKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZm9yY2VSZWZsb3cgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQgPSBkb2N1bWVudC5ib2R5KSA9PiB7XG4gIHJldHVybiBlbGVtZW50Lm9mZnNldEhlaWdodDtcbn07XG5cbmV4cG9ydCBjb25zdCBjcmVhdGVGbGlwQW5pbWF0aW9uR3JvdXAgPSAoY29uZmlnOiB7IGVsZW1lbnRzOiBIVE1MRWxlbWVudFtdOyBkdXJhdGlvbj86IG51bWJlcjsgZWFzaW5nPzogc3RyaW5nIH0pID0+IHtcbiAgY29uc3QgeyBlbGVtZW50cywgZHVyYXRpb24gPSAyNTAsIGVhc2luZyA9ICdjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpJyB9ID0gY29uZmlnO1xuXG4gIGNvbnN0IGZsaXBzID0gZWxlbWVudHMubWFwKChlbCkgPT4gY3JlYXRlRmxpcEFuaW1hdGlvbih7IGVsZW1lbnQ6IGVsLCBkdXJhdGlvbiwgZWFzaW5nIH0pKTtcblxuICBjb25zdCBvblN0YXJ0JCA9IGNvbWJpbmVMYXRlc3QoZmxpcHMubWFwKChhbmltYXRpb24pID0+IGFuaW1hdGlvbi5vblN0YXJ0JCkpO1xuICBjb25zdCBvbkZpbmlzaCQgPSBjb21iaW5lTGF0ZXN0KGZsaXBzLm1hcCgoYW5pbWF0aW9uKSA9PiBhbmltYXRpb24ub25GaW5pc2gkKSk7XG4gIGNvbnN0IG9uQ2FuY2VsJCA9IGNvbWJpbmVMYXRlc3QoZmxpcHMubWFwKChhbmltYXRpb24pID0+IGFuaW1hdGlvbi5vbkNhbmNlbCQpKTtcblxuICBjb25zdCB1cGRhdGVJbml0ID0gKCkgPT4ge1xuICAgIGZsaXBzLmZvckVhY2goKGFuaW1hdGlvbikgPT4gYW5pbWF0aW9uLnVwZGF0ZUluaXQoKSk7XG4gIH07XG5cbiAgY29uc3QgcGxheSA9ICgpID0+IHtcbiAgICBmbGlwcy5mb3JFYWNoKChhbmltYXRpb24pID0+IGFuaW1hdGlvbi5wbGF5KCkpO1xuICB9O1xuXG4gIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcbiAgICBmbGlwcy5mb3JFYWNoKChhbmltYXRpb24pID0+IGFuaW1hdGlvbi5jYW5jZWwoKSk7XG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICB1cGRhdGVJbml0LFxuICAgIHBsYXksXG4gICAgY2FuY2VsLFxuICAgIG9uU3RhcnQkLFxuICAgIG9uRmluaXNoJCxcbiAgICBvbkNhbmNlbCQsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRmxpcEFuaW1hdGlvbiA9IChjb25maWc6IHsgZWxlbWVudDogSFRNTEVsZW1lbnQ7IGR1cmF0aW9uPzogbnVtYmVyOyBlYXNpbmc/OiBzdHJpbmcgfSkgPT4ge1xuICBjb25zdCB7IGVsZW1lbnQ6IGVsLCBkdXJhdGlvbiA9IDI1MCwgZWFzaW5nID0gJ2N1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknIH0gPSBjb25maWc7XG5cbiAgbGV0IGluaXRpYWxSZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGxldCBhbmltYXRpb246IEFuaW1hdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IG9uU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29uc3Qgb25GaW5pc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29uc3Qgb25DYW5jZWwkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdCBvbkFuaW1hdGlvbkZpbmlzaCA9ICgpID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgb25GaW5pc2gkLm5leHQoKTtcbiAgfTtcblxuICBjb25zdCBvbkFuaW1hdGlvbkNhbmNlbCA9ICgpID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgb25DYW5jZWwkLm5leHQoKTtcbiAgfTtcblxuICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgIGlmICghYW5pbWF0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYW5pbWF0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZpbmlzaCcsIG9uQW5pbWF0aW9uRmluaXNoKTtcbiAgICBhbmltYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2FuY2VsJywgb25BbmltYXRpb25DYW5jZWwpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUluaXQgPSAoKSA9PiB7XG4gICAgaW5pdGlhbFJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgfTtcblxuICBjb25zdCBwbGF5ID0gKCkgPT4ge1xuICAgIGNvbnN0IGxhc3RSZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBkZWx0YSA9IHtcbiAgICAgIHg6IGluaXRpYWxSZWN0LmxlZnQgLSBsYXN0UmVjdC5sZWZ0LFxuICAgICAgeTogaW5pdGlhbFJlY3QudG9wIC0gbGFzdFJlY3QudG9wLFxuICAgICAgc2NhbGVYOiBpbml0aWFsUmVjdC53aWR0aCAvIGxhc3RSZWN0LndpZHRoLFxuICAgICAgc2NhbGVZOiBpbml0aWFsUmVjdC5oZWlnaHQgLyBsYXN0UmVjdC5oZWlnaHQsXG4gICAgfTtcblxuICAgIGFuaW1hdGlvbiA9IGVsLmFuaW1hdGUoXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICd0b3AgbGVmdCcsXG4gICAgICAgICAgdHJhbnNmb3JtOiBgXG4gICAgICAgICAgdHJhbnNsYXRlKCR7ZGVsdGEueH1weCwgJHtkZWx0YS55fXB4KVxuICAgICAgICAgIHNjYWxlKCR7ZGVsdGEuc2NhbGVYfSwgJHtkZWx0YS5zY2FsZVl9KVxuICAgICAgICBgLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAndG9wIGxlZnQnLFxuICAgICAgICAgIHRyYW5zZm9ybTogJ25vbmUnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHtcbiAgICAgICAgZHVyYXRpb24sXG4gICAgICAgIGVhc2luZyxcbiAgICAgICAgZmlsbDogJ2JvdGgnLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgYW5pbWF0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2ZpbmlzaCcsIG9uQW5pbWF0aW9uRmluaXNoKTtcbiAgICBhbmltYXRpb24uYWRkRXZlbnRMaXN0ZW5lcignY2FuY2VsJywgb25BbmltYXRpb25DYW5jZWwpO1xuXG4gICAgb25TdGFydCQubmV4dCgpO1xuICB9O1xuXG4gIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcbiAgICBhbmltYXRpb24/LmNhbmNlbCgpO1xuXG4gICAgY2xlYW51cCgpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdXBkYXRlSW5pdCxcbiAgICBwbGF5LFxuICAgIGNhbmNlbCxcbiAgICBvblN0YXJ0JDogb25TdGFydCQuYXNPYnNlcnZhYmxlKCksXG4gICAgb25GaW5pc2gkOiBvbkZpbmlzaCQuYXNPYnNlcnZhYmxlKCksXG4gICAgb25DYW5jZWwkOiBvbkNhbmNlbCQuYXNPYnNlcnZhYmxlKCksXG4gIH07XG59O1xuIl19
|
|
@@ -5,6 +5,7 @@ export * from './cookie.util';
|
|
|
5
5
|
export * from './equal.util';
|
|
6
6
|
export * from './media-query-observable.util';
|
|
7
7
|
export * from './reactive-binding.util';
|
|
8
|
+
export * from './rxjs.utils';
|
|
8
9
|
export * from './scrollable.utils';
|
|
9
10
|
export * from './viewport.util';
|
|
10
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMseUJBQXlCLENBQUM7QUFDeEMsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxvQkFBb0IsQ0FBQztBQUNuQyxjQUFjLGlCQUFpQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hbmltYXRpb24udXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9jbGFtcC51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vY2xvbmUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL2Nvb2tpZS51dGlsJztcbmV4cG9ydCAqIGZyb20gJy4vZXF1YWwudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL21lZGlhLXF1ZXJ5LW9ic2VydmFibGUudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3JlYWN0aXZlLWJpbmRpbmcudXRpbCc7XG5leHBvcnQgKiBmcm9tICcuL3J4anMudXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnLi9zY3JvbGxhYmxlLnV0aWxzJztcbmV4cG9ydCAqIGZyb20gJy4vdmlld3BvcnQudXRpbCc7XG4iXX0=
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
+
import { BehaviorSubject } from 'rxjs';
|
|
3
|
+
export class BehaviorSubjectWithSubscriberCount extends BehaviorSubject {
|
|
4
|
+
constructor() {
|
|
5
|
+
super(...arguments);
|
|
6
|
+
this._subscriberCount = 0;
|
|
7
|
+
}
|
|
8
|
+
get subscriberCount() {
|
|
9
|
+
return this._subscriberCount;
|
|
10
|
+
}
|
|
11
|
+
subscribe(observerOrNext) {
|
|
12
|
+
this._subscriberCount++;
|
|
13
|
+
const sub = super.subscribe(observerOrNext);
|
|
14
|
+
return {
|
|
15
|
+
...sub,
|
|
16
|
+
unsubscribe: () => {
|
|
17
|
+
sub.unsubscribe();
|
|
18
|
+
this._subscriberCount--;
|
|
19
|
+
},
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
unsubscribe() {
|
|
23
|
+
this._subscriberCount--;
|
|
24
|
+
return super.unsubscribe();
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnhqcy51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWxzL3J4anMudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQTBCLE1BQU0sTUFBTSxDQUFDO0FBRS9ELE1BQU0sT0FBTyxrQ0FBc0MsU0FBUSxlQUFrQjtJQUE3RTs7UUFDVSxxQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFvQy9CLENBQUM7SUFsQ0MsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7SUFhUSxTQUFTLENBQUMsY0FBbUI7UUFDcEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFFeEIsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUU1QyxPQUFPO1lBQ0wsR0FBRyxHQUFHO1lBQ04sV0FBVyxFQUFFLEdBQUcsRUFBRTtnQkFDaEIsR0FBRyxDQUFDLFdBQVcsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFUSxXQUFXO1FBQ2xCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1FBRXhCLE9BQU8sS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2ZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY2xhc3MgQmVoYXZpb3JTdWJqZWN0V2l0aFN1YnNjcmliZXJDb3VudDxUPiBleHRlbmRzIEJlaGF2aW9yU3ViamVjdDxUPiB7XG4gIHByaXZhdGUgX3N1YnNjcmliZXJDb3VudCA9IDA7XG5cbiAgZ2V0IHN1YnNjcmliZXJDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3Vic2NyaWJlckNvdW50O1xuICB9XG5cbiAgb3ZlcnJpZGUgc3Vic2NyaWJlKFxuICAgIG9ic2VydmVyT3JOZXh0PzogUGFydGlhbDxPYnNlcnZlcjxUPj4gfCAoKHZhbHVlOiBUKSA9PiB2b2lkKSB8IG51bGwsXG4gICAgZXJyb3I/OiAoKGVycm9yOiBhbnkpID0+IHZvaWQpIHwgbnVsbCxcbiAgICBjb21wbGV0ZT86ICgoKSA9PiB2b2lkKSB8IG51bGwsXG4gICk6IFN1YnNjcmlwdGlvbjtcbiAgb3ZlcnJpZGUgc3Vic2NyaWJlKFxuICAgIG5leHQ/OiAoKHZhbHVlOiBUKSA9PiB2b2lkKSB8IG51bGwsXG4gICAgZXJyb3I/OiAoKGVycm9yOiBhbnkpID0+IHZvaWQpIHwgbnVsbCxcbiAgICBjb21wbGV0ZT86ICgoKSA9PiB2b2lkKSB8IG51bGwsXG4gICk6IFN1YnNjcmlwdGlvbjtcbiAgb3ZlcnJpZGUgc3Vic2NyaWJlKG9ic2VydmVyT3JOZXh0PzogUGFydGlhbDxPYnNlcnZlcjxUPj4gfCAoKHZhbHVlOiBUKSA9PiB2b2lkKSB8IHVuZGVmaW5lZCk6IFN1YnNjcmlwdGlvbjtcbiAgb3ZlcnJpZGUgc3Vic2NyaWJlKG9ic2VydmVyT3JOZXh0OiBhbnkpIHtcbiAgICB0aGlzLl9zdWJzY3JpYmVyQ291bnQrKztcblxuICAgIGNvbnN0IHN1YiA9IHN1cGVyLnN1YnNjcmliZShvYnNlcnZlck9yTmV4dCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3ViLFxuICAgICAgdW5zdWJzY3JpYmU6ICgpID0+IHtcbiAgICAgICAgc3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuX3N1YnNjcmliZXJDb3VudC0tO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgb3ZlcnJpZGUgdW5zdWJzY3JpYmUoKSB7XG4gICAgdGhpcy5fc3Vic2NyaWJlckNvdW50LS07XG5cbiAgICByZXR1cm4gc3VwZXIudW5zdWJzY3JpYmUoKTtcbiAgfVxufVxuIl19
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, HostBinding, InjectionToken, Injectable, ElementRef, Inject, Optional, isDevMode, 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,
|
|
4
|
+
import { fromEvent, Observable, Subject, combineLatest, startWith, map, takeUntil, distinctUntilChanged, BehaviorSubject, filter, pairwise, debounceTime, shareReplay, tap, merge, skip, switchMap, take } from 'rxjs';
|
|
5
5
|
import { coerceElement, coerceBooleanProperty, coerceNumberProperty } from '@angular/cdk/coercion';
|
|
6
6
|
import { DOCUMENT } from '@angular/common';
|
|
7
7
|
import { Router, NavigationEnd } from '@angular/router';
|
|
@@ -364,6 +364,30 @@ const fromNextFrame = () => {
|
|
|
364
364
|
const forceReflow = (element = document.body) => {
|
|
365
365
|
return element.offsetHeight;
|
|
366
366
|
};
|
|
367
|
+
const createFlipAnimationGroup = (config) => {
|
|
368
|
+
const { elements, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;
|
|
369
|
+
const flips = elements.map((el) => createFlipAnimation({ element: el, duration, easing }));
|
|
370
|
+
const onStart$ = combineLatest(flips.map((animation) => animation.onStart$));
|
|
371
|
+
const onFinish$ = combineLatest(flips.map((animation) => animation.onFinish$));
|
|
372
|
+
const onCancel$ = combineLatest(flips.map((animation) => animation.onCancel$));
|
|
373
|
+
const updateInit = () => {
|
|
374
|
+
flips.forEach((animation) => animation.updateInit());
|
|
375
|
+
};
|
|
376
|
+
const play = () => {
|
|
377
|
+
flips.forEach((animation) => animation.play());
|
|
378
|
+
};
|
|
379
|
+
const cancel = () => {
|
|
380
|
+
flips.forEach((animation) => animation.cancel());
|
|
381
|
+
};
|
|
382
|
+
return {
|
|
383
|
+
updateInit,
|
|
384
|
+
play,
|
|
385
|
+
cancel,
|
|
386
|
+
onStart$,
|
|
387
|
+
onFinish$,
|
|
388
|
+
onCancel$,
|
|
389
|
+
};
|
|
390
|
+
};
|
|
367
391
|
const createFlipAnimation = (config) => {
|
|
368
392
|
const { element: el, duration = 250, easing = 'cubic-bezier(0.4, 0, 0.2, 1)' } = config;
|
|
369
393
|
let initialRect = el.getBoundingClientRect();
|
|
@@ -806,6 +830,29 @@ const createReactiveBindings = (...values) => {
|
|
|
806
830
|
};
|
|
807
831
|
};
|
|
808
832
|
|
|
833
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
834
|
+
class BehaviorSubjectWithSubscriberCount extends BehaviorSubject {
|
|
835
|
+
constructor() {
|
|
836
|
+
super(...arguments);
|
|
837
|
+
this._subscriberCount = 0;
|
|
838
|
+
}
|
|
839
|
+
get subscriberCount() {
|
|
840
|
+
return this._subscriberCount;
|
|
841
|
+
}
|
|
842
|
+
subscribe(observerOrNext) {
|
|
843
|
+
this._subscriberCount++;
|
|
844
|
+
const sub = super.subscribe(observerOrNext);
|
|
845
|
+
return Object.assign(Object.assign({}, sub), { unsubscribe: () => {
|
|
846
|
+
sub.unsubscribe();
|
|
847
|
+
this._subscriberCount--;
|
|
848
|
+
} });
|
|
849
|
+
}
|
|
850
|
+
unsubscribe() {
|
|
851
|
+
this._subscriberCount--;
|
|
852
|
+
return super.unsubscribe();
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
|
|
809
856
|
const elementCanScroll = (element) => {
|
|
810
857
|
const { scrollHeight, clientHeight, scrollWidth, clientWidth } = element;
|
|
811
858
|
return scrollHeight > clientHeight || scrollWidth > clientWidth;
|
|
@@ -2523,5 +2570,5 @@ const Validators = {
|
|
|
2523
2570
|
* Generated bundle index. Do not edit.
|
|
2524
2571
|
*/
|
|
2525
2572
|
|
|
2526
|
-
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, createFlipAnimation, createMediaQueryObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, forceReflow, fromNextFrame, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isGroupMatch, isKnockoutMatch, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, routerDisableScrollTop, setCookie, toArray, toArrayTrackByFn };
|
|
2573
|
+
export { ANIMATABLE_TOKEN, ANIMATED_LIFECYCLE_TOKEN, AnimatableDirective, AnimatedLifecycleDirective, BehaviorSubjectWithSubscriberCount, 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, createFlipAnimation, createFlipAnimationGroup, createMediaQueryObservable, createReactiveBindings, deleteCookie, elementCanScroll, equal, forceReflow, fromNextFrame, getCookie, getDomain, getGroupMatchPoints, getGroupMatchScore, getKnockoutMatchScore, getMatchScoreSubLine, hasCookie, isGroupMatch, isKnockoutMatch, mergeSeoConfig, nextFrame, normalizeGameResultType, normalizeMatchParticipant, normalizeMatchParticipants, normalizeMatchScore, normalizeMatchState, normalizeMatchType, provideViewportConfig, routerDisableScrollTop, setCookie, toArray, toArrayTrackByFn };
|
|
2527
2574
|
//# sourceMappingURL=ethlete-core.mjs.map
|