@cuemath/leap 2.8.51-beta-0.1 → 2.8.51-beta-0.2
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/line-icons/icons/exclamation.js +26 -0
- package/dist/assets/line-icons/icons/exclamation.js.map +1 -0
- package/dist/assets/line-icons/icons/home2.js +25 -0
- package/dist/assets/line-icons/icons/home2.js.map +1 -0
- package/dist/assets/line-icons/icons/important.js +23 -0
- package/dist/assets/line-icons/icons/important.js.map +1 -0
- package/dist/assets/line-icons/icons/recap.js +32 -0
- package/dist/assets/line-icons/icons/recap.js.map +1 -0
- package/dist/features/chapters-v2/api/chapter.js +10 -0
- package/dist/features/chapters-v2/api/chapter.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js +116 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections-styled.js +26 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections-styled.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +68 -0
- package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner-styled.js +90 -0
- package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner-styled.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner.js +95 -0
- package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/chapter-details-styled.js +38 -0
- package/dist/features/chapters-v2/chapter-details/chapter-details-styled.js.map +1 -0
- package/dist/features/chapters-v2/chapter-details/chapter-details.js +89 -0
- package/dist/features/chapters-v2/chapter-details/chapter-details.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/border-path-animation.js +13 -0
- package/dist/features/chapters-v2/comps/node-card/border-path-animation.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/node-card-styled.js +134 -0
- package/dist/features/chapters-v2/comps/node-card/node-card-styled.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/node-card-tags.js +12 -0
- package/dist/features/chapters-v2/comps/node-card/node-card-tags.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/node-card.js +12 -0
- package/dist/features/chapters-v2/comps/node-card/node-card.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options-styled.js +32 -0
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options-styled.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.js +31 -0
- package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js +154 -0
- package/dist/features/chapters-v2/comps/node-card/student-actions/student-actions.js.map +1 -0
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js +178 -0
- package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js.map +1 -0
- package/dist/features/chapters-v2/comps/tag/tag-styled.js +13 -0
- package/dist/features/chapters-v2/comps/tag/tag-styled.js.map +1 -0
- package/dist/features/chapters-v2/comps/tag/tag.js +28 -0
- package/dist/features/chapters-v2/comps/tag/tag.js.map +1 -0
- package/dist/features/chapters-v2/constants/block-constants.js +18 -0
- package/dist/features/chapters-v2/constants/block-constants.js.map +1 -0
- package/dist/features/chapters-v2/utils/index.js +11 -0
- package/dist/features/chapters-v2/utils/index.js.map +1 -0
- package/dist/features/chapters-v2/utils/node-card-utils.js +72 -0
- package/dist/features/chapters-v2/utils/node-card-utils.js.map +1 -0
- package/dist/index.d.ts +137 -0
- package/dist/index.js +215 -211
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
@@ -0,0 +1,38 @@
|
|
1
|
+
import o from "styled-components";
|
2
|
+
import r from "../../ui/layout/flex-view.js";
|
3
|
+
const p = o.div(({ theme: t }) => `
|
4
|
+
position: absolute;
|
5
|
+
left: 0;
|
6
|
+
right: 0;
|
7
|
+
top: 0;
|
8
|
+
bottom: 0;
|
9
|
+
background: rgba(204, 204, 204, 0.25);
|
10
|
+
z-index: 2;
|
11
|
+
|
12
|
+
& * {
|
13
|
+
pointer-events: none;
|
14
|
+
}
|
15
|
+
|
16
|
+
& img {
|
17
|
+
top: 50%;
|
18
|
+
position: absolute;
|
19
|
+
left: 50%;
|
20
|
+
transform: translate(-50%, -50%);
|
21
|
+
width: ${t.layout.gutter * 5}px;
|
22
|
+
height: ${t.layout.gutter * 5}px;
|
23
|
+
filter: brightness(0);
|
24
|
+
}
|
25
|
+
`), a = o(r)(
|
26
|
+
({ $disablePointerEvents: t, theme: e }) => `
|
27
|
+
position: relative;
|
28
|
+
margin: 0 auto;
|
29
|
+
pointer-events: ${t ? "none" : "auto"};
|
30
|
+
border: 1px solid ${e.colors.WHITE_5};
|
31
|
+
border-top: none;
|
32
|
+
`
|
33
|
+
);
|
34
|
+
export {
|
35
|
+
a as ContentWrapper,
|
36
|
+
p as LoaderWrapper
|
37
|
+
};
|
38
|
+
//# sourceMappingURL=chapter-details-styled.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"chapter-details-styled.js","sources":["../../../../src/features/chapters-v2/chapter-details/chapter-details-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\n\nconst LoaderWrapper = styled.div(({ theme }) => {\n return `\n position: absolute;\n left: 0;\n right: 0;\n top: 0;\n bottom: 0;\n background: rgba(204, 204, 204, 0.25);\n z-index: 2;\n\n & * {\n pointer-events: none;\n }\n\n & img {\n top: 50%;\n position: absolute;\n left: 50%;\n transform: translate(-50%, -50%);\n width: ${theme.layout.gutter * 5}px;\n height: ${theme.layout.gutter * 5}px;\n filter: brightness(0);\n }\n `;\n});\n\nconst ContentWrapper = styled(FlexView)<{ $disablePointerEvents: boolean }>(\n ({ $disablePointerEvents, theme }) => `\n position: relative;\n margin: 0 auto;\n pointer-events: ${$disablePointerEvents ? 'none' : 'auto'};\n border: 1px solid ${theme.colors.WHITE_5};\n border-top: none;\n `,\n);\n\nexport { ContentWrapper, LoaderWrapper };\n"],"names":["LoaderWrapper","styled","theme","ContentWrapper","FlexView","$disablePointerEvents"],"mappings":";;AAIA,MAAMA,IAAgBC,EAAO,IAAI,CAAC,EAAE,OAAAC,QAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,eAkBMA,EAAM,OAAO,SAAS,CAAC;AAAA,gBACtBA,EAAM,OAAO,SAAS,CAAC;AAAA;AAAA;AAAA,GAItC,GAEKC,IAAiBF,EAAOG,CAAQ;AAAA,EACpC,CAAC,EAAE,uBAAAC,GAAuB,OAAAH,EAAA,MAAY;AAAA;AAAA;AAAA,wBAGhBG,IAAwB,SAAS,MAAM;AAAA,0BACrCH,EAAM,OAAO,OAAO;AAAA;AAAA;AAG9C;"}
|
@@ -0,0 +1,89 @@
|
|
1
|
+
import { jsxs as m, jsx as t } from "react/jsx-runtime";
|
2
|
+
import { memo as w, useCallback as A, useEffect as l } from "react";
|
3
|
+
import { ILLUSTRATIONS as N } from "../../../assets/illustrations/illustrations.js";
|
4
|
+
import S from "../../ui/buttons/button/button.js";
|
5
|
+
import x from "../../ui/layout/flex-view.js";
|
6
|
+
import y from "../../ui/text/text.js";
|
7
|
+
import { useGetChapterDetails as D } from "../api/chapter.js";
|
8
|
+
import I from "./block-sections/block-sections.js";
|
9
|
+
import b from "./chapter-banner/chapter-banner.js";
|
10
|
+
import { ContentWrapper as L, LoaderWrapper as T } from "./chapter-details-styled.js";
|
11
|
+
const _ = w((p) => {
|
12
|
+
const {
|
13
|
+
userChapterId: i,
|
14
|
+
studentId: s,
|
15
|
+
userType: c,
|
16
|
+
onBlockSkipUnskip: d,
|
17
|
+
onNodeAttempt: h,
|
18
|
+
onNodeAttemptLocationChange: g,
|
19
|
+
onNodeMarkAsDone: f,
|
20
|
+
onNodeReattempt: u,
|
21
|
+
onNodeReview: C,
|
22
|
+
onNodeView: $
|
23
|
+
} = p, {
|
24
|
+
get: a,
|
25
|
+
data: e,
|
26
|
+
isProcessing: o,
|
27
|
+
isProcessingFailed: k,
|
28
|
+
isStale: n
|
29
|
+
} = D(), r = A(() => {
|
30
|
+
a(i, void 0, { studentId: s });
|
31
|
+
}, [a, i, s]);
|
32
|
+
return l(() => {
|
33
|
+
r();
|
34
|
+
}, [r]), l(() => {
|
35
|
+
!o && n && r();
|
36
|
+
}, [r, o, n]), k ? /* @__PURE__ */ m(x, { $flexGapX: 1.5, $height: "100vh", $justifyContent: "center", $alignItems: "center", children: [
|
37
|
+
/* @__PURE__ */ t(y, { $renderAs: "h6", children: "Oops! Something went wrong. Please try again later." }),
|
38
|
+
/* @__PURE__ */ t(
|
39
|
+
S,
|
40
|
+
{
|
41
|
+
widthX: 14,
|
42
|
+
size: "small",
|
43
|
+
shape: "square",
|
44
|
+
renderAs: "primary",
|
45
|
+
label: "Try again",
|
46
|
+
onClick: r
|
47
|
+
}
|
48
|
+
)
|
49
|
+
] }) : /* @__PURE__ */ m(
|
50
|
+
L,
|
51
|
+
{
|
52
|
+
$widthX: 50,
|
53
|
+
$disablePointerEvents: o,
|
54
|
+
$justifyContent: "center",
|
55
|
+
$alignItems: "center",
|
56
|
+
children: [
|
57
|
+
o && /* @__PURE__ */ t(T, { children: /* @__PURE__ */ t("img", { src: N.LOADER_1, alt: "loader" }) }),
|
58
|
+
e && /* @__PURE__ */ t(
|
59
|
+
b,
|
60
|
+
{
|
61
|
+
title: e.name,
|
62
|
+
imageHue: e.image_hue,
|
63
|
+
imageUrl: e.image_url,
|
64
|
+
progressStats: e == null ? void 0 : e.progress_stats
|
65
|
+
}
|
66
|
+
),
|
67
|
+
e && /* @__PURE__ */ t(
|
68
|
+
I,
|
69
|
+
{
|
70
|
+
imageHue: e.image_hue,
|
71
|
+
userType: c,
|
72
|
+
blocks: e.blocks,
|
73
|
+
onBlockSkipUnskip: d,
|
74
|
+
onNodeAttempt: h,
|
75
|
+
onNodeAttemptLocationChange: g,
|
76
|
+
onNodeMarkAsDone: f,
|
77
|
+
onNodeReattempt: u,
|
78
|
+
onNodeReview: C,
|
79
|
+
onNodeView: $
|
80
|
+
}
|
81
|
+
)
|
82
|
+
]
|
83
|
+
}
|
84
|
+
);
|
85
|
+
}), G = _;
|
86
|
+
export {
|
87
|
+
G as default
|
88
|
+
};
|
89
|
+
//# sourceMappingURL=chapter-details.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"chapter-details.js","sources":["../../../../src/features/chapters-v2/chapter-details/chapter-details.tsx"],"sourcesContent":["import type { IChapterDetails } from './chapter-details-types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useEffect } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport Button from '../../ui/buttons/button/button';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport { useGetChapterDetails } from '../api/chapter';\nimport BlockSections from './block-sections/block-sections';\nimport ChapterBanner from './chapter-banner/chapter-banner';\nimport * as Styled from './chapter-details-styled';\n\nconst ChapterDetails: FC<IChapterDetails> = memo(props => {\n const {\n userChapterId,\n studentId,\n userType,\n onBlockSkipUnskip,\n onNodeAttempt,\n onNodeAttemptLocationChange,\n onNodeMarkAsDone,\n onNodeReattempt,\n onNodeReview,\n onNodeView,\n } = props;\n\n const {\n get: getChapterDetails,\n data: chapterDetails,\n isProcessing,\n isProcessingFailed,\n isStale,\n } = useGetChapterDetails();\n\n const fetchChapterDetails = useCallback(() => {\n getChapterDetails(userChapterId, undefined, { studentId });\n }, [getChapterDetails, userChapterId, studentId]);\n\n useEffect(() => {\n fetchChapterDetails();\n }, [fetchChapterDetails]);\n\n useEffect(() => {\n if (!isProcessing && isStale) {\n fetchChapterDetails();\n }\n }, [fetchChapterDetails, isProcessing, isStale]);\n\n if (isProcessingFailed) {\n return (\n <FlexView $flexGapX={1.5} $height=\"100vh\" $justifyContent=\"center\" $alignItems=\"center\">\n <Text $renderAs=\"h6\">Oops! Something went wrong. Please try again later.</Text>\n <Button\n widthX={14}\n size=\"small\"\n shape=\"square\"\n renderAs=\"primary\"\n label=\"Try again\"\n onClick={fetchChapterDetails}\n />\n </FlexView>\n );\n }\n\n return (\n <Styled.ContentWrapper\n $widthX={50}\n $disablePointerEvents={isProcessing}\n $justifyContent=\"center\"\n $alignItems=\"center\"\n >\n {isProcessing && (\n <Styled.LoaderWrapper>\n <img src={ILLUSTRATIONS.LOADER_1} alt=\"loader\" />\n </Styled.LoaderWrapper>\n )}\n\n {chapterDetails && (\n <ChapterBanner\n title={chapterDetails.name}\n imageHue={chapterDetails.image_hue}\n imageUrl={chapterDetails.image_url}\n progressStats={chapterDetails?.progress_stats}\n />\n )}\n\n {chapterDetails && (\n <BlockSections\n imageHue={chapterDetails.image_hue}\n userType={userType}\n blocks={chapterDetails.blocks}\n onBlockSkipUnskip={onBlockSkipUnskip}\n onNodeAttempt={onNodeAttempt}\n onNodeAttemptLocationChange={onNodeAttemptLocationChange}\n onNodeMarkAsDone={onNodeMarkAsDone}\n onNodeReattempt={onNodeReattempt}\n onNodeReview={onNodeReview}\n onNodeView={onNodeView}\n />\n )}\n </Styled.ContentWrapper>\n );\n});\n\nexport default ChapterDetails;\n"],"names":["ChapterDetails","memo","props","userChapterId","studentId","userType","onBlockSkipUnskip","onNodeAttempt","onNodeAttemptLocationChange","onNodeMarkAsDone","onNodeReattempt","onNodeReview","onNodeView","getChapterDetails","chapterDetails","isProcessing","isProcessingFailed","isStale","useGetChapterDetails","fetchChapterDetails","useCallback","useEffect","jsxs","FlexView","jsx","Text","Button","Styled.ContentWrapper","Styled.LoaderWrapper","ILLUSTRATIONS","ChapterBanner","BlockSections","ChapterDetails$1"],"mappings":";;;;;;;;;;AAcA,MAAMA,IAAsCC,EAAK,CAASC,MAAA;AAClD,QAAA;AAAA,IACJ,eAAAC;AAAA,IACA,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,6BAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,EACE,IAAAV,GAEE;AAAA,IACJ,KAAKW;AAAA,IACL,MAAMC;AAAA,IACN,cAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,SAAAC;AAAA,MACEC,EAAqB,GAEnBC,IAAsBC,EAAY,MAAM;AAC5C,IAAAP,EAAkBV,GAAe,QAAW,EAAE,WAAAC,EAAW,CAAA;AAAA,EACxD,GAAA,CAACS,GAAmBV,GAAeC,CAAS,CAAC;AAYhD,SAVAiB,EAAU,MAAM;AACM,IAAAF;EAAA,GACnB,CAACA,CAAmB,CAAC,GAExBE,EAAU,MAAM;AACV,IAAA,CAACN,KAAgBE,KACCE;EAErB,GAAA,CAACA,GAAqBJ,GAAcE,CAAO,CAAC,GAE3CD,IAEA,gBAAAM,EAACC,KAAS,WAAW,KAAK,SAAQ,SAAQ,iBAAgB,UAAS,aAAY,UAC7E,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAK,WAAU,MAAK,UAAmD,uDAAA;AAAA,IACxE,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,QAAQ;AAAA,QACR,MAAK;AAAA,QACL,OAAM;AAAA,QACN,UAAS;AAAA,QACT,OAAM;AAAA,QACN,SAASP;AAAA,MAAA;AAAA,IACX;AAAA,EACF,EAAA,CAAA,IAKF,gBAAAG;AAAA,IAACK;AAAAA,IAAA;AAAA,MACC,SAAS;AAAA,MACT,uBAAuBZ;AAAA,MACvB,iBAAgB;AAAA,MAChB,aAAY;AAAA,MAEX,UAAA;AAAA,QACCA,KAAA,gBAAAS,EAACI,GAAA,EACC,UAAA,gBAAAJ,EAAC,OAAI,EAAA,KAAKK,EAAc,UAAU,KAAI,SAAA,CAAS,EACjD,CAAA;AAAA,QAGDf,KACC,gBAAAU;AAAA,UAACM;AAAA,UAAA;AAAA,YACC,OAAOhB,EAAe;AAAA,YACtB,UAAUA,EAAe;AAAA,YACzB,UAAUA,EAAe;AAAA,YACzB,eAAeA,KAAA,gBAAAA,EAAgB;AAAA,UAAA;AAAA,QACjC;AAAA,QAGDA,KACC,gBAAAU;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,UAAUjB,EAAe;AAAA,YACzB,UAAAT;AAAA,YACA,QAAQS,EAAe;AAAA,YACvB,mBAAAR;AAAA,YACA,eAAAC;AAAA,YACA,6BAAAC;AAAA,YACA,kBAAAC;AAAA,YACA,iBAAAC;AAAA,YACA,cAAAC;AAAA,YACA,YAAAC;AAAA,UAAA;AAAA,QACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAIR,CAAC,GAEDoB,IAAehC;"}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
import { jsxs as r, jsx as e } from "react/jsx-runtime";
|
2
|
+
const o = () => /* @__PURE__ */ r("svg", { className: "node-card-border", viewBox: "0 0 170 56", preserveAspectRatio: "none", children: [
|
3
|
+
/* @__PURE__ */ e("defs", { children: /* @__PURE__ */ r("linearGradient", { id: "gradient", x1: "0%", y1: "0%", x2: "100%", y2: "0%", children: [
|
4
|
+
/* @__PURE__ */ e("stop", { offset: "0%", stopColor: "black" }),
|
5
|
+
/* @__PURE__ */ e("stop", { offset: "100%", stopColor: "gray" })
|
6
|
+
] }) }),
|
7
|
+
/* @__PURE__ */ e("rect", { className: "border-path", x: "0", y: "0", width: "100%", height: "100%" }),
|
8
|
+
/* @__PURE__ */ e("rect", { className: "border-path-animation", x: "0", y: "0", width: "100%", height: "100%" })
|
9
|
+
] });
|
10
|
+
export {
|
11
|
+
o as default
|
12
|
+
};
|
13
|
+
//# sourceMappingURL=border-path-animation.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"border-path-animation.js","sources":["../../../../../src/features/chapters-v2/comps/node-card/border-path-animation.tsx"],"sourcesContent":["import type { FC } from 'react';\n\nconst BorderPathAnimation: FC = () => {\n return (\n <svg className=\"node-card-border\" viewBox=\"0 0 170 56\" preserveAspectRatio=\"none\">\n <defs>\n <linearGradient id=\"gradient\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor=\"black\" />\n <stop offset=\"100%\" stopColor=\"gray\" />\n </linearGradient>\n </defs>\n <rect className=\"border-path\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" />\n <rect className=\"border-path-animation\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" />\n </svg>\n );\n};\n\nexport default BorderPathAnimation;\n"],"names":["BorderPathAnimation","jsx","jsxs"],"mappings":";AAEA,MAAMA,IAA0B,wBAE3B,OAAI,EAAA,WAAU,oBAAmB,SAAQ,cAAa,qBAAoB,QACzE,UAAA;AAAA,EAAA,gBAAAC,EAAC,QACC,EAAA,UAAA,gBAAAC,EAAC,kBAAe,EAAA,IAAG,YAAW,IAAG,MAAK,IAAG,MAAK,IAAG,QAAO,IAAG,MACzD,UAAA;AAAA,IAAA,gBAAAD,EAAC,QAAK,EAAA,QAAO,MAAK,WAAU,SAAQ;AAAA,IACnC,gBAAAA,EAAA,QAAA,EAAK,QAAO,QAAO,WAAU,QAAO;AAAA,EAAA,EAAA,CACvC,EACF,CAAA;AAAA,EACA,gBAAAA,EAAC,QAAK,EAAA,WAAU,eAAc,GAAE,KAAI,GAAE,KAAI,OAAM,QAAO,QAAO,OAAO,CAAA;AAAA,EACrE,gBAAAA,EAAC,QAAK,EAAA,WAAU,yBAAwB,GAAE,KAAI,GAAE,KAAI,OAAM,QAAO,QAAO,OAAO,CAAA;AACjF,EAAA,CAAA;"}
|
@@ -0,0 +1,134 @@
|
|
1
|
+
import r from "styled-components";
|
2
|
+
import p from "../../../../assets/line-icons/icons/important.js";
|
3
|
+
import d from "../../../../assets/line-icons/icons/lock2.js";
|
4
|
+
import t from "../../../ui/layout/flex-view.js";
|
5
|
+
import l from "../../../ui/text/text.js";
|
6
|
+
const b = r(t)(({
|
7
|
+
$showOutline: o,
|
8
|
+
theme: e,
|
9
|
+
$disabled: n
|
10
|
+
}) => {
|
11
|
+
const { BLACK_1: s, BLACK: a, BLACK_T_15: i } = e.colors;
|
12
|
+
return `
|
13
|
+
cursor: ${n ? "not-allowed" : "pointer"};
|
14
|
+
${n ? "pointer-events: none;" : "pointer-events: auto;"};
|
15
|
+
position: relative;
|
16
|
+
border-image: linear-gradient(to right, ${i} 0%, ${i} 100%);
|
17
|
+
${o && `outline: 1px solid ${i};`};
|
18
|
+
|
19
|
+
.node-card-border {
|
20
|
+
position: absolute;
|
21
|
+
top: 0;
|
22
|
+
left: 0;
|
23
|
+
z-index: 2;
|
24
|
+
width: 100%;
|
25
|
+
height: 100%;
|
26
|
+
pointer-events: none;
|
27
|
+
background: transparent;
|
28
|
+
}
|
29
|
+
|
30
|
+
.node-card-border > .border-path {
|
31
|
+
fill: none;
|
32
|
+
stroke: ${i};
|
33
|
+
stroke-width: 1.5;
|
34
|
+
}
|
35
|
+
|
36
|
+
.node-card-border > .border-path-animation {
|
37
|
+
fill: none;
|
38
|
+
stroke: ${a};
|
39
|
+
stroke-width: 1.5;
|
40
|
+
//* view box size 170 + 56 + 170 + 56 = 452
|
41
|
+
//* 452 / 2 = 226
|
42
|
+
stroke-dasharray: 226 226;
|
43
|
+
stroke-dashoffset: 0;
|
44
|
+
|
45
|
+
animation: dashmove 6s linear infinite;
|
46
|
+
}
|
47
|
+
|
48
|
+
@keyframes dashmove {
|
49
|
+
to {
|
50
|
+
stroke-dashoffset: -900;
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
&:hover {
|
55
|
+
${!n && `
|
56
|
+
.node-card-border > .border-path-animation {
|
57
|
+
stroke: ${s};
|
58
|
+
stroke-dasharray: 452;
|
59
|
+
animation: none;
|
60
|
+
}
|
61
|
+
`}
|
62
|
+
|
63
|
+
${o && `outline: 1px solid ${a};`};
|
64
|
+
}
|
65
|
+
`;
|
66
|
+
}), f = r(p)(({ theme: o }) => {
|
67
|
+
const { layout: e } = o;
|
68
|
+
return `
|
69
|
+
width: ${e.gutter * 0.75}px;
|
70
|
+
height: ${e.gutter * 0.75}px;
|
71
|
+
position: absolute;
|
72
|
+
top: -2.5px;
|
73
|
+
right: -2.5px;
|
74
|
+
`;
|
75
|
+
}), g = r(t)(({ $bgImage: o }) => `
|
76
|
+
background-image: url(${o});
|
77
|
+
|
78
|
+
& .context-menu {
|
79
|
+
justify-self: flex-end;
|
80
|
+
margin-left: auto;
|
81
|
+
}
|
82
|
+
`), k = r(t)`
|
83
|
+
border-radius: 50%;
|
84
|
+
`, $ = r(t)(() => `
|
85
|
+
padding: 12px 8px 12px 12px;
|
86
|
+
`), v = r(t)(({ $top: o, $right: e }) => `
|
87
|
+
position: absolute;
|
88
|
+
top: ${o ?? 0}px;
|
89
|
+
right: ${e ?? 0}px;
|
90
|
+
z-index: 3;
|
91
|
+
`);
|
92
|
+
r(d)(({}) => `
|
93
|
+
width: 28px;
|
94
|
+
height: 28px;
|
95
|
+
`);
|
96
|
+
const w = r(t)(({ theme: o }) => {
|
97
|
+
const { BLACK_1: e, WHITE_1: n } = o.colors;
|
98
|
+
return `
|
99
|
+
position: absolute;
|
100
|
+
top: -10px;
|
101
|
+
left: -10px;
|
102
|
+
border-radius: 50%;
|
103
|
+
background: ${e};
|
104
|
+
|
105
|
+
path {
|
106
|
+
fill: ${n};
|
107
|
+
}
|
108
|
+
`;
|
109
|
+
}), I = r(l)(() => `
|
110
|
+
display: -webkit-box;
|
111
|
+
-webkit-box-orient: vertical;
|
112
|
+
-webkit-line-clamp: 2;
|
113
|
+
text-overflow: ellipsis;
|
114
|
+
overflow: hidden;
|
115
|
+
`), C = r(t)(({ theme: o }) => `
|
116
|
+
cursor: pointer;
|
117
|
+
|
118
|
+
&:hover {
|
119
|
+
border-radius: 50%;
|
120
|
+
background: ${o.colors.WHITE_5};
|
121
|
+
}
|
122
|
+
`);
|
123
|
+
export {
|
124
|
+
k as IconWrapper,
|
125
|
+
w as InProgressIconWrapper,
|
126
|
+
b as NodeCardContainer,
|
127
|
+
$ as NodeCardContentWrapper,
|
128
|
+
g as NodeCardInfoWrapper,
|
129
|
+
I as NodeCardTitle,
|
130
|
+
C as NodeOptionsMenuWrapper,
|
131
|
+
v as SheetTagWrapper,
|
132
|
+
f as StyledImportantIcon
|
133
|
+
};
|
134
|
+
//# sourceMappingURL=node-card-styled.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"node-card-styled.js","sources":["../../../../../src/features/chapters-v2/comps/node-card/node-card-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport ImportantIcon from '../../../../assets/line-icons/icons/important';\nimport Lock2Icon from '../../../../assets/line-icons/icons/lock2';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\n\ninterface INodeCardContainer {\n $showOutline?: boolean;\n $disabled: boolean;\n}\n\nconst NodeCardContainer = styled(FlexView)<INodeCardContainer>(({\n $showOutline,\n theme,\n $disabled,\n}) => {\n const { BLACK_1, BLACK, BLACK_T_15 } = theme.colors;\n\n return `\n cursor: ${$disabled ? 'not-allowed' : 'pointer'};\n ${$disabled ? 'pointer-events: none;' : 'pointer-events: auto;'};\n position: relative;\n border-image: linear-gradient(to right, ${BLACK_T_15} 0%, ${BLACK_T_15} 100%);\n ${$showOutline && `outline: 1px solid ${BLACK_T_15};`};\n\n .node-card-border {\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n width: 100%;\n height: 100%;\n pointer-events: none;\n background: transparent;\n }\n\n .node-card-border > .border-path {\n fill: none;\n stroke: ${BLACK_T_15};\n stroke-width: 1.5;\n }\n\n .node-card-border > .border-path-animation {\n fill: none;\n stroke: ${BLACK};\n stroke-width: 1.5;\n //* view box size 170 + 56 + 170 + 56 = 452\n //* 452 / 2 = 226\n stroke-dasharray: 226 226;\n stroke-dashoffset: 0;\n\n animation: dashmove 6s linear infinite;\n }\n \n @keyframes dashmove {\n to {\n stroke-dashoffset: -900;\n }\n }\n \n &:hover {\n ${\n !$disabled &&\n `\n .node-card-border > .border-path-animation {\n stroke: ${BLACK_1};\n stroke-dasharray: 452;\n animation: none;\n }\n `\n }\n\n ${$showOutline && `outline: 1px solid ${BLACK};`};\n }\n `;\n});\n\nconst StyledImportantIcon = styled(ImportantIcon)(({ theme }) => {\n const { layout } = theme;\n\n return `\n width: ${layout.gutter * 0.75}px;\n height: ${layout.gutter * 0.75}px;\n position: absolute;\n top: -2.5px;\n right: -2.5px;\n `;\n});\n\ninterface INodeCardInfoWrapper {\n $bgImage: string;\n}\n\nconst NodeCardInfoWrapper = styled(FlexView)<INodeCardInfoWrapper>(({ $bgImage }) => {\n return `\n background-image: url(${$bgImage});\n\n & .context-menu {\n justify-self: flex-end;\n margin-left: auto;\n }\n `;\n});\n\nconst IconWrapper = styled(FlexView)`\n border-radius: 50%;\n`;\n\nconst NodeCardContentWrapper = styled(FlexView)(() => {\n return `\n padding: 12px 8px 12px 12px;\n `;\n});\n\ninterface ISheetTagWrapper {\n $top?: number;\n $right?: number;\n}\n\nconst SheetTagWrapper = styled(FlexView)<ISheetTagWrapper>(({ $top, $right }) => {\n return `\n position: absolute;\n top: ${$top ?? 0}px;\n right: ${$right ?? 0}px;\n z-index: 3;\n`;\n});\n\nconst StyledLockIcon = styled(Lock2Icon)(({}) => {\n return `\n width: 28px;\n height: 28px;\n `;\n});\n\nconst InProgressIconWrapper = styled(FlexView)(({ theme }) => {\n const { BLACK_1, WHITE_1 } = theme.colors;\n\n return `\n position: absolute;\n top: -10px;\n left: -10px;\n border-radius: 50%;\n background: ${BLACK_1};\n\n path {\n fill: ${WHITE_1};\n }\n `;\n});\n\nconst NodeCardTitle = styled(Text)(() => {\n return `\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n overflow: hidden;\n `;\n});\n\nconst NodeOptionsMenuWrapper = styled(FlexView)(({ theme }) => {\n return `\n cursor: pointer;\n \n &:hover {\n border-radius: 50%;\n background: ${theme.colors.WHITE_5}; \n }\n `;\n});\n\nexport {\n NodeCardContainer,\n StyledImportantIcon,\n NodeCardInfoWrapper,\n IconWrapper,\n NodeCardContentWrapper,\n SheetTagWrapper,\n StyledLockIcon,\n InProgressIconWrapper,\n NodeCardTitle,\n NodeOptionsMenuWrapper,\n};\n"],"names":["NodeCardContainer","styled","FlexView","$showOutline","theme","$disabled","BLACK_1","BLACK","BLACK_T_15","StyledImportantIcon","ImportantIcon","layout","NodeCardInfoWrapper","$bgImage","IconWrapper","NodeCardContentWrapper","SheetTagWrapper","$top","$right","Lock2Icon","InProgressIconWrapper","WHITE_1","NodeCardTitle","Text","NodeOptionsMenuWrapper"],"mappings":";;;;;AAYA,MAAMA,IAAoBC,EAAOC,CAAQ,EAAsB,CAAC;AAAA,EAC9D,cAAAC;AAAA,EACA,OAAAC;AAAA,EACA,WAAAC;AACF,MAAM;AACJ,QAAM,EAAE,SAAAC,GAAS,OAAAC,GAAO,YAAAC,EAAA,IAAeJ,EAAM;AAEtC,SAAA;AAAA,cACKC,IAAY,gBAAgB,SAAS;AAAA,MAC7CA,IAAY,0BAA0B,uBAAuB;AAAA;AAAA,8CAErBG,CAAU,QAAQA,CAAU;AAAA,MACpEL,KAAgB,sBAAsBK,CAAU,GAAG;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAezCA,CAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gBAMVD,CAAK;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAkBb,CAACF,KACD;AAAA;AAAA,sBAEcC,CAAO;AAAA;AAAA;AAAA;AAAA,SAKvB;AAAA;AAAA,QAEEH,KAAgB,sBAAsBI,CAAK,GAAG;AAAA;AAAA;AAGtD,CAAC,GAEKE,IAAsBR,EAAOS,CAAa,EAAE,CAAC,EAAE,OAAAN,QAAY;AACzD,QAAA,EAAE,QAAAO,EAAW,IAAAP;AAEZ,SAAA;AAAA,aACIO,EAAO,SAAS,IAAI;AAAA,cACnBA,EAAO,SAAS,IAAI;AAAA;AAAA;AAAA;AAAA;AAKlC,CAAC,GAMKC,IAAsBX,EAAOC,CAAQ,EAAwB,CAAC,EAAE,UAAAW,QAC7D;AAAA,4BACmBA,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOnC,GAEKC,IAAcb,EAAOC,CAAQ;AAAA;AAAA,GAI7Ba,IAAyBd,EAAOC,CAAQ,EAAE,MACvC;AAAA;AAAA,GAGR,GAOKc,IAAkBf,EAAOC,CAAQ,EAAoB,CAAC,EAAE,MAAAe,GAAM,QAAAC,QAC3D;AAAA;AAAA,SAEAD,KAAQ,CAAC;AAAA,WACPC,KAAU,CAAC;AAAA;AAAA,CAGrB;AAEsBjB,EAAOkB,CAAS,EAAE,CAAC,OACjC;AAAA;AAAA;AAAA,GAIR;AAED,MAAMC,IAAwBnB,EAAOC,CAAQ,EAAE,CAAC,EAAE,OAAAE,QAAY;AAC5D,QAAM,EAAE,SAAAE,GAAS,SAAAe,MAAYjB,EAAM;AAE5B,SAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAKSE,CAAO;AAAA;AAAA;AAAA,cAGXe,CAAO;AAAA;AAAA;AAGrB,CAAC,GAEKC,IAAgBrB,EAAOsB,CAAI,EAAE,MAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAOR,GAEKC,IAAyBvB,EAAOC,CAAQ,EAAE,CAAC,EAAE,OAAAE,QAC1C;AAAA;AAAA;AAAA;AAAA;AAAA,oBAKWA,EAAM,OAAO,OAAO;AAAA;AAAA,GAGvC;"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { jsx as m } from "react/jsx-runtime";
|
2
|
+
import { memo as s } from "react";
|
3
|
+
import { getNodeStateBasedTagInfo as d } from "../../utils/node-card-utils.js";
|
4
|
+
import { SheetTagWrapper as p } from "./node-card-styled.js";
|
5
|
+
const T = s((o) => {
|
6
|
+
const { state: t, accuracy: e, nodeType: r } = o, a = r === "DYNAMIC" ? e : void 0, { icon: c, top: i, right: n } = d(t, a);
|
7
|
+
return /* @__PURE__ */ m(p, { $top: i, $right: n, children: c });
|
8
|
+
});
|
9
|
+
export {
|
10
|
+
T as default
|
11
|
+
};
|
12
|
+
//# sourceMappingURL=node-card-tags.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"node-card-tags.js","sources":["../../../../../src/features/chapters-v2/comps/node-card/node-card-tags.tsx"],"sourcesContent":["import type { INodeCardTagsProps } from './node-card-types';\nimport type { FC } from 'react';\n\nimport { memo } from 'react';\n\nimport { getNodeStateBasedTagInfo } from '../../utils/node-card-utils';\nimport * as Styled from './node-card-styled';\n\nconst NodeCardTags: FC<INodeCardTagsProps> = memo(props => {\n const { state, accuracy, nodeType } = props;\n\n const isDynamicNode = nodeType === 'DYNAMIC';\n const accuracyValue = isDynamicNode ? accuracy : undefined;\n\n const { icon: NodeTagIcon, top, right } = getNodeStateBasedTagInfo(state, accuracyValue);\n\n return (\n <Styled.SheetTagWrapper $top={top} $right={right}>\n {NodeTagIcon}\n </Styled.SheetTagWrapper>\n );\n});\n\nexport default NodeCardTags;\n"],"names":["NodeCardTags","memo","props","state","accuracy","nodeType","accuracyValue","NodeTagIcon","top","right","getNodeStateBasedTagInfo","jsx","Styled.SheetTagWrapper"],"mappings":";;;;AAQM,MAAAA,IAAuCC,EAAK,CAASC,MAAA;AACzD,QAAM,EAAE,OAAAC,GAAO,UAAAC,GAAU,UAAAC,EAAA,IAAaH,GAGhCI,IADgBD,MAAa,YACGD,IAAW,QAE3C,EAAE,MAAMG,GAAa,KAAAC,GAAK,OAAAC,MAAUC,EAAyBP,GAAOG,CAAa;AAGrF,SAAA,gBAAAK,EAACC,GAAA,EAAuB,MAAMJ,GAAK,QAAQC,GACxC,UACHF,EAAA,CAAA;AAEJ,CAAC;"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
2
|
+
import { memo as e } from "react";
|
3
|
+
import m from "./student-actions/student-actions.js";
|
4
|
+
import n from "./teacher-actions/teacher-actions.js";
|
5
|
+
const f = e((t) => {
|
6
|
+
const { userType: r } = t;
|
7
|
+
return r === "STUDENT" ? /* @__PURE__ */ o(m, { ...t }) : /* @__PURE__ */ o(n, { ...t });
|
8
|
+
});
|
9
|
+
export {
|
10
|
+
f as default
|
11
|
+
};
|
12
|
+
//# sourceMappingURL=node-card.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"node-card.js","sources":["../../../../../src/features/chapters-v2/comps/node-card/node-card.tsx"],"sourcesContent":["import type { INodeCardProps } from './node-card-types';\nimport type { FC } from 'react';\n\nimport { memo } from 'react';\n\nimport StudentActions from './student-actions/student-actions';\nimport NodeCardTeacherActions from './teacher-actions/teacher-actions';\n\nconst NodeCard: FC<INodeCardProps> = memo(props => {\n const { userType } = props;\n const isStudent = userType === 'STUDENT';\n\n if (isStudent) {\n return <StudentActions {...props} />;\n }\n\n return <NodeCardTeacherActions {...props} />;\n});\n\nexport default NodeCard;\n"],"names":["NodeCard","memo","props","userType","jsx","StudentActions","NodeCardTeacherActions"],"mappings":";;;;AAQM,MAAAA,IAA+BC,EAAK,CAASC,MAAA;AAC3C,QAAA,EAAE,UAAAC,EAAa,IAAAD;AAGrB,SAFkBC,MAAa,YAGtB,gBAAAC,EAACC,GAAgB,EAAA,GAAGH,EAAO,CAAA,IAG7B,gBAAAE,EAACE,GAAwB,EAAA,GAAGJ,EAAO,CAAA;AAC5C,CAAC;"}
|
package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options-styled.js
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
import o from "styled-components";
|
2
|
+
import t from "../../../../ui/layout/flex-view.js";
|
3
|
+
import i from "../../../../ui/text/text.js";
|
4
|
+
const s = o(t)(({}) => `
|
5
|
+
box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.40);
|
6
|
+
width: 180px;
|
7
|
+
position: relative;
|
8
|
+
left: 0;
|
9
|
+
top: 0;
|
10
|
+
`), x = o(t)(({ theme: r, $disabled: e }) => `
|
11
|
+
cursor: ${e ? "not-allowed" : "pointer"};
|
12
|
+
|
13
|
+
&:hover {
|
14
|
+
background: ${r.colors.BLACK};
|
15
|
+
};
|
16
|
+
|
17
|
+
path {
|
18
|
+
fill: ${r.colors.WHITE_1};
|
19
|
+
}
|
20
|
+
`);
|
21
|
+
o(i)(() => `
|
22
|
+
display: -webkit-box;
|
23
|
+
-webkit-box-orient: vertical;
|
24
|
+
-webkit-line-clamp: 2;
|
25
|
+
text-overflow: ellipsis;
|
26
|
+
overflow: hidden;
|
27
|
+
`);
|
28
|
+
export {
|
29
|
+
x as NodeOptionWrapper,
|
30
|
+
s as NodeOptions
|
31
|
+
};
|
32
|
+
//# sourceMappingURL=node-menu-options-styled.js.map
|
package/dist/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options-styled.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"node-menu-options-styled.js","sources":["../../../../../../src/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../../ui/layout/flex-view';\nimport Text from '../../../../ui/text/text';\n\nconst NodeOptions = styled(FlexView)(({}) => {\n return `\n box-shadow: 0px 6px 12px 0px rgba(0, 0, 0, 0.40);\n width: 180px;\n position: relative;\n left: 0;\n top: 0;\n `;\n});\n\ninterface INodeOptionWrapper {\n $disabled?: boolean;\n}\n\nconst NodeOptionWrapper = styled(FlexView)<INodeOptionWrapper>(({ theme, $disabled }) => {\n return `\n cursor: ${$disabled ? 'not-allowed' : 'pointer'};\n\n &:hover {\n background: ${theme.colors.BLACK};\n };\n\n path {\n fill: ${theme.colors.WHITE_1};\n }\n `;\n});\n\nconst NodeOptionText = styled(Text)(() => {\n return `\n display: -webkit-box;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n overflow: hidden;\n `;\n});\n\nexport { NodeOptions, NodeOptionWrapper, NodeOptionText };\n"],"names":["NodeOptions","styled","FlexView","NodeOptionWrapper","theme","$disabled","Text"],"mappings":";;;AAKA,MAAMA,IAAcC,EAAOC,CAAQ,EAAE,CAAC,CAAA,MAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOR,GAMKC,IAAoBF,EAAOC,CAAQ,EAAsB,CAAC,EAAE,OAAAE,GAAO,WAAAC,QAChE;AAAA,kBACSA,IAAY,gBAAgB,SAAS;AAAA;AAAA;AAAA,0BAG7BD,EAAM,OAAO,KAAK;AAAA;AAAA;AAAA;AAAA,oBAIxBA,EAAM,OAAO,OAAO;AAAA;AAAA,KAGvC;AAEsBH,EAAOK,CAAI,EAAE,MAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAOR;"}
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import { jsx as e, jsxs as p } from "react/jsx-runtime";
|
2
|
+
import { memo as c } from "react";
|
3
|
+
import a from "../../../../ui/text/text.js";
|
4
|
+
import { NodeOptions as m, NodeOptionWrapper as $ } from "./node-menu-options-styled.js";
|
5
|
+
const h = c(({ options: o }) => o.length === 0 ? null : /* @__PURE__ */ e(m, { $background: "BLACK_2", $borderColor: "WHITE_T_38", $gapX: 0.5, children: o.map((t) => {
|
6
|
+
const { icon: n, label: l, id: i, disabled: r, onClick: d } = t;
|
7
|
+
return /* @__PURE__ */ p(
|
8
|
+
$,
|
9
|
+
{
|
10
|
+
$flexDirection: "row",
|
11
|
+
$alignItems: "center",
|
12
|
+
$flexGap: 8,
|
13
|
+
$gapX: 0.5,
|
14
|
+
$gutterX: 1,
|
15
|
+
$opacity: r ? 0.5 : 1,
|
16
|
+
$disabled: r,
|
17
|
+
onClick: () => {
|
18
|
+
r || d(i);
|
19
|
+
},
|
20
|
+
children: [
|
21
|
+
/* @__PURE__ */ e(n, { width: 20, height: 20 }),
|
22
|
+
/* @__PURE__ */ e(a, { $renderAs: "ub3", $color: "WHITE", children: l })
|
23
|
+
]
|
24
|
+
},
|
25
|
+
i
|
26
|
+
);
|
27
|
+
}) }));
|
28
|
+
export {
|
29
|
+
h as default
|
30
|
+
};
|
31
|
+
//# sourceMappingURL=node-menu-options.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"node-menu-options.js","sources":["../../../../../../src/features/chapters-v2/comps/node-card/node-menu-options/node-menu-options.tsx"],"sourcesContent":["import type { INodeMenuOptions } from './node-menu-options-types';\nimport type { FC } from 'react';\n\nimport { memo } from 'react';\n\nimport Text from '../../../../ui/text/text';\nimport * as Styled from './node-menu-options-styled';\n\nconst NodeMenuOptions: FC<INodeMenuOptions> = memo(({ options }) => {\n if (options.length === 0) return null;\n\n return (\n <Styled.NodeOptions $background=\"BLACK_2\" $borderColor=\"WHITE_T_38\" $gapX={0.5}>\n {options.map(optionInfo => {\n const { icon: OptionIcon, label, id, disabled, onClick } = optionInfo;\n\n return (\n <Styled.NodeOptionWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $flexGap={8}\n $gapX={0.5}\n $gutterX={1}\n $opacity={disabled ? 0.5 : 1}\n $disabled={disabled}\n key={id}\n onClick={() => {\n if (!disabled) {\n onClick(id);\n }\n }}\n >\n <OptionIcon width={20} height={20} />\n\n <Text $renderAs=\"ub3\" $color=\"WHITE\">\n {label}\n </Text>\n </Styled.NodeOptionWrapper>\n );\n })}\n </Styled.NodeOptions>\n );\n});\n\nexport default NodeMenuOptions;\n"],"names":["NodeMenuOptions","memo","options","jsx","Styled.NodeOptions","optionInfo","OptionIcon","label","id","disabled","onClick","jsxs","Styled.NodeOptionWrapper","Text"],"mappings":";;;;AAQA,MAAMA,IAAwCC,EAAK,CAAC,EAAE,SAAAC,QAChDA,EAAQ,WAAW,IAAU,OAG9B,gBAAAC,EAAAC,GAAA,EAAmB,aAAY,WAAU,cAAa,cAAa,OAAO,KACxE,UAAQF,EAAA,IAAI,CAAcG,MAAA;AACzB,QAAM,EAAE,MAAMC,GAAY,OAAAC,GAAO,IAAAC,GAAI,UAAAC,GAAU,SAAAC,EAAY,IAAAL;AAGzD,SAAA,gBAAAM;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,gBAAe;AAAA,MACf,aAAY;AAAA,MACZ,UAAU;AAAA,MACV,OAAO;AAAA,MACP,UAAU;AAAA,MACV,UAAUH,IAAW,MAAM;AAAA,MAC3B,WAAWA;AAAA,MAEX,SAAS,MAAM;AACb,QAAKA,KACHC,EAAQF,CAAE;AAAA,MAEd;AAAA,MAEA,UAAA;AAAA,QAAA,gBAAAL,EAACG,GAAW,EAAA,OAAO,IAAI,QAAQ,IAAI;AAAA,0BAElCO,GAAK,EAAA,WAAU,OAAM,QAAO,SAC1B,UACHN,GAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAXKC;AAAA,EAAA;AAcV,CAAA,EACH,CAAA,CAEH;"}
|
@@ -0,0 +1,154 @@
|
|
1
|
+
import { jsx as e, jsxs as i, Fragment as H } from "react/jsx-runtime";
|
2
|
+
import { memo as D } from "react";
|
3
|
+
import G from "../../../../../assets/line-icons/icons/eye2.js";
|
4
|
+
import X from "../../../../../assets/line-icons/icons/redo.js";
|
5
|
+
import j from "../../../../ui/arrow-tooltip/arrow-tooltip.js";
|
6
|
+
import K from "../../../../ui/context-menu/context-menu.js";
|
7
|
+
import M from "../../../../ui/text/text.js";
|
8
|
+
import { getNodeTypeBasedBgImage as P } from "../../../utils/index.js";
|
9
|
+
import { getNodeCardBasedIcon as z } from "../../../utils/node-card-utils.js";
|
10
|
+
import F from "../border-path-animation.js";
|
11
|
+
import { NodeCardContainer as Z, NodeCardInfoWrapper as q, IconWrapper as J, StyledImportantIcon as Q, NodeCardContentWrapper as U, NodeCardTitle as Y } from "../node-card-styled.js";
|
12
|
+
import V from "../node-card-tags.js";
|
13
|
+
import ee from "../node-menu-options/node-menu-options.js";
|
14
|
+
const ue = D((_) => {
|
15
|
+
const {
|
16
|
+
nodeData: t,
|
17
|
+
imageHue: b,
|
18
|
+
blockType: k,
|
19
|
+
onNodeAttempt: r,
|
20
|
+
onNodeReattempt: c,
|
21
|
+
onNodeReview: d,
|
22
|
+
onNodeView: o
|
23
|
+
} = _, {
|
24
|
+
accuracy: O,
|
25
|
+
attempt_location: T,
|
26
|
+
node_type: s,
|
27
|
+
card_header: w,
|
28
|
+
title: x,
|
29
|
+
state: n,
|
30
|
+
is_optional: m,
|
31
|
+
on_hover_text: p,
|
32
|
+
permissions: y
|
33
|
+
} = t, {
|
34
|
+
can_review: h,
|
35
|
+
can_reattempt: u,
|
36
|
+
can_start: S,
|
37
|
+
can_resume: v
|
38
|
+
} = y, A = n === "IN_PROGRESS", a = n === "LOCKED", E = n === "NOT_STARTED", B = T === "INCLASS", L = P(s), f = z(s), l = k === "GOAL", W = !p || !l, $ = !m && (A || E), C = u || h, g = (I) => {
|
39
|
+
switch (I) {
|
40
|
+
case "node-card-review":
|
41
|
+
d == null || d(t);
|
42
|
+
return;
|
43
|
+
case "node-card-reattempt":
|
44
|
+
c == null || c(t);
|
45
|
+
return;
|
46
|
+
case "node-card-view":
|
47
|
+
o == null || o(t);
|
48
|
+
return;
|
49
|
+
case "node-card-start":
|
50
|
+
case "node-card-resume":
|
51
|
+
r == null || r(t);
|
52
|
+
return;
|
53
|
+
default:
|
54
|
+
throw new Error(`No callback function for ${I}`);
|
55
|
+
}
|
56
|
+
}, N = [
|
57
|
+
{
|
58
|
+
id: "node-card-review",
|
59
|
+
label: "Review",
|
60
|
+
icon: G,
|
61
|
+
disabled: !h,
|
62
|
+
onClick: g
|
63
|
+
},
|
64
|
+
{
|
65
|
+
id: "node-card-reattempt",
|
66
|
+
label: "Reattempt",
|
67
|
+
icon: X,
|
68
|
+
disabled: !u,
|
69
|
+
onClick: g
|
70
|
+
}
|
71
|
+
], R = () => C || a ? null : S || v ? (r == null || r(t), null) : (o == null || o(t), null);
|
72
|
+
return /* @__PURE__ */ e(
|
73
|
+
K,
|
74
|
+
{
|
75
|
+
targetElement: /* @__PURE__ */ e(
|
76
|
+
Z,
|
77
|
+
{
|
78
|
+
$showOutline: !l || !$,
|
79
|
+
$background: `${b}_2`,
|
80
|
+
$disabled: a,
|
81
|
+
onClick: R,
|
82
|
+
children: /* @__PURE__ */ i(
|
83
|
+
j,
|
84
|
+
{
|
85
|
+
renderAs: "primary",
|
86
|
+
tooltipItem: p,
|
87
|
+
position: "bottom",
|
88
|
+
zIndex: 5,
|
89
|
+
hidden: W,
|
90
|
+
parentWidth: "100%",
|
91
|
+
widthX: 11.25,
|
92
|
+
children: [
|
93
|
+
/* @__PURE__ */ i(
|
94
|
+
q,
|
95
|
+
{
|
96
|
+
$flexDirection: "row",
|
97
|
+
$alignItems: "center",
|
98
|
+
$heightX: 3.5,
|
99
|
+
$bgImage: L,
|
100
|
+
$gutterX: 0.78125,
|
101
|
+
$flexGap: 8.5,
|
102
|
+
$opacity: a ? 0.5 : 1,
|
103
|
+
children: [
|
104
|
+
/* @__PURE__ */ i(
|
105
|
+
J,
|
106
|
+
{
|
107
|
+
$width: 31,
|
108
|
+
$height: 31,
|
109
|
+
$background: "WHITE_1",
|
110
|
+
$position: "relative",
|
111
|
+
$alignItems: "center",
|
112
|
+
$justifyContent: "center",
|
113
|
+
children: [
|
114
|
+
f && /* @__PURE__ */ e(f, { width: 20, height: 20 }),
|
115
|
+
!m && /* @__PURE__ */ e(Q, {})
|
116
|
+
]
|
117
|
+
}
|
118
|
+
),
|
119
|
+
/* @__PURE__ */ i(M, { $renderAs: "ac4-black", $color: "BLACK", children: [
|
120
|
+
w,
|
121
|
+
" ",
|
122
|
+
B && ". CW"
|
123
|
+
] }),
|
124
|
+
$ && /* @__PURE__ */ e(F, {})
|
125
|
+
]
|
126
|
+
}
|
127
|
+
),
|
128
|
+
/* @__PURE__ */ e(V, { nodeType: s, state: n, accuracy: O }),
|
129
|
+
!l && /* @__PURE__ */ e(U, { $background: "WHITE_1", $heightX: 4, children: /* @__PURE__ */ e(
|
130
|
+
Y,
|
131
|
+
{
|
132
|
+
$renderAs: "ab3",
|
133
|
+
$color: "BLACK_1",
|
134
|
+
$opacity: a ? 0.5 : 1,
|
135
|
+
children: x
|
136
|
+
}
|
137
|
+
) })
|
138
|
+
]
|
139
|
+
}
|
140
|
+
)
|
141
|
+
}
|
142
|
+
),
|
143
|
+
startLeft: !0,
|
144
|
+
menuWidth: "100%",
|
145
|
+
menuZIndex: 6,
|
146
|
+
menuOffset: 2,
|
147
|
+
menuElement: /* @__PURE__ */ e(H, { children: C ? /* @__PURE__ */ e(ee, { options: N }) : void 0 })
|
148
|
+
}
|
149
|
+
);
|
150
|
+
});
|
151
|
+
export {
|
152
|
+
ue as default
|
153
|
+
};
|
154
|
+
//# sourceMappingURL=student-actions.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"student-actions.js","sources":["../../../../../../src/features/chapters-v2/comps/node-card/student-actions/student-actions.tsx"],"sourcesContent":["import type { INodeCardProps } from '../node-card-types';\nimport type { INodeMenuOption } from '../node-menu-options/node-menu-options-types';\n\nimport { memo, 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 Text from '../../../../ui/text/text';\nimport { getNodeTypeBasedBgImage } from '../../../utils';\nimport { getNodeCardBasedIcon } from '../../../utils/node-card-utils';\nimport BorderPathAnimation from '../border-path-animation';\nimport * as Styled from '../node-card-styled';\nimport NodeCardTags from '../node-card-tags';\nimport NodeMenuOptions from '../node-menu-options/node-menu-options';\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 } = 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 on_hover_text: onHoverText,\n permissions,\n } = nodeData;\n\n const {\n can_review: canReview,\n can_reattempt: canReattempt,\n can_start: canStart,\n can_resume: canResume,\n } = permissions;\n\n const sheetInProgress = state === 'IN_PROGRESS';\n const sheetLocked = state === 'LOCKED';\n const sheetNotStarted = state === 'NOT_STARTED';\n const inClassSheet = attemptLocation === 'INCLASS';\n const nodeBgImage = getNodeTypeBasedBgImage(nodeType);\n const NodeCardIcon = getNodeCardBasedIcon(nodeType);\n const isGoalBlock = blockType === 'GOAL';\n const tooltipHidden = !onHoverText || !isGoalBlock;\n\n const showCardAnimation = !isOptional && (sheetInProgress || sheetNotStarted);\n const renderOptions = canReattempt || canReview;\n\n const handleOnMenuOptionClick = (optionId: string) => {\n switch (optionId) {\n case 'node-card-review':\n onNodeReview?.(nodeData);\n\n return;\n\n case 'node-card-reattempt':\n onNodeReattempt?.(nodeData);\n\n return;\n\n case 'node-card-view':\n onNodeView?.(nodeData);\n\n return;\n\n case 'node-card-start':\n case 'node-card-resume':\n onNodeAttempt?.(nodeData);\n\n return;\n default:\n throw new Error(`No callback function for ${optionId}`);\n }\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: !canReattempt,\n onClick: handleOnMenuOptionClick,\n },\n ];\n\n const handleOnNodeCardClick = () => {\n if (renderOptions || sheetLocked) return null;\n\n if (canStart || canResume) {\n onNodeAttempt?.(nodeData);\n\n return null;\n }\n\n onNodeView?.(nodeData);\n\n return null;\n };\n\n return (\n <ContextMenu\n targetElement={\n <Styled.NodeCardContainer\n $showOutline={!isGoalBlock || !showCardAnimation}\n $background={`${imageHue}_2`}\n $disabled={sheetLocked}\n onClick={handleOnNodeCardClick}\n >\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem={onHoverText}\n position=\"bottom\"\n zIndex={5}\n hidden={tooltipHidden}\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 >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n {NodeCardIcon && <NodeCardIcon width={20} height={20} />}\n {!isOptional && <Styled.StyledImportantIcon />}\n </Styled.IconWrapper>\n\n <Text $renderAs=\"ac4-black\" $color=\"BLACK\">\n {cardHeader} {inClassSheet && `. CW`}\n </Text>\n\n {showCardAnimation && <BorderPathAnimation />}\n </Styled.NodeCardInfoWrapper>\n\n <NodeCardTags nodeType={nodeType} state={state} accuracy={accuracy} />\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} /> : undefined}</>}\n />\n );\n});\n\nexport default StudentActions;\n"],"names":["StudentActions","memo","props","nodeData","imageHue","blockType","onNodeAttempt","onNodeReattempt","onNodeReview","onNodeView","accuracy","attemptLocation","nodeType","cardHeader","title","state","isOptional","onHoverText","permissions","canReview","canReattempt","canStart","canResume","sheetInProgress","sheetLocked","sheetNotStarted","inClassSheet","nodeBgImage","getNodeTypeBasedBgImage","NodeCardIcon","getNodeCardBasedIcon","isGoalBlock","tooltipHidden","showCardAnimation","renderOptions","handleOnMenuOptionClick","optionId","menuOptions","Eye2Icon","RedoIcon","handleOnNodeCardClick","jsx","ContextMenu","Styled.NodeCardContainer","jsxs","ArrowTooltip","Styled.NodeCardInfoWrapper","Styled.IconWrapper","Styled.StyledImportantIcon","Text","BorderPathAnimation","NodeCardTags","Styled.NodeCardContentWrapper","Styled.NodeCardTitle","NodeMenuOptions"],"mappings":"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"}
|