@cuemath/leap 2.8.61-as3 → 2.8.61-as5

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 (30) hide show
  1. package/dist/assets/line-icons/icons/chevron-left.js.map +1 -1
  2. package/dist/features/chapters/chapters-list/chapter-item/chapter-item-styled.js +20 -19
  3. package/dist/features/chapters/chapters-list/chapter-item/chapter-item-styled.js.map +1 -1
  4. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js +32 -28
  5. package/dist/features/chapters-v2/chapter-details/block-sections/block-sections.js.map +1 -1
  6. package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js +70 -71
  7. package/dist/features/chapters-v2/comps/node-card/teacher-actions/teacher-actions.js.map +1 -1
  8. package/dist/features/chapters-v2/constants/node-constants.js +0 -1
  9. package/dist/features/chapters-v2/constants/node-constants.js.map +1 -1
  10. package/dist/features/chapters-v2/utils/node-card-utils.js +57 -41
  11. package/dist/features/chapters-v2/utils/node-card-utils.js.map +1 -1
  12. package/dist/features/homework/card-menu-options.js +34 -44
  13. package/dist/features/homework/card-menu-options.js.map +1 -1
  14. package/dist/features/homework/homework-card.js +148 -148
  15. package/dist/features/homework/homework-card.js.map +1 -1
  16. package/dist/features/homework/hw-card-list/api/get-homeworks.js +1 -1
  17. package/dist/features/homework/hw-card-list/api/get-homeworks.js.map +1 -1
  18. package/dist/features/homework/hw-card-list/hw-card-list-styled.js +34 -0
  19. package/dist/features/homework/hw-card-list/hw-card-list-styled.js.map +1 -0
  20. package/dist/features/homework/hw-card-list/hw-card-list.js +149 -101
  21. package/dist/features/homework/hw-card-list/hw-card-list.js.map +1 -1
  22. package/dist/features/homework/styles.js +16 -24
  23. package/dist/features/homework/styles.js.map +1 -1
  24. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js +10 -10
  25. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
  26. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +16 -15
  27. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +1 -1
  28. package/dist/features/sheet-v2/resource-list/resource-list.js +11 -10
  29. package/dist/features/sheet-v2/resource-list/resource-list.js.map +1 -1
  30. package/package.json +1 -1
@@ -1,63 +1,79 @@
1
- import { jsx as e, jsxs as m } from "react/jsx-runtime";
2
- import E from "../../../assets/line-icons/icons/alarm.js";
3
- import I from "../../../assets/line-icons/icons/bulb2.js";
4
- import u from "../../../assets/line-icons/icons/check2.js";
1
+ import { jsx as r, jsxs as m } from "react/jsx-runtime";
2
+ import u from "../../../assets/line-icons/icons/alarm.js";
3
+ import d from "../../../assets/line-icons/icons/bulb2.js";
4
+ import I from "../../../assets/line-icons/icons/check2.js";
5
5
  import f from "../../../assets/line-icons/icons/dart.js";
6
- import d from "../../../assets/line-icons/icons/exclamation.js";
6
+ import l from "../../../assets/line-icons/icons/exclamation.js";
7
7
  import T from "../../../assets/line-icons/icons/lock2.js";
8
8
  import p from "../../../assets/line-icons/icons/play2.js";
