@cuemath/leap 2.8.25-link.0 → 2.8.25-link.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/lotties/circle/100pts.json.js +7957 -0
- package/dist/assets/lotties/circle/100pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/10pts.json.js +7753 -0
- package/dist/assets/lotties/circle/10pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/15pts.json.js +7879 -0
- package/dist/assets/lotties/circle/15pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/1pts.json.js +7257 -0
- package/dist/assets/lotties/circle/1pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/20pts.json.js +7845 -0
- package/dist/assets/lotties/circle/20pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/25pts.json.js +7971 -0
- package/dist/assets/lotties/circle/25pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/30pts.json.js +7941 -0
- package/dist/assets/lotties/circle/30pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/35pts.json.js +7881 -0
- package/dist/assets/lotties/circle/35pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/40pts.json.js +7725 -0
- package/dist/assets/lotties/circle/40pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/45pts.json.js +7851 -0
- package/dist/assets/lotties/circle/45pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/50pts.json.js +7707 -0
- package/dist/assets/lotties/circle/50pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/5pts.json.js +7420 -0
- package/dist/assets/lotties/circle/5pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/60pts.json.js +7701 -0
- package/dist/assets/lotties/circle/60pts.json.js.map +1 -0
- package/dist/assets/lotties/circle/accuracy-meter-lottie.json.js +6811 -0
- package/dist/assets/lotties/circle/accuracy-meter-lottie.json.js.map +1 -0
- package/dist/assets/lotties/circle/accuracy-needle-lottie.json.js +1503 -0
- package/dist/assets/lotties/circle/accuracy-needle-lottie.json.js.map +1 -0
- package/dist/assets/lotties/circle/circular-loader.json.js +635 -0
- package/dist/assets/lotties/circle/circular-loader.json.js.map +1 -0
- package/dist/assets/lotties/circle/elite-circle-lottie.json.js +12079 -0
- package/dist/assets/lotties/circle/elite-circle-lottie.json.js.map +1 -0
- package/dist/assets/lotties/circle/levelup-rings-lottie.json.js +1412 -0
- package/dist/assets/lotties/circle/levelup-rings-lottie.json.js.map +1 -0
- package/dist/assets/lotties/circle/sleepy-boi-lottie.json.js +2632 -0
- package/dist/assets/lotties/circle/sleepy-boi-lottie.json.js.map +1 -0
- package/dist/assets/lotties/circle/spinner-white.json.js +316 -0
- package/dist/assets/lotties/circle/spinner-white.json.js.map +1 -0
- package/dist/assets/lotties/circle/splash-screen.json.js +5864 -0
- package/dist/assets/lotties/circle/splash-screen.json.js.map +1 -0
- package/dist/assets/lotties/circle/total-streak-lottie.json.js +2103 -0
- package/dist/assets/lotties/circle/total-streak-lottie.json.js.map +1 -0
- package/dist/assets/lotties/circle/total-time-lottie.json.js +33016 -0
- package/dist/assets/lotties/circle/total-time-lottie.json.js.map +1 -0
- package/dist/assets/lotties/circle/total-time-spent-lottie.json.js +260 -0
- package/dist/assets/lotties/circle/total-time-spent-lottie.json.js.map +1 -0
- package/dist/assets/lotties/circle/tournament-ripple-lottie.json.js +1563 -0
- package/dist/assets/lotties/circle/tournament-ripple-lottie.json.js.map +1 -0
- package/dist/assets/lotties/common/nudge-tap.json.js +3597 -0
- package/dist/assets/lotties/common/nudge-tap.json.js.map +1 -0
- package/dist/assets/lotties/error-lottie.json.js +12755 -0
- package/dist/assets/lotties/error-lottie.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/bronze-1.json.js +10871 -0
- package/dist/assets/lotties/perfect-hits/bronze-1.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/bronze-2.json.js +11389 -0
- package/dist/assets/lotties/perfect-hits/bronze-2.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/bronze-3.json.js +12169 -0
- package/dist/assets/lotties/perfect-hits/bronze-3.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/color-1.json.js +12348 -0
- package/dist/assets/lotties/perfect-hits/color-1.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/color-2.json.js +12941 -0
- package/dist/assets/lotties/perfect-hits/color-2.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/color-3.json.js +14034 -0
- package/dist/assets/lotties/perfect-hits/color-3.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/gold-1.json.js +10871 -0
- package/dist/assets/lotties/perfect-hits/gold-1.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/gold-2.json.js +11389 -0
- package/dist/assets/lotties/perfect-hits/gold-2.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/gold-3.json.js +12169 -0
- package/dist/assets/lotties/perfect-hits/gold-3.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/silver-1.json.js +10871 -0
- package/dist/assets/lotties/perfect-hits/silver-1.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/silver-2.json.js +11389 -0
- package/dist/assets/lotties/perfect-hits/silver-2.json.js.map +1 -0
- package/dist/assets/lotties/perfect-hits/silver-3.json.js +12169 -0
- package/dist/assets/lotties/perfect-hits/silver-3.json.js.map +1 -0
- package/dist/assets/lotties/teacher-validation.json.js +649 -0
- package/dist/assets/lotties/teacher-validation.json.js.map +1 -0
- package/dist/assets/lotties/tests-creation/clock_30_min.json.js +2857 -0
- package/dist/assets/lotties/tests-creation/clock_30_min.json.js.map +1 -0
- package/dist/assets/lotties/tests-creation/clock_45_min.json.js +2857 -0
- package/dist/assets/lotties/tests-creation/clock_45_min.json.js.map +1 -0
- package/dist/assets/lotties/tests-creation/clock_60_min.json.js +2857 -0
- package/dist/assets/lotties/tests-creation/clock_60_min.json.js.map +1 -0
- package/dist/assets/lotties/tests-creation/clock_90_min.json.js +3345 -0
- package/dist/assets/lotties/tests-creation/clock_90_min.json.js.map +1 -0
- package/dist/assets/lotties/tests-creation/difficult.json.js +6713 -0
- package/dist/assets/lotties/tests-creation/difficult.json.js.map +1 -0
- package/dist/assets/lotties/tests-creation/easy.json.js +6525 -0
- package/dist/assets/lotties/tests-creation/easy.json.js.map +1 -0
- package/dist/assets/lotties/tests-creation/medium.json.js +5603 -0
- package/dist/assets/lotties/tests-creation/medium.json.js.map +1 -0
- package/dist/assets/lotties/trial-v3/15min-clock.json.js +2037 -0
- package/dist/assets/lotties/trial-v3/15min-clock.json.js.map +1 -0
- package/dist/assets/lotties/trial-v3/5min-clock.json.js +2062 -0
- package/dist/assets/lotties/trial-v3/5min-clock.json.js.map +1 -0
- package/dist/assets/lotties/trial-v3/insight/beginner1x.json.js +8517 -0
- package/dist/assets/lotties/trial-v3/insight/beginner1x.json.js.map +1 -0
- package/dist/assets/lotties/trial-v3/insight/familiar1x.json.js +7396 -0
- package/dist/assets/lotties/trial-v3/insight/familiar1x.json.js.map +1 -0
- package/dist/assets/lotties/trial-v3/insight/proficient1x.json.js +8559 -0
- package/dist/assets/lotties/trial-v3/insight/proficient1x.json.js.map +1 -0
- package/dist/assets/lotties/trial-v3/parent-app/easy-rescheduling-lottie.json.js +23284 -0
- package/dist/assets/lotties/trial-v3/parent-app/easy-rescheduling-lottie.json.js.map +1 -0
- package/dist/assets/lotties/trial-v3/parent-app/stay-connected-lottie.json.js +9090 -0
- package/dist/assets/lotties/trial-v3/parent-app/stay-connected-lottie.json.js.map +1 -0
- package/dist/assets/lotties/trial-v3/parent-app/track-progress-lottie.json.js +8675 -0
- package/dist/assets/lotties/trial-v3/parent-app/track-progress-lottie.json.js.map +1 -0
- package/dist/features/circle-games/game-launcher/comps/segmented-game-card/fetch-lottie.js +13 -0
- package/dist/features/circle-games/game-launcher/comps/segmented-game-card/fetch-lottie.js.map +1 -0
- package/dist/features/circle-games/game-launcher/comps/segmented-game-card/segmented-game-card.js +79 -81
- package/dist/features/circle-games/game-launcher/comps/segmented-game-card/segmented-game-card.js.map +1 -1
- package/dist/features/circle-games/game-launcher/game-launcher-styled.js +10 -0
- package/dist/features/circle-games/game-launcher/game-launcher-styled.js.map +1 -0
- package/dist/features/circle-games/game-launcher/game-launcher.js +65 -61
- package/dist/features/circle-games/game-launcher/game-launcher.js.map +1 -1
- package/dist/features/circle-games/leaderboard/comps/banner/banner.js +53 -35
- package/dist/features/circle-games/leaderboard/comps/banner/banner.js.map +1 -1
- package/dist/features/circle-games/leaderboard/leaderboard.js +55 -56
- package/dist/features/circle-games/leaderboard/leaderboard.js.map +1 -1
- package/dist/features/circle-games/sign-up/comp/circular-steps/circular-steps.js +41 -40
- package/dist/features/circle-games/sign-up/comp/circular-steps/circular-steps.js.map +1 -1
- package/dist/features/circle-games/sign-up/comp/spinner/spinner-styled.js +8 -4
- package/dist/features/circle-games/sign-up/comp/spinner/spinner-styled.js.map +1 -1
- package/dist/features/circle-games/sign-up/comp/spinner/spinner.js +23 -6
- package/dist/features/circle-games/sign-up/comp/spinner/spinner.js.map +1 -1
- package/dist/features/circle-games/sign-up/comp/splash-screen/splash-screen.js +35 -40
- package/dist/features/circle-games/sign-up/comp/splash-screen/splash-screen.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js +2 -2
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/test-radio-card/test-card-lottie-animation.js +23 -8
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/test-radio-card/test-card-lottie-animation.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/test-radio-card/test-radio-card.js +11 -11
- package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/test-radio-card/test-radio-card.js.map +1 -1
- package/dist/features/milestone/milestone-tests/tests-creation/utils/index.js +43 -37
- package/dist/features/milestone/milestone-tests/tests-creation/utils/index.js.map +1 -1
- package/dist/features/post-game-stats/accuracy/accuracy.js +34 -38
- package/dist/features/post-game-stats/accuracy/accuracy.js.map +1 -1
- package/dist/features/post-game-stats/clock/clock.js +39 -43
- package/dist/features/post-game-stats/clock/clock.js.map +1 -1
- package/dist/features/post-game-stats/points/points-styled.js +10 -0
- package/dist/features/post-game-stats/points/points-styled.js.map +1 -0
- package/dist/features/post-game-stats/points/points.js +44 -43
- package/dist/features/post-game-stats/points/points.js.map +1 -1
- package/dist/features/post-game-stats/streak/streak.js +28 -30
- package/dist/features/post-game-stats/streak/streak.js.map +1 -1
- package/dist/features/trial-session/comps/av-panels/teacher-av-panel/teacher-av-panel.js +54 -56
- package/dist/features/trial-session/comps/av-panels/teacher-av-panel/teacher-av-panel.js.map +1 -1
- package/dist/features/trial-session/comps/parent-app/parent-app.js +20 -25
- package/dist/features/trial-session/comps/parent-app/parent-app.js.map +1 -1
- package/dist/features/trial-session/comps/render-lottie/index.js +26 -0
- package/dist/features/trial-session/comps/render-lottie/index.js.map +1 -0
- package/dist/features/trial-session/comps/session-insights/session-insights.js +39 -40
- package/dist/features/trial-session/comps/session-insights/session-insights.js.map +1 -1
- package/dist/features/trial-session/trial-session-view.js +85 -75
- package/dist/features/trial-session/trial-session-view.js.map +1 -1
- package/dist/features/ui/loader/circular-loader/circular-loader-styled.js +17 -0
- package/dist/features/ui/loader/circular-loader/circular-loader-styled.js.map +1 -0
- package/dist/features/ui/loader/circular-loader/circular-loader.js +20 -16
- package/dist/features/ui/loader/circular-loader/circular-loader.js.map +1 -1
- package/dist/features/ui/nudge/nudge-styled.js +8 -4
- package/dist/features/ui/nudge/nudge-styled.js.map +1 -1
- package/dist/features/ui/nudge/nudge.js +30 -13
- package/dist/features/ui/nudge/nudge.js.map +1 -1
- package/dist/features/ui/perfect-hits/perfect-hits-helpers.js +20 -22
- package/dist/features/ui/perfect-hits/perfect-hits-helpers.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-permissions/error.js +48 -25
- package/dist/features/worksheet/worksheet/worksheet-permissions/error.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/header/validated-animation.js +26 -12
- package/dist/features/worksheet/worksheet/worksheet-question/header/validated-animation.js.map +1 -1
- package/dist/index.d.ts +0 -58
- package/dist/index.js +464 -466
- package/dist/index.js.map +1 -1
- package/package.json +2 -3
- package/dist/assets/lottie/lottie.js +0 -61
- package/dist/assets/lottie/lottie.js.map +0 -1
- package/dist/features/ui/lottie-animation/helper.js +0 -13
- package/dist/features/ui/lottie-animation/helper.js.map +0 -1
- package/dist/features/ui/lottie-animation/lottie-animation.js +0 -37
- package/dist/features/ui/lottie-animation/lottie-animation.js.map +0 -1
- package/dist/static/accuracy-meter.99585cba.json +0 -4218
- package/dist/static/accuracy-needle.cd6e63ac.json +0 -618
- package/dist/static/beginner1x.489908a7.json +0 -3508
- package/dist/static/bronze-1.da4e4b5f.json +0 -4176
- package/dist/static/bronze-2.97f9c639.json +0 -4433
- package/dist/static/bronze-3.6a433ebd.json +0 -4786
- package/dist/static/circular-loader.a5a1a0a6.json +0 -238
- package/dist/static/clock-30min.eae818b8.json +0 -1197
- package/dist/static/clock-45min.df8adf51.json +0 -1197
- package/dist/static/clock-60min.2b48d875.json +0 -1197
- package/dist/static/clock-90min.3e557ed7.json +0 -1407
- package/dist/static/color-1.45101b9a.json +0 -4545
- package/dist/static/color-2.ccdc7d0a.json +0 -4828
- package/dist/static/color-3.5e8e1422.json +0 -5273
- package/dist/static/difficult.6846c064.json +0 -2755
- package/dist/static/easy-rescheduling-lottie.28026af9.json +0 -9301
- package/dist/static/easy.68242ddd.json +0 -2658
- package/dist/static/elite-circle.3df58972.json +0 -6876
- package/dist/static/error-lottie.b3507a4b.json +0 -5255
- package/dist/static/familiar1x.7c9c7f15.json +0 -3046
- package/dist/static/fifteen-min-clock.0af4e303.json +0 -715
- package/dist/static/five-min-clock.6be5cc41.json +0 -721
- package/dist/static/gold-1.ab2489fe.json +0 -4176
- package/dist/static/gold-2.34045826.json +0 -4441
- package/dist/static/gold-3.d704698b.json +0 -4810
- package/dist/static/levelup-rings.b1055283.json +0 -549
- package/dist/static/medium.94c3829b.json +0 -2289
- package/dist/static/nudge-tap.5cb30093.json +0 -1057
- package/dist/static/point1.b53831de.json +0 -2942
- package/dist/static/point10.7b5e536d.json +0 -3179
- package/dist/static/point100.1df16f82.json +0 -3196
- package/dist/static/point15.fea00c32.json +0 -3179
- package/dist/static/point20.c88d776d.json +0 -3178
- package/dist/static/point25.a18c346a.json +0 -3178
- package/dist/static/point30.c5224b0b.json +0 -3202
- package/dist/static/point35.fad343dd.json +0 -3058
- package/dist/static/point40.10a16f72.json +0 -3082
- package/dist/static/point45.2ad7561f.json +0 -3082
- package/dist/static/point5.da40ed1f.json +0 -2948
- package/dist/static/point50.5718cb3d.json +0 -3046
- package/dist/static/point60.17380d9f.json +0 -3076
- package/dist/static/proficient1x.fa6e7b80.json +0 -3430
- package/dist/static/silver-1.0396328a.json +0 -4168
- package/dist/static/silver-2.bf50615f.json +0 -4433
- package/dist/static/silver-3.13d66b84.json +0 -4810
- package/dist/static/sleepy-boi.031a1165.json +0 -1008
- package/dist/static/spinner-white.639e0d87.json +0 -122
- package/dist/static/splash-screen.bbf567ce.json +0 -2411
- package/dist/static/stay-connected-lottie.111439b3.json +0 -3547
- package/dist/static/teacher-validation.7577ecdc.json +0 -245
- package/dist/static/total-streak.d5ce7669.json +0 -842
- package/dist/static/total-time-spent.434005d3.json +0 -200
- package/dist/static/total-time.d979cbb9.json +0 -24383
- package/dist/static/tournament-ripple.e5c239a5.json +0 -1047
- package/dist/static/track-progress-lottie.422108cf.json +0 -2972
@@ -1,40 +1,58 @@
|
|
1
|
-
import { jsxs as
|
2
|
-
import
|
3
|
-
import h from "
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import { BannerContainer as
|
7
|
-
const
|
1
|
+
import { jsxs as t, jsx as e } from "react/jsx-runtime";
|
2
|
+
import p from "lottie-web";
|
3
|
+
import { memo as h, useRef as x, useEffect as A } from "react";
|
4
|
+
import T from "../../../../ui/separator/separator.js";
|
5
|
+
import i from "../../../../ui/text/text.js";
|
6
|
+
import { BannerContainer as C, CircleLottieView as $, BannerTextContainer as y, CountTextWrapper as B } from "./banner-styled.js";
|
7
|
+
const _ = h(
|
8
8
|
({
|
9
|
-
primaryText:
|
10
|
-
secondaryText:
|
11
|
-
topInset:
|
12
|
-
isLoading:
|
13
|
-
|
14
|
-
bgFromTopPosition:
|
15
|
-
bgFromRightPosition:
|
16
|
-
custEle:
|
17
|
-
}) =>
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
]
|
35
|
-
|
9
|
+
primaryText: l,
|
10
|
+
secondaryText: c,
|
11
|
+
topInset: n = 0,
|
12
|
+
isLoading: m = !1,
|
13
|
+
lottiePromise: a,
|
14
|
+
bgFromTopPosition: d = 0,
|
15
|
+
bgFromRightPosition: u = 0,
|
16
|
+
custEle: f
|
17
|
+
}) => {
|
18
|
+
const o = x(null);
|
19
|
+
return A(() => {
|
20
|
+
let r = null;
|
21
|
+
return (async () => {
|
22
|
+
const s = (await a()).default;
|
23
|
+
o.current && (r = p.loadAnimation({
|
24
|
+
container: o.current,
|
25
|
+
// Ref to the div
|
26
|
+
renderer: "canvas",
|
27
|
+
loop: !0,
|
28
|
+
autoplay: !0,
|
29
|
+
animationData: s
|
30
|
+
}));
|
31
|
+
})(), () => {
|
32
|
+
r == null || r.destroy();
|
33
|
+
};
|
34
|
+
}, [a]), /* @__PURE__ */ t(C, { topInset: n, children: [
|
35
|
+
/* @__PURE__ */ e(
|
36
|
+
$,
|
37
|
+
{
|
38
|
+
ref: o,
|
39
|
+
topInset: n,
|
40
|
+
bgFromTopPosition: d,
|
41
|
+
bgFromRightPosition: u
|
42
|
+
}
|
43
|
+
),
|
44
|
+
/* @__PURE__ */ t(y, { children: [
|
45
|
+
/* @__PURE__ */ t(B, { topInset: n, children: [
|
46
|
+
/* @__PURE__ */ e(i, { $renderAs: "ac4", $color: "WHITE", children: l }),
|
47
|
+
/* @__PURE__ */ e(T, { height: 4 }),
|
48
|
+
/* @__PURE__ */ e(i, { $renderAs: "ah4", $color: "WHITE", children: m ? "__" : c })
|
49
|
+
] }),
|
50
|
+
f
|
51
|
+
] })
|
52
|
+
] });
|
53
|
+
}
|
36
54
|
);
|
37
55
|
export {
|
38
|
-
|
56
|
+
_ as Banner
|
39
57
|
};
|
40
58
|
//# sourceMappingURL=banner.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"banner.js","sources":["../../../../../../src/features/circle-games/leaderboard/comps/banner/banner.tsx"],"sourcesContent":["import type { IBannerProps } from './banner-types';\nimport type {
|
1
|
+
{"version":3,"file":"banner.js","sources":["../../../../../../src/features/circle-games/leaderboard/comps/banner/banner.tsx"],"sourcesContent":["import type { IBannerProps } from './banner-types';\nimport type { AnimationItem } from 'lottie-web';\nimport type { FC } from 'react';\n\nimport Lottie from 'lottie-web';\nimport { memo, useEffect, useRef } from 'react';\n\nimport Separator from '../../../../ui/separator/separator';\nimport Text from '../../../../ui/text/text';\nimport * as Styled from './banner-styled';\n\nexport const Banner: FC<IBannerProps> = memo(\n ({\n primaryText,\n secondaryText,\n topInset = 0,\n isLoading = false,\n lottiePromise,\n bgFromTopPosition = 0,\n bgFromRightPosition = 0,\n custEle,\n }) => {\n const lottieAnimationRef = useRef<HTMLDivElement>(null);\n\n // Initialize Lottie animation\n useEffect(() => {\n let animation: AnimationItem | null = null;\n\n const loadAnimation = async () => {\n const animationModule = await lottiePromise();\n const animationData = animationModule.default;\n\n if (lottieAnimationRef.current) {\n animation = Lottie.loadAnimation({\n container: lottieAnimationRef.current, // Ref to the div\n renderer: 'canvas',\n loop: true,\n autoplay: true,\n animationData: animationData,\n });\n }\n };\n\n loadAnimation();\n\n return () => {\n animation?.destroy();\n };\n }, [lottiePromise]);\n\n return (\n <Styled.BannerContainer topInset={topInset}>\n {/* Render Lottie animation */}\n <Styled.CircleLottieView\n ref={lottieAnimationRef}\n topInset={topInset}\n bgFromTopPosition={bgFromTopPosition}\n bgFromRightPosition={bgFromRightPosition}\n />\n\n <Styled.BannerTextContainer>\n <Styled.CountTextWrapper topInset={topInset}>\n <Text $renderAs=\"ac4\" $color=\"WHITE\">\n {primaryText}\n </Text>\n <Separator height={4} />\n <Text $renderAs=\"ah4\" $color=\"WHITE\">\n {isLoading ? '__' : secondaryText}\n </Text>\n </Styled.CountTextWrapper>\n\n {custEle}\n </Styled.BannerTextContainer>\n </Styled.BannerContainer>\n );\n },\n);\n"],"names":["Banner","memo","primaryText","secondaryText","topInset","isLoading","lottiePromise","bgFromTopPosition","bgFromRightPosition","custEle","lottieAnimationRef","useRef","useEffect","animation","animationData","Lottie","jsxs","Styled.BannerContainer","jsx","Styled.CircleLottieView","Styled.BannerTextContainer","Styled.CountTextWrapper","Text","Separator"],"mappings":";;;;;;AAWO,MAAMA,IAA2BC;AAAA,EACtC,CAAC;AAAA,IACC,aAAAC;AAAA,IACA,eAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,WAAAC,IAAY;AAAA,IACZ,eAAAC;AAAA,IACA,mBAAAC,IAAoB;AAAA,IACpB,qBAAAC,IAAsB;AAAA,IACtB,SAAAC;AAAA,EAAA,MACI;AACE,UAAAC,IAAqBC,EAAuB,IAAI;AAGtD,WAAAC,EAAU,MAAM;AACd,UAAIC,IAAkC;AAiBxB,cAfQ,YAAY;AAEhC,cAAMC,KADkB,MAAMR,KACQ;AAEtC,QAAII,EAAmB,YACrBG,IAAYE,EAAO,cAAc;AAAA,UAC/B,WAAWL,EAAmB;AAAA;AAAA,UAC9B,UAAU;AAAA,UACV,MAAM;AAAA,UACN,UAAU;AAAA,UACV,eAAAI;AAAA,QAAA,CACD;AAAA,MACH,MAKK,MAAM;AACX,QAAAD,KAAA,QAAAA,EAAW;AAAA,MAAQ;AAAA,IACrB,GACC,CAACP,CAAa,CAAC,GAGf,gBAAAU,EAAAC,GAAA,EAAuB,UAAAb,GAEtB,UAAA;AAAA,MAAA,gBAAAc;AAAA,QAACC;AAAAA,QAAA;AAAA,UACC,KAAKT;AAAA,UACL,UAAAN;AAAA,UACA,mBAAAG;AAAA,UACA,qBAAAC;AAAA,QAAA;AAAA,MACF;AAAA,MAEA,gBAAAQ,EAACI,GAAA,EACC,UAAA;AAAA,QAAC,gBAAAJ,EAAAK,GAAA,EAAwB,UAAAjB,GACvB,UAAA;AAAA,UAAA,gBAAAc,EAACI,GAAK,EAAA,WAAU,OAAM,QAAO,SAC1B,UACHpB,GAAA;AAAA,UACA,gBAAAgB,EAACK,GAAU,EAAA,QAAQ,EAAG,CAAA;AAAA,UACtB,gBAAAL,EAACI,KAAK,WAAU,OAAM,QAAO,SAC1B,UAAAjB,IAAY,OAAOF,EACtB,CAAA;AAAA,QAAA,GACF;AAAA,QAECM;AAAA,MAAA,GACH;AAAA,IACF,EAAA,CAAA;AAAA,EAEJ;AACF;"}
|
@@ -1,21 +1,20 @@
|
|
1
|
-
import { jsx as e, jsxs as
|
2
|
-
import { useState as
|
3
|
-
import { ILLUSTRATIONS as
|
4
|
-
import {
|
5
|
-
import
|
6
|
-
import w from "
|
7
|
-
import { useCircleSounds as U } from "../hooks/use-circle-sounds/use-circle-sounds.js";
|
1
|
+
import { jsx as e, jsxs as c } from "react/jsx-runtime";
|
2
|
+
import { useState as T, useEffect as g } from "react";
|
3
|
+
import { ILLUSTRATIONS as $ } from "../../../assets/illustrations/illustrations.js";
|
4
|
+
import { CircularLoader as j } from "../../ui/loader/circular-loader/circular-loader.js";
|
5
|
+
import v from "../../ui/text/text.js";
|
6
|
+
import { useCircleSounds as w } from "../hooks/use-circle-sounds/use-circle-sounds.js";
|
8
7
|
import { Banner as d } from "./comps/banner/banner.js";
|
9
8
|
import { LeaderboardItemWithObserver as H } from "./comps/leaderboard-item/leaderboard-item.js";
|
10
|
-
import { NavigationButton as
|
11
|
-
import { Timer as
|
9
|
+
import { NavigationButton as U } from "./comps/navigation-button/navigation-button.js";
|
10
|
+
import { Timer as q } from "./comps/timer/timer.js";
|
12
11
|
import { ELeaderboardType as t } from "./enums/leaderboard-type-enum.js";
|
13
|
-
import { Leaderboard as
|
14
|
-
import { useTimer as
|
15
|
-
const
|
16
|
-
[t.ALL_TIME_STREAK]:
|
17
|
-
[t.ALL_TIME]:
|
18
|
-
[t.BI_WEEKLY]:
|
12
|
+
import { Leaderboard as z, LeaderboardContainer as G, BannerWrapper as J, TournamentBannerCustContainer as Q, TrophyWrapper as V, ItemsWrapper as X, Banner as Z, ActionButtonWrapper as D } from "./leaderboard-styled.js";
|
13
|
+
import { useTimer as ee } from "./hooks/useTimer.js";
|
14
|
+
const u = {
|
15
|
+
[t.ALL_TIME_STREAK]: () => import("../../../assets/lotties/circle/elite-circle-lottie.json.js"),
|
16
|
+
[t.ALL_TIME]: () => import("../../../assets/lotties/circle/elite-circle-lottie.json.js"),
|
17
|
+
[t.BI_WEEKLY]: () => import("../../../assets/lotties/circle/tournament-ripple-lottie.json.js")
|
19
18
|
}, i = [
|
20
19
|
{
|
21
20
|
name: "TOURNAMENT",
|
@@ -29,38 +28,38 @@ const L = {
|
|
29
28
|
name: "ALL TIME",
|
30
29
|
type: t.ALL_TIME
|
31
30
|
}
|
32
|
-
],
|
31
|
+
], Ee = ({
|
33
32
|
leaderboardData: m,
|
34
|
-
type:
|
35
|
-
userId:
|
36
|
-
onClose:
|
33
|
+
type: E = t.BI_WEEKLY,
|
34
|
+
userId: C,
|
35
|
+
onClose: P,
|
37
36
|
isLoading: p
|
38
37
|
}) => {
|
39
|
-
var
|
40
|
-
const [s, l] =
|
41
|
-
i.findIndex((r) =>
|
42
|
-
), [n,
|
38
|
+
var f, y, A, S, _, x, B;
|
39
|
+
const [s, l] = T(
|
40
|
+
i.findIndex((r) => E === r.type)
|
41
|
+
), [n, W] = T(((f = m == null ? void 0 : m[E]) == null ? void 0 : f.leaderboardPlayers) || []), [L, K] = T({
|
43
42
|
current: 0,
|
44
43
|
end: 0
|
45
|
-
}), [
|
46
|
-
|
47
|
-
},
|
48
|
-
|
44
|
+
}), [M, h] = ee(0), [a, k] = T(!1), N = (y = n == null ? void 0 : n[0]) == null ? void 0 : y.points, Y = ((A = n == null ? void 0 : n[0]) == null ? void 0 : A.streakDays) || 0, { playButtonSound: I } = w(), F = () => {
|
45
|
+
I(), l((r) => r - 1 < 0 ? i.length - 1 : r - 1);
|
46
|
+
}, O = () => {
|
47
|
+
I(), l((r) => r + 1 === i.length ? 0 : r + 1);
|
49
48
|
};
|
50
|
-
return
|
49
|
+
return g(() => {
|
51
50
|
h(0);
|
52
|
-
}, [h]),
|
53
|
-
var
|
54
|
-
const r = (
|
51
|
+
}, [h]), g(() => {
|
52
|
+
var R;
|
53
|
+
const r = (R = i[s]) == null ? void 0 : R.type, o = r && (m == null ? void 0 : m[r]);
|
55
54
|
if (o) {
|
56
|
-
const
|
57
|
-
r === t.BI_WEEKLY && (
|
55
|
+
const b = o.leaderboardPlayers || [];
|
56
|
+
r === t.BI_WEEKLY && (K({
|
58
57
|
current: o.currentTimestamp,
|
59
58
|
end: o.endTimestamp
|
60
|
-
}), o.currentTimestamp > o.endTimestamp && (
|
59
|
+
}), o.currentTimestamp > o.endTimestamp && (b.splice(10), k(!0))), W([...b]);
|
61
60
|
}
|
62
|
-
}, [s, m]), /* @__PURE__ */ e(
|
63
|
-
/* @__PURE__ */
|
61
|
+
}, [s, m]), /* @__PURE__ */ e(z, { children: /* @__PURE__ */ c(G, { children: [
|
62
|
+
/* @__PURE__ */ c(J, { children: [
|
64
63
|
((S = i[s]) == null ? void 0 : S.type) === t.BI_WEEKLY && /* @__PURE__ */ e(
|
65
64
|
d,
|
66
65
|
{
|
@@ -68,23 +67,23 @@ const L = {
|
|
68
67
|
bgFromTopPosition: -120,
|
69
68
|
bgFromRightPosition: -110,
|
70
69
|
primaryText: a ? /* @__PURE__ */ e("span", { children: "New Tournament" }) : /* @__PURE__ */ e("span", { children: "Tournament" }),
|
71
|
-
secondaryText: a ? /* @__PURE__ */ e("span", { children: "Starts Soon" }) : /* @__PURE__ */
|
70
|
+
secondaryText: a ? /* @__PURE__ */ e("span", { children: "Starts Soon" }) : /* @__PURE__ */ c("span", { children: [
|
72
71
|
" ",
|
73
72
|
/* @__PURE__ */ e(
|
74
|
-
|
73
|
+
q,
|
75
74
|
{
|
76
|
-
fromTimestamp:
|
77
|
-
endTimestamp:
|
75
|
+
fromTimestamp: M + L.current,
|
76
|
+
endTimestamp: L.end
|
78
77
|
}
|
79
78
|
),
|
80
79
|
" ",
|
81
80
|
"left"
|
82
81
|
] }),
|
83
|
-
|
84
|
-
custEle: /* @__PURE__ */ e(
|
82
|
+
lottiePromise: u[t.BI_WEEKLY],
|
83
|
+
custEle: /* @__PURE__ */ e(Q, { children: /* @__PURE__ */ e(V, { children: /* @__PURE__ */ e("img", { src: $.TROPHY_CIRCLE }) }) })
|
85
84
|
}
|
86
85
|
),
|
87
|
-
((
|
86
|
+
((_ = i[s]) == null ? void 0 : _.type) === t.ALL_TIME_STREAK && /* @__PURE__ */ e(
|
88
87
|
d,
|
89
88
|
{
|
90
89
|
isLoading: p,
|
@@ -92,10 +91,10 @@ const L = {
|
|
92
91
|
bgFromRightPosition: -90,
|
93
92
|
primaryText: /* @__PURE__ */ e("span", { children: "Streak Stars" }),
|
94
93
|
secondaryText: /* @__PURE__ */ e("span", { children: "Top 50" }),
|
95
|
-
|
94
|
+
lottiePromise: u[t.ALL_TIME_STREAK]
|
96
95
|
}
|
97
96
|
),
|
98
|
-
((
|
97
|
+
((x = i[s]) == null ? void 0 : x.type) === t.ALL_TIME && /* @__PURE__ */ e(
|
99
98
|
d,
|
100
99
|
{
|
101
100
|
isLoading: p,
|
@@ -103,13 +102,13 @@ const L = {
|
|
103
102
|
bgFromRightPosition: -90,
|
104
103
|
primaryText: /* @__PURE__ */ e("span", { children: "Elite Circle" }),
|
105
104
|
secondaryText: /* @__PURE__ */ e("span", { children: "Top 50" }),
|
106
|
-
|
105
|
+
lottiePromise: u[t.ALL_TIME]
|
107
106
|
}
|
108
107
|
)
|
109
108
|
] }),
|
110
|
-
p && /* @__PURE__ */ e(
|
111
|
-
!p && n && /* @__PURE__ */
|
112
|
-
a && ((
|
109
|
+
p && /* @__PURE__ */ e(j, {}),
|
110
|
+
!p && n && /* @__PURE__ */ c(X, { topInset: 0, children: [
|
111
|
+
a && ((B = i[s]) == null ? void 0 : B.type) === t.BI_WEEKLY && /* @__PURE__ */ e(Z, { children: /* @__PURE__ */ e(v, { $renderAs: "ab3", $color: "WHITE", children: "Congratulating winners of the last tournament!" }) }),
|
113
112
|
n.map((r) => {
|
114
113
|
var o;
|
115
114
|
return /* @__PURE__ */ e(
|
@@ -118,28 +117,28 @@ const L = {
|
|
118
117
|
player: r,
|
119
118
|
rank: r.rank,
|
120
119
|
maxStreakDays: Y,
|
121
|
-
maxPoints:
|
120
|
+
maxPoints: N,
|
122
121
|
leaderboardType: (o = i[s]) == null ? void 0 : o.type,
|
123
|
-
isActive: r.userId ===
|
122
|
+
isActive: r.userId === C
|
124
123
|
},
|
125
124
|
r.rank
|
126
125
|
);
|
127
126
|
})
|
128
127
|
] }),
|
129
|
-
/* @__PURE__ */ e(
|
130
|
-
|
128
|
+
/* @__PURE__ */ e(D, { children: /* @__PURE__ */ e(
|
129
|
+
U,
|
131
130
|
{
|
132
131
|
labels: Object.values(t),
|
133
132
|
onLeftClick: F,
|
134
|
-
onRightClick:
|
133
|
+
onRightClick: O,
|
135
134
|
currIndex: s,
|
136
|
-
onClose:
|
135
|
+
onClose: P,
|
137
136
|
disableSwipe: p || n.length === 0
|
138
137
|
}
|
139
138
|
) })
|
140
139
|
] }) });
|
141
140
|
};
|
142
141
|
export {
|
143
|
-
|
142
|
+
Ee as Leaderboard
|
144
143
|
};
|
145
144
|
//# sourceMappingURL=leaderboard.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"leaderboard.js","sources":["../../../../src/features/circle-games/leaderboard/leaderboard.tsx"],"sourcesContent":["import type {\n ILeaderboardPlayerWithPoints,\n ILeaderboardPlayerWithStreak,\n} from './dal/use-get-leaderboard-dal/use-get-leaderboard-dal-types';\nimport type { ILeaderboardProps } from './leaderboard-types';\n\nimport { useState, useEffect } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport { CircularLoader } from '../../ui/loader/circular-loader/circular-loader';\nimport Text from '../../ui/text/text';\nimport { useCircleSounds } from '../hooks/use-circle-sounds/use-circle-sounds';\nimport { Banner } from './comps/banner/banner';\nimport { LeaderboardItemWithObserver } from './comps/leaderboard-item/leaderboard-item';\nimport { NavigationButton } from './comps/navigation-button/navigation-button';\nimport { Timer } from './comps/timer/timer';\nimport { ELeaderboardType } from './enums/leaderboard-type-enum';\nimport { useTimer } from './hooks';\nimport * as Styled from './leaderboard-styled';\n\nconst BANNER_LOTTIES: Record<ELeaderboardType, string> = {\n [ELeaderboardType.ALL_TIME_STREAK]: LOTTIE.ELITE_CIRCLE,\n [ELeaderboardType.ALL_TIME]: LOTTIE.ELITE_CIRCLE,\n [ELeaderboardType.BI_WEEKLY]: LOTTIE.TOURNAMENT_RIPPLE,\n};\n\nconst leaderboards = [\n {\n name: 'TOURNAMENT',\n type: ELeaderboardType.BI_WEEKLY,\n },\n {\n name: 'STREAK STARS',\n type: ELeaderboardType.ALL_TIME_STREAK,\n },\n {\n name: 'ALL TIME',\n type: ELeaderboardType.ALL_TIME,\n },\n];\n\nexport const Leaderboard = ({\n leaderboardData,\n type = ELeaderboardType.BI_WEEKLY,\n userId,\n onClose,\n isLoading,\n}: ILeaderboardProps) => {\n const [currentLeaderBoardIndex, setCurrentLeaderboardIndex] = useState(\n leaderboards.findIndex(leaderboard => type === leaderboard.type),\n );\n\n const [currLeaderboardData, setCurrLeaderboardData] = useState<\n (ILeaderboardPlayerWithPoints | ILeaderboardPlayerWithStreak)[] | []\n >(leaderboardData?.[type]?.leaderboardPlayers || []);\n\n const [currLeaderboardTimeStamps, setCurrLeaderboardTimeStamps] = useState<{\n current: number;\n end: number;\n }>({\n current: 0,\n end: 0,\n });\n\n const [time, setTimer] = useTimer(0);\n const [isTournamentEnded, setIsTournamentEnded] = useState(false);\n const maxPoints = (currLeaderboardData?.[0] as ILeaderboardPlayerWithPoints)?.points;\n const maxStreakDays = (currLeaderboardData?.[0] as ILeaderboardPlayerWithStreak)?.streakDays || 0;\n const { playButtonSound } = useCircleSounds();\n\n const handlePrevious = () => {\n playButtonSound();\n setCurrentLeaderboardIndex(prev => {\n if (prev - 1 < 0) {\n return leaderboards.length - 1;\n }\n\n return prev - 1;\n });\n };\n\n const handleNext = () => {\n playButtonSound();\n setCurrentLeaderboardIndex(prev => {\n if (prev + 1 === leaderboards.length) {\n return 0;\n }\n\n return prev + 1;\n });\n };\n\n useEffect(() => {\n setTimer(0);\n }, [setTimer]);\n\n useEffect(() => {\n const currType = leaderboards[currentLeaderBoardIndex]?.type;\n const currLeaderboard = currType && leaderboardData?.[currType];\n\n if (currLeaderboard) {\n const leaderboardList = currLeaderboard.leaderboardPlayers || [];\n\n if (currType === ELeaderboardType.BI_WEEKLY) {\n setCurrLeaderboardTimeStamps({\n current: currLeaderboard.currentTimestamp,\n end: currLeaderboard.endTimestamp,\n });\n\n if (currLeaderboard.currentTimestamp > currLeaderboard.endTimestamp) {\n leaderboardList.splice(10);\n setIsTournamentEnded(true);\n }\n }\n\n setCurrLeaderboardData([...leaderboardList]);\n }\n }, [currentLeaderBoardIndex, leaderboardData]);\n\n return (\n <Styled.Leaderboard>\n <Styled.LeaderboardContainer>\n <Styled.BannerWrapper>\n {/* tournament banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.BI_WEEKLY && (\n <Banner\n isLoading={isLoading || currLeaderboardData.length === 0}\n bgFromTopPosition={-120}\n bgFromRightPosition={-110}\n primaryText={\n isTournamentEnded ? <span>New Tournament</span> : <span>Tournament</span>\n }\n secondaryText={\n isTournamentEnded ? (\n <span>Starts Soon</span>\n ) : (\n <span>\n {' '}\n <Timer\n fromTimestamp={(time as number) + currLeaderboardTimeStamps.current}\n endTimestamp={currLeaderboardTimeStamps.end}\n />{' '}\n {'left'}\n </span>\n )\n }\n lottiePath={BANNER_LOTTIES[ELeaderboardType.BI_WEEKLY]}\n custEle={\n <Styled.TournamentBannerCustContainer>\n <Styled.TrophyWrapper>\n <img src={ILLUSTRATIONS.TROPHY_CIRCLE} />\n </Styled.TrophyWrapper>\n </Styled.TournamentBannerCustContainer>\n }\n />\n )}\n\n {/* top streak banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME_STREAK && (\n <Banner\n isLoading={isLoading}\n bgFromTopPosition={-140}\n bgFromRightPosition={-90}\n primaryText={<span>Streak Stars</span>}\n secondaryText={<span>Top 50</span>}\n lottiePath={BANNER_LOTTIES[ELeaderboardType.ALL_TIME_STREAK]}\n />\n )}\n\n {/* elite circle banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME && (\n <Banner\n isLoading={isLoading}\n bgFromTopPosition={-140}\n bgFromRightPosition={-90}\n primaryText={<span>Elite Circle</span>}\n secondaryText={<span>Top 50</span>}\n lottiePath={BANNER_LOTTIES[ELeaderboardType.ALL_TIME]}\n />\n )}\n </Styled.BannerWrapper>\n\n {isLoading && <CircularLoader />}\n\n {!isLoading && currLeaderboardData && (\n <Styled.ItemsWrapper topInset={0}>\n {isTournamentEnded &&\n leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.BI_WEEKLY && (\n <Styled.Banner>\n <Text $renderAs=\"ab3\" $color=\"WHITE\">\n Congratulating winners of the last tournament!\n </Text>\n </Styled.Banner>\n )}\n {currLeaderboardData.map(player => {\n return (\n <LeaderboardItemWithObserver\n key={player.rank}\n player={player}\n rank={player.rank}\n maxStreakDays={maxStreakDays}\n maxPoints={maxPoints}\n leaderboardType={leaderboards[currentLeaderBoardIndex]?.type}\n isActive={player.userId === userId}\n />\n );\n })}\n </Styled.ItemsWrapper>\n )}\n\n <Styled.ActionButtonWrapper>\n <NavigationButton\n labels={Object.values(ELeaderboardType)}\n onLeftClick={handlePrevious}\n onRightClick={handleNext}\n currIndex={currentLeaderBoardIndex}\n onClose={onClose}\n disableSwipe={isLoading || currLeaderboardData.length === 0}\n />\n </Styled.ActionButtonWrapper>\n </Styled.LeaderboardContainer>\n </Styled.Leaderboard>\n );\n};\n"],"names":["BANNER_LOTTIES","ELeaderboardType","LOTTIE","leaderboards","Leaderboard","leaderboardData","type","userId","onClose","isLoading","currentLeaderBoardIndex","setCurrentLeaderboardIndex","useState","leaderboard","currLeaderboardData","setCurrLeaderboardData","_a","currLeaderboardTimeStamps","setCurrLeaderboardTimeStamps","time","setTimer","useTimer","isTournamentEnded","setIsTournamentEnded","maxPoints","_b","maxStreakDays","_c","playButtonSound","useCircleSounds","handlePrevious","prev","handleNext","useEffect","currType","currLeaderboard","leaderboardList","Styled.Leaderboard","jsxs","Styled.LeaderboardContainer","Styled.BannerWrapper","_d","jsx","Banner","Timer","Styled.TournamentBannerCustContainer","Styled.TrophyWrapper","ILLUSTRATIONS","_e","_f","CircularLoader","Styled.ItemsWrapper","_g","Styled.Banner","Text","player","LeaderboardItemWithObserver","Styled.ActionButtonWrapper","NavigationButton"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"leaderboard.js","sources":["../../../../src/features/circle-games/leaderboard/leaderboard.tsx"],"sourcesContent":["import type {\n ILeaderboardPlayerWithPoints,\n ILeaderboardPlayerWithStreak,\n} from './dal/use-get-leaderboard-dal/use-get-leaderboard-dal-types';\nimport type { ILeaderboardProps } from './leaderboard-types';\n\nimport { useState, useEffect } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport { CircularLoader } from '../../ui/loader/circular-loader/circular-loader';\nimport Text from '../../ui/text/text';\nimport { useCircleSounds } from '../hooks/use-circle-sounds/use-circle-sounds';\nimport { Banner } from './comps/banner/banner';\nimport { LeaderboardItemWithObserver } from './comps/leaderboard-item/leaderboard-item';\nimport { NavigationButton } from './comps/navigation-button/navigation-button';\nimport { Timer } from './comps/timer/timer';\nimport { ELeaderboardType } from './enums/leaderboard-type-enum';\nimport { useTimer } from './hooks';\nimport * as Styled from './leaderboard-styled';\n\n// lazy load banner lotties\nconst BANNER_LOTTIES: Record<ELeaderboardType, () => Promise<Record<string, unknown>>> = {\n [ELeaderboardType.ALL_TIME_STREAK]: () =>\n import('../../../assets/lotties/circle/elite-circle-lottie.json'),\n [ELeaderboardType.ALL_TIME]: () =>\n import('../../../assets/lotties/circle/elite-circle-lottie.json'),\n [ELeaderboardType.BI_WEEKLY]: () =>\n import('../../../assets/lotties/circle/tournament-ripple-lottie.json'),\n};\n\nconst leaderboards = [\n {\n name: 'TOURNAMENT',\n type: ELeaderboardType.BI_WEEKLY,\n },\n {\n name: 'STREAK STARS',\n type: ELeaderboardType.ALL_TIME_STREAK,\n },\n {\n name: 'ALL TIME',\n type: ELeaderboardType.ALL_TIME,\n },\n];\n\nexport const Leaderboard = ({\n leaderboardData,\n type = ELeaderboardType.BI_WEEKLY,\n userId,\n onClose,\n isLoading,\n}: ILeaderboardProps) => {\n const [currentLeaderBoardIndex, setCurrentLeaderboardIndex] = useState(\n leaderboards.findIndex(leaderboard => type === leaderboard.type),\n );\n\n const [currLeaderboardData, setCurrLeaderboardData] = useState<\n (ILeaderboardPlayerWithPoints | ILeaderboardPlayerWithStreak)[] | []\n >(leaderboardData?.[type]?.leaderboardPlayers || []);\n\n const [currLeaderboardTimeStamps, setCurrLeaderboardTimeStamps] = useState<{\n current: number;\n end: number;\n }>({\n current: 0,\n end: 0,\n });\n\n const [time, setTimer] = useTimer(0);\n const [isTournamentEnded, setIsTournamentEnded] = useState(false);\n const maxPoints = (currLeaderboardData?.[0] as ILeaderboardPlayerWithPoints)?.points;\n const maxStreakDays = (currLeaderboardData?.[0] as ILeaderboardPlayerWithStreak)?.streakDays || 0;\n const { playButtonSound } = useCircleSounds();\n\n const handlePrevious = () => {\n playButtonSound();\n setCurrentLeaderboardIndex(prev => {\n if (prev - 1 < 0) {\n return leaderboards.length - 1;\n }\n\n return prev - 1;\n });\n };\n\n const handleNext = () => {\n playButtonSound();\n setCurrentLeaderboardIndex(prev => {\n if (prev + 1 === leaderboards.length) {\n return 0;\n }\n\n return prev + 1;\n });\n };\n\n useEffect(() => {\n setTimer(0);\n }, [setTimer]);\n\n useEffect(() => {\n const currType = leaderboards[currentLeaderBoardIndex]?.type;\n const currLeaderboard = currType && leaderboardData?.[currType];\n\n if (currLeaderboard) {\n const leaderboardList = currLeaderboard.leaderboardPlayers || [];\n\n if (currType === ELeaderboardType.BI_WEEKLY) {\n setCurrLeaderboardTimeStamps({\n current: currLeaderboard.currentTimestamp,\n end: currLeaderboard.endTimestamp,\n });\n\n if (currLeaderboard.currentTimestamp > currLeaderboard.endTimestamp) {\n leaderboardList.splice(10);\n setIsTournamentEnded(true);\n }\n }\n\n setCurrLeaderboardData([...leaderboardList]);\n }\n }, [currentLeaderBoardIndex, leaderboardData]);\n\n return (\n <Styled.Leaderboard>\n <Styled.LeaderboardContainer>\n <Styled.BannerWrapper>\n {/* tournament banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.BI_WEEKLY && (\n <Banner\n isLoading={isLoading || currLeaderboardData.length === 0}\n bgFromTopPosition={-120}\n bgFromRightPosition={-110}\n primaryText={\n isTournamentEnded ? <span>New Tournament</span> : <span>Tournament</span>\n }\n secondaryText={\n isTournamentEnded ? (\n <span>Starts Soon</span>\n ) : (\n <span>\n {' '}\n <Timer\n fromTimestamp={(time as number) + currLeaderboardTimeStamps.current}\n endTimestamp={currLeaderboardTimeStamps.end}\n />{' '}\n {'left'}\n </span>\n )\n }\n lottiePromise={BANNER_LOTTIES[ELeaderboardType.BI_WEEKLY]}\n custEle={\n <Styled.TournamentBannerCustContainer>\n <Styled.TrophyWrapper>\n <img src={ILLUSTRATIONS.TROPHY_CIRCLE} />\n </Styled.TrophyWrapper>\n </Styled.TournamentBannerCustContainer>\n }\n />\n )}\n\n {/* top streak banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME_STREAK && (\n <Banner\n isLoading={isLoading}\n bgFromTopPosition={-140}\n bgFromRightPosition={-90}\n primaryText={<span>Streak Stars</span>}\n secondaryText={<span>Top 50</span>}\n lottiePromise={BANNER_LOTTIES[ELeaderboardType.ALL_TIME_STREAK]}\n />\n )}\n\n {/* elite circle banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME && (\n <Banner\n isLoading={isLoading}\n bgFromTopPosition={-140}\n bgFromRightPosition={-90}\n primaryText={<span>Elite Circle</span>}\n secondaryText={<span>Top 50</span>}\n lottiePromise={BANNER_LOTTIES[ELeaderboardType.ALL_TIME]}\n />\n )}\n </Styled.BannerWrapper>\n\n {isLoading && <CircularLoader />}\n\n {!isLoading && currLeaderboardData && (\n <Styled.ItemsWrapper topInset={0}>\n {isTournamentEnded &&\n leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.BI_WEEKLY && (\n <Styled.Banner>\n <Text $renderAs=\"ab3\" $color=\"WHITE\">\n Congratulating winners of the last tournament!\n </Text>\n </Styled.Banner>\n )}\n {currLeaderboardData.map(player => {\n return (\n <LeaderboardItemWithObserver\n key={player.rank}\n player={player}\n rank={player.rank}\n maxStreakDays={maxStreakDays}\n maxPoints={maxPoints}\n leaderboardType={leaderboards[currentLeaderBoardIndex]?.type}\n isActive={player.userId === userId}\n />\n );\n })}\n </Styled.ItemsWrapper>\n )}\n\n <Styled.ActionButtonWrapper>\n <NavigationButton\n labels={Object.values(ELeaderboardType)}\n onLeftClick={handlePrevious}\n onRightClick={handleNext}\n currIndex={currentLeaderBoardIndex}\n onClose={onClose}\n disableSwipe={isLoading || currLeaderboardData.length === 0}\n />\n </Styled.ActionButtonWrapper>\n </Styled.LeaderboardContainer>\n </Styled.Leaderboard>\n );\n};\n"],"names":["BANNER_LOTTIES","ELeaderboardType","leaderboards","Leaderboard","leaderboardData","type","userId","onClose","isLoading","currentLeaderBoardIndex","setCurrentLeaderboardIndex","useState","leaderboard","currLeaderboardData","setCurrLeaderboardData","_a","currLeaderboardTimeStamps","setCurrLeaderboardTimeStamps","time","setTimer","useTimer","isTournamentEnded","setIsTournamentEnded","maxPoints","_b","maxStreakDays","_c","playButtonSound","useCircleSounds","handlePrevious","prev","handleNext","useEffect","currType","currLeaderboard","leaderboardList","Styled.Leaderboard","jsxs","Styled.LeaderboardContainer","Styled.BannerWrapper","_d","jsx","Banner","Timer","Styled.TournamentBannerCustContainer","Styled.TrophyWrapper","ILLUSTRATIONS","_e","_f","CircularLoader","Styled.ItemsWrapper","_g","Styled.Banner","Text","player","LeaderboardItemWithObserver","Styled.ActionButtonWrapper","NavigationButton"],"mappings":"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"}
|
@@ -1,49 +1,50 @@
|
|
1
|
-
import { jsx as e, Fragment as
|
2
|
-
import
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import { BackgroundImage as
|
1
|
+
import { jsx as e, Fragment as E, jsxs as s } from "react/jsx-runtime";
|
2
|
+
import R from "lottie-web";
|
3
|
+
import { useRef as l, useEffect as g } from "react";
|
4
|
+
import S from "../../../../../assets/line-icons/icons/circle-back.js";
|
5
|
+
import P from "../../../../../assets/lotties/circle/levelup-rings-lottie.json.js";
|
6
|
+
import b from "../../../../ui/text/text.js";
|
7
|
+
import { BackgroundImage as I, ScreenWrapper as T, TransparentIconButton as q, CircularStepsContainer as F, CircularStepsWrapper as v, CustEleContainer as y, CircularProgressContainer as L, CircularProgress as w, Label as M, CustomDataContainer as W } from "./circular-steps-styled.js";
|
8
8
|
import { TOTAL_FRAMES as $ } from "./constants.js";
|
9
|
-
const j = ({ img:
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
},
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
9
|
+
const j = ({ img: t }) => /* @__PURE__ */ e(I, { children: t }), K = ({ steps: t, currentStepIndex: i, dimensions: f }) => {
|
10
|
+
const { width: u, height: m } = f, r = t[i], d = l(null), a = l(null), c = l(-1), h = () => {
|
11
|
+
var o, n;
|
12
|
+
(n = (o = t[i]) == null ? void 0 : o.onBack) == null || n.call(o);
|
13
|
+
}, p = (o, n) => {
|
14
|
+
a.current && a.current.playSegments([o, n], !0);
|
15
|
+
};
|
16
|
+
return g(() => ((async () => {
|
17
|
+
a.current = R.loadAnimation({
|
18
|
+
container: d.current,
|
19
|
+
animationData: P,
|
20
|
+
autoplay: !1,
|
21
|
+
loop: !1,
|
22
|
+
renderer: "canvas"
|
23
|
+
});
|
24
|
+
})(), () => {
|
25
|
+
var n;
|
26
|
+
(n = a.current) == null || n.destroy();
|
27
|
+
}), [r == null ? void 0 : r.isProgressAnimationRequired]), g(() => {
|
28
|
+
if (a.current && (r != null && r.isProgressAnimationRequired)) {
|
29
|
+
const o = t.filter((B) => B.isProgressAnimationRequired), n = $ / o.length, C = c.current >= 0 ? c.current : 0, A = Math.round(C * n), k = Math.round(i * n);
|
30
|
+
p(A, k), c.current = i;
|
21
31
|
}
|
22
|
-
}, [
|
23
|
-
|
24
|
-
r.
|
25
|
-
|
26
|
-
|
27
|
-
r.
|
28
|
-
|
29
|
-
r.
|
30
|
-
A,
|
31
|
-
{
|
32
|
-
ref: l,
|
33
|
-
src: R.LEVELUP_RINGS,
|
34
|
-
settings: x,
|
35
|
-
onRender: h
|
36
|
-
}
|
37
|
-
) }) : null,
|
38
|
-
r.label ? /* @__PURE__ */ e(M, { children: /* @__PURE__ */ e(I, { $renderAs: "ab2", $color: "WHITE", children: r.label }) }) : null,
|
32
|
+
}, [i, r == null ? void 0 : r.isProgressAnimationRequired, t]), /* @__PURE__ */ e(E, { children: r && /* @__PURE__ */ s(T, { width: u, height: m, children: [
|
33
|
+
r.onBack && /* @__PURE__ */ e(q, { children: /* @__PURE__ */ e(S, { onClick: h }) }),
|
34
|
+
r.background && /* @__PURE__ */ e(j, { img: r.background }),
|
35
|
+
/* @__PURE__ */ e(F, { children: /* @__PURE__ */ s(v, { children: [
|
36
|
+
r.custEle ? /* @__PURE__ */ e(y, { children: r.custEle }) : null,
|
37
|
+
r.custEleInsideStep && /* @__PURE__ */ s(L, { width: u, height: m, children: [
|
38
|
+
r.isProgressAnimationRequired && /* @__PURE__ */ e(w, { ref: d }),
|
39
|
+
r.label && /* @__PURE__ */ e(M, { children: /* @__PURE__ */ e(b, { $renderAs: "ab2", $color: "WHITE", children: r.label }) }),
|
39
40
|
r.custEleInsideStep
|
40
|
-
] })
|
41
|
+
] })
|
41
42
|
] }) }),
|
42
|
-
r.custEleBelowStep
|
43
|
-
] })
|
43
|
+
r.custEleBelowStep && /* @__PURE__ */ e(W, { children: r.custEleBelowStep })
|
44
|
+
] }) });
|
44
45
|
};
|
45
46
|
export {
|
46
47
|
j as BackgroundImage,
|
47
|
-
|
48
|
+
K as CircularSteps
|
48
49
|
};
|
49
50
|
//# sourceMappingURL=circular-steps.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"circular-steps.js","sources":["../../../../../../src/features/circle-games/sign-up/comp/circular-steps/circular-steps.tsx"],"sourcesContent":["import type {
|
1
|
+
{"version":3,"file":"circular-steps.js","sources":["../../../../../../src/features/circle-games/sign-up/comp/circular-steps/circular-steps.tsx"],"sourcesContent":["import type { ICircularStepsProps } from './circular-steps-types';\nimport type { AnimationItem } from 'lottie-web';\nimport type { FC } from 'react';\n\nimport Lottie from 'lottie-web';\nimport { useEffect, useRef } from 'react';\n\nimport CircleBackIcon from '../../../../../assets/line-icons/icons/circle-back';\nimport progressRingLottie from '../../../../../assets/lotties/circle/levelup-rings-lottie.json';\nimport Text from '../../../../ui/text/text';\nimport * as Styled from './circular-steps-styled';\nimport { TOTAL_FRAMES } from './constants';\n\nexport const BackgroundImage = ({ img }: { img: React.ReactNode }) => {\n return <Styled.BackgroundImage>{img}</Styled.BackgroundImage>;\n};\n\nexport const CircularSteps: FC<ICircularStepsProps> = ({ steps, currentStepIndex, dimensions }) => {\n const { width, height } = dimensions;\n\n const step = steps[currentStepIndex];\n const lottieAnimationRef = useRef<HTMLDivElement>(null);\n const animationRef = useRef<AnimationItem | null>(null);\n const previousStepIndex = useRef<number>(-1);\n\n const handleBack = () => {\n steps[currentStepIndex]?.onBack?.();\n };\n const goToFrame = (fromFrame: number, toFrame: number) => {\n if (animationRef.current) {\n animationRef.current.playSegments([fromFrame, toFrame], true);\n }\n };\n\n // Load animation\n useEffect(() => {\n const loadAnimation = async () => {\n animationRef.current = Lottie.loadAnimation({\n container: lottieAnimationRef.current as Element,\n animationData: progressRingLottie,\n autoplay: false,\n loop: false,\n renderer: 'canvas',\n });\n };\n\n loadAnimation();\n\n return () => {\n animationRef.current?.destroy();\n };\n }, [step?.isProgressAnimationRequired]);\n\n useEffect(() => {\n if (animationRef.current && step?.isProgressAnimationRequired) {\n const actualSteps = steps.filter(_step => _step.isProgressAnimationRequired);\n const stepSize = TOTAL_FRAMES / actualSteps.length;\n\n const validPreviousIndex = previousStepIndex.current >= 0 ? previousStepIndex.current : 0;\n\n const fromFrame = Math.round(validPreviousIndex * stepSize);\n const toFrame = Math.round(currentStepIndex * stepSize);\n\n goToFrame(fromFrame, toFrame);\n previousStepIndex.current = currentStepIndex;\n }\n }, [currentStepIndex, step?.isProgressAnimationRequired, steps]);\n\n return (\n <>\n {step && (\n <Styled.ScreenWrapper width={width} height={height}>\n {step.onBack && (\n <Styled.TransparentIconButton>\n <CircleBackIcon onClick={handleBack} />\n </Styled.TransparentIconButton>\n )}\n {step.background && <BackgroundImage img={step.background} />}\n <Styled.CircularStepsContainer>\n <Styled.CircularStepsWrapper>\n {step.custEle ? (\n <Styled.CustEleContainer>{step.custEle}</Styled.CustEleContainer>\n ) : null}\n\n {/*circular data container*/}\n {step.custEleInsideStep && (\n <Styled.CircularProgressContainer width={width} height={height}>\n {step.isProgressAnimationRequired && (\n <Styled.CircularProgress ref={lottieAnimationRef} />\n )}\n\n {step.label && (\n <Styled.Label>\n <Text $renderAs=\"ab2\" $color=\"WHITE\">\n {step.label}\n </Text>\n </Styled.Label>\n )}\n {step.custEleInsideStep}\n </Styled.CircularProgressContainer>\n )}\n </Styled.CircularStepsWrapper>\n </Styled.CircularStepsContainer>\n {/* custom data container below circle */}\n {step.custEleBelowStep && (\n <Styled.CustomDataContainer>{step.custEleBelowStep}</Styled.CustomDataContainer>\n )}\n </Styled.ScreenWrapper>\n )}\n </>\n );\n};\n"],"names":["BackgroundImage","img","jsx","Styled.BackgroundImage","CircularSteps","steps","currentStepIndex","dimensions","width","height","step","lottieAnimationRef","useRef","animationRef","previousStepIndex","handleBack","_b","_a","goToFrame","fromFrame","toFrame","useEffect","Lottie","progressRingLottie","actualSteps","_step","stepSize","TOTAL_FRAMES","validPreviousIndex","jsxs","Styled.ScreenWrapper","Styled.TransparentIconButton","CircleBackIcon","Styled.CircularStepsContainer","Styled.CircularStepsWrapper","Styled.CustEleContainer","Styled.CircularProgressContainer","Styled.CircularProgress","Styled.Label","Text","Styled.CustomDataContainer"],"mappings":";;;;;;;;AAaO,MAAMA,IAAkB,CAAC,EAAE,KAAAC,QACxB,gBAAAC,EAAAC,GAAA,EAAwB,UAAIF,EAAA,CAAA,GAGzBG,IAAyC,CAAC,EAAE,OAAAC,GAAO,kBAAAC,GAAkB,YAAAC,QAAiB;AAC3F,QAAA,EAAE,OAAAC,GAAO,QAAAC,EAAW,IAAAF,GAEpBG,IAAOL,EAAMC,CAAgB,GAC7BK,IAAqBC,EAAuB,IAAI,GAChDC,IAAeD,EAA6B,IAAI,GAChDE,IAAoBF,EAAe,EAAE,GAErCG,IAAa,MAAM;;AACjB,KAAAC,KAAAC,IAAAZ,EAAAC,CAAgB,MAAhB,gBAAAW,EAAmB,WAAnB,QAAAD,EAAA,KAAAC;AAAA,EAA4B,GAE9BC,IAAY,CAACC,GAAmBC,MAAoB;AACxD,IAAIP,EAAa,WACfA,EAAa,QAAQ,aAAa,CAACM,GAAWC,CAAO,GAAG,EAAI;AAAA,EAC9D;AAIF,SAAAC,EAAU,QACc,YAAY;AACnB,IAAAR,EAAA,UAAUS,EAAO,cAAc;AAAA,MAC1C,WAAWX,EAAmB;AAAA,MAC9B,eAAeY;AAAA,MACf,UAAU;AAAA,MACV,MAAM;AAAA,MACN,UAAU;AAAA,IAAA,CACX;AAAA,EAAA,MAKI,MAAM;;AACX,KAAAN,IAAAJ,EAAa,YAAb,QAAAI,EAAsB;AAAA,EAAQ,IAE/B,CAACP,KAAA,gBAAAA,EAAM,2BAA2B,CAAC,GAEtCW,EAAU,MAAM;AACV,QAAAR,EAAa,YAAWH,KAAA,QAAAA,EAAM,8BAA6B;AAC7D,YAAMc,IAAcnB,EAAM,OAAO,CAAAoB,MAASA,EAAM,2BAA2B,GACrEC,IAAWC,IAAeH,EAAY,QAEtCI,IAAqBd,EAAkB,WAAW,IAAIA,EAAkB,UAAU,GAElFK,IAAY,KAAK,MAAMS,IAAqBF,CAAQ,GACpDN,IAAU,KAAK,MAAMd,IAAmBoB,CAAQ;AAEtD,MAAAR,EAAUC,GAAWC,CAAO,GAC5BN,EAAkB,UAAUR;AAAA,IAC9B;AAAA,KACC,CAACA,GAAkBI,KAAA,gBAAAA,EAAM,6BAA6BL,CAAK,CAAC,0BAI1D,UACCK,KAAA,gBAAAmB,EAACC,GAAA,EAAqB,OAAAtB,GAAc,QAAAC,GACjC,UAAA;AAAA,IAAKC,EAAA,4BACHqB,GAAA,EACC,UAAC,gBAAA7B,EAAA8B,GAAA,EAAe,SAASjB,EAAA,CAAY,EACvC,CAAA;AAAA,IAEDL,EAAK,cAAc,gBAAAR,EAACF,GAAgB,EAAA,KAAKU,EAAK,YAAY;AAAA,sBAC1DuB,GAAA,EACC,UAAC,gBAAAJ,EAAAK,GAAA,EACE,UAAA;AAAA,MAAAxB,EAAK,UACH,gBAAAR,EAAAiC,GAAA,EAAyB,UAAAzB,EAAK,QAAQ,CAAA,IACrC;AAAA,MAGHA,EAAK,qBACJ,gBAAAmB,EAACO,GAAA,EAAiC,OAAA5B,GAAc,QAAAC,GAC7C,UAAA;AAAA,QAAAC,EAAK,+BACH,gBAAAR,EAAAmC,GAAA,EAAwB,KAAK1B,GAAoB;AAAA,QAGnDD,EAAK,SACH,gBAAAR,EAAAoC,GAAA,EACC,UAAA,gBAAApC,EAACqC,GAAK,EAAA,WAAU,OAAM,QAAO,SAC1B,UAAA7B,EAAK,MACR,CAAA,GACF;AAAA,QAEDA,EAAK;AAAA,MAAA,GACR;AAAA,IAAA,EAAA,CAEJ,EACF,CAAA;AAAA,IAECA,EAAK,oBACJ,gBAAAR,EAACsC,GAAA,EAA4B,YAAK,kBAAiB;AAAA,EAAA,EAEvD,CAAA,EAEJ,CAAA;AAEJ;"}
|
@@ -1,11 +1,15 @@
|
|
1
|
-
import
|
2
|
-
const
|
1
|
+
import t from "styled-components";
|
2
|
+
const p = t.div`
|
3
3
|
display: flex;
|
4
4
|
justify-content: center;
|
5
5
|
align-items: center;
|
6
|
-
margin: ${({ marginY: e, marginX:
|
6
|
+
margin: ${({ marginY: e, marginX: i }) => `${e}px ${i}px`};
|
7
|
+
`, r = t.div`
|
8
|
+
height: ${({ height: e }) => e}px;
|
9
|
+
width: ${({ width: e }) => e}px;
|
7
10
|
`;
|
8
11
|
export {
|
9
|
-
|
12
|
+
r as Spinner,
|
13
|
+
p as SpinnerWrapper
|
10
14
|
};
|
11
15
|
//# sourceMappingURL=spinner-styled.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"spinner-styled.js","sources":["../../../../../../src/features/circle-games/sign-up/comp/spinner/spinner-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nexport const SpinnerWrapper = styled.div<{ marginY: number; marginX: number }>`\n display: flex;\n justify-content: center;\n align-items: center;\n margin: ${({ marginY, marginX }) => `${marginY}px ${marginX}px`};\n`;\n"],"names":["SpinnerWrapper","styled","marginY","marginX"],"mappings":";AAEO,MAAMA,IAAiBC,EAAO;AAAA;AAAA;AAAA;AAAA,YAIzB,CAAC,EAAE,SAAAC,GAAS,SAAAC,QAAc,GAAGD,CAAO,MAAMC,CAAO,IAAI;AAAA;"}
|
1
|
+
{"version":3,"file":"spinner-styled.js","sources":["../../../../../../src/features/circle-games/sign-up/comp/spinner/spinner-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nexport const SpinnerWrapper = styled.div<{ marginY: number; marginX: number }>`\n display: flex;\n justify-content: center;\n align-items: center;\n margin: ${({ marginY, marginX }) => `${marginY}px ${marginX}px`};\n`;\n\nexport const Spinner = styled.div<{ height: number; width: number }>`\n height: ${({ height }) => height}px;\n width: ${({ width }) => width}px;\n`;\n"],"names":["SpinnerWrapper","styled","marginY","marginX","Spinner","height","width"],"mappings":";AAEO,MAAMA,IAAiBC,EAAO;AAAA;AAAA;AAAA;AAAA,YAIzB,CAAC,EAAE,SAAAC,GAAS,SAAAC,QAAc,GAAGD,CAAO,MAAMC,CAAO,IAAI;AAAA,GAGpDC,IAAUH,EAAO;AAAA,YAClB,CAAC,EAAE,QAAAI,EAAO,MAAMA,CAAM;AAAA,WACvB,CAAC,EAAE,OAAAC,EAAM,MAAMA,CAAK;AAAA;"}
|
@@ -1,9 +1,26 @@
|
|
1
|
-
import { jsx as
|
2
|
-
import
|
3
|
-
import
|
4
|
-
import { SpinnerWrapper as
|
5
|
-
const
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
2
|
+
import p from "lottie-web";
|
3
|
+
import { useRef as m, useEffect as s } from "react";
|
4
|
+
import { SpinnerWrapper as u, Spinner as c } from "./spinner-styled.js";
|
5
|
+
const d = () => import("../../../../../assets/lotties/circle/spinner-white.json.js"), M = ({ height: r = 24, width: e = 24, marginX: i = 0, marginY: a = 0 }) => {
|
6
|
+
const t = m(null);
|
7
|
+
return s(() => {
|
8
|
+
let n = null;
|
9
|
+
return (async () => {
|
10
|
+
const l = (await d()).default;
|
11
|
+
n = p.loadAnimation({
|
12
|
+
container: t.current,
|
13
|
+
animationData: l,
|
14
|
+
autoplay: !0,
|
15
|
+
loop: !0,
|
16
|
+
renderer: "canvas"
|
17
|
+
});
|
18
|
+
})(), () => {
|
19
|
+
n == null || n.destroy();
|
20
|
+
};
|
21
|
+
}, []), /* @__PURE__ */ o(u, { marginX: i, marginY: a, children: /* @__PURE__ */ o(c, { ref: t, height: r, width: e }) });
|
22
|
+
};
|
6
23
|
export {
|
7
|
-
|
24
|
+
M as Spinner
|
8
25
|
};
|
9
26
|
//# sourceMappingURL=spinner.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"spinner.js","sources":["../../../../../../src/features/circle-games/sign-up/comp/spinner/spinner.tsx"],"sourcesContent":["import type { TSpinnerProps } from './spinner-types';\
|
1
|
+
{"version":3,"file":"spinner.js","sources":["../../../../../../src/features/circle-games/sign-up/comp/spinner/spinner.tsx"],"sourcesContent":["import type { TSpinnerProps } from './spinner-types';\nimport type { AnimationItem } from 'lottie-web';\n\nimport Lottie from 'lottie-web';\nimport { useEffect, useRef } from 'react';\n\nimport * as S from './spinner-styled';\n\nconst spinnerWhite = () => import('../../../../../assets/lotties/circle/spinner-white.json');\n\nexport const Spinner = ({ height = 24, width = 24, marginX = 0, marginY = 0 }: TSpinnerProps) => {\n const lottieContainer = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n let animation: AnimationItem | null = null;\n const loadAnimation = async () => {\n const animationModule = await spinnerWhite();\n const animationData = animationModule.default;\n\n animation = Lottie.loadAnimation({\n container: lottieContainer.current as Element,\n animationData: animationData,\n autoplay: true,\n loop: true,\n renderer: 'canvas',\n });\n };\n\n loadAnimation();\n\n return () => {\n animation?.destroy();\n };\n }, []);\n\n return (\n <S.SpinnerWrapper marginX={marginX} marginY={marginY}>\n <S.Spinner ref={lottieContainer} height={height} width={width} />\n </S.SpinnerWrapper>\n );\n};\n"],"names":["spinnerWhite","Spinner","height","width","marginX","marginY","lottieContainer","useRef","useEffect","animation","animationData","Lottie","jsx","S.SpinnerWrapper","S.Spinner"],"mappings":";;;;AAQA,MAAMA,IAAe,MAAM,OAAO,4DAAyD,GAE9EC,IAAU,CAAC,EAAE,QAAAC,IAAS,IAAI,OAAAC,IAAQ,IAAI,SAAAC,IAAU,GAAG,SAAAC,IAAU,QAAuB;AACzF,QAAAC,IAAkBC,EAAuB,IAAI;AAEnD,SAAAC,EAAU,MAAM;AACd,QAAIC,IAAkC;AAcxB,YAbQ,YAAY;AAEhC,YAAMC,KADkB,MAAMV,KACQ;AAEtC,MAAAS,IAAYE,EAAO,cAAc;AAAA,QAC/B,WAAWL,EAAgB;AAAA,QAC3B,eAAAI;AAAA,QACA,UAAU;AAAA,QACV,MAAM;AAAA,QACN,UAAU;AAAA,MAAA,CACX;AAAA,IAAA,MAKI,MAAM;AACX,MAAAD,KAAA,QAAAA,EAAW;AAAA,IAAQ;AAAA,EAEvB,GAAG,CAAE,CAAA,GAGF,gBAAAG,EAAAC,GAAA,EAAiB,SAAAT,GAAkB,SAAAC,GAClC,UAAA,gBAAAO,EAACE,GAAA,EAAU,KAAKR,GAAiB,QAAAJ,GAAgB,OAAAC,EAAc,CAAA,EACjE,CAAA;AAEJ;"}
|