@cuemath/leap 3.0.22 → 3.0.23

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.
Files changed (24) hide show
  1. package/dist/assets/line-icons/icons/lock3.js +34 -0
  2. package/dist/assets/line-icons/icons/lock3.js.map +1 -0
  3. package/dist/assets/line-icons/icons/unlock2.js +34 -0
  4. package/dist/assets/line-icons/icons/unlock2.js.map +1 -0
  5. package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js +26 -22
  6. package/dist/features/chapters-v2/chapter-details/block-sections/block-section-view.js.map +1 -1
  7. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +31 -55
  8. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +1 -1
  9. package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner.js +1 -1
  10. package/dist/features/chapters-v2/chapter-details/chapter-banner/chapter-banner.js.map +1 -1
  11. package/dist/features/chapters-v2/chapter-details/chapter-details.js +58 -54
  12. package/dist/features/chapters-v2/chapter-details/chapter-details.js.map +1 -1
  13. package/dist/features/chapters-v2/comps/node-card/node-card-styled.js +1 -0
  14. package/dist/features/chapters-v2/comps/node-card/node-card-styled.js.map +1 -1
  15. package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js +128 -107
  16. package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js.map +1 -1
  17. package/dist/features/chapters-v2/constants/node-constants.js +3 -1
  18. package/dist/features/chapters-v2/constants/node-constants.js.map +1 -1
  19. package/dist/features/worksheet/worksheet-preview/api/get-preview-worksheet.js +17 -10
  20. package/dist/features/worksheet/worksheet-preview/api/get-preview-worksheet.js.map +1 -1
  21. package/dist/index.d.ts +6 -0
  22. package/dist/index.js +475 -471
  23. package/dist/index.js.map +1 -1
  24. package/package.json +1 -1
@@ -0,0 +1,34 @@
1
+ import { jsxs as l, jsx as C } from "react/jsx-runtime";
2
+ const e = (o) => /* @__PURE__ */ l(
3
+ "svg",
4
+ {
5
+ xmlns: "http://www.w3.org/2000/svg",
6
+ width: "24",
7
+ height: "24",
8
+ viewBox: "0 0 24 24",
9
+ fill: "none",
10
+ ...o,
11
+ children: [
12
+ /* @__PURE__ */ C(
13
+ "path",
14
+ {
15
+ fillRule: "evenodd",
16
+ clipRule: "evenodd",
17
+ d: "M8.64994 8.33272C8.64994 6.48233 10.15 4.9823 12.0004 4.9823C13.8507 4.9823 15.3508 6.48233 15.3508 8.33272V9.8775C16.4716 10.8276 17.1845 12.2474 17.1845 13.8336C17.1845 16.6966 14.8635 19.0176 12.0004 19.0176C9.13738 19.0176 6.81641 16.6966 6.81641 13.8336C6.81641 12.2475 7.52924 10.8278 8.64994 9.87765V8.33272ZM9.84994 9.1154C10.5053 8.81626 11.2338 8.64952 12.0004 8.64952C12.7671 8.64952 13.4955 8.81624 14.1508 9.11532V8.33272C14.1508 7.14508 13.188 6.1823 12.0004 6.1823C10.8127 6.1823 9.84994 7.14508 9.84994 8.33272V9.1154ZM12.0004 9.84952C11.1028 9.84952 10.2761 10.1456 9.61029 10.6458C8.6413 11.3737 8.01641 12.5305 8.01641 13.8336C8.01641 16.0339 9.80012 17.8176 12.0004 17.8176C14.2008 17.8176 15.9845 16.0339 15.9845 13.8336C15.9845 12.5305 15.3595 11.3735 14.3904 10.6457C13.7247 10.1456 12.898 9.84952 12.0004 9.84952Z",
18
+ fill: "currentColor"
19
+ }
20
+ ),
21
+ /* @__PURE__ */ C(
22
+ "path",
23
+ {
24
+ d: "M12.0002 13C11.4478 13 11 13.4478 11 14.0002C11 14.3494 11.179 14.6568 11.4502 14.8357V16H12.5504V14.8356C12.8215 14.6567 13.0004 14.3493 13.0004 14.0002C13.0004 13.4478 12.5526 13 12.0002 13Z",
25
+ fill: "currentColor"
26
+ }
27
+ )
28
+ ]
29
+ }
30
+ ), n = e;
31
+ export {
32
+ n as default
33
+ };
34
+ //# sourceMappingURL=lock3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lock3.js","sources":["../../../../src/assets/line-icons/icons/lock3.tsx"],"sourcesContent":["const Lock3Icon: React.FC<React.SVGProps<SVGSVGElement>> = props => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n {...props}\n >\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M8.64994 8.33272C8.64994 6.48233 10.15 4.9823 12.0004 4.9823C13.8507 4.9823 15.3508 6.48233 15.3508 8.33272V9.8775C16.4716 10.8276 17.1845 12.2474 17.1845 13.8336C17.1845 16.6966 14.8635 19.0176 12.0004 19.0176C9.13738 19.0176 6.81641 16.6966 6.81641 13.8336C6.81641 12.2475 7.52924 10.8278 8.64994 9.87765V8.33272ZM9.84994 9.1154C10.5053 8.81626 11.2338 8.64952 12.0004 8.64952C12.7671 8.64952 13.4955 8.81624 14.1508 9.11532V8.33272C14.1508 7.14508 13.188 6.1823 12.0004 6.1823C10.8127 6.1823 9.84994 7.14508 9.84994 8.33272V9.1154ZM12.0004 9.84952C11.1028 9.84952 10.2761 10.1456 9.61029 10.6458C8.6413 11.3737 8.01641 12.5305 8.01641 13.8336C8.01641 16.0339 9.80012 17.8176 12.0004 17.8176C14.2008 17.8176 15.9845 16.0339 15.9845 13.8336C15.9845 12.5305 15.3595 11.3735 14.3904 10.6457C13.7247 10.1456 12.898 9.84952 12.0004 9.84952Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M12.0002 13C11.4478 13 11 13.4478 11 14.0002C11 14.3494 11.179 14.6568 11.4502 14.8357V16H12.5504V14.8356C12.8215 14.6567 13.0004 14.3493 13.0004 14.0002C13.0004 13.4478 12.5526 13 12.0002 13Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nexport default Lock3Icon;\n"],"names":["Lock3Icon","props","jsxs","jsx","Lock3Icon$1"],"mappings":";AAAA,MAAMA,IAAqD,CAASC,MAEhE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACJ,GAAGD;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,UAAS;AAAA,UACT,GAAE;AAAA,UACF,MAAK;AAAA,QAAA;AAAA,MACP;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA,QAAA;AAAA,MACP;AAAA,IAAA;AAAA,EAAA;AAAA,GAKNC,IAAeJ;"}
@@ -0,0 +1,34 @@
1
+ import { jsxs as o, jsx as C } from "react/jsx-runtime";
2
+ const e = (l) => /* @__PURE__ */ o(
3
+ "svg",
4
+ {
5
+ xmlns: "http://www.w3.org/2000/svg",
6
+ width: "24",
7
+ height: "24",
8
+ viewBox: "0 0 24 24",
9
+ fill: "none",
10
+ ...l,
11
+ children: [
12
+ /* @__PURE__ */ C(
13
+ "path",
14
+ {
15
+ d: "M12.0002 13C11.4478 13 11 13.4478 11 14.0002C11 14.3494 11.179 14.6568 11.4502 14.8357V16H12.5504V14.8356C12.8215 14.6567 13.0004 14.3493 13.0004 14.0002C13.0004 13.4478 12.5526 13 12.0002 13Z",
16
+ fill: "currentColor"
17
+ }
18
+ ),
19
+ /* @__PURE__ */ C(
20
+ "path",
21
+ {
22
+ fillRule: "evenodd",
23
+ clipRule: "evenodd",
24
+ d: "M10.718 5.2373C11.1244 5.06895 11.56 4.9823 12 4.9823C12.4399 4.9823 12.8755 5.06895 13.2819 5.2373C13.6884 5.40566 14.0577 5.65242 14.3688 5.96349L13.5202 6.81202C13.3206 6.61237 13.0836 6.45401 12.8227 6.34596C12.5619 6.23791 12.2823 6.1823 12 6.1823C11.7176 6.1823 11.438 6.23791 11.1772 6.34596C10.9163 6.45401 10.6793 6.61237 10.4797 6.81202C10.28 7.01167 10.1217 7.24868 10.0136 7.50953C9.90557 7.77038 9.84996 8.04996 9.84996 8.3323V9.11539C10.5053 8.81626 11.2338 8.64952 12.0004 8.64952C14.8635 8.64952 17.1845 10.9705 17.1845 13.8336C17.1845 16.6966 14.8635 19.0176 12.0004 19.0176C9.13738 19.0176 6.81641 16.6966 6.81641 13.8336C6.81641 12.2475 7.52925 10.8278 8.64996 9.87763V8.3323C8.64996 7.89237 8.73661 7.45675 8.90496 7.05031C9.07331 6.64387 9.32007 6.27457 9.63115 5.96349C9.94222 5.65242 10.3115 5.40566 10.718 5.2373ZM12.0004 9.84952C11.1028 9.84952 10.2761 10.1456 9.61031 10.6458C8.64131 11.3736 8.01641 12.5305 8.01641 13.8336C8.01641 16.0339 9.80012 17.8176 12.0004 17.8176C14.2008 17.8176 15.9845 16.0339 15.9845 13.8336C15.9845 11.6332 14.2008 9.84952 12.0004 9.84952Z",
25
+ fill: "currentColor"
26
+ }
27
+ )
28
+ ]
29
+ }
30
+ ), t = e;
31
+ export {
32
+ t as default
33
+ };
34
+ //# sourceMappingURL=unlock2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlock2.js","sources":["../../../../src/assets/line-icons/icons/unlock2.tsx"],"sourcesContent":["const Unlock2Icon: React.FC<React.SVGProps<SVGSVGElement>> = props => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n {...props}\n >\n <path\n d=\"M12.0002 13C11.4478 13 11 13.4478 11 14.0002C11 14.3494 11.179 14.6568 11.4502 14.8357V16H12.5504V14.8356C12.8215 14.6567 13.0004 14.3493 13.0004 14.0002C13.0004 13.4478 12.5526 13 12.0002 13Z\"\n fill=\"currentColor\"\n />\n <path\n fillRule=\"evenodd\"\n clipRule=\"evenodd\"\n d=\"M10.718 5.2373C11.1244 5.06895 11.56 4.9823 12 4.9823C12.4399 4.9823 12.8755 5.06895 13.2819 5.2373C13.6884 5.40566 14.0577 5.65242 14.3688 5.96349L13.5202 6.81202C13.3206 6.61237 13.0836 6.45401 12.8227 6.34596C12.5619 6.23791 12.2823 6.1823 12 6.1823C11.7176 6.1823 11.438 6.23791 11.1772 6.34596C10.9163 6.45401 10.6793 6.61237 10.4797 6.81202C10.28 7.01167 10.1217 7.24868 10.0136 7.50953C9.90557 7.77038 9.84996 8.04996 9.84996 8.3323V9.11539C10.5053 8.81626 11.2338 8.64952 12.0004 8.64952C14.8635 8.64952 17.1845 10.9705 17.1845 13.8336C17.1845 16.6966 14.8635 19.0176 12.0004 19.0176C9.13738 19.0176 6.81641 16.6966 6.81641 13.8336C6.81641 12.2475 7.52925 10.8278 8.64996 9.87763V8.3323C8.64996 7.89237 8.73661 7.45675 8.90496 7.05031C9.07331 6.64387 9.32007 6.27457 9.63115 5.96349C9.94222 5.65242 10.3115 5.40566 10.718 5.2373ZM12.0004 9.84952C11.1028 9.84952 10.2761 10.1456 9.61031 10.6458C8.64131 11.3736 8.01641 12.5305 8.01641 13.8336C8.01641 16.0339 9.80012 17.8176 12.0004 17.8176C14.2008 17.8176 15.9845 16.0339 15.9845 13.8336C15.9845 11.6332 14.2008 9.84952 12.0004 9.84952Z\"\n fill=\"currentColor\"\n />\n </svg>\n );\n};\n\nexport default Unlock2Icon;\n"],"names":["Unlock2Icon","props","jsxs","jsx","Unlock2Icon$1"],"mappings":";AAAA,MAAMA,IAAuD,CAASC,MAElE,gBAAAC;AAAA,EAAC;AAAA,EAAA;AAAA,IACC,OAAM;AAAA,IACN,OAAM;AAAA,IACN,QAAO;AAAA,IACP,SAAQ;AAAA,IACR,MAAK;AAAA,IACJ,GAAGD;AAAA,IAEJ,UAAA;AAAA,MAAA,gBAAAE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,MAAK;AAAA,QAAA;AAAA,MACP;AAAA,MACA,gBAAAA;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,UAAS;AAAA,UACT,UAAS;AAAA,UACT,GAAE;AAAA,UACF,MAAK;AAAA,QAAA;AAAA,MACP;AAAA,IAAA;AAAA,EAAA;AAAA,GAKNC,IAAeJ;"}
@@ -1,15 +1,15 @@
1
1
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
2
- import L from "../../../../assets/line-icons/icons/more-vertical.js";
3
- import S from "../../../../assets/line-icons/icons/skip.js";
4
- import T from "../../../ui/context-menu/context-menu.js";
2
+ import T from "../../../../assets/line-icons/icons/more-vertical.js";
3
+ import O from "../../../../assets/line-icons/icons/skip.js";
4
+ import j from "../../../ui/context-menu/context-menu.js";
5
5
  import c from "../../../ui/layout/flex-view.js";
