@cuemath/leap 3.1.20-akm-2 → 3.1.20-akm-3
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/features/circle-games/leaderboard/dal/use-get-leaderboard-dal/use-get-leaderboard-dal.js +17 -17
- package/dist/features/circle-games/leaderboard/dal/use-get-leaderboard-dal/use-get-leaderboard-dal.js.map +1 -1
- package/dist/features/circle-games/leaderboard/leaderboard.js +61 -66
- package/dist/features/circle-games/leaderboard/leaderboard.js.map +1 -1
- package/dist/index.d.ts +6 -6
- package/package.json +1 -1
@@ -1,6 +1,6 @@
|
|
1
1
|
import { useState as o, useEffect as i } from "react";
|
2
2
|
import { useGetLeaderboard as b } from "../../api/get-leaderboard/get-leaderboard.js";
|
3
|
-
const
|
3
|
+
const _ = (t) => {
|
4
4
|
const [n, d] = o(null), { data: a, get: s, isProcessed: r, ...u } = b();
|
5
5
|
return i(() => {
|
6
6
|
s("", {
|
@@ -9,11 +9,11 @@ const g = (t) => {
|
|
9
9
|
}, [s, t]), i(() => {
|
10
10
|
let m = null;
|
11
11
|
r && a && (m = {
|
12
|
-
|
13
|
-
currentTimestamp: a.
|
14
|
-
startTimestamp: a.
|
15
|
-
endTimestamp: a.
|
16
|
-
leaderboardPlayers: a.
|
12
|
+
bi_weekly: {
|
13
|
+
currentTimestamp: a.bi_weekly.currentTimestamp,
|
14
|
+
startTimestamp: a.bi_weekly.startTimestamp,
|
15
|
+
endTimestamp: a.bi_weekly.endTimestamp,
|
16
|
+
leaderboardPlayers: a.bi_weekly.leaderboardUsers.map((e) => ({
|
17
17
|
userId: e.user_id,
|
18
18
|
userAvatar: e.userAvatar,
|
19
19
|
username: e.username,
|
@@ -35,11 +35,11 @@ const g = (t) => {
|
|
35
35
|
points: e.points
|
36
36
|
}))
|
37
37
|
},
|
38
|
-
|
39
|
-
currentTimestamp: a.
|
40
|
-
startTimestamp: a.
|
41
|
-
endTimestamp: a.
|
42
|
-
leaderboardPlayers: a.
|
38
|
+
global_streak: {
|
39
|
+
currentTimestamp: a.global_streak.currentTimestamp,
|
40
|
+
startTimestamp: a.global_streak.startTimestamp,
|
41
|
+
endTimestamp: a.global_streak.endTimestamp,
|
42
|
+
leaderboardPlayers: a.global_streak.leaderboardUsers.map((e) => ({
|
43
43
|
userId: e.user_id,
|
44
44
|
userAvatar: e.userAvatar,
|
45
45
|
username: e.username,
|
@@ -48,11 +48,11 @@ const g = (t) => {
|
|
48
48
|
streakDays: e.streak_days
|
49
49
|
}))
|
50
50
|
},
|
51
|
-
|
52
|
-
currentTimestamp: a.
|
53
|
-
startTimestamp: a.
|
54
|
-
endTimestamp: a.
|
55
|
-
leaderboardPlayers: a.
|
51
|
+
infinite_table: {
|
52
|
+
currentTimestamp: a.infinite_table.currentTimestamp,
|
53
|
+
startTimestamp: a.infinite_table.startTimestamp,
|
54
|
+
endTimestamp: a.infinite_table.endTimestamp,
|
55
|
+
leaderboardPlayers: a.infinite_table.leaderboardUsers.map((e) => ({
|
56
56
|
userId: e.user_id,
|
57
57
|
userAvatar: e.userAvatar,
|
58
58
|
username: e.username,
|
@@ -65,6 +65,6 @@ const g = (t) => {
|
|
65
65
|
}, [a, r]), { data: n, isProcessed: r, ...u };
|
66
66
|
};
|
67
67
|
export {
|
68
|
-
|
68
|
+
_ as useGetLeaderboardDal
|
69
69
|
};
|
70
70
|
//# sourceMappingURL=use-get-leaderboard-dal.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-get-leaderboard-dal.js","sources":["../../../../../../src/features/circle-games/leaderboard/dal/use-get-leaderboard-dal/use-get-leaderboard-dal.ts"],"sourcesContent":["import type { IAvatarLayer } from '../../../../ui/avatar/avatar-types';\nimport type {\n ILeaderboardDetails,\n ILeaderboardPlayerWithPoints,\n ILeaderboardPlayerWithStreak,\n} from './use-get-leaderboard-dal-types';\n\nimport { useEffect, useState } from 'react';\n\nimport { useGetLeaderboard } from '../../api/get-leaderboard/get-leaderboard';\n\nexport const useGetLeaderboardDal = (\n userId: string,\n): Omit<ReturnType<typeof useGetLeaderboard>, 'data' | 'get'> & {\n data: ILeaderboardDetails | null;\n} => {\n const [leaderboardDetails, setLeaderboardDetails] = useState<ILeaderboardDetails | null>(null);\n const { data, get: getLeaderboards, isProcessed, ...rest } = useGetLeaderboard();\n\n useEffect(() => {\n getLeaderboards('', {\n user_id: userId,\n });\n }, [getLeaderboards, userId]);\n\n useEffect(() => {\n let leaderboard: ILeaderboardDetails | null = null;\n\n if (isProcessed && data) {\n leaderboard = {\n
|
1
|
+
{"version":3,"file":"use-get-leaderboard-dal.js","sources":["../../../../../../src/features/circle-games/leaderboard/dal/use-get-leaderboard-dal/use-get-leaderboard-dal.ts"],"sourcesContent":["import type { IAvatarLayer } from '../../../../ui/avatar/avatar-types';\nimport type {\n ILeaderboardDetails,\n ILeaderboardPlayerWithPoints,\n ILeaderboardPlayerWithStreak,\n} from './use-get-leaderboard-dal-types';\n\nimport { useEffect, useState } from 'react';\n\nimport { useGetLeaderboard } from '../../api/get-leaderboard/get-leaderboard';\n\nexport const useGetLeaderboardDal = (\n userId: string,\n): Omit<ReturnType<typeof useGetLeaderboard>, 'data' | 'get'> & {\n data: ILeaderboardDetails | null;\n} => {\n const [leaderboardDetails, setLeaderboardDetails] = useState<ILeaderboardDetails | null>(null);\n const { data, get: getLeaderboards, isProcessed, ...rest } = useGetLeaderboard();\n\n useEffect(() => {\n getLeaderboards('', {\n user_id: userId,\n });\n }, [getLeaderboards, userId]);\n\n useEffect(() => {\n let leaderboard: ILeaderboardDetails | null = null;\n\n if (isProcessed && data) {\n leaderboard = {\n bi_weekly: {\n currentTimestamp: data.bi_weekly.currentTimestamp,\n startTimestamp: data.bi_weekly.startTimestamp,\n endTimestamp: data.bi_weekly.endTimestamp,\n leaderboardPlayers: data.bi_weekly.leaderboardUsers.map(player => {\n return {\n userId: player.user_id,\n userAvatar: player.userAvatar as IAvatarLayer[],\n username: player.username,\n grade: player.grade,\n rank: player.rank,\n points: player.points!,\n };\n }) as ILeaderboardPlayerWithPoints[],\n },\n global: {\n currentTimestamp: data.global.currentTimestamp,\n startTimestamp: data.global.startTimestamp,\n endTimestamp: data.global.endTimestamp,\n leaderboardPlayers: data.global.leaderboardUsers.map(player => {\n return {\n userId: player.user_id,\n userAvatar: player.userAvatar as IAvatarLayer[],\n username: player.username,\n grade: player.grade,\n rank: player.rank,\n points: player.points!,\n };\n }) as ILeaderboardPlayerWithPoints[],\n },\n global_streak: {\n currentTimestamp: data.global_streak.currentTimestamp,\n startTimestamp: data.global_streak.startTimestamp,\n endTimestamp: data.global_streak.endTimestamp,\n leaderboardPlayers: data.global_streak.leaderboardUsers.map(player => {\n return {\n userId: player.user_id,\n userAvatar: player.userAvatar as IAvatarLayer[],\n username: player.username,\n grade: player.grade,\n rank: player.rank,\n streakDays: player.streak_days!,\n };\n }) as ILeaderboardPlayerWithStreak[],\n },\n infinite_table: {\n currentTimestamp: data.infinite_table.currentTimestamp,\n startTimestamp: data.infinite_table.startTimestamp,\n endTimestamp: data.infinite_table.endTimestamp,\n leaderboardPlayers: data.infinite_table.leaderboardUsers.map(player => {\n return {\n userId: player.user_id,\n userAvatar: player.userAvatar as IAvatarLayer[],\n username: player.username,\n grade: player.grade,\n rank: player.rank,\n points: player.points,\n };\n }) as ILeaderboardPlayerWithPoints[],\n },\n };\n }\n setLeaderboardDetails(leaderboard);\n }, [data, isProcessed]);\n\n return { data: leaderboardDetails, isProcessed, ...rest };\n};\n"],"names":["useGetLeaderboardDal","userId","leaderboardDetails","setLeaderboardDetails","useState","data","getLeaderboards","isProcessed","rest","useGetLeaderboard","useEffect","leaderboard","player"],"mappings":";;AAWa,MAAAA,IAAuB,CAClCC,MAGG;AACH,QAAM,CAACC,GAAoBC,CAAqB,IAAIC,EAAqC,IAAI,GACvF,EAAE,MAAAC,GAAM,KAAKC,GAAiB,aAAAC,GAAa,GAAGC,EAAA,IAASC;AAE7D,SAAAC,EAAU,MAAM;AACd,IAAAJ,EAAgB,IAAI;AAAA,MAClB,SAASL;AAAA,IAAA,CACV;AAAA,EAAA,GACA,CAACK,GAAiBL,CAAM,CAAC,GAE5BS,EAAU,MAAM;AACd,QAAIC,IAA0C;AAE9C,IAAIJ,KAAeF,MACHM,IAAA;AAAA,MACZ,WAAW;AAAA,QACT,kBAAkBN,EAAK,UAAU;AAAA,QACjC,gBAAgBA,EAAK,UAAU;AAAA,QAC/B,cAAcA,EAAK,UAAU;AAAA,QAC7B,oBAAoBA,EAAK,UAAU,iBAAiB,IAAI,CAAUO,OACzD;AAAA,UACL,QAAQA,EAAO;AAAA,UACf,YAAYA,EAAO;AAAA,UACnB,UAAUA,EAAO;AAAA,UACjB,OAAOA,EAAO;AAAA,UACd,MAAMA,EAAO;AAAA,UACb,QAAQA,EAAO;AAAA,QAAA,EAElB;AAAA,MACH;AAAA,MACA,QAAQ;AAAA,QACN,kBAAkBP,EAAK,OAAO;AAAA,QAC9B,gBAAgBA,EAAK,OAAO;AAAA,QAC5B,cAAcA,EAAK,OAAO;AAAA,QAC1B,oBAAoBA,EAAK,OAAO,iBAAiB,IAAI,CAAUO,OACtD;AAAA,UACL,QAAQA,EAAO;AAAA,UACf,YAAYA,EAAO;AAAA,UACnB,UAAUA,EAAO;AAAA,UACjB,OAAOA,EAAO;AAAA,UACd,MAAMA,EAAO;AAAA,UACb,QAAQA,EAAO;AAAA,QAAA,EAElB;AAAA,MACH;AAAA,MACA,eAAe;AAAA,QACb,kBAAkBP,EAAK,cAAc;AAAA,QACrC,gBAAgBA,EAAK,cAAc;AAAA,QACnC,cAAcA,EAAK,cAAc;AAAA,QACjC,oBAAoBA,EAAK,cAAc,iBAAiB,IAAI,CAAUO,OAC7D;AAAA,UACL,QAAQA,EAAO;AAAA,UACf,YAAYA,EAAO;AAAA,UACnB,UAAUA,EAAO;AAAA,UACjB,OAAOA,EAAO;AAAA,UACd,MAAMA,EAAO;AAAA,UACb,YAAYA,EAAO;AAAA,QAAA,EAEtB;AAAA,MACH;AAAA,MACA,gBAAgB;AAAA,QACd,kBAAkBP,EAAK,eAAe;AAAA,QACtC,gBAAgBA,EAAK,eAAe;AAAA,QACpC,cAAcA,EAAK,eAAe;AAAA,QAClC,oBAAoBA,EAAK,eAAe,iBAAiB,IAAI,CAAUO,OAC9D;AAAA,UACL,QAAQA,EAAO;AAAA,UACf,YAAYA,EAAO;AAAA,UACnB,UAAUA,EAAO;AAAA,UACjB,OAAOA,EAAO;AAAA,UACd,MAAMA,EAAO;AAAA,UACb,QAAQA,EAAO;AAAA,QAAA,EAElB;AAAA,MACH;AAAA,IAAA,IAGJT,EAAsBQ,CAAW;AAAA,EAAA,GAChC,CAACN,GAAME,CAAW,CAAC,GAEf,EAAE,MAAML,GAAoB,aAAAK,GAAa,GAAGC,EAAK;AAC1D;"}
|
@@ -1,23 +1,23 @@
|
|
1
1
|
import { jsx as e, jsxs as a } from "react/jsx-runtime";
|
2
|
-
import { useState as
|
3
|
-
import { ILLUSTRATIONS as
|
4
|
-
import { LOTTIE as
|
5
|
-
import { CircularLoader as
|
6
|
-
import
|
7
|
-
import { useCircleSounds as
|
2
|
+
import { useState as p, useEffect as F } from "react";
|
3
|
+
import { ILLUSTRATIONS as K } from "../../../assets/illustrations/illustrations.js";
|
4
|
+
import { LOTTIE as E } from "../../../assets/lottie/lottie.js";
|
5
|
+
import { CircularLoader as H } from "../../ui/loader/circular-loader/circular-loader.js";
|
6
|
+
import q from "../../ui/text/text.js";
|
7
|
+
import { useCircleSounds as z } from "../hooks/use-circle-sounds/use-circle-sounds.js";
|
8
8
|
import { Banner as c } from "./comps/banner/banner.js";
|
9
|
-
import { LeaderboardItemWithObserver as
|
10
|
-
import { NavigationButton as
|
11
|
-
import { StreakReductionInfoBar as
|
12
|
-
import { Timer as
|
9
|
+
import { LeaderboardItemWithObserver as G } from "./comps/leaderboard-item/leaderboard-item.js";
|
10
|
+
import { NavigationButton as J } from "./comps/navigation-button/navigation-button.js";
|
11
|
+
import { StreakReductionInfoBar as Q } from "./comps/streak-reduction-infobar/streak-reduction-infobar.js";
|
12
|
+
import { Timer as V } from "./comps/timer/timer.js";
|
13
13
|
import { ELeaderboardType as r } from "./enums/leaderboard-type-enum.js";
|
14
|
-
import { useTimer as
|
15
|
-
import { Leaderboard as
|
14
|
+
import { useTimer as X } from "./hooks/use-timer/use-timer.js";
|
15
|
+
import { Leaderboard as Z, LeaderboardContainer as D, BannerWrapper as ee, TournamentBannerCustContainer as re, TrophyWrapper as te, InfiniteLeaderboardContainer as ne, ItemsWrapper as oe, Banner as ie, ActionButtonWrapper as se } from "./leaderboard-styled.js";
|
16
16
|
const I = {
|
17
|
-
[r.ALL_TIME_STREAK]:
|
18
|
-
[r.ALL_TIME]:
|
19
|
-
[r.BI_WEEKLY]:
|
20
|
-
[r.INFINITE_TABLE]:
|
17
|
+
[r.ALL_TIME_STREAK]: E.ELITE_CIRCLE,
|
18
|
+
[r.ALL_TIME]: E.ELITE_CIRCLE,
|
19
|
+
[r.BI_WEEKLY]: E.TOURNAMENT_RIPPLE,
|
20
|
+
[r.INFINITE_TABLE]: E.ELITE_CIRCLE
|
21
21
|
}, n = [
|
22
22
|
{
|
23
23
|
name: "TOURNAMENT",
|
@@ -35,65 +35,60 @@ const I = {
|
|
35
35
|
name: "TABLE INFINITY",
|
36
36
|
type: r.INFINITE_TABLE
|
37
37
|
}
|
38
|
-
],
|
39
|
-
[r.BI_WEEKLY]: "biWeekly",
|
40
|
-
[r.ALL_TIME_STREAK]: "globalStreak",
|
41
|
-
[r.ALL_TIME]: "global",
|
42
|
-
[r.INFINITE_TABLE]: "infiniteTable"
|
43
|
-
}, Re = ({
|
38
|
+
], ye = ({
|
44
39
|
leaderboardData: T,
|
45
|
-
type:
|
40
|
+
type: L = r.BI_WEEKLY,
|
46
41
|
userId: W,
|
47
|
-
onClose:
|
42
|
+
onClose: M,
|
48
43
|
isLoading: m,
|
49
|
-
streakInfo:
|
44
|
+
streakInfo: u
|
50
45
|
}) => {
|
51
|
-
var f, y, R, B, S, N,
|
52
|
-
const [o,
|
53
|
-
n.findIndex((t) =>
|
54
|
-
), [i,
|
46
|
+
var f, y, R, B, S, N, C, x, P;
|
47
|
+
const [o, l] = p(
|
48
|
+
n.findIndex((t) => L === t.type)
|
49
|
+
), [i, k] = p(((f = T == null ? void 0 : T[L]) == null ? void 0 : f.leaderboardPlayers) || []), [h, O] = p({
|
55
50
|
current: 0,
|
56
51
|
end: 0
|
57
|
-
}), [
|
58
|
-
A(),
|
59
|
-
},
|
60
|
-
A(),
|
52
|
+
}), [Y, _] = X(0), [d, $] = p(!1), j = (y = i == null ? void 0 : i[0]) == null ? void 0 : y.points, v = ((R = i == null ? void 0 : i[0]) == null ? void 0 : R.streakDays) || 0, { playButtonSound: A } = z(), w = () => {
|
53
|
+
A(), l((t) => t - 1 < 0 ? n.length - 1 : t - 1);
|
54
|
+
}, U = () => {
|
55
|
+
A(), l((t) => t + 1 === n.length ? 0 : t + 1);
|
61
56
|
};
|
62
|
-
return
|
63
|
-
|
64
|
-
}, [
|
65
|
-
var
|
66
|
-
const t = (
|
57
|
+
return F(() => {
|
58
|
+
_(0);
|
59
|
+
}, [_]), F(() => {
|
60
|
+
var b;
|
61
|
+
const t = (b = n[o]) == null ? void 0 : b.type, s = t && (T == null ? void 0 : T[t]);
|
67
62
|
if (s) {
|
68
|
-
const
|
63
|
+
const g = s.leaderboardPlayers || [];
|
69
64
|
t === r.BI_WEEKLY && (O({
|
70
65
|
current: s.currentTimestamp,
|
71
66
|
end: s.endTimestamp
|
72
|
-
}), s.currentTimestamp > s.endTimestamp && (
|
67
|
+
}), s.currentTimestamp > s.endTimestamp && (g.splice(10), $(!0))), k([...g]);
|
73
68
|
}
|
74
|
-
}, [o, T]), /* @__PURE__ */ e(
|
75
|
-
/* @__PURE__ */ a(
|
69
|
+
}, [o, T]), /* @__PURE__ */ e(Z, { children: /* @__PURE__ */ a(D, { children: [
|
70
|
+
/* @__PURE__ */ a(ee, { children: [
|
76
71
|
((B = n[o]) == null ? void 0 : B.type) === r.BI_WEEKLY && /* @__PURE__ */ e(
|
77
72
|
c,
|
78
73
|
{
|
79
74
|
isLoading: m || i.length === 0,
|
80
75
|
bgFromTopPosition: -120,
|
81
76
|
bgFromRightPosition: -110,
|
82
|
-
primaryText:
|
83
|
-
secondaryText:
|
77
|
+
primaryText: d ? /* @__PURE__ */ e("span", { children: "New Tournament" }) : /* @__PURE__ */ e("span", { children: "Tournament" }),
|
78
|
+
secondaryText: d ? /* @__PURE__ */ e("span", { children: "Starts Soon" }) : /* @__PURE__ */ a("span", { children: [
|
84
79
|
" ",
|
85
80
|
/* @__PURE__ */ e(
|
86
|
-
|
81
|
+
V,
|
87
82
|
{
|
88
|
-
fromTimestamp:
|
89
|
-
endTimestamp:
|
83
|
+
fromTimestamp: Y + h.current,
|
84
|
+
endTimestamp: h.end
|
90
85
|
}
|
91
86
|
),
|
92
87
|
" ",
|
93
88
|
"left"
|
94
89
|
] }),
|
95
90
|
lottiePath: I[r.BI_WEEKLY],
|
96
|
-
custEle: /* @__PURE__ */ e(
|
91
|
+
custEle: /* @__PURE__ */ e(re, { children: /* @__PURE__ */ e(te, { children: /* @__PURE__ */ e("img", { src: K.TROPHY_CIRCLE }) }) })
|
97
92
|
}
|
98
93
|
),
|
99
94
|
((S = n[o]) == null ? void 0 : S.type) === r.ALL_TIME_STREAK && /* @__PURE__ */ e(
|
@@ -118,7 +113,7 @@ const I = {
|
|
118
113
|
lottiePath: I[r.ALL_TIME]
|
119
114
|
}
|
120
115
|
),
|
121
|
-
((
|
116
|
+
((C = n[o]) == null ? void 0 : C.type) === r.INFINITE_TABLE && /* @__PURE__ */ e(
|
122
117
|
c,
|
123
118
|
{
|
124
119
|
isLoading: m,
|
@@ -127,29 +122,29 @@ const I = {
|
|
127
122
|
primaryText: "Table Infinity",
|
128
123
|
secondaryText: "Top 50",
|
129
124
|
lottiePath: I[r.INFINITE_TABLE],
|
130
|
-
custEle: /* @__PURE__ */ e(
|
125
|
+
custEle: /* @__PURE__ */ e(ne, { children: /* @__PURE__ */ e("img", { src: K.INFINITE_TABLE_LEADERBOARD }) })
|
131
126
|
}
|
132
127
|
)
|
133
128
|
] }),
|
134
|
-
m && /* @__PURE__ */ e(
|
135
|
-
!m && i && /* @__PURE__ */ a(
|
136
|
-
((
|
137
|
-
|
129
|
+
m && /* @__PURE__ */ e(H, {}),
|
130
|
+
!m && i && /* @__PURE__ */ a(oe, { children: [
|
131
|
+
((x = n[o]) == null ? void 0 : x.type) === r.ALL_TIME_STREAK && /* @__PURE__ */ e(
|
132
|
+
Q,
|
138
133
|
{
|
139
|
-
startTimestampToday:
|
140
|
-
streakReduction:
|
134
|
+
startTimestampToday: u.startTimestampToday,
|
135
|
+
streakReduction: u.streakReduction
|
141
136
|
}
|
142
137
|
),
|
143
|
-
|
138
|
+
d && ((P = n[o]) == null ? void 0 : P.type) === r.BI_WEEKLY && /* @__PURE__ */ e(ie, { children: /* @__PURE__ */ e(q, { $renderAs: "ab3", $color: "WHITE", children: "Congratulating winners of the last tournament!" }) }),
|
144
139
|
i.map((t) => {
|
145
140
|
var s;
|
146
141
|
return /* @__PURE__ */ e(
|
147
|
-
|
142
|
+
G,
|
148
143
|
{
|
149
144
|
player: t,
|
150
145
|
rank: t.rank,
|
151
|
-
maxStreakDays:
|
152
|
-
maxPoints:
|
146
|
+
maxStreakDays: v,
|
147
|
+
maxPoints: j,
|
153
148
|
leaderboardType: (s = n[o]) == null ? void 0 : s.type,
|
154
149
|
isActive: t.userId === W
|
155
150
|
},
|
@@ -157,20 +152,20 @@ const I = {
|
|
157
152
|
);
|
158
153
|
})
|
159
154
|
] }),
|
160
|
-
/* @__PURE__ */ e(
|
161
|
-
|
155
|
+
/* @__PURE__ */ e(se, { children: /* @__PURE__ */ e(
|
156
|
+
J,
|
162
157
|
{
|
163
158
|
labels: Object.values(r),
|
164
|
-
onLeftClick:
|
165
|
-
onRightClick:
|
159
|
+
onLeftClick: w,
|
160
|
+
onRightClick: U,
|
166
161
|
currIndex: o,
|
167
|
-
onClose:
|
162
|
+
onClose: M,
|
168
163
|
disableSwipe: m || i.length === 0
|
169
164
|
}
|
170
165
|
) })
|
171
166
|
] }) });
|
172
167
|
};
|
173
168
|
export {
|
174
|
-
|
169
|
+
ye as Leaderboard
|
175
170
|
};
|
176
171
|
//# sourceMappingURL=leaderboard.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"leaderboard.js","sources":["../../../../src/features/circle-games/leaderboard/leaderboard.tsx"],"sourcesContent":["import type {\n ILeaderboardDetails,\n ILeaderboardPlayerWithPoints,\n ILeaderboardPlayerWithStreak,\n} from './dal/use-get-leaderboard-dal/use-get-leaderboard-dal-types';\nimport type { ILeaderboardProps } from './leaderboard-types';\n\nimport { useEffect, useState } 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 { StreakReductionInfoBar } from './comps/streak-reduction-infobar/streak-reduction-infobar';\nimport { Timer } from './comps/timer/timer';\nimport { ELeaderboardType } from './enums/leaderboard-type-enum';\nimport { useTimer } from './hooks/use-timer/use-timer';\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 [ELeaderboardType.INFINITE_TABLE]: LOTTIE.ELITE_CIRCLE,\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 name: 'TABLE INFINITY',\n type: ELeaderboardType.INFINITE_TABLE,\n },\n];\n\nconst leaderboardKeyMap: Record<ELeaderboardType, keyof ILeaderboardDetails> = {\n [ELeaderboardType.BI_WEEKLY]: 'biWeekly',\n [ELeaderboardType.ALL_TIME_STREAK]: 'globalStreak',\n [ELeaderboardType.ALL_TIME]: 'global',\n [ELeaderboardType.INFINITE_TABLE]: 'infiniteTable',\n};\n\nexport const Leaderboard = ({\n leaderboardData,\n type = ELeaderboardType.BI_WEEKLY,\n userId,\n onClose,\n isLoading,\n streakInfo,\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?.[leaderboardKeyMap[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?.[leaderboardKeyMap[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\n {/* infinite table banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.INFINITE_TABLE && (\n <Banner\n isLoading={isLoading}\n bgFromTopPosition={-140}\n bgFromRightPosition={-90}\n primaryText={'Table Infinity'}\n secondaryText={'Top 50'}\n lottiePath={BANNER_LOTTIES[ELeaderboardType.INFINITE_TABLE]}\n custEle={\n <Styled.InfiniteLeaderboardContainer>\n <img src={ILLUSTRATIONS.INFINITE_TABLE_LEADERBOARD} />\n </Styled.InfiniteLeaderboardContainer>\n }\n />\n )}\n </Styled.BannerWrapper>\n\n {isLoading && <CircularLoader />}\n\n {!isLoading && currLeaderboardData && (\n <Styled.ItemsWrapper>\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME_STREAK && (\n <StreakReductionInfoBar\n startTimestampToday={streakInfo.startTimestampToday}\n streakReduction={streakInfo.streakReduction}\n />\n )}\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","leaderboardKeyMap","Leaderboard","leaderboardData","type","userId","onClose","isLoading","streakInfo","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","_g","Styled.InfiniteLeaderboardContainer","CircularLoader","Styled.ItemsWrapper","_h","StreakReductionInfoBar","_i","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 { useEffect, useState } 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 { StreakReductionInfoBar } from './comps/streak-reduction-infobar/streak-reduction-infobar';\nimport { Timer } from './comps/timer/timer';\nimport { ELeaderboardType } from './enums/leaderboard-type-enum';\nimport { useTimer } from './hooks/use-timer/use-timer';\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 [ELeaderboardType.INFINITE_TABLE]: LOTTIE.ELITE_CIRCLE,\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 name: 'TABLE INFINITY',\n type: ELeaderboardType.INFINITE_TABLE,\n },\n];\n\nexport const Leaderboard = ({\n leaderboardData,\n type = ELeaderboardType.BI_WEEKLY,\n userId,\n onClose,\n isLoading,\n streakInfo,\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\n {/* infinite table banner */}\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.INFINITE_TABLE && (\n <Banner\n isLoading={isLoading}\n bgFromTopPosition={-140}\n bgFromRightPosition={-90}\n primaryText={'Table Infinity'}\n secondaryText={'Top 50'}\n lottiePath={BANNER_LOTTIES[ELeaderboardType.INFINITE_TABLE]}\n custEle={\n <Styled.InfiniteLeaderboardContainer>\n <img src={ILLUSTRATIONS.INFINITE_TABLE_LEADERBOARD} />\n </Styled.InfiniteLeaderboardContainer>\n }\n />\n )}\n </Styled.BannerWrapper>\n\n {isLoading && <CircularLoader />}\n\n {!isLoading && currLeaderboardData && (\n <Styled.ItemsWrapper>\n {leaderboards[currentLeaderBoardIndex]?.type === ELeaderboardType.ALL_TIME_STREAK && (\n <StreakReductionInfoBar\n startTimestampToday={streakInfo.startTimestampToday}\n streakReduction={streakInfo.streakReduction}\n />\n )}\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","streakInfo","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","_g","Styled.InfiniteLeaderboardContainer","CircularLoader","Styled.ItemsWrapper","_h","StreakReductionInfoBar","_i","Styled.Banner","Text","player","LeaderboardItemWithObserver","Styled.ActionButtonWrapper","NavigationButton"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
@@ -1437,9 +1437,9 @@ declare interface IGetLeaderboardPayloadModel {
|
|
1437
1437
|
|
1438
1438
|
declare interface IGetLeaderboardResponseModel {
|
1439
1439
|
global: ILeaderboardDetailsResponse;
|
1440
|
-
|
1441
|
-
|
1442
|
-
|
1440
|
+
bi_weekly: ILeaderboardDetailsResponse;
|
1441
|
+
global_streak: ILeaderboardDetailsResponse;
|
1442
|
+
infinite_table: ILeaderboardDetailsResponse;
|
1443
1443
|
}
|
1444
1444
|
|
1445
1445
|
declare interface IGetMilestoneResourcesAPIMetaData {
|
@@ -1682,9 +1682,9 @@ export declare interface ILayout {
|
|
1682
1682
|
|
1683
1683
|
export declare interface ILeaderboardDetails {
|
1684
1684
|
global: IPointsLeaderboardDetails;
|
1685
|
-
|
1686
|
-
|
1687
|
-
|
1685
|
+
bi_weekly: IPointsLeaderboardDetails;
|
1686
|
+
global_streak: IStreakLeaderboardDetails;
|
1687
|
+
infinite_table: IPointsLeaderboardDetails;
|
1688
1688
|
}
|
1689
1689
|
|
1690
1690
|
declare interface ILeaderboardDetailsResponse {
|