9
- import l from "../../../assets/line-icons/icons/puzzle.js";
10
- import R from "../../../assets/line-icons/icons/recap.js";
11
- import A from "../../../assets/line-icons/icons/status.js";
12
- import S from "../../../assets/line-icons/icons/testtube.js";
13
- import D from "../../ui/layout/flex-view.js";
14
- import s from "../../ui/text/text.js";
15
- import { InProgressIconWrapper as h } from "../comps/node-card/node-card-styled.js";
16
- import i from "../comps/tag/tag.js";
17
- const g = 60 * 60 * 24, C = ["NOT_STARTED", "IN_PROGRESS"], P = (r) => {
18
- if (!r)
9
+ import R from "../../../assets/line-icons/icons/puzzle.js";
10
+ import A from "../../../assets/line-icons/icons/recap.js";
11
+ import S from "../../../assets/line-icons/icons/status.js";
12
+ import $ from "../../../assets/line-icons/icons/testtube.js";
13
+ import h from "../../ui/layout/flex-view.js";
14
+ import i from "../../ui/text/text.js";
15
+ import { InProgressIconWrapper as s } from "../comps/node-card/node-card-styled.js";
16
+ import a from "../comps/tag/tag.js";
17
+ const D = 60 * 60 * 24, g = ["NOT_STARTED", "IN_PROGRESS"], C = (e) => {
18
+ if (!e)
19
19
  return { isOverdue: !1, daysText: "" };
20
- const c = Math.floor(Date.now() / 1e3), n = r - c, o = Math.ceil(n / g), t = o < 0, a = o > 0 ? `${Math.abs(o)}D` : "";
21
- return { isOverdue: t, daysText: a };
22
- }, W = (r, c, n) => {
23
- const { isOverdue: o, daysText: t } = P(n);
24
- if (o && C.includes(r))
20
+ const n = Math.floor(Date.now() / 1e3), c = e - n, t = Math.ceil(c / D), o = t < 0, E = t > 0 ? `${Math.abs(t)}D` : "";
21
+ return { isOverdue: o, daysText: E };
22
+ }, V = (e, n, c) => {
23
+ const { isOverdue: t, daysText: o } = C(c);
24
+ if (t && g.includes(e))
25
25
  return {
26
- icon: /* @__PURE__ */ e(D, { $background: "RED", $borderRadius: 16, $gapX: 0.24, $gutterX: 0.5, children: /* @__PURE__ */ e(s, { $renderAs: "ac4-black", $color: "WHITE", children: "OVERDUE" }) }),
26
+ icon: /* @__PURE__ */ r(h, { $background: "RED", $borderRadius: 16, $gapX: 0.24, $gutterX: 0.5, children: /* @__PURE__ */ r(i, { $renderAs: "ac4-black", $color: "WHITE", children: "OVERDUE" }) }),
27
27
  top: -10,
28
28
  right: -10
29
29
  };
30
- switch (r) {
30
+ switch (e) {
31
+ case "NOT_STARTED":
32
+ return {
33
+ icon: /* @__PURE__ */ r(
34
+ s,
35
+ {
36
+ $flexDirection: "row",
37
+ $alignItems: "center",
38
+ $justifyContent: "center",
39
+ $gutterX: 0.5,
40
+ $borderRadius: 16,
41
+ children: o && /* @__PURE__ */ r(i, { $renderAs: "ub3-bold", $color: "WHITE", children: o })
42
+ }
43
+ ),
44
+ top: 0,
45
+ right: 0
46
+ };
31
47
  case "LOCKED":
32
48
  return {
33
- icon: /* @__PURE__ */ e(T, { width: 32, height: 32 }),
49
+ icon: /* @__PURE__ */ r(T, { width: 32, height: 32 }),
34
50
  top: -12,
35
51
  right: -12
36
52
  };
37
53
  case "IN_PROGRESS":
38
54
  return {
39
55
  icon: /* @__PURE__ */ m(
40
- h,
56
+ s,
41
57
  {
42
58
  $flexDirection: "row",
43
59
  $alignItems: "center",
44
60
  $justifyContent: "center",
45
- $gutterX: t ? 0.5 : 0,
61
+ $gutterX: o ? 0.25 : 0,
46
62
  $borderRadius: 16,
47
63
  children: [
48
- t && /* @__PURE__ */ e(s, { $renderAs: "ac4-black", $color: "WHITE", children: t }),
49
- /* @__PURE__ */ e(A, {})
64
+ o && /* @__PURE__ */ r(i, { $renderAs: "ub3-bold", $color: "WHITE", children: o }),
65
+ /* @__PURE__ */ r(S, {})
50
66
  ]
51
67
  }
52
68
  )
53
69
  };
54
70
  case "COMPLETED":
55
71
  return {
56
- icon: /* @__PURE__ */ e(
57
- i,
72
+ icon: /* @__PURE__ */ r(
73
+ a,
58
74
  {
59
- Icon: u,
60
- label: typeof c == "number" ? `${c}%` : void 0
75
+ Icon: I,
76
+ label: typeof n == "number" ? `${n}%` : void 0
61
77
  }
62
78
  ),
63
79
  top: -10,
@@ -65,7 +81,7 @@ const g = 60 * 60 * 24, C = ["NOT_STARTED", "IN_PROGRESS"], P = (r) => {
65
81
  };
66
82
  case "WAIT_FOR_REVIEW":
67
83
  return {
68
- icon: /* @__PURE__ */ e(i, { Icon: d }),
84
+ icon: /* @__PURE__ */ r(a, { Icon: l }),
69
85
  top: -10,
70
86
  right: -10
71
87
  };
@@ -74,16 +90,16 @@ const g = 60 * 60 * 24, C = ["NOT_STARTED", "IN_PROGRESS"], P = (r) => {
74
90
  icon: void 0
75
91
  };
76
92
  }
77
- }, H = (r) => {
78
- switch (r) {
93
+ }, X = (e) => {
94
+ switch (e) {
79
95
  case "LEARNING":
80
- return I;
96
+ return d;
81
97
  case "RECAP":
82
- return R;
98
+ return A;
83
99
  case "DYNAMIC":
84
100
  case "ASSESSMENT":
85
101
  case "CHAPTER_ASSESSMENT":
86
- return E;
102
+ return u;
87
103
  case "PRACTICE":
88
104
  case "EXTRA_PRACTICE":
89
105
  case "TARGET_PRACTICE":
@@ -92,15 +108,15 @@ const g = 60 * 60 * 24, C = ["NOT_STARTED", "IN_PROGRESS"], P = (r) => {
92
108
  case "PUZZLE_EASY":
93
109
  case "PUZZLE_MEDIUM":
94
110
  case "PUZZLE_HARD":
95
- return l;
111
+ return R;
96
112
  case "VIDEO":
97
113
  return p;
98
114
  default:
99
- return S;
115
+ return $;
100
116
  }
101
117
  };
102
118
  export {
103
- H as getNodeCardBasedIcon,
104
- W as getNodeStateBasedTagInfo
119
+ X as getNodeCardBasedIcon,
120
+ V as getNodeStateBasedTagInfo
105
121
  };
106
122
  //# sourceMappingURL=node-card-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-card-utils.js","sources":["../../../../src/features/chapters-v2/utils/node-card-utils.tsx"],"sourcesContent":["import type { INodeDataProps } from '../comps/node-card/node-card-types';\n\nimport AlarmIcon from '../../../assets/line-icons/icons/alarm';\nimport Bulb2Icon from '../../../assets/line-icons/icons/bulb2';\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport DartIcon from '../../../assets/line-icons/icons/dart';\nimport ExclamationIcon from '../../../assets/line-icons/icons/exclamation';\nimport Lock2Icon from '../../../assets/line-icons/icons/lock2';\nimport Play2Icon from '../../../assets/line-icons/icons/play2';\nimport PuzzleIcon from '../../../assets/line-icons/icons/puzzle';\nimport RecapIcon from '../../../assets/line-icons/icons/recap';\nimport StatusIcon from '../../../assets/line-icons/icons/status';\nimport TestTubeIcon from '../../../assets/line-icons/icons/testtube';\nimport FlexView from '../..//ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport { InProgressIconWrapper } from '../comps/node-card/node-card-styled';\nimport Tag from '../comps/tag/tag';\n\ninterface DueDateInfo {\n isOverdue: boolean;\n daysText: string;\n}\n\nconst SECONDS_PER_DAY = 60 * 60 * 24;\nconst OVERDUE_TAG_STATES: INodeDataProps['state'][] = ['NOT_STARTED', 'IN_PROGRESS'];\n\nconst calculateDueDateInfo = (dueDateTs?: number | null): DueDateInfo => {\n if (!dueDateTs) {\n return { isOverdue: false, daysText: '' };\n }\n\n const currentTimestamp = Math.floor(Date.now() / 1000);\n const differenceInSeconds = dueDateTs - currentTimestamp;\n const differenceInDays = Math.ceil(differenceInSeconds / SECONDS_PER_DAY);\n\n const isOverdue = differenceInDays < 0;\n\n const daysText = differenceInDays > 0 ? `${Math.abs(differenceInDays)}D` : '';\n\n return { isOverdue, daysText };\n};\n\nconst getNodeStateBasedTagInfo = (\n nodeState: INodeDataProps['state'],\n accuracy?: number | null,\n dueDateTs?: number | null,\n) => {\n const { isOverdue, daysText } = calculateDueDateInfo(dueDateTs);\n\n if (isOverdue && OVERDUE_TAG_STATES.includes(nodeState)) {\n return {\n icon: (\n <FlexView $background=\"RED\" $borderRadius={16} $gapX={0.24} $gutterX={0.5}>\n <Text $renderAs=\"ac4-black\" $color=\"WHITE\">\n OVERDUE\n </Text>\n </FlexView>\n ),\n top: -10,\n right: -10,\n };\n }\n\n switch (nodeState) {\n case 'LOCKED':\n return {\n icon: <Lock2Icon width={32} height={32} />,\n top: -12,\n right: -12,\n };\n case 'IN_PROGRESS':\n return {\n icon: (\n <InProgressIconWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gutterX={daysText ? 0.5 : 0}\n $borderRadius={16}\n >\n {daysText && (\n <Text $renderAs=\"ac4-black\" $color=\"WHITE\">\n {daysText}\n </Text>\n )}\n <StatusIcon />\n </InProgressIconWrapper>\n ),\n };\n case 'COMPLETED':\n return {\n icon: (\n <Tag\n Icon={Check2Icon}\n label={typeof accuracy === 'number' ? `${accuracy}%` : undefined}\n />\n ),\n top: -10,\n right: -10,\n };\n case 'WAIT_FOR_REVIEW':\n return {\n icon: <Tag Icon={ExclamationIcon} />,\n top: -10,\n right: -10,\n };\n\n default:\n return {\n icon: undefined,\n };\n }\n};\n\nconst getNodeCardBasedIcon = (nodeType: INodeDataProps['node_type']) => {\n switch (nodeType) {\n case 'LEARNING':\n return Bulb2Icon;\n case 'RECAP':\n return RecapIcon;\n case 'DYNAMIC':\n case 'ASSESSMENT':\n case 'CHAPTER_ASSESSMENT':\n return AlarmIcon;\n case 'PRACTICE':\n case 'EXTRA_PRACTICE':\n case 'TARGET_PRACTICE':\n case 'MASTERY':\n return DartIcon;\n case 'PUZZLE_EASY':\n case 'PUZZLE_MEDIUM':\n case 'PUZZLE_HARD':\n return PuzzleIcon;\n case 'VIDEO':\n return Play2Icon;\n\n default:\n return TestTubeIcon;\n }\n};\n\nexport { getNodeStateBasedTagInfo, getNodeCardBasedIcon };\n"],"names":["SECONDS_PER_DAY","OVERDUE_TAG_STATES","calculateDueDateInfo","dueDateTs","currentTimestamp","differenceInSeconds","differenceInDays","isOverdue","daysText","getNodeStateBasedTagInfo","nodeState","accuracy","jsx","FlexView","Text","Lock2Icon","jsxs","InProgressIconWrapper","StatusIcon","Tag","Check2Icon","ExclamationIcon","getNodeCardBasedIcon","nodeType","Bulb2Icon","RecapIcon","AlarmIcon","DartIcon","PuzzleIcon","Play2Icon","TestTubeIcon"],"mappings":";;;;;;;;;;;;;;;;AAuBA,MAAMA,IAAkB,KAAK,KAAK,IAC5BC,IAAgD,CAAC,eAAe,aAAa,GAE7EC,IAAuB,CAACC,MAA2C;AACvE,MAAI,CAACA;AACH,WAAO,EAAE,WAAW,IAAO,UAAU,GAAG;AAG1C,QAAMC,IAAmB,KAAK,MAAM,KAAK,IAAA,IAAQ,GAAI,GAC/CC,IAAsBF,IAAYC,GAClCE,IAAmB,KAAK,KAAKD,IAAsBL,CAAe,GAElEO,IAAYD,IAAmB,GAE/BE,IAAWF,IAAmB,IAAI,GAAG,KAAK,IAAIA,CAAgB,CAAC,MAAM;AAEpE,SAAA,EAAE,WAAAC,GAAW,UAAAC;AACtB,GAEMC,IAA2B,CAC/BC,GACAC,GACAR,MACG;AACH,QAAM,EAAE,WAAAI,GAAW,UAAAC,EAAS,IAAIN,EAAqBC,CAAS;AAE9D,MAAII,KAAaN,EAAmB,SAASS,CAAS;AAC7C,WAAA;AAAA,MACL,MACG,gBAAAE,EAAAC,GAAA,EAAS,aAAY,OAAM,eAAe,IAAI,OAAO,MAAM,UAAU,KACpE,4BAACC,GAAK,EAAA,WAAU,aAAY,QAAO,SAAQ,oBAE3C,CAAA,GACF;AAAA,MAEF,KAAK;AAAA,MACL,OAAO;AAAA,IAAA;AAIX,UAAQJ,GAAW;AAAA,IACjB,KAAK;AACI,aAAA;AAAA,QACL,MAAO,gBAAAE,EAAAG,GAAA,EAAU,OAAO,IAAI,QAAQ,IAAI;AAAA,QACxC,KAAK;AAAA,QACL,OAAO;AAAA,MAAA;AAAA,IAEX,KAAK;AACI,aAAA;AAAA,QACL,MACE,gBAAAC;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,gBAAe;AAAA,YACf,aAAY;AAAA,YACZ,iBAAgB;AAAA,YAChB,UAAUT,IAAW,MAAM;AAAA,YAC3B,eAAe;AAAA,YAEd,UAAA;AAAA,cAAAA,uBACEM,GAAK,EAAA,WAAU,aAAY,QAAO,SAChC,UACHN,GAAA;AAAA,gCAEDU,GAAW,EAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QACd;AAAA,MAAA;AAAA,IAGN,KAAK;AACI,aAAA;AAAA,QACL,MACE,gBAAAN;AAAA,UAACO;AAAA,UAAA;AAAA,YACC,MAAMC;AAAA,YACN,OAAO,OAAOT,KAAa,WAAW,GAAGA,CAAQ,MAAM;AAAA,UAAA;AAAA,QACzD;AAAA,QAEF,KAAK;AAAA,QACL,OAAO;AAAA,MAAA;AAAA,IAEX,KAAK;AACI,aAAA;AAAA,QACL,MAAM,gBAAAC,EAACO,GAAI,EAAA,MAAME,EAAiB,CAAA;AAAA,QAClC,KAAK;AAAA,QACL,OAAO;AAAA,MAAA;AAAA,IAGX;AACS,aAAA;AAAA,QACL,MAAM;AAAA,MAAA;AAAA,EAEZ;AACF,GAEMC,IAAuB,CAACC,MAA0C;AACtE,UAAQA,GAAU;AAAA,IAChB,KAAK;AACI,aAAAC;AAAA,IACT,KAAK;AACI,aAAAC;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAAC;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAAC;AAAA,IACT,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AACI,aAAAC;AAAA,IACT,KAAK;AACI,aAAAC;AAAA,IAET;AACS,aAAAC;AAAA,EACX;AACF;"}
1
+ {"version":3,"file":"node-card-utils.js","sources":["../../../../src/features/chapters-v2/utils/node-card-utils.tsx"],"sourcesContent":["import type { INodeDataProps } from '../comps/node-card/node-card-types';\n\nimport AlarmIcon from '../../../assets/line-icons/icons/alarm';\nimport Bulb2Icon from '../../../assets/line-icons/icons/bulb2';\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport DartIcon from '../../../assets/line-icons/icons/dart';\nimport ExclamationIcon from '../../../assets/line-icons/icons/exclamation';\nimport Lock2Icon from '../../../assets/line-icons/icons/lock2';\nimport Play2Icon from '../../../assets/line-icons/icons/play2';\nimport PuzzleIcon from '../../../assets/line-icons/icons/puzzle';\nimport RecapIcon from '../../../assets/line-icons/icons/recap';\nimport StatusIcon from '../../../assets/line-icons/icons/status';\nimport TestTubeIcon from '../../../assets/line-icons/icons/testtube';\nimport FlexView from '../..//ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport { InProgressIconWrapper } from '../comps/node-card/node-card-styled';\nimport Tag from '../comps/tag/tag';\n\ninterface DueDateInfo {\n isOverdue: boolean;\n daysText: string;\n}\n\nconst SECONDS_PER_DAY = 60 * 60 * 24;\nconst OVERDUE_TAG_STATES: INodeDataProps['state'][] = ['NOT_STARTED', 'IN_PROGRESS'];\n\nconst calculateDueDateInfo = (dueDateTs?: number | null): DueDateInfo => {\n if (!dueDateTs) {\n return { isOverdue: false, daysText: '' };\n }\n\n const currentTimestamp = Math.floor(Date.now() / 1000);\n const differenceInSeconds = dueDateTs - currentTimestamp;\n const differenceInDays = Math.ceil(differenceInSeconds / SECONDS_PER_DAY);\n\n const isOverdue = differenceInDays < 0;\n\n const daysText = differenceInDays > 0 ? `${Math.abs(differenceInDays)}D` : '';\n\n return { isOverdue, daysText };\n};\n\nconst getNodeStateBasedTagInfo = (\n nodeState: INodeDataProps['state'],\n accuracy?: number | null,\n dueDateTs?: number | null,\n) => {\n const { isOverdue, daysText } = calculateDueDateInfo(dueDateTs);\n\n if (isOverdue && OVERDUE_TAG_STATES.includes(nodeState)) {\n return {\n icon: (\n <FlexView $background=\"RED\" $borderRadius={16} $gapX={0.24} $gutterX={0.5}>\n <Text $renderAs=\"ac4-black\" $color=\"WHITE\">\n OVERDUE\n </Text>\n </FlexView>\n ),\n top: -10,\n right: -10,\n };\n }\n\n switch (nodeState) {\n case 'NOT_STARTED':\n return {\n icon: (\n <InProgressIconWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gutterX={0.5}\n $borderRadius={16}\n >\n {daysText && (\n <Text $renderAs=\"ub3-bold\" $color=\"WHITE\">\n {daysText}\n </Text>\n )}\n </InProgressIconWrapper>\n ),\n top: 0,\n right: 0,\n };\n case 'LOCKED':\n return {\n icon: <Lock2Icon width={32} height={32} />,\n top: -12,\n right: -12,\n };\n case 'IN_PROGRESS':\n return {\n icon: (\n <InProgressIconWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $gutterX={daysText ? 0.25 : 0}\n $borderRadius={16}\n >\n {daysText && (\n <Text $renderAs=\"ub3-bold\" $color=\"WHITE\">\n {daysText}\n </Text>\n )}\n <StatusIcon />\n </InProgressIconWrapper>\n ),\n };\n case 'COMPLETED':\n return {\n icon: (\n <Tag\n Icon={Check2Icon}\n label={typeof accuracy === 'number' ? `${accuracy}%` : undefined}\n />\n ),\n top: -10,\n right: -10,\n };\n case 'WAIT_FOR_REVIEW':\n return {\n icon: <Tag Icon={ExclamationIcon} />,\n top: -10,\n right: -10,\n };\n\n default:\n return {\n icon: undefined,\n };\n }\n};\n\nconst getNodeCardBasedIcon = (nodeType: INodeDataProps['node_type']) => {\n switch (nodeType) {\n case 'LEARNING':\n return Bulb2Icon;\n case 'RECAP':\n return RecapIcon;\n case 'DYNAMIC':\n case 'ASSESSMENT':\n case 'CHAPTER_ASSESSMENT':\n return AlarmIcon;\n case 'PRACTICE':\n case 'EXTRA_PRACTICE':\n case 'TARGET_PRACTICE':\n case 'MASTERY':\n return DartIcon;\n case 'PUZZLE_EASY':\n case 'PUZZLE_MEDIUM':\n case 'PUZZLE_HARD':\n return PuzzleIcon;\n case 'VIDEO':\n return Play2Icon;\n\n default:\n return TestTubeIcon;\n }\n};\n\nexport { getNodeStateBasedTagInfo, getNodeCardBasedIcon };\n"],"names":["SECONDS_PER_DAY","OVERDUE_TAG_STATES","calculateDueDateInfo","dueDateTs","currentTimestamp","differenceInSeconds","differenceInDays","isOverdue","daysText","getNodeStateBasedTagInfo","nodeState","accuracy","jsx","FlexView","Text","InProgressIconWrapper","Lock2Icon","jsxs","StatusIcon","Tag","Check2Icon","ExclamationIcon","getNodeCardBasedIcon","nodeType","Bulb2Icon","RecapIcon","AlarmIcon","DartIcon","PuzzleIcon","Play2Icon","TestTubeIcon"],"mappings":"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"}
@@ -1,48 +1,38 @@
1
- import { jsx as o, jsxs as m } from "react/jsx-runtime";
2
- import { memo as $, useState as d, useRef as h, useEffect as C } from "react";
3
- import w from "../ui/buttons/clickable/clickable.js";
4
- import g from "../ui/portal/portal.js";
5
- import { CardOptions as x, CardOptionWrapper as I, OptionText as O } from "./styles.js";
6
- const W = $(
7
- ({ options: p, triggerRef: e, visible: n, $width: s }) => {
8
- const [i, f] = d({ top: 0, left: 0 }), u = h(null);
9
- return C(() => {
10
- if (e.current && n) {
11
- const r = e.current.getBoundingClientRect(), l = r.bottom + window.scrollY, t = r.left + window.scrollX;
12
- f({ top: l, left: t });
13
- }
14
- }, [e, n]), n ? /* @__PURE__ */ o(g, { portalId: "menu-options-root", children: /* @__PURE__ */ o(
15
- x,
16
- {
17
- ref: u,
18
- $background: "BLACK_2",
19
- $top: i.top,
20
- $left: i.left,
21
- $borderColor: "WHITE_T_38",
22
- $gapX: 0.5,
23
- $width: s || 180,
24
- children: p.map(({ icon: r, label: l, id: t, onClick: a, disabled: c }) => /* @__PURE__ */ o(w, { onClick: () => c ? null : a(t), label: t, children: /* @__PURE__ */ m(
25
- I,
26
- {
27
- $flexDirection: "row",
28
- $alignItems: "center",
29
- $flexGap: 8,
30
- $gapX: 0.5,
31
- $gutterX: 1,
32
- $opacity: c ? 0.5 : 1,
33
- $disabled: c,
34
- children: [
35
- /* @__PURE__ */ o(r, { width: 20, height: 20 }),
36
- /* @__PURE__ */ o(O, { $renderAs: "ub3", $color: "WHITE", children: l })
37
- ]
38
- },
39
- t
40
- ) }, t))
41
- }
42
- ) }) : null;
43
- }
1
+ import { jsx as o, jsxs as c } from "react/jsx-runtime";
2
+ import { memo as m } from "react";
3
+ import u from "../ui/buttons/clickable/clickable.js";
4
+ import { CardMenuOptionsWrapper as h, CardOptionWrapper as s, OptionText as d } from "./styles.js";
5
+ const b = m(
6
+ ({ options: t, shouldOpenOnRight: i, visible: n, $width: l }) => n ? /* @__PURE__ */ o(
7
+ h,
8
+ {
9
+ $visible: n,
10
+ $background: "BLACK_2",
11
+ $borderColor: "WHITE_T_38",
12
+ $gapX: 0.5,
13
+ $width: l,
14
+ $shouldopenonright: i,
15
+ children: t.map(({ icon: p, label: a, id: r, onClick: $, disabled: e }) => /* @__PURE__ */ o(u, { onClick: () => e ? null : $(r), label: r, children: /* @__PURE__ */ c(
16
+ s,
17
+ {
18
+ $flexDirection: "row",
19
+ $alignItems: "center",
20
+ $flexGap: 8,
21
+ $gapX: 0.5,
22
+ $gutterX: 1,
23
+ $opacity: e ? 0.5 : 1,
24
+ $disabled: e,
25
+ children: [
26
+ /* @__PURE__ */ o(p, { width: 20, height: 20 }),
27
+ /* @__PURE__ */ o(d, { $renderAs: "ub3", $color: "WHITE", children: a })
28
+ ]
29
+ },
30
+ r
31
+ ) }, r))
32
+ }
33
+ ) : null
44
34
  );
45
35
  export {
46
- W as default
36
+ b as default
47
37
  };
48
38
  //# sourceMappingURL=card-menu-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"card-menu-options.js","sources":["../../../src/features/homework/card-menu-options.tsx"],"sourcesContent":["import type { FC, SVGProps } from 'react';\n\nimport { memo, useEffect, useRef, useState } from 'react';\n\nimport Clickable from '../ui/buttons/clickable/clickable';\nimport Portal from '../ui/portal/portal';\nimport * as Styled from './styles';\n\ninterface ICardMenuOption {\n id: string;\n label: string;\n icon: FC<SVGProps<SVGSVGElement>>;\n onClick: (id: string) => void;\n disabled: boolean;\n}\n\ninterface ICardMenuOptionsProps {\n $width?: string | number;\n options: ICardMenuOption[];\n triggerRef: React.RefObject<HTMLElement>;\n visible: boolean;\n}\n\nconst CardMenuOptions: FC<ICardMenuOptionsProps> = memo(\n ({ options, triggerRef, visible, $width }) => {\n const [position, setPosition] = useState<{ top: number; left: number }>({ top: 0, left: 0 });\n const menuRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (triggerRef.current && visible) {\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const top = triggerRect.bottom + window.scrollY;\n const left = triggerRect.left + window.scrollX;\n\n setPosition({ top, left });\n }\n }, [triggerRef, visible]);\n\n if (!visible) return null;\n\n return (\n <Portal portalId=\"menu-options-root\">\n <Styled.CardOptions\n ref={menuRef}\n $background=\"BLACK_2\"\n $top={position.top}\n $left={position.left}\n $borderColor=\"WHITE_T_38\"\n $gapX={0.5}\n $width={$width || 180}\n >\n {options.map(({ icon: OptionIcon, label, id, onClick, disabled }) => (\n <Clickable onClick={() => (!disabled ? onClick(id) : null)} label={id} key={id}>\n <Styled.CardOptionWrapper\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 >\n <OptionIcon width={20} height={20} />\n <Styled.OptionText $renderAs=\"ub3\" $color=\"WHITE\">\n {label}\n </Styled.OptionText>\n </Styled.CardOptionWrapper>\n </Clickable>\n ))}\n </Styled.CardOptions>\n </Portal>\n );\n },\n);\n\nexport default CardMenuOptions;\n"],"names":["CardMenuOptions","memo","options","triggerRef","visible","$width","position","setPosition","useState","menuRef","useRef","useEffect","triggerRect","top","left","jsx","Portal","Styled.CardOptions","OptionIcon","label","id","onClick","disabled","Clickable","jsxs","Styled.CardOptionWrapper","Styled.OptionText"],"mappings":";;;;;AAuBA,MAAMA,IAA6CC;AAAA,EACjD,CAAC,EAAE,SAAAC,GAAS,YAAAC,GAAY,SAAAC,GAAS,QAAAC,QAAa;AACtC,UAAA,CAACC,GAAUC,CAAW,IAAIC,EAAwC,EAAE,KAAK,GAAG,MAAM,EAAA,CAAG,GACrFC,IAAUC,EAAuB,IAAI;AAYvC,WAVJC,EAAU,MAAM;AACV,UAAAR,EAAW,WAAWC,GAAS;AAC3B,cAAAQ,IAAcT,EAAW,QAAQ,sBAAsB,GACvDU,IAAMD,EAAY,SAAS,OAAO,SAClCE,IAAOF,EAAY,OAAO,OAAO;AAE3B,QAAAL,EAAA,EAAE,KAAAM,GAAK,MAAAC,EAAA,CAAM;AAAA,MAC3B;AAAA,IAAA,GACC,CAACX,GAAYC,CAAO,CAAC,GAEnBA,IAGH,gBAAAW,EAACC,GAAO,EAAA,UAAS,qBACf,UAAA,gBAAAD;AAAA,MAACE;AAAAA,MAAA;AAAA,QACC,KAAKR;AAAA,QACL,aAAY;AAAA,QACZ,MAAMH,EAAS;AAAA,QACf,OAAOA,EAAS;AAAA,QAChB,cAAa;AAAA,QACb,OAAO;AAAA,QACP,QAAQD,KAAU;AAAA,QAEjB,UAAAH,EAAQ,IAAI,CAAC,EAAE,MAAMgB,GAAY,OAAAC,GAAO,IAAAC,GAAI,SAAAC,GAAS,UAAAC,0BACnDC,GAAU,EAAA,SAAS,MAAQD,IAAyB,OAAdD,EAAQD,CAAE,GAAW,OAAOA,GACjE,UAAA,gBAAAI;AAAA,UAACC;AAAAA,UAAA;AAAA,YACC,gBAAe;AAAA,YACf,aAAY;AAAA,YACZ,UAAU;AAAA,YACV,OAAO;AAAA,YACP,UAAU;AAAA,YACV,UAAUH,IAAW,MAAM;AAAA,YAC3B,WAAWA;AAAA,YAGX,UAAA;AAAA,cAAA,gBAAAP,EAACG,GAAW,EAAA,OAAO,IAAI,QAAQ,IAAI;AAAA,cACnC,gBAAAH,EAACW,GAAA,EAAkB,WAAU,OAAM,QAAO,SACvC,UACHP,GAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UALKC;AAAA,QAAA,EAMP,GAf0EA,CAgB5E,CACD;AAAA,MAAA;AAAA,IAEL,EAAA,CAAA,IAjCmB;AAAA,EAmCvB;AACF;"}
1
+ {"version":3,"file":"card-menu-options.js","sources":["../../../src/features/homework/card-menu-options.tsx"],"sourcesContent":["import type { FC, SVGProps } from 'react';\n\nimport { memo } from 'react';\n\nimport Clickable from '../ui/buttons/clickable/clickable';\nimport * as Styled from './styles';\n\ninterface ICardMenuOption {\n id: string;\n label: string;\n icon: FC<SVGProps<SVGSVGElement>>;\n onClick: (id: string) => void;\n disabled: boolean;\n}\n\ninterface ICardMenuOptionsProps {\n $width?: string | number;\n options: ICardMenuOption[];\n triggerRef: React.RefObject<HTMLElement>;\n visible: boolean;\n shouldOpenOnRight: boolean;\n}\n\nconst CardMenuOptions: FC<ICardMenuOptionsProps> = memo(\n ({ options, shouldOpenOnRight, visible, $width }) => {\n if (!visible) return null;\n\n return (\n <Styled.CardMenuOptionsWrapper\n $visible={visible}\n $background=\"BLACK_2\"\n $borderColor=\"WHITE_T_38\"\n $gapX={0.5}\n $width={$width}\n $shouldopenonright={shouldOpenOnRight}\n >\n {options.map(({ icon: OptionIcon, label, id, onClick, disabled }) => (\n <Clickable onClick={() => (!disabled ? onClick(id) : null)} label={id} key={id}>\n <Styled.CardOptionWrapper\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 >\n <OptionIcon width={20} height={20} />\n <Styled.OptionText $renderAs=\"ub3\" $color=\"WHITE\">\n {label}\n </Styled.OptionText>\n </Styled.CardOptionWrapper>\n </Clickable>\n ))}\n </Styled.CardMenuOptionsWrapper>\n );\n },\n);\n\nexport default CardMenuOptions;\n"],"names":["CardMenuOptions","memo","options","shouldOpenOnRight","visible","$width","jsx","Styled.CardMenuOptionsWrapper","OptionIcon","label","id","onClick","disabled","Clickable","jsxs","Styled.CardOptionWrapper","Styled.OptionText"],"mappings":";;;;AAuBA,MAAMA,IAA6CC;AAAA,EACjD,CAAC,EAAE,SAAAC,GAAS,mBAAAC,GAAmB,SAAAC,GAAS,QAAAC,QACjCD,IAGH,gBAAAE;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,UAAUH;AAAA,MACV,aAAY;AAAA,MACZ,cAAa;AAAA,MACb,OAAO;AAAA,MACP,QAAAC;AAAA,MACA,oBAAoBF;AAAA,MAEnB,UAAAD,EAAQ,IAAI,CAAC,EAAE,MAAMM,GAAY,OAAAC,GAAO,IAAAC,GAAI,SAAAC,GAAS,UAAAC,0BACnDC,GAAU,EAAA,SAAS,MAAQD,IAAyB,OAAdD,EAAQD,CAAE,GAAW,OAAOA,GACjE,UAAA,gBAAAI;AAAA,QAACC;AAAAA,QAAA;AAAA,UACC,gBAAe;AAAA,UACf,aAAY;AAAA,UACZ,UAAU;AAAA,UACV,OAAO;AAAA,UACP,UAAU;AAAA,UACV,UAAUH,IAAW,MAAM;AAAA,UAC3B,WAAWA;AAAA,UAGX,UAAA;AAAA,YAAA,gBAAAN,EAACE,GAAW,EAAA,OAAO,IAAI,QAAQ,IAAI;AAAA,YACnC,gBAAAF,EAACU,GAAA,EAAkB,WAAU,OAAM,QAAO,SACvC,UACHP,GAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QALKC;AAAA,MAAA,EAMP,GAf0EA,CAgB5E,CACD;AAAA,IAAA;AAAA,EAAA,IA7BgB;AAiCzB;"}