@cuemath/leap 3.2.23-as1 → 3.2.23-m
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/illustrations/illustrations.js +0 -6
- package/dist/assets/illustrations/illustrations.js.map +1 -1
- package/dist/assets/images/images.js +0 -10
- package/dist/assets/images/images.js.map +1 -1
- package/dist/assets/lottie/lottie.js +1 -6
- package/dist/assets/lottie/lottie.js.map +1 -1
- package/dist/features/stickers/sticker-data.js +234 -0
- package/dist/features/stickers/sticker-data.js.map +1 -0
- package/dist/features/{ui/sticker-grid/sticker-grid-styles.js → stickers/sticker-selector/sticker-selector-styles.js} +21 -31
- package/dist/features/stickers/sticker-selector/sticker-selector-styles.js.map +1 -0
- package/dist/features/stickers/sticker-selector/sticker-selector.js +27 -0
- package/dist/features/stickers/sticker-selector/sticker-selector.js.map +1 -0
- package/dist/features/stickers/sticker-selector/sticker.js +57 -0
- package/dist/features/stickers/sticker-selector/sticker.js.map +1 -0
- package/dist/features/{ui/stickers/stickers-effects.js → stickers/stickers-effects/effects.js} +6 -6
- package/dist/features/stickers/stickers-effects/effects.js.map +1 -0
- package/dist/features/stickers/stickers-effects/stickers-cache.js +19 -0
- package/dist/features/stickers/stickers-effects/stickers-cache.js.map +1 -0
- package/dist/features/stickers/stickers-effects/stickers-effects-helper.js +86 -0
- package/dist/features/stickers/stickers-effects/stickers-effects-helper.js.map +1 -0
- package/dist/features/{ui/stickers/stickers-styled.js → stickers/stickers-effects/stickers-effects-styled.js} +2 -2
- package/dist/features/stickers/stickers-effects/stickers-effects-styled.js.map +1 -0
- package/dist/features/stickers/stickers-effects/stickers-effects.js +54 -0
- package/dist/features/stickers/stickers-effects/stickers-effects.js.map +1 -0
- package/dist/features/ui/constants/z-index.js +3 -5
- package/dist/features/ui/constants/z-index.js.map +1 -1
- package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js +88 -75
- package/dist/features/ui/dot-lottie-animations/dot-lottie-animation.js.map +1 -1
- package/dist/features/ui/lottie-animation/lottie-animation.js +36 -31
- package/dist/features/ui/lottie-animation/lottie-animation.js.map +1 -1
- package/dist/features/ui/modals/modal-styled.js +39 -8
- package/dist/features/ui/modals/modal-styled.js.map +1 -1
- package/dist/features/ui/modals/modal.js +31 -31
- package/dist/features/ui/modals/modal.js.map +1 -1
- package/dist/index.d.ts +72 -193
- package/dist/index.js +609 -617
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/assets/line-icons/icons/cue-coin.js +0 -182
- package/dist/assets/line-icons/icons/cue-coin.js.map +0 -1
- package/dist/assets/line-icons/icons/wins-common-icon.js +0 -26
- package/dist/assets/line-icons/icons/wins-common-icon.js.map +0 -1
- package/dist/assets/line-icons/icons/wins-epic-icon.js +0 -25
- package/dist/assets/line-icons/icons/wins-epic-icon.js.map +0 -1
- package/dist/assets/line-icons/icons/wins-legendary-icon.js +0 -25
- package/dist/assets/line-icons/icons/wins-legendary-icon.js.map +0 -1
- package/dist/assets/line-icons/icons/wins-mystery-icon.js +0 -105
- package/dist/assets/line-icons/icons/wins-mystery-icon.js.map +0 -1
- package/dist/assets/line-icons/icons/wins-mythic-icon.js +0 -28
- package/dist/assets/line-icons/icons/wins-mythic-icon.js.map +0 -1
- package/dist/assets/line-icons/icons/wins-rare-icon.js +0 -28
- package/dist/assets/line-icons/icons/wins-rare-icon.js.map +0 -1
- package/dist/features/ui/sticker-grid/sticker-grid-styles.js.map +0 -1
- package/dist/features/ui/sticker-grid/sticker-grid.js +0 -24
- package/dist/features/ui/sticker-grid/sticker-grid.js.map +0 -1
- package/dist/features/ui/sticker-grid/sticker.js +0 -57
- package/dist/features/ui/sticker-grid/sticker.js.map +0 -1
- package/dist/features/ui/stickers/constants.js +0 -6
- package/dist/features/ui/stickers/constants.js.map +0 -1
- package/dist/features/ui/stickers/stickers-effects.js.map +0 -1
- package/dist/features/ui/stickers/stickers-styled.js.map +0 -1
- package/dist/features/ui/stickers/stickers-utils.js +0 -91
- package/dist/features/ui/stickers/stickers-utils.js.map +0 -1
- package/dist/features/ui/stickers/stickers.js +0 -40
- package/dist/features/ui/stickers/stickers.js.map +0 -1
- package/dist/features/wins-dashboard/belts-elements-stickers/belts-elements-stickers.js +0 -108
- package/dist/features/wins-dashboard/belts-elements-stickers/belts-elements-stickers.js.map +0 -1
- package/dist/features/wins-dashboard/belts-elements-stickers/belts.js +0 -94
- package/dist/features/wins-dashboard/belts-elements-stickers/belts.js.map +0 -1
- package/dist/features/wins-dashboard/belts-elements-stickers/elements.js +0 -182
- package/dist/features/wins-dashboard/belts-elements-stickers/elements.js.map +0 -1
- package/dist/features/wins-dashboard/belts-elements-stickers/progress-bar-horizontal.js +0 -35
- package/dist/features/wins-dashboard/belts-elements-stickers/progress-bar-horizontal.js.map +0 -1
- package/dist/features/wins-dashboard/belts-elements-stickers/reward-elements.js +0 -82
- package/dist/features/wins-dashboard/belts-elements-stickers/reward-elements.js.map +0 -1
- package/dist/features/wins-dashboard/constants.js +0 -161
- package/dist/features/wins-dashboard/constants.js.map +0 -1
- package/dist/features/wins-dashboard/header/wins-header.js +0 -95
- package/dist/features/wins-dashboard/header/wins-header.js.map +0 -1
- package/dist/features/wins-dashboard/student-badges/animated-tabbar.js +0 -65
- package/dist/features/wins-dashboard/student-badges/animated-tabbar.js.map +0 -1
- package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-hook.js +0 -107
- package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-hook.js.map +0 -1
- package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-list-hook.js +0 -135
- package/dist/features/wins-dashboard/student-badges/hooks/use-student-badge-list-hook.js.map +0 -1
- package/dist/features/wins-dashboard/student-badges/student-badge.js +0 -161
- package/dist/features/wins-dashboard/student-badges/student-badge.js.map +0 -1
- package/dist/features/wins-dashboard/student-badges/student-badges-lists.js +0 -136
- package/dist/features/wins-dashboard/student-badges/student-badges-lists.js.map +0 -1
- package/dist/static/awesome.4239f583.json +0 -1
- package/dist/static/black-belt.81b3ebf9.png +0 -0
- package/dist/static/blue-belt.508a1b4b.png +0 -0
- package/dist/static/brown-belt.09bb7e93.png +0 -0
- package/dist/static/clapping-hands.17e7ecf0.json +0 -1
- package/dist/static/common.9e8ceef1.svg +0 -1
- package/dist/static/cool.cd6921bb.json +0 -1
- package/dist/static/epic.37a0265a.svg +0 -1
- package/dist/static/green-belt.5501296f.png +0 -0
- package/dist/static/legendary.f15d09ca.svg +0 -1
- package/dist/static/like-button.281a2618.json +0 -1
- package/dist/static/mastered-badge.91d25e92.png +0 -0
- package/dist/static/mystery.81ada5fb.svg +0 -1
- package/dist/static/mythic.58ba0ae0.svg +0 -1
- package/dist/static/orange-belt.1fefcc8c.png +0 -0
- package/dist/static/purple-belt.e15611b4.png +0 -0
- package/dist/static/rare.1ffaa311.svg +0 -1
- package/dist/static/red-belt.11f841d9.png +0 -0
- package/dist/static/star-strike-emoji.c0b31028.json +0 -1
- package/dist/static/trophy.5ef1853a.json +0 -1
- package/dist/static/white-belt.ea93103e.png +0 -0
- package/dist/static/yellow-belt.0c47b8cc.png +0 -0
@@ -1,35 +0,0 @@
|
|
1
|
-
import { jsx as i } from "react/jsx-runtime";
|
2
|
-
import s from "styled-components";
|
3
|
-
const a = s.div`
|
4
|
-
position: relative;
|
5
|
-
overflow: hidden;
|
6
|
-
background: ${({ $backgroundColor: r, theme: o }) => o.colors[r] || r};
|
7
|
-
width: 100%;
|
8
|
-
height: ${({ $height: r }) => `${r}px`};
|
9
|
-
border-radius: ${({ $height: r, $corners: o }) => o ? `${r / 2}px` : 0};
|
10
|
-
`, $ = s.div`
|
11
|
-
position: absolute;
|
12
|
-
background: ${({ $backgroundColor: r, theme: o }) => o.colors[r] || r};
|
13
|
-
transition: width 300ms ease-in-out;
|
14
|
-
width: ${({ $progress: r }) => `${r}%`};
|
15
|
-
height: 100%;
|
16
|
-
border-radius: ${({ $borderRadius: r }) => r || 0}px;
|
17
|
-
`, c = ({
|
18
|
-
borderRadius: r = 0,
|
19
|
-
height: o = 8,
|
20
|
-
progress: t,
|
21
|
-
corners: e = !0,
|
22
|
-
backgroundColor: d = "GREY_1",
|
23
|
-
progressColor: n = "GREY_4"
|
24
|
-
}) => /* @__PURE__ */ i(a, { $height: o, $corners: e, $backgroundColor: d, children: /* @__PURE__ */ i(
|
25
|
-
$,
|
26
|
-
{
|
27
|
-
$progress: t,
|
28
|
-
$backgroundColor: n,
|
29
|
-
$borderRadius: r
|
30
|
-
}
|
31
|
-
) });
|
32
|
-
export {
|
33
|
-
c as default
|
34
|
-
};
|
35
|
-
//# sourceMappingURL=progress-bar-horizontal.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"progress-bar-horizontal.js","sources":["../../../../src/features/wins-dashboard/belts-elements-stickers/progress-bar-horizontal.tsx"],"sourcesContent":["import type { TColorNames } from '../../ui/types';\n\nimport React from 'react';\nimport styled from 'styled-components';\n\nconst Background = styled.div<{\n $backgroundColor: TColorNames | string;\n $height: number;\n $corners: boolean;\n}>`\n position: relative;\n overflow: hidden;\n background: ${({ $backgroundColor, theme }) =>\n theme.colors[$backgroundColor as TColorNames] || $backgroundColor};\n width: 100%;\n height: ${({ $height }) => `${$height}px`};\n border-radius: ${({ $height, $corners }) => ($corners ? `${$height / 2}px` : 0)};\n`;\n\nconst Progress = styled.div<{\n $backgroundColor: TColorNames | string;\n $progress: number;\n $borderRadius: number;\n}>`\n position: absolute;\n background: ${({ $backgroundColor, theme }) =>\n theme.colors[$backgroundColor as TColorNames] || $backgroundColor};\n transition: width 300ms ease-in-out;\n width: ${({ $progress }) => `${$progress}%`};\n height: 100%;\n border-radius: ${({ $borderRadius }) => $borderRadius || 0}px;\n`;\n\ninterface ProgressBarHorizontalProps {\n borderRadius?: number;\n progress: number;\n height?: number;\n backgroundColor?: TColorNames | string;\n progressColor?: TColorNames | string;\n corners?: boolean;\n}\n\nconst ProgressBarHorizontal: React.FC<ProgressBarHorizontalProps> = ({\n borderRadius = 0,\n height = 8,\n progress,\n corners = true,\n backgroundColor = 'GREY_1',\n progressColor = 'GREY_4',\n}) => {\n return (\n <Background $height={height} $corners={corners} $backgroundColor={backgroundColor}>\n <Progress\n $progress={progress}\n $backgroundColor={progressColor}\n $borderRadius={borderRadius}\n />\n </Background>\n );\n};\n\nexport default ProgressBarHorizontal;\n"],"names":["Background","styled","$backgroundColor","theme","$height","$corners","Progress","$progress","$borderRadius","ProgressBarHorizontal","borderRadius","height","progress","corners","backgroundColor","progressColor","jsx"],"mappings":";;AAKA,MAAMA,IAAaC,EAAO;AAAA;AAAA;AAAA,gBAOV,CAAC,EAAE,kBAAAC,GAAkB,OAAAC,QACjCA,EAAM,OAAOD,CAA+B,KAAKA,CAAgB;AAAA;AAAA,YAEzD,CAAC,EAAE,SAAAE,EAAc,MAAA,GAAGA,CAAO,IAAI;AAAA,mBACxB,CAAC,EAAE,SAAAA,GAAS,UAAAC,EAAS,MAAOA,IAAW,GAAGD,IAAU,CAAC,OAAO,CAAE;AAAA,GAG3EE,IAAWL,EAAO;AAAA;AAAA,gBAMR,CAAC,EAAE,kBAAAC,GAAkB,OAAAC,QACjCA,EAAM,OAAOD,CAA+B,KAAKA,CAAgB;AAAA;AAAA,WAE1D,CAAC,EAAE,WAAAK,EAAgB,MAAA,GAAGA,CAAS,GAAG;AAAA;AAAA,mBAE1B,CAAC,EAAE,eAAAC,QAAoBA,KAAiB,CAAC;AAAA,GAYtDC,IAA8D,CAAC;AAAA,EACnE,cAAAC,IAAe;AAAA,EACf,QAAAC,IAAS;AAAA,EACT,UAAAC;AAAA,EACA,SAAAC,IAAU;AAAA,EACV,iBAAAC,IAAkB;AAAA,EAClB,eAAAC,IAAgB;AAClB,wBAEKf,GAAW,EAAA,SAASW,GAAQ,UAAUE,GAAS,kBAAkBC,GAChE,UAAA,gBAAAE;AAAA,EAACV;AAAA,EAAA;AAAA,IACC,WAAWM;AAAA,IACX,kBAAkBG;AAAA,IAClB,eAAeL;AAAA,EAAA;AAEnB,EAAA,CAAA;"}
|
@@ -1,82 +0,0 @@
|
|
1
|
-
import { jsxs as I, jsx as r } from "react/jsx-runtime";
|
2
|
-
import l, { css as m } from "styled-components";
|
3
|
-
import f from "../../ui/layout/flex-view.js";
|
4
|
-
import $ from "../../ui/separator/separator.js";
|
5
|
-
import S from "../../ui/text/text.js";
|
6
|
-
import { SCREEN_SIZES as a, INSTRUCTION_REWARDS as N, MATH_REWARDS as R, STICKERS as w } from "../constants.js";
|
7
|
-
import A from "./elements.js";
|
8
|
-
const E = {
|
9
|
-
STICKER: "STICKERS",
|
10
|
-
CODING: "CODING",
|
11
|
-
CHIP: "CHIPS",
|
12
|
-
ELEMENT: "ELEMENTS"
|
13
|
-
}, g = l(f)`
|
14
|
-
background-color: ${({ theme: t }) => t.colors.WHITE};
|
15
|
-
`, L = l(f)`
|
16
|
-
max-width: 280px;
|
17
|
-
width: 100%;
|
18
|
-
${({ $currentScreenWidth: t }) => t < a.LAPTOP && m`
|
19
|
-
max-width: 764px;
|
20
|
-
width: 100%;
|
21
|
-
`}
|
22
|
-
`, P = l.div`
|
23
|
-
width: 33%;
|
24
|
-
padding-bottom: 16px;
|
25
|
-
${({ $currentScreenWidth: t }) => t < a.LAPTOP && m`
|
26
|
-
width: 15%;
|
27
|
-
height: 33%;
|
28
|
-
`}
|
29
|
-
`, O = l.div`
|
30
|
-
padding-left: ${({ $isSticker: t }) => t ? "13px" : "19px"};
|
31
|
-
color: ${({ theme: t }) => t.colors.BLACK};
|
32
|
-
font-size: 20px;
|
33
|
-
font-weight: 800;
|
34
|
-
${({ $currentScreenWidth: t }) => t < a.LAPTOP && m`
|
35
|
-
padding-left: 0;
|
36
|
-
`}
|
37
|
-
`, u = (t, o) => {
|
38
|
-
let e = E.STICKER;
|
39
|
-
return t || (e = o ? E.CHIP : E.ELEMENT), e;
|
40
|
-
}, T = (t, o, e, n, s = {}, c) => /* @__PURE__ */ r(P, { $currentScreenWidth: c, children: /* @__PURE__ */ r(
|
41
|
-
A,
|
42
|
-
{
|
43
|
-
isAchieved: t in o,
|
44
|
-
count: o[t],
|
45
|
-
elementType: t,
|
46
|
-
isCoddingType: e,
|
47
|
-
isSticker: n,
|
48
|
-
lotties: s,
|
49
|
-
currentScreenWidth: c
|
50
|
-
}
|
51
|
-
) }, t), v = ({
|
52
|
-
elements: t,
|
53
|
-
isSticker: o = !1,
|
54
|
-
lotties: e = {},
|
55
|
-
currentScreenWidth: n,
|
56
|
-
programStream: s
|
57
|
-
}) => {
|
58
|
-
const c = s === E.CODING ? [...N] : [...R], d = s === E.CODING, h = w, p = {};
|
59
|
-
return t && t.forEach((i) => {
|
60
|
-
const { name: x, count: C } = i;
|
61
|
-
p[x] = C;
|
62
|
-
}), /* @__PURE__ */ I(g, { children: [
|
63
|
-
/* @__PURE__ */ r(O, { $currentScreenWidth: n, $isSticker: o, children: /* @__PURE__ */ r(S, { $renderAs: "h5", $color: "BLACK", children: u(o, d) }) }),
|
64
|
-
/* @__PURE__ */ r($, { height: 18 }),
|
65
|
-
/* @__PURE__ */ r(L, { $flexWrap: !0, $flexDirection: "row", $currentScreenWidth: n, children: o ? h.map(
|
66
|
-
(i) => T(
|
67
|
-
i,
|
68
|
-
p,
|
69
|
-
d,
|
70
|
-
o,
|
71
|
-
e,
|
72
|
-
n
|
73
|
-
)
|
74
|
-
) : c.map(
|
75
|
-
(i) => T(i, p, d, !1, {}, n)
|
76
|
-
) })
|
77
|
-
] });
|
78
|
-
};
|
79
|
-
export {
|
80
|
-
v as default
|
81
|
-
};
|
82
|
-
//# sourceMappingURL=reward-elements.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"reward-elements.js","sources":["../../../../src/features/wins-dashboard/belts-elements-stickers/reward-elements.tsx"],"sourcesContent":["import React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\nimport Separator from '../../ui/separator/separator';\nimport Text from '../../ui/text/text';\nimport { INSTRUCTION_REWARDS, MATH_REWARDS, SCREEN_SIZES, STICKERS } from '../constants';\nimport Element from './elements';\n\nconst ELEMENT_TEXT = {\n STICKER: 'STICKERS',\n CODING: 'CODING',\n CHIP: 'CHIPS',\n ELEMENT: 'ELEMENTS',\n};\n\nconst InfoWrapper = styled(FlexView)`\n background-color: ${({ theme }) => theme.colors.WHITE};\n`;\n\ninterface ElementContainerProps {\n $currentScreenWidth: number;\n}\n\nconst ElementContainer = styled(FlexView)<ElementContainerProps>`\n max-width: 280px;\n width: 100%;\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n max-width: 764px;\n width: 100%;\n `}\n`;\n\ninterface ElementWrapperProps {\n $currentScreenWidth: number;\n}\n\nconst ElementWrapper = styled.div<ElementWrapperProps>`\n width: 33%;\n padding-bottom: 16px;\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n width: 15%;\n height: 33%;\n `}\n`;\n\ninterface ElementTextProps {\n $isSticker: boolean;\n $currentScreenWidth: number;\n}\n\nconst ElementText = styled.div<ElementTextProps>`\n padding-left: ${({ $isSticker }) => ($isSticker ? '13px' : '19px')};\n color: ${({ theme }) => theme.colors.BLACK};\n font-size: 20px;\n font-weight: 800;\n ${({ $currentScreenWidth }) =>\n $currentScreenWidth < SCREEN_SIZES.LAPTOP &&\n css`\n padding-left: 0;\n `}\n`;\n\nconst getElementText = (isSticker: boolean, isCoddingType: boolean): string => {\n let name = ELEMENT_TEXT.STICKER;\n\n if (!isSticker) {\n name = isCoddingType ? ELEMENT_TEXT.CHIP : ELEMENT_TEXT.ELEMENT;\n }\n\n return name;\n};\n\ninterface ElementData {\n name: string;\n count: number;\n}\n\ninterface LottieProps {\n height: number;\n width: number;\n lottieSrc: string;\n}\n\nconst getElements = (\n element: string,\n elementsCount: Record<string, number>,\n isCoddingType: boolean,\n isSticker: boolean,\n lotties: Record<string, LottieProps> = {},\n currentScreenWidth: number,\n) => {\n return (\n <ElementWrapper $currentScreenWidth={currentScreenWidth} key={element}>\n <Element\n isAchieved={element in elementsCount}\n count={elementsCount[element]}\n elementType={element}\n isCoddingType={isCoddingType}\n isSticker={isSticker}\n lotties={lotties}\n currentScreenWidth={currentScreenWidth}\n />\n </ElementWrapper>\n );\n};\n\ninterface RewardElementsProps {\n elements?: ElementData[];\n isSticker?: boolean;\n lotties?: Record<string, LottieProps>;\n currentScreenWidth: number;\n programStream?: string;\n}\n\nconst RewardElements: React.FC<RewardElementsProps> = ({\n elements,\n isSticker = false,\n lotties = {},\n currentScreenWidth,\n programStream,\n}) => {\n const totalElements =\n programStream === ELEMENT_TEXT.CODING ? [...INSTRUCTION_REWARDS] : [...MATH_REWARDS];\n const isCoddingType = programStream === ELEMENT_TEXT.CODING;\n const totalStickers = STICKERS;\n const elementsCount: Record<string, number> = {};\n\n if (elements) {\n elements.forEach(element => {\n const { name, count } = element;\n\n elementsCount[name] = count;\n });\n }\n\n return (\n <InfoWrapper>\n <ElementText $currentScreenWidth={currentScreenWidth} $isSticker={isSticker}>\n <Text $renderAs=\"h5\" $color=\"BLACK\">\n {getElementText(isSticker, isCoddingType)}\n </Text>\n </ElementText>\n <Separator height={18} />\n <ElementContainer $flexWrap $flexDirection=\"row\" $currentScreenWidth={currentScreenWidth}>\n {!isSticker\n ? totalElements.map(element =>\n getElements(element, elementsCount, isCoddingType, false, {}, currentScreenWidth),\n )\n : totalStickers.map(sticker =>\n getElements(\n sticker,\n elementsCount,\n isCoddingType,\n isSticker,\n lotties,\n currentScreenWidth,\n ),\n )}\n </ElementContainer>\n </InfoWrapper>\n );\n};\n\nexport default RewardElements;\n"],"names":["ELEMENT_TEXT","InfoWrapper","styled","FlexView","theme","ElementContainer","$currentScreenWidth","SCREEN_SIZES","css","ElementWrapper","ElementText","$isSticker","getElementText","isSticker","isCoddingType","name","getElements","element","elementsCount","lotties","currentScreenWidth","jsx","Element","RewardElements","elements","programStream","totalElements","INSTRUCTION_REWARDS","MATH_REWARDS","totalStickers","STICKERS","count","Text","Separator","sticker"],"mappings":";;;;;;;AASA,MAAMA,IAAe;AAAA,EACnB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,SAAS;AACX,GAEMC,IAAcC,EAAOC,CAAQ;AAAA,sBACb,CAAC,EAAE,OAAAC,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA,GAOjDC,IAAmBH,EAAOC,CAAQ;AAAA;AAAA;AAAA,IAGpC,CAAC,EAAE,qBAAAG,EACH,MAAAA,IAAsBC,EAAa,UACnCC;AAAA;AAAA;AAAA,KAGC;AAAA,GAOCC,IAAiBP,EAAO;AAAA;AAAA;AAAA,IAG1B,CAAC,EAAE,qBAAAI,EACH,MAAAA,IAAsBC,EAAa,UACnCC;AAAA;AAAA;AAAA,KAGC;AAAA,GAQCE,IAAcR,EAAO;AAAA,kBACT,CAAC,EAAE,YAAAS,EAAA,MAAkBA,IAAa,SAAS,MAAO;AAAA,WACzD,CAAC,EAAE,OAAAP,EAAA,MAAYA,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA,IAGxC,CAAC,EAAE,qBAAAE,EACH,MAAAA,IAAsBC,EAAa,UACnCC;AAAA;AAAA,KAEC;AAAA,GAGCI,IAAiB,CAACC,GAAoBC,MAAmC;AAC7E,MAAIC,IAAOf,EAAa;AAExB,SAAKa,MACIE,IAAAD,IAAgBd,EAAa,OAAOA,EAAa,UAGnDe;AACT,GAaMC,IAAc,CAClBC,GACAC,GACAJ,GACAD,GACAM,IAAuC,CAAC,GACxCC,MAGE,gBAAAC,EAACZ,GAAe,EAAA,qBAAqBW,GACnC,UAAA,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,YAAYL,KAAWC;AAAA,IACvB,OAAOA,EAAcD,CAAO;AAAA,IAC5B,aAAaA;AAAA,IACb,eAAAH;AAAA,IACA,WAAAD;AAAA,IACA,SAAAM;AAAA,IACA,oBAAAC;AAAA,EAAA;AAAA,KAR0DH,CAU9D,GAYEM,IAAgD,CAAC;AAAA,EACrD,UAAAC;AAAA,EACA,WAAAX,IAAY;AAAA,EACZ,SAAAM,IAAU,CAAC;AAAA,EACX,oBAAAC;AAAA,EACA,eAAAK;AACF,MAAM;AACE,QAAAC,IACJD,MAAkBzB,EAAa,SAAS,CAAC,GAAG2B,CAAmB,IAAI,CAAC,GAAGC,CAAY,GAC/Ed,IAAgBW,MAAkBzB,EAAa,QAC/C6B,IAAgBC,GAChBZ,IAAwC,CAAA;AAE9C,SAAIM,KACFA,EAAS,QAAQ,CAAWP,MAAA;AACpB,UAAA,EAAE,MAAAF,GAAM,OAAAgB,EAAU,IAAAd;AAExB,IAAAC,EAAcH,CAAI,IAAIgB;AAAA,EAAA,CACvB,qBAIA9B,GACC,EAAA,UAAA;AAAA,IAAA,gBAAAoB,EAACX,GAAY,EAAA,qBAAqBU,GAAoB,YAAYP,GAChE,UAAC,gBAAAQ,EAAAW,GAAA,EAAK,WAAU,MAAK,QAAO,SACzB,UAAApB,EAAeC,GAAWC,CAAa,EAC1C,CAAA,GACF;AAAA,IACA,gBAAAO,EAACY,GAAU,EAAA,QAAQ,GAAI,CAAA;AAAA,IACvB,gBAAAZ,EAAChB,GAAiB,EAAA,WAAS,IAAC,gBAAe,OAAM,qBAAqBe,GACnE,UAACP,IAIEgB,EAAc;AAAA,MAAI,CAChBK,MAAAlB;AAAA,QACEkB;AAAA,QACAhB;AAAA,QACAJ;AAAA,QACAD;AAAA,QACAM;AAAA,QACAC;AAAA,MACF;AAAA,IAAA,IAXFM,EAAc;AAAA,MAAI,CAAAT,MAChBD,EAAYC,GAASC,GAAeJ,GAAe,IAAO,IAAIM,CAAkB;AAAA,OAYxF;AAAA,EACF,EAAA,CAAA;AAEJ;"}
|
@@ -1,161 +0,0 @@
|
|
1
|
-
import { ILLUSTRATIONS as T } from "../../assets/illustrations/illustrations.js";
|
2
|
-
import { IMAGES as E } from "../../assets/images/images.js";
|
3
|
-
import R from "../../assets/line-icons/icons/wins-common-icon.js";
|
4
|
-
import o from "../../assets/line-icons/icons/wins-epic-icon.js";
|
5
|
-
import C from "../../assets/line-icons/icons/wins-legendary-icon.js";
|
6
|
-
import D from "../../assets/line-icons/icons/wins-mystery-icon.js";
|
7
|
-
import n from "../../assets/line-icons/icons/wins-mythic-icon.js";
|
8
|
-
import c from "../../assets/line-icons/icons/wins-rare-icon.js";
|
9
|
-
import { LOTTIE as t } from "../../assets/lottie/lottie.js";
|
10
|
-
import { getTheme as s } from "../ui/theme/get-theme.js";
|
11
|
-
const m = {
|
12
|
-
TABLET: 864,
|
13
|
-
LAPTOP: 1024,
|
14
|
-
LAPTOPL: 1280
|
15
|
-
}, { colors: O } = s(), a = {
|
16
|
-
ASHTA: "#FF7E3B",
|
17
|
-
CHATVA: "#DA5107",
|
18
|
-
COSA: "#0A47C2",
|
19
|
-
DODA: "#850F85",
|
20
|
-
DVI: "#0A47C2",
|
21
|
-
EKA: "#3DD771",
|
22
|
-
HEXO: "#3DD771",
|
23
|
-
OCTO: "#FF7E3B",
|
24
|
-
TETRA: "#FFBA07",
|
25
|
-
ZODASA: "#1EB5F0",
|
26
|
-
CONGRATS: O.GREY_2,
|
27
|
-
COOL: O.GREY_2,
|
28
|
-
KUDOS: O.GREY_2,
|
29
|
-
GREAT: O.GREY_2,
|
30
|
-
WOW: O.GREY_2,
|
31
|
-
AWESOME: O.GREY_2
|
32
|
-
}, A = {
|
33
|
-
COMMON: "COMMON",
|
34
|
-
RARE: "RARE",
|
35
|
-
EPIC: "EPIC",
|
36
|
-
LEGENDARY: "LEGENDARY",
|
37
|
-
MYTHIC: "MYTHIC",
|
38
|
-
MYSTERY: "MYSTERY"
|
39
|
-
}, H = {
|
40
|
-
ACKNOWLEDGED: "ACKNOWLEDGED",
|
41
|
-
ASSIGNED: "ASSIGNED",
|
42
|
-
UNASSIGNED: "UNASSIGNED"
|
43
|
-
}, h = {
|
44
|
-
[A.COMMON]: "#1EB5F0",
|
45
|
-
[A.RARE]: "#3DD771",
|
46
|
-
[A.EPIC]: "#ED6CEF",
|
47
|
-
[A.LEGENDARY]: "#FF7E3B",
|
48
|
-
[A.MYTHIC]: "#FFBA07",
|
49
|
-
[A.MYSTERY]: O.WHITE
|
50
|
-
}, u = {
|
51
|
-
[A.COMMON]: R,
|
52
|
-
[A.RARE]: c,
|
53
|
-
[A.EPIC]: o,
|
54
|
-
[A.LEGENDARY]: C,
|
55
|
-
[A.MYTHIC]: n,
|
56
|
-
[A.MYSTERY]: D
|
57
|
-
}, P = {
|
58
|
-
[A.COMMON]: T.COMMON,
|
59
|
-
[A.RARE]: T.RARE,
|
60
|
-
[A.EPIC]: T.EPIC,
|
61
|
-
[A.LEGENDARY]: T.LEGENDARY,
|
62
|
-
[A.MYTHIC]: T.MYTHIC,
|
63
|
-
[A.MYSTERY]: T.MYSTERY
|
64
|
-
}, S = {
|
65
|
-
black: E.BLACK_BELT,
|
66
|
-
blue: E.BLUE_BELT,
|
67
|
-
brown: E.BROWN_BELT,
|
68
|
-
green: E.GREEN_BELT,
|
69
|
-
orange: E.ORANGE_BELT,
|
70
|
-
purple: E.PURPLE_BELT,
|
71
|
-
red: E.RED_BELT,
|
72
|
-
white: E.WHITE_BELT,
|
73
|
-
yellow: E.YELLOW_BELT
|
74
|
-
}, l = (r) => {
|
75
|
-
const e = r == null ? void 0 : r.toLowerCase();
|
76
|
-
return e && e in S ? S[e] : E.MASTERED_BADGE;
|
77
|
-
}, K = ["TETRA", "COSA", "DODA", "HEXO", "OCTO"], U = ["EKA", "DVI", "CHATVA", "ASHTA", "ZODASA"], F = ["CONGRATS", "COOL", "KUDOS", "GREAT", "WOW", "AWESOME"], f = (r) => {
|
78
|
-
switch (r) {
|
79
|
-
case "COSA":
|
80
|
-
return E.COSA;
|
81
|
-
case "OCTO":
|
82
|
-
return E.OCTO;
|
83
|
-
case "DODA":
|
84
|
-
return E.DODA;
|
85
|
-
case "HEXO":
|
86
|
-
return E.HEXO;
|
87
|
-
case "TETRA":
|
88
|
-
return E.TETRA;
|
89
|
-
case "EKA":
|
90
|
-
return E.EKA;
|
91
|
-
case "DVI":
|
92
|
-
return E.DVI;
|
93
|
-
case "CHATVA":
|
94
|
-
return E.CHATVA;
|
95
|
-
case "ASHTA":
|
96
|
-
return E.ASHTA;
|
97
|
-
case "ZODASA":
|
98
|
-
return E.ZODASA;
|
99
|
-
case "CONGRATS":
|
100
|
-
return E.CONGRATS;
|
101
|
-
case "COOL":
|
102
|
-
return E.COOL;
|
103
|
-
case "KUDOS":
|
104
|
-
return E.KUDOS;
|
105
|
-
case "GREAT":
|
106
|
-
return E.GREAT;
|
107
|
-
case "WOW":
|
108
|
-
return E.WOW;
|
109
|
-
case "AWESOME":
|
110
|
-
return E.AWESOME;
|
111
|
-
default:
|
112
|
-
return E.TETRA;
|
113
|
-
}
|
114
|
-
}, g = {
|
115
|
-
CONGRATS: {
|
116
|
-
height: 50,
|
117
|
-
width: 50,
|
118
|
-
lottieSrc: t.TROPHY
|
119
|
-
},
|
120
|
-
COOL: {
|
121
|
-
height: 50,
|
122
|
-
width: 50,
|
123
|
-
lottieSrc: t.COOL
|
124
|
-
},
|
125
|
-
KUDOS: {
|
126
|
-
height: 50,
|
127
|
-
width: 50,
|
128
|
-
lottieSrc: t.CLAPPING_HANDS
|
129
|
-
},
|
130
|
-
GREAT: {
|
131
|
-
height: 63,
|
132
|
-
width: 50,
|
133
|
-
lottieSrc: t.LIKE_BUTTON
|
134
|
-
},
|
135
|
-
WOW: {
|
136
|
-
height: 55,
|
137
|
-
width: 55,
|
138
|
-
lottieSrc: t.STAR_STRIKE_EMOJI
|
139
|
-
},
|
140
|
-
AWESOME: {
|
141
|
-
height: 50,
|
142
|
-
width: 50,
|
143
|
-
lottieSrc: t.AWESOME
|
144
|
-
}
|
145
|
-
};
|
146
|
-
export {
|
147
|
-
h as BADGE_TYPE_BACKGROUND,
|
148
|
-
P as BADGE_TYPE_BADGE_ICON,
|
149
|
-
u as BADGE_TYPE_TAB_ICON,
|
150
|
-
U as INSTRUCTION_REWARDS,
|
151
|
-
K as MATH_REWARDS,
|
152
|
-
m as SCREEN_SIZES,
|
153
|
-
F as STICKERS,
|
154
|
-
H as STUDENT_BADGE_STATUS,
|
155
|
-
A as STUDENT_BADGE_TYPE,
|
156
|
-
g as StickerMap,
|
157
|
-
a as elementColors,
|
158
|
-
l as getBeltIcon,
|
159
|
-
f as getRewardElement
|
160
|
-
};
|
161
|
-
//# sourceMappingURL=constants.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../src/features/wins-dashboard/constants.ts"],"sourcesContent":["import { ILLUSTRATIONS } from '../../assets/illustrations/illustrations';\nimport { IMAGES } from '../../assets/images/images';\nimport WinsCommonIcon from '../../assets/line-icons/icons/wins-common-icon';\nimport WinsEpicIcon from '../../assets/line-icons/icons/wins-epic-icon';\nimport WinsLegendaryIcon from '../../assets/line-icons/icons/wins-legendary-icon';\nimport WinsMysteryIcon from '../../assets/line-icons/icons/wins-mystery-icon';\nimport WinsMythicIcon from '../../assets/line-icons/icons/wins-mythic-icon';\nimport WinsRareIcon from '../../assets/line-icons/icons/wins-rare-icon';\nimport { LOTTIE } from '../../assets/lottie/lottie';\nimport { getTheme } from '../ui/theme/get-theme';\n\nexport const SCREEN_SIZES = {\n TABLET: 864,\n LAPTOP: 1024,\n LAPTOPL: 1280,\n};\n\nexport const DEVICES = {\n TABLET: `(max-width: ${SCREEN_SIZES.TABLET}px)`,\n LAPTOP: `(max-width: ${SCREEN_SIZES.LAPTOP}px)`,\n LAPTOPL: `(max-width: ${SCREEN_SIZES.LAPTOPL}px)`,\n};\n\nconst { colors } = getTheme();\n\nexport const elementColors = {\n ASHTA: '#FF7E3B',\n CHATVA: '#DA5107',\n COSA: '#0A47C2',\n DODA: '#850F85',\n DVI: '#0A47C2',\n EKA: '#3DD771',\n HEXO: '#3DD771',\n OCTO: '#FF7E3B',\n TETRA: '#FFBA07',\n ZODASA: '#1EB5F0',\n CONGRATS: colors.GREY_2,\n COOL: colors.GREY_2,\n KUDOS: colors.GREY_2,\n GREAT: colors.GREY_2,\n WOW: colors.GREY_2,\n AWESOME: colors.GREY_2,\n};\n\nexport const STUDENT_BADGE_TYPE = {\n COMMON: 'COMMON',\n RARE: 'RARE',\n EPIC: 'EPIC',\n LEGENDARY: 'LEGENDARY',\n MYTHIC: 'MYTHIC',\n MYSTERY: 'MYSTERY',\n};\n\nexport const STUDENT_BADGE_STATUS = {\n ACKNOWLEDGED: 'ACKNOWLEDGED',\n ASSIGNED: 'ASSIGNED',\n UNASSIGNED: 'UNASSIGNED',\n};\n\nexport const BADGE_TYPE_BACKGROUND = {\n [STUDENT_BADGE_TYPE.COMMON]: '#1EB5F0',\n [STUDENT_BADGE_TYPE.RARE]: '#3DD771',\n [STUDENT_BADGE_TYPE.EPIC]: '#ED6CEF',\n [STUDENT_BADGE_TYPE.LEGENDARY]: '#FF7E3B',\n [STUDENT_BADGE_TYPE.MYTHIC]: '#FFBA07',\n [STUDENT_BADGE_TYPE.MYSTERY]: colors.WHITE,\n};\n\nexport const BADGE_TYPE_TAB_ICON: Record<\n string,\n React.FC<{ color?: string; selected?: boolean }>\n> = {\n [STUDENT_BADGE_TYPE.COMMON]: WinsCommonIcon,\n [STUDENT_BADGE_TYPE.RARE]: WinsRareIcon,\n [STUDENT_BADGE_TYPE.EPIC]: WinsEpicIcon,\n [STUDENT_BADGE_TYPE.LEGENDARY]: WinsLegendaryIcon,\n [STUDENT_BADGE_TYPE.MYTHIC]: WinsMythicIcon,\n [STUDENT_BADGE_TYPE.MYSTERY]: WinsMysteryIcon,\n};\n\nexport const BADGE_TYPE_BADGE_ICON = {\n [STUDENT_BADGE_TYPE.COMMON]: ILLUSTRATIONS.COMMON,\n [STUDENT_BADGE_TYPE.RARE]: ILLUSTRATIONS.RARE,\n [STUDENT_BADGE_TYPE.EPIC]: ILLUSTRATIONS.EPIC,\n [STUDENT_BADGE_TYPE.LEGENDARY]: ILLUSTRATIONS.LEGENDARY,\n [STUDENT_BADGE_TYPE.MYTHIC]: ILLUSTRATIONS.MYTHIC,\n [STUDENT_BADGE_TYPE.MYSTERY]: ILLUSTRATIONS.MYSTERY,\n};\n\n// Audio URLs for badge sounds (commented out for now until MP3 files are available)\n// export const BADGE_TYPE_BADGE_SOUND = {\n// [STUDENT_BADGE_TYPE.COMMON]: '/static/sounds/common-badge.mp3',\n// [STUDENT_BADGE_TYPE.RARE]: '/static/sounds/rare-badge.mp3',\n// [STUDENT_BADGE_TYPE.EPIC]: '/static/sounds/epic-badge.mp3',\n// [STUDENT_BADGE_TYPE.LEGENDARY]: '/static/sounds/legendary-badge.mp3',\n// [STUDENT_BADGE_TYPE.MYTHIC]: '/static/sounds/mythic-badge.mp3',\n// [STUDENT_BADGE_TYPE.MYSTERY]: '/static/sounds/mystery-badge.mp3',\n// };\n\nconst BELT_COLORS = [\n 'black',\n 'blue',\n 'brown',\n 'green',\n 'orange',\n 'purple',\n 'red',\n 'white',\n 'yellow',\n] as const;\n\ntype BeltColor = (typeof BELT_COLORS)[number];\n\nconst COLOR_TO_BELT_MAP: Record<BeltColor, string> = {\n black: IMAGES.BLACK_BELT,\n blue: IMAGES.BLUE_BELT,\n brown: IMAGES.BROWN_BELT,\n green: IMAGES.GREEN_BELT,\n orange: IMAGES.ORANGE_BELT,\n purple: IMAGES.PURPLE_BELT,\n red: IMAGES.RED_BELT,\n white: IMAGES.WHITE_BELT,\n yellow: IMAGES.YELLOW_BELT,\n};\n\nexport const getBeltIcon = (type: string) => {\n const key = type?.toLowerCase() as BeltColor;\n\n if (key && key in COLOR_TO_BELT_MAP) return COLOR_TO_BELT_MAP[key];\n\n return IMAGES.MASTERED_BADGE;\n};\n\nexport const MATH_REWARDS = ['TETRA', 'COSA', 'DODA', 'HEXO', 'OCTO'];\n\nexport const INSTRUCTION_REWARDS = ['EKA', 'DVI', 'CHATVA', 'ASHTA', 'ZODASA'];\n\nexport const STICKERS = ['CONGRATS', 'COOL', 'KUDOS', 'GREAT', 'WOW', 'AWESOME'];\n\nexport const getRewardElement = (rewardType: string): string => {\n switch (rewardType) {\n case 'COSA':\n return IMAGES.COSA;\n case 'OCTO':\n return IMAGES.OCTO;\n case 'DODA':\n return IMAGES.DODA;\n case 'HEXO':\n return IMAGES.HEXO;\n case 'TETRA':\n return IMAGES.TETRA;\n case 'EKA':\n return IMAGES.EKA;\n case 'DVI':\n return IMAGES.DVI;\n case 'CHATVA':\n return IMAGES.CHATVA;\n case 'ASHTA':\n return IMAGES.ASHTA;\n case 'ZODASA':\n return IMAGES.ZODASA;\n case 'CONGRATS':\n return IMAGES.CONGRATS;\n case 'COOL':\n return IMAGES.COOL;\n case 'KUDOS':\n return IMAGES.KUDOS;\n case 'GREAT':\n return IMAGES.GREAT;\n case 'WOW':\n return IMAGES.WOW;\n case 'AWESOME':\n return IMAGES.AWESOME;\n default:\n return IMAGES.TETRA;\n }\n};\n\nexport const StickerMap = {\n CONGRATS: {\n height: 50,\n width: 50,\n lottieSrc: LOTTIE.TROPHY,\n },\n COOL: {\n height: 50,\n width: 50,\n lottieSrc: LOTTIE.COOL,\n },\n KUDOS: {\n height: 50,\n width: 50,\n lottieSrc: LOTTIE.CLAPPING_HANDS,\n },\n GREAT: {\n height: 63,\n width: 50,\n lottieSrc: LOTTIE.LIKE_BUTTON,\n },\n WOW: {\n height: 55,\n width: 55,\n lottieSrc: LOTTIE.STAR_STRIKE_EMOJI,\n },\n AWESOME: {\n height: 50,\n width: 50,\n lottieSrc: LOTTIE.AWESOME,\n },\n};\n\nexport const TYPES = {\n SENT_BADGES: 'SENT_BADGES',\n PENDING_BADGES: 'PENDING_BADGES',\n};\n\nexport const ACTION = {\n ACKNOWLEDGE: 'ACKNOWLEDGE',\n};\n"],"names":["SCREEN_SIZES","colors","getTheme","elementColors","STUDENT_BADGE_TYPE","STUDENT_BADGE_STATUS","BADGE_TYPE_BACKGROUND","BADGE_TYPE_TAB_ICON","WinsCommonIcon","WinsRareIcon","WinsEpicIcon","WinsLegendaryIcon","WinsMythicIcon","WinsMysteryIcon","BADGE_TYPE_BADGE_ICON","ILLUSTRATIONS","COLOR_TO_BELT_MAP","IMAGES","getBeltIcon","type","key","MATH_REWARDS","INSTRUCTION_REWARDS","STICKERS","getRewardElement","rewardType","StickerMap","LOTTIE"],"mappings":"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"}
|
@@ -1,95 +0,0 @@
|
|
1
|
-
import { jsxs as r, jsx as e, Fragment as k } from "react/jsx-runtime";
|
2
|
-
import { useCallback as u } from "react";
|
3
|
-
import h, { css as C } from "styled-components";
|
4
|
-
import W from "../../../assets/line-icons/icons/back2.js";
|
5
|
-
import y from "../../../assets/line-icons/icons/cue-coin.js";
|
6
|
-
import H from "../../ui/buttons/clickable/clickable.js";
|
7
|
-
import T from "../../ui/inputs/select-input/select-input.js";
|
8
|
-
import n from "../../ui/layout/flex-view.js";
|
9
|
-
import f from "../../ui/separator/separator.js";
|
10
|
-
import m from "../../ui/text/text.js";
|
11
|
-
const j = h(n)`
|
12
|
-
background: ${({ theme: i }) => i.colors.WHITE};
|
13
|
-
border-bottom: 1px solid ${({ theme: i }) => i.colors.GREY_2};
|
14
|
-
height: 64px;
|
15
|
-
left: ${({ widthOffset: i }) => i}px;
|
16
|
-
padding-left: 32px;
|
17
|
-
padding-right: 20px;
|
18
|
-
position: fixed;
|
19
|
-
right: 0;
|
20
|
-
top: ${({ topOffset: i }) => i}px;
|
21
|
-
width: calc(100% - ${({ widthOffset: i }) => i}px);
|
22
|
-
${({ showLeftBorder: i }) => i && C`
|
23
|
-
position: sticky;
|
24
|
-
left: 0;
|
25
|
-
top: 0;
|
26
|
-
width: 100%;
|
27
|
-
border-left: 1px solid ${({ theme: t }) => t.colors.GREY_2};
|
28
|
-
`}
|
29
|
-
z-index: ${({
|
30
|
-
theme: {
|
31
|
-
zIndex: { HEADER: i }
|
32
|
-
}
|
33
|
-
}) => i};
|
34
|
-
`, v = h(n)`
|
35
|
-
flex: 1;
|
36
|
-
`, p = ({ variant: i, coin: t }) => /* @__PURE__ */ r(k, { children: [
|
37
|
-
/* @__PURE__ */ e(y, { variant: i, width: 32, height: 32 }),
|
38
|
-
/* @__PURE__ */ e(f, { width: 8 }),
|
39
|
-
/* @__PURE__ */ e(m, { $renderAs: "h5", children: t })
|
40
|
-
] }), A = ({
|
41
|
-
currentSelectedProgram: i,
|
42
|
-
goldCoins: t = 0,
|
43
|
-
onBackClick: x,
|
44
|
-
onProgramChange: l,
|
45
|
-
programOptions: d = [],
|
46
|
-
silverCoins: c = 0,
|
47
|
-
showLeftBorder: $ = !1,
|
48
|
-
topOffset: w = 0,
|
49
|
-
widthOffset: b = 0
|
50
|
-
}) => {
|
51
|
-
const g = u(
|
52
|
-
(o) => {
|
53
|
-
const a = d.find((I) => I.id === o);
|
54
|
-
l && a && l(a);
|
55
|
-
},
|
56
|
-
[l, d]
|
57
|
-
), s = d.map((o) => ({
|
58
|
-
id: o.id,
|
59
|
-
label: o.name
|
60
|
-
// Use 'name' from API data for display
|
61
|
-
}));
|
62
|
-
return /* @__PURE__ */ r(
|
63
|
-
j,
|
64
|
-
{
|
65
|
-
$flexDirection: "row",
|
66
|
-
topOffset: w,
|
67
|
-
widthOffset: b,
|
68
|
-
showLeftBorder: $,
|
69
|
-
children: [
|
70
|
-
/* @__PURE__ */ r(n, { $flexDirection: "row", $alignItems: "center", $flexGapX: 0.5, children: [
|
71
|
-
/* @__PURE__ */ e(H, { label: "Back", onClick: x, children: /* @__PURE__ */ e(W, { width: 24, height: 24 }) }),
|
72
|
-
/* @__PURE__ */ e(m, { $renderAs: "h6", children: "Wins" })
|
73
|
-
] }),
|
74
|
-
s.length > 1 && /* @__PURE__ */ e(v, { $justifyContent: "center", $alignItems: "center", children: /* @__PURE__ */ e(
|
75
|
-
T,
|
76
|
-
{
|
77
|
-
options: s,
|
78
|
-
value: (i == null ? void 0 : i.id) || "",
|
79
|
-
onChange: g,
|
80
|
-
renderAs: "primary"
|
81
|
-
}
|
82
|
-
) }),
|
83
|
-
/* @__PURE__ */ r(n, { $flexDirection: "row", $alignItems: "center", children: [
|
84
|
-
t > 0 && /* @__PURE__ */ e(p, { variant: "gold", coin: t }),
|
85
|
-
/* @__PURE__ */ e(f, { width: 8 }),
|
86
|
-
c > 0 && /* @__PURE__ */ e(p, { variant: "silver", coin: c })
|
87
|
-
] })
|
88
|
-
]
|
89
|
-
}
|
90
|
-
);
|
91
|
-
}, X = A;
|
92
|
-
export {
|
93
|
-
X as default
|
94
|
-
};
|
95
|
-
//# sourceMappingURL=wins-header.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"wins-header.js","sources":["../../../../src/features/wins-dashboard/header/wins-header.tsx"],"sourcesContent":["import React, { useCallback } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Back2Icon from '../../../assets/line-icons/icons/back2';\nimport CueCoinIcon from '../../../assets/line-icons/icons/cue-coin';\nimport Clickable from '../../ui/buttons/clickable/clickable';\nimport SelectInput from '../../ui/inputs/select-input/select-input';\nimport FlexView from '../../ui/layout/flex-view';\nimport Separator from '../../ui/separator/separator';\nimport Text from '../../ui/text/text';\n\ninterface HeaderProps {\n topOffset: number;\n widthOffset: number;\n showLeftBorder: boolean;\n}\n\nconst Header = styled(FlexView)<HeaderProps>`\n background: ${({ theme }) => theme.colors.WHITE};\n border-bottom: 1px solid ${({ theme }) => theme.colors.GREY_2};\n height: 64px;\n left: ${({ widthOffset }) => widthOffset}px;\n padding-left: 32px;\n padding-right: 20px;\n position: fixed;\n right: 0;\n top: ${({ topOffset }) => topOffset}px;\n width: calc(100% - ${({ widthOffset }) => widthOffset}px);\n ${({ showLeftBorder }) =>\n showLeftBorder &&\n css`\n position: sticky;\n left: 0;\n top: 0;\n width: 100%;\n border-left: 1px solid ${({ theme }) => theme.colors.GREY_2};\n `}\n z-index: ${({\n theme: {\n zIndex: { HEADER },\n },\n }) => HEADER};\n`;\n\nconst ProgramSwitcherWrapper = styled(FlexView)`\n flex: 1;\n`;\n\ninterface CoinViewProps {\n variant: 'gold' | 'silver';\n coin: number;\n}\n\nconst CoinView: React.FC<CoinViewProps> = ({ variant, coin }) => {\n return (\n <>\n <CueCoinIcon variant={variant} width={32} height={32} />\n <Separator width={8} />\n <Text $renderAs=\"h5\">{coin}</Text>\n </>\n );\n};\n\ninterface IProgramOption {\n badges_enabled: boolean;\n board: string;\n board_id: string;\n code: string;\n cue_program_type: string;\n description: string;\n grade: string;\n grades: string[];\n id: string;\n is_active: boolean;\n is_current: boolean;\n is_current_stream_program: boolean;\n is_demo: boolean;\n is_live: boolean;\n name: string;\n program_type: string;\n rewards_enabled: boolean;\n stream: string;\n sub_stream: string | null;\n [key: string]: unknown;\n}\n\ninterface WinsTabHeaderProps {\n currentSelectedProgram?: IProgramOption;\n goldCoins?: number;\n onBackClick?: () => void;\n onProgramChange?: (p: IProgramOption) => void;\n programOptions?: IProgramOption[];\n silverCoins?: number;\n showLeftBorder?: boolean;\n topOffset?: number;\n widthOffset?: number;\n}\n\nconst WinsTabHeader: React.FC<WinsTabHeaderProps> = ({\n currentSelectedProgram,\n goldCoins = 0,\n onBackClick,\n onProgramChange,\n programOptions = [],\n silverCoins = 0,\n showLeftBorder = false,\n topOffset = 0,\n widthOffset = 0,\n}) => {\n const handleProgramChange = useCallback(\n (selectedId: string) => {\n // Find the original program option from programOptions\n const originalOption = programOptions.find(op => op.id === selectedId);\n\n if (onProgramChange && originalOption) {\n onProgramChange(originalOption);\n }\n },\n [onProgramChange, programOptions],\n );\n\n // Transform program options to SelectInput format\n const selectOptions = programOptions.map(option => ({\n id: option.id,\n label: option.name, // Use 'name' from API data for display\n }));\n\n return (\n <Header\n $flexDirection=\"row\"\n topOffset={topOffset}\n widthOffset={widthOffset}\n showLeftBorder={showLeftBorder}\n >\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={0.5}>\n <Clickable label=\"Back\" onClick={onBackClick}>\n <Back2Icon width={24} height={24} />\n </Clickable>\n <Text $renderAs=\"h6\">Wins</Text>\n </FlexView>\n {selectOptions.length > 1 && (\n <ProgramSwitcherWrapper $justifyContent=\"center\" $alignItems=\"center\">\n <SelectInput\n options={selectOptions}\n value={currentSelectedProgram?.id || ''}\n onChange={handleProgramChange}\n renderAs=\"primary\"\n />\n </ProgramSwitcherWrapper>\n )}\n <FlexView $flexDirection=\"row\" $alignItems=\"center\">\n {goldCoins > 0 && <CoinView variant=\"gold\" coin={goldCoins} />}\n <Separator width={8} />\n {silverCoins > 0 && <CoinView variant=\"silver\" coin={silverCoins} />}\n </FlexView>\n </Header>\n );\n};\n\nexport default WinsTabHeader;\n"],"names":["Header","styled","FlexView","theme","widthOffset","topOffset","showLeftBorder","css","HEADER","ProgramSwitcherWrapper","CoinView","variant","coin","jsxs","Fragment","jsx","CueCoinIcon","Separator","Text","WinsTabHeader","currentSelectedProgram","goldCoins","onBackClick","onProgramChange","programOptions","silverCoins","handleProgramChange","useCallback","selectedId","originalOption","op","selectOptions","option","Clickable","Back2Icon","SelectInput","WinsTabHeader$1"],"mappings":"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"}
|
@@ -1,65 +0,0 @@
|
|
1
|
-
import { jsxs as f, jsx as n } from "react/jsx-runtime";
|
2
|
-
import i, { css as u } from "styled-components";
|
3
|
-
import e from "../../ui/layout/flex-view.js";
|
4
|
-
import C from "../../ui/text/text.js";
|
5
|
-
const b = 725, g = i(e)`
|
6
|
-
flex: 1;
|
7
|
-
position: relative;
|
8
|
-
`, I = i(e)`
|
9
|
-
position: relative;
|
10
|
-
align-items: center;
|
11
|
-
justify-content: center;
|
12
|
-
padding-top: 16px;
|
13
|
-
padding-bottom: 12px;
|
14
|
-
flex: 1;
|
15
|
-
cursor: pointer;
|
16
|
-
`, w = i.div`
|
17
|
-
width: ${({ $width: t }) => t}px;
|
18
|
-
height: 2px;
|
19
|
-
position: absolute;
|
20
|
-
bottom: 0;
|
21
|
-
background: BLACK;
|
22
|
-
transition: transform 300ms linear;
|
23
|
-
transform: translateX(${({ $left: t }) => t}px);
|
24
|
-
`, B = i(e)`
|
25
|
-
${({ $hideTabText: t }) => t && u`
|
26
|
-
display: none;
|
27
|
-
`}
|
28
|
-
`, E = ({
|
29
|
-
onTabClick: t,
|
30
|
-
selectedTabId: d,
|
31
|
-
tabs: r,
|
32
|
-
currentScreenWidth: x
|
33
|
-
}) => {
|
34
|
-
const l = r.findIndex((o) => o.id === d), { ref: c } = r[l] || {}, { clientWidth: s = 0 } = (c == null ? void 0 : c.current) || {}, m = s, $ = l * s + (s - m) / 2;
|
35
|
-
return /* @__PURE__ */ f(g, { $background: "WHITE", children: [
|
36
|
-
/* @__PURE__ */ n(e, { $flexDirection: "row", $width: "100%", children: r.map((o) => {
|
37
|
-
const { id: a, title: h, Icon: T } = o, p = a === d;
|
38
|
-
return /* @__PURE__ */ n(
|
39
|
-
I,
|
40
|
-
{
|
41
|
-
$justifyContent: "center",
|
42
|
-
onClick: () => t(a),
|
43
|
-
ref: o.ref,
|
44
|
-
children: /* @__PURE__ */ f(e, { $flexDirection: "row", $justifyContent: "center", $alignItems: "center", children: [
|
45
|
-
/* @__PURE__ */ n(T, { selected: p }),
|
46
|
-
/* @__PURE__ */ n(
|
47
|
-
B,
|
48
|
-
{
|
49
|
-
$gutter: 4,
|
50
|
-
$hideTabText: x <= b,
|
51
|
-
children: /* @__PURE__ */ n(C, { $renderAs: "eyebrow2", $color: p ? "BLACK" : "BLACK_75", children: h })
|
52
|
-
}
|
53
|
-
)
|
54
|
-
] })
|
55
|
-
},
|
56
|
-
a
|
57
|
-
);
|
58
|
-
}) }),
|
59
|
-
/* @__PURE__ */ n(w, { $left: $, $width: m })
|
60
|
-
] });
|
61
|
-
};
|
62
|
-
export {
|
63
|
-
E as default
|
64
|
-
};
|
65
|
-
//# sourceMappingURL=animated-tabbar.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"animated-tabbar.js","sources":["../../../../src/features/wins-dashboard/student-badges/animated-tabbar.tsx"],"sourcesContent":["import React from 'react';\nimport styled, { css } from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\n\nconst MIN_SCREEN_WIDTH_FOR_TAB_TEXT = 725;\n\nexport interface TabItem {\n id: string;\n ref: React.RefObject<HTMLDivElement | null>;\n Icon: React.FC<{ selected: boolean }>;\n title: string;\n}\n\ninterface IndicatorProps {\n $width: number;\n $left: number;\n}\n\nconst TabBarContainer = styled(FlexView)`\n flex: 1;\n position: relative;\n`;\n\nconst TabBarColumn = styled(FlexView)`\n position: relative;\n align-items: center;\n justify-content: center;\n padding-top: 16px;\n padding-bottom: 12px;\n flex: 1;\n cursor: pointer;\n`;\n\nconst Indicator = styled.div<IndicatorProps>`\n width: ${({ $width }) => $width}px;\n height: 2px;\n position: absolute;\n bottom: 0;\n background: BLACK;\n transition: transform 300ms linear;\n transform: translateX(${({ $left }) => $left}px);\n`;\n\nconst TabTitleContainer = styled(FlexView)<{ $hideTabText: boolean }>`\n ${({ $hideTabText }) =>\n $hideTabText &&\n css`\n display: none;\n `}\n`;\n\ninterface AnimatedTabBarProps {\n onTabClick: (tabId: string) => void;\n selectedTabId: string;\n tabs: TabItem[];\n currentScreenWidth: number;\n}\n\nconst AnimatedTabBar = ({\n onTabClick,\n selectedTabId,\n tabs,\n currentScreenWidth,\n}: AnimatedTabBarProps) => {\n const selectedTabItemIndex = tabs.findIndex((tab: TabItem) => tab.id === selectedTabId);\n const { ref } = tabs[selectedTabItemIndex] || {};\n const { clientWidth = 0 } = ref?.current || {};\n const indicatorWidth = clientWidth;\n\n const indicatorTranslateX =\n selectedTabItemIndex * clientWidth + (clientWidth - indicatorWidth) / 2;\n\n return (\n <TabBarContainer $background=\"WHITE\">\n <FlexView $flexDirection=\"row\" $width={'100%'}>\n {tabs.map((tab: TabItem) => {\n const { id, title, Icon } = tab;\n const selected = id === selectedTabId;\n\n return (\n <TabBarColumn\n $justifyContent=\"center\"\n key={id}\n onClick={() => onTabClick(id)}\n ref={tab.ref}\n >\n <FlexView $flexDirection=\"row\" $justifyContent=\"center\" $alignItems=\"center\">\n <Icon selected={selected} />\n <TabTitleContainer\n $gutter={4}\n $hideTabText={currentScreenWidth <= MIN_SCREEN_WIDTH_FOR_TAB_TEXT}\n >\n <Text $renderAs=\"eyebrow2\" $color={selected ? 'BLACK' : 'BLACK_75'}>\n {title}\n </Text>\n </TabTitleContainer>\n </FlexView>\n </TabBarColumn>\n );\n })}\n </FlexView>\n <Indicator $left={indicatorTranslateX} $width={indicatorWidth} />\n </TabBarContainer>\n );\n};\n\nexport default AnimatedTabBar;\n"],"names":["MIN_SCREEN_WIDTH_FOR_TAB_TEXT","TabBarContainer","styled","FlexView","TabBarColumn","Indicator","$width","$left","TabTitleContainer","$hideTabText","css","AnimatedTabBar","onTabClick","selectedTabId","tabs","currentScreenWidth","selectedTabItemIndex","tab","ref","clientWidth","indicatorWidth","indicatorTranslateX","jsxs","jsx","id","title","Icon","selected","Text"],"mappings":";;;;AAMA,MAAMA,IAAgC,KAchCC,IAAkBC,EAAOC,CAAQ;AAAA;AAAA;AAAA,GAKjCC,IAAeF,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAU9BE,IAAYH,EAAO;AAAA,WACd,CAAC,EAAE,QAAAI,EAAO,MAAMA,CAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,0BAMP,CAAC,EAAE,OAAAC,EAAM,MAAMA,CAAK;AAAA,GAGxCC,IAAoBN,EAAOC,CAAQ;AAAA,IACrC,CAAC,EAAE,cAAAM,QACHA,KACAC;AAAA;AAAA,KAEC;AAAA,GAUCC,IAAiB,CAAC;AAAA,EACtB,YAAAC;AAAA,EACA,eAAAC;AAAA,EACA,MAAAC;AAAA,EACA,oBAAAC;AACF,MAA2B;AACzB,QAAMC,IAAuBF,EAAK,UAAU,CAACG,MAAiBA,EAAI,OAAOJ,CAAa,GAChF,EAAE,KAAAK,EAAI,IAAIJ,EAAKE,CAAoB,KAAK,CAAA,GACxC,EAAE,aAAAG,IAAc,EAAA,KAAMD,KAAA,gBAAAA,EAAK,YAAW,CAAA,GACtCE,IAAiBD,GAEjBE,IACJL,IAAuBG,KAAeA,IAAcC,KAAkB;AAGtE,SAAA,gBAAAE,EAACrB,GAAgB,EAAA,aAAY,SAC3B,UAAA;AAAA,IAAC,gBAAAsB,EAAApB,GAAA,EAAS,gBAAe,OAAM,QAAQ,QACpC,UAAKW,EAAA,IAAI,CAACG,MAAiB;AAC1B,YAAM,EAAE,IAAAO,GAAI,OAAAC,GAAO,MAAAC,EAAA,IAAST,GACtBU,IAAWH,MAAOX;AAGtB,aAAA,gBAAAU;AAAA,QAACnB;AAAA,QAAA;AAAA,UACC,iBAAgB;AAAA,UAEhB,SAAS,MAAMQ,EAAWY,CAAE;AAAA,UAC5B,KAAKP,EAAI;AAAA,UAET,4BAACd,GAAS,EAAA,gBAAe,OAAM,iBAAgB,UAAS,aAAY,UAClE,UAAA;AAAA,YAAA,gBAAAoB,EAACG,KAAK,UAAAC,GAAoB;AAAA,YAC1B,gBAAAJ;AAAA,cAACf;AAAA,cAAA;AAAA,gBACC,SAAS;AAAA,gBACT,cAAcO,KAAsBf;AAAA,gBAEpC,UAAA,gBAAAuB,EAACK,KAAK,WAAU,YAAW,QAAQD,IAAW,UAAU,YACrD,UACHF,EAAA,CAAA;AAAA,cAAA;AAAA,YACF;AAAA,UAAA,GACF;AAAA,QAAA;AAAA,QAdKD;AAAA,MAAA;AAAA,IAiBV,CAAA,GACH;AAAA,IACC,gBAAAD,EAAAlB,GAAA,EAAU,OAAOgB,GAAqB,QAAQD,GAAgB;AAAA,EACjE,EAAA,CAAA;AAEJ;"}
|
@@ -1,107 +0,0 @@
|
|
1
|
-
import Y from "lottie-web";
|
2
|
-
import { useRef as _, useState as s, useEffect as v, useCallback as g } from "react";
|
3
|
-
import { useUIContext as X } from "../../../ui/context/context.js";
|
4
|
-
import { getTheme as Z } from "../../../ui/theme/get-theme.js";
|
5
|
-
import { STUDENT_BADGE_TYPE as B, STUDENT_BADGE_STATUS as $, BADGE_TYPE_BADGE_ICON as L } from "../../constants.js";
|
6
|
-
const { colors: M } = Z();
|
7
|
-
function se(m) {
|
8
|
-
const {
|
9
|
-
animation_url: i,
|
10
|
-
category: a,
|
11
|
-
current_count: S,
|
12
|
-
description: C,
|
13
|
-
image_url: c,
|
14
|
-
id: e,
|
15
|
-
invalidateRewardsHome: D,
|
16
|
-
name: U,
|
17
|
-
openModal: f,
|
18
|
-
state: k,
|
19
|
-
total_count: T
|
20
|
-
} = m || {}, { onEvent: d } = X(), A = _(null), u = _(null), [o, y] = s(null), [G, O] = s(!1), [P, h] = s(!1), t = k !== $.UNASSIGNED, [H, E] = s(t), p = S && T ? S / T * 100 : 0, J = a !== B.MYSTERY && !t && p > 0, l = _(null), [b, x] = s();
|
21
|
-
v(() => {
|
22
|
-
if (u.current)
|
23
|
-
return l.current = new window.IntersectionObserver(
|
24
|
-
([n]) => {
|
25
|
-
x(n);
|
26
|
-
},
|
27
|
-
{
|
28
|
-
threshold: 0.5
|
29
|
-
}
|
30
|
-
), l.current.observe(u.current), () => {
|
31
|
-
l.current && l.current.disconnect();
|
32
|
-
};
|
33
|
-
}, [u]);
|
34
|
-
const j = (b == null ? void 0 : b.isIntersecting) ?? !1, V = t ? c || L[a] : L[a], I = a === B.MYSTERY && !t, W = a === B.MYSTERY ? M.GREY_1 : M.WHITE, { badgeName: q, badgeDescription: z } = I ? { badgeName: "????", badgeDescription: "----------------" } : { badgeName: U || "", badgeDescription: C || "" }, r = t && o, N = !G && t && j && !o && i, w = t && c, R = g(() => {
|
35
|
-
if (!o || !e) return null;
|
36
|
-
const n = document.getElementById(e);
|
37
|
-
return n ? Y.loadAnimation({
|
38
|
-
name: e,
|
39
|
-
container: n,
|
40
|
-
renderer: "svg",
|
41
|
-
loop: !0,
|
42
|
-
autoplay: !0,
|
43
|
-
animationData: JSON.parse(o)
|
44
|
-
}) : null;
|
45
|
-
}, [e, o]);
|
46
|
-
v(() => {
|
47
|
-
w && (A.current = new Image(), A.current.src = c, E(!1)), N && fetch(i).then((n) => n.json()).then((n) => {
|
48
|
-
y(JSON.stringify(n)), E(!1);
|
49
|
-
}).catch((n) => {
|
50
|
-
O(!0), E(!1), d("student_badge_animation_load_failed", {
|
51
|
-
studentBadgeId: e,
|
52
|
-
animationUrl: i,
|
53
|
-
error: n.message
|
54
|
-
});
|
55
|
-
});
|
56
|
-
}, [i, N, w, c, e, d]);
|
57
|
-
const F = g(() => {
|
58
|
-
!r || !f || (f("student-badges", {
|
59
|
-
badges: [
|
60
|
-
{
|
61
|
-
...m,
|
62
|
-
animationData: o ? JSON.parse(o) : null
|
63
|
-
}
|
64
|
-
],
|
65
|
-
invalidateRewardsHome: D
|
66
|
-
}), d("student_badge_clicked", {
|
67
|
-
studentBadgeId: e,
|
68
|
-
category: a,
|
69
|
-
badgeEarned: t
|
70
|
-
}));
|
71
|
-
}, [
|
72
|
-
r,
|
73
|
-
f,
|
74
|
-
m,
|
75
|
-
o,
|
76
|
-
D,
|
77
|
-
d,
|
78
|
-
e,
|
79
|
-
a,
|
80
|
-
t
|
81
|
-
]), K = g(() => {
|
82
|
-
r && (R(), h(!0));
|
83
|
-
}, [R, r]), Q = g(() => {
|
84
|
-
r && (h(!1), Y.destroy(e));
|
85
|
-
}, [r, e]);
|
86
|
-
return {
|
87
|
-
badgeBackgroundColor: W,
|
88
|
-
badgeDescription: z,
|
89
|
-
badgeEarned: t,
|
90
|
-
badgeImage: V,
|
91
|
-
badgeName: q,
|
92
|
-
badgeProgress: p,
|
93
|
-
mouseEntered: P,
|
94
|
-
notEarnedMysterBadge: I,
|
95
|
-
onBadgeClick: F,
|
96
|
-
onBadgeMouseEnter: K,
|
97
|
-
onBadgeMouseLeave: Q,
|
98
|
-
showLoader: H,
|
99
|
-
showProgress: J,
|
100
|
-
studentBadgeId: e,
|
101
|
-
studentBadgeRef: u
|
102
|
-
};
|
103
|
-
}
|
104
|
-
export {
|
105
|
-
se as default
|
106
|
-
};
|
107
|
-
//# sourceMappingURL=use-student-badge-hook.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"use-student-badge-hook.js","sources":["../../../../../src/features/wins-dashboard/student-badges/hooks/use-student-badge-hook.ts"],"sourcesContent":["import lottie from 'lottie-web';\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { useUIContext } from '../../../ui/context/context';\nimport { getTheme } from '../../../ui/theme/get-theme';\nimport { BADGE_TYPE_BADGE_ICON, STUDENT_BADGE_STATUS, STUDENT_BADGE_TYPE } from '../../constants';\n\nconst { colors } = getTheme();\n\ninterface StudentBadgeModalData {\n badges: Array<{\n animation_url?: string;\n animationData?: object;\n category: string;\n current_count?: number;\n description?: string;\n id: string;\n image_url?: string;\n name?: string;\n state?: string;\n total_count?: number;\n }>;\n invalidateRewardsHome?: () => void;\n}\n\ninterface UseStudentBadgeHookProps {\n animation_url?: string;\n category: string;\n current_count?: number;\n description?: string;\n image_url?: string;\n id: string;\n invalidateRewardsHome?: () => void;\n is_recent?: boolean;\n name?: string;\n openModal?: (modalType: string, data: StudentBadgeModalData) => void;\n state?: string;\n total_count?: number;\n}\n\nexport default function useStudentBadgeHook(props: UseStudentBadgeHookProps) {\n const {\n animation_url: animationUrl,\n category,\n current_count: currentCount,\n description,\n image_url: imageUrl,\n id: studentBadgeId,\n invalidateRewardsHome,\n name,\n openModal,\n state,\n total_count: totalCount,\n } = props || {};\n\n const { onEvent: trackEvent } = useUIContext();\n const imageRef = useRef<HTMLImageElement | null>(null);\n const studentBadgeRef = useRef<HTMLDivElement | null>(null);\n const [lottieAnimationData, setLottieAnimationData] = useState<string | null>(null);\n const [lottieLoadingError, setLottieLoadingError] = useState(false);\n const [mouseEntered, setMouseEntered] = useState(false);\n\n const badgeEarned = state !== STUDENT_BADGE_STATUS.UNASSIGNED;\n const [showLoader, setShowLoader] = useState(badgeEarned);\n const badgeProgress = currentCount && totalCount ? (currentCount / totalCount) * 100 : 0;\n const showProgress = category !== STUDENT_BADGE_TYPE.MYSTERY && !badgeEarned && badgeProgress > 0;\n const observerRef = useRef<IntersectionObserver | null>(null);\n const [studentBadgeEntry, setStudentBadgeEntry] = useState<\n IntersectionObserverEntry | undefined\n >();\n\n useEffect(() => {\n if (!studentBadgeRef.current) return;\n\n observerRef.current = new window.IntersectionObserver(\n ([entry]) => {\n setStudentBadgeEntry(entry);\n },\n {\n threshold: 0.5,\n },\n );\n\n observerRef.current.observe(studentBadgeRef.current);\n\n return () => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n };\n }, [studentBadgeRef]);\n\n const studentBadgeVisible = studentBadgeEntry?.isIntersecting ?? false;\n\n const badgeImage = badgeEarned\n ? imageUrl || BADGE_TYPE_BADGE_ICON[category as keyof typeof BADGE_TYPE_BADGE_ICON]\n : BADGE_TYPE_BADGE_ICON[category as keyof typeof BADGE_TYPE_BADGE_ICON];\n\n const notEarnedMysterBadge = category === STUDENT_BADGE_TYPE.MYSTERY && !badgeEarned;\n const badgeBackgroundColor =\n category === STUDENT_BADGE_TYPE.MYSTERY ? colors.GREY_1 : colors.WHITE;\n\n const { badgeName, badgeDescription } = notEarnedMysterBadge\n ? { badgeName: '????', badgeDescription: '----------------' }\n : { badgeName: name || '', badgeDescription: description || '' };\n\n const showAnimation = badgeEarned && lottieAnimationData;\n const loadAnimationData =\n !lottieLoadingError &&\n badgeEarned &&\n studentBadgeVisible &&\n !lottieAnimationData &&\n animationUrl;\n const loadBadgeImage = badgeEarned && imageUrl;\n\n const loadBadgeAnimation = useCallback(() => {\n if (!lottieAnimationData || !studentBadgeId) return null;\n\n const container = document.getElementById(studentBadgeId);\n\n if (!container) return null;\n\n const anim = lottie.loadAnimation({\n name: studentBadgeId,\n container,\n renderer: 'svg',\n loop: true,\n autoplay: true,\n animationData: JSON.parse(lottieAnimationData),\n });\n\n return anim;\n }, [studentBadgeId, lottieAnimationData]);\n\n useEffect(() => {\n if (loadBadgeImage) {\n imageRef.current = new Image();\n imageRef.current.src = imageUrl;\n setShowLoader(false);\n }\n\n if (loadAnimationData) {\n fetch(animationUrl)\n .then(response => response.json())\n .then(data => {\n setLottieAnimationData(JSON.stringify(data));\n setShowLoader(false);\n })\n .catch(error => {\n setLottieLoadingError(true);\n setShowLoader(false);\n trackEvent('student_badge_animation_load_failed', {\n studentBadgeId,\n animationUrl,\n error: error.message,\n });\n });\n }\n }, [animationUrl, loadAnimationData, loadBadgeImage, imageUrl, studentBadgeId, trackEvent]);\n\n const onBadgeClick = useCallback(() => {\n if (!showAnimation || !openModal) {\n return;\n }\n\n openModal('student-badges', {\n badges: [\n {\n ...props,\n animationData: lottieAnimationData ? JSON.parse(lottieAnimationData) : null,\n },\n ],\n invalidateRewardsHome,\n });\n\n trackEvent('student_badge_clicked', {\n studentBadgeId,\n category,\n badgeEarned,\n });\n }, [\n showAnimation,\n openModal,\n props,\n lottieAnimationData,\n invalidateRewardsHome,\n trackEvent,\n studentBadgeId,\n category,\n badgeEarned,\n ]);\n\n const onBadgeMouseEnter = useCallback(() => {\n if (!showAnimation) {\n return;\n }\n\n loadBadgeAnimation();\n setMouseEntered(true);\n }, [loadBadgeAnimation, showAnimation]);\n\n const onBadgeMouseLeave = useCallback(() => {\n if (!showAnimation) {\n return;\n }\n\n setMouseEntered(false);\n lottie.destroy(studentBadgeId);\n }, [showAnimation, studentBadgeId]);\n\n return {\n badgeBackgroundColor,\n badgeDescription,\n badgeEarned,\n badgeImage,\n badgeName,\n badgeProgress,\n mouseEntered,\n notEarnedMysterBadge,\n onBadgeClick,\n onBadgeMouseEnter,\n onBadgeMouseLeave,\n showLoader,\n showProgress,\n studentBadgeId,\n studentBadgeRef,\n };\n}\n"],"names":["colors","getTheme","useStudentBadgeHook","props","animationUrl","category","currentCount","description","imageUrl","studentBadgeId","invalidateRewardsHome","name","openModal","state","totalCount","trackEvent","useUIContext","imageRef","useRef","studentBadgeRef","lottieAnimationData","setLottieAnimationData","useState","lottieLoadingError","setLottieLoadingError","mouseEntered","setMouseEntered","badgeEarned","STUDENT_BADGE_STATUS","showLoader","setShowLoader","badgeProgress","showProgress","STUDENT_BADGE_TYPE","observerRef","studentBadgeEntry","setStudentBadgeEntry","useEffect","entry","studentBadgeVisible","badgeImage","BADGE_TYPE_BADGE_ICON","notEarnedMysterBadge","badgeBackgroundColor","badgeName","badgeDescription","showAnimation","loadAnimationData","loadBadgeImage","loadBadgeAnimation","useCallback","container","lottie","response","data","error","onBadgeClick","onBadgeMouseEnter","onBadgeMouseLeave"],"mappings":"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"}
|