6
6
  import $ from "../../../ui/text/text.js";
7
- import O from "../../comps/node-card/node-card.js";
8
- import j from "../../comps/node-card/node-menu-options/node-menu-options.js";
9
- import { BLOCK_NAME as k } from "../../constants/block-constants.js";
10
- import { getSheetNLessonCount as y } from "../../utils/index.js";
11
- import { BlockSectionWrapper as H, BlockOptionsWrapper as M, BlockSheetContainer as W } from "./block-sections-styled.js";
12
- const q = ({
7
+ import k from "../../comps/node-card/node-card.js";
8
+ import y from "../../comps/node-card/node-menu-options/node-menu-options.js";
9
+ import { BLOCK_NAME as H } from "../../constants/block-constants.js";
10
+ import { getSheetNLessonCount as M } from "../../utils/index.js";
11
+ import { BlockSectionWrapper as W, BlockOptionsWrapper as B, BlockSheetContainer as K } from "./block-sections-styled.js";
12
+ const J = ({
13
13
  userType: o,
14
14
  imageHue: u,
15
15
  blockData: m,
@@ -22,19 +22,21 @@ const q = ({
22
22
  onNodeReattempt: E,
23
23
  onNodeReview: b,
24
24
  onNodeView: N,
25
- onBlockSkipUnskip: i
25
+ onBlockSkipUnskip: i,
26
+ onNodeUnassign: w,
27
+ onNodeUnlock: A
26
28
  }) => {
27
- const { block_type: s, name: p, sheets: a, permissions: w } = m, { can_skip: d, can_un_skip: e } = w, h = k[s], A = y(e, a.length, r, l), I = [
29
+ const { block_type: s, name: p, sheets: a, permissions: I } = m, { can_skip: d, can_un_skip: e } = I, h = H[s], L = M(e, a.length, r, l), S = [
28
30
  {
29
31
  id: "node-card-skip",
30
32
  label: e ? "Revert 'Skip'" : "Skip",
31
- icon: S,
33
+ icon: O,
32
34
  disabled: !1,
33
35
  onClick: () => i == null ? void 0 : i(m, d)
34
36
  }
35
37
  ];
36
38
  return o === "STUDENT" && e ? null : /* @__PURE__ */ t(
37
- H,
39
+ W,
38
40
  {
39
41
  $background: r ? "WHITE_1" : "WHITE_3",
40
42
  $gutterX: 1,
@@ -52,7 +54,7 @@ const q = ({
52
54
  children: [
53
55
  h === "Puzzles" ? p : h,
54
56
  " ",
55
- A
57
+ L
56
58
  ]
57
59
  }
58
60
  ),
@@ -67,26 +69,26 @@ const q = ({
67
69
  )
68
70
  ] }),
69
71
  o === "TEACHER" && (d || e) && /* @__PURE__ */ t(
70
- T,
72
+ j,
71
73
  {
72
74
  targetElement: /* @__PURE__ */ t(
73
- M,
75
+ B,
74
76
  {
75
77
  $width: 20,
76
78
  $height: 20,
77
79
  $justifyContent: "center",
78
80
  $alignItems: "center",
79
- children: /* @__PURE__ */ t(L, { width: 18, height: 18 })
81
+ children: /* @__PURE__ */ t(T, { width: 18, height: 18 })
80
82
  }
81
83
  ),
82
- menuElement: /* @__PURE__ */ t(j, { options: I }),
84
+ menuElement: /* @__PURE__ */ t(y, { options: S }),
83
85
  menuOffset: 5,
84
86
  menuZIndex: 4
85
87
  }
86
88
  )
87
89
  ] }),
88
- /* @__PURE__ */ t(W, { $opacity: e ? 0.5 : 1, children: a.map((f) => /* @__PURE__ */ t(
89
- O,
90
+ /* @__PURE__ */ t(K, { $opacity: e ? 0.5 : 1, children: a.map((f) => /* @__PURE__ */ t(
91
+ k,
90
92
  {
91
93
  imageHue: u || "BLUE",
92
94
  userType: o,
@@ -98,7 +100,9 @@ const q = ({
98
100
  onNodeMarkAsDone: _,
99
101
  onNodeReattempt: E,
100
102
  onNodeReview: b,
101
- onNodeView: N
103
+ onNodeView: N,
104
+ onNodeUnassign: w,
105
+ onNodeUnlock: A
102
106
  },
103
107
  f.node_id
104
108
  )) })
@@ -107,6 +111,6 @@ const q = ({
107
111
  );
108
112
  };
109
113
  export {
110
- q as default
114
+ J as default
111
115
  };
112
116
  //# sourceMappingURL=block-section-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block-section-view.js","sources":["../../../../../src/features/chapters-v2/chapter-details/block-sections/block-section-view.tsx"],"sourcesContent":["import type { INodeMenuOption } from '../../comps/node-card/node-menu-options/node-menu-options-types';\nimport type { IBlockSectionProps } from './block-sections-types';\nimport type { FC } from 'react';\n\nimport MoreVerticalIcon from '../../../../assets/line-icons/icons/more-vertical';\nimport SkipIcon from '../../../../assets/line-icons/icons/skip';\nimport ContextMenu from '../../../ui/context-menu/context-menu';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport NodeCard from '../../comps/node-card/node-card';\nimport NodeMenuOptions from '../../comps/node-card/node-menu-options/node-menu-options';\nimport { BLOCK_NAME } from '../../constants/block-constants';\nimport { getSheetNLessonCount } from '../../utils';\nimport * as Styled from './block-sections-styled';\n\nconst BlockSectionView: FC<IBlockSectionProps> = ({\n userType,\n imageHue,\n blockData,\n lessonIdx,\n isLastBlock,\n isGoalBlock,\n onNodeAttempt,\n onNodeAssignAsHomework,\n onNodeMarkAsDone,\n onNodeReattempt,\n onNodeReview,\n onNodeView,\n onBlockSkipUnskip,\n}) => {\n const { block_type: blockType, name, sheets, permissions } = blockData;\n\n const { can_skip: canSkip, can_un_skip: canUnskip } = permissions;\n const blockName = BLOCK_NAME[blockType];\n\n const sheetNLessonCount = getSheetNLessonCount(canUnskip, sheets.length, isGoalBlock, lessonIdx);\n\n const menuOptions: INodeMenuOption[] = [\n {\n id: 'node-card-skip',\n label: canUnskip ? `Revert 'Skip'` : 'Skip',\n icon: SkipIcon,\n disabled: false,\n onClick: () => onBlockSkipUnskip?.(blockData, canSkip),\n },\n ];\n\n if (userType === 'STUDENT' && canUnskip) return null;\n\n return (\n <Styled.BlockSectionWrapper\n $background={isGoalBlock ? `WHITE_1` : 'WHITE_3'}\n $gutterX={1}\n $lastBlock={isLastBlock}\n $flexGap={12}\n >\n <FlexView $flexGap={12}>\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $justifyContent=\"space-between\">\n <FlexView $opacity={canUnskip ? 0.5 : 1}>\n <Text\n $renderAs=\"ac4\"\n $color=\"BLACK_T_60\"\n $textDecoration={canUnskip ? 'line-through' : 'none'}\n >\n {blockName === 'Puzzles' ? name : blockName} {sheetNLessonCount}\n </Text>\n\n {!!isGoalBlock && !!lessonIdx && (\n <Text\n $renderAs=\"ab2-bold\"\n $color=\"BLACK_1\"\n $textDecoration={canUnskip ? 'line-through' : 'none'}\n >\n {name}\n </Text>\n )}\n </FlexView>\n\n {userType === 'TEACHER' && (canSkip || canUnskip) && (\n <ContextMenu\n targetElement={\n <Styled.BlockOptionsWrapper\n $width={20}\n $height={20}\n $justifyContent=\"center\"\n $alignItems=\"center\"\n >\n <MoreVerticalIcon width={18} height={18} />\n </Styled.BlockOptionsWrapper>\n }\n menuElement={<NodeMenuOptions options={menuOptions} />}\n menuOffset={5}\n menuZIndex={4}\n />\n )}\n </FlexView>\n\n <Styled.BlockSheetContainer $opacity={canUnskip ? 0.5 : 1}>\n {sheets.map(nodeData => (\n <NodeCard\n key={nodeData.node_id}\n imageHue={imageHue || 'BLUE'}\n userType={userType}\n nodeData={nodeData}\n blockType={blockType}\n isSkipped={canUnskip}\n onNodeAttempt={onNodeAttempt}\n onNodeAssignAsHomework={onNodeAssignAsHomework}\n onNodeMarkAsDone={onNodeMarkAsDone}\n onNodeReattempt={onNodeReattempt}\n onNodeReview={onNodeReview}\n onNodeView={onNodeView}\n />\n ))}\n </Styled.BlockSheetContainer>\n </FlexView>\n </Styled.BlockSectionWrapper>\n );\n};\n\nexport default BlockSectionView;\n"],"names":["BlockSectionView","userType","imageHue","blockData","lessonIdx","isLastBlock","isGoalBlock","onNodeAttempt","onNodeAssignAsHomework","onNodeMarkAsDone","onNodeReattempt","onNodeReview","onNodeView","onBlockSkipUnskip","blockType","name","sheets","permissions","canSkip","canUnskip","blockName","BLOCK_NAME","sheetNLessonCount","getSheetNLessonCount","menuOptions","SkipIcon","jsx","Styled.BlockSectionWrapper","jsxs","FlexView","Text","ContextMenu","Styled.BlockOptionsWrapper","MoreVerticalIcon","NodeMenuOptions","Styled.BlockSheetContainer","nodeData","NodeCard"],"mappings":"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"}
1
+ {"version":3,"file":"block-section-view.js","sources":["../../../../../src/features/chapters-v2/chapter-details/block-sections/block-section-view.tsx"],"sourcesContent":["import type { INodeMenuOption } from '../../comps/node-card/node-menu-options/node-menu-options-types';\nimport type { IBlockSectionProps } from './block-sections-types';\nimport type { FC } from 'react';\n\nimport MoreVerticalIcon from '../../../../assets/line-icons/icons/more-vertical';\nimport SkipIcon from '../../../../assets/line-icons/icons/skip';\nimport ContextMenu from '../../../ui/context-menu/context-menu';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport NodeCard from '../../comps/node-card/node-card';\nimport NodeMenuOptions from '../../comps/node-card/node-menu-options/node-menu-options';\nimport { BLOCK_NAME } from '../../constants/block-constants';\nimport { getSheetNLessonCount } from '../../utils';\nimport * as Styled from './block-sections-styled';\n\nconst BlockSectionView: FC<IBlockSectionProps> = ({\n userType,\n imageHue,\n blockData,\n lessonIdx,\n isLastBlock,\n isGoalBlock,\n onNodeAttempt,\n onNodeAssignAsHomework,\n onNodeMarkAsDone,\n onNodeReattempt,\n onNodeReview,\n onNodeView,\n onBlockSkipUnskip,\n onNodeUnassign,\n onNodeUnlock,\n}) => {\n const { block_type: blockType, name, sheets, permissions } = blockData;\n\n const { can_skip: canSkip, can_un_skip: canUnskip } = permissions;\n const blockName = BLOCK_NAME[blockType];\n\n const sheetNLessonCount = getSheetNLessonCount(canUnskip, sheets.length, isGoalBlock, lessonIdx);\n\n const menuOptions: INodeMenuOption[] = [\n {\n id: 'node-card-skip',\n label: canUnskip ? `Revert 'Skip'` : 'Skip',\n icon: SkipIcon,\n disabled: false,\n onClick: () => onBlockSkipUnskip?.(blockData, canSkip),\n },\n ];\n\n if (userType === 'STUDENT' && canUnskip) return null;\n\n return (\n <Styled.BlockSectionWrapper\n $background={isGoalBlock ? `WHITE_1` : 'WHITE_3'}\n $gutterX={1}\n $lastBlock={isLastBlock}\n $flexGap={12}\n >\n <FlexView $flexGap={12}>\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $justifyContent=\"space-between\">\n <FlexView $opacity={canUnskip ? 0.5 : 1}>\n <Text\n $renderAs=\"ac4\"\n $color=\"BLACK_T_60\"\n $textDecoration={canUnskip ? 'line-through' : 'none'}\n >\n {blockName === 'Puzzles' ? name : blockName} {sheetNLessonCount}\n </Text>\n\n {!!isGoalBlock && !!lessonIdx && (\n <Text\n $renderAs=\"ab2-bold\"\n $color=\"BLACK_1\"\n $textDecoration={canUnskip ? 'line-through' : 'none'}\n >\n {name}\n </Text>\n )}\n </FlexView>\n\n {userType === 'TEACHER' && (canSkip || canUnskip) && (\n <ContextMenu\n targetElement={\n <Styled.BlockOptionsWrapper\n $width={20}\n $height={20}\n $justifyContent=\"center\"\n $alignItems=\"center\"\n >\n <MoreVerticalIcon width={18} height={18} />\n </Styled.BlockOptionsWrapper>\n }\n menuElement={<NodeMenuOptions options={menuOptions} />}\n menuOffset={5}\n menuZIndex={4}\n />\n )}\n </FlexView>\n\n <Styled.BlockSheetContainer $opacity={canUnskip ? 0.5 : 1}>\n {sheets.map(nodeData => (\n <NodeCard\n key={nodeData.node_id}\n imageHue={imageHue || 'BLUE'}\n userType={userType}\n nodeData={nodeData}\n blockType={blockType}\n isSkipped={canUnskip}\n onNodeAttempt={onNodeAttempt}\n onNodeAssignAsHomework={onNodeAssignAsHomework}\n onNodeMarkAsDone={onNodeMarkAsDone}\n onNodeReattempt={onNodeReattempt}\n onNodeReview={onNodeReview}\n onNodeView={onNodeView}\n onNodeUnassign={onNodeUnassign}\n onNodeUnlock={onNodeUnlock}\n />\n ))}\n </Styled.BlockSheetContainer>\n </FlexView>\n </Styled.BlockSectionWrapper>\n );\n};\n\nexport default BlockSectionView;\n"],"names":["BlockSectionView","userType","imageHue","blockData","lessonIdx","isLastBlock","isGoalBlock","onNodeAttempt","onNodeAssignAsHomework","onNodeMarkAsDone","onNodeReattempt","onNodeReview","onNodeView","onBlockSkipUnskip","onNodeUnassign","onNodeUnlock","blockType","name","sheets","permissions","canSkip","canUnskip","blockName","BLOCK_NAME","sheetNLessonCount","getSheetNLessonCount","menuOptions","SkipIcon","jsx","Styled.BlockSectionWrapper","jsxs","FlexView","Text","ContextMenu","Styled.BlockOptionsWrapper","MoreVerticalIcon","NodeMenuOptions","Styled.BlockSheetContainer","nodeData","NodeCard"],"mappings":"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"}
@@ -1,74 +1,50 @@
1
- import { jsxs as S, jsx as s } from "react/jsx-runtime";
2
- import { memo as w, useMemo as x } from "react";
3
- import _ from "./block-section-view.js";
4
- import { ChapterDetailsWrapper as E } from "./block-sections-styled.js";
5
- const y = w((g) => {
6
- const {
7
- blocks: n,
8
- imageHue: t,
9
- userType: l,
10
- coreBlocksRef: h,
11
- onNodeAttempt: r,
12
- onNodeAssignAsHomework: i,
13
- onNodeMarkAsDone: c,
14
- onNodeReattempt: p,
15
- onNodeReview: d,
16
- onNodeView: k,
17
- onBlockSkipUnskip: m
18
- } = g;
19
- let u = 0;
20
- const { goalBlocks: a, nonGoalBlocks: B } = x(
21
- () => n.reduce(
1
+ import { jsxs as h, jsx as s } from "react/jsx-runtime";
2
+ import { memo as g, useMemo as G } from "react";
3
+ import m from "./block-section-view.js";
4
+ import { ChapterDetailsWrapper as I } from "./block-sections-styled.js";
5
+ const T = g((u) => {
6
+ const { blocks: l, imageHue: n, userType: c, coreBlocksRef: a, ...t } = u;
7
+ let r = 0;
8
+ const { goalBlocks: i, nonGoalBlocks: k } = G(
9
+ () => l.reduce(
22
10
  (o, e) => (e.section_code === "GOALS" || e.section_code === "READINESS" ? o.goalBlocks.push(e) : o.nonGoalBlocks.push(e), o),
23
11
  { goalBlocks: [], nonGoalBlocks: [] }
24
12
  ),
25
- [n]
13
+ [l]
26
14
  );
27
- return /* @__PURE__ */ S(
28
- E,
15
+ return /* @__PURE__ */ h(
16
+ I,
29
17
  {
30
18
  $width: "100%",
31
- $background: B.length ? "WHITE_3" : "WHITE_1",
19
+ $background: k.length ? "WHITE_3" : "WHITE_1",
32
20
  children: [
33
- /* @__PURE__ */ s("div", { ref: h, children: a.map((o, e) => {
34
- const { block_type: A, block_id: N, permissions: G } = o;
35
- let f = 0;
36
- const I = e === a.length - 1;
37
- return A === "GOAL" && (G.can_un_skip || (u += 1), f = u), /* @__PURE__ */ s(
38
- _,
21
+ /* @__PURE__ */ s("div", { ref: a, children: i.map((o, e) => {
22
+ const { block_type: d, block_id: B, permissions: f } = o;
23
+ let p = 0;
24
+ const _ = e === i.length - 1;
25
+ return d === "GOAL" && (f.can_un_skip || (r += 1), p = r), /* @__PURE__ */ s(
26
+ m,
39
27
  {
40
28
  blockData: o,
41
- userType: l,
42
- isLastBlock: I,
43
- lessonIdx: f,
44
- imageHue: t,
29
+ userType: c,
30
+ isLastBlock: _,
31
+ lessonIdx: p,
32
+ imageHue: n,
45
33
  isGoalBlock: !0,
46
- onNodeAttempt: r,
47
- onNodeAssignAsHomework: i,
48
- onNodeMarkAsDone: c,
49
- onNodeReattempt: p,
50
- onNodeReview: d,
51
- onNodeView: k,
52
- onBlockSkipUnskip: m
34
+ ...t
53
35
  },
54
- N
36
+ B
55
37
  );
56
38
  }) }),
57
- B.map((o) => {
39
+ k.map((o) => {
58
40
  const { block_id: e } = o;
59
41
  return /* @__PURE__ */ s(
60
- _,
42
+ m,
61
43
  {
62
44
  blockData: o,
63
- userType: l,
64
- imageHue: t,
65
- onNodeAttempt: r,
66
- onNodeAssignAsHomework: i,
67
- onNodeMarkAsDone: c,
68
- onNodeReattempt: p,
69
- onNodeReview: d,
70
- onNodeView: k,
71
- onBlockSkipUnskip: m
45
+ userType: c,
46
+ imageHue: n,
47
+ ...t
72
48
  },
73
49
  e
74
50
  );
@@ -78,6 +54,6 @@ const y = w((g) => {
78
54
  );
79
55
  });
80
56
  export {
81
- y as default
57
+ T as default
82
58
  };
83
59
  //# sourceMappingURL=block-sections.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"block-sections.js","sources":["../../../../../src/features/chapters-v2/chapter-details/block-sections/block-sections.tsx"],"sourcesContent":["import type { IBlockSectionsProps } from './block-sections-types';\nimport type { FC } from 'react';\n\nimport { memo, useMemo } from 'react';\n\nimport BlockSectionView from './block-section-view';\nimport * as Styled from './block-sections-styled';\n\nconst BlockSections: FC<IBlockSectionsProps> = memo(props => {\n const {\n blocks,\n imageHue,\n userType,\n coreBlocksRef,\n onNodeAttempt,\n onNodeAssignAsHomework,\n onNodeMarkAsDone,\n onNodeReattempt,\n onNodeReview,\n onNodeView,\n onBlockSkipUnskip,\n } = props;\n\n let lessonCount = 0;\n\n const { goalBlocks, nonGoalBlocks } = useMemo(\n () =>\n blocks.reduce(\n (acc, block) => {\n if (block.section_code === 'GOALS' || block.section_code === 'READINESS') {\n acc.goalBlocks.push(block);\n } else {\n acc.nonGoalBlocks.push(block);\n }\n\n return acc;\n },\n { goalBlocks: [] as typeof blocks, nonGoalBlocks: [] as typeof blocks },\n ),\n [blocks],\n );\n\n return (\n <Styled.ChapterDetailsWrapper\n $width=\"100%\"\n $background={!nonGoalBlocks.length ? `WHITE_1` : 'WHITE_3'}\n >\n <div ref={coreBlocksRef}>\n {goalBlocks.map((blockData, idx) => {\n const { block_type: blockType, block_id: blockId, permissions } = blockData;\n let lessonIdx = 0;\n\n const isLastBlock = idx === goalBlocks.length - 1;\n\n if (blockType === 'GOAL') {\n if (!permissions.can_un_skip) {\n lessonCount += 1;\n }\n\n lessonIdx = lessonCount;\n }\n\n return (\n <BlockSectionView\n blockData={blockData}\n userType={userType}\n isLastBlock={isLastBlock}\n key={blockId}\n lessonIdx={lessonIdx}\n imageHue={imageHue}\n isGoalBlock\n onNodeAttempt={onNodeAttempt}\n onNodeAssignAsHomework={onNodeAssignAsHomework}\n onNodeMarkAsDone={onNodeMarkAsDone}\n onNodeReattempt={onNodeReattempt}\n onNodeReview={onNodeReview}\n onNodeView={onNodeView}\n onBlockSkipUnskip={onBlockSkipUnskip}\n />\n );\n })}\n </div>\n\n {nonGoalBlocks.map(blockData => {\n const { block_id: blockId } = blockData;\n\n return (\n <BlockSectionView\n key={blockId}\n blockData={blockData}\n userType={userType}\n imageHue={imageHue}\n onNodeAttempt={onNodeAttempt}\n onNodeAssignAsHomework={onNodeAssignAsHomework}\n onNodeMarkAsDone={onNodeMarkAsDone}\n onNodeReattempt={onNodeReattempt}\n onNodeReview={onNodeReview}\n onNodeView={onNodeView}\n onBlockSkipUnskip={onBlockSkipUnskip}\n />\n );\n })}\n </Styled.ChapterDetailsWrapper>\n );\n});\n\nexport default BlockSections;\n"],"names":["BlockSections","memo","props","blocks","imageHue","userType","coreBlocksRef","onNodeAttempt","onNodeAssignAsHomework","onNodeMarkAsDone","onNodeReattempt","onNodeReview","onNodeView","onBlockSkipUnskip","lessonCount","goalBlocks","nonGoalBlocks","useMemo","acc","block","jsxs","Styled.ChapterDetailsWrapper","jsx","blockData","idx","blockType","blockId","permissions","lessonIdx","isLastBlock","BlockSectionView"],"mappings":";;;;AAQM,MAAAA,IAAyCC,EAAK,CAASC,MAAA;AACrD,QAAA;AAAA,IACJ,QAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,eAAAC;AAAA,IACA,eAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,IACA,mBAAAC;AAAA,EACE,IAAAX;AAEJ,MAAIY,IAAc;AAEZ,QAAA,EAAE,YAAAC,GAAY,eAAAC,EAAA,IAAkBC;AAAA,IACpC,MACEd,EAAO;AAAA,MACL,CAACe,GAAKC,OACAA,EAAM,iBAAiB,WAAWA,EAAM,iBAAiB,cACvDD,EAAA,WAAW,KAAKC,CAAK,IAErBD,EAAA,cAAc,KAAKC,CAAK,GAGvBD;AAAA,MAET,EAAE,YAAY,CAAA,GAAqB,eAAe,GAAoB;AAAA,IACxE;AAAA,IACF,CAACf,CAAM;AAAA,EAAA;AAIP,SAAA,gBAAAiB;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,aAAcL,EAAc,SAAqB,YAAZ;AAAA,MAErC,UAAA;AAAA,QAAA,gBAAAM,EAAC,SAAI,KAAKhB,GACP,YAAW,IAAI,CAACiB,GAAWC,MAAQ;AAClC,gBAAM,EAAE,YAAYC,GAAW,UAAUC,GAAS,aAAAC,EAAgB,IAAAJ;AAClE,cAAIK,IAAY;AAEV,gBAAAC,IAAcL,MAAQT,EAAW,SAAS;AAEhD,iBAAIU,MAAc,WACXE,EAAY,gBACAb,KAAA,IAGLc,IAAAd,IAIZ,gBAAAQ;AAAA,YAACQ;AAAA,YAAA;AAAA,cACC,WAAAP;AAAA,cACA,UAAAlB;AAAA,cACA,aAAAwB;AAAA,cAEA,WAAAD;AAAA,cACA,UAAAxB;AAAA,cACA,aAAW;AAAA,cACX,eAAAG;AAAA,cACA,wBAAAC;AAAA,cACA,kBAAAC;AAAA,cACA,iBAAAC;AAAA,cACA,cAAAC;AAAA,cACA,YAAAC;AAAA,cACA,mBAAAC;AAAA,YAAA;AAAA,YAVKa;AAAA,UAAA;AAAA,QAaV,CAAA,GACH;AAAA,QAECV,EAAc,IAAI,CAAaO,MAAA;AACxB,gBAAA,EAAE,UAAUG,EAAY,IAAAH;AAG5B,iBAAA,gBAAAD;AAAA,YAACQ;AAAA,YAAA;AAAA,cAEC,WAAAP;AAAA,cACA,UAAAlB;AAAA,cACA,UAAAD;AAAA,cACA,eAAAG;AAAA,cACA,wBAAAC;AAAA,cACA,kBAAAC;AAAA,cACA,iBAAAC;AAAA,cACA,cAAAC;AAAA,cACA,YAAAC;AAAA,cACA,mBAAAC;AAAA,YAAA;AAAA,YAVKa;AAAA,UAAA;AAAA,QAWP,CAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
1
+ {"version":3,"file":"block-sections.js","sources":["../../../../../src/features/chapters-v2/chapter-details/block-sections/block-sections.tsx"],"sourcesContent":["import type { IBlockSectionsProps } from './block-sections-types';\nimport type { FC } from 'react';\n\nimport { memo, useMemo } from 'react';\n\nimport BlockSectionView from './block-section-view';\nimport * as Styled from './block-sections-styled';\n\nconst BlockSections: FC<IBlockSectionsProps> = memo(props => {\n const { blocks, imageHue, userType, coreBlocksRef, ...blockSectionCallBacks } = props;\n\n let lessonCount = 0;\n\n const { goalBlocks, nonGoalBlocks } = useMemo(\n () =>\n blocks.reduce(\n (acc, block) => {\n if (block.section_code === 'GOALS' || block.section_code === 'READINESS') {\n acc.goalBlocks.push(block);\n } else {\n acc.nonGoalBlocks.push(block);\n }\n\n return acc;\n },\n { goalBlocks: [] as typeof blocks, nonGoalBlocks: [] as typeof blocks },\n ),\n [blocks],\n );\n\n return (\n <Styled.ChapterDetailsWrapper\n $width=\"100%\"\n $background={!nonGoalBlocks.length ? `WHITE_1` : 'WHITE_3'}\n >\n <div ref={coreBlocksRef}>\n {goalBlocks.map((blockData, idx) => {\n const { block_type: blockType, block_id: blockId, permissions } = blockData;\n let lessonIdx = 0;\n\n const isLastBlock = idx === goalBlocks.length - 1;\n\n if (blockType === 'GOAL') {\n if (!permissions.can_un_skip) {\n lessonCount += 1;\n }\n\n lessonIdx = lessonCount;\n }\n\n return (\n <BlockSectionView\n blockData={blockData}\n userType={userType}\n isLastBlock={isLastBlock}\n key={blockId}\n lessonIdx={lessonIdx}\n imageHue={imageHue}\n isGoalBlock\n {...blockSectionCallBacks}\n />\n );\n })}\n </div>\n\n {nonGoalBlocks.map(blockData => {\n const { block_id: blockId } = blockData;\n\n return (\n <BlockSectionView\n key={blockId}\n blockData={blockData}\n userType={userType}\n imageHue={imageHue}\n {...blockSectionCallBacks}\n />\n );\n })}\n </Styled.ChapterDetailsWrapper>\n );\n});\n\nexport default BlockSections;\n"],"names":["BlockSections","memo","props","blocks","imageHue","userType","coreBlocksRef","blockSectionCallBacks","lessonCount","goalBlocks","nonGoalBlocks","useMemo","acc","block","jsxs","Styled.ChapterDetailsWrapper","jsx","blockData","idx","blockType","blockId","permissions","lessonIdx","isLastBlock","BlockSectionView"],"mappings":";;;;AAQM,MAAAA,IAAyCC,EAAK,CAASC,MAAA;AAC3D,QAAM,EAAE,QAAAC,GAAQ,UAAAC,GAAU,UAAAC,GAAU,eAAAC,GAAe,GAAGC,EAA0B,IAAAL;AAEhF,MAAIM,IAAc;AAEZ,QAAA,EAAE,YAAAC,GAAY,eAAAC,EAAA,IAAkBC;AAAA,IACpC,MACER,EAAO;AAAA,MACL,CAACS,GAAKC,OACAA,EAAM,iBAAiB,WAAWA,EAAM,iBAAiB,cACvDD,EAAA,WAAW,KAAKC,CAAK,IAErBD,EAAA,cAAc,KAAKC,CAAK,GAGvBD;AAAA,MAET,EAAE,YAAY,CAAA,GAAqB,eAAe,GAAoB;AAAA,IACxE;AAAA,IACF,CAACT,CAAM;AAAA,EAAA;AAIP,SAAA,gBAAAW;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,QAAO;AAAA,MACP,aAAcL,EAAc,SAAqB,YAAZ;AAAA,MAErC,UAAA;AAAA,QAAA,gBAAAM,EAAC,SAAI,KAAKV,GACP,YAAW,IAAI,CAACW,GAAWC,MAAQ;AAClC,gBAAM,EAAE,YAAYC,GAAW,UAAUC,GAAS,aAAAC,EAAgB,IAAAJ;AAClE,cAAIK,IAAY;AAEV,gBAAAC,IAAcL,MAAQT,EAAW,SAAS;AAEhD,iBAAIU,MAAc,WACXE,EAAY,gBACAb,KAAA,IAGLc,IAAAd,IAIZ,gBAAAQ;AAAA,YAACQ;AAAA,YAAA;AAAA,cACC,WAAAP;AAAA,cACA,UAAAZ;AAAA,cACA,aAAAkB;AAAA,cAEA,WAAAD;AAAA,cACA,UAAAlB;AAAA,cACA,aAAW;AAAA,cACV,GAAGG;AAAA,YAAA;AAAA,YAJCa;AAAA,UAAA;AAAA,QAOV,CAAA,GACH;AAAA,QAECV,EAAc,IAAI,CAAaO,MAAA;AACxB,gBAAA,EAAE,UAAUG,EAAY,IAAAH;AAG5B,iBAAA,gBAAAD;AAAA,YAACQ;AAAA,YAAA;AAAA,cAEC,WAAAP;AAAA,cACA,UAAAZ;AAAA,cACA,UAAAD;AAAA,cACC,GAAGG;AAAA,YAAA;AAAA,YAJCa;AAAA,UAAA;AAAA,QAKP,CAEH;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGP,CAAC;"}
@@ -11,7 +11,7 @@ import H from "../../comps/tag/tag.js";
11
11
  import { getChapterCompletionPercentage as X } from "../../utils/index.js";
12
12
  import { BannerContainer as j, BannerImageWrapper as N, LottieAnimationWrapper as U, ChapterProgressSVG as Y, ChapterProgressSVGCircle as g, StyledImportantIcon as f, BannerImage as F, BannerTitleWrapper as K } from "./chapter-banner-styled.js";
13
13
  const i = 52, s = 54, l = 54, q = {
14
- renderer: "svg",
14
+ renderer: "canvas",
15
15
  autoplay: !0,
16
16
  loop: !1,
17
17
  rendererSettings: {
@@ -1 +1 @@
1
- {"version":3,"file":"chapter-banner.js","sources":["../../../../../src/features/chapters-v2/chapter-details/chapter-banner/chapter-banner.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../../../ui/lottie-animation/types';\nimport type { IChapterBannerProps } from './chapter-banner-types';\nimport type { FC } from 'react';\n\nimport { memo, useMemo, useRef } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport { LOTTIE } from '../../../../assets/lottie/lottie';\nimport Image from '../../../ui/image/image';\nimport FlexView from '../../../ui/layout/flex-view';\nimport LottieAnimation from '../../../ui/lottie-animation/lottie-animation';\nimport Text from '../../../ui/text/text';\nimport Tag from '../../comps/tag/tag';\nimport { getChapterCompletionPercentage } from '../../utils';\nimport * as Styled from './chapter-banner-styled';\n\nconst PROGRESS_CIRCLE_RADIUS = 52;\nconst PROGRESS_CIRCLE_CENTER_X = 54;\nconst PROGRESS_CIRCLE_CENTER_Y = 54;\n\nconst sheetCompletedLottieSettings = {\n renderer: 'svg',\n autoplay: true,\n loop: false,\n rendererSettings: {\n dpr: window.devicePixelRatio || 1,\n // You might also consider preserveAspectRatio if the Lottie is being scaled\n preserveAspectRatio: 'xMidYMid slice', // Example\n },\n};\n\n// This component renders a banner for a chapter, displaying its title, progress, and associated tags.\n// It includes an image, progress visualization, and details about the chapter's core and supplementary sheets.\n// It calculates the completion percentage and dynamically positions an icon based on progress.\nconst ChapterBanner: FC<IChapterBannerProps> = memo(props => {\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n\n const { progressStats, imageHue, title, imageUrl, bannerRef } = props;\n\n const completionPercentage = useMemo(() => {\n return getChapterCompletionPercentage(progressStats);\n }, [progressStats]);\n\n const { iconTopVal, iconLeftVal } = useMemo(() => {\n //* Calculate the position of the important icon based on the completion percentage\n //* Convert degrees to radians\n const angleInDegree = completionPercentage === 100 ? 60 : completionPercentage;\n\n const angleInRadian = ((-angleInDegree * 3.6 - 180) * Math.PI) / 180;\n const positionX = PROGRESS_CIRCLE_CENTER_Y + PROGRESS_CIRCLE_RADIUS * Math.sin(angleInRadian);\n const positionY = PROGRESS_CIRCLE_CENTER_X + PROGRESS_CIRCLE_RADIUS * Math.cos(angleInRadian);\n\n return {\n iconLeftVal: positionX,\n iconTopVal: positionY,\n };\n }, [completionPercentage]);\n\n if (!progressStats) return null;\n\n const { mandatory, optional, classwork: classWork } = progressStats;\n const { completed: completedMandatorySheets = 0, total: totalMandatorySheets = 0 } =\n mandatory || {};\n const { completed: completedOptionalSheets = 0, total: totalOptionalSheets = 0 } = optional || {};\n const { completed: completedClassWorkSheets = 0, total: totalClassWorkSheets = 0 } =\n classWork || {};\n const showClassWorkTag =\n totalClassWorkSheets > 0 && completedClassWorkSheets === totalClassWorkSheets;\n\n return (\n <Styled.BannerContainer\n $flexDirection=\"row\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $widthX={50}\n $background={`${imageHue}_4`}\n ref={bannerRef}\n >\n <FlexView $height={168} $position=\"relative\">\n <Image\n width=\"100%\"\n height=\"168px\"\n src={ILLUSTRATIONS.CHAPTER_HEADER_BG}\n alt=\"Chapter header background\"\n withLoader\n />\n <Styled.BannerImageWrapper>\n {completionPercentage === 100 ? (\n <Styled.LottieAnimationWrapper>\n <LottieAnimation\n src={LOTTIE.CHAPTER_COMPLETED}\n ref={animationRef}\n settings={sheetCompletedLottieSettings}\n />\n </Styled.LottieAnimationWrapper>\n ) : (\n <>\n <Styled.ChapterProgressSVG width=\"108px\" height=\"108px\">\n <Styled.ChapterProgressSVGCircle\n $progress={0}\n r={PROGRESS_CIRCLE_RADIUS}\n cx={PROGRESS_CIRCLE_CENTER_X}\n cy={PROGRESS_CIRCLE_CENTER_Y}\n />\n <Styled.ChapterProgressSVGCircle\n $progressCircle\n $progressBackground={'BLACK'}\n $progress={3.3 * completionPercentage}\n r={PROGRESS_CIRCLE_RADIUS}\n cx={PROGRESS_CIRCLE_CENTER_X}\n cy={PROGRESS_CIRCLE_CENTER_Y}\n />\n </Styled.ChapterProgressSVG>\n\n {completionPercentage > 0 && (\n <Styled.StyledImportantIcon $progress $top={iconTopVal} $left={iconLeftVal} />\n )}\n </>\n )}\n\n <Styled.BannerImage src={imageUrl} alt=\"Chapter image\" />\n </Styled.BannerImageWrapper>\n <Styled.BannerTitleWrapper $flexGap={4}>\n <Text $renderAs=\"ah4-bold\">{title}</Text>\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={2.75}>\n {!!totalMandatorySheets && (\n <FlexView $position=\"relative\" $flexDirection=\"row\">\n <Styled.StyledImportantIcon />\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGap={8}>\n <Text $renderAs=\"ab2\">\n Core - {completedMandatorySheets}/{totalMandatorySheets}\n </Text>\n {showClassWorkTag && <Tag Icon={Check2Icon} label=\"CW\" />}\n </FlexView>\n </FlexView>\n )}\n {totalOptionalSheets > 0 && (\n <Text $renderAs=\"ab2\">\n Supplementary - {completedOptionalSheets}/{totalOptionalSheets}\n </Text>\n )}\n </FlexView>\n </Styled.BannerTitleWrapper>\n </FlexView>\n </Styled.BannerContainer>\n );\n});\n\nexport default ChapterBanner;\n"],"names":["PROGRESS_CIRCLE_RADIUS","PROGRESS_CIRCLE_CENTER_X","PROGRESS_CIRCLE_CENTER_Y","sheetCompletedLottieSettings","ChapterBanner","memo","props","animationRef","useRef","progressStats","imageHue","title","imageUrl","bannerRef","completionPercentage","useMemo","getChapterCompletionPercentage","iconTopVal","iconLeftVal","angleInRadian","positionX","positionY","mandatory","optional","classWork","completedMandatorySheets","totalMandatorySheets","completedOptionalSheets","totalOptionalSheets","completedClassWorkSheets","totalClassWorkSheets","showClassWorkTag","jsx","Styled.BannerContainer","jsxs","FlexView","Image","ILLUSTRATIONS","Styled.BannerImageWrapper","Styled.LottieAnimationWrapper","LottieAnimation","LOTTIE","Fragment","Styled.ChapterProgressSVG","Styled.ChapterProgressSVGCircle","Styled.StyledImportantIcon","Styled.BannerImage","Styled.BannerTitleWrapper","Text","Tag","Check2Icon"],"mappings":"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"}
1
+ {"version":3,"file":"chapter-banner.js","sources":["../../../../../src/features/chapters-v2/chapter-details/chapter-banner/chapter-banner.tsx"],"sourcesContent":["import type { ILottieAnimationRef } from '../../../ui/lottie-animation/types';\nimport type { IChapterBannerProps } from './chapter-banner-types';\nimport type { FC } from 'react';\n\nimport { memo, useMemo, useRef } from 'react';\n\nimport { ILLUSTRATIONS } from '../../../../assets/illustrations/illustrations';\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport { LOTTIE } from '../../../../assets/lottie/lottie';\nimport Image from '../../../ui/image/image';\nimport FlexView from '../../../ui/layout/flex-view';\nimport LottieAnimation from '../../../ui/lottie-animation/lottie-animation';\nimport Text from '../../../ui/text/text';\nimport Tag from '../../comps/tag/tag';\nimport { getChapterCompletionPercentage } from '../../utils';\nimport * as Styled from './chapter-banner-styled';\n\nconst PROGRESS_CIRCLE_RADIUS = 52;\nconst PROGRESS_CIRCLE_CENTER_X = 54;\nconst PROGRESS_CIRCLE_CENTER_Y = 54;\n\nconst sheetCompletedLottieSettings = {\n renderer: 'canvas',\n autoplay: true,\n loop: false,\n rendererSettings: {\n dpr: window.devicePixelRatio || 1,\n // You might also consider preserveAspectRatio if the Lottie is being scaled\n preserveAspectRatio: 'xMidYMid slice', // Example\n },\n};\n\n// This component renders a banner for a chapter, displaying its title, progress, and associated tags.\n// It includes an image, progress visualization, and details about the chapter's core and supplementary sheets.\n// It calculates the completion percentage and dynamically positions an icon based on progress.\nconst ChapterBanner: FC<IChapterBannerProps> = memo(props => {\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n\n const { progressStats, imageHue, title, imageUrl, bannerRef } = props;\n\n const completionPercentage = useMemo(() => {\n return getChapterCompletionPercentage(progressStats);\n }, [progressStats]);\n\n const { iconTopVal, iconLeftVal } = useMemo(() => {\n //* Calculate the position of the important icon based on the completion percentage\n //* Convert degrees to radians\n const angleInDegree = completionPercentage === 100 ? 60 : completionPercentage;\n\n const angleInRadian = ((-angleInDegree * 3.6 - 180) * Math.PI) / 180;\n const positionX = PROGRESS_CIRCLE_CENTER_Y + PROGRESS_CIRCLE_RADIUS * Math.sin(angleInRadian);\n const positionY = PROGRESS_CIRCLE_CENTER_X + PROGRESS_CIRCLE_RADIUS * Math.cos(angleInRadian);\n\n return {\n iconLeftVal: positionX,\n iconTopVal: positionY,\n };\n }, [completionPercentage]);\n\n if (!progressStats) return null;\n\n const { mandatory, optional, classwork: classWork } = progressStats;\n const { completed: completedMandatorySheets = 0, total: totalMandatorySheets = 0 } =\n mandatory || {};\n const { completed: completedOptionalSheets = 0, total: totalOptionalSheets = 0 } = optional || {};\n const { completed: completedClassWorkSheets = 0, total: totalClassWorkSheets = 0 } =\n classWork || {};\n const showClassWorkTag =\n totalClassWorkSheets > 0 && completedClassWorkSheets === totalClassWorkSheets;\n\n return (\n <Styled.BannerContainer\n $flexDirection=\"row\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $widthX={50}\n $background={`${imageHue}_4`}\n ref={bannerRef}\n >\n <FlexView $height={168} $position=\"relative\">\n <Image\n width=\"100%\"\n height=\"168px\"\n src={ILLUSTRATIONS.CHAPTER_HEADER_BG}\n alt=\"Chapter header background\"\n withLoader\n />\n <Styled.BannerImageWrapper>\n {completionPercentage === 100 ? (\n <Styled.LottieAnimationWrapper>\n <LottieAnimation\n src={LOTTIE.CHAPTER_COMPLETED}\n ref={animationRef}\n settings={sheetCompletedLottieSettings}\n />\n </Styled.LottieAnimationWrapper>\n ) : (\n <>\n <Styled.ChapterProgressSVG width=\"108px\" height=\"108px\">\n <Styled.ChapterProgressSVGCircle\n $progress={0}\n r={PROGRESS_CIRCLE_RADIUS}\n cx={PROGRESS_CIRCLE_CENTER_X}\n cy={PROGRESS_CIRCLE_CENTER_Y}\n />\n <Styled.ChapterProgressSVGCircle\n $progressCircle\n $progressBackground={'BLACK'}\n $progress={3.3 * completionPercentage}\n r={PROGRESS_CIRCLE_RADIUS}\n cx={PROGRESS_CIRCLE_CENTER_X}\n cy={PROGRESS_CIRCLE_CENTER_Y}\n />\n </Styled.ChapterProgressSVG>\n\n {completionPercentage > 0 && (\n <Styled.StyledImportantIcon $progress $top={iconTopVal} $left={iconLeftVal} />\n )}\n </>\n )}\n\n <Styled.BannerImage src={imageUrl} alt=\"Chapter image\" />\n </Styled.BannerImageWrapper>\n <Styled.BannerTitleWrapper $flexGap={4}>\n <Text $renderAs=\"ah4-bold\">{title}</Text>\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGapX={2.75}>\n {!!totalMandatorySheets && (\n <FlexView $position=\"relative\" $flexDirection=\"row\">\n <Styled.StyledImportantIcon />\n <FlexView $flexDirection=\"row\" $alignItems=\"center\" $flexGap={8}>\n <Text $renderAs=\"ab2\">\n Core - {completedMandatorySheets}/{totalMandatorySheets}\n </Text>\n {showClassWorkTag && <Tag Icon={Check2Icon} label=\"CW\" />}\n </FlexView>\n </FlexView>\n )}\n {totalOptionalSheets > 0 && (\n <Text $renderAs=\"ab2\">\n Supplementary - {completedOptionalSheets}/{totalOptionalSheets}\n </Text>\n )}\n </FlexView>\n </Styled.BannerTitleWrapper>\n </FlexView>\n </Styled.BannerContainer>\n );\n});\n\nexport default ChapterBanner;\n"],"names":["PROGRESS_CIRCLE_RADIUS","PROGRESS_CIRCLE_CENTER_X","PROGRESS_CIRCLE_CENTER_Y","sheetCompletedLottieSettings","ChapterBanner","memo","props","animationRef","useRef","progressStats","imageHue","title","imageUrl","bannerRef","completionPercentage","useMemo","getChapterCompletionPercentage","iconTopVal","iconLeftVal","angleInRadian","positionX","positionY","mandatory","optional","classWork","completedMandatorySheets","totalMandatorySheets","completedOptionalSheets","totalOptionalSheets","completedClassWorkSheets","totalClassWorkSheets","showClassWorkTag","jsx","Styled.BannerContainer","jsxs","FlexView","Image","ILLUSTRATIONS","Styled.BannerImageWrapper","Styled.LottieAnimationWrapper","LottieAnimation","LOTTIE","Fragment","Styled.ChapterProgressSVG","Styled.ChapterProgressSVGCircle","Styled.StyledImportantIcon","Styled.BannerImage","Styled.BannerTitleWrapper","Text","Tag","Check2Icon"],"mappings":"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"}
@@ -1,67 +1,69 @@
1
- import { jsxs as m, jsx as r, Fragment as S } from "react/jsx-runtime";
2
- import { memo as b, useCallback as N, useEffect as p } from "react";
3
- import { ILLUSTRATIONS as _ } from "../../../assets/illustrations/illustrations.js";
4
- import v from "../../../assets/line-icons/icons/back2.js";
5
- import { useJourney as D } from "../../journey/use-journey/use-journey.js";
6
- import E from "../../ui/buttons/button/button.js";
7
- import L from "../../ui/buttons/icon-button/icon-button.js";
8
- import P from "../../ui/layout/flex-view.js";
9
- import T from "../../ui/loader/app-loader/app-loader.js";
10
- import j from "../../ui/text/text.js";
11
- import { useGetChapterDetails as H } from "../api/chapter.js";
12
- import J from "./block-sections/block-sections.js";
13
- import F from "./chapter-banner/chapter-banner.js";
14
- import { ContentWrapper as O, BackButtonContainer as U, BackButtonWrapper as W, LoaderWrapper as X } from "./chapter-details-styled.js";
15
- const z = b((f) => {
1
+ import { jsxs as m, jsx as r, Fragment as b } from "react/jsx-runtime";
2
+ import { memo as _, useCallback as v, useEffect as c } from "react";
3
+ import { ILLUSTRATIONS as D } from "../../../assets/illustrations/illustrations.js";
4
+ import E from "../../../assets/line-icons/icons/back2.js";
5
+ import { useJourney as L } from "../../journey/use-journey/use-journey.js";
6
+ import P from "../../ui/buttons/button/button.js";
7
+ import T from "../../ui/buttons/icon-button/icon-button.js";
8
+ import U from "../../ui/layout/flex-view.js";
9
+ import j from "../../ui/loader/app-loader/app-loader.js";
10
+ import H from "../../ui/text/text.js";
11
+ import { useGetChapterDetails as J } from "../api/chapter.js";
12
+ import F from "./block-sections/block-sections.js";
13
+ import O from "./chapter-banner/chapter-banner.js";
14
+ import { ContentWrapper as W, BackButtonContainer as X, BackButtonWrapper as z, LoaderWrapper as G } from "./chapter-details-styled.js";
15
+ const V = _((f) => {
16
16
  const {
17
17
  userChapterId: n,
18
18
  studentId: i,
19
19
  userType: a,
20
20
  onBlockSkipUnskip: g,
21
21
  onNodeAttempt: u,
22
- onNodeAssignAsHomework: C,
23
- onNodeMarkAsDone: k,
22
+ onNodeAssignAsHomework: k,
23
+ onNodeMarkAsDone: C,
24
24
  onNodeReattempt: y,
25
25
  onNodeReview: A,
26
26
  onNodeView: B,
27
27
  onExit: $,
28
+ onNodeUnassign: x,
29
+ onNodeUnlock: I,
28
30
  startChapterPageJourney: s,
29
- chapterPageRef: x,
30
- bannerRef: I,
31
- coreBlocksRef: w,
32
- canStartJourney: c
33
- } = f, { isJourneyActive: l } = D(), {
34
- get: h,
31
+ chapterPageRef: N,
32
+ bannerRef: w,
33
+ coreBlocksRef: R,
34
+ canStartJourney: l
35
+ } = f, { isJourneyActive: p } = L(), {
36
+ get: d,
35
37
  data: e,
36
38
  isProcessing: t,
37
- isProcessingFailed: R,
38
- isStale: d
39
- } = H(), o = N(() => {
40
- h(n, void 0, { studentId: i });
41
- }, [h, n, i]);
42
- return p(() => {
39
+ isProcessingFailed: S,
40
+ isStale: h
41
+ } = J(), o = v(() => {
42
+ d(n, void 0, { studentId: i });
43
+ }, [d, n, i]);
44
+ return c(() => {
43
45
  o();
44
- }, [o]), p(() => {
45
- e && c && !l && s && s({
46
+ }, [o]), c(() => {
47
+ e && l && !p && s && s({
46
48
  chapterDetails: e,
47
49
  userChapterId: n,
48
50
  studentId: i,
49
51
  userType: a
50
52
  });
51
53
  }, [
52
- c,
53
- e,
54
54
  l,
55
+ e,
56
+ p,
55
57
  s,
56
58
  i,
57
59
  n,
58
60
  a
59
- ]), p(() => {
60
- !t && d && o();
61
- }, [o, t, d]), R ? /* @__PURE__ */ m(P, { $flexGapX: 1.5, $height: "100vh", $justifyContent: "center", $alignItems: "center", children: [
62
- /* @__PURE__ */ r(j, { $renderAs: "h6", children: "Oops! Something went wrong. Please try again later." }),
61
+ ]), c(() => {
62
+ !t && h && o();
63
+ }, [o, t, h]), S ? /* @__PURE__ */ m(U, { $flexGapX: 1.5, $height: "100vh", $justifyContent: "center", $alignItems: "center", children: [
64
+ /* @__PURE__ */ r(H, { $renderAs: "h6", children: "Oops! Something went wrong. Please try again later." }),
63
65
  /* @__PURE__ */ r(
64
- E,
66
+ P,
65
67
  {
66
68
  widthX: 14,
67
69
  size: "small",
@@ -71,59 +73,61 @@ const z = b((f) => {
71
73
  onClick: o
72
74
  }
73
75
  )
74
- ] }) : !e && t ? /* @__PURE__ */ r(T, { height: "80vh" }) : /* @__PURE__ */ m(
75
- O,
76
+ ] }) : !e && t ? /* @__PURE__ */ r(j, { height: "80vh" }) : /* @__PURE__ */ m(
77
+ W,
76
78
  {
77
- ref: x,
79
+ ref: N,
78
80
  $widthX: 50,
79
81
  $disablePointerEvents: t,
80
82
  $justifyContent: "center",
81
83
  $alignItems: "center",
82
84
  children: [
83
- a === "TEACHER" && /* @__PURE__ */ r(U, { $height: "100%", children: /* @__PURE__ */ r(W, { children: /* @__PURE__ */ r(
84
- L,
85
+ a === "TEACHER" && /* @__PURE__ */ r(X, { $height: "100%", children: /* @__PURE__ */ r(z, { children: /* @__PURE__ */ r(
86
+ T,
85
87
  {
86
- Icon: v,
88
+ Icon: E,
87
89
  renderAs: "secondary-gray",
88
90
  analyticsLabel: "chapter_page_exit",
89
91
  size: "xsmall",
90
92
  onClick: $
91
93
  }
92
94
  ) }) }),
93
- t && /* @__PURE__ */ r(X, { children: /* @__PURE__ */ r("img", { src: _.LOADER_1, alt: "loader" }) }),
94
- e && /* @__PURE__ */ m(S, { children: [
95
+ t && /* @__PURE__ */ r(G, { children: /* @__PURE__ */ r("img", { src: D.LOADER_1, alt: "loader" }) }),
96
+ e && /* @__PURE__ */ m(b, { children: [
95
97
  /* @__PURE__ */ r(
96
- F,
98
+ O,
97
99
  {
98
100
  title: e.name,
99
101
  imageHue: e.image_hue,
100
102
  imageUrl: e.image_url,
101
103
  progressStats: e == null ? void 0 : e.progress_stat,
102
- bannerRef: I
104
+ bannerRef: w
103
105
  }
104
106
  ),
105
107
  /* @__PURE__ */ r(
106
- J,
108
+ F,
107
109
  {
108
110
  imageHue: e.image_hue,
109
111
  userType: a,
110
112
  blocks: e.blocks,
111
113
  onBlockSkipUnskip: g,
112
114
  onNodeAttempt: u,
113
- onNodeAssignAsHomework: C,
114
- onNodeMarkAsDone: k,
115
+ onNodeAssignAsHomework: k,
116
+ onNodeMarkAsDone: C,
115
117
  onNodeReattempt: y,
116
118
  onNodeReview: A,
117
119
  onNodeView: B,
118
- coreBlocksRef: w
120
+ coreBlocksRef: R,
121
+ onNodeUnassign: x,
122
+ onNodeUnlock: I
119
123
  }
120
124
  )
121
125
  ] })
122
126
  ]
123
127
  }
124
128
  );
125
- }), ae = z;
129
+ }), me = V;
126
130
  export {
127
- ae as default
131
+ me as default
128
132
  };
129
133
  //# sourceMappingURL=chapter-details.js.map