@cuemath/leap 2.8.25-rj-5 → 2.8.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/features/analytics-events/platform-events-student.js +5 -6
- package/dist/features/analytics-events/platform-events-student.js.map +1 -1
- package/dist/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/use-get-circle-home-details-dal.js +16 -17
- package/dist/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/use-get-circle-home-details-dal.js.map +1 -1
- package/dist/features/circle-games/games/web-view/web-view-types.js.map +1 -1
- package/dist/features/circle-games/leaderboard/leaderboard-styled.js +16 -20
- package/dist/features/circle-games/leaderboard/leaderboard-styled.js.map +1 -1
- package/dist/features/circle-games/leaderboard/leaderboard.js +74 -129
- package/dist/features/circle-games/leaderboard/leaderboard.js.map +1 -1
- package/dist/features/journey/journey-id/journey-id-student.js +1 -1
- package/dist/features/journey/journey-id/journey-id-student.js.map +1 -1
- package/dist/features/trial-session/comps/trial-circle-game/trial-circle-game.js +38 -39
- package/dist/features/trial-session/comps/trial-circle-game/trial-circle-game.js.map +1 -1
- package/dist/features/trial-session/trial-session-types.js.map +1 -1
- package/dist/features/trial-session/trial-session-view.js +66 -68
- package/dist/features/trial-session/trial-session-view.js.map +1 -1
- package/dist/features/worksheet/constants/events.js +2 -1
- package/dist/features/worksheet/constants/events.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js +4 -0
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +250 -219
- package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
- package/dist/features/worksheet/worksheet/worksheet.js +33 -32
- package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
- package/dist/index.d.ts +4 -17
- package/dist/index.js +153 -155
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/features/circle-games/enum/circle-action-ids.js +0 -5
- package/dist/features/circle-games/enum/circle-action-ids.js.map +0 -1
- package/dist/features/circle-games/leaderboard/comps/info-bar/info-bar-styled.js +0 -12
- package/dist/features/circle-games/leaderboard/comps/info-bar/info-bar-styled.js.map +0 -1
- package/dist/features/circle-games/leaderboard/comps/info-bar/info-bar.js +0 -30
- package/dist/features/circle-games/leaderboard/comps/info-bar/info-bar.js.map +0 -1
@@ -1,6 +1,6 @@
|
|
1
1
|
import { PLUGINS as t } from "../../node_modules/@cuemath/analytics-v2/dist/constants.js";
|
2
|
-
var
|
3
|
-
const
|
2
|
+
var _ = /* @__PURE__ */ ((e) => (e.PAGE_VIEWED = "page_viewed", e.CUSTOM_TEST_SUBMITTED = "custom_test_submitted", e.ACTIVITY_STARTED = "activity_started", e.ACTIVITY_TUTORIAL_SEEN = "activity_tutorial_seen", e.STREAK_ICON_CLICKED = "streak_icon_clicked", e.LEADERBOARD_BUTTON_CLICKED = "leaderboard_button_clicked", e.ONBOARDING_STEP_VIEWED = "onboarding_step_viewed", e.ONBOARDING_STEP_COMPLETED = "onboarding_step_completed", e))(_ || {});
|
3
|
+
const o = {
|
4
4
|
page_viewed: [t.MIXPANEL],
|
5
5
|
// circle on leap mixpanel events
|
6
6
|
activity_started: [t.MIXPANEL],
|
@@ -8,11 +8,10 @@ const I = {
|
|
8
8
|
streak_icon_clicked: [t.MIXPANEL],
|
9
9
|
leaderboard_button_clicked: [t.MIXPANEL],
|
10
10
|
onboarding_step_viewed: [t.MIXPANEL],
|
11
|
-
onboarding_step_completed: [t.MIXPANEL]
|
12
|
-
coachmark_dismissed: [t.MIXPANEL]
|
11
|
+
onboarding_step_completed: [t.MIXPANEL]
|
13
12
|
};
|
14
13
|
export {
|
15
|
-
|
16
|
-
|
14
|
+
_ as PLATFORM_EVENTS_STUDENT,
|
15
|
+
o as PLATFORM_WHITELIST_EVENTS_STUDENT
|
17
16
|
};
|
18
17
|
//# sourceMappingURL=platform-events-student.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"platform-events-student.js","sources":["../../../src/features/analytics-events/platform-events-student.ts"],"sourcesContent":["import { PLUGINS } from '@cuemath/analytics-v2/dist/constants';\n\n/**\n ** Global/Platform specific events that needs to be tracked goes here\n ** Naming convention needs to be snake_case\n */\nexport enum PLATFORM_EVENTS_STUDENT {\n PAGE_VIEWED = 'page_viewed',\n CUSTOM_TEST_SUBMITTED = 'custom_test_submitted',\n\n // circle on leap mixpanel events\n ACTIVITY_STARTED = 'activity_started',\n ACTIVITY_TUTORIAL_SEEN = 'activity_tutorial_seen',\n STREAK_ICON_CLICKED = 'streak_icon_clicked',\n LEADERBOARD_BUTTON_CLICKED = 'leaderboard_button_clicked',\n ONBOARDING_STEP_VIEWED = 'onboarding_step_viewed',\n ONBOARDING_STEP_COMPLETED = 'onboarding_step_completed',\n
|
1
|
+
{"version":3,"file":"platform-events-student.js","sources":["../../../src/features/analytics-events/platform-events-student.ts"],"sourcesContent":["import { PLUGINS } from '@cuemath/analytics-v2/dist/constants';\n\n/**\n ** Global/Platform specific events that needs to be tracked goes here\n ** Naming convention needs to be snake_case\n */\nexport enum PLATFORM_EVENTS_STUDENT {\n PAGE_VIEWED = 'page_viewed',\n CUSTOM_TEST_SUBMITTED = 'custom_test_submitted',\n\n // circle on leap mixpanel events\n ACTIVITY_STARTED = 'activity_started',\n ACTIVITY_TUTORIAL_SEEN = 'activity_tutorial_seen',\n STREAK_ICON_CLICKED = 'streak_icon_clicked',\n LEADERBOARD_BUTTON_CLICKED = 'leaderboard_button_clicked',\n ONBOARDING_STEP_VIEWED = 'onboarding_step_viewed',\n ONBOARDING_STEP_COMPLETED = 'onboarding_step_completed',\n}\n\n/**\n ** Events that need to be tracked at particular plugins\n ** Value will be array of strings.\n */\nexport const PLATFORM_WHITELIST_EVENTS_STUDENT = {\n [PLATFORM_EVENTS_STUDENT.PAGE_VIEWED]: [PLUGINS.MIXPANEL],\n\n // circle on leap mixpanel events\n [PLATFORM_EVENTS_STUDENT.ACTIVITY_STARTED]: [PLUGINS.MIXPANEL],\n [PLATFORM_EVENTS_STUDENT.ACTIVITY_TUTORIAL_SEEN]: [PLUGINS.MIXPANEL],\n [PLATFORM_EVENTS_STUDENT.STREAK_ICON_CLICKED]: [PLUGINS.MIXPANEL],\n [PLATFORM_EVENTS_STUDENT.LEADERBOARD_BUTTON_CLICKED]: [PLUGINS.MIXPANEL],\n [PLATFORM_EVENTS_STUDENT.ONBOARDING_STEP_VIEWED]: [PLUGINS.MIXPANEL],\n [PLATFORM_EVENTS_STUDENT.ONBOARDING_STEP_COMPLETED]: [PLUGINS.MIXPANEL],\n};\n"],"names":["PLATFORM_EVENTS_STUDENT","PLATFORM_WHITELIST_EVENTS_STUDENT","PLUGINS"],"mappings":";AAMY,IAAAA,sBAAAA,OACVA,EAAA,cAAc,eACdA,EAAA,wBAAwB,yBAGxBA,EAAA,mBAAmB,oBACnBA,EAAA,yBAAyB,0BACzBA,EAAA,sBAAsB,uBACtBA,EAAA,6BAA6B,8BAC7BA,EAAA,yBAAyB,0BACzBA,EAAA,4BAA4B,6BAVlBA,IAAAA,KAAA,CAAA,CAAA;AAiBL,MAAMC,IAAoC;AAAA,EAC9C,aAAsC,CAACC,EAAQ,QAAQ;AAAA;AAAA,EAGvD,kBAA2C,CAACA,EAAQ,QAAQ;AAAA,EAC5D,wBAAiD,CAACA,EAAQ,QAAQ;AAAA,EAClE,qBAA8C,CAACA,EAAQ,QAAQ;AAAA,EAC/D,4BAAqD,CAACA,EAAQ,QAAQ;AAAA,EACtE,wBAAiD,CAACA,EAAQ,QAAQ;AAAA,EAClE,2BAAoD,CAACA,EAAQ,QAAQ;AACxE;"}
|
@@ -1,26 +1,25 @@
|
|
1
1
|
import { useState as E, useCallback as d, useEffect as p } from "react";
|
2
|
-
import { useGetCircleHomeAPI as
|
3
|
-
import { ProjectType as
|
4
|
-
const O = (
|
5
|
-
const [c, _] = E(null), { data: a, get: m, isProcessed:
|
6
|
-
|
7
|
-
user_id:
|
8
|
-
country_code:
|
2
|
+
import { useGetCircleHomeAPI as C } from "../../api/get-content-for-today/get-circle-home-api.js";
|
3
|
+
import { ProjectType as i } from "../../../games/web-view/enums/project-type-enum.js";
|
4
|
+
const O = (r, o, n) => {
|
5
|
+
const [c, _] = E(null), { data: a, get: m, isProcessed: e, ...l } = C(), R = d(() => {
|
6
|
+
m("", {
|
7
|
+
user_id: r,
|
8
|
+
country_code: o,
|
9
9
|
grade: n
|
10
10
|
});
|
11
|
-
}, [m,
|
11
|
+
}, [m, r, o, n]);
|
12
12
|
return p(() => {
|
13
|
-
let
|
14
|
-
|
13
|
+
let s = null;
|
14
|
+
e && a && (s = {
|
15
15
|
points: a.points,
|
16
16
|
streakDays: a.streak_days,
|
17
|
-
streakReduction: a.streak_reduction,
|
18
17
|
streakStatus: a.streak_status,
|
19
18
|
tournamentRank: a.tournament_rank,
|
20
19
|
projects: {
|
21
20
|
games: {
|
22
21
|
label: a.projects.games.label,
|
23
|
-
type:
|
22
|
+
type: i.GAME,
|
24
23
|
initialProgressValue: 0,
|
25
24
|
data: a.projects.games.data.map((t) => ({
|
26
25
|
id: t.id,
|
@@ -33,7 +32,7 @@ const O = (o, e, n) => {
|
|
33
32
|
},
|
34
33
|
puzzles: {
|
35
34
|
label: a.projects.puzzles.label,
|
36
|
-
type:
|
35
|
+
type: i.PUZZLE,
|
37
36
|
initialProgressValue: 0,
|
38
37
|
data: a.projects.puzzles.data.map((t) => ({
|
39
38
|
id: t.id,
|
@@ -59,9 +58,9 @@ const O = (o, e, n) => {
|
|
59
58
|
CIRCLE_STREAK_UPDATE_JOURNEY: a.coachmark_completion.CIRCLE_STREAK_UPDATE_JOURNEY,
|
60
59
|
CIRCLE_TUTORIAL_JOURNEY: a.coachmark_completion.CIRCLE_TUTORIAL_JOURNEY
|
61
60
|
}
|
62
|
-
}, a.projects.lessons && (
|
61
|
+
}, a.projects.lessons && (s.projects.lessons = {
|
63
62
|
label: a.projects.lessons.label,
|
64
|
-
type:
|
63
|
+
type: i.LESSON,
|
65
64
|
initialProgressValue: 0,
|
66
65
|
data: a.projects.lessons.data.map((t) => ({
|
67
66
|
id: t.id,
|
@@ -74,8 +73,8 @@ const O = (o, e, n) => {
|
|
74
73
|
targetQuestions: t.target_questions,
|
75
74
|
status: t.status
|
76
75
|
}))
|
77
|
-
})), _(
|
78
|
-
}, [a,
|
76
|
+
})), _(s);
|
77
|
+
}, [a, e]), { data: c, isProcessed: e, getCircleHomeDetails: R, ...l };
|
79
78
|
};
|
80
79
|
export {
|
81
80
|
O as useGetCircleHomeDetailsDal
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"use-get-circle-home-details-dal.js","sources":["../../../../../../src/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/use-get-circle-home-details-dal.ts"],"sourcesContent":["import type { ICircleHomeDetails, TStreakStatus } from './use-get-circle-home-dal-types';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { ProjectType } from '../../../games/web-view/enums';\nimport { useGetCircleHomeAPI } from '../../api/get-content-for-today/get-circle-home-api';\n\nexport const useGetCircleHomeDetailsDal = (\n userId: string,\n countryCode: string,\n grade: string,\n): Omit<ReturnType<typeof useGetCircleHomeAPI>, 'data' | 'get'> & {\n data: ICircleHomeDetails | null;\n getCircleHomeDetails: () => void;\n} => {\n const [contentForToday, setContentForToday] = useState<ICircleHomeDetails | null>(null);\n const { data, get: getHomeDetails, isProcessed, ...rest } = useGetCircleHomeAPI();\n\n const getCircleHomeDetails = useCallback(() => {\n
|
1
|
+
{"version":3,"file":"use-get-circle-home-details-dal.js","sources":["../../../../../../src/features/circle-games/game-launcher/dal/use-get-circle-home-details-dal/use-get-circle-home-details-dal.ts"],"sourcesContent":["import type { ICircleHomeDetails, TStreakStatus } from './use-get-circle-home-dal-types';\n\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { ProjectType } from '../../../games/web-view/enums';\nimport { useGetCircleHomeAPI } from '../../api/get-content-for-today/get-circle-home-api';\n\nexport const useGetCircleHomeDetailsDal = (\n userId: string,\n countryCode: string,\n grade: string,\n): Omit<ReturnType<typeof useGetCircleHomeAPI>, 'data' | 'get'> & {\n data: ICircleHomeDetails | null;\n getCircleHomeDetails: () => void;\n} => {\n const [contentForToday, setContentForToday] = useState<ICircleHomeDetails | null>(null);\n const { data, get: getHomeDetails, isProcessed, ...rest } = useGetCircleHomeAPI();\n\n const getCircleHomeDetails = useCallback(() => {\n getHomeDetails('', {\n user_id: userId,\n country_code: countryCode,\n grade: grade,\n });\n }, [getHomeDetails, userId, countryCode, grade]);\n\n useEffect(() => {\n let circleHomeDetails: ICircleHomeDetails | null = null;\n\n if (isProcessed && data) {\n circleHomeDetails = {\n points: data.points,\n streakDays: data.streak_days,\n streakStatus: data.streak_status as TStreakStatus,\n tournamentRank: data.tournament_rank,\n projects: {\n games: {\n label: data.projects.games.label,\n type: ProjectType.GAME,\n initialProgressValue: 0,\n data: data.projects.games.data.map(game => ({\n id: game.id,\n name: game.name,\n cardLottie: game.card,\n tutorial: game.tutorial,\n variant: game.variant,\n isPlayed: game.played,\n })),\n },\n puzzles: {\n label: data.projects.puzzles.label,\n type: ProjectType.PUZZLE,\n initialProgressValue: 0,\n data: data.projects.puzzles.data.map(puzzle => ({\n id: puzzle.id,\n name: puzzle.name,\n cardLottie: puzzle.card,\n tutorial: puzzle.tutorial,\n variant: puzzle.variant,\n question: puzzle.question,\n isHintSeen: puzzle.is_hint_seen,\n solved: puzzle.solved,\n })),\n },\n },\n timestamps: {\n startTimestamp: data.timestamps.start_timestamp,\n endTimestamp: data.timestamps.end_timestamp,\n current: data.timestamps.current,\n },\n coachmarkProgress: {\n CIRCLE_ACTIVITIES_INTRO_JOURNEY:\n data.coachmark_completion.CIRCLE_ACTIVITIES_INTRO_JOURNEY,\n CIRCLE_LEADERBOARD_INTRO_JOURNEY:\n data.coachmark_completion.CIRCLE_LEADERBOARD_INTRO_JOURNEY,\n CIRCLE_POINTS_REWARD_JOURNEY: data.coachmark_completion.CIRCLE_POINTS_REWARD_JOURNEY,\n CIRCLE_STREAK_UPDATE_JOURNEY: data.coachmark_completion.CIRCLE_STREAK_UPDATE_JOURNEY,\n CIRCLE_TUTORIAL_JOURNEY: data.coachmark_completion.CIRCLE_TUTORIAL_JOURNEY,\n },\n };\n\n if (data.projects.lessons) {\n circleHomeDetails.projects.lessons = {\n label: data.projects.lessons.label,\n type: ProjectType.LESSON,\n initialProgressValue: 0,\n data: data.projects.lessons.data.map(lesson => ({\n id: lesson.id,\n name: lesson.name,\n cardLottie: lesson.card,\n tutorial: lesson.tutorial,\n variant: lesson.variant,\n sessionId: lesson.session_id,\n miniGameIdentifier: lesson.mini_game_identifier,\n targetQuestions: lesson.target_questions,\n status: lesson.status,\n })),\n };\n }\n }\n setContentForToday(circleHomeDetails);\n }, [data, isProcessed]);\n\n return { data: contentForToday, isProcessed, getCircleHomeDetails, ...rest };\n};\n"],"names":["useGetCircleHomeDetailsDal","userId","countryCode","grade","contentForToday","setContentForToday","useState","data","getHomeDetails","isProcessed","rest","useGetCircleHomeAPI","getCircleHomeDetails","useCallback","useEffect","circleHomeDetails","ProjectType","game","puzzle","lesson"],"mappings":";;;AAOO,MAAMA,IAA6B,CACxCC,GACAC,GACAC,MAIG;AACH,QAAM,CAACC,GAAiBC,CAAkB,IAAIC,EAAoC,IAAI,GAChF,EAAE,MAAAC,GAAM,KAAKC,GAAgB,aAAAC,GAAa,GAAGC,EAAA,IAASC,KAEtDC,IAAuBC,EAAY,MAAM;AAC7C,IAAAL,EAAe,IAAI;AAAA,MACjB,SAASP;AAAA,MACT,cAAcC;AAAA,MACd,OAAAC;AAAA,IAAA,CACD;AAAA,KACA,CAACK,GAAgBP,GAAQC,GAAaC,CAAK,CAAC;AAE/C,SAAAW,EAAU,MAAM;AACd,QAAIC,IAA+C;AAEnD,IAAIN,KAAeF,MACGQ,IAAA;AAAA,MAClB,QAAQR,EAAK;AAAA,MACb,YAAYA,EAAK;AAAA,MACjB,cAAcA,EAAK;AAAA,MACnB,gBAAgBA,EAAK;AAAA,MACrB,UAAU;AAAA,QACR,OAAO;AAAA,UACL,OAAOA,EAAK,SAAS,MAAM;AAAA,UAC3B,MAAMS,EAAY;AAAA,UAClB,sBAAsB;AAAA,UACtB,MAAMT,EAAK,SAAS,MAAM,KAAK,IAAI,CAASU,OAAA;AAAA,YAC1C,IAAIA,EAAK;AAAA,YACT,MAAMA,EAAK;AAAA,YACX,YAAYA,EAAK;AAAA,YACjB,UAAUA,EAAK;AAAA,YACf,SAASA,EAAK;AAAA,YACd,UAAUA,EAAK;AAAA,UAAA,EACf;AAAA,QACJ;AAAA,QACA,SAAS;AAAA,UACP,OAAOV,EAAK,SAAS,QAAQ;AAAA,UAC7B,MAAMS,EAAY;AAAA,UAClB,sBAAsB;AAAA,UACtB,MAAMT,EAAK,SAAS,QAAQ,KAAK,IAAI,CAAWW,OAAA;AAAA,YAC9C,IAAIA,EAAO;AAAA,YACX,MAAMA,EAAO;AAAA,YACb,YAAYA,EAAO;AAAA,YACnB,UAAUA,EAAO;AAAA,YACjB,SAASA,EAAO;AAAA,YAChB,UAAUA,EAAO;AAAA,YACjB,YAAYA,EAAO;AAAA,YACnB,QAAQA,EAAO;AAAA,UAAA,EACf;AAAA,QACJ;AAAA,MACF;AAAA,MACA,YAAY;AAAA,QACV,gBAAgBX,EAAK,WAAW;AAAA,QAChC,cAAcA,EAAK,WAAW;AAAA,QAC9B,SAASA,EAAK,WAAW;AAAA,MAC3B;AAAA,MACA,mBAAmB;AAAA,QACjB,iCACEA,EAAK,qBAAqB;AAAA,QAC5B,kCACEA,EAAK,qBAAqB;AAAA,QAC5B,8BAA8BA,EAAK,qBAAqB;AAAA,QACxD,8BAA8BA,EAAK,qBAAqB;AAAA,QACxD,yBAAyBA,EAAK,qBAAqB;AAAA,MACrD;AAAA,IAAA,GAGEA,EAAK,SAAS,YAChBQ,EAAkB,SAAS,UAAU;AAAA,MACnC,OAAOR,EAAK,SAAS,QAAQ;AAAA,MAC7B,MAAMS,EAAY;AAAA,MAClB,sBAAsB;AAAA,MACtB,MAAMT,EAAK,SAAS,QAAQ,KAAK,IAAI,CAAWY,OAAA;AAAA,QAC9C,IAAIA,EAAO;AAAA,QACX,MAAMA,EAAO;AAAA,QACb,YAAYA,EAAO;AAAA,QACnB,UAAUA,EAAO;AAAA,QACjB,SAASA,EAAO;AAAA,QAChB,WAAWA,EAAO;AAAA,QAClB,oBAAoBA,EAAO;AAAA,QAC3B,iBAAiBA,EAAO;AAAA,QACxB,QAAQA,EAAO;AAAA,MAAA,EACf;AAAA,IAAA,KAIRd,EAAmBU,CAAiB;AAAA,EAAA,GACnC,CAACR,GAAME,CAAW,CAAC,GAEf,EAAE,MAAML,GAAiB,aAAAK,GAAa,sBAAAG,GAAsB,GAAGF;AACxE;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"web-view-types.js","sources":["../../../../../src/features/circle-games/games/web-view/web-view-types.ts"],"sourcesContent":["import type { IAvatarLayer } from '../../../ui/avatar/avatar-types';\nimport type { TUserTypes } from '../../../ui/types';\nimport type {\n GameId,\n PuzzleId,\n LessonId,\n MiniGameId,\n WebViewEvent,\n ProjectOutcome,\n ProjectType,\n} from './enums';\nimport type { WEBVIEW_ANALYTICS_EVENTS } from './web-view-analytics-events';\nimport type { IframeHTMLAttributes } from 'react';\n\nexport type TProject = GameId | PuzzleId | LessonId;\n\nexport interface IPlayer {\n id: string;\n username: string;\n grade?: string;\n avatar?: IAvatarLayer[] | null;\n playerType: TUserTypes;\n
|
1
|
+
{"version":3,"file":"web-view-types.js","sources":["../../../../../src/features/circle-games/games/web-view/web-view-types.ts"],"sourcesContent":["import type { IAvatarLayer } from '../../../ui/avatar/avatar-types';\nimport type { TUserTypes } from '../../../ui/types';\nimport type {\n GameId,\n PuzzleId,\n LessonId,\n MiniGameId,\n WebViewEvent,\n ProjectOutcome,\n ProjectType,\n} from './enums';\nimport type { WEBVIEW_ANALYTICS_EVENTS } from './web-view-analytics-events';\nimport type { IframeHTMLAttributes } from 'react';\n\nexport type TProject = GameId | PuzzleId | LessonId;\n\nexport interface IPlayer {\n id: string;\n username: string;\n grade?: string;\n avatar?: IAvatarLayer[] | null;\n playerType: TUserTypes;\n}\n\ninterface IBaseWebGameProps<T> {\n projectId: T;\n variant: string;\n projectType: ProjectType;\n joinByRoomId?: string;\n enableSync?: boolean; // applicable for all except multiplayer games\n enablePlayerTurnIndicators?: boolean;\n enableCloseButton?: boolean;\n}\n\nexport interface IMultiplayerWebGameProps extends IBaseWebGameProps<GameId> {}\n\nexport interface IPuzzleWebGameProps extends IBaseWebGameProps<PuzzleId> {\n question: string;\n askHintPermission?: boolean;\n}\n\nexport interface ILessonWebGameProps extends IBaseWebGameProps<LessonId> {\n miniGameIdentifier: MiniGameId;\n sessionId: string;\n targetQuestions: number;\n}\n\nexport interface IVibrationPattern {\n pattern: number[] | number;\n}\n\nexport enum IStatsToAwardErrorCode {\n DEFAULT = 'default',\n SUCCESS = 'success',\n FAIL = 'fail',\n}\n\nexport interface IPlayerStats {\n points: number;\n accuracy: number;\n timeSpent: number;\n streakDays: number;\n streakStatusToday: 'pending' | 'completed';\n errorCode: IStatsToAwardErrorCode;\n outcome: ProjectOutcome;\n value: string;\n}\n\nexport interface IInfoMessage {\n message: string;\n position: 'top' | 'bottom';\n}\n\nexport interface ITrackEvent {\n eventName: typeof WEBVIEW_ANALYTICS_EVENTS;\n properties: Record<string, unknown>;\n}\n\nexport interface IWebViewProps extends IframeHTMLAttributes<HTMLIFrameElement> {\n baseUrl: string;\n projectDetails: IMultiplayerWebGameProps | IPuzzleWebGameProps | ILessonWebGameProps;\n playerDetails: IPlayer;\n onBack?: () => void;\n onGameLoad?: () => void;\n onGamePlayFinish?: (playerStats: IPlayerStats) => void;\n handleInfoMessage?: (infoMessage: IInfoMessage) => void;\n}\n\nexport interface IMessageProps {\n event: `${WebViewEvent}`;\n payload: IVibrationPattern | IPlayerStats | IInfoMessage | null;\n}\n"],"names":["IStatsToAwardErrorCode"],"mappings":"AAmDY,IAAAA,sBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,UAAU,WACVA,EAAA,OAAO,QAHGA,IAAAA,KAAA,CAAA,CAAA;"}
|
@@ -1,33 +1,32 @@
|
|
1
1
|
import t from "styled-components";
|
2
2
|
import { ARC_BUTTON_BOTTOM_OFFSET as i } from "../../ui/arc-button/constants.js";
|
3
|
-
import e from "
|
4
|
-
|
5
|
-
const s = t.div`
|
3
|
+
import { BANNER_HEIGHT as e } from "./comps/banner/constants.js";
|
4
|
+
const a = t.div`
|
6
5
|
flex-direction: column;
|
7
6
|
overflow: hidden;
|
8
7
|
height: 100vh;
|
9
8
|
max-height: 100%;
|
10
9
|
position: relative;
|
11
|
-
`,
|
10
|
+
`, p = t.div`
|
12
11
|
background: ${({ theme: o }) => o.colors.BLACK_1};
|
13
12
|
height: 100%;
|
14
13
|
position: relative;
|
15
14
|
width: 100%;
|
16
|
-
`,
|
15
|
+
`, s = t.div`
|
17
16
|
position: absolute;
|
18
17
|
top: 0;
|
19
18
|
width: 100%;
|
20
19
|
z-index: 10;
|
21
|
-
`,
|
20
|
+
`, c = t.div`
|
22
21
|
background: transparent;
|
23
22
|
position: absolute;
|
24
23
|
overflow: auto;
|
25
24
|
width: 100%;
|
26
25
|
flex: 1;
|
27
26
|
height: 100%;
|
28
|
-
padding-top: ${
|
27
|
+
padding-top: ${e}px;
|
29
28
|
padding-bottom: ${i}px;
|
30
|
-
`,
|
29
|
+
`, h = t.div`
|
31
30
|
position: absolute;
|
32
31
|
display: flex;
|
33
32
|
top: 5px;
|
@@ -36,7 +35,7 @@ const s = t.div`
|
|
36
35
|
height: 100%;
|
37
36
|
align-items: center;
|
38
37
|
justify-content: center;
|
39
|
-
`,
|
38
|
+
`, l = t.div`
|
40
39
|
position: absolute;
|
41
40
|
bottom: 0;
|
42
41
|
width: 100%;
|
@@ -45,7 +44,7 @@ const s = t.div`
|
|
45
44
|
justify-content: center;
|
46
45
|
width: 150%;
|
47
46
|
height: 150%;
|
48
|
-
`,
|
47
|
+
`, m = t.div`
|
49
48
|
background: ${({ theme: o }) => o.colors.YELLOW_6};
|
50
49
|
min-height: 32px;
|
51
50
|
width: 100%;
|
@@ -54,17 +53,14 @@ const s = t.div`
|
|
54
53
|
align-items: center;
|
55
54
|
justify-content: center;
|
56
55
|
`;
|
57
|
-
t(e)`
|
58
|
-
padding: 16px;
|
59
|
-
`;
|
60
56
|
export {
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
57
|
+
l as ActionButtonWrapper,
|
58
|
+
m as Banner,
|
59
|
+
s as BannerWrapper,
|
60
|
+
c as ItemsWrapper,
|
61
|
+
a as Leaderboard,
|
62
|
+
p as LeaderboardContainer,
|
63
|
+
h as TournamentBannerCustContainer,
|
68
64
|
g as TrophyWrapper
|
69
65
|
};
|
70
66
|
//# sourceMappingURL=leaderboard-styled.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"leaderboard-styled.js","sources":["../../../../src/features/circle-games/leaderboard/leaderboard-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport { ARC_BUTTON_BOTTOM_OFFSET } from '../../ui/arc-button/constants';\nimport
|
1
|
+
{"version":3,"file":"leaderboard-styled.js","sources":["../../../../src/features/circle-games/leaderboard/leaderboard-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport { ARC_BUTTON_BOTTOM_OFFSET } from '../../ui/arc-button/constants';\nimport { BANNER_HEIGHT } from './comps/banner/constants';\n\nexport const Leaderboard = styled.div`\n flex-direction: column;\n overflow: hidden;\n height: 100vh;\n max-height: 100%;\n position: relative;\n`;\n\nexport const LeaderboardContainer = styled.div`\n background: ${({ theme }) => theme.colors.BLACK_1};\n height: 100%;\n position: relative;\n width: 100%;\n`;\n\nexport const BannerWrapper = styled.div`\n position: absolute;\n top: 0;\n width: 100%;\n z-index: 10;\n`;\n\nexport const ItemsWrapper = styled.div<{ topInset: number }>`\n background: transparent;\n position: absolute;\n overflow: auto;\n width: 100%;\n flex: 1;\n height: 100%;\n padding-top: ${BANNER_HEIGHT}px;\n padding-bottom: ${ARC_BUTTON_BOTTOM_OFFSET}px;\n`;\n\nexport const TournamentBannerCustContainer = styled.div`\n position: absolute;\n display: flex;\n top: 5px;\n right: -2px;\n width: 200px;\n height: 100%;\n align-items: center;\n justify-content: center;\n`;\n\nexport const ActionButtonWrapper = styled.div`\n position: absolute;\n bottom: 0;\n width: 100%;\n`;\n\nexport const TrophyWrapper = styled.div`\n display: flex;\n justify-content: center;\n width: 150%;\n height: 150%;\n`;\n\nexport const Banner = styled.div`\n background: ${({ theme }) => theme.colors.YELLOW_6};\n min-height: 32px;\n width: 100%;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n`;\n"],"names":["Leaderboard","styled","LeaderboardContainer","theme","BannerWrapper","ItemsWrapper","BANNER_HEIGHT","ARC_BUTTON_BOTTOM_OFFSET","TournamentBannerCustContainer","ActionButtonWrapper","TrophyWrapper","Banner"],"mappings":";;;AAKO,MAAMA,IAAcC,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAQrBC,IAAuBD,EAAO;AAAA,gBAC3B,CAAC,EAAE,OAAAE,EAAA,MAAYA,EAAM,OAAO,OAAO;AAAA;AAAA;AAAA;AAAA,GAMtCC,IAAgBH,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAOvBI,IAAeJ,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iBAOlBK,CAAa;AAAA,oBACVC,CAAwB;AAAA,GAG/BC,IAAgCP,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAWvCQ,IAAsBR,EAAO;AAAA;AAAA;AAAA;AAAA,GAM7BS,IAAgBT,EAAO;AAAA;AAAA;AAAA;AAAA;AAAA,GAOvBU,IAASV,EAAO;AAAA,gBACb,CAAC,EAAE,OAAAE,EAAA,MAAYA,EAAM,OAAO,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
@@ -1,199 +1,144 @@
|
|
1
1
|
import { jsx as e, jsxs as c } from "react/jsx-runtime";
|
2
|
-
import { useState as
|
3
|
-
import { ILLUSTRATIONS as
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import {
|
7
|
-
import d from "
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
import
|
11
|
-
import {
|
12
|
-
import {
|
13
|
-
import {
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
[n.ALL_TIME_STREAK]: () => import("../../../assets/lotties/circle/elite-circle-lottie.json.js"),
|
19
|
-
[n.ALL_TIME]: () => import("../../../assets/lotties/circle/elite-circle-lottie.json.js"),
|
20
|
-
[n.BI_WEEKLY]: () => import("../../../assets/lotties/circle/tournament-ripple-lottie.json.js")
|
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";
|
7
|
+
import { Banner as d } from "./comps/banner/banner.js";
|
8
|
+
import { LeaderboardItemWithObserver as H } from "./comps/leaderboard-item/leaderboard-item.js";
|
9
|
+
import { NavigationButton as U } from "./comps/navigation-button/navigation-button.js";
|
10
|
+
import { Timer as q } from "./comps/timer/timer.js";
|
11
|
+
import { ELeaderboardType as t } from "./enums/leaderboard-type-enum.js";
|
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")
|
21
18
|
}, i = [
|
22
19
|
{
|
23
20
|
name: "TOURNAMENT",
|
24
|
-
type:
|
21
|
+
type: t.BI_WEEKLY
|
25
22
|
},
|
26
23
|
{
|
27
24
|
name: "STREAK STARS",
|
28
|
-
type:
|
25
|
+
type: t.ALL_TIME_STREAK
|
29
26
|
},
|
30
27
|
{
|
31
28
|
name: "ALL TIME",
|
32
|
-
type:
|
29
|
+
type: t.ALL_TIME
|
33
30
|
}
|
34
|
-
],
|
31
|
+
], Ee = ({
|
35
32
|
leaderboardData: m,
|
36
|
-
type: E =
|
37
|
-
userId:
|
38
|
-
onClose:
|
39
|
-
isLoading:
|
40
|
-
showInfoBar: F,
|
41
|
-
onInfoBarDismiss: I,
|
42
|
-
streakReduction: H
|
33
|
+
type: E = t.BI_WEEKLY,
|
34
|
+
userId: C,
|
35
|
+
onClose: P,
|
36
|
+
isLoading: p
|
43
37
|
}) => {
|
44
|
-
var
|
45
|
-
const [s,
|
38
|
+
var f, y, A, S, _, x, B;
|
39
|
+
const [s, l] = T(
|
46
40
|
i.findIndex((r) => E === r.type)
|
47
|
-
), [
|
41
|
+
), [n, W] = T(((f = m == null ? void 0 : m[E]) == null ? void 0 : f.leaderboardPlayers) || []), [L, K] = T({
|
48
42
|
current: 0,
|
49
43
|
end: 0
|
50
|
-
}), [
|
51
|
-
|
52
|
-
},
|
53
|
-
|
54
|
-
}, z = () => {
|
55
|
-
g(), f((r) => r + 1 === i.length ? 0 : r + 1);
|
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);
|
56
48
|
};
|
57
|
-
return
|
58
|
-
|
59
|
-
}, [
|
60
|
-
var
|
61
|
-
const r = (
|
49
|
+
return g(() => {
|
50
|
+
h(0);
|
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]);
|
62
54
|
if (o) {
|
63
|
-
const
|
64
|
-
r ===
|
55
|
+
const b = o.leaderboardPlayers || [];
|
56
|
+
r === t.BI_WEEKLY && (K({
|
65
57
|
current: o.currentTimestamp,
|
66
58
|
end: o.endTimestamp
|
67
|
-
}), o.currentTimestamp > o.endTimestamp && (
|
59
|
+
}), o.currentTimestamp > o.endTimestamp && (b.splice(10), k(!0))), W([...b]);
|
68
60
|
}
|
69
|
-
}, [s, m]), /* @__PURE__ */ e(
|
70
|
-
/* @__PURE__ */ c(
|
71
|
-
((
|
72
|
-
|
61
|
+
}, [s, m]), /* @__PURE__ */ e(z, { children: /* @__PURE__ */ c(G, { children: [
|
62
|
+
/* @__PURE__ */ c(J, { children: [
|
63
|
+
((S = i[s]) == null ? void 0 : S.type) === t.BI_WEEKLY && /* @__PURE__ */ e(
|
64
|
+
d,
|
73
65
|
{
|
74
|
-
isLoading:
|
66
|
+
isLoading: p || n.length === 0,
|
75
67
|
bgFromTopPosition: -120,
|
76
68
|
bgFromRightPosition: -110,
|
77
|
-
primaryText:
|
78
|
-
secondaryText:
|
69
|
+
primaryText: a ? /* @__PURE__ */ e("span", { children: "New Tournament" }) : /* @__PURE__ */ e("span", { children: "Tournament" }),
|
70
|
+
secondaryText: a ? /* @__PURE__ */ e("span", { children: "Starts Soon" }) : /* @__PURE__ */ c("span", { children: [
|
79
71
|
" ",
|
80
72
|
/* @__PURE__ */ e(
|
81
|
-
|
73
|
+
q,
|
82
74
|
{
|
83
|
-
fromTimestamp:
|
75
|
+
fromTimestamp: M + L.current,
|
84
76
|
endTimestamp: L.end
|
85
77
|
}
|
86
78
|
),
|
87
79
|
" ",
|
88
80
|
"left"
|
89
81
|
] }),
|
90
|
-
lottiePromise:
|
91
|
-
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 }) }) })
|
92
84
|
}
|
93
85
|
),
|
94
|
-
((
|
95
|
-
|
86
|
+
((_ = i[s]) == null ? void 0 : _.type) === t.ALL_TIME_STREAK && /* @__PURE__ */ e(
|
87
|
+
d,
|
96
88
|
{
|
97
|
-
isLoading:
|
89
|
+
isLoading: p,
|
98
90
|
bgFromTopPosition: -140,
|
99
91
|
bgFromRightPosition: -90,
|
100
92
|
primaryText: /* @__PURE__ */ e("span", { children: "Streak Stars" }),
|
101
93
|
secondaryText: /* @__PURE__ */ e("span", { children: "Top 50" }),
|
102
|
-
lottiePromise:
|
94
|
+
lottiePromise: u[t.ALL_TIME_STREAK]
|
103
95
|
}
|
104
96
|
),
|
105
|
-
((
|
106
|
-
|
97
|
+
((x = i[s]) == null ? void 0 : x.type) === t.ALL_TIME && /* @__PURE__ */ e(
|
98
|
+
d,
|
107
99
|
{
|
108
|
-
isLoading:
|
100
|
+
isLoading: p,
|
109
101
|
bgFromTopPosition: -140,
|
110
102
|
bgFromRightPosition: -90,
|
111
103
|
primaryText: /* @__PURE__ */ e("span", { children: "Elite Circle" }),
|
112
104
|
secondaryText: /* @__PURE__ */ e("span", { children: "Top 50" }),
|
113
|
-
lottiePromise:
|
105
|
+
lottiePromise: u[t.ALL_TIME]
|
114
106
|
}
|
115
107
|
)
|
116
108
|
] }),
|
117
|
-
|
118
|
-
!
|
119
|
-
|
120
|
-
|
121
|
-
{
|
122
|
-
children: /* @__PURE__ */ c(
|
123
|
-
T,
|
124
|
-
{
|
125
|
-
$flexDirection: "row",
|
126
|
-
$alignItems: "center",
|
127
|
-
$justifyContent: "space-between",
|
128
|
-
children: [
|
129
|
-
/* @__PURE__ */ e(d, { $renderAs: "ab2", $color: "WHITE_T_87", children: "Streak saved for the day! Come back tomorrow to keep increasing it." }),
|
130
|
-
/* @__PURE__ */ e(Y, { cursor: "pointer", color: "WHITE", onClick: A })
|
131
|
-
]
|
132
|
-
}
|
133
|
-
),
|
134
|
-
hue: "GREEN",
|
135
|
-
marginX: 16,
|
136
|
-
marginY: 16,
|
137
|
-
paddingX: 16,
|
138
|
-
paddingY: 16
|
139
|
-
}
|
140
|
-
),
|
141
|
-
_ && b && /* @__PURE__ */ e(
|
142
|
-
w,
|
143
|
-
{
|
144
|
-
children: /* @__PURE__ */ c(
|
145
|
-
T,
|
146
|
-
{
|
147
|
-
$flexDirection: "row",
|
148
|
-
$alignItems: "center",
|
149
|
-
$justifyContent: "space-between",
|
150
|
-
children: [
|
151
|
-
/* @__PURE__ */ c(T, { children: [
|
152
|
-
/* @__PURE__ */ e(d, { $renderAs: "ab2", $color: "WHITE_T_87", children: "Keep building your streak by completing an activity each day." }),
|
153
|
-
/* @__PURE__ */ e(d, { $renderAs: "ab2", $color: "WHITE_T_87", children: "For each day missed, your streak reduces by 1." })
|
154
|
-
] }),
|
155
|
-
/* @__PURE__ */ e(Y, { cursor: "pointer", color: "WHITE", onClick: A })
|
156
|
-
]
|
157
|
-
}
|
158
|
-
),
|
159
|
-
hue: "YELLOW",
|
160
|
-
marginX: 16,
|
161
|
-
marginY: 16,
|
162
|
-
paddingX: 16,
|
163
|
-
paddingY: 16
|
164
|
-
}
|
165
|
-
),
|
166
|
-
l && ((R = i[s]) == null ? void 0 : R.type) === n.BI_WEEKLY && /* @__PURE__ */ e(ae, { children: /* @__PURE__ */ e(d, { $renderAs: "ab3", $color: "WHITE", children: "Congratulating winners of the last tournament!" }) }),
|
167
|
-
t.map((r) => {
|
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!" }) }),
|
112
|
+
n.map((r) => {
|
168
113
|
var o;
|
169
114
|
return /* @__PURE__ */ e(
|
170
|
-
|
115
|
+
H,
|
171
116
|
{
|
172
117
|
player: r,
|
173
118
|
rank: r.rank,
|
174
|
-
maxStreakDays:
|
175
|
-
maxPoints:
|
119
|
+
maxStreakDays: Y,
|
120
|
+
maxPoints: N,
|
176
121
|
leaderboardType: (o = i[s]) == null ? void 0 : o.type,
|
177
|
-
isActive: r.userId ===
|
122
|
+
isActive: r.userId === C
|
178
123
|
},
|
179
124
|
r.rank
|
180
125
|
);
|
181
126
|
})
|
182
127
|
] }),
|
183
|
-
/* @__PURE__ */ e(
|
184
|
-
|
128
|
+
/* @__PURE__ */ e(D, { children: /* @__PURE__ */ e(
|
129
|
+
U,
|
185
130
|
{
|
186
|
-
labels: Object.values(
|
187
|
-
onLeftClick:
|
188
|
-
onRightClick:
|
131
|
+
labels: Object.values(t),
|
132
|
+
onLeftClick: F,
|
133
|
+
onRightClick: O,
|
189
134
|
currIndex: s,
|
190
|
-
onClose:
|
191
|
-
disableSwipe:
|
135
|
+
onClose: P,
|
136
|
+
disableSwipe: p || n.length === 0
|
192
137
|
}
|
193
138
|
) })
|
194
139
|
] }) });
|
195
140
|
};
|
196
141
|
export {
|
197
|
-
|
142
|
+
Ee as Leaderboard
|
198
143
|
};
|
199
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, useCallback } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport CrossIcon from '../../../assets/line-icons/icons/cross';\nimport FlexView from '../../ui/layout/flex-view';\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 InfoBar from './comps/info-bar/info-bar';\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 showInfoBar: showInfoBarByDefault,\n onInfoBarDismiss,\n streakReduction,\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 const [showInfoBar, setShowInfoBar] = useState(showInfoBarByDefault);\n\n const hasStreakReduced = streakReduction > 0;\n const handleInfoBarDismiss = useCallback(() => {\n setShowInfoBar(false);\n onInfoBarDismiss();\n }, [onInfoBarDismiss]);\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 {showInfoBar && !hasStreakReduced && (\n <InfoBar\n children={\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n >\n <Text $renderAs=\"ab2\" $color=\"WHITE_T_87\">\n Streak saved for the day! Come back tomorrow to keep increasing it.\n </Text>\n <CrossIcon cursor={'pointer'} color=\"WHITE\" onClick={handleInfoBarDismiss} />\n </FlexView>\n }\n hue=\"GREEN\"\n marginX={16}\n marginY={16}\n paddingX={16}\n paddingY={16}\n />\n )}\n\n {showInfoBar && hasStreakReduced && (\n <InfoBar\n children={\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n >\n <FlexView>\n <Text $renderAs=\"ab2\" $color=\"WHITE_T_87\">\n Keep building your streak by completing an activity each day.\n </Text>\n <Text $renderAs=\"ab2\" $color=\"WHITE_T_87\">\n For each day missed, your streak reduces by 1.\n </Text>\n </FlexView>\n <CrossIcon cursor={'pointer'} color=\"WHITE\" onClick={handleInfoBarDismiss} />\n </FlexView>\n }\n hue=\"YELLOW\"\n marginX={16}\n marginY={16}\n paddingX={16}\n paddingY={16}\n />\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","leaderboards","Leaderboard","leaderboardData","type","userId","onClose","isLoading","showInfoBarByDefault","onInfoBarDismiss","streakReduction","currentLeaderBoardIndex","setCurrentLeaderboardIndex","useState","leaderboard","currLeaderboardData","setCurrLeaderboardData","_a","currLeaderboardTimeStamps","setCurrLeaderboardTimeStamps","time","setTimer","useTimer","isTournamentEnded","setIsTournamentEnded","maxPoints","_b","maxStreakDays","_c","playButtonSound","useCircleSounds","showInfoBar","setShowInfoBar","hasStreakReduced","handleInfoBarDismiss","useCallback","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","InfoBar","FlexView","Text","CrossIcon","_g","Styled.Banner","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,4 +1,4 @@
|
|
1
|
-
var E = /* @__PURE__ */ ((R) => (R.CIRCLE_ACTIVITIES_INTRO_JOURNEY = "CIRCLE_ACTIVITIES_INTRO_JOURNEY", R.CIRCLE_LEADERBOARD_INTRO_JOURNEY = "CIRCLE_LEADERBOARD_INTRO_JOURNEY", R.CIRCLE_POINTS_REWARD_JOURNEY = "CIRCLE_POINTS_REWARD_JOURNEY", R.CIRCLE_STREAK_UPDATE_JOURNEY = "CIRCLE_STREAK_UPDATE_JOURNEY", R.CIRCLE_TUTORIAL_JOURNEY = "CIRCLE_TUTORIAL_JOURNEY", R
|
1
|
+
var E = /* @__PURE__ */ ((R) => (R.CIRCLE_ACTIVITIES_INTRO_JOURNEY = "CIRCLE_ACTIVITIES_INTRO_JOURNEY", R.CIRCLE_LEADERBOARD_INTRO_JOURNEY = "CIRCLE_LEADERBOARD_INTRO_JOURNEY", R.CIRCLE_POINTS_REWARD_JOURNEY = "CIRCLE_POINTS_REWARD_JOURNEY", R.CIRCLE_STREAK_UPDATE_JOURNEY = "CIRCLE_STREAK_UPDATE_JOURNEY", R.CIRCLE_TUTORIAL_JOURNEY = "CIRCLE_TUTORIAL_JOURNEY", R))(E || {});
|
2
2
|
export {
|
3
3
|
E as JOURNEY_ID_STUDENT
|
4
4
|
};
|