@cuemath/leap 2.8.38-hg2 → 2.8.38-hg4
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/game-launcher/game-launcher.js +1 -1
- package/dist/features/circle-games/game-launcher/game-launcher.js.map +1 -1
- package/dist/features/post-game-stats/digital-meter/digital-meter.js +40 -42
- package/dist/features/post-game-stats/digital-meter/digital-meter.js.map +1 -1
- package/dist/features/post-game-stats/number-count-animation/number-count-animation.js +23 -18
- package/dist/features/post-game-stats/number-count-animation/number-count-animation.js.map +1 -1
- package/package.json +2 -3
- package/dist/features/post-game-stats/number-count-animation/number-count-animation-styled.js +0 -30
- package/dist/features/post-game-stats/number-count-animation/number-count-animation-styled.js.map +0 -1
@@ -15,7 +15,7 @@ import { useGameLauncherJourney as w } from "./use-game-launcher-journey/use-gam
|
|
15
15
|
import { ProjectType as m } from "../games/web-view/enums/project-type-enum.js";
|
16
16
|
const G = H + J, ne = D(
|
17
17
|
({ onSegmentClick: r, onJourneyComplete: V, journeyId: u, data: e, isLoading: g, defaultIndex: N = 0 }) => {
|
18
|
-
const [R, M] = I(N), [p] = I(!
|
18
|
+
const [R, M] = I(N), [p] = I(!0), { playSwipSound: c, play: o } = Y(), {
|
19
19
|
gameRefs: a,
|
20
20
|
lessonRefs: C,
|
21
21
|
puzzleRefs: L,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"game-launcher.js","sources":["../../../../src/features/circle-games/game-launcher/game-launcher.tsx"],"sourcesContent":["import type { ITableDetails } from './comps/tables-card/tables-card-types';\nimport type {\n Game,\n Lesson,\n Puzzle,\n} from './dal/use-get-circle-home-details-dal/use-get-circle-home-dal-types';\nimport type { IGameLauncherProps } from './game-launcher-types';\nimport type { FC, ReactNode } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport { CircularLoader } from '../../ui/loader/circular-loader/circular-loader';\nimport LottieAnimation from '../../ui/lottie-animation/lottie-animation';\nimport { ProjectType } from '../games/web-view/enums';\nimport { useCircleSounds } from '../hooks/use-circle-sounds/use-circle-sounds';\nimport { CircleSoundKey } from '../hooks/use-circle-sounds/use-circle-sounds-enums';\nimport { GAME_LAUNCHER_SIZE } from './comps/card-container/constants';\nimport { Carousel } from './comps/carousel/carousel';\nimport { GAME_LAUNCHER_ASSET_PADDING } from './comps/segmented-game-card/constants';\nimport { SegmentedGameCard } from './comps/segmented-game-card/segmented-game-card';\nimport { TablesCard } from './comps/tables-card/tables-card';\nimport { GAME_LAUNCHER_ANALYTICS_EVENTS } from './game-launcher-analytics-events';\nimport { useGameLauncherJourney } from './use-game-launcher-journey/use-game-launcher-journey';\n\nconst sleepyBoiDimension = GAME_LAUNCHER_SIZE + GAME_LAUNCHER_ASSET_PADDING;\n\nexport const GameLauncher: FC<IGameLauncherProps> = memo(\n ({ onSegmentClick, onJourneyComplete, journeyId, data, isLoading, defaultIndex = 0 }) => {\n const [currentIndex, setCurrentIndex] = useState(defaultIndex);\n const [enableTables] = useState(false);\n\n const { playSwipSound, play } = useCircleSounds();\n const {\n gameRefs,\n lessonRefs,\n puzzleRefs,\n startJourney,\n carouselNextBtnRef,\n isJourneyInProgress,\n } = useGameLauncherJourney({\n setCarouselIndex: setCurrentIndex,\n onSegmentClick,\n onJourneyComplete,\n });\n\n const onTableSegmentClick = useCallback(\n (table: ITableDetails) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(table, ProjectType.TABLE);\n },\n [onSegmentClick, play],\n );\n\n const handleLessonSegmentClick = useCallback(\n (lesson: Lesson) => {\n if (lesson.status !== 'completed') {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(lesson, ProjectType.LESSON);\n }\n },\n [onSegmentClick, play],\n );\n\n const handleGameSegmentClick = useCallback(\n (game: Game) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(game, ProjectType.GAME);\n },\n [onSegmentClick, play],\n );\n\n const handlePuzzleSegmentClick = useCallback(\n (puzzle: Puzzle) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(puzzle, ProjectType.PUZZLE);\n },\n [onSegmentClick, play],\n );\n\n const items = useMemo(() => {\n let itemTypes: ReactNode[] = [];\n\n if (data) {\n if (data.lessons) {\n itemTypes = [\n ...itemTypes,\n <SegmentedGameCard\n ref={lessonRefs}\n label={data.lessons.label}\n value={data.lessons.data.filter(lesson => lesson.status === 'completed').length}\n maxValue={data.lessons.data.length}\n initialValue={data.lessons.initialProgressValue}\n data={data?.lessons.data.map(lesson => ({\n card: lesson.cardLottie,\n name: lesson.name,\n isCompleted: lesson.status === 'completed',\n onPress: () => handleLessonSegmentClick(lesson),\n }))}\n />,\n ];\n }\n\n itemTypes = [\n ...itemTypes,\n <SegmentedGameCard\n ref={gameRefs}\n label={data.games.label}\n value={data.games.data.filter(game => game.isPlayed).length}\n maxValue={data.games.data.length}\n initialValue={data.games.initialProgressValue}\n data={data.games.data.map(game => ({\n card: game.cardLottie,\n name: game.name,\n isCompleted: false,\n onPress: () => handleGameSegmentClick(game),\n }))}\n />,\n <SegmentedGameCard\n ref={puzzleRefs}\n label={data.puzzles.label}\n value={data.puzzles.data.filter(puzzle => puzzle.solved).length}\n maxValue={data.puzzles.data.length}\n initialValue={data.puzzles.initialProgressValue}\n data={data.puzzles.data.map(puzzle => ({\n card: puzzle.cardLottie,\n name: puzzle.name,\n isCompleted: puzzle.solved,\n onPress: () => handlePuzzleSegmentClick(puzzle),\n }))}\n />,\n ];\n\n if (data.tables && enableTables) {\n itemTypes = [\n ...itemTypes,\n <TablesCard\n label={data.tables.label}\n data={data.tables.data}\n onPress={onTableSegmentClick}\n openModesOfTable={data.tables.openModesOfTable}\n />,\n ];\n }\n }\n\n return itemTypes;\n }, [\n data,\n gameRefs,\n lessonRefs,\n puzzleRefs,\n handleLessonSegmentClick,\n onTableSegmentClick,\n handlePuzzleSegmentClick,\n handleGameSegmentClick,\n enableTables,\n ]);\n\n const sleepyBoiItem = useMemo(\n () => [\n <LottieAnimation\n src={LOTTIE.SLEEPY_BOI}\n width={sleepyBoiDimension}\n height={sleepyBoiDimension}\n />,\n ],\n [],\n );\n\n // Start game launcher journey when the data for puzzles is available\n useEffect(() => {\n if (data?.puzzles && journeyId && isJourneyInProgress) {\n startJourney(data?.puzzles, !!data?.lessons, journeyId);\n }\n }, [data?.lessons, data?.puzzles, isJourneyInProgress, journeyId, startJourney]);\n\n if (isLoading) {\n return <CircularLoader />;\n }\n\n if (!data) {\n return (\n <Carousel\n ref={carouselNextBtnRef}\n items={sleepyBoiItem}\n analyticsNext={{\n analyticsLabel: '',\n }}\n analyticsPrev={{\n analyticsLabel: '',\n }}\n />\n );\n }\n\n return (\n <Carousel\n ref={carouselNextBtnRef}\n items={items}\n defaultIndex={currentIndex}\n onNext={playSwipSound}\n onPrev={playSwipSound}\n analyticsNext={{\n analyticsLabel: GAME_LAUNCHER_ANALYTICS_EVENTS.NEXT_ACTIVITY,\n }}\n analyticsPrev={{\n analyticsLabel: GAME_LAUNCHER_ANALYTICS_EVENTS.PREV_ACTIVITY,\n }}\n />\n );\n },\n);\n"],"names":["sleepyBoiDimension","GAME_LAUNCHER_SIZE","GAME_LAUNCHER_ASSET_PADDING","GameLauncher","memo","onSegmentClick","onJourneyComplete","journeyId","data","isLoading","defaultIndex","currentIndex","setCurrentIndex","useState","enableTables","playSwipSound","play","useCircleSounds","gameRefs","lessonRefs","puzzleRefs","startJourney","carouselNextBtnRef","isJourneyInProgress","useGameLauncherJourney","onTableSegmentClick","useCallback","table","CircleSoundKey","ProjectType","handleLessonSegmentClick","lesson","handleGameSegmentClick","game","handlePuzzleSegmentClick","puzzle","items","useMemo","itemTypes","jsx","SegmentedGameCard","TablesCard","sleepyBoiItem","LottieAnimation","LOTTIE","useEffect","CircularLoader","Carousel","GAME_LAUNCHER_ANALYTICS_EVENTS"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"game-launcher.js","sources":["../../../../src/features/circle-games/game-launcher/game-launcher.tsx"],"sourcesContent":["import type { ITableDetails } from './comps/tables-card/tables-card-types';\nimport type {\n Game,\n Lesson,\n Puzzle,\n} from './dal/use-get-circle-home-details-dal/use-get-circle-home-dal-types';\nimport type { IGameLauncherProps } from './game-launcher-types';\nimport type { FC, ReactNode } from 'react';\n\nimport { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport { CircularLoader } from '../../ui/loader/circular-loader/circular-loader';\nimport LottieAnimation from '../../ui/lottie-animation/lottie-animation';\nimport { ProjectType } from '../games/web-view/enums';\nimport { useCircleSounds } from '../hooks/use-circle-sounds/use-circle-sounds';\nimport { CircleSoundKey } from '../hooks/use-circle-sounds/use-circle-sounds-enums';\nimport { GAME_LAUNCHER_SIZE } from './comps/card-container/constants';\nimport { Carousel } from './comps/carousel/carousel';\nimport { GAME_LAUNCHER_ASSET_PADDING } from './comps/segmented-game-card/constants';\nimport { SegmentedGameCard } from './comps/segmented-game-card/segmented-game-card';\nimport { TablesCard } from './comps/tables-card/tables-card';\nimport { GAME_LAUNCHER_ANALYTICS_EVENTS } from './game-launcher-analytics-events';\nimport { useGameLauncherJourney } from './use-game-launcher-journey/use-game-launcher-journey';\n\nconst sleepyBoiDimension = GAME_LAUNCHER_SIZE + GAME_LAUNCHER_ASSET_PADDING;\n\nexport const GameLauncher: FC<IGameLauncherProps> = memo(\n ({ onSegmentClick, onJourneyComplete, journeyId, data, isLoading, defaultIndex = 0 }) => {\n const [currentIndex, setCurrentIndex] = useState(defaultIndex);\n const [enableTables] = useState(true);\n\n const { playSwipSound, play } = useCircleSounds();\n const {\n gameRefs,\n lessonRefs,\n puzzleRefs,\n startJourney,\n carouselNextBtnRef,\n isJourneyInProgress,\n } = useGameLauncherJourney({\n setCarouselIndex: setCurrentIndex,\n onSegmentClick,\n onJourneyComplete,\n });\n\n const onTableSegmentClick = useCallback(\n (table: ITableDetails) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(table, ProjectType.TABLE);\n },\n [onSegmentClick, play],\n );\n\n const handleLessonSegmentClick = useCallback(\n (lesson: Lesson) => {\n if (lesson.status !== 'completed') {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(lesson, ProjectType.LESSON);\n }\n },\n [onSegmentClick, play],\n );\n\n const handleGameSegmentClick = useCallback(\n (game: Game) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(game, ProjectType.GAME);\n },\n [onSegmentClick, play],\n );\n\n const handlePuzzleSegmentClick = useCallback(\n (puzzle: Puzzle) => {\n play(CircleSoundKey.GAME_CARD_CLICK);\n onSegmentClick(puzzle, ProjectType.PUZZLE);\n },\n [onSegmentClick, play],\n );\n\n const items = useMemo(() => {\n let itemTypes: ReactNode[] = [];\n\n if (data) {\n if (data.lessons) {\n itemTypes = [\n ...itemTypes,\n <SegmentedGameCard\n ref={lessonRefs}\n label={data.lessons.label}\n value={data.lessons.data.filter(lesson => lesson.status === 'completed').length}\n maxValue={data.lessons.data.length}\n initialValue={data.lessons.initialProgressValue}\n data={data?.lessons.data.map(lesson => ({\n card: lesson.cardLottie,\n name: lesson.name,\n isCompleted: lesson.status === 'completed',\n onPress: () => handleLessonSegmentClick(lesson),\n }))}\n />,\n ];\n }\n\n itemTypes = [\n ...itemTypes,\n <SegmentedGameCard\n ref={gameRefs}\n label={data.games.label}\n value={data.games.data.filter(game => game.isPlayed).length}\n maxValue={data.games.data.length}\n initialValue={data.games.initialProgressValue}\n data={data.games.data.map(game => ({\n card: game.cardLottie,\n name: game.name,\n isCompleted: false,\n onPress: () => handleGameSegmentClick(game),\n }))}\n />,\n <SegmentedGameCard\n ref={puzzleRefs}\n label={data.puzzles.label}\n value={data.puzzles.data.filter(puzzle => puzzle.solved).length}\n maxValue={data.puzzles.data.length}\n initialValue={data.puzzles.initialProgressValue}\n data={data.puzzles.data.map(puzzle => ({\n card: puzzle.cardLottie,\n name: puzzle.name,\n isCompleted: puzzle.solved,\n onPress: () => handlePuzzleSegmentClick(puzzle),\n }))}\n />,\n ];\n\n if (data.tables && enableTables) {\n itemTypes = [\n ...itemTypes,\n <TablesCard\n label={data.tables.label}\n data={data.tables.data}\n onPress={onTableSegmentClick}\n openModesOfTable={data.tables.openModesOfTable}\n />,\n ];\n }\n }\n\n return itemTypes;\n }, [\n data,\n gameRefs,\n lessonRefs,\n puzzleRefs,\n handleLessonSegmentClick,\n onTableSegmentClick,\n handlePuzzleSegmentClick,\n handleGameSegmentClick,\n enableTables,\n ]);\n\n const sleepyBoiItem = useMemo(\n () => [\n <LottieAnimation\n src={LOTTIE.SLEEPY_BOI}\n width={sleepyBoiDimension}\n height={sleepyBoiDimension}\n />,\n ],\n [],\n );\n\n // Start game launcher journey when the data for puzzles is available\n useEffect(() => {\n if (data?.puzzles && journeyId && isJourneyInProgress) {\n startJourney(data?.puzzles, !!data?.lessons, journeyId);\n }\n }, [data?.lessons, data?.puzzles, isJourneyInProgress, journeyId, startJourney]);\n\n if (isLoading) {\n return <CircularLoader />;\n }\n\n if (!data) {\n return (\n <Carousel\n ref={carouselNextBtnRef}\n items={sleepyBoiItem}\n analyticsNext={{\n analyticsLabel: '',\n }}\n analyticsPrev={{\n analyticsLabel: '',\n }}\n />\n );\n }\n\n return (\n <Carousel\n ref={carouselNextBtnRef}\n items={items}\n defaultIndex={currentIndex}\n onNext={playSwipSound}\n onPrev={playSwipSound}\n analyticsNext={{\n analyticsLabel: GAME_LAUNCHER_ANALYTICS_EVENTS.NEXT_ACTIVITY,\n }}\n analyticsPrev={{\n analyticsLabel: GAME_LAUNCHER_ANALYTICS_EVENTS.PREV_ACTIVITY,\n }}\n />\n );\n },\n);\n"],"names":["sleepyBoiDimension","GAME_LAUNCHER_SIZE","GAME_LAUNCHER_ASSET_PADDING","GameLauncher","memo","onSegmentClick","onJourneyComplete","journeyId","data","isLoading","defaultIndex","currentIndex","setCurrentIndex","useState","enableTables","playSwipSound","play","useCircleSounds","gameRefs","lessonRefs","puzzleRefs","startJourney","carouselNextBtnRef","isJourneyInProgress","useGameLauncherJourney","onTableSegmentClick","useCallback","table","CircleSoundKey","ProjectType","handleLessonSegmentClick","lesson","handleGameSegmentClick","game","handlePuzzleSegmentClick","puzzle","items","useMemo","itemTypes","jsx","SegmentedGameCard","TablesCard","sleepyBoiItem","LottieAnimation","LOTTIE","useEffect","CircularLoader","Carousel","GAME_LAUNCHER_ANALYTICS_EVENTS"],"mappings":"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"}
|
@@ -5,71 +5,69 @@ import { GAME_LAUNCHER_SIZE as i, GAME_LAUNCHER_SIZE_LARGE as c } from "../../ci
|
|
5
5
|
import I from "../../ui/layout/flex-view.js";
|
6
6
|
import P from "../../ui/lottie-animation/lottie-animation.js";
|
7
7
|
import R from "../../ui/separator/separator.js";
|
8
|
-
import
|
8
|
+
import N from "../../ui/text/text.js";
|
9
9
|
import { NumberCountAnimation as j } from "../number-count-animation/number-count-animation.js";
|
10
10
|
import { AnimatedArc as p } from "./comp/animated-arc/animated-arc.js";
|
11
|
-
import { TARGET_ACHIEVED_DELAY as
|
12
|
-
import { DigitalMeter as Z, ContentContainer as
|
11
|
+
import { TARGET_ACHIEVED_DELAY as S, TOTAL_ARC_AVAILABLE as d, BORDER_OFFSET as C, PROGRESS_FILL_DURATION as E, PROGRESS_FILL_DELAY as L, TOTAL_ANIMATION_DURATION as K } from "./constants.js";
|
12
|
+
import { DigitalMeter as Z, ContentContainer as X, NumberCountContainer as q, RainboxColorText as b, LineMarking as u, MarkingContainer as G, MarkingText as D, BottomAbsoluteView as M, HelperTextPrimary as z, HelperTextSecondary as J } from "./digital-meter-styled.js";
|
13
13
|
import { useCircleSounds as Q } from "../../circle-games/hooks/use-circle-sounds/use-circle-sounds.js";
|
14
|
-
import { CircleSoundKey as
|
15
|
-
const
|
14
|
+
import { CircleSoundKey as m } from "../../circle-games/hooks/use-circle-sounds/use-circle-sounds-enums.js";
|
15
|
+
const Tr = W(
|
16
16
|
({
|
17
17
|
show: _,
|
18
|
-
value:
|
18
|
+
value: h,
|
19
19
|
maxValue: n,
|
20
|
-
targetValue:
|
20
|
+
targetValue: A = 0,
|
21
21
|
displayText: H,
|
22
22
|
progressType: s,
|
23
23
|
helperTextPrimary: O,
|
24
24
|
helperTextSecondary: F,
|
25
25
|
onComplete: k,
|
26
|
-
actAsTimer:
|
26
|
+
actAsTimer: f
|
27
27
|
}) => {
|
28
|
-
const [
|
28
|
+
const [a, y] = U(!1), { play: g } = Q(), T = w((t) => A ? f ? t <= A : t >= A : !1, []);
|
29
29
|
return B(() => {
|
30
30
|
let t, e;
|
31
|
-
const l =
|
32
|
-
return _ && (f
|
33
|
-
f
|
34
|
-
},
|
31
|
+
const l = T(h);
|
32
|
+
return _ && (g(f ? m.TIME_INTRO : m.ACCURACY_INTRO), g(m.METER_FILL), l && (t = setTimeout(() => {
|
33
|
+
g(f ? m.TIME_TARGET : m.ACCURACY_TARGET), y(!0);
|
34
|
+
}, S * 1e3)), e = setTimeout(() => {
|
35
35
|
k();
|
36
|
-
}, (l ? K :
|
36
|
+
}, (l ? K : S) * 1e3)), () => {
|
37
37
|
t && clearTimeout(t), e && clearTimeout(e);
|
38
38
|
};
|
39
|
-
}, [_,
|
39
|
+
}, [_, h, k, T]), _ ? /* @__PURE__ */ o(Z, { $isTargetAchieved: a, children: [
|
40
40
|
/* @__PURE__ */ r(
|
41
41
|
p,
|
42
42
|
{
|
43
|
-
targetAngle:
|
43
|
+
targetAngle: d,
|
44
44
|
strokeWidth: i === c ? 16 : 12,
|
45
45
|
color: "BLACK_5",
|
46
46
|
radius: (i - C) / 2,
|
47
47
|
duration: 0
|
48
48
|
}
|
49
49
|
),
|
50
|
-
/* @__PURE__ */ r(
|
50
|
+
/* @__PURE__ */ r(X, { children: /* @__PURE__ */ o(I, { $flexDirection: "column", $alignItems: "center", children: [
|
51
51
|
/* @__PURE__ */ o(I, { $flexDirection: "row", $alignItems: "flex-end", children: [
|
52
|
-
/* @__PURE__ */ r(
|
52
|
+
/* @__PURE__ */ r(q, { children: /* @__PURE__ */ r(
|
53
53
|
b,
|
54
54
|
{
|
55
55
|
$renderAs: i === c ? "ah1" : "ah2",
|
56
56
|
$color: "GREEN_4",
|
57
|
-
$isTargetAchieved:
|
57
|
+
$isTargetAchieved: a,
|
58
58
|
children: /* @__PURE__ */ r(
|
59
59
|
j,
|
60
60
|
{
|
61
|
-
uniqueId: A.toString(),
|
62
61
|
initialValue: 0,
|
63
|
-
targetValue: Math.floor(
|
62
|
+
targetValue: Math.floor(h),
|
64
63
|
durationInSec: E,
|
65
64
|
delayInSec: L
|
66
|
-
}
|
67
|
-
"digital-meter" + A
|
65
|
+
}
|
68
66
|
)
|
69
67
|
}
|
70
68
|
) }),
|
71
69
|
s === "stepper" && /* @__PURE__ */ o(
|
72
|
-
|
70
|
+
N,
|
73
71
|
{
|
74
72
|
$renderAs: i === c ? "ah4" : "ab1",
|
75
73
|
$color: "WHITE",
|
@@ -82,7 +80,7 @@ const mr = W(
|
|
82
80
|
] }),
|
83
81
|
/* @__PURE__ */ r(R, { height: 8 }),
|
84
82
|
/* @__PURE__ */ r(
|
85
|
-
|
83
|
+
N,
|
86
84
|
{
|
87
85
|
$renderAs: i === c ? "ac3-black" : "ac4-black",
|
88
86
|
$color: "WHITE_T_60",
|
@@ -90,8 +88,8 @@ const mr = W(
|
|
90
88
|
}
|
91
89
|
)
|
92
90
|
] }) }),
|
93
|
-
s === "stepper" && Array.from({ length:
|
94
|
-
const l =
|
91
|
+
s === "stepper" && Array.from({ length: h }, (t, e) => {
|
92
|
+
const l = d / n;
|
95
93
|
return /* @__PURE__ */ r(
|
96
94
|
p,
|
97
95
|
{
|
@@ -103,21 +101,21 @@ const mr = W(
|
|
103
101
|
mode: "fade",
|
104
102
|
duration: E / n,
|
105
103
|
delay: L + E / n * e,
|
106
|
-
playRainbowColors:
|
104
|
+
playRainbowColors: a
|
107
105
|
},
|
108
106
|
e
|
109
107
|
);
|
110
108
|
}),
|
111
109
|
s === "stepper" && Array.from({ length: n + 1 }, (t, e) => {
|
112
|
-
const l =
|
110
|
+
const l = d / n;
|
113
111
|
return /* @__PURE__ */ o($, { children: [
|
114
112
|
/* @__PURE__ */ r(u, { $angle: l * e }, e + "linemarking"),
|
115
113
|
/* @__PURE__ */ r(G, { $angle: l * e, children: /* @__PURE__ */ r(D, { $angle: l * e, children: /* @__PURE__ */ r(
|
116
114
|
b,
|
117
115
|
{
|
118
116
|
$renderAs: i === c ? "ac3-black" : "ac4-black",
|
119
|
-
$isTargetAchieved:
|
120
|
-
$color:
|
117
|
+
$isTargetAchieved: T(e) && a,
|
118
|
+
$color: A && T(e) ? "GREEN_4" : "WHITE_T_60",
|
121
119
|
children: e
|
122
120
|
}
|
123
121
|
) }) }, e)
|
@@ -127,27 +125,27 @@ const mr = W(
|
|
127
125
|
/* @__PURE__ */ r(
|
128
126
|
p,
|
129
127
|
{
|
130
|
-
targetAngle:
|
128
|
+
targetAngle: h * d / n,
|
131
129
|
strokeWidth: i === c ? 16 : 12,
|
132
130
|
color: "GREEN_4",
|
133
131
|
radius: (i - C) / 2,
|
134
132
|
duration: E,
|
135
133
|
delay: L,
|
136
|
-
playRainbowColors:
|
134
|
+
playRainbowColors: a
|
137
135
|
}
|
138
136
|
),
|
139
137
|
/* @__PURE__ */ o($, { children: [
|
140
|
-
|
141
|
-
Array.from(/* @__PURE__ */ new Set([0,
|
138
|
+
A && /* @__PURE__ */ r(u, { $angle: A * d / n }),
|
139
|
+
Array.from(/* @__PURE__ */ new Set([0, A, n])).map((t, e) => /* @__PURE__ */ r(
|
142
140
|
G,
|
143
141
|
{
|
144
|
-
$angle: t *
|
145
|
-
children: /* @__PURE__ */ r(D, { $angle: t *
|
142
|
+
$angle: t * d / n,
|
143
|
+
children: /* @__PURE__ */ r(D, { $angle: t * d / n, children: /* @__PURE__ */ r(
|
146
144
|
b,
|
147
145
|
{
|
148
146
|
$renderAs: i === c ? "ac3-black" : "ac4-black",
|
149
|
-
$color:
|
150
|
-
$isTargetAchieved:
|
147
|
+
$color: A && T(t) ? "GREEN_4" : "WHITE_T_60",
|
148
|
+
$isTargetAchieved: h >= t && a && T(t),
|
151
149
|
children: t
|
152
150
|
}
|
153
151
|
) })
|
@@ -156,8 +154,8 @@ const mr = W(
|
|
156
154
|
))
|
157
155
|
] })
|
158
156
|
] }),
|
159
|
-
|
160
|
-
!
|
157
|
+
a && /* @__PURE__ */ r(M, { top: i, children: /* @__PURE__ */ r(P, { src: Y.TARGET_ACHIEVED_TEXT }) }),
|
158
|
+
!a && /* @__PURE__ */ o(M, { top: i, children: [
|
161
159
|
/* @__PURE__ */ r(R, { height: 25 }),
|
162
160
|
/* @__PURE__ */ o(I, { $flexDirection: "column", $alignItems: "center", children: [
|
163
161
|
/* @__PURE__ */ o(
|
@@ -185,6 +183,6 @@ const mr = W(
|
|
185
183
|
}
|
186
184
|
);
|
187
185
|
export {
|
188
|
-
|
186
|
+
Tr as DigitalMeter
|
189
187
|
};
|
190
188
|
//# sourceMappingURL=digital-meter.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"digital-meter.js","sources":["../../../../src/features/post-game-stats/digital-meter/digital-meter.tsx"],"sourcesContent":["import type { IDigitalMeterProps } from './digital-meter-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useState } from 'react';\n\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport {\n GAME_LAUNCHER_SIZE,\n GAME_LAUNCHER_SIZE_LARGE,\n} from '../../circle-games/game-launcher/comps/card-container/constants';\nimport FlexView from '../../ui/layout/flex-view';\nimport LottieAnimation from '../../ui/lottie-animation/lottie-animation';\nimport Separator from '../../ui/separator/separator';\nimport Text from '../../ui/text/text';\nimport { NumberCountAnimation } from '../number-count-animation/number-count-animation';\nimport { AnimatedArc } from './comp/animated-arc/animated-arc';\nimport {\n BORDER_OFFSET,\n PROGRESS_FILL_DELAY,\n PROGRESS_FILL_DURATION,\n TARGET_ACHIEVED_DELAY,\n TOTAL_ANIMATION_DURATION,\n TOTAL_ARC_AVAILABLE,\n} from './constants';\nimport * as Styled from './digital-meter-styled';\nimport { useCircleSounds } from '../../circle-games/hooks/use-circle-sounds/use-circle-sounds';\nimport { CircleSoundKey } from '../../circle-games/hooks/use-circle-sounds/use-circle-sounds-enums';\n\nexport const DigitalMeter: FC<IDigitalMeterProps> = memo(\n ({\n show,\n value,\n maxValue,\n targetValue = 0,\n displayText,\n progressType,\n helperTextPrimary,\n helperTextSecondary,\n onComplete,\n actAsTimer,\n }) => {\n const [isTargetAchieved, setIsTargetAchieved] = useState(false);\n const { play } = useCircleSounds();\n\n const isTargetValueAchieved = useCallback((valueToCompare: number) => {\n if (targetValue) {\n if (actAsTimer) {\n return valueToCompare <= targetValue;\n }\n return valueToCompare >= targetValue;\n }\n\n return false;\n }, []);\n\n useEffect(() => {\n let timer: ReturnType<typeof setTimeout>;\n let timerForAnimationComplete: ReturnType<typeof setTimeout>;\n const isTargetAchievedFlag = isTargetValueAchieved(value);\n\n if (show) {\n play(actAsTimer ? CircleSoundKey.TIME_INTRO : CircleSoundKey.ACCURACY_INTRO);\n play(CircleSoundKey.METER_FILL);\n if (isTargetAchievedFlag) {\n timer = setTimeout(() => {\n play(actAsTimer ? CircleSoundKey.TIME_TARGET : CircleSoundKey.ACCURACY_TARGET);\n setIsTargetAchieved(true);\n }, TARGET_ACHIEVED_DELAY * 1000);\n }\n\n const timeToFinishAnimation = isTargetAchievedFlag\n ? TOTAL_ANIMATION_DURATION\n : TARGET_ACHIEVED_DELAY;\n\n timerForAnimationComplete = setTimeout(() => {\n onComplete();\n }, timeToFinishAnimation * 1000);\n }\n\n return () => {\n timer && clearTimeout(timer);\n timerForAnimationComplete && clearTimeout(timerForAnimationComplete);\n };\n }, [show, value, onComplete, isTargetValueAchieved]);\n\n if (show) {\n return (\n <Styled.DigitalMeter $isTargetAchieved={isTargetAchieved}>\n {/* complete arc area to be filled */}\n <AnimatedArc\n targetAngle={TOTAL_ARC_AVAILABLE}\n strokeWidth={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 16 : 12}\n color=\"BLACK_5\"\n radius={(GAME_LAUNCHER_SIZE - BORDER_OFFSET) / 2}\n duration={0}\n />\n\n {/* center area for the content */}\n <Styled.ContentContainer>\n <FlexView $flexDirection=\"column\" $alignItems=\"center\">\n <FlexView $flexDirection=\"row\" $alignItems=\"flex-end\">\n <Styled.NumberCountContainer>\n <Styled.RainboxColorText\n $renderAs={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 'ah1' : 'ah2'}\n $color=\"GREEN_4\"\n $isTargetAchieved={isTargetAchieved}\n >\n <NumberCountAnimation\n key={'digital-meter' + value}\n uniqueId={value.toString()}\n initialValue={0}\n targetValue={Math.floor(value)}\n durationInSec={PROGRESS_FILL_DURATION}\n delayInSec={PROGRESS_FILL_DELAY}\n />\n </Styled.RainboxColorText>\n </Styled.NumberCountContainer>\n {progressType === 'stepper' && (\n <Text\n $renderAs={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 'ah4' : 'ab1'}\n $color=\"WHITE\"\n >\n /{maxValue}\n </Text>\n )}\n </FlexView>\n <Separator height={8} />\n <Text\n $renderAs={\n GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 'ac3-black' : 'ac4-black'\n }\n $color=\"WHITE_T_60\"\n >\n {displayText}\n </Text>\n </FlexView>\n </Styled.ContentContainer>\n\n {/* stepper animation */}\n {progressType === 'stepper' &&\n Array.from({ length: value }, (_, index) => {\n const arcLength = TOTAL_ARC_AVAILABLE / maxValue;\n\n return (\n <AnimatedArc\n key={index}\n startAngle={arcLength * index}\n targetAngle={arcLength}\n strokeWidth={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 16 : 12}\n color=\"GREEN_4\"\n radius={(GAME_LAUNCHER_SIZE - BORDER_OFFSET) / 2}\n mode=\"fade\"\n duration={PROGRESS_FILL_DURATION / maxValue}\n delay={PROGRESS_FILL_DELAY + (PROGRESS_FILL_DURATION / maxValue) * index}\n playRainbowColors={isTargetAchieved}\n />\n );\n })}\n\n {/* numbers with markings */}\n {progressType === 'stepper' &&\n Array.from({ length: maxValue + 1 }, (_, index) => {\n const arcLength = TOTAL_ARC_AVAILABLE / maxValue;\n\n return (\n <>\n <Styled.LineMarking key={index + 'linemarking'} $angle={arcLength * index} />\n <Styled.MarkingContainer key={index} $angle={arcLength * index}>\n <Styled.MarkingText $angle={arcLength * index}>\n <Styled.RainboxColorText\n $renderAs={\n GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE\n ? 'ac3-black'\n : 'ac4-black'\n }\n $isTargetAchieved={isTargetValueAchieved(index) && isTargetAchieved}\n $color={\n targetValue && isTargetValueAchieved(index) ? 'GREEN_4' : 'WHITE_T_60'\n }\n >\n {index}\n </Styled.RainboxColorText>\n </Styled.MarkingText>\n </Styled.MarkingContainer>\n </>\n );\n })}\n\n {/* progress of linear */}\n {progressType === 'linear' && (\n <>\n <AnimatedArc\n targetAngle={(value * TOTAL_ARC_AVAILABLE) / maxValue}\n strokeWidth={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 16 : 12}\n color=\"GREEN_4\"\n radius={(GAME_LAUNCHER_SIZE - BORDER_OFFSET) / 2}\n duration={PROGRESS_FILL_DURATION}\n delay={PROGRESS_FILL_DELAY}\n playRainbowColors={isTargetAchieved}\n />\n <>\n {/* target line marking */}\n {targetValue && (\n <Styled.LineMarking $angle={(targetValue * TOTAL_ARC_AVAILABLE) / maxValue} />\n )}\n\n {/* all markings */}\n {Array.from(new Set([0, targetValue, maxValue])).map((val, index) => (\n <Styled.MarkingContainer\n key={index}\n $angle={(val * TOTAL_ARC_AVAILABLE) / maxValue}\n >\n <Styled.MarkingText $angle={(val * TOTAL_ARC_AVAILABLE) / maxValue}>\n <Styled.RainboxColorText\n $renderAs={\n GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE\n ? 'ac3-black'\n : 'ac4-black'\n }\n $color={\n targetValue && isTargetValueAchieved(val) ? 'GREEN_4' : 'WHITE_T_60'\n }\n $isTargetAchieved={\n value >= val && isTargetAchieved && isTargetValueAchieved(val)\n }\n >\n {val}\n </Styled.RainboxColorText>\n </Styled.MarkingText>\n </Styled.MarkingContainer>\n ))}\n </>\n </>\n )}\n\n {/* helper text below the animation */}\n {isTargetAchieved && (\n <Styled.BottomAbsoluteView top={GAME_LAUNCHER_SIZE}>\n <LottieAnimation src={LOTTIE.TARGET_ACHIEVED_TEXT} />\n </Styled.BottomAbsoluteView>\n )}\n {!isTargetAchieved && (\n <Styled.BottomAbsoluteView top={GAME_LAUNCHER_SIZE}>\n <Separator height={25} />\n <FlexView $flexDirection=\"column\" $alignItems=\"center\">\n <Styled.HelperTextPrimary\n $renderAs={\n GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 'ac3-black' : 'ac4-black'\n }\n $color=\"WHITE_T_60\"\n >\n {helperTextPrimary}\n <Separator height={GAME_LAUNCHER_SIZE * 0.03} />\n </Styled.HelperTextPrimary>\n <Styled.HelperTextSecondary\n $renderAs={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 'ah4' : 'ab1'}\n $color=\"WHITE\"\n >\n {helperTextSecondary}\n </Styled.HelperTextSecondary>\n </FlexView>\n </Styled.BottomAbsoluteView>\n )}\n </Styled.DigitalMeter>\n );\n }\n\n return null;\n },\n);\n"],"names":["DigitalMeter","memo","show","value","maxValue","targetValue","displayText","progressType","helperTextPrimary","helperTextSecondary","onComplete","actAsTimer","isTargetAchieved","setIsTargetAchieved","useState","play","useCircleSounds","isTargetValueAchieved","useCallback","valueToCompare","useEffect","timer","timerForAnimationComplete","isTargetAchievedFlag","CircleSoundKey","TARGET_ACHIEVED_DELAY","TOTAL_ANIMATION_DURATION","jsxs","Styled.DigitalMeter","jsx","AnimatedArc","TOTAL_ARC_AVAILABLE","GAME_LAUNCHER_SIZE","GAME_LAUNCHER_SIZE_LARGE","BORDER_OFFSET","Styled.ContentContainer","FlexView","Styled.NumberCountContainer","Styled.RainboxColorText","NumberCountAnimation","PROGRESS_FILL_DURATION","PROGRESS_FILL_DELAY","Text","Separator","_","index","arcLength","Fragment","Styled.LineMarking","Styled.MarkingContainer","Styled.MarkingText","val","Styled.BottomAbsoluteView","LottieAnimation","LOTTIE","Styled.HelperTextPrimary","Styled.HelperTextSecondary"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"digital-meter.js","sources":["../../../../src/features/post-game-stats/digital-meter/digital-meter.tsx"],"sourcesContent":["import type { IDigitalMeterProps } from './digital-meter-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect, useState } from 'react';\n\nimport { LOTTIE } from '../../../assets/lottie/lottie';\nimport {\n GAME_LAUNCHER_SIZE,\n GAME_LAUNCHER_SIZE_LARGE,\n} from '../../circle-games/game-launcher/comps/card-container/constants';\nimport FlexView from '../../ui/layout/flex-view';\nimport LottieAnimation from '../../ui/lottie-animation/lottie-animation';\nimport Separator from '../../ui/separator/separator';\nimport Text from '../../ui/text/text';\nimport { NumberCountAnimation } from '../number-count-animation/number-count-animation';\nimport { AnimatedArc } from './comp/animated-arc/animated-arc';\nimport {\n BORDER_OFFSET,\n PROGRESS_FILL_DELAY,\n PROGRESS_FILL_DURATION,\n TARGET_ACHIEVED_DELAY,\n TOTAL_ANIMATION_DURATION,\n TOTAL_ARC_AVAILABLE,\n} from './constants';\nimport * as Styled from './digital-meter-styled';\nimport { useCircleSounds } from '../../circle-games/hooks/use-circle-sounds/use-circle-sounds';\nimport { CircleSoundKey } from '../../circle-games/hooks/use-circle-sounds/use-circle-sounds-enums';\n\nexport const DigitalMeter: FC<IDigitalMeterProps> = memo(\n ({\n show,\n value,\n maxValue,\n targetValue = 0,\n displayText,\n progressType,\n helperTextPrimary,\n helperTextSecondary,\n onComplete,\n actAsTimer,\n }) => {\n const [isTargetAchieved, setIsTargetAchieved] = useState(false);\n const { play } = useCircleSounds();\n\n const isTargetValueAchieved = useCallback((valueToCompare: number) => {\n if (targetValue) {\n if (actAsTimer) {\n return valueToCompare <= targetValue;\n }\n return valueToCompare >= targetValue;\n }\n\n return false;\n }, []);\n\n useEffect(() => {\n let timer: ReturnType<typeof setTimeout>;\n let timerForAnimationComplete: ReturnType<typeof setTimeout>;\n const isTargetAchievedFlag = isTargetValueAchieved(value);\n\n if (show) {\n play(actAsTimer ? CircleSoundKey.TIME_INTRO : CircleSoundKey.ACCURACY_INTRO);\n play(CircleSoundKey.METER_FILL);\n if (isTargetAchievedFlag) {\n timer = setTimeout(() => {\n play(actAsTimer ? CircleSoundKey.TIME_TARGET : CircleSoundKey.ACCURACY_TARGET);\n setIsTargetAchieved(true);\n }, TARGET_ACHIEVED_DELAY * 1000);\n }\n\n const timeToFinishAnimation = isTargetAchievedFlag\n ? TOTAL_ANIMATION_DURATION\n : TARGET_ACHIEVED_DELAY;\n\n timerForAnimationComplete = setTimeout(() => {\n onComplete();\n }, timeToFinishAnimation * 1000);\n }\n\n return () => {\n timer && clearTimeout(timer);\n timerForAnimationComplete && clearTimeout(timerForAnimationComplete);\n };\n }, [show, value, onComplete, isTargetValueAchieved]);\n\n if (show) {\n return (\n <Styled.DigitalMeter $isTargetAchieved={isTargetAchieved}>\n {/* complete arc area to be filled */}\n <AnimatedArc\n targetAngle={TOTAL_ARC_AVAILABLE}\n strokeWidth={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 16 : 12}\n color=\"BLACK_5\"\n radius={(GAME_LAUNCHER_SIZE - BORDER_OFFSET) / 2}\n duration={0}\n />\n\n {/* center area for the content */}\n <Styled.ContentContainer>\n <FlexView $flexDirection=\"column\" $alignItems=\"center\">\n <FlexView $flexDirection=\"row\" $alignItems=\"flex-end\">\n <Styled.NumberCountContainer>\n <Styled.RainboxColorText\n $renderAs={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 'ah1' : 'ah2'}\n $color=\"GREEN_4\"\n $isTargetAchieved={isTargetAchieved}\n >\n <NumberCountAnimation\n initialValue={0}\n targetValue={Math.floor(value)}\n durationInSec={PROGRESS_FILL_DURATION}\n delayInSec={PROGRESS_FILL_DELAY}\n />\n </Styled.RainboxColorText>\n </Styled.NumberCountContainer>\n {progressType === 'stepper' && (\n <Text\n $renderAs={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 'ah4' : 'ab1'}\n $color=\"WHITE\"\n >\n /{maxValue}\n </Text>\n )}\n </FlexView>\n <Separator height={8} />\n <Text\n $renderAs={\n GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 'ac3-black' : 'ac4-black'\n }\n $color=\"WHITE_T_60\"\n >\n {displayText}\n </Text>\n </FlexView>\n </Styled.ContentContainer>\n\n {/* stepper animation */}\n {progressType === 'stepper' &&\n Array.from({ length: value }, (_, index) => {\n const arcLength = TOTAL_ARC_AVAILABLE / maxValue;\n\n return (\n <AnimatedArc\n key={index}\n startAngle={arcLength * index}\n targetAngle={arcLength}\n strokeWidth={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 16 : 12}\n color=\"GREEN_4\"\n radius={(GAME_LAUNCHER_SIZE - BORDER_OFFSET) / 2}\n mode=\"fade\"\n duration={PROGRESS_FILL_DURATION / maxValue}\n delay={PROGRESS_FILL_DELAY + (PROGRESS_FILL_DURATION / maxValue) * index}\n playRainbowColors={isTargetAchieved}\n />\n );\n })}\n\n {/* numbers with markings */}\n {progressType === 'stepper' &&\n Array.from({ length: maxValue + 1 }, (_, index) => {\n const arcLength = TOTAL_ARC_AVAILABLE / maxValue;\n\n return (\n <>\n <Styled.LineMarking key={index + 'linemarking'} $angle={arcLength * index} />\n <Styled.MarkingContainer key={index} $angle={arcLength * index}>\n <Styled.MarkingText $angle={arcLength * index}>\n <Styled.RainboxColorText\n $renderAs={\n GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE\n ? 'ac3-black'\n : 'ac4-black'\n }\n $isTargetAchieved={isTargetValueAchieved(index) && isTargetAchieved}\n $color={\n targetValue && isTargetValueAchieved(index) ? 'GREEN_4' : 'WHITE_T_60'\n }\n >\n {index}\n </Styled.RainboxColorText>\n </Styled.MarkingText>\n </Styled.MarkingContainer>\n </>\n );\n })}\n\n {/* progress of linear */}\n {progressType === 'linear' && (\n <>\n <AnimatedArc\n targetAngle={(value * TOTAL_ARC_AVAILABLE) / maxValue}\n strokeWidth={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 16 : 12}\n color=\"GREEN_4\"\n radius={(GAME_LAUNCHER_SIZE - BORDER_OFFSET) / 2}\n duration={PROGRESS_FILL_DURATION}\n delay={PROGRESS_FILL_DELAY}\n playRainbowColors={isTargetAchieved}\n />\n <>\n {/* target line marking */}\n {targetValue && (\n <Styled.LineMarking $angle={(targetValue * TOTAL_ARC_AVAILABLE) / maxValue} />\n )}\n\n {/* all markings */}\n {Array.from(new Set([0, targetValue, maxValue])).map((val, index) => (\n <Styled.MarkingContainer\n key={index}\n $angle={(val * TOTAL_ARC_AVAILABLE) / maxValue}\n >\n <Styled.MarkingText $angle={(val * TOTAL_ARC_AVAILABLE) / maxValue}>\n <Styled.RainboxColorText\n $renderAs={\n GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE\n ? 'ac3-black'\n : 'ac4-black'\n }\n $color={\n targetValue && isTargetValueAchieved(val) ? 'GREEN_4' : 'WHITE_T_60'\n }\n $isTargetAchieved={\n value >= val && isTargetAchieved && isTargetValueAchieved(val)\n }\n >\n {val}\n </Styled.RainboxColorText>\n </Styled.MarkingText>\n </Styled.MarkingContainer>\n ))}\n </>\n </>\n )}\n\n {/* helper text below the animation */}\n {isTargetAchieved && (\n <Styled.BottomAbsoluteView top={GAME_LAUNCHER_SIZE}>\n <LottieAnimation src={LOTTIE.TARGET_ACHIEVED_TEXT} />\n </Styled.BottomAbsoluteView>\n )}\n {!isTargetAchieved && (\n <Styled.BottomAbsoluteView top={GAME_LAUNCHER_SIZE}>\n <Separator height={25} />\n <FlexView $flexDirection=\"column\" $alignItems=\"center\">\n <Styled.HelperTextPrimary\n $renderAs={\n GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 'ac3-black' : 'ac4-black'\n }\n $color=\"WHITE_T_60\"\n >\n {helperTextPrimary}\n <Separator height={GAME_LAUNCHER_SIZE * 0.03} />\n </Styled.HelperTextPrimary>\n <Styled.HelperTextSecondary\n $renderAs={GAME_LAUNCHER_SIZE === GAME_LAUNCHER_SIZE_LARGE ? 'ah4' : 'ab1'}\n $color=\"WHITE\"\n >\n {helperTextSecondary}\n </Styled.HelperTextSecondary>\n </FlexView>\n </Styled.BottomAbsoluteView>\n )}\n </Styled.DigitalMeter>\n );\n }\n\n return null;\n },\n);\n"],"names":["DigitalMeter","memo","show","value","maxValue","targetValue","displayText","progressType","helperTextPrimary","helperTextSecondary","onComplete","actAsTimer","isTargetAchieved","setIsTargetAchieved","useState","play","useCircleSounds","isTargetValueAchieved","useCallback","valueToCompare","useEffect","timer","timerForAnimationComplete","isTargetAchievedFlag","CircleSoundKey","TARGET_ACHIEVED_DELAY","TOTAL_ANIMATION_DURATION","jsxs","Styled.DigitalMeter","jsx","AnimatedArc","TOTAL_ARC_AVAILABLE","GAME_LAUNCHER_SIZE","GAME_LAUNCHER_SIZE_LARGE","BORDER_OFFSET","Styled.ContentContainer","FlexView","Styled.NumberCountContainer","Styled.RainboxColorText","NumberCountAnimation","PROGRESS_FILL_DURATION","PROGRESS_FILL_DELAY","Text","Separator","_","index","arcLength","Fragment","Styled.LineMarking","Styled.MarkingContainer","Styled.MarkingText","val","Styled.BottomAbsoluteView","LottieAnimation","LOTTIE","Styled.HelperTextPrimary","Styled.HelperTextSecondary"],"mappings":"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"}
|
@@ -1,22 +1,27 @@
|
|
1
|
-
import { jsx as
|
2
|
-
import {
|
3
|
-
const
|
1
|
+
import { jsx as F } from "react/jsx-runtime";
|
2
|
+
import { useState as d, useEffect as h } from "react";
|
3
|
+
const q = ({
|
4
4
|
initialValue: t,
|
5
|
-
targetValue:
|
6
|
-
durationInSec: n,
|
7
|
-
delayInSec:
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
);
|
5
|
+
targetValue: o,
|
6
|
+
durationInSec: n = 0,
|
7
|
+
delayInSec: m = 0
|
8
|
+
}) => {
|
9
|
+
const [i, u] = d(t);
|
10
|
+
return h(() => {
|
11
|
+
let e, r;
|
12
|
+
const s = (a) => {
|
13
|
+
e || (e = a);
|
14
|
+
const p = a - e, c = Math.min(p / (n * 1e3), 1), A = Math.floor(t + (o - t) * c);
|
15
|
+
u(A), c < 1 && (r = requestAnimationFrame(s));
|
16
|
+
}, f = setTimeout(() => {
|
17
|
+
r = requestAnimationFrame(s);
|
18
|
+
}, m * 1e3);
|
19
|
+
return () => {
|
20
|
+
clearTimeout(f), cancelAnimationFrame(r);
|
21
|
+
};
|
22
|
+
}, [t, o, n, m]), /* @__PURE__ */ F("div", { children: i });
|
23
|
+
};
|
19
24
|
export {
|
20
|
-
|
25
|
+
q as NumberCountAnimation
|
21
26
|
};
|
22
27
|
//# sourceMappingURL=number-count-animation.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"number-count-animation.js","sources":["../../../../src/features/post-game-stats/number-count-animation/number-count-animation.tsx"],"sourcesContent":["import type {
|
1
|
+
{"version":3,"file":"number-count-animation.js","sources":["../../../../src/features/post-game-stats/number-count-animation/number-count-animation.tsx"],"sourcesContent":["import type { FC } from 'react';\n\nimport { useEffect, useState } from 'react';\nimport { INumberCountAnimationProps } from './number-count-animation-types';\n\nexport const NumberCountAnimation: FC<INumberCountAnimationProps> = ({\n initialValue,\n targetValue,\n durationInSec = 0,\n delayInSec = 0,\n}) => {\n const [currentValue, setCurrentValue] = useState(initialValue);\n\n useEffect(() => {\n let startTimestamp: number;\n let animationFrameId: number;\n\n const animate = (timestamp: number) => {\n if (!startTimestamp) {\n startTimestamp = timestamp;\n }\n\n const elapsed = timestamp - startTimestamp;\n const progress = Math.min(elapsed / (durationInSec * 1000), 1);\n const value = Math.floor(initialValue + (targetValue - initialValue) * progress);\n\n setCurrentValue(value);\n\n if (progress < 1) {\n animationFrameId = requestAnimationFrame(animate);\n }\n };\n\n const timeoutId = setTimeout(() => {\n animationFrameId = requestAnimationFrame(animate);\n }, delayInSec * 1000);\n\n return () => {\n clearTimeout(timeoutId);\n cancelAnimationFrame(animationFrameId);\n };\n }, [initialValue, targetValue, durationInSec, delayInSec]);\n\n return (\n <div>{currentValue}</div>\n );\n};\n"],"names":["NumberCountAnimation","initialValue","targetValue","durationInSec","delayInSec","currentValue","setCurrentValue","useState","useEffect","startTimestamp","animationFrameId","animate","timestamp","elapsed","progress","value","timeoutId","jsx"],"mappings":";;AAKO,MAAMA,IAAuD,CAAC;AAAA,EACnE,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,eAAAC,IAAgB;AAAA,EAChB,YAAAC,IAAa;AACf,MAAM;AACJ,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAASN,CAAY;AAE7D,SAAAO,EAAU,MAAM;AACV,QAAAC,GACAC;AAEE,UAAAC,IAAU,CAACC,MAAsB;AACrC,MAAKH,MACcA,IAAAG;AAGnB,YAAMC,IAAUD,IAAYH,GACtBK,IAAW,KAAK,IAAID,KAAWV,IAAgB,MAAO,CAAC,GACvDY,IAAQ,KAAK,MAAMd,KAAgBC,IAAcD,KAAgBa,CAAQ;AAE/E,MAAAR,EAAgBS,CAAK,GAEjBD,IAAW,MACbJ,IAAmB,sBAAsBC,CAAO;AAAA,IAClD,GAGIK,IAAY,WAAW,MAAM;AACjC,MAAAN,IAAmB,sBAAsBC,CAAO;AAAA,IAAA,GAC/CP,IAAa,GAAI;AAEpB,WAAO,MAAM;AACX,mBAAaY,CAAS,GACtB,qBAAqBN,CAAgB;AAAA,IAAA;AAAA,KAEtC,CAACT,GAAcC,GAAaC,GAAeC,CAAU,CAAC,GAGvD,gBAAAa,EAAC,SAAK,UAAaZ,EAAA,CAAA;AAEvB;"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@cuemath/leap",
|
3
|
-
"version": "2.8.38-
|
3
|
+
"version": "2.8.38-hg4",
|
4
4
|
"type": "module",
|
5
5
|
"files": [
|
6
6
|
"dist"
|
@@ -17,8 +17,7 @@
|
|
17
17
|
"prepare": "husky install",
|
18
18
|
"build-storybook": "storybook build",
|
19
19
|
"prepublishOnly": "yarn build",
|
20
|
-
"hash-image": "node scripts/hash-images.js"
|
21
|
-
"collect-sounds:": "aws s3 sync --acl public-read src/assets/sounds/ s3://static.qumath.in/static/sounds/ --metadata-directive REPLACE --cache-control no-cache"
|
20
|
+
"hash-image": "node scripts/hash-images.js"
|
22
21
|
},
|
23
22
|
"dependencies": {
|
24
23
|
"@cuemath/analytics-v2": "1.4.6",
|
package/dist/features/post-game-stats/number-count-animation/number-count-animation-styled.js
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
import r from "styled-components";
|
2
|
-
const a = r.div`
|
3
|
-
${({ $initialValue: n, $targetValue: e, $uniqueId: t }) => `
|
4
|
-
@keyframes changeNum-${t} {
|
5
|
-
from {
|
6
|
-
--num: ${n};
|
7
|
-
}
|
8
|
-
to {
|
9
|
-
--num: ${e};
|
10
|
-
}
|
11
|
-
}
|
12
|
-
`}
|
13
|
-
|
14
|
-
@property --num {
|
15
|
-
syntax: '<integer>';
|
16
|
-
initial-value: ${({ $initialValue: n }) => n};
|
17
|
-
inherits: false;
|
18
|
-
}
|
19
|
-
|
20
|
-
counter-set: num var(--num);
|
21
|
-
animation: ${({ $durationInSec: n = 0, $delayInSec: e = 0, $uniqueId: t }) => `changeNum-${t} ${n}s linear ${e}s`} forwards;
|
22
|
-
|
23
|
-
&::after {
|
24
|
-
content: counter(num);
|
25
|
-
}
|
26
|
-
`;
|
27
|
-
export {
|
28
|
-
a as AnimatedNumberCount
|
29
|
-
};
|
30
|
-
//# sourceMappingURL=number-count-animation-styled.js.map
|
package/dist/features/post-game-stats/number-count-animation/number-count-animation-styled.js.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"number-count-animation-styled.js","sources":["../../../../src/features/post-game-stats/number-count-animation/number-count-animation-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nexport const AnimatedNumberCount = styled.div<{\n $initialValue: number;\n $targetValue: number;\n $durationInSec?: number;\n $delayInSec?: number;\n $uniqueId: string;\n}>`\n ${({ $initialValue, $targetValue, $uniqueId }) => `\n @keyframes changeNum-${$uniqueId} {\n from {\n --num: ${$initialValue};\n }\n to {\n --num: ${$targetValue};\n }\n }\n `}\n\n @property --num {\n syntax: '<integer>';\n initial-value: ${({ $initialValue }) => $initialValue};\n inherits: false;\n }\n\n counter-set: num var(--num);\n animation: ${({ $durationInSec = 0, $delayInSec = 0, $uniqueId }) => `changeNum-${$uniqueId} ${$durationInSec}s linear ${$delayInSec}s`} forwards;\n\n &::after {\n content: counter(num);\n }\n`;\n"],"names":["AnimatedNumberCount","styled","$initialValue","$targetValue","$uniqueId","$durationInSec","$delayInSec"],"mappings":";AAEO,MAAMA,IAAsBC,EAAO;AAAA,IAOtC,CAAC,EAAE,eAAAC,GAAe,cAAAC,GAAc,WAAAC,EAAgB,MAAA;AAAA,2BACzBA,CAAS;AAAA;AAAA,iBAEnBF,CAAa;AAAA;AAAA;AAAA,iBAGbC,CAAY;AAAA;AAAA;AAAA,GAG1B;AAAA;AAAA;AAAA;AAAA,qBAIkB,CAAC,EAAE,eAAAD,EAAc,MAAMA,CAAa;AAAA;AAAA;AAAA;AAAA;AAAA,eAK1C,CAAC,EAAE,gBAAAG,IAAiB,GAAG,aAAAC,IAAc,GAAG,WAAAF,EAAgB,MAAA,aAAaA,CAAS,IAAIC,CAAc,YAAYC,CAAW,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|