@ethlete/core 1.2.0 → 1.3.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.
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW5pbWF0aW9uLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb3JlL3NyYy9saWIvdXRpbHMvYW5pbWF0aW9uLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxDQUFDLEVBQWMsRUFBRSxFQUFFO0lBQzFDLHFCQUFxQixDQUFDLEdBQUcsRUFBRTtRQUN6QixxQkFBcUIsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxHQUFHLEVBQUU7SUFDaEMsT0FBTyxJQUFJLFVBQVUsQ0FBTyxDQUFDLFFBQVEsRUFBRSxFQUFFO1FBQ3ZDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDaEIsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxVQUF1QixRQUFRLENBQUMsSUFBSSxFQUFFLEVBQUU7SUFDbEUsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQzlCLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsTUFBb0UsRUFBRSxFQUFFO0lBQzFHLE1BQU0sRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLDhCQUE4QixFQUFFLEdBQUcsTUFBTSxDQUFDO0lBRXhGLElBQUksV0FBVyxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO0lBQzdDLElBQUksU0FBUyxHQUFxQixJQUFJLENBQUM7SUFFdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNyQyxNQUFNLFNBQVMsR0FBRyxJQUFJLE9BQU8sRUFBUSxDQUFDO0lBQ3RDLE1BQU0sU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFdEMsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEVBQUU7UUFDN0IsT0FBTyxFQUFFLENBQUM7UUFDVixTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUYsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLEVBQUU7UUFDN0IsT0FBTyxFQUFFLENBQUM7UUFDVixTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDbkIsQ0FBQyxDQUFDO0lBRUYsTUFBTSxPQUFPLEdBQUcsR0FBRyxFQUFFO1FBQ25CLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDZCxPQUFPO1NBQ1I7UUFFRCxTQUFTLENBQUMsbUJBQW1CLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDM0QsU0FBUyxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQzdELENBQUMsQ0FBQztJQUVGLE1BQU0sVUFBVSxHQUFHLEdBQUcsRUFBRTtRQUN0QixXQUFXLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDM0MsQ0FBQyxDQUFDO0lBRUYsTUFBTSxJQUFJLEdBQUcsR0FBRyxFQUFFO1FBQ2hCLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBRTVDLE1BQU0sS0FBSyxHQUFHO1lBQ1osQ0FBQyxFQUFFLFdBQVcsQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLElBQUk7WUFDbkMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxHQUFHLEdBQUcsUUFBUSxDQUFDLEdBQUc7WUFDakMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEtBQUs7WUFDMUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU07U0FDN0MsQ0FBQztRQUVGLFNBQVMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUNwQjtZQUNFO2dCQUNFLGVBQWUsRUFBRSxVQUFVO2dCQUMzQixTQUFTLEVBQUU7c0JBQ0MsS0FBSyxDQUFDLENBQUMsT0FBTyxLQUFLLENBQUMsQ0FBQztrQkFDekIsS0FBSyxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtTQUN0QzthQUNBO1lBQ0Q7Z0JBQ0UsZUFBZSxFQUFFLFVBQVU7Z0JBQzNCLFNBQVMsRUFBRSxNQUFNO2FBQ2xCO1NBQ0YsRUFDRDtZQUNFLFFBQVE7WUFDUixNQUFNO1lBQ04sSUFBSSxFQUFFLE1BQU07U0FDYixDQUNGLENBQUM7UUFFRixTQUFTLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFDeEQsU0FBUyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXhELFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNsQixDQUFDLENBQUM7SUFFRixNQUFNLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDbEIsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO1FBRXBCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQyxDQUFDO0lBRUYsT0FBTztRQUNMLFVBQVU7UUFDVixJQUFJO1FBQ0osTUFBTTtRQUNOLFFBQVEsRUFBRSxRQUFRLENBQUMsWUFBWSxFQUFFO1FBQ2pDLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFO1FBQ25DLFNBQVMsRUFBRSxTQUFTLENBQUMsWUFBWSxFQUFFO0tBQ3BDLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBuZXh0RnJhbWUgPSAoY2I6ICgpID0+IHZvaWQpID0+IHtcbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoY2IpO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBmcm9tTmV4dEZyYW1lID0gKCkgPT4ge1xuICByZXR1cm4gbmV3IE9ic2VydmFibGU8dm9pZD4oKG9ic2VydmVyKSA9PiB7XG4gICAgbmV4dEZyYW1lKCgpID0+IHtcbiAgICAgIG9ic2VydmVyLm5leHQoKTtcbiAgICAgIG9ic2VydmVyLmNvbXBsZXRlKCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcmNlUmVmbG93ID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50ID0gZG9jdW1lbnQuYm9keSkgPT4ge1xuICByZXR1cm4gZWxlbWVudC5vZmZzZXRIZWlnaHQ7XG59O1xuXG5leHBvcnQgY29uc3QgY3JlYXRlRmxpcEFuaW1hdGlvbiA9IChjb25maWc6IHsgZWxlbWVudDogSFRNTEVsZW1lbnQ7IGR1cmF0aW9uPzogbnVtYmVyOyBlYXNpbmc/OiBzdHJpbmcgfSkgPT4ge1xuICBjb25zdCB7IGVsZW1lbnQ6IGVsLCBkdXJhdGlvbiA9IDI1MCwgZWFzaW5nID0gJ2N1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSknIH0gPSBjb25maWc7XG5cbiAgbGV0IGluaXRpYWxSZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIGxldCBhbmltYXRpb246IEFuaW1hdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIGNvbnN0IG9uU3RhcnQkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29uc3Qgb25GaW5pc2gkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgY29uc3Qgb25DYW5jZWwkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBjb25zdCBvbkFuaW1hdGlvbkZpbmlzaCA9ICgpID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgb25GaW5pc2gkLm5leHQoKTtcbiAgfTtcblxuICBjb25zdCBvbkFuaW1hdGlvbkNhbmNlbCA9ICgpID0+IHtcbiAgICBjbGVhbnVwKCk7XG4gICAgb25DYW5jZWwkLm5leHQoKTtcbiAgfTtcblxuICBjb25zdCBjbGVhbnVwID0gKCkgPT4ge1xuICAgIGlmICghYW5pbWF0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYW5pbWF0aW9uLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZpbmlzaCcsIG9uQW5pbWF0aW9uRmluaXNoKTtcbiAgICBhbmltYXRpb24ucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2FuY2VsJywgb25BbmltYXRpb25DYW5jZWwpO1xuICB9O1xuXG4gIGNvbnN0IHVwZGF0ZUluaXQgPSAoKSA9PiB7XG4gICAgaW5pdGlhbFJlY3QgPSBlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgfTtcblxuICBjb25zdCBwbGF5ID0gKCkgPT4ge1xuICAgIGNvbnN0IGxhc3RSZWN0ID0gZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICBjb25zdCBkZWx0YSA9IHtcbiAgICAgIHg6IGluaXRpYWxSZWN0LmxlZnQgLSBsYXN0UmVjdC5sZWZ0LFxuICAgICAgeTogaW5pdGlhbFJlY3QudG9wIC0gbGFzdFJlY3QudG9wLFxuICAgICAgc2NhbGVYOiBpbml0aWFsUmVjdC53aWR0aCAvIGxhc3RSZWN0LndpZHRoLFxuICAgICAgc2NhbGVZOiBpbml0aWFsUmVjdC5oZWlnaHQgLyBsYXN0UmVjdC5oZWlnaHQsXG4gICAgfTtcblxuICAgIGFuaW1hdGlvbiA9IGVsLmFuaW1hdGUoXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW46ICd0b3AgbGVmdCcsXG4gICAgICAgICAgdHJhbnNmb3JtOiBgXG4gICAgICAgICAgdHJhbnNsYXRlKCR7ZGVsdGEueH1weCwgJHtkZWx0YS55fXB4KVxuICAgICAgICAgIHNjYWxlKCR7ZGVsdGEuc2NhbGVYfSwgJHtkZWx0YS5zY2FsZVl9KVxuICAgICAgICBgLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiAndG9wIGxlZnQnLFxuICAgICAgICAgIHRyYW5zZm9ybTogJ25vbmUnLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICAgIHtcbiAgICAgICAgZHVyYXRpb24sXG4gICAgICAgIGVhc2luZyxcbiAgICAgICAgZmlsbDogJ2JvdGgnLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgYW5pbWF0aW9uLmFkZEV2ZW50TGlzdGVuZXIoJ2ZpbmlzaCcsIG9uQW5pbWF0aW9uRmluaXNoKTtcbiAgICBhbmltYXRpb24uYWRkRXZlbnRMaXN0ZW5lcignY2FuY2VsJywgb25BbmltYXRpb25DYW5jZWwpO1xuXG4gICAgb25TdGFydCQubmV4dCgpO1xuICB9O1xuXG4gIGNvbnN0IGNhbmNlbCA9ICgpID0+IHtcbiAgICBhbmltYXRpb24/LmNhbmNlbCgpO1xuXG4gICAgY2xlYW51cCgpO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdXBkYXRlSW5pdCxcbiAgICBwbGF5LFxuICAgIGNhbmNlbCxcbiAgICBvblN0YXJ0JDogb25TdGFydCQuYXNPYnNlcnZhYmxlKCksXG4gICAgb25GaW5pc2gkOiBvbkZpbmlzaCQuYXNPYnNlcnZhYmxlKCksXG4gICAgb25DYW5jZWwkOiBvbkNhbmNlbCQuYXNPYnNlcnZhYmxlKCksXG4gIH07XG59O1xuIl19
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
@@ -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, combineLatest, pairwise, debounceTime, shareReplay, tap, merge, skip, switchMap, take } from 'rxjs';
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();
@@ -2523,5 +2547,5 @@ const Validators = {
2523
2547
  * Generated bundle index. Do not edit.
2524
2548
  */
2525
2549
 
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 };
2550
+ 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, 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
2551
  //# sourceMappingURL=ethlete-core.mjs.map