@cuemath/leap 3.0.12-as3 → 3.0.12-ays1
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/chapters/chapters-list/chapter-item/chapter-item-styled.js +20 -22
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item-styled.js.map +1 -1
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js +21 -11
- package/dist/features/chapters/chapters-list/chapter-item/chapter-item.js.map +1 -1
- package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js +66 -68
- package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js.map +1 -1
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js +68 -70
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js.map +1 -1
- package/package.json +1 -1
- package/dist/features/ui/border-path-animation/border-path-animation-styled.js +0 -51
- package/dist/features/ui/border-path-animation/border-path-animation-styled.js.map +0 -1
- package/dist/features/ui/border-path-animation/border-path-animation.js +0 -108
- package/dist/features/ui/border-path-animation/border-path-animation.js.map +0 -1
@@ -1,4 +1,4 @@
|
|
1
|
-
import
|
1
|
+
import e, { keyframes as l, css as d } from "styled-components";
|
2
2
|
import o from "../../../ui/layout/flex-view.js";
|
3
3
|
import h from "../../../ui/text/text.js";
|
4
4
|
const g = l`
|
@@ -11,9 +11,9 @@ const g = l`
|
|
11
11
|
transform: translate(-150%, 100%) skewX(45deg);
|
12
12
|
opacity: 1;
|
13
13
|
}
|
14
|
-
`, u =
|
14
|
+
`, u = e(o)`
|
15
15
|
transition: scale 0.3s ease-in-out;
|
16
|
-
`, b =
|
16
|
+
`, b = e(o)`
|
17
17
|
position: absolute;
|
18
18
|
width: 100%;
|
19
19
|
height: 100%;
|
@@ -40,66 +40,64 @@ const g = l`
|
|
40
40
|
transform: translate(100%, -100%) skew(45deg);
|
41
41
|
pointer-events: none;
|
42
42
|
}
|
43
|
-
`, w =
|
43
|
+
`, w = e.svg(({ theme: t }) => `
|
44
44
|
position: absolute;
|
45
45
|
z-index: ${t.zIndex.CHAPTER_PROGRESS_SVG};
|
46
46
|
inset: 50%;
|
47
47
|
transform: translate(-50%, -50%) rotate(-90deg);
|
48
|
-
`), $ =
|
49
|
-
({ theme: t, $progressCircle:
|
50
|
-
const { GREY_2: i, BLACK: p } = t.colors, { gutter: a } = t.layout, n = a * 18.625, c =
|
48
|
+
`), $ = e.circle(
|
49
|
+
({ theme: t, $progressCircle: r, $progress: s }) => {
|
50
|
+
const { GREY_2: i, BLACK: p } = t.colors, { gutter: a } = t.layout, n = a * 18.625, c = r ? n - s : s;
|
51
51
|
return `
|
52
52
|
stroke-dasharray: ${n};
|
53
53
|
stroke-dashoffset: ${c};
|
54
|
-
stroke: ${
|
54
|
+
stroke: ${r ? p : i};
|
55
55
|
|
56
56
|
stroke-width: ${a * 0.125}px;
|
57
57
|
fill: none;
|
58
58
|
`;
|
59
59
|
}
|
60
|
-
), y =
|
61
|
-
const { gutter:
|
60
|
+
), y = e.img(({ theme: t }) => {
|
61
|
+
const { gutter: r } = t.layout;
|
62
62
|
return `
|
63
63
|
display: block;
|
64
|
-
width: ${
|
65
|
-
height: ${
|
64
|
+
width: ${r * 6}px;
|
65
|
+
height: ${r * 6}px;
|
66
66
|
border-radius: 50%;
|
67
67
|
`;
|
68
|
-
}), C =
|
69
|
-
const { layout:
|
68
|
+
}), C = e.div(({ theme: t }) => {
|
69
|
+
const { layout: r } = t;
|
70
70
|
return `
|
71
71
|
position: absolute;
|
72
72
|
top: 5px;
|
73
73
|
right: 5px;
|
74
74
|
z-index: 2;
|
75
75
|
|
76
|
-
width: ${
|
77
|
-
height: ${
|
76
|
+
width: ${r.gutter * 1.25}px;
|
77
|
+
height: ${r.gutter * 1.25}px;
|
78
78
|
border-radius: 50%;
|
79
79
|
background: ${t.colors.WHITE_1};
|
80
80
|
outline: 1px solid ${t.colors.BLACK_1};
|
81
81
|
`;
|
82
|
-
}), v =
|
82
|
+
}), v = e(h)`
|
83
83
|
display: -webkit-box;
|
84
84
|
-webkit-box-orient: vertical;
|
85
85
|
-webkit-line-clamp: 2;
|
86
86
|
text-overflow: ellipsis;
|
87
87
|
overflow: hidden;
|
88
88
|
height: 44px;
|
89
|
-
`, x =
|
90
|
-
justify-content: center;
|
91
|
-
align-items: center;
|
89
|
+
`, x = e(o)`
|
92
90
|
position: absolute;
|
93
91
|
left: 0;
|
94
92
|
top: 0;
|
95
|
-
`, I =
|
93
|
+
`, I = e(o)`
|
96
94
|
cursor: ${({ shouldHideClick: t }) => t ? "not-allowed" : "pointer"};
|
97
95
|
position: relative;
|
98
96
|
box-shadow: inset 0px 0px 0px 0.5px ${({ theme: t }) => t.colors.BLACK_T_15};
|
99
97
|
aspect-ratio: 1;
|
100
98
|
|
101
99
|
&:hover {
|
102
|
-
background: ${({ theme: t, $bgColor:
|
100
|
+
background: ${({ theme: t, $bgColor: r }) => r ? t.colors[r] : "none"};
|
103
101
|
|
104
102
|
${u} {
|
105
103
|
scale: 1.05;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"chapter-item-styled.js","sources":["../../../../../src/features/chapters/chapters-list/chapter-item/chapter-item-styled.tsx"],"sourcesContent":["import type { TColorNames } from '../../../ui/types';\n\nimport styled, { css, keyframes } from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\n\nconst shimmerEffect = keyframes`\n 0% {\n transform: translate(100%, -100%) skewX(45deg);\n opacity: 0;\n }\n\n 100% {\n transform: translate(-150%, 100%) skewX(45deg);\n opacity: 1;\n }\n`;\n\nconst ChapterImageWrapper = styled(FlexView)`\n transition: scale 0.3s ease-in-out;\n`;\n\nconst ChapterProgressWrapper = styled(FlexView)`\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n overflow: hidden;\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1;\n width: 40%;\n height: 150%;\n background: linear-gradient(\n to right,\n rgba(255, 255, 255, 0.7) 0%,\n rgba(255, 255, 255, 0.1) 35%,\n rgba(255, 255, 255, 0.7) 40%,\n rgba(255, 255, 255, 0.7) 80%,\n rgba(255, 255, 255, 0) 100%\n );\n opacity: 0;\n transform: translate(100%, -100%) skew(45deg);\n pointer-events: none;\n }\n`;\n\nconst ChapterProgressSVG = styled.svg(({ theme }) => {\n return `\n position: absolute;\n z-index: ${theme.zIndex.CHAPTER_PROGRESS_SVG};\n inset: 50%;\n transform: translate(-50%, -50%) rotate(-90deg);\n `;\n});\n\ninterface IChapterProgressSVGCircleProps {\n $progressCircle?: boolean;\n $progress: number;\n}\n\nconst ChapterProgressSVGCircle = styled.circle<IChapterProgressSVGCircleProps>(\n ({ theme, $progressCircle, $progress }) => {\n const { GREY_2, BLACK } = theme.colors;\n const { gutter } = theme.layout;\n\n const strokeDashArray = gutter * 18.625;\n const strokeDashOffset = $progressCircle ? strokeDashArray - $progress : $progress;\n\n return `\n stroke-dasharray: ${strokeDashArray};\n stroke-dashoffset: ${strokeDashOffset};\n stroke: ${$progressCircle ? BLACK : GREY_2};\n\n stroke-width: ${gutter * 0.125}px;\n fill: none;\n `;\n },\n);\n\nconst ChapterImage = styled.img(({ theme }) => {\n const { gutter } = theme.layout;\n\n return `\n display: block;\n width: ${gutter * 6}px;\n height: ${gutter * 6}px;\n border-radius: 50%;\n `;\n});\n\nconst StyledCheckIconWrapper = styled.div(({ theme }) => {\n const { layout } = theme;\n\n return `\n position: absolute;\n top: 5px;\n right: 5px;\n z-index: 2;\n\n width: ${layout.gutter * 1.25}px;\n height: ${layout.gutter * 1.25}px;\n border-radius: 50%;\n background: ${theme.colors.WHITE_1};\n outline: 1px solid ${theme.colors.BLACK_1};\n `;\n});\n\nconst ChapterName = styled(Text)`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n overflow: hidden;\n height: 44px;\n`;\n\ninterface IChapterItemWrapperProps {\n $bgColor?: TColorNames;\n shouldHideClick?: boolean;\n}\n\nconst ChapterItemNumberWrapper = styled(FlexView)`\n
|
1
|
+
{"version":3,"file":"chapter-item-styled.js","sources":["../../../../../src/features/chapters/chapters-list/chapter-item/chapter-item-styled.tsx"],"sourcesContent":["import type { TColorNames } from '../../../ui/types';\n\nimport styled, { css, keyframes } from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\n\nconst shimmerEffect = keyframes`\n 0% {\n transform: translate(100%, -100%) skewX(45deg);\n opacity: 0;\n }\n\n 100% {\n transform: translate(-150%, 100%) skewX(45deg);\n opacity: 1;\n }\n`;\n\nconst ChapterImageWrapper = styled(FlexView)`\n transition: scale 0.3s ease-in-out;\n`;\n\nconst ChapterProgressWrapper = styled(FlexView)`\n position: absolute;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n overflow: hidden;\n\n &::after {\n content: '';\n position: absolute;\n top: 0;\n right: 0;\n z-index: 1;\n width: 40%;\n height: 150%;\n background: linear-gradient(\n to right,\n rgba(255, 255, 255, 0.7) 0%,\n rgba(255, 255, 255, 0.1) 35%,\n rgba(255, 255, 255, 0.7) 40%,\n rgba(255, 255, 255, 0.7) 80%,\n rgba(255, 255, 255, 0) 100%\n );\n opacity: 0;\n transform: translate(100%, -100%) skew(45deg);\n pointer-events: none;\n }\n`;\n\nconst ChapterProgressSVG = styled.svg(({ theme }) => {\n return `\n position: absolute;\n z-index: ${theme.zIndex.CHAPTER_PROGRESS_SVG};\n inset: 50%;\n transform: translate(-50%, -50%) rotate(-90deg);\n `;\n});\n\ninterface IChapterProgressSVGCircleProps {\n $progressCircle?: boolean;\n $progress: number;\n}\n\nconst ChapterProgressSVGCircle = styled.circle<IChapterProgressSVGCircleProps>(\n ({ theme, $progressCircle, $progress }) => {\n const { GREY_2, BLACK } = theme.colors;\n const { gutter } = theme.layout;\n\n const strokeDashArray = gutter * 18.625;\n const strokeDashOffset = $progressCircle ? strokeDashArray - $progress : $progress;\n\n return `\n stroke-dasharray: ${strokeDashArray};\n stroke-dashoffset: ${strokeDashOffset};\n stroke: ${$progressCircle ? BLACK : GREY_2};\n\n stroke-width: ${gutter * 0.125}px;\n fill: none;\n `;\n },\n);\n\nconst ChapterImage = styled.img(({ theme }) => {\n const { gutter } = theme.layout;\n\n return `\n display: block;\n width: ${gutter * 6}px;\n height: ${gutter * 6}px;\n border-radius: 50%;\n `;\n});\n\nconst StyledCheckIconWrapper = styled.div(({ theme }) => {\n const { layout } = theme;\n\n return `\n position: absolute;\n top: 5px;\n right: 5px;\n z-index: 2;\n\n width: ${layout.gutter * 1.25}px;\n height: ${layout.gutter * 1.25}px;\n border-radius: 50%;\n background: ${theme.colors.WHITE_1};\n outline: 1px solid ${theme.colors.BLACK_1};\n `;\n});\n\nconst ChapterName = styled(Text)`\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n overflow: hidden;\n height: 44px;\n`;\n\ninterface IChapterItemWrapperProps {\n $bgColor?: TColorNames;\n shouldHideClick?: boolean;\n}\n\nconst ChapterItemNumberWrapper = styled(FlexView)`\n position: absolute;\n left: 0;\n top: 0;\n`;\n\nconst ChapterItemWrapper = styled(FlexView)<IChapterItemWrapperProps>`\n cursor: ${({ shouldHideClick }) => (shouldHideClick ? 'not-allowed' : 'pointer')};\n position: relative;\n box-shadow: inset 0px 0px 0px 0.5px ${({ theme }) => theme.colors.BLACK_T_15};\n aspect-ratio: 1;\n\n &:hover {\n background: ${({ theme, $bgColor }) => ($bgColor ? theme.colors[$bgColor] : 'none')};\n\n ${ChapterImageWrapper} {\n scale: 1.05;\n }\n\n ${ChapterProgressWrapper}::after {\n ${css`\n animation: ${shimmerEffect} 1.2s ease-out forwards;\n `}\n }\n\n ${ChapterItemNumberWrapper} {\n background-color: transparent;\n }\n }\n`;\n\nexport {\n ChapterImageWrapper,\n ChapterProgressWrapper,\n ChapterImage,\n ChapterItemWrapper,\n ChapterName,\n ChapterProgressSVG,\n ChapterProgressSVGCircle,\n StyledCheckIconWrapper,\n ChapterItemNumberWrapper,\n};\n"],"names":["shimmerEffect","keyframes","ChapterImageWrapper","styled","FlexView","ChapterProgressWrapper","ChapterProgressSVG","theme","ChapterProgressSVGCircle","$progressCircle","$progress","GREY_2","BLACK","gutter","strokeDashArray","strokeDashOffset","ChapterImage","StyledCheckIconWrapper","layout","ChapterName","Text","ChapterItemNumberWrapper","ChapterItemWrapper","shouldHideClick","$bgColor","css"],"mappings":";;;AAOA,MAAMA,IAAgBC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAYhBC,IAAsBC,EAAOC,CAAQ;AAAA;AAAA,GAIrCC,IAAyBF,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GA6BxCE,IAAqBH,EAAO,IAAI,CAAC,EAAE,OAAAI,QAChC;AAAA;AAAA,eAEMA,EAAM,OAAO,oBAAoB;AAAA;AAAA;AAAA,GAI/C,GAOKC,IAA2BL,EAAO;AAAA,EACtC,CAAC,EAAE,OAAAI,GAAO,iBAAAE,GAAiB,WAAAC,QAAgB;AACzC,UAAM,EAAE,QAAAC,GAAQ,OAAAC,MAAUL,EAAM,QAC1B,EAAE,QAAAM,EAAO,IAAIN,EAAM,QAEnBO,IAAkBD,IAAS,QAC3BE,IAAmBN,IAAkBK,IAAkBJ,IAAYA;AAElE,WAAA;AAAA,0BACeI,CAAe;AAAA,2BACdC,CAAgB;AAAA,gBAC3BN,IAAkBG,IAAQD,CAAM;AAAA;AAAA,sBAE1BE,IAAS,KAAK;AAAA;AAAA;AAAA,EAGlC;AACF,GAEMG,IAAeb,EAAO,IAAI,CAAC,EAAE,OAAAI,QAAY;AACvC,QAAA,EAAE,QAAAM,EAAO,IAAIN,EAAM;AAElB,SAAA;AAAA;AAAA,aAEIM,IAAS,CAAC;AAAA,cACTA,IAAS,CAAC;AAAA;AAAA;AAGxB,CAAC,GAEKI,IAAyBd,EAAO,IAAI,CAAC,EAAE,OAAAI,QAAY;AACjD,QAAA,EAAE,QAAAW,EAAW,IAAAX;AAEZ,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,aAMIW,EAAO,SAAS,IAAI;AAAA,cACnBA,EAAO,SAAS,IAAI;AAAA;AAAA,kBAEhBX,EAAM,OAAO,OAAO;AAAA,yBACbA,EAAM,OAAO,OAAO;AAAA;AAE7C,CAAC,GAEKY,IAAchB,EAAOiB,CAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAczBC,IAA2BlB,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA,GAM1CkB,IAAqBnB,EAAOC,CAAQ;AAAA,YAC9B,CAAC,EAAE,iBAAAmB,EAAA,MAAuBA,IAAkB,gBAAgB,SAAU;AAAA;AAAA,wCAE1C,CAAC,EAAE,OAAAhB,EAAA,MAAYA,EAAM,OAAO,UAAU;AAAA;AAAA;AAAA;AAAA,kBAI5D,CAAC,EAAE,OAAAA,GAAO,UAAAiB,QAAgBA,IAAWjB,EAAM,OAAOiB,CAAQ,IAAI,MAAO;AAAA;AAAA,MAEjFtB,CAAmB;AAAA;AAAA;AAAA;AAAA,MAInBG,CAAsB;AAAA,QACpBoB;AAAA,qBACazB,CAAa;AAAA,OAC3B;AAAA;AAAA;AAAA,MAGDqB,CAAwB;AAAA;AAAA;AAAA;AAAA;"}
|
@@ -1,24 +1,24 @@
|
|
1
1
|
import { jsx as e, jsxs as n } from "react/jsx-runtime";
|
2
|
-
import { memo as
|
2
|
+
import { memo as w, useState as W, useRef as _, useCallback as k, useLayoutEffect as A } from "react";
|
3
3
|
import S from "../../../../assets/line-icons/icons/check2.js";
|
4
4
|
import m from "../../../ui/arrow-tooltip/arrow-tooltip.js";
|
5
5
|
import H from "../../../ui/layout/flex-view.js";
|
6
|
-
import
|
7
|
-
import { ChapterItemWrapper as
|
8
|
-
const U =
|
6
|
+
import j from "../../../ui/text/text.js";
|
7
|
+
import { ChapterItemWrapper as P, ChapterImageWrapper as X, ChapterProgressWrapper as E, ChapterProgressSVG as G, ChapterProgressSVGCircle as d, ChapterImage as L, StyledCheckIconWrapper as N, ChapterName as V, ChapterItemNumberWrapper as z } from "./chapter-item-styled.js";
|
8
|
+
const U = w(
|
9
9
|
({ milestoneId: o, chapter: i, onChapterClick: a, itemIndex: l, shouldShowItemIndex: g }) => {
|
10
10
|
const {
|
11
11
|
name: c,
|
12
12
|
image_url: $,
|
13
13
|
progress_stat: u,
|
14
14
|
image_hue: C
|
15
|
-
} = i, { mandatory: f, optional: I } = u || {}, { completed: s = 0, total: p = 0 } = f || {}, { total: x = 0 } = I || {}, [
|
15
|
+
} = i, { mandatory: f, optional: I } = u || {}, { completed: s = 0, total: p = 0 } = f || {}, { total: x = 0 } = I || {}, [y, T] = W(!1), t = _(null), h = s > 0 ? Math.floor((s / p || 1) * 100) : 0, r = p + x, b = k(() => {
|
16
16
|
if (r === 0)
|
17
17
|
return null;
|
18
18
|
a(i, o);
|
19
19
|
}, [i, o, a, r]);
|
20
20
|
return A(() => {
|
21
|
-
t.current && t.current.scrollHeight > t.current.clientHeight &&
|
21
|
+
t.current && t.current.scrollHeight > t.current.clientHeight && T(!0);
|
22
22
|
}, [t]), /* @__PURE__ */ e(
|
23
23
|
m,
|
24
24
|
{
|
@@ -29,7 +29,7 @@ const U = y(
|
|
29
29
|
parentWidth: "100%",
|
30
30
|
zIndex: 5,
|
31
31
|
children: /* @__PURE__ */ n(
|
32
|
-
|
32
|
+
P,
|
33
33
|
{
|
34
34
|
id: `milestone-chapter-${o || ""}-${l}`,
|
35
35
|
$alignItems: "center",
|
@@ -37,13 +37,13 @@ const U = y(
|
|
37
37
|
$gutterX: 1,
|
38
38
|
$flexGap: 8,
|
39
39
|
$background: "WHITE_1",
|
40
|
-
onClick:
|
40
|
+
onClick: b,
|
41
41
|
className: "goal-widget-chapter-item",
|
42
42
|
$bgColor: `${C}_1`,
|
43
43
|
shouldHideClick: r === 0,
|
44
44
|
children: [
|
45
45
|
/* @__PURE__ */ n(
|
46
|
-
|
46
|
+
X,
|
47
47
|
{
|
48
48
|
$width: "fit-content",
|
49
49
|
$position: "relative",
|
@@ -74,7 +74,7 @@ const U = y(
|
|
74
74
|
renderAs: "primary",
|
75
75
|
position: "bottom",
|
76
76
|
tooltipItem: c,
|
77
|
-
hidden: !
|
77
|
+
hidden: !y,
|
78
78
|
widthX: 21.75,
|
79
79
|
zIndex: 5,
|
80
80
|
children: /* @__PURE__ */ e(
|
@@ -89,7 +89,17 @@ const U = y(
|
|
89
89
|
)
|
90
90
|
}
|
91
91
|
) }),
|
92
|
-
!!g && /* @__PURE__ */ e(
|
92
|
+
!!g && /* @__PURE__ */ e(
|
93
|
+
z,
|
94
|
+
{
|
95
|
+
$background: "WHITE_4",
|
96
|
+
$widthX: 1.75,
|
97
|
+
$heightX: 1.75,
|
98
|
+
$alignItems: "center",
|
99
|
+
$justifyContent: "center",
|
100
|
+
children: /* @__PURE__ */ e(j, { $renderAs: "ab2", $color: "BLACK_1", $align: "center", children: l + 1 })
|
101
|
+
}
|
102
|
+
)
|
93
103
|
]
|
94
104
|
}
|
95
105
|
)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"chapter-item.js","sources":["../../../../../src/features/chapters/chapters-list/chapter-item/chapter-item.tsx"],"sourcesContent":["import type { IChapterItemProps } from './chapter-item-types';\nimport type { FC } from 'react';\n\nimport { useCallback, useLayoutEffect, useRef, useState, memo } from 'react';\n\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport ArrowTooltip from '../../../ui/arrow-tooltip/arrow-tooltip';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport * as Styled from './chapter-item-styled';\n\nconst ChapterItem: FC<IChapterItemProps> = memo(\n ({ milestoneId, chapter, onChapterClick, itemIndex, shouldShowItemIndex }) => {\n const {\n name,\n image_url: imageUrl,\n progress_stat: chapterProgressStat,\n image_hue: imageHue,\n } = chapter;\n const { mandatory, optional } = chapterProgressStat || {};\n const { completed = 0, total: totalMandatory = 0 } = mandatory || {};\n const { total: optionalTotal = 0 } = optional || {};\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n const titleTextRef = useRef<HTMLDivElement>(null);\n const completionPercentage =\n completed > 0 ? Math.floor((completed / totalMandatory || 1) * 100) : 0;\n const totalSheets = totalMandatory + optionalTotal;\n const handleOnChapterClick = useCallback(() => {\n if (totalSheets === 0) {\n return null;\n }\n\n onChapterClick(chapter, milestoneId);\n }, [chapter, milestoneId, onChapterClick, totalSheets]);\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, [titleTextRef]);\n\n return (\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem=\"Coming soon! We’re building this chapter\"\n hidden={totalSheets > 0}\n parentWidth=\"100%\"\n zIndex={5}\n >\n <Styled.ChapterItemWrapper\n id={`milestone-chapter-${milestoneId || ''}-${itemIndex}`}\n $alignItems=\"center\"\n $gapX={1}\n $gutterX={1}\n $flexGap={8}\n $background=\"WHITE_1\"\n onClick={handleOnChapterClick}\n className=\"goal-widget-chapter-item\"\n $bgColor={`${imageHue}_1`}\n shouldHideClick={totalSheets === 0}\n >\n <Styled.ChapterImageWrapper\n $width=\"fit-content\"\n $position=\"relative\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n >\n <Styled.ChapterProgressWrapper>\n <Styled.ChapterProgressSVG width=\"96px\" height=\"96px\">\n <Styled.ChapterProgressSVGCircle $progress={0} r=\"47\" cx=\"48\" cy=\"48\" />\n <Styled.ChapterProgressSVGCircle\n $progressCircle\n $progress={completionPercentage * 2.98}\n r=\"47\"\n cx=\"48\"\n cy=\"48\"\n />\n </Styled.ChapterProgressSVG>\n </Styled.ChapterProgressWrapper>\n\n <Styled.ChapterImage src={imageUrl} alt=\"Chapter Image\" />\n\n {completionPercentage === 100 && (\n <Styled.StyledCheckIconWrapper>\n <Check2Icon width={20} height={20} />\n </Styled.StyledCheckIconWrapper>\n )}\n </Styled.ChapterImageWrapper>\n\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={name}\n hidden={!showTitleTooltip}\n widthX={21.75}\n zIndex={5}\n >\n <Styled.ChapterName\n ref={titleTextRef}\n $renderAs=\"ab2\"\n $color=\"BLACK_T_87\"\n $align=\"center\"\n >\n {name}\n </Styled.ChapterName>\n </ArrowTooltip>\n </FlexView>\n {!!shouldShowItemIndex && (\n <Styled.ChapterItemNumberWrapper
|
1
|
+
{"version":3,"file":"chapter-item.js","sources":["../../../../../src/features/chapters/chapters-list/chapter-item/chapter-item.tsx"],"sourcesContent":["import type { IChapterItemProps } from './chapter-item-types';\nimport type { FC } from 'react';\n\nimport { useCallback, useLayoutEffect, useRef, useState, memo } from 'react';\n\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport ArrowTooltip from '../../../ui/arrow-tooltip/arrow-tooltip';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport * as Styled from './chapter-item-styled';\n\nconst ChapterItem: FC<IChapterItemProps> = memo(\n ({ milestoneId, chapter, onChapterClick, itemIndex, shouldShowItemIndex }) => {\n const {\n name,\n image_url: imageUrl,\n progress_stat: chapterProgressStat,\n image_hue: imageHue,\n } = chapter;\n const { mandatory, optional } = chapterProgressStat || {};\n const { completed = 0, total: totalMandatory = 0 } = mandatory || {};\n const { total: optionalTotal = 0 } = optional || {};\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n const titleTextRef = useRef<HTMLDivElement>(null);\n const completionPercentage =\n completed > 0 ? Math.floor((completed / totalMandatory || 1) * 100) : 0;\n const totalSheets = totalMandatory + optionalTotal;\n const handleOnChapterClick = useCallback(() => {\n if (totalSheets === 0) {\n return null;\n }\n\n onChapterClick(chapter, milestoneId);\n }, [chapter, milestoneId, onChapterClick, totalSheets]);\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, [titleTextRef]);\n\n return (\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem=\"Coming soon! We’re building this chapter\"\n hidden={totalSheets > 0}\n parentWidth=\"100%\"\n zIndex={5}\n >\n <Styled.ChapterItemWrapper\n id={`milestone-chapter-${milestoneId || ''}-${itemIndex}`}\n $alignItems=\"center\"\n $gapX={1}\n $gutterX={1}\n $flexGap={8}\n $background=\"WHITE_1\"\n onClick={handleOnChapterClick}\n className=\"goal-widget-chapter-item\"\n $bgColor={`${imageHue}_1`}\n shouldHideClick={totalSheets === 0}\n >\n <Styled.ChapterImageWrapper\n $width=\"fit-content\"\n $position=\"relative\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n >\n <Styled.ChapterProgressWrapper>\n <Styled.ChapterProgressSVG width=\"96px\" height=\"96px\">\n <Styled.ChapterProgressSVGCircle $progress={0} r=\"47\" cx=\"48\" cy=\"48\" />\n <Styled.ChapterProgressSVGCircle\n $progressCircle\n $progress={completionPercentage * 2.98}\n r=\"47\"\n cx=\"48\"\n cy=\"48\"\n />\n </Styled.ChapterProgressSVG>\n </Styled.ChapterProgressWrapper>\n\n <Styled.ChapterImage src={imageUrl} alt=\"Chapter Image\" />\n\n {completionPercentage === 100 && (\n <Styled.StyledCheckIconWrapper>\n <Check2Icon width={20} height={20} />\n </Styled.StyledCheckIconWrapper>\n )}\n </Styled.ChapterImageWrapper>\n\n <FlexView $justifyContent=\"center\" $alignItems=\"center\">\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={name}\n hidden={!showTitleTooltip}\n widthX={21.75}\n zIndex={5}\n >\n <Styled.ChapterName\n ref={titleTextRef}\n $renderAs=\"ab2\"\n $color=\"BLACK_T_87\"\n $align=\"center\"\n >\n {name}\n </Styled.ChapterName>\n </ArrowTooltip>\n </FlexView>\n {!!shouldShowItemIndex && (\n <Styled.ChapterItemNumberWrapper\n $background=\"WHITE_4\"\n $widthX={1.75}\n $heightX={1.75}\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n <Text $renderAs=\"ab2\" $color=\"BLACK_1\" $align=\"center\">\n {itemIndex + 1}\n </Text>\n </Styled.ChapterItemNumberWrapper>\n )}\n </Styled.ChapterItemWrapper>\n </ArrowTooltip>\n );\n },\n);\n\nexport default ChapterItem;\n"],"names":["ChapterItem","memo","milestoneId","chapter","onChapterClick","itemIndex","shouldShowItemIndex","name","imageUrl","chapterProgressStat","imageHue","mandatory","optional","completed","totalMandatory","optionalTotal","showTitleTooltip","setShowTitleTooltip","useState","titleTextRef","useRef","completionPercentage","totalSheets","handleOnChapterClick","useCallback","useLayoutEffect","jsx","ArrowTooltip","jsxs","Styled.ChapterItemWrapper","Styled.ChapterImageWrapper","Styled.ChapterProgressWrapper","Styled.ChapterProgressSVG","Styled.ChapterProgressSVGCircle","Styled.ChapterImage","Styled.StyledCheckIconWrapper","Check2Icon","FlexView","Styled.ChapterName","Styled.ChapterItemNumberWrapper","Text"],"mappings":"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"}
|
@@ -1,77 +1,76 @@
|
|
1
|
-
import { jsx as e, jsxs as m, Fragment as
|
1
|
+
import { jsx as e, jsxs as m, Fragment as P } from "react/jsx-runtime";
|
2
2
|
import { memo as z, useRef as F, useCallback as l } from "react";
|
3
3
|
import Y from "../../../../../assets/line-icons/icons/eye2.js";
|
4
4
|
import Z from "../../../../../assets/line-icons/icons/redo.js";
|
5
5
|
import q from "../../../../ui/arrow-tooltip/arrow-tooltip.js";
|
6
|
-
import J from "../../../../ui/
|
7
|
-
import Q from "../../../../ui/
|
8
|
-
import U from "../../../../ui/
|
9
|
-
import V from "
|
10
|
-
import { BLOCK_TYPE as ee } from "../../../constants/block-constants.js";
|
6
|
+
import J from "../../../../ui/context-menu/context-menu.js";
|
7
|
+
import Q from "../../../../ui/lottie-animation/lottie-animation.js";
|
8
|
+
import U from "../../../../ui/text/text.js";
|
9
|
+
import { BLOCK_TYPE as V } from "../../../constants/block-constants.js";
|
11
10
|
import { NODE_CARD_STATES as $ } from "../../../constants/node-constants.js";
|
12
|
-
import { getNodeTypeBasedBgImage as
|
13
|
-
import { getNodeCardBasedIcon as
|
14
|
-
import { NodeCardContainer as
|
15
|
-
import
|
16
|
-
import
|
17
|
-
const
|
11
|
+
import { getNodeTypeBasedBgImage as ee } from "../../../utils/index.js";
|
12
|
+
import { getNodeCardBasedIcon as te } from "../../../utils/node-card-utils.js";
|
13
|
+
import { NodeCardContainer as ne, NodeCardInfoWrapper as oe, IconWrapper as re, StyledImportantIcon as ae, NodeCardContentWrapper as ie, NodeCardTitle as se } from "../node-card-styled.js";
|
14
|
+
import ce from "../node-card-tags.js";
|
15
|
+
import de from "../node-menu-options/node-menu-options.js";
|
16
|
+
const me = { renderer: "canvas", autoplay: !1 }, Ae = z((S) => {
|
18
17
|
const {
|
19
18
|
nodeData: t,
|
20
|
-
imageHue:
|
19
|
+
imageHue: b,
|
21
20
|
blockType: T,
|
22
21
|
onNodeAttempt: a,
|
23
22
|
onNodeReattempt: i,
|
24
23
|
onNodeReview: s,
|
25
|
-
onNodeView:
|
26
|
-
isStudent:
|
27
|
-
} =
|
28
|
-
accuracy:
|
24
|
+
onNodeView: n,
|
25
|
+
isStudent: A
|
26
|
+
} = S, {
|
27
|
+
accuracy: E,
|
29
28
|
attempt_location: y,
|
30
29
|
node_type: p,
|
31
|
-
card_header:
|
32
|
-
title:
|
30
|
+
card_header: L,
|
31
|
+
title: R,
|
33
32
|
state: c,
|
34
33
|
is_optional: g,
|
35
34
|
sheet_statement: _,
|
36
|
-
permissions:
|
35
|
+
permissions: w,
|
37
36
|
marked_as_completed: d
|
38
37
|
} = t, {
|
39
38
|
can_review: I,
|
40
39
|
can_start: u,
|
41
|
-
can_resume:
|
40
|
+
can_resume: f,
|
42
41
|
can_reset: O
|
43
|
-
} =
|
44
|
-
(
|
45
|
-
switch (
|
42
|
+
} = w, x = T === V.GOAL, r = c === $.LOCKED, N = c === $.NOT_STARTED, v = c === $.IN_PROGRESS, B = y === "INCLASS", M = u || f, W = !g && (v || N), h = !M && (O || I), C = F(null), D = ee(p), { lottie: G } = te(p), k = l(
|
43
|
+
(o) => {
|
44
|
+
switch (o) {
|
46
45
|
case "node-card-review":
|
47
|
-
d ?
|
46
|
+
d ? n == null || n(t) : s == null || s(t);
|
48
47
|
return;
|
49
48
|
case "node-card-reattempt":
|
50
49
|
i == null || i(t);
|
51
50
|
return;
|
52
51
|
default:
|
53
|
-
throw new Error(`No callback function for ${
|
52
|
+
throw new Error(`No callback function for ${o}`);
|
54
53
|
}
|
55
54
|
},
|
56
|
-
[t, i, s,
|
57
|
-
),
|
58
|
-
|
55
|
+
[t, i, s, n, d]
|
56
|
+
), H = l(() => {
|
57
|
+
h || r || (u || f ? a == null || a(t) : d && (n == null || n(t)));
|
59
58
|
}, [
|
60
|
-
|
59
|
+
f,
|
61
60
|
u,
|
62
61
|
t,
|
63
62
|
a,
|
64
|
-
o,
|
65
|
-
f,
|
66
63
|
n,
|
64
|
+
h,
|
65
|
+
r,
|
67
66
|
d
|
68
|
-
]),
|
69
|
-
var
|
70
|
-
|
71
|
-
}, [
|
72
|
-
var
|
73
|
-
(
|
74
|
-
}, []),
|
67
|
+
]), K = l(() => {
|
68
|
+
var o;
|
69
|
+
r || (o = C.current) == null || o.play();
|
70
|
+
}, [r]), X = l(() => {
|
71
|
+
var o;
|
72
|
+
(o = C.current) == null || o.stop();
|
73
|
+
}, []), j = [
|
75
74
|
{
|
76
75
|
id: "node-card-review",
|
77
76
|
label: "Review",
|
@@ -88,15 +87,15 @@ const le = { renderer: "canvas", autoplay: !1 }, Le = z((A) => {
|
|
88
87
|
}
|
89
88
|
];
|
90
89
|
return /* @__PURE__ */ e(
|
91
|
-
|
90
|
+
J,
|
92
91
|
{
|
93
92
|
targetElement: /* @__PURE__ */ e(
|
94
|
-
|
93
|
+
ne,
|
95
94
|
{
|
96
|
-
$showOutline: !
|
97
|
-
$background: `${
|
98
|
-
$disabled:
|
99
|
-
onClick:
|
95
|
+
$showOutline: !W,
|
96
|
+
$background: `${b}_2`,
|
97
|
+
$disabled: r,
|
98
|
+
onClick: H,
|
100
99
|
children: /* @__PURE__ */ m(
|
101
100
|
q,
|
102
101
|
{
|
@@ -109,7 +108,7 @@ const le = { renderer: "canvas", autoplay: !1 }, Le = z((A) => {
|
|
109
108
|
widthX: 11.25,
|
110
109
|
children: [
|
111
110
|
/* @__PURE__ */ m(
|
112
|
-
|
111
|
+
oe,
|
113
112
|
{
|
114
113
|
$flexDirection: "row",
|
115
114
|
$alignItems: "center",
|
@@ -117,12 +116,12 @@ const le = { renderer: "canvas", autoplay: !1 }, Le = z((A) => {
|
|
117
116
|
$bgImage: D,
|
118
117
|
$gutterX: 0.78125,
|
119
118
|
$flexGap: 8.5,
|
120
|
-
$opacity:
|
121
|
-
onMouseEnter:
|
122
|
-
onMouseLeave:
|
119
|
+
$opacity: r ? 0.5 : 1,
|
120
|
+
onMouseEnter: K,
|
121
|
+
onMouseLeave: X,
|
123
122
|
children: [
|
124
123
|
/* @__PURE__ */ m(
|
125
|
-
|
124
|
+
re,
|
126
125
|
{
|
127
126
|
$width: 31,
|
128
127
|
$height: 31,
|
@@ -132,42 +131,41 @@ const le = { renderer: "canvas", autoplay: !1 }, Le = z((A) => {
|
|
132
131
|
$justifyContent: "center",
|
133
132
|
children: [
|
134
133
|
/* @__PURE__ */ e(
|
135
|
-
|
134
|
+
Q,
|
136
135
|
{
|
137
|
-
src:
|
136
|
+
src: G,
|
138
137
|
ref: C,
|
139
|
-
settings:
|
138
|
+
settings: me
|
140
139
|
}
|
141
140
|
),
|
142
|
-
!g && /* @__PURE__ */ e(
|
141
|
+
!g && /* @__PURE__ */ e(ae, {})
|
143
142
|
]
|
144
143
|
}
|
145
144
|
),
|
146
|
-
/* @__PURE__ */ m(
|
147
|
-
|
145
|
+
/* @__PURE__ */ m(U, { $renderAs: "ac4-black", $color: "BLACK", children: [
|
146
|
+
L,
|
148
147
|
" ",
|
149
|
-
|
150
|
-
] })
|
151
|
-
b && /* @__PURE__ */ e(J, { borderColor: "BLACK_1", borderWidth: 1 })
|
148
|
+
B && "• CW"
|
149
|
+
] })
|
152
150
|
]
|
153
151
|
}
|
154
152
|
),
|
155
153
|
/* @__PURE__ */ e(
|
156
|
-
|
154
|
+
ce,
|
157
155
|
{
|
158
156
|
nodeType: p,
|
159
157
|
state: c,
|
160
|
-
accuracy:
|
161
|
-
isStudent:
|
158
|
+
accuracy: E,
|
159
|
+
isStudent: A
|
162
160
|
}
|
163
161
|
),
|
164
|
-
!x && /* @__PURE__ */ e(
|
165
|
-
|
162
|
+
!x && /* @__PURE__ */ e(ie, { $background: "WHITE_1", $heightX: 4, children: /* @__PURE__ */ e(
|
163
|
+
se,
|
166
164
|
{
|
167
165
|
$renderAs: "ab3",
|
168
166
|
$color: "BLACK_1",
|
169
|
-
$opacity:
|
170
|
-
children:
|
167
|
+
$opacity: r ? 0.5 : 1,
|
168
|
+
children: R
|
171
169
|
}
|
172
170
|
) })
|
173
171
|
]
|
@@ -179,11 +177,11 @@ const le = { renderer: "canvas", autoplay: !1 }, Le = z((A) => {
|
|
179
177
|
menuWidth: "100%",
|
180
178
|
menuZIndex: 6,
|
181
179
|
menuOffset: 2,
|
182
|
-
menuElement:
|
180
|
+
menuElement: h ? /* @__PURE__ */ e(de, { options: j }) : /* @__PURE__ */ e(P, {})
|
183
181
|
}
|
184
182
|
);
|
185
183
|
});
|
186
184
|
export {
|
187
|
-
|
185
|
+
Ae as default
|
188
186
|
};
|
189
187
|
//# sourceMappingURL=student-actions.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"student-actions.js","sources":["../../../../../../src/features/chapters-v2/comps/node-card/student-actions/student-actions.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../../../../ui/lottie-animation/types';\nimport type { INodeCardProps } from '../node-card-types';\nimport type { INodeMenuOption } from '../node-menu-options/node-menu-options-types';\n\nimport { memo, useCallback, useRef, type FC } from 'react';\n\nimport Eye2Icon from '../../../../../assets/line-icons/icons/eye2';\nimport RedoIcon from '../../../../../assets/line-icons/icons/redo';\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport BorderPathAnimation from '../../../../ui/border-path-animation/border-path-animation';\nimport ContextMenu from '../../../../ui/context-menu/context-menu';\nimport LottieAnimation from '../../../../ui/lottie-animation/lottie-animation';\nimport Text from '../../../../ui/text/text';\nimport { BLOCK_TYPE } from '../../../constants/block-constants';\nimport { NODE_CARD_STATES } from '../../../constants/node-constants';\nimport { getNodeTypeBasedBgImage } from '../../../utils';\nimport { getNodeCardBasedIcon } from '../../../utils/node-card-utils';\nimport * as Styled from '../node-card-styled';\nimport NodeCardTags from '../node-card-tags';\nimport NodeMenuOptions from '../node-menu-options/node-menu-options';\n\nconst renderSettings = { renderer: 'canvas', autoplay: false };\n\nconst StudentActions: FC<Omit<INodeCardProps, 'userType'>> = memo(props => {\n const {\n nodeData,\n imageHue,\n blockType,\n onNodeAttempt,\n onNodeReattempt,\n onNodeReview,\n onNodeView,\n isStudent,\n } = props;\n const {\n accuracy,\n attempt_location: attemptLocation,\n node_type: nodeType,\n card_header: cardHeader,\n title,\n state,\n is_optional: isOptional,\n sheet_statement: sheetStatement,\n permissions,\n marked_as_completed: teacherMarkedAsCompleted,\n } = nodeData;\n const {\n can_review: canReview,\n can_start: canStart,\n can_resume: canResume,\n can_reset: canReset,\n } = permissions;\n\n const isGoalBlock = blockType === BLOCK_TYPE.GOAL;\n const sheetLocked = state === NODE_CARD_STATES.LOCKED;\n const sheetNotStarted = state === NODE_CARD_STATES.NOT_STARTED;\n const sheetInProgress = state === NODE_CARD_STATES.IN_PROGRESS;\n const inClassSheet = attemptLocation === 'INCLASS';\n const canStartOrResume = canStart || canResume;\n\n const showCardAnimation = !isOptional && (sheetInProgress || sheetNotStarted);\n const renderOptions = !canStartOrResume && (canReset || canReview);\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n const nodeBgImage = getNodeTypeBasedBgImage(nodeType);\n const { lottie: nodeCardLottie } = getNodeCardBasedIcon(nodeType);\n\n const handleOnMenuOptionClick = useCallback(\n (optionId: string) => {\n switch (optionId) {\n case 'node-card-review':\n teacherMarkedAsCompleted ? onNodeView?.(nodeData) : onNodeReview?.(nodeData);\n\n return;\n\n case 'node-card-reattempt':\n onNodeReattempt?.(nodeData);\n\n return;\n\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [nodeData, onNodeReattempt, onNodeReview, onNodeView, teacherMarkedAsCompleted],\n );\n\n const handleOnNodeCardClick = useCallback(() => {\n if (renderOptions || sheetLocked) return;\n\n if (canStart || canResume) {\n onNodeAttempt?.(nodeData);\n } else if (teacherMarkedAsCompleted) {\n onNodeView?.(nodeData);\n }\n }, [\n canResume,\n canStart,\n nodeData,\n onNodeAttempt,\n onNodeView,\n renderOptions,\n sheetLocked,\n teacherMarkedAsCompleted,\n ]);\n\n const handleOnMouseEnter = useCallback(() => {\n if (sheetLocked) return;\n animationRef.current?.play();\n }, [sheetLocked]);\n\n const handleOnMouseLeave = useCallback(() => {\n animationRef.current?.stop();\n }, []);\n\n const menuOptions: INodeMenuOption[] = [\n {\n id: 'node-card-review',\n label: 'Review',\n icon: Eye2Icon,\n disabled: !canReview,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-reattempt',\n label: 'Reattempt',\n icon: RedoIcon,\n disabled: !canReset,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n return (\n <ContextMenu\n targetElement={\n <Styled.NodeCardContainer\n $showOutline={!showCardAnimation}\n $background={`${imageHue}_2`}\n $disabled={sheetLocked}\n onClick={handleOnNodeCardClick}\n >\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem={sheetStatement}\n position=\"bottom\"\n zIndex={5}\n hidden={!sheetStatement}\n parentWidth=\"100%\"\n widthX={11.25}\n >\n <Styled.NodeCardInfoWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $heightX={3.5}\n $bgImage={nodeBgImage}\n $gutterX={0.78125}\n $flexGap={8.5}\n $opacity={sheetLocked ? 0.5 : 1}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n <LottieAnimation\n src={nodeCardLottie}\n ref={animationRef}\n settings={renderSettings}\n />\n {!isOptional && <Styled.StyledImportantIcon />}\n </Styled.IconWrapper>\n\n <Text $renderAs=\"ac4-black\" $color=\"BLACK\">\n {cardHeader} {inClassSheet && `• CW`}\n </Text>\n {showCardAnimation && <BorderPathAnimation borderColor=\"BLACK_1\" borderWidth={1} />}\n </Styled.NodeCardInfoWrapper>\n\n <NodeCardTags\n nodeType={nodeType}\n state={state}\n accuracy={accuracy}\n isStudent={isStudent}\n />\n\n {!isGoalBlock && (\n <Styled.NodeCardContentWrapper $background=\"WHITE_1\" $heightX={4}>\n <Styled.NodeCardTitle\n $renderAs=\"ab3\"\n $color=\"BLACK_1\"\n $opacity={sheetLocked ? 0.5 : 1}\n >\n {title}\n </Styled.NodeCardTitle>\n </Styled.NodeCardContentWrapper>\n )}\n </ArrowTooltip>\n </Styled.NodeCardContainer>\n }\n startLeft\n menuWidth=\"100%\"\n menuZIndex={6}\n menuOffset={2}\n menuElement={renderOptions ? <NodeMenuOptions options={menuOptions} /> : <></>}\n />\n );\n});\n\nexport default StudentActions;\n"],"names":["renderSettings","StudentActions","memo","props","nodeData","imageHue","blockType","onNodeAttempt","onNodeReattempt","onNodeReview","onNodeView","isStudent","accuracy","attemptLocation","nodeType","cardHeader","title","state","isOptional","sheetStatement","permissions","teacherMarkedAsCompleted","canReview","canStart","canResume","canReset","isGoalBlock","BLOCK_TYPE","sheetLocked","NODE_CARD_STATES","sheetNotStarted","sheetInProgress","inClassSheet","canStartOrResume","showCardAnimation","renderOptions","animationRef","useRef","nodeBgImage","getNodeTypeBasedBgImage","nodeCardLottie","getNodeCardBasedIcon","handleOnMenuOptionClick","useCallback","optionId","handleOnNodeCardClick","handleOnMouseEnter","_a","handleOnMouseLeave","menuOptions","Eye2Icon","RedoIcon","jsx","ContextMenu","Styled.NodeCardContainer","jsxs","ArrowTooltip","Styled.NodeCardInfoWrapper","Styled.IconWrapper","LottieAnimation","Styled.StyledImportantIcon","Text","BorderPathAnimation","NodeCardTags","Styled.NodeCardContentWrapper","Styled.NodeCardTitle","NodeMenuOptions","Fragment"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"student-actions.js","sources":["../../../../../../src/features/chapters-v2/comps/node-card/student-actions/student-actions.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../../../../ui/lottie-animation/types';\nimport type { INodeCardProps } from '../node-card-types';\nimport type { INodeMenuOption } from '../node-menu-options/node-menu-options-types';\n\nimport { memo, useCallback, useRef, type FC } from 'react';\n\nimport Eye2Icon from '../../../../../assets/line-icons/icons/eye2';\nimport RedoIcon from '../../../../../assets/line-icons/icons/redo';\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport ContextMenu from '../../../../ui/context-menu/context-menu';\nimport LottieAnimation from '../../../../ui/lottie-animation/lottie-animation';\nimport Text from '../../../../ui/text/text';\nimport { BLOCK_TYPE } from '../../../constants/block-constants';\nimport { NODE_CARD_STATES } from '../../../constants/node-constants';\nimport { getNodeTypeBasedBgImage } from '../../../utils';\nimport { getNodeCardBasedIcon } from '../../../utils/node-card-utils';\nimport * as Styled from '../node-card-styled';\nimport NodeCardTags from '../node-card-tags';\nimport NodeMenuOptions from '../node-menu-options/node-menu-options';\n\nconst renderSettings = { renderer: 'canvas', autoplay: false };\n\nconst StudentActions: FC<Omit<INodeCardProps, 'userType'>> = memo(props => {\n const {\n nodeData,\n imageHue,\n blockType,\n onNodeAttempt,\n onNodeReattempt,\n onNodeReview,\n onNodeView,\n isStudent,\n } = props;\n const {\n accuracy,\n attempt_location: attemptLocation,\n node_type: nodeType,\n card_header: cardHeader,\n title,\n state,\n is_optional: isOptional,\n sheet_statement: sheetStatement,\n permissions,\n marked_as_completed: teacherMarkedAsCompleted,\n } = nodeData;\n const {\n can_review: canReview,\n can_start: canStart,\n can_resume: canResume,\n can_reset: canReset,\n } = permissions;\n\n const isGoalBlock = blockType === BLOCK_TYPE.GOAL;\n const sheetLocked = state === NODE_CARD_STATES.LOCKED;\n const sheetNotStarted = state === NODE_CARD_STATES.NOT_STARTED;\n const sheetInProgress = state === NODE_CARD_STATES.IN_PROGRESS;\n const inClassSheet = attemptLocation === 'INCLASS';\n const canStartOrResume = canStart || canResume;\n\n const showCardAnimation = !isOptional && (sheetInProgress || sheetNotStarted);\n const renderOptions = !canStartOrResume && (canReset || canReview);\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n const nodeBgImage = getNodeTypeBasedBgImage(nodeType);\n const { lottie: nodeCardLottie } = getNodeCardBasedIcon(nodeType);\n\n const handleOnMenuOptionClick = useCallback(\n (optionId: string) => {\n switch (optionId) {\n case 'node-card-review':\n teacherMarkedAsCompleted ? onNodeView?.(nodeData) : onNodeReview?.(nodeData);\n\n return;\n\n case 'node-card-reattempt':\n onNodeReattempt?.(nodeData);\n\n return;\n\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [nodeData, onNodeReattempt, onNodeReview, onNodeView, teacherMarkedAsCompleted],\n );\n\n const handleOnNodeCardClick = useCallback(() => {\n if (renderOptions || sheetLocked) return;\n\n if (canStart || canResume) {\n onNodeAttempt?.(nodeData);\n } else if (teacherMarkedAsCompleted) {\n onNodeView?.(nodeData);\n }\n }, [\n canResume,\n canStart,\n nodeData,\n onNodeAttempt,\n onNodeView,\n renderOptions,\n sheetLocked,\n teacherMarkedAsCompleted,\n ]);\n\n const handleOnMouseEnter = useCallback(() => {\n if (sheetLocked) return;\n animationRef.current?.play();\n }, [sheetLocked]);\n\n const handleOnMouseLeave = useCallback(() => {\n animationRef.current?.stop();\n }, []);\n\n const menuOptions: INodeMenuOption[] = [\n {\n id: 'node-card-review',\n label: 'Review',\n icon: Eye2Icon,\n disabled: !canReview,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-reattempt',\n label: 'Reattempt',\n icon: RedoIcon,\n disabled: !canReset,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n return (\n <ContextMenu\n targetElement={\n <Styled.NodeCardContainer\n $showOutline={!showCardAnimation}\n $background={`${imageHue}_2`}\n $disabled={sheetLocked}\n onClick={handleOnNodeCardClick}\n >\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem={sheetStatement}\n position=\"bottom\"\n zIndex={5}\n hidden={!sheetStatement}\n parentWidth=\"100%\"\n widthX={11.25}\n >\n <Styled.NodeCardInfoWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $heightX={3.5}\n $bgImage={nodeBgImage}\n $gutterX={0.78125}\n $flexGap={8.5}\n $opacity={sheetLocked ? 0.5 : 1}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n <LottieAnimation\n src={nodeCardLottie}\n ref={animationRef}\n settings={renderSettings}\n />\n {!isOptional && <Styled.StyledImportantIcon />}\n </Styled.IconWrapper>\n\n <Text $renderAs=\"ac4-black\" $color=\"BLACK\">\n {cardHeader} {inClassSheet && `• CW`}\n </Text>\n </Styled.NodeCardInfoWrapper>\n\n <NodeCardTags\n nodeType={nodeType}\n state={state}\n accuracy={accuracy}\n isStudent={isStudent}\n />\n\n {!isGoalBlock && (\n <Styled.NodeCardContentWrapper $background=\"WHITE_1\" $heightX={4}>\n <Styled.NodeCardTitle\n $renderAs=\"ab3\"\n $color=\"BLACK_1\"\n $opacity={sheetLocked ? 0.5 : 1}\n >\n {title}\n </Styled.NodeCardTitle>\n </Styled.NodeCardContentWrapper>\n )}\n </ArrowTooltip>\n </Styled.NodeCardContainer>\n }\n startLeft\n menuWidth=\"100%\"\n menuZIndex={6}\n menuOffset={2}\n menuElement={renderOptions ? <NodeMenuOptions options={menuOptions} /> : <></>}\n />\n );\n});\n\nexport default StudentActions;\n"],"names":["renderSettings","StudentActions","memo","props","nodeData","imageHue","blockType","onNodeAttempt","onNodeReattempt","onNodeReview","onNodeView","isStudent","accuracy","attemptLocation","nodeType","cardHeader","title","state","isOptional","sheetStatement","permissions","teacherMarkedAsCompleted","canReview","canStart","canResume","canReset","isGoalBlock","BLOCK_TYPE","sheetLocked","NODE_CARD_STATES","sheetNotStarted","sheetInProgress","inClassSheet","canStartOrResume","showCardAnimation","renderOptions","animationRef","useRef","nodeBgImage","getNodeTypeBasedBgImage","nodeCardLottie","getNodeCardBasedIcon","handleOnMenuOptionClick","useCallback","optionId","handleOnNodeCardClick","handleOnMouseEnter","_a","handleOnMouseLeave","menuOptions","Eye2Icon","RedoIcon","jsx","ContextMenu","Styled.NodeCardContainer","jsxs","ArrowTooltip","Styled.NodeCardInfoWrapper","Styled.IconWrapper","LottieAnimation","Styled.StyledImportantIcon","Text","NodeCardTags","Styled.NodeCardContentWrapper","Styled.NodeCardTitle","NodeMenuOptions","Fragment"],"mappings":"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"}
|
@@ -1,137 +1,136 @@
|
|
1
1
|
import { jsxs as i, jsx as e } from "react/jsx-runtime";
|
2
|
-
import { memo as q, useRef as
|
2
|
+
import { memo as q, useRef as S, useCallback as $ } from "react";
|
3
3
|
import J from "../../../../../assets/line-icons/icons/check2.js";
|
4
4
|
import Q from "../../../../../assets/line-icons/icons/eye2.js";
|
5
5
|
import V from "../../../../../assets/line-icons/icons/home2.js";
|
6
|
-
import
|
6
|
+
import T from "../../../../../assets/line-icons/icons/more-vertical.js";
|
7
7
|
import Z from "../../../../../assets/line-icons/icons/redo.js";
|
8
8
|
import D from "../../../../ui/arrow-tooltip/arrow-tooltip.js";
|
9
|
-
import N from "../../../../ui/
|
10
|
-
import ee from "../../../../ui/
|
11
|
-
import re from "../../../../ui/layout/flex-view.js";
|
9
|
+
import N from "../../../../ui/hooks/use-context-menu-click-handler.js";
|
10
|
+
import ee from "../../../../ui/layout/flex-view.js";
|
12
11
|
import te from "../../../../ui/lottie-animation/lottie-animation.js";
|
13
|
-
import
|
14
|
-
import { BLOCK_TYPE as
|
15
|
-
import { NODE_CARD_STATES as _, TEACHER_MENU_LABELS as
|
12
|
+
import re from "../../../../ui/text/text.js";
|
13
|
+
import { BLOCK_TYPE as ne } from "../../../constants/block-constants.js";
|
14
|
+
import { NODE_CARD_STATES as _, TEACHER_MENU_LABELS as ie } from "../../../constants/node-constants.js";
|
16
15
|
import { getNodeTypeBasedBgImage as ce } from "../../../utils/index.js";
|
17
|
-
import { getNodeCardBasedIcon as
|
18
|
-
import { NodeCardContainer as
|
19
|
-
import
|
20
|
-
import
|
21
|
-
const
|
16
|
+
import { getNodeCardBasedIcon as oe } from "../../../utils/node-card-utils.js";
|
17
|
+
import { NodeCardContainer as ae, NodeCardInfoWrapper as se, IconWrapper as le, StyledImportantIcon as de, NodeKebabMenuWrapper as O, NodeCardContentWrapper as me, NodeCardTitle as pe, NodeMenuOptionsWrapper as he } from "../node-card-styled.js";
|
18
|
+
import fe from "../node-card-tags.js";
|
19
|
+
import ue from "../node-menu-options/node-menu-options.js";
|
20
|
+
const Ce = { renderer: "canvas", autoplay: !1 }, { ASSIGN_AS_HW: $e, REVIEW: _e, VIEW: Ie, MARK_AS_DONE: be, RESET: ge } = ie, He = q(
|
22
21
|
({
|
23
|
-
nodeData:
|
24
|
-
imageHue:
|
25
|
-
blockType:
|
26
|
-
isSkipped:
|
27
|
-
onNodeAssignAsHomework:
|
28
|
-
onNodeMarkAsDone:
|
22
|
+
nodeData: r,
|
23
|
+
imageHue: L,
|
24
|
+
blockType: k,
|
25
|
+
isSkipped: y,
|
26
|
+
onNodeAssignAsHomework: c,
|
27
|
+
onNodeMarkAsDone: o,
|
29
28
|
onNodeView: a,
|
30
29
|
onNodeReview: s,
|
31
30
|
onNodeReattempt: l
|
32
31
|
}) => {
|
33
|
-
const p =
|
34
|
-
accuracy:
|
35
|
-
attempt_location:
|
32
|
+
const p = S(null), { menuVisible: x, onMenuClick: I } = N(p), {
|
33
|
+
accuracy: W,
|
34
|
+
attempt_location: B,
|
36
35
|
node_type: h,
|
37
36
|
card_header: M,
|
38
37
|
title: w,
|
39
38
|
state: d,
|
40
|
-
is_optional:
|
41
|
-
sheet_statement:
|
42
|
-
permissions:
|
39
|
+
is_optional: b,
|
40
|
+
sheet_statement: g,
|
41
|
+
permissions: A,
|
43
42
|
user_attempt_id: f
|
44
|
-
} =
|
45
|
-
can_mark_familiar:
|
43
|
+
} = r, { lottie: G } = oe(h), u = S(null), {
|
44
|
+
can_mark_familiar: K,
|
46
45
|
can_review: C,
|
47
|
-
can_assign_as_homework:
|
48
|
-
can_reset:
|
49
|
-
} =
|
50
|
-
(
|
51
|
-
switch (
|
46
|
+
can_assign_as_homework: j,
|
47
|
+
can_reset: v
|
48
|
+
} = A, E = k === ne.GOAL, n = d === _.LOCKED, R = d === _.NOT_STARTED, X = d === _.IN_PROGRESS, H = B === "INCLASS", P = !b && (X || R), F = ce(h), m = $(
|
49
|
+
(t) => {
|
50
|
+
switch (t) {
|
52
51
|
case "node-card-view":
|
53
|
-
C && f ? s == null || s(
|
52
|
+
C && f ? s == null || s(r) : a == null || a(r);
|
54
53
|
return;
|
55
54
|
case "node-card-assign-as-hw":
|
56
|
-
|
55
|
+
c == null || c(r);
|
57
56
|
return;
|
58
57
|
case "node-card-mark-as-done":
|
59
|
-
|
58
|
+
o == null || o(r);
|
60
59
|
return;
|
61
60
|
case "node-card-reset":
|
62
|
-
l == null || l(
|
61
|
+
l == null || l(r);
|
63
62
|
return;
|
64
63
|
default:
|
65
|
-
throw new Error(`No callback function for ${
|
64
|
+
throw new Error(`No callback function for ${t}`);
|
66
65
|
}
|
67
66
|
},
|
68
67
|
[
|
69
68
|
C,
|
70
|
-
|
71
|
-
o,
|
69
|
+
r,
|
72
70
|
c,
|
71
|
+
o,
|
73
72
|
l,
|
74
73
|
s,
|
75
74
|
a,
|
76
75
|
f
|
77
76
|
]
|
78
77
|
), z = $(() => {
|
79
|
-
var
|
80
|
-
n || (
|
78
|
+
var t;
|
79
|
+
n || (t = u.current) == null || t.play();
|
81
80
|
}, [n]), U = $(() => {
|
82
|
-
var
|
83
|
-
(
|
81
|
+
var t;
|
82
|
+
(t = u.current) == null || t.stop();
|
84
83
|
}, []), Y = [
|
85
84
|
{
|
86
85
|
id: "node-card-view",
|
87
|
-
label: C && f ?
|
86
|
+
label: C && f ? _e : Ie,
|
88
87
|
icon: Q,
|
89
88
|
disabled: !1,
|
90
89
|
onClick: m
|
91
90
|
},
|
92
91
|
{
|
93
92
|
id: "node-card-assign-as-hw",
|
94
|
-
label:
|
93
|
+
label: $e,
|
95
94
|
icon: V,
|
96
|
-
disabled: !
|
95
|
+
disabled: !j,
|
97
96
|
onClick: m
|
98
97
|
},
|
99
98
|
{
|
100
99
|
id: "node-card-reset",
|
101
|
-
label:
|
100
|
+
label: ge,
|
102
101
|
icon: Z,
|
103
|
-
disabled: !
|
102
|
+
disabled: !v,
|
104
103
|
onClick: m
|
105
104
|
},
|
106
105
|
{
|
107
106
|
id: "node-card-mark-as-done",
|
108
|
-
label:
|
107
|
+
label: be,
|
109
108
|
icon: J,
|
110
|
-
disabled: !
|
109
|
+
disabled: !K,
|
111
110
|
onClick: m
|
112
111
|
}
|
113
112
|
];
|
114
113
|
return /* @__PURE__ */ i(
|
115
|
-
|
114
|
+
ae,
|
116
115
|
{
|
117
|
-
$showOutline: !
|
116
|
+
$showOutline: !P,
|
118
117
|
$isSheetLocked: n,
|
119
|
-
$background: `${
|
120
|
-
$disabled: !!
|
118
|
+
$background: `${L}_2`,
|
119
|
+
$disabled: !!y,
|
121
120
|
children: [
|
122
121
|
/* @__PURE__ */ i(
|
123
122
|
D,
|
124
123
|
{
|
125
124
|
renderAs: "primary",
|
126
|
-
tooltipItem:
|
125
|
+
tooltipItem: g,
|
127
126
|
position: "bottom",
|
128
127
|
zIndex: 5,
|
129
|
-
hidden: !
|
128
|
+
hidden: !g,
|
130
129
|
parentWidth: "100%",
|
131
130
|
widthX: 11.25,
|
132
131
|
children: [
|
133
132
|
/* @__PURE__ */ i(
|
134
|
-
|
133
|
+
se,
|
135
134
|
{
|
136
135
|
$flexDirection: "row",
|
137
136
|
$alignItems: "center",
|
@@ -144,7 +143,7 @@ const $e = { renderer: "canvas", autoplay: !1 }, { ASSIGN_AS_HW: _e, REVIEW: Ie,
|
|
144
143
|
onMouseLeave: U,
|
145
144
|
children: [
|
146
145
|
/* @__PURE__ */ i(
|
147
|
-
|
146
|
+
le,
|
148
147
|
{
|
149
148
|
$width: 31,
|
150
149
|
$height: 31,
|
@@ -154,24 +153,23 @@ const $e = { renderer: "canvas", autoplay: !1 }, { ASSIGN_AS_HW: _e, REVIEW: Ie,
|
|
154
153
|
$justifyContent: "center",
|
155
154
|
$opacity: n ? 0.5 : 1,
|
156
155
|
children: [
|
157
|
-
/* @__PURE__ */ e(te, { src: G, ref: u, settings:
|
158
|
-
!
|
156
|
+
/* @__PURE__ */ e(te, { src: G, ref: u, settings: Ce }),
|
157
|
+
!b && /* @__PURE__ */ e(de, {})
|
159
158
|
]
|
160
159
|
}
|
161
160
|
),
|
162
|
-
/* @__PURE__ */ i(
|
161
|
+
/* @__PURE__ */ i(re, { $renderAs: "ac4-black", $color: "BLACK", $opacity: n ? 0.5 : 1, children: [
|
163
162
|
M,
|
164
163
|
" ",
|
165
164
|
H && "• CW"
|
166
165
|
] }),
|
167
|
-
/* @__PURE__ */ e(
|
168
|
-
T && !I && /* @__PURE__ */ e(N, { borderColor: "BLACK_1", borderWidth: 1 })
|
166
|
+
/* @__PURE__ */ e(ee, { className: "context-menu", children: E && /* @__PURE__ */ e(O, { ref: p, onClick: I, children: /* @__PURE__ */ e(T, { width: 16, height: 16 }) }) })
|
169
167
|
]
|
170
168
|
}
|
171
169
|
),
|
172
|
-
/* @__PURE__ */ e(
|
173
|
-
!
|
174
|
-
|
170
|
+
/* @__PURE__ */ e(fe, { nodeType: h, state: d, accuracy: W }),
|
171
|
+
!E && /* @__PURE__ */ i(
|
172
|
+
me,
|
175
173
|
{
|
176
174
|
$flexDirection: "row",
|
177
175
|
$alignItems: "center",
|
@@ -181,7 +179,7 @@ const $e = { renderer: "canvas", autoplay: !1 }, { ASSIGN_AS_HW: _e, REVIEW: Ie,
|
|
181
179
|
$justifyContent: "space-between",
|
182
180
|
children: [
|
183
181
|
/* @__PURE__ */ e(
|
184
|
-
|
182
|
+
pe,
|
185
183
|
{
|
186
184
|
$renderAs: "ab3",
|
187
185
|
$color: "BLACK_1",
|
@@ -189,20 +187,20 @@ const $e = { renderer: "canvas", autoplay: !1 }, { ASSIGN_AS_HW: _e, REVIEW: Ie,
|
|
189
187
|
children: w
|
190
188
|
}
|
191
189
|
),
|
192
|
-
/* @__PURE__ */ e(
|
190
|
+
/* @__PURE__ */ e(O, { ref: p, onClick: I, children: /* @__PURE__ */ e(T, { width: 16, height: 16 }) })
|
193
191
|
]
|
194
192
|
}
|
195
193
|
)
|
196
194
|
]
|
197
195
|
}
|
198
196
|
),
|
199
|
-
/* @__PURE__ */ e(
|
197
|
+
/* @__PURE__ */ e(he, { $visible: x, children: /* @__PURE__ */ e(ue, { options: Y }) })
|
200
198
|
]
|
201
199
|
}
|
202
200
|
);
|
203
201
|
}
|
204
202
|
);
|
205
203
|
export {
|
206
|
-
|
204
|
+
He as default
|
207
205
|
};
|
208
206
|
//# sourceMappingURL=teacher-actions.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"teacher-actions.js","sources":["../../../../../../src/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../../../../ui/lottie-animation/types';\nimport type { INodeCardProps } from '../node-card-types';\nimport type { INodeMenuOption } from '../node-menu-options/node-menu-options-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useRef } from 'react';\n\nimport Check2Icon from '../../../../../assets/line-icons/icons/check2';\nimport Eye2Icon from '../../../../../assets/line-icons/icons/eye2';\nimport Home2Icon from '../../../../../assets/line-icons/icons/home2';\nimport MoreVerticalIcon from '../../../../../assets/line-icons/icons/more-vertical';\nimport RedoIcon from '../../../../../assets/line-icons/icons/redo';\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport BorderPathAnimation from '../../../../ui/border-path-animation/border-path-animation';\nimport useContextMenuClickHandler from '../../../../ui/hooks/use-context-menu-click-handler';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport LottieAnimation from '../../../../ui/lottie-animation/lottie-animation';\nimport Text from '../../../../ui/text/text';\nimport { BLOCK_TYPE } from '../../../constants/block-constants';\nimport { NODE_CARD_STATES, TEACHER_MENU_LABELS } from '../../../constants/node-constants';\nimport { getNodeTypeBasedBgImage } from '../../../utils';\nimport { getNodeCardBasedIcon } from '../../../utils/node-card-utils';\nimport * as Styled from '../node-card-styled';\nimport NodeCardTags from '../node-card-tags';\nimport NodeMenuOptions from '../node-menu-options/node-menu-options';\n\nconst renderSettings = { renderer: 'canvas', autoplay: false };\nconst { ASSIGN_AS_HW, REVIEW, VIEW, MARK_AS_DONE, RESET } = TEACHER_MENU_LABELS;\n\nconst TeacherActions: FC<Omit<INodeCardProps, 'userType'>> = memo(\n ({\n nodeData,\n imageHue,\n blockType,\n isSkipped,\n onNodeAssignAsHomework,\n onNodeMarkAsDone,\n onNodeView,\n onNodeReview,\n onNodeReattempt,\n }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const { menuVisible, onMenuClick } = useContextMenuClickHandler(containerRef);\n\n const {\n accuracy,\n attempt_location: attemptLocation,\n node_type: nodeType,\n card_header: cardHeader,\n title,\n state,\n is_optional: isOptional,\n sheet_statement: sheetStatement,\n permissions,\n user_attempt_id: userAttemptId,\n } = nodeData;\n\n const { lottie: nodeCardLottie } = getNodeCardBasedIcon(nodeType);\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n\n const {\n can_mark_familiar: canMarkFamiliar,\n can_review: canReview,\n can_assign_as_homework: canAssignAsHw,\n can_reset: canReset,\n } = permissions;\n\n const isGoalBlock = blockType === BLOCK_TYPE.GOAL;\n const sheetLocked = state === NODE_CARD_STATES.LOCKED;\n const sheetNotStarted = state === NODE_CARD_STATES.NOT_STARTED;\n const sheetInProgress = state === NODE_CARD_STATES.IN_PROGRESS;\n const inClassSheet = attemptLocation === 'INCLASS';\n\n const showCardAnimation = !isOptional && (sheetInProgress || sheetNotStarted);\n\n const nodeBgImage = getNodeTypeBasedBgImage(nodeType);\n\n const handleOnMenuOptionClick = useCallback(\n (optionId: string) => {\n switch (optionId) {\n case 'node-card-view':\n if (canReview && userAttemptId) {\n onNodeReview?.(nodeData);\n } else {\n onNodeView?.(nodeData);\n }\n\n return;\n\n case 'node-card-assign-as-hw':\n onNodeAssignAsHomework?.(nodeData);\n\n return;\n\n case 'node-card-mark-as-done':\n onNodeMarkAsDone?.(nodeData);\n\n return;\n\n case 'node-card-reset':\n onNodeReattempt?.(nodeData);\n\n return;\n\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [\n canReview,\n nodeData,\n onNodeAssignAsHomework,\n onNodeMarkAsDone,\n onNodeReattempt,\n onNodeReview,\n onNodeView,\n userAttemptId,\n ],\n );\n\n const handleOnMouseEnter = useCallback(() => {\n if (sheetLocked) return;\n animationRef.current?.play();\n }, [sheetLocked]);\n\n const handleOnMouseLeave = useCallback(() => {\n animationRef.current?.stop();\n }, []);\n\n const menuOptions: INodeMenuOption[] = [\n {\n id: 'node-card-view',\n label: canReview && userAttemptId ? REVIEW : VIEW,\n icon: Eye2Icon,\n disabled: false,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-assign-as-hw',\n label: ASSIGN_AS_HW,\n icon: Home2Icon,\n disabled: !canAssignAsHw,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-reset',\n label: RESET,\n icon: RedoIcon,\n disabled: !canReset,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-mark-as-done',\n label: MARK_AS_DONE,\n icon: Check2Icon,\n disabled: !canMarkFamiliar,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n return (\n <Styled.NodeCardContainer\n $showOutline={!showCardAnimation}\n $isSheetLocked={sheetLocked}\n $background={`${imageHue}_2`}\n $disabled={Boolean(isSkipped)}\n >\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem={sheetStatement}\n position=\"bottom\"\n zIndex={5}\n hidden={!sheetStatement}\n parentWidth=\"100%\"\n widthX={11.25}\n >\n <Styled.NodeCardInfoWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={3.5}\n $bgImage={nodeBgImage}\n $gutterX={0.78125}\n $flexGap={8.5}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $opacity={sheetLocked ? 0.5 : 1}\n >\n <LottieAnimation src={nodeCardLottie} ref={animationRef} settings={renderSettings} />\n {!isOptional && <Styled.StyledImportantIcon />}\n </Styled.IconWrapper>\n\n <Text $renderAs=\"ac4-black\" $color=\"BLACK\" $opacity={sheetLocked ? 0.5 : 1}>\n {cardHeader} {inClassSheet && `• CW`}\n </Text>\n\n <FlexView className=\"context-menu\">\n {isGoalBlock && (\n <Styled.NodeKebabMenuWrapper ref={containerRef} onClick={onMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.NodeKebabMenuWrapper>\n )}\n </FlexView>\n\n {showCardAnimation && !isSkipped && (\n <BorderPathAnimation borderColor=\"BLACK_1\" borderWidth={1} />\n )}\n </Styled.NodeCardInfoWrapper>\n\n <NodeCardTags nodeType={nodeType} state={state} accuracy={accuracy} />\n\n {!isGoalBlock && (\n <Styled.NodeCardContentWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $background=\"WHITE_1\"\n $flexGap={8}\n $heightX={4}\n $justifyContent=\"space-between\"\n >\n <Styled.NodeCardTitle\n $renderAs=\"ab3\"\n $color=\"BLACK_1\"\n $opacity={sheetLocked ? 0.5 : 1}\n >\n {title}\n </Styled.NodeCardTitle>\n\n <Styled.NodeKebabMenuWrapper ref={containerRef} onClick={onMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.NodeKebabMenuWrapper>\n </Styled.NodeCardContentWrapper>\n )}\n </ArrowTooltip>\n\n <Styled.NodeMenuOptionsWrapper $visible={menuVisible}>\n <NodeMenuOptions options={menuOptions} />\n </Styled.NodeMenuOptionsWrapper>\n </Styled.NodeCardContainer>\n );\n },\n);\n\nexport default TeacherActions;\n"],"names":["renderSettings","ASSIGN_AS_HW","REVIEW","VIEW","MARK_AS_DONE","RESET","TEACHER_MENU_LABELS","TeacherActions","memo","nodeData","imageHue","blockType","isSkipped","onNodeAssignAsHomework","onNodeMarkAsDone","onNodeView","onNodeReview","onNodeReattempt","containerRef","useRef","menuVisible","onMenuClick","useContextMenuClickHandler","accuracy","attemptLocation","nodeType","cardHeader","title","state","isOptional","sheetStatement","permissions","userAttemptId","nodeCardLottie","getNodeCardBasedIcon","animationRef","canMarkFamiliar","canReview","canAssignAsHw","canReset","isGoalBlock","BLOCK_TYPE","sheetLocked","NODE_CARD_STATES","sheetNotStarted","sheetInProgress","inClassSheet","showCardAnimation","nodeBgImage","getNodeTypeBasedBgImage","handleOnMenuOptionClick","useCallback","optionId","handleOnMouseEnter","_a","handleOnMouseLeave","menuOptions","Eye2Icon","Home2Icon","RedoIcon","Check2Icon","jsxs","Styled.NodeCardContainer","ArrowTooltip","Styled.NodeCardInfoWrapper","Styled.IconWrapper","jsx","LottieAnimation","Styled.StyledImportantIcon","Text","FlexView","Styled.NodeKebabMenuWrapper","MoreVerticalIcon","BorderPathAnimation","NodeCardTags","Styled.NodeCardContentWrapper","Styled.NodeCardTitle","Styled.NodeMenuOptionsWrapper","NodeMenuOptions"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"teacher-actions.js","sources":["../../../../../../src/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../../../../ui/lottie-animation/types';\nimport type { INodeCardProps } from '../node-card-types';\nimport type { INodeMenuOption } from '../node-menu-options/node-menu-options-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useRef } from 'react';\n\nimport Check2Icon from '../../../../../assets/line-icons/icons/check2';\nimport Eye2Icon from '../../../../../assets/line-icons/icons/eye2';\nimport Home2Icon from '../../../../../assets/line-icons/icons/home2';\nimport MoreVerticalIcon from '../../../../../assets/line-icons/icons/more-vertical';\nimport RedoIcon from '../../../../../assets/line-icons/icons/redo';\nimport ArrowTooltip from '../../../../ui/arrow-tooltip/arrow-tooltip';\nimport useContextMenuClickHandler from '../../../../ui/hooks/use-context-menu-click-handler';\nimport FlexView from '../../../../ui/layout/flex-view';\nimport LottieAnimation from '../../../../ui/lottie-animation/lottie-animation';\nimport Text from '../../../../ui/text/text';\nimport { BLOCK_TYPE } from '../../../constants/block-constants';\nimport { NODE_CARD_STATES, TEACHER_MENU_LABELS } from '../../../constants/node-constants';\nimport { getNodeTypeBasedBgImage } from '../../../utils';\nimport { getNodeCardBasedIcon } from '../../../utils/node-card-utils';\nimport * as Styled from '../node-card-styled';\nimport NodeCardTags from '../node-card-tags';\nimport NodeMenuOptions from '../node-menu-options/node-menu-options';\n\nconst renderSettings = { renderer: 'canvas', autoplay: false };\nconst { ASSIGN_AS_HW, REVIEW, VIEW, MARK_AS_DONE, RESET } = TEACHER_MENU_LABELS;\n\nconst TeacherActions: FC<Omit<INodeCardProps, 'userType'>> = memo(\n ({\n nodeData,\n imageHue,\n blockType,\n isSkipped,\n onNodeAssignAsHomework,\n onNodeMarkAsDone,\n onNodeView,\n onNodeReview,\n onNodeReattempt,\n }) => {\n const containerRef = useRef<HTMLDivElement>(null);\n const { menuVisible, onMenuClick } = useContextMenuClickHandler(containerRef);\n\n const {\n accuracy,\n attempt_location: attemptLocation,\n node_type: nodeType,\n card_header: cardHeader,\n title,\n state,\n is_optional: isOptional,\n sheet_statement: sheetStatement,\n permissions,\n user_attempt_id: userAttemptId,\n } = nodeData;\n\n const { lottie: nodeCardLottie } = getNodeCardBasedIcon(nodeType);\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n\n const {\n can_mark_familiar: canMarkFamiliar,\n can_review: canReview,\n can_assign_as_homework: canAssignAsHw,\n can_reset: canReset,\n } = permissions;\n\n const isGoalBlock = blockType === BLOCK_TYPE.GOAL;\n const sheetLocked = state === NODE_CARD_STATES.LOCKED;\n const sheetNotStarted = state === NODE_CARD_STATES.NOT_STARTED;\n const sheetInProgress = state === NODE_CARD_STATES.IN_PROGRESS;\n const inClassSheet = attemptLocation === 'INCLASS';\n\n const showCardAnimation = !isOptional && (sheetInProgress || sheetNotStarted);\n\n const nodeBgImage = getNodeTypeBasedBgImage(nodeType);\n\n const handleOnMenuOptionClick = useCallback(\n (optionId: string) => {\n switch (optionId) {\n case 'node-card-view':\n if (canReview && userAttemptId) {\n onNodeReview?.(nodeData);\n } else {\n onNodeView?.(nodeData);\n }\n\n return;\n\n case 'node-card-assign-as-hw':\n onNodeAssignAsHomework?.(nodeData);\n\n return;\n\n case 'node-card-mark-as-done':\n onNodeMarkAsDone?.(nodeData);\n\n return;\n\n case 'node-card-reset':\n onNodeReattempt?.(nodeData);\n\n return;\n\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\n },\n [\n canReview,\n nodeData,\n onNodeAssignAsHomework,\n onNodeMarkAsDone,\n onNodeReattempt,\n onNodeReview,\n onNodeView,\n userAttemptId,\n ],\n );\n\n const handleOnMouseEnter = useCallback(() => {\n if (sheetLocked) return;\n animationRef.current?.play();\n }, [sheetLocked]);\n\n const handleOnMouseLeave = useCallback(() => {\n animationRef.current?.stop();\n }, []);\n\n const menuOptions: INodeMenuOption[] = [\n {\n id: 'node-card-view',\n label: canReview && userAttemptId ? REVIEW : VIEW,\n icon: Eye2Icon,\n disabled: false,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-assign-as-hw',\n label: ASSIGN_AS_HW,\n icon: Home2Icon,\n disabled: !canAssignAsHw,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-reset',\n label: RESET,\n icon: RedoIcon,\n disabled: !canReset,\n onClick: handleOnMenuOptionClick,\n },\n {\n id: 'node-card-mark-as-done',\n label: MARK_AS_DONE,\n icon: Check2Icon,\n disabled: !canMarkFamiliar,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n return (\n <Styled.NodeCardContainer\n $showOutline={!showCardAnimation}\n $isSheetLocked={sheetLocked}\n $background={`${imageHue}_2`}\n $disabled={Boolean(isSkipped)}\n >\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem={sheetStatement}\n position=\"bottom\"\n zIndex={5}\n hidden={!sheetStatement}\n parentWidth=\"100%\"\n widthX={11.25}\n >\n <Styled.NodeCardInfoWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={3.5}\n $bgImage={nodeBgImage}\n $gutterX={0.78125}\n $flexGap={8.5}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $opacity={sheetLocked ? 0.5 : 1}\n >\n <LottieAnimation src={nodeCardLottie} ref={animationRef} settings={renderSettings} />\n {!isOptional && <Styled.StyledImportantIcon />}\n </Styled.IconWrapper>\n\n <Text $renderAs=\"ac4-black\" $color=\"BLACK\" $opacity={sheetLocked ? 0.5 : 1}>\n {cardHeader} {inClassSheet && `• CW`}\n </Text>\n\n <FlexView className=\"context-menu\">\n {isGoalBlock && (\n <Styled.NodeKebabMenuWrapper ref={containerRef} onClick={onMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.NodeKebabMenuWrapper>\n )}\n </FlexView>\n </Styled.NodeCardInfoWrapper>\n\n <NodeCardTags nodeType={nodeType} state={state} accuracy={accuracy} />\n\n {!isGoalBlock && (\n <Styled.NodeCardContentWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $background=\"WHITE_1\"\n $flexGap={8}\n $heightX={4}\n $justifyContent=\"space-between\"\n >\n <Styled.NodeCardTitle\n $renderAs=\"ab3\"\n $color=\"BLACK_1\"\n $opacity={sheetLocked ? 0.5 : 1}\n >\n {title}\n </Styled.NodeCardTitle>\n\n <Styled.NodeKebabMenuWrapper ref={containerRef} onClick={onMenuClick}>\n <MoreVerticalIcon width={16} height={16} />\n </Styled.NodeKebabMenuWrapper>\n </Styled.NodeCardContentWrapper>\n )}\n </ArrowTooltip>\n\n <Styled.NodeMenuOptionsWrapper $visible={menuVisible}>\n <NodeMenuOptions options={menuOptions} />\n </Styled.NodeMenuOptionsWrapper>\n </Styled.NodeCardContainer>\n );\n },\n);\n\nexport default TeacherActions;\n"],"names":["renderSettings","ASSIGN_AS_HW","REVIEW","VIEW","MARK_AS_DONE","RESET","TEACHER_MENU_LABELS","TeacherActions","memo","nodeData","imageHue","blockType","isSkipped","onNodeAssignAsHomework","onNodeMarkAsDone","onNodeView","onNodeReview","onNodeReattempt","containerRef","useRef","menuVisible","onMenuClick","useContextMenuClickHandler","accuracy","attemptLocation","nodeType","cardHeader","title","state","isOptional","sheetStatement","permissions","userAttemptId","nodeCardLottie","getNodeCardBasedIcon","animationRef","canMarkFamiliar","canReview","canAssignAsHw","canReset","isGoalBlock","BLOCK_TYPE","sheetLocked","NODE_CARD_STATES","sheetNotStarted","sheetInProgress","inClassSheet","showCardAnimation","nodeBgImage","getNodeTypeBasedBgImage","handleOnMenuOptionClick","useCallback","optionId","handleOnMouseEnter","_a","handleOnMouseLeave","menuOptions","Eye2Icon","Home2Icon","RedoIcon","Check2Icon","jsxs","Styled.NodeCardContainer","ArrowTooltip","Styled.NodeCardInfoWrapper","Styled.IconWrapper","jsx","LottieAnimation","Styled.StyledImportantIcon","Text","FlexView","Styled.NodeKebabMenuWrapper","MoreVerticalIcon","NodeCardTags","Styled.NodeCardContentWrapper","Styled.NodeCardTitle","Styled.NodeMenuOptionsWrapper","NodeMenuOptions"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,51 +0,0 @@
|
|
1
|
-
import i, { css as s } from "styled-components";
|
2
|
-
const o = i.div`
|
3
|
-
position: absolute;
|
4
|
-
z-index: 1;
|
5
|
-
overflow: hidden;
|
6
|
-
`, d = i(o)(
|
7
|
-
({ $borderWidth: t }) => `
|
8
|
-
top: 0;
|
9
|
-
left: 0;
|
10
|
-
width: 100%;
|
11
|
-
height: ${t}px;
|
12
|
-
`
|
13
|
-
), c = i(o)(
|
14
|
-
({ $borderWidth: t }) => `
|
15
|
-
bottom: 0;
|
16
|
-
left: 0;
|
17
|
-
width: 100%;
|
18
|
-
height: ${t}px;
|
19
|
-
`
|
20
|
-
), l = i(o)(
|
21
|
-
({ $borderWidth: t }) => `
|
22
|
-
top: 0;
|
23
|
-
right: 0;
|
24
|
-
width: ${t}px;
|
25
|
-
height: 100%;
|
26
|
-
`
|
27
|
-
), $ = i(o)(
|
28
|
-
({ $borderWidth: t }) => `
|
29
|
-
top: 0;
|
30
|
-
left: 0;
|
31
|
-
width: ${t}px;
|
32
|
-
height: 100%;
|
33
|
-
`
|
34
|
-
), g = i.div(
|
35
|
-
({ theme: t, $width: n, $height: e, $borderColor: h, $animationDuration: p, $keyframes: r }) => s`
|
36
|
-
position: relative;
|
37
|
-
width: ${n}px;
|
38
|
-
height: ${e}px;
|
39
|
-
background-color: ${t.colors[h]};
|
40
|
-
opacity: 0;
|
41
|
-
animation: ${r} ${p}s linear infinite;
|
42
|
-
`
|
43
|
-
);
|
44
|
-
export {
|
45
|
-
c as BottomLineContainer,
|
46
|
-
$ as LeftLineContainer,
|
47
|
-
g as Line,
|
48
|
-
l as RightLineContainer,
|
49
|
-
d as TopLineContainer
|
50
|
-
};
|
51
|
-
//# sourceMappingURL=border-path-animation-styled.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"border-path-animation-styled.js","sources":["../../../../src/features/ui/border-path-animation/border-path-animation-styled.tsx"],"sourcesContent":["import type { TColorNames } from '../types';\nimport type { keyframes } from 'styled-components';\n\nimport styled, { css } from 'styled-components';\n\nconst LineContainer = styled.div`\n position: absolute;\n z-index: 1;\n overflow: hidden;\n`;\n\nexport const TopLineContainer = styled(LineContainer)<{\n $borderWidth: number;\n}>(\n ({ $borderWidth }) => `\n top: 0;\n left: 0;\n width: 100%;\n height: ${$borderWidth}px;\n`,\n);\n\nexport const BottomLineContainer = styled(LineContainer)<{\n $borderWidth: number;\n}>(\n ({ $borderWidth }) => `\n bottom: 0;\n left: 0;\n width: 100%;\n height: ${$borderWidth}px;\n`,\n);\n\nexport const RightLineContainer = styled(LineContainer)<{\n $borderWidth: number;\n}>(\n ({ $borderWidth }) => `\n top: 0;\n right: 0;\n width: ${$borderWidth}px;\n height: 100%;\n`,\n);\n\nexport const LeftLineContainer = styled(LineContainer)<{\n $borderWidth: number;\n}>(\n ({ $borderWidth }) => `\n top: 0;\n left: 0;\n width: ${$borderWidth}px;\n height: 100%;\n`,\n);\n\nexport const Line = styled.div<{\n $borderColor: TColorNames;\n $animationDuration: number;\n $keyframes: ReturnType<typeof keyframes>;\n $width: number;\n $height: number;\n}>(\n ({ theme, $width, $height, $borderColor, $animationDuration, $keyframes }) => css`\n position: relative;\n width: ${$width}px;\n height: ${$height}px;\n background-color: ${theme.colors[$borderColor]};\n opacity: 0;\n animation: ${$keyframes} ${$animationDuration}s linear infinite;\n `,\n);\n"],"names":["LineContainer","styled","TopLineContainer","$borderWidth","BottomLineContainer","RightLineContainer","LeftLineContainer","Line","theme","$width","$height","$borderColor","$animationDuration","$keyframes","css"],"mappings":";AAKA,MAAMA,IAAgBC,EAAO;AAAA;AAAA;AAAA;AAAA,GAMhBC,IAAmBD,EAAOD,CAAa;AAAA,EAGlD,CAAC,EAAE,cAAAG,EAAA,MAAmB;AAAA;AAAA;AAAA;AAAA,YAIZA,CAAY;AAAA;AAExB,GAEaC,IAAsBH,EAAOD,CAAa;AAAA,EAGrD,CAAC,EAAE,cAAAG,EAAA,MAAmB;AAAA;AAAA;AAAA;AAAA,YAIZA,CAAY;AAAA;AAExB,GAEaE,IAAqBJ,EAAOD,CAAa;AAAA,EAGpD,CAAC,EAAE,cAAAG,EAAA,MAAmB;AAAA;AAAA;AAAA,WAGbA,CAAY;AAAA;AAAA;AAGvB,GAEaG,IAAoBL,EAAOD,CAAa;AAAA,EAGnD,CAAC,EAAE,cAAAG,EAAA,MAAmB;AAAA;AAAA;AAAA,WAGbA,CAAY;AAAA;AAAA;AAGvB,GAEaI,IAAON,EAAO;AAAA,EAOzB,CAAC,EAAE,OAAAO,GAAO,QAAAC,GAAQ,SAAAC,GAAS,cAAAC,GAAc,oBAAAC,GAAoB,YAAAC,EAAiB,MAAAC;AAAA;AAAA,aAEnEL,CAAM;AAAA,cACLC,CAAO;AAAA,wBACGF,EAAM,OAAOG,CAAY,CAAC;AAAA;AAAA,iBAEjCE,CAAU,IAAID,CAAkB;AAAA;AAEjD;"}
|
@@ -1,108 +0,0 @@
|
|
1
|
-
import { jsxs as p, Fragment as g, jsx as s } from "react/jsx-runtime";
|
2
|
-
import { memo as b, useState as d, useMemo as l, useRef as u, useLayoutEffect as C } from "react";
|
3
|
-
import { keyframes as L } from "styled-components";
|
4
|
-
import { TopLineContainer as k, Line as c, RightLineContainer as W, BottomLineContainer as R, LeftLineContainer as D } from "./border-path-animation-styled.js";
|
5
|
-
const F = (i, r) => {
|
6
|
-
const t = (i + r) * 2, o = i, e = r, y = i / t, n = (i + r) / t, a = (i + r + i) / t;
|
7
|
-
return {
|
8
|
-
top: [
|
9
|
-
[0, { x: 0, y: 0, o: 1 }],
|
10
|
-
[y, { x: o, y: 0, o: 1 }],
|
11
|
-
[y + 1e-3, { x: o, y: 0, o: 0 }],
|
12
|
-
[n - 1e-3, { x: -o, y: 0, o: 0 }],
|
13
|
-
[n, { x: -o, y: 0, o: 1 }],
|
14
|
-
[a, { x: 0, y: 0, o: 1 }],
|
15
|
-
[1, { x: 0, y: 0, o: 1 }]
|
16
|
-
],
|
17
|
-
right: [
|
18
|
-
[0, { x: 0, y: 0, o: 1 }],
|
19
|
-
[y, { x: 0, y: 0, o: 1 }],
|
20
|
-
[n, { x: 0, y: e, o: 1 }],
|
21
|
-
[n + 1e-3, { x: 0, y: e, o: 0 }],
|
22
|
-
[a - 1e-3, { x: 0, y: -e, o: 0 }],
|
23
|
-
[a, { x: 0, y: -e, o: 1 }],
|
24
|
-
[1, { x: 0, y: 0, o: 1 }]
|
25
|
-
],
|
26
|
-
bottom: [
|
27
|
-
[0, { x: o, y: 0, o: 1 }],
|
28
|
-
[y, { x: 0, y: 0, o: 1 }],
|
29
|
-
[n, { x: 0, y: 0, o: 1 }],
|
30
|
-
[a, { x: -o, y: 0, o: 1 }],
|
31
|
-
[a + 1e-3, { x: -o, y: 0, o: 0 }],
|
32
|
-
[a + 2e-3, { x: o, y: 0, o: 0 }],
|
33
|
-
[1, { x: o, y: 0, o: 1 }]
|
34
|
-
],
|
35
|
-
left: [
|
36
|
-
[0, { x: 0, y: e, o: 1 }],
|
37
|
-
[y, { x: 0, y: e, o: 1 }],
|
38
|
-
[n, { x: 0, y: 0, o: 1 }],
|
39
|
-
[a, { x: 0, y: 0, o: 1 }],
|
40
|
-
[1, { x: 0, y: -e, o: 1 }]
|
41
|
-
]
|
42
|
-
};
|
43
|
-
}, $ = (i) => L`
|
44
|
-
${i.map(
|
45
|
-
([r, { x: t, y: o, o: e }]) => `${r * 100}% {
|
46
|
-
transform: translate(${t}px, ${o}px);
|
47
|
-
opacity: ${e};
|
48
|
-
}`
|
49
|
-
).join(" ")}
|
50
|
-
`, K = b((i) => {
|
51
|
-
const { animationDuration: r = 6, borderWidth: t = 1, borderColor: o = "YELLOW_3" } = i, [e, y] = d(1), [n, a] = d(1), m = l(() => F(e, n), [e, n]), x = l(
|
52
|
-
() => ({
|
53
|
-
top: $(m.top),
|
54
|
-
right: $(m.right),
|
55
|
-
bottom: $(m.bottom),
|
56
|
-
left: $(m.left)
|
57
|
-
}),
|
58
|
-
[m]
|
59
|
-
), f = u(null), h = u(null);
|
60
|
-
return C(() => {
|
61
|
-
f.current && y(f.current.getBoundingClientRect().width), h.current && a(h.current.getBoundingClientRect().height);
|
62
|
-
}, []), /* @__PURE__ */ p(g, { children: [
|
63
|
-
/* @__PURE__ */ s(k, { className: "top-line", ref: f, $borderWidth: t, children: /* @__PURE__ */ s(
|
64
|
-
c,
|
65
|
-
{
|
66
|
-
$borderColor: o,
|
67
|
-
$width: e,
|
68
|
-
$height: t,
|
69
|
-
$animationDuration: r,
|
70
|
-
$keyframes: x.top
|
71
|
-
}
|
72
|
-
) }),
|
73
|
-
/* @__PURE__ */ s(W, { ref: h, $borderWidth: t, children: /* @__PURE__ */ s(
|
74
|
-
c,
|
75
|
-
{
|
76
|
-
$width: t,
|
77
|
-
$height: n,
|
78
|
-
$borderColor: o,
|
79
|
-
$animationDuration: r,
|
80
|
-
$keyframes: x.right
|
81
|
-
}
|
82
|
-
) }),
|
83
|
-
/* @__PURE__ */ s(R, { $borderWidth: t, children: /* @__PURE__ */ s(
|
84
|
-
c,
|
85
|
-
{
|
86
|
-
$borderColor: o,
|
87
|
-
$width: e,
|
88
|
-
$height: t,
|
89
|
-
$animationDuration: r,
|
90
|
-
$keyframes: x.bottom
|
91
|
-
}
|
92
|
-
) }),
|
93
|
-
/* @__PURE__ */ s(D, { $borderWidth: t, children: /* @__PURE__ */ s(
|
94
|
-
c,
|
95
|
-
{
|
96
|
-
$width: t,
|
97
|
-
$height: n,
|
98
|
-
$borderColor: o,
|
99
|
-
$animationDuration: r,
|
100
|
-
$keyframes: x.left
|
101
|
-
}
|
102
|
-
) })
|
103
|
-
] });
|
104
|
-
});
|
105
|
-
export {
|
106
|
-
K as default
|
107
|
-
};
|
108
|
-
//# sourceMappingURL=border-path-animation.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"border-path-animation.js","sources":["../../../../src/features/ui/border-path-animation/border-path-animation.tsx"],"sourcesContent":["import type {\n IBorderPathAnimationProps,\n IGetKeyFrames,\n IGetKeyFramesConfig,\n} from './border-path-animation-types';\nimport type { FC } from 'react';\n\nimport { memo, useLayoutEffect, useMemo, useRef, useState } from 'react';\nimport { keyframes } from 'styled-components';\n\nimport * as Styled from './border-path-animation-styled';\n\nconst getKeyFramesConfig: IGetKeyFramesConfig = (width, height) => {\n const p = (width + height) * 2; // perimeter\n const w = width;\n const h = height;\n const bp1 = width / p;\n const bp2 = (width + height) / p;\n const bp3 = (width + height + width) / p;\n\n return {\n top: [\n [0, { x: 0, y: 0, o: 1 }],\n [bp1, { x: w, y: 0, o: 1 }],\n\n [bp1 + 0.001, { x: w, y: 0, o: 0 }],\n [bp2 - 0.001, { x: -w, y: 0, o: 0 }],\n\n [bp2, { x: -w, y: 0, o: 1 }],\n [bp3, { x: 0, y: 0, o: 1 }],\n [1, { x: 0, y: 0, o: 1 }],\n ],\n right: [\n [0, { x: 0, y: 0, o: 1 }],\n [bp1, { x: 0, y: 0, o: 1 }],\n [bp2, { x: 0, y: h, o: 1 }],\n\n [bp2 + 0.001, { x: 0, y: h, o: 0 }],\n [bp3 - 0.001, { x: 0, y: -h, o: 0 }],\n\n [bp3, { x: 0, y: -h, o: 1 }],\n [1, { x: 0, y: 0, o: 1 }],\n ],\n bottom: [\n [0, { x: w, y: 0, o: 1 }],\n [bp1, { x: 0, y: 0, o: 1 }],\n [bp2, { x: 0, y: 0, o: 1 }],\n [bp3, { x: -w, y: 0, o: 1 }],\n\n [bp3 + 0.001, { x: -w, y: 0, o: 0 }],\n [bp3 + 0.002, { x: w, y: 0, o: 0 }],\n [1, { x: w, y: 0, o: 1 }],\n ],\n left: [\n [0, { x: 0, y: h, o: 1 }],\n [bp1, { x: 0, y: h, o: 1 }],\n [bp2, { x: 0, y: 0, o: 1 }],\n [bp3, { x: 0, y: 0, o: 1 }],\n [1, { x: 0, y: -h, o: 1 }],\n ],\n };\n};\n\nconst getKeyFrames: IGetKeyFrames = config => {\n return keyframes`\n ${config\n .map(\n ([percentage, { x, y, o }]) => `${percentage * 100}% {\n transform: translate(${x}px, ${y}px);\n opacity: ${o};\n }`,\n )\n .join(' ')}\n `;\n};\n\nconst BorderPathAnimation: FC<IBorderPathAnimationProps> = memo(props => {\n const { animationDuration = 6, borderWidth = 1, borderColor = 'YELLOW_3' } = props;\n const [width, setWidth] = useState(1);\n const [height, setHeight] = useState(1);\n const keyFramesConfig = useMemo(() => getKeyFramesConfig(width, height), [width, height]);\n const keyFrames = useMemo(\n () => ({\n top: getKeyFrames(keyFramesConfig.top),\n right: getKeyFrames(keyFramesConfig.right),\n bottom: getKeyFrames(keyFramesConfig.bottom),\n left: getKeyFrames(keyFramesConfig.left),\n }),\n [keyFramesConfig],\n );\n const topRef = useRef<HTMLDivElement>(null);\n const rightRef = useRef<HTMLDivElement>(null);\n\n useLayoutEffect(() => {\n if (topRef.current) {\n setWidth(topRef.current.getBoundingClientRect().width);\n }\n\n if (rightRef.current) {\n setHeight(rightRef.current.getBoundingClientRect().height);\n }\n }, []);\n\n return (\n <>\n <Styled.TopLineContainer className=\"top-line\" ref={topRef} $borderWidth={borderWidth}>\n <Styled.Line\n $borderColor={borderColor}\n $width={width}\n $height={borderWidth}\n $animationDuration={animationDuration}\n $keyframes={keyFrames.top}\n />\n </Styled.TopLineContainer>\n <Styled.RightLineContainer ref={rightRef} $borderWidth={borderWidth}>\n <Styled.Line\n $width={borderWidth}\n $height={height}\n $borderColor={borderColor}\n $animationDuration={animationDuration}\n $keyframes={keyFrames.right}\n />\n </Styled.RightLineContainer>\n <Styled.BottomLineContainer $borderWidth={borderWidth}>\n <Styled.Line\n $borderColor={borderColor}\n $width={width}\n $height={borderWidth}\n $animationDuration={animationDuration}\n $keyframes={keyFrames.bottom}\n />\n </Styled.BottomLineContainer>\n <Styled.LeftLineContainer $borderWidth={borderWidth}>\n <Styled.Line\n $width={borderWidth}\n $height={height}\n $borderColor={borderColor}\n $animationDuration={animationDuration}\n $keyframes={keyFrames.left}\n />\n </Styled.LeftLineContainer>\n </>\n );\n});\n\nexport default BorderPathAnimation;\n"],"names":["getKeyFramesConfig","width","height","p","w","h","bp1","bp2","bp3","getKeyFrames","config","keyframes","percentage","x","y","o","BorderPathAnimation","memo","props","animationDuration","borderWidth","borderColor","setWidth","useState","setHeight","keyFramesConfig","useMemo","keyFrames","topRef","useRef","rightRef","useLayoutEffect","jsxs","Fragment","jsx","Styled.TopLineContainer","Styled.Line","Styled.RightLineContainer","Styled.BottomLineContainer","Styled.LeftLineContainer"],"mappings":"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"}
|