@cuemath/leap 3.5.9-as3 → 3.5.9-as4

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.
@@ -1 +1 @@
1
- {"version":3,"file":"use-daily-timeline-get.js","sources":["../../../../src/features/timeline/api/use-daily-timeline-get.ts"],"sourcesContent":["import { createGetAPI } from '@cuemath/rest-api';\n\nimport { BASE_URL_V3 } from '../../../constants/api';\nimport { stringify } from '../../../helpers/query-string';\nimport type { TCourseStream } from '../../milestone/create/milestone-create-types';\n\nexport type TState = 'COMPLETED' | 'IN_PROGRESS' | 'PENDING';\n\nexport interface ITimeLineItem {\n accuracy: number | null;\n block_type: string | null;\n card_type?: string;\n chapter_name: string | null;\n feedback_comments: string | null;\n image_hue: string | null;\n is_timed: boolean;\n items: { ref: string }[] | null;\n label: string;\n learnosity_activity_ref: string | null;\n max_score: number | null;\n node_id: string;\n node_type: string;\n points: number | null;\n state: TState;\n subtext: string | null;\n task_type: string | null;\n time_taken: number | null;\n tip: string | null;\n title: string;\n total_questions: number | null;\n total_score: number | null;\n user_block_id: string | null;\n user_id?: string;\n user_node_id: string;\n}\n\nexport interface ITimeLineEntry {\n cards: ITimeLineItem[];\n course_stream: TCourseStream | 'CIRCLE' | null;\n summary: string | null;\n type: 'CW' | 'HW' | 'CIRCLE';\n}\n\nexport interface ITimelineData {\n daily_logs: ITimeLineEntry[];\n from_date: string;\n to_date: string;\n}\n\nexport interface ITimelineResponse {\n curr_page: number | null;\n next_page: number | null;\n per_page: number | null;\n total_pages: number | null;\n user_logs: ITimelineData[];\n}\n\ninterface IGetUserTimelineParams {\n course_stream?: TCourseStream[];\n page?: number; // defaults to 1\n size?: number; // defaults to 10 - page size means no of dates data\n timezone: string;\n}\n\nconst { useGet: useDailyTimelineGet } = createGetAPI<ITimelineResponse, IGetUserTimelineParams>({\n getURL: (studentId: string, queryParams) => {\n return `${BASE_URL_V3}/user-timeline/${studentId}?${stringify(queryParams)}`;\n },\n});\n\nexport { useDailyTimelineGet };\n"],"names":["useDailyTimelineGet","createGetAPI","studentId","queryParams","BASE_URL_V3","stringify"],"mappings":";;;AAgEA,MAAM,EAAE,QAAQA,EAAoB,IAAIC,EAAwD;AAAA,EAC9F,QAAQ,CAACC,GAAmBC,MACnB,GAAGC,CAAW,kBAAkBF,CAAS,IAAIG,EAAUF,CAAW,CAAC;AAE9E,CAAC;"}
1
+ {"version":3,"file":"use-daily-timeline-get.js","sources":["../../../../src/features/timeline/api/use-daily-timeline-get.ts"],"sourcesContent":["import { createGetAPI } from '@cuemath/rest-api';\n\nimport { BASE_URL_V3 } from '../../../constants/api';\nimport { stringify } from '../../../helpers/query-string';\nimport type { TCourseStream } from '../../milestone/create/milestone-create-types';\nimport { CARD_TYPE, NODE_STATE } from '../enums/enums';\n\nexport interface ITimeLineItem {\n accuracy: number | null;\n block_type: string | null;\n card_type?: string;\n chapter_name: string | null;\n feedback_comments: string | null;\n image_hue: string | null;\n is_timed: boolean;\n items: { ref: string }[] | null;\n label: string;\n learnosity_activity_ref: string | null;\n max_score: number | null;\n node_id: string;\n node_type: string;\n points: number | null;\n state: NODE_STATE;\n subtext: string | null;\n task_type: string | null;\n time_taken: number | null;\n tip: string | null;\n title: string;\n total_questions: number | null;\n total_score: number | null;\n user_block_id: string | null;\n user_id?: string;\n user_node_id: string;\n}\n\nexport interface ITimeLineEntry {\n cards: ITimeLineItem[];\n course_stream: TCourseStream | 'CIRCLE' | null;\n summary: string | null;\n type: CARD_TYPE;\n}\n\nexport interface ITimelineData {\n daily_logs: ITimeLineEntry[];\n from_date: string;\n to_date: string;\n}\n\nexport interface ITimelineResponse {\n curr_page: number | null;\n next_page: number | null;\n per_page: number | null;\n total_pages: number | null;\n user_logs: ITimelineData[];\n}\n\ninterface IGetUserTimelineParams {\n course_stream?: TCourseStream[];\n page?: number;\n size?: number;\n timezone: string;\n}\n\nconst { useGet: useDailyTimelineGet } = createGetAPI<ITimelineResponse, IGetUserTimelineParams>({\n getURL: (studentId: string, queryParams) => {\n return `${BASE_URL_V3}/user-timeline/${studentId}?${stringify(queryParams)}`;\n },\n});\n\nexport { useDailyTimelineGet };\n"],"names":["useDailyTimelineGet","createGetAPI","studentId","queryParams","BASE_URL_V3","stringify"],"mappings":";;;AA+DA,MAAM,EAAE,QAAQA,EAAoB,IAAIC,EAAwD;AAAA,EAC9F,QAAQ,CAACC,GAAmBC,MACnB,GAAGC,CAAW,kBAAkBF,CAAS,IAAIG,EAAUF,CAAW,CAAC;AAE9E,CAAC;"}
@@ -1,30 +1,32 @@
1
1
  import { jsxs as r, jsx as o } from "react/jsx-runtime";
2
- import { memo as L, useCallback as p } from "react";
3
- import _ from "../../../ui/buttons/text-button/text-button.js";
2
+ import { memo as S, useMemo as D, useCallback as p } from "react";
3
+ import $ from "../../../ui/buttons/text-button/text-button.js";
4
4
  import t from "../../../ui/layout/flex-view.js";
5
5
  import d from "../../../ui/text/text.js";
6
- import { getStateConf as S } from "../utils.js";
7
- import { BLOCK_TYPE as B } from "../../../chapters-v2/constants/block-constants.js";
6
+ import { getStateConf as B } from "../utils.js";
7
+ import { BLOCK_TYPE as L } from "../../../chapters-v2/constants/block-constants.js";
8
8
  import { CODING_ACTIVITY_NODE_TYPES as R } from "../constants.js";
9
- import { USER_TYPE as C } from "../../daily-timeline-types.js";
10
- const z = L(
11
- ({ type: s, userType: m, card: $, onPuzzleClick: i, onReviewClick: l }) => {
9
+ import { NODE_STATE as z, CARD_TYPE as N, USER_TYPE as C } from "../../enums/enums.js";
10
+ const O = S(
11
+ ({ type: m, userType: n, card: E, onPuzzleClick: s, onReviewClick: c }) => {
12
12
  const {
13
13
  label: a,
14
14
  title: b,
15
15
  state: f,
16
- subtext: h,
16
+ subtext: u,
17
17
  user_node_id: e,
18
- block_type: E,
19
- user_block_id: u,
20
- node_type: x
21
- } = $, n = E === B.SAT_MOCK_TEST, I = a === "PUZZLE", [T, w] = S(f), c = f === "COMPLETED", A = m === C.TEACHER && s !== "CIRCLE" && (!n || c) || m === C.STUDENT && c && s !== "CIRCLE" && !R.includes(x), g = p(() => {
22
- e && i && i(e);
23
- }, [i, e]), k = p(() => {
24
- l && e && l(e, n, u);
25
- }, [n, l, u, e]);
18
+ block_type: x,
19
+ user_block_id: T,
20
+ node_type: _
21
+ } = E, i = x === L.SAT_MOCK_TEST, A = a === "PUZZLE", [h, w] = B(f), l = f === z.COMPLETED, I = D(() => m === N.CIRCLE ? !1 : n === C.TEACHER ? !i || l : n === C.STUDENT ? l && !R.includes(
22
+ _
23
+ ) : !1, [n, m, i, l, _]), g = p(() => {
24
+ e && s && s(e);
25
+ }, [s, e]), k = p(() => {
26
+ c && e && c(e, i, T);
27
+ }, [i, c, T, e]);
26
28
  return /* @__PURE__ */ r(t, { $flexDirection: "row", $flexGapX: 1.5, children: [
27
- /* @__PURE__ */ o(t, { $justifyContent: "flex-end", $height: 18, $background: "WHITE", children: /* @__PURE__ */ o(t, { $background: w, $borderRadiusX: 0.5, $width: 16, $height: 16, children: T && /* @__PURE__ */ o(T, { width: 16, height: 16 }) }) }),
29
+ /* @__PURE__ */ o(t, { $justifyContent: "flex-end", $height: 18, $background: "WHITE", children: /* @__PURE__ */ o(t, { $background: w, $borderRadiusX: 0.5, $width: 16, $height: 16, children: h && /* @__PURE__ */ o(h, { width: 16, height: 16 }) }) }),
28
30
  /* @__PURE__ */ r(t, { $flexRowGapX: 0.25, children: [
29
31
  /* @__PURE__ */ r(d, { $renderAs: "ub2", children: [
30
32
  /* @__PURE__ */ r(d, { $renderAs: "ub2-bold", $inline: !0, children: [
@@ -34,18 +36,18 @@ const z = L(
34
36
  " ",
35
37
  b
36
38
  ] }),
37
- I ? /* @__PURE__ */ o(
38
- _,
39
+ A ? /* @__PURE__ */ o(
40
+ $,
39
41
  {
40
- label: c ? "View reviewed puzzle" : "View assigned puzzle",
42
+ label: l ? "View reviewed puzzle" : "View assigned puzzle",
41
43
  size: "small",
42
44
  color: "BLACK_T_60",
43
45
  onClick: g
44
46
  }
45
47
  ) : /* @__PURE__ */ r(t, { $flexDirection: "row", $flexGapX: 0.75, $alignItems: "center", children: [
46
- h && /* @__PURE__ */ o(d, { $renderAs: "ub3", $color: "BLACK_T_60", children: h }),
47
- A && /* @__PURE__ */ o(
48
- _,
48
+ u && /* @__PURE__ */ o(d, { $renderAs: "ub3", $color: "BLACK_T_60", children: u }),
49
+ I && /* @__PURE__ */ o(
50
+ $,
49
51
  {
50
52
  label: "Review",
51
53
  size: "small",
@@ -58,8 +60,8 @@ const z = L(
58
60
  ] });
59
61
  }
60
62
  );
61
- z.displayName = "AccordionItem";
63
+ O.displayName = "AccordionItem";
62
64
  export {
63
- z as default
65
+ O as default
64
66
  };
65
67
  //# sourceMappingURL=accordion-item.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion-item.js","sources":["../../../../../src/features/timeline/comps/accordion-item/accordion-item.tsx"],"sourcesContent":["import { memo, useCallback, type FC } from 'react';\n\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport type { IAccordionItemProps } from './accordion-item-types';\nimport { getStateConf } from '../utils';\nimport { BLOCK_TYPE } from '../../../chapters-v2/constants/block-constants';\nimport { type TColorNames } from '../../../ui/types';\nimport { CODING_ACTIVITY_NODE_TYPES } from '../constants';\nimport { USER_TYPE } from '../../daily-timeline-types';\n\nconst AccordionItem: FC<IAccordionItemProps> = memo(\n ({ type, userType, card, onPuzzleClick, onReviewClick }) => {\n const {\n label,\n title,\n state,\n subtext,\n user_node_id: userNodeId,\n block_type: blockType,\n user_block_id: userBlockId,\n node_type: nodeType,\n } = card;\n const isSatMockTestBlock = blockType === BLOCK_TYPE.SAT_MOCK_TEST;\n const isPuzzle = label === 'PUZZLE';\n const [Icon, bgColor] = getStateConf(state) as [FC<React.SVGProps<SVGSVGElement>>, TColorNames];\n const isCompleted = state === 'COMPLETED';\n const shouldShowReview =\n (userType === USER_TYPE.TEACHER &&\n type !== 'CIRCLE' &&\n (!isSatMockTestBlock || isCompleted)) ||\n (userType === USER_TYPE.STUDENT &&\n isCompleted &&\n type !== 'CIRCLE' &&\n !CODING_ACTIVITY_NODE_TYPES.includes(nodeType));\n\n const handlePuzzleClick = useCallback(() => {\n if (userNodeId && onPuzzleClick) {\n onPuzzleClick(userNodeId);\n }\n }, [onPuzzleClick, userNodeId]);\n\n const handleReviewClick = useCallback(() => {\n if (onReviewClick && userNodeId) {\n onReviewClick(userNodeId, isSatMockTestBlock, userBlockId);\n }\n }, [isSatMockTestBlock, onReviewClick, userBlockId, userNodeId]);\n\n return (\n <FlexView $flexDirection=\"row\" $flexGapX={1.5}>\n <FlexView $justifyContent=\"flex-end\" $height={18} $background=\"WHITE\">\n <FlexView $background={bgColor} $borderRadiusX={0.5} $width={16} $height={16}>\n {Icon && <Icon width={16} height={16} />}\n </FlexView>\n </FlexView>\n <FlexView $flexRowGapX={0.25}>\n <Text $renderAs=\"ub2\">\n <Text $renderAs=\"ub2-bold\" $inline>\n {label}:\n </Text>{' '}\n {title}\n </Text>\n {isPuzzle ? (\n <TextButton\n label={isCompleted ? 'View reviewed puzzle' : 'View assigned puzzle'}\n size=\"small\"\n color=\"BLACK_T_60\"\n onClick={handlePuzzleClick}\n />\n ) : (\n <FlexView $flexDirection=\"row\" $flexGapX={0.75} $alignItems=\"center\">\n {subtext && (\n <Text $renderAs=\"ub3\" $color=\"BLACK_T_60\">\n {subtext}\n </Text>\n )}\n {shouldShowReview && (\n <TextButton\n label=\"Review\"\n size=\"small\"\n color=\"BLACK_T_60\"\n onClick={handleReviewClick}\n />\n )}\n </FlexView>\n )}\n </FlexView>\n </FlexView>\n );\n },\n);\n\nAccordionItem.displayName = 'AccordionItem';\n\nexport default AccordionItem;\n"],"names":["AccordionItem","memo","type","userType","card","onPuzzleClick","onReviewClick","label","title","state","subtext","userNodeId","blockType","userBlockId","nodeType","isSatMockTestBlock","BLOCK_TYPE","isPuzzle","Icon","bgColor","getStateConf","isCompleted","shouldShowReview","USER_TYPE","CODING_ACTIVITY_NODE_TYPES","handlePuzzleClick","useCallback","handleReviewClick","jsxs","FlexView","jsx","Text","TextButton"],"mappings":";;;;;;;;;AAYA,MAAMA,IAAyCC;AAAA,EAC7C,CAAC,EAAE,MAAAC,GAAM,UAAAC,GAAU,MAAAC,GAAM,eAAAC,GAAe,eAAAC,QAAoB;AACpD,UAAA;AAAA,MACJ,OAAAC;AAAA,MACA,OAAAC;AAAA,MACA,OAAAC;AAAA,MACA,SAAAC;AAAA,MACA,cAAcC;AAAA,MACd,YAAYC;AAAA,MACZ,eAAeC;AAAA,MACf,WAAWC;AAAA,IACT,IAAAV,GACEW,IAAqBH,MAAcI,EAAW,eAC9CC,IAAWV,MAAU,UACrB,CAACW,GAAMC,CAAO,IAAIC,EAAaX,CAAK,GACpCY,IAAcZ,MAAU,aACxBa,IACHnB,MAAaoB,EAAU,WACtBrB,MAAS,aACR,CAACa,KAAsBM,MACzBlB,MAAaoB,EAAU,WACtBF,KACAnB,MAAS,YACT,CAACsB,EAA2B,SAASV,CAAQ,GAE3CW,IAAoBC,EAAY,MAAM;AAC1C,MAAIf,KAAcN,KAChBA,EAAcM,CAAU;AAAA,IAC1B,GACC,CAACN,GAAeM,CAAU,CAAC,GAExBgB,IAAoBD,EAAY,MAAM;AAC1C,MAAIpB,KAAiBK,KACLL,EAAAK,GAAYI,GAAoBF,CAAW;AAAA,OAE1D,CAACE,GAAoBT,GAAeO,GAAaF,CAAU,CAAC;AAE/D,WACG,gBAAAiB,EAAAC,GAAA,EAAS,gBAAe,OAAM,WAAW,KACxC,UAAA;AAAA,MAAC,gBAAAC,EAAAD,GAAA,EAAS,iBAAgB,YAAW,SAAS,IAAI,aAAY,SAC5D,UAAA,gBAAAC,EAACD,GAAS,EAAA,aAAaV,GAAS,gBAAgB,KAAK,QAAQ,IAAI,SAAS,IACvE,UAAQD,KAAA,gBAAAY,EAACZ,GAAK,EAAA,OAAO,IAAI,QAAQ,GAAI,CAAA,EACxC,CAAA,GACF;AAAA,MACA,gBAAAU,EAACC,GAAS,EAAA,cAAc,MACtB,UAAA;AAAA,QAAC,gBAAAD,EAAAG,GAAA,EAAK,WAAU,OACd,UAAA;AAAA,UAAA,gBAAAH,EAACG,GAAK,EAAA,WAAU,YAAW,SAAO,IAC/B,UAAA;AAAA,YAAAxB;AAAA,YAAM;AAAA,UAAA,GACT;AAAA,UAAQ;AAAA,UACPC;AAAA,QAAA,GACH;AAAA,QACCS,IACC,gBAAAa;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,OAAOX,IAAc,yBAAyB;AAAA,YAC9C,MAAK;AAAA,YACL,OAAM;AAAA,YACN,SAASI;AAAA,UAAA;AAAA,QAAA,sBAGVI,GAAS,EAAA,gBAAe,OAAM,WAAW,MAAM,aAAY,UACzD,UAAA;AAAA,UAAAnB,uBACEqB,GAAK,EAAA,WAAU,OAAM,QAAO,cAC1B,UACHrB,GAAA;AAAA,UAEDY,KACC,gBAAAQ;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,OAAM;AAAA,cACN,MAAK;AAAA,cACL,OAAM;AAAA,cACN,SAASL;AAAA,YAAA;AAAA,UACX;AAAA,QAAA,GAEJ;AAAA,MAAA,GAEJ;AAAA,IACF,EAAA,CAAA;AAAA,EAEJ;AACF;AAEA3B,EAAc,cAAc;"}
1
+ {"version":3,"file":"accordion-item.js","sources":["../../../../../src/features/timeline/comps/accordion-item/accordion-item.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, type FC } from 'react';\n\nimport TextButton from '../../../ui/buttons/text-button/text-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Text from '../../../ui/text/text';\nimport type { IAccordionItemProps } from './accordion-item-types';\nimport { getStateConf } from '../utils';\nimport { BLOCK_TYPE } from '../../../chapters-v2/constants/block-constants';\nimport { type TColorNames } from '../../../ui/types';\nimport { CODING_ACTIVITY_NODE_TYPES } from '../constants';\nimport { CARD_TYPE, NODE_STATE, USER_TYPE } from '../../enums/enums';\n\nconst AccordionItem: FC<IAccordionItemProps> = memo(\n ({ type, userType, card, onPuzzleClick, onReviewClick }) => {\n const {\n label,\n title,\n state,\n subtext,\n user_node_id: userNodeId,\n block_type: blockType,\n user_block_id: userBlockId,\n node_type: nodeType,\n } = card;\n const isSatMockTestBlock = blockType === BLOCK_TYPE.SAT_MOCK_TEST;\n const isPuzzle = label === 'PUZZLE';\n const [Icon, bgColor] = getStateConf(state) as [FC<React.SVGProps<SVGSVGElement>>, TColorNames];\n const isCompleted = state === NODE_STATE.COMPLETED;\n const shouldShowReview = useMemo(() => {\n if (type === CARD_TYPE.CIRCLE) return false;\n if (userType === USER_TYPE.TEACHER) return !isSatMockTestBlock || isCompleted;\n if (userType === USER_TYPE.STUDENT)\n return (\n isCompleted &&\n !CODING_ACTIVITY_NODE_TYPES.includes(\n nodeType as (typeof CODING_ACTIVITY_NODE_TYPES)[number],\n )\n );\n\n return false;\n }, [userType, type, isSatMockTestBlock, isCompleted, nodeType]);\n\n const handlePuzzleClick = useCallback(() => {\n if (userNodeId && onPuzzleClick) {\n onPuzzleClick(userNodeId);\n }\n }, [onPuzzleClick, userNodeId]);\n\n const handleReviewClick = useCallback(() => {\n if (onReviewClick && userNodeId) {\n onReviewClick(userNodeId, isSatMockTestBlock, userBlockId);\n }\n }, [isSatMockTestBlock, onReviewClick, userBlockId, userNodeId]);\n\n return (\n <FlexView $flexDirection=\"row\" $flexGapX={1.5}>\n <FlexView $justifyContent=\"flex-end\" $height={18} $background=\"WHITE\">\n <FlexView $background={bgColor} $borderRadiusX={0.5} $width={16} $height={16}>\n {Icon && <Icon width={16} height={16} />}\n </FlexView>\n </FlexView>\n <FlexView $flexRowGapX={0.25}>\n <Text $renderAs=\"ub2\">\n <Text $renderAs=\"ub2-bold\" $inline>\n {label}:\n </Text>{' '}\n {title}\n </Text>\n {isPuzzle ? (\n <TextButton\n label={isCompleted ? 'View reviewed puzzle' : 'View assigned puzzle'}\n size=\"small\"\n color=\"BLACK_T_60\"\n onClick={handlePuzzleClick}\n />\n ) : (\n <FlexView $flexDirection=\"row\" $flexGapX={0.75} $alignItems=\"center\">\n {subtext && (\n <Text $renderAs=\"ub3\" $color=\"BLACK_T_60\">\n {subtext}\n </Text>\n )}\n {shouldShowReview && (\n <TextButton\n label=\"Review\"\n size=\"small\"\n color=\"BLACK_T_60\"\n onClick={handleReviewClick}\n />\n )}\n </FlexView>\n )}\n </FlexView>\n </FlexView>\n );\n },\n);\n\nAccordionItem.displayName = 'AccordionItem';\n\nexport default AccordionItem;\n"],"names":["AccordionItem","memo","type","userType","card","onPuzzleClick","onReviewClick","label","title","state","subtext","userNodeId","blockType","userBlockId","nodeType","isSatMockTestBlock","BLOCK_TYPE","isPuzzle","Icon","bgColor","getStateConf","isCompleted","NODE_STATE","shouldShowReview","useMemo","CARD_TYPE","USER_TYPE","CODING_ACTIVITY_NODE_TYPES","handlePuzzleClick","useCallback","handleReviewClick","jsxs","FlexView","jsx","Text","TextButton"],"mappings":";;;;;;;;;AAYA,MAAMA,IAAyCC;AAAA,EAC7C,CAAC,EAAE,MAAAC,GAAM,UAAAC,GAAU,MAAAC,GAAM,eAAAC,GAAe,eAAAC,QAAoB;AACpD,UAAA;AAAA,MACJ,OAAAC;AAAA,MACA,OAAAC;AAAA,MACA,OAAAC;AAAA,MACA,SAAAC;AAAA,MACA,cAAcC;AAAA,MACd,YAAYC;AAAA,MACZ,eAAeC;AAAA,MACf,WAAWC;AAAA,IACT,IAAAV,GACEW,IAAqBH,MAAcI,EAAW,eAC9CC,IAAWV,MAAU,UACrB,CAACW,GAAMC,CAAO,IAAIC,EAAaX,CAAK,GACpCY,IAAcZ,MAAUa,EAAW,WACnCC,IAAmBC,EAAQ,MAC3BtB,MAASuB,EAAU,SAAe,KAClCtB,MAAauB,EAAU,UAAgB,CAACX,KAAsBM,IAC9DlB,MAAauB,EAAU,UAEvBL,KACA,CAACM,EAA2B;AAAA,MAC1Bb;AAAA,IAAA,IAIC,IACN,CAACX,GAAUD,GAAMa,GAAoBM,GAAaP,CAAQ,CAAC,GAExDc,IAAoBC,EAAY,MAAM;AAC1C,MAAIlB,KAAcN,KAChBA,EAAcM,CAAU;AAAA,IAC1B,GACC,CAACN,GAAeM,CAAU,CAAC,GAExBmB,IAAoBD,EAAY,MAAM;AAC1C,MAAIvB,KAAiBK,KACLL,EAAAK,GAAYI,GAAoBF,CAAW;AAAA,OAE1D,CAACE,GAAoBT,GAAeO,GAAaF,CAAU,CAAC;AAE/D,WACG,gBAAAoB,EAAAC,GAAA,EAAS,gBAAe,OAAM,WAAW,KACxC,UAAA;AAAA,MAAC,gBAAAC,EAAAD,GAAA,EAAS,iBAAgB,YAAW,SAAS,IAAI,aAAY,SAC5D,UAAA,gBAAAC,EAACD,GAAS,EAAA,aAAab,GAAS,gBAAgB,KAAK,QAAQ,IAAI,SAAS,IACvE,UAAQD,KAAA,gBAAAe,EAACf,GAAK,EAAA,OAAO,IAAI,QAAQ,GAAI,CAAA,EACxC,CAAA,GACF;AAAA,MACA,gBAAAa,EAACC,GAAS,EAAA,cAAc,MACtB,UAAA;AAAA,QAAC,gBAAAD,EAAAG,GAAA,EAAK,WAAU,OACd,UAAA;AAAA,UAAA,gBAAAH,EAACG,GAAK,EAAA,WAAU,YAAW,SAAO,IAC/B,UAAA;AAAA,YAAA3B;AAAA,YAAM;AAAA,UAAA,GACT;AAAA,UAAQ;AAAA,UACPC;AAAA,QAAA,GACH;AAAA,QACCS,IACC,gBAAAgB;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,OAAOd,IAAc,yBAAyB;AAAA,YAC9C,MAAK;AAAA,YACL,OAAM;AAAA,YACN,SAASO;AAAA,UAAA;AAAA,QAAA,sBAGVI,GAAS,EAAA,gBAAe,OAAM,WAAW,MAAM,aAAY,UACzD,UAAA;AAAA,UAAAtB,uBACEwB,GAAK,EAAA,WAAU,OAAM,QAAO,cAC1B,UACHxB,GAAA;AAAA,UAEDa,KACC,gBAAAU;AAAA,YAACE;AAAA,YAAA;AAAA,cACC,OAAM;AAAA,cACN,MAAK;AAAA,cACL,OAAM;AAAA,cACN,SAASL;AAAA,YAAA;AAAA,UACX;AAAA,QAAA,GAEJ;AAAA,MAAA,GAEJ;AAAA,IACF,EAAA,CAAA;AAAA,EAEJ;AACF;AAEA9B,EAAc,cAAc;"}
@@ -1,5 +1,6 @@
1
1
  import { IMAGES as I } from "../../../assets/images/images.js";
2
- const N = 1, T = {
2
+ import { NODE_TYPE as A } from "../../sheets/constants/sheet.js";
3
+ const E = 1, _ = {
3
4
  "01": I.JAN,
4
5
  "02": I.FEB,
5
6
  "03": I.MAR,
@@ -12,16 +13,16 @@ const N = 1, T = {
12
13
  10: I.OCT,
13
14
  11: I.NOV,
14
15
  12: I.DEC
15
- }, _ = [
16
- "TURING_BASIC",
17
- "TURING_LINK",
18
- "TURING_SHARE",
19
- "PYTHON_BASIC",
20
- "PYTHON_VISUAL"
16
+ }, o = [
17
+ A.TURING_BASIC,
18
+ A.TURING_LINK,
19
+ A.TURING_SHARE,
20
+ A.PYTHON_BASIC,
21
+ A.PYTHON_VISUAL
21
22
  ];
22
23
  export {
23
- _ as CODING_ACTIVITY_NODE_TYPES,
24
- N as INITIAL_PAGE,
25
- T as monthImageMap
24
+ o as CODING_ACTIVITY_NODE_TYPES,
25
+ E as INITIAL_PAGE,
26
+ _ as monthImageMap
26
27
  };
27
28
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sources":["../../../../src/features/timeline/comps/constants.ts"],"sourcesContent":["import { IMAGES } from '../../../assets/images/images';\n\nexport const INITIAL_PAGE = 1;\n\nexport const monthImageMap = {\n '01': IMAGES.JAN,\n '02': IMAGES.FEB,\n '03': IMAGES.MAR,\n '04': IMAGES.APR,\n '05': IMAGES.MAY,\n '06': IMAGES.JUN,\n '07': IMAGES.JUL,\n '08': IMAGES.AUG,\n '09': IMAGES.SEP,\n '10': IMAGES.OCT,\n '11': IMAGES.NOV,\n '12': IMAGES.DEC,\n};\n\nexport const CODING_ACTIVITY_NODE_TYPES = [\n 'TURING_BASIC',\n 'TURING_LINK',\n 'TURING_SHARE',\n 'PYTHON_BASIC',\n 'PYTHON_VISUAL',\n];\n"],"names":["INITIAL_PAGE","monthImageMap","IMAGES","CODING_ACTIVITY_NODE_TYPES"],"mappings":";AAEO,MAAMA,IAAe,GAEfC,IAAgB;AAAA,EAC3B,MAAMC,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,IAAMA,EAAO;AAAA,EACb,IAAMA,EAAO;AAAA,EACb,IAAMA,EAAO;AACf,GAEaC,IAA6B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
1
+ {"version":3,"file":"constants.js","sources":["../../../../src/features/timeline/comps/constants.ts"],"sourcesContent":["import { IMAGES } from '../../../assets/images/images';\nimport { NODE_TYPE } from '../../sheets/constants/sheet';\n\nexport const INITIAL_PAGE = 1;\n\nexport const monthImageMap = {\n '01': IMAGES.JAN,\n '02': IMAGES.FEB,\n '03': IMAGES.MAR,\n '04': IMAGES.APR,\n '05': IMAGES.MAY,\n '06': IMAGES.JUN,\n '07': IMAGES.JUL,\n '08': IMAGES.AUG,\n '09': IMAGES.SEP,\n '10': IMAGES.OCT,\n '11': IMAGES.NOV,\n '12': IMAGES.DEC,\n};\n\nexport const CODING_ACTIVITY_NODE_TYPES = [\n NODE_TYPE.TURING_BASIC,\n NODE_TYPE.TURING_LINK,\n NODE_TYPE.TURING_SHARE,\n NODE_TYPE.PYTHON_BASIC,\n NODE_TYPE.PYTHON_VISUAL,\n];\n"],"names":["INITIAL_PAGE","monthImageMap","IMAGES","CODING_ACTIVITY_NODE_TYPES","NODE_TYPE"],"mappings":";;AAGO,MAAMA,IAAe,GAEfC,IAAgB;AAAA,EAC3B,MAAMC,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,MAAMA,EAAO;AAAA,EACb,IAAMA,EAAO;AAAA,EACb,IAAMA,EAAO;AAAA,EACb,IAAMA,EAAO;AACf,GAEaC,IAA6B;AAAA,EACxCC,EAAU;AAAA,EACVA,EAAU;AAAA,EACVA,EAAU;AAAA,EACVA,EAAU;AAAA,EACVA,EAAU;AACZ;"}
@@ -1,51 +1,51 @@
1
- import { jsx as e, jsxs as s, Fragment as y } from "react/jsx-runtime";
1
+ import { jsx as e, jsxs as l, Fragment as y } from "react/jsx-runtime";
2
2
  import { memo as w, useState as E, useMemo as A, useCallback as T } from "react";
3
3
  import k from "../../../../assets/line-icons/icons/plus.js";
4
4
  import S from "../../../ui/accordion-section/accordion-section.js";
5
- import l from "../../../ui/layout/flex-view.js";
5
+ import s from "../../../ui/layout/flex-view.js";
6
6
  import j from "../../../../assets/line-icons/icons/minus.js";
7
7
  import B from "../../../ui/image/image.js";
8
- import h from "../../../ui/text/text.js";
8
+ import u from "../../../ui/text/text.js";
9
9
  import D from "../accordion-item/accordion-item.js";
10
10
  import { SectionContainer as L, TagContainer as v, SectionFooter as F, Card as K } from "./daily-timeline-items-styled.js";
11
11
  import { getTimelineCardIcon as V } from "../utils.js";
12
12
  import { useUIContext as X } from "../../../ui/context/context.js";
13
- const z = w(($) => {
13
+ const z = w((h) => {
14
14
  const {
15
- type: t,
15
+ type: i,
16
16
  summary: o,
17
17
  cards: n,
18
- onPuzzleClick: f,
19
- onReviewClick: g,
18
+ onPuzzleClick: $,
19
+ onReviewClick: f,
20
20
  courseStream: m,
21
- shouldShowTag: C,
22
- userType: I,
21
+ shouldShowTag: g,
22
+ userType: C,
23
23
  isLastItem: d,
24
24
  fromDate: a,
25
25
  studentId: c
26
- } = $, [r, b] = E(!1), p = A(() => V(t), [t]), { onEvent: x } = X(), _ = T(
27
- (i) => {
28
- b(i), x(i ? "timeline_view_expanded" : "timeline_view_collapsed", {
26
+ } = h, [r, I] = E(!1), p = A(() => V(i), [i]), { onEvent: b } = X(), x = T(
27
+ (t) => {
28
+ I(t), b(t ? "timeline_view_expanded" : "timeline_view_collapsed", {
29
29
  timeline_date: a,
30
30
  student_id: c,
31
- timeline_section_type: t,
31
+ timeline_section_type: i,
32
32
  timeline_section_subject: o
33
33
  });
34
34
  },
35
- [a, c, t, o]
35
+ [a, c, i, o]
36
36
  );
37
37
  return /* @__PURE__ */ e(
38
38
  S,
39
39
  {
40
- headerElement: /* @__PURE__ */ s(
40
+ headerElement: /* @__PURE__ */ l(
41
41
  L,
42
42
  {
43
43
  $borderColor: "BLACK_1",
44
44
  $shouldAddBorder: d && !r,
45
45
  children: [
46
- C && m && /* @__PURE__ */ e(v, { $position: "absolute", $background: "BLACK", $gutter: 4, children: /* @__PURE__ */ e(h, { $renderAs: "ab4-black", $color: "WHITE", children: m }) }),
47
- /* @__PURE__ */ s(
48
- l,
46
+ g && m && /* @__PURE__ */ e(v, { $position: "absolute", $background: "BLACK", $gutter: 4, children: /* @__PURE__ */ e(u, { $renderAs: "ab4-black", $color: "WHITE", children: m }) }),
47
+ /* @__PURE__ */ l(
48
+ s,
49
49
  {
50
50
  $flexDirection: "row",
51
51
  $alignItems: "center",
@@ -53,16 +53,16 @@ const z = w(($) => {
53
53
  $gutterX: 1,
54
54
  $gapX: 1.32,
55
55
  children: [
56
- /* @__PURE__ */ s(
57
- l,
56
+ /* @__PURE__ */ l(
57
+ s,
58
58
  {
59
59
  $flexDirection: "row",
60
60
  $alignItems: "center",
61
61
  $justifyContent: "center",
62
62
  $flexGapX: 1.125,
63
63
  children: [
64
- /* @__PURE__ */ e(l, { children: p && /* @__PURE__ */ e(B, { src: p }) }),
65
- /* @__PURE__ */ e(h, { $renderAs: "ab2", children: o ?? "" })
64
+ /* @__PURE__ */ e(s, { children: p && /* @__PURE__ */ e(B, { src: p }) }),
65
+ /* @__PURE__ */ e(u, { $renderAs: "ab2", children: o ?? "" })
66
66
  ]
67
67
  }
68
68
  ),
@@ -79,27 +79,27 @@ const z = w(($) => {
79
79
  $gutter: 32,
80
80
  $borderColor: "BLACK_1",
81
81
  $isExpanded: r && !d,
82
- children: n.map((i, u) => /* @__PURE__ */ e(
82
+ children: n.map((t, _) => /* @__PURE__ */ e(
83
83
  K,
84
84
  {
85
- $isLastCard: u === n.length - 1,
85
+ $isLastCard: _ === n.length - 1,
86
86
  children: /* @__PURE__ */ e(
87
87
  D,
88
88
  {
89
- card: i,
90
- onPuzzleClick: f,
91
- onReviewClick: g,
92
- type: t,
93
- userType: I
89
+ card: t,
90
+ onPuzzleClick: $,
91
+ onReviewClick: f,
92
+ type: i,
93
+ userType: C
94
94
  }
95
95
  )
96
96
  },
97
- `${i.node_id}-${u}`
97
+ `${t.node_id}-${t.label}`
98
98
  ))
99
99
  }
100
100
  ) : /* @__PURE__ */ e(y, {}),
101
101
  defaultVisible: !1,
102
- onBodyVisibilityChange: _
102
+ onBodyVisibilityChange: x
103
103
  }
104
104
  );
105
105
  });
@@ -1 +1 @@
1
- {"version":3,"file":"daily-timeline-items.js","sources":["../../../../../src/features/timeline/comps/daily-timeline-items/daily-timeline-items.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, useState, type FC } from 'react';\n\nimport PlusIcon from '../../../../assets/line-icons/icons/plus';\nimport AccordionSection from '../../../ui/accordion-section/accordion-section';\nimport FlexView from '../../../ui/layout/flex-view';\nimport MinusIcon from '../../../../assets/line-icons/icons/minus';\nimport Image from '../../../ui/image/image';\nimport Text from '../../../ui/text/text';\nimport AccordionItem from '../accordion-item/accordion-item';\nimport * as Styled from './daily-timeline-items-styled';\nimport { getTimelineCardIcon } from '../utils';\nimport { type IDailyTimelineItemsProps } from './daily-timeline-items.types';\nimport { useUIContext } from '../../../ui/context/context';\n\nconst DailyTimelineItems: FC<IDailyTimelineItemsProps> = memo(props => {\n const {\n type,\n summary,\n cards,\n onPuzzleClick,\n onReviewClick,\n courseStream,\n shouldShowTag,\n userType,\n isLastItem,\n fromDate,\n studentId,\n } = props;\n const [isExpended, setIsExpended] = useState(false);\n\n const timelineIcon = useMemo(() => getTimelineCardIcon(type), [type]);\n const { onEvent: trackEvent } = useUIContext();\n\n const handleExpand = useCallback(\n (val: boolean) => {\n setIsExpended(val);\n\n trackEvent(val ? 'timeline_view_expanded' : 'timeline_view_collapsed', {\n timeline_date: fromDate,\n student_id: studentId,\n timeline_section_type: type,\n timeline_section_subject: summary,\n });\n },\n [fromDate, studentId, type, summary],\n );\n\n return (\n <AccordionSection\n headerElement={\n <Styled.SectionContainer\n $borderColor={'BLACK_1'}\n $shouldAddBorder={isLastItem && !isExpended}\n >\n {shouldShowTag && courseStream && (\n <Styled.TagContainer $position=\"absolute\" $background=\"BLACK\" $gutter={4}>\n <Text $renderAs=\"ab4-black\" $color=\"WHITE\">\n {courseStream}\n </Text>\n </Styled.TagContainer>\n )}\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n $gutterX={1}\n $gapX={1.32}\n >\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $flexGapX={1.125}\n >\n <FlexView>{timelineIcon && <Image src={timelineIcon} />}</FlexView>\n <Text $renderAs=\"ab2\">{summary ?? ''}</Text>\n </FlexView>\n {isExpended ? (\n <MinusIcon width={20} height={20} />\n ) : (\n <PlusIcon width={20} height={20} />\n )}\n </FlexView>\n </Styled.SectionContainer>\n }\n bodyElement={\n cards.length > 0 ? (\n <Styled.SectionFooter\n $gutter={32}\n $borderColor={'BLACK_1'}\n $isExpanded={isExpended && !isLastItem}\n >\n {cards.map((card, index) => (\n <Styled.Card\n key={`${card.node_id}-${index}`}\n $isLastCard={index === cards.length - 1}\n >\n <AccordionItem\n card={card}\n onPuzzleClick={onPuzzleClick}\n onReviewClick={onReviewClick}\n type={type}\n userType={userType}\n />\n </Styled.Card>\n ))}\n </Styled.SectionFooter>\n ) : (\n <></>\n )\n }\n defaultVisible={false}\n onBodyVisibilityChange={handleExpand}\n />\n );\n});\n\nDailyTimelineItems.displayName = 'DailyTimelineItems';\n\nexport default DailyTimelineItems;\n"],"names":["DailyTimelineItems","memo","props","type","summary","cards","onPuzzleClick","onReviewClick","courseStream","shouldShowTag","userType","isLastItem","fromDate","studentId","isExpended","setIsExpended","useState","timelineIcon","useMemo","getTimelineCardIcon","trackEvent","useUIContext","handleExpand","useCallback","val","jsx","AccordionSection","jsxs","Styled.SectionContainer","Styled.TagContainer","Text","FlexView","Image","MinusIcon","PlusIcon","Styled.SectionFooter","card","index","Styled.Card","AccordionItem","Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"daily-timeline-items.js","sources":["../../../../../src/features/timeline/comps/daily-timeline-items/daily-timeline-items.tsx"],"sourcesContent":["import { memo, useCallback, useMemo, useState, type FC } from 'react';\n\nimport PlusIcon from '../../../../assets/line-icons/icons/plus';\nimport AccordionSection from '../../../ui/accordion-section/accordion-section';\nimport FlexView from '../../../ui/layout/flex-view';\nimport MinusIcon from '../../../../assets/line-icons/icons/minus';\nimport Image from '../../../ui/image/image';\nimport Text from '../../../ui/text/text';\nimport AccordionItem from '../accordion-item/accordion-item';\nimport * as Styled from './daily-timeline-items-styled';\nimport { getTimelineCardIcon } from '../utils';\nimport { type IDailyTimelineItemsProps } from './daily-timeline-items.types';\nimport { useUIContext } from '../../../ui/context/context';\n\nconst DailyTimelineItems: FC<IDailyTimelineItemsProps> = memo(props => {\n const {\n type,\n summary,\n cards,\n onPuzzleClick,\n onReviewClick,\n courseStream,\n shouldShowTag,\n userType,\n isLastItem,\n fromDate,\n studentId,\n } = props;\n const [isExpended, setIsExpended] = useState(false);\n\n const timelineIcon = useMemo(() => getTimelineCardIcon(type), [type]);\n const { onEvent: trackEvent } = useUIContext();\n\n const handleExpand = useCallback(\n (val: boolean) => {\n setIsExpended(val);\n\n trackEvent(val ? 'timeline_view_expanded' : 'timeline_view_collapsed', {\n timeline_date: fromDate,\n student_id: studentId,\n timeline_section_type: type,\n timeline_section_subject: summary,\n });\n },\n [fromDate, studentId, type, summary],\n );\n\n return (\n <AccordionSection\n headerElement={\n <Styled.SectionContainer\n $borderColor={'BLACK_1'}\n $shouldAddBorder={isLastItem && !isExpended}\n >\n {shouldShowTag && courseStream && (\n <Styled.TagContainer $position=\"absolute\" $background=\"BLACK\" $gutter={4}>\n <Text $renderAs=\"ab4-black\" $color=\"WHITE\">\n {courseStream}\n </Text>\n </Styled.TagContainer>\n )}\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n $gutterX={1}\n $gapX={1.32}\n >\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $flexGapX={1.125}\n >\n <FlexView>{timelineIcon && <Image src={timelineIcon} />}</FlexView>\n <Text $renderAs=\"ab2\">{summary ?? ''}</Text>\n </FlexView>\n {isExpended ? (\n <MinusIcon width={20} height={20} />\n ) : (\n <PlusIcon width={20} height={20} />\n )}\n </FlexView>\n </Styled.SectionContainer>\n }\n bodyElement={\n cards.length > 0 ? (\n <Styled.SectionFooter\n $gutter={32}\n $borderColor={'BLACK_1'}\n $isExpanded={isExpended && !isLastItem}\n >\n {cards.map((card, index) => (\n <Styled.Card\n key={`${card.node_id}-${card.label}`}\n $isLastCard={index === cards.length - 1}\n >\n <AccordionItem\n card={card}\n onPuzzleClick={onPuzzleClick}\n onReviewClick={onReviewClick}\n type={type}\n userType={userType}\n />\n </Styled.Card>\n ))}\n </Styled.SectionFooter>\n ) : (\n <></>\n )\n }\n defaultVisible={false}\n onBodyVisibilityChange={handleExpand}\n />\n );\n});\n\nDailyTimelineItems.displayName = 'DailyTimelineItems';\n\nexport default DailyTimelineItems;\n"],"names":["DailyTimelineItems","memo","props","type","summary","cards","onPuzzleClick","onReviewClick","courseStream","shouldShowTag","userType","isLastItem","fromDate","studentId","isExpended","setIsExpended","useState","timelineIcon","useMemo","getTimelineCardIcon","trackEvent","useUIContext","handleExpand","useCallback","val","jsx","AccordionSection","jsxs","Styled.SectionContainer","Styled.TagContainer","Text","FlexView","Image","MinusIcon","PlusIcon","Styled.SectionFooter","card","index","Styled.Card","AccordionItem","Fragment"],"mappings":"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"}
@@ -1,40 +1,37 @@
1
- import { jsx as t, jsxs as i } from "react/jsx-runtime";
2
- import { memo as n } from "react";
3
- import c from "../../ui/image/image.js";
1
+ import { jsx as t, jsxs as o } from "react/jsx-runtime";
2
+ import { memo as i } from "react";
3
+ import n from "../../ui/image/image.js";
4
4
  import e from "../../ui/layout/flex-view.js";
5
5
  import m from "../../ui/text/text.js";
6
- import { getTimelineCardIcon as a } from "./utils.js";
7
- const o = () => {
8
- const r = a("NO_ACTIVITY");
9
- return /* @__PURE__ */ t(
10
- e,
11
- {
12
- $flexDirection: "row",
13
- $alignItems: "center",
14
- $justifyContent: "space-between",
15
- $gutterX: 1,
16
- $gapX: 1.32,
17
- $borderColor: "BLACK_T_04",
18
- $background: "BLACK_T_15",
19
- children: /* @__PURE__ */ i(
20
- e,
21
- {
22
- $flexDirection: "row",
23
- $alignItems: "center",
24
- $justifyContent: "center",
25
- $flexGapX: 1.125,
26
- children: [
27
- /* @__PURE__ */ t(e, { children: r && /* @__PURE__ */ t(c, { src: r }) }),
28
- /* @__PURE__ */ t(m, { $renderAs: "ab2", children: "No Activity" })
29
- ]
30
- }
31
- )
32
- }
33
- );
34
- };
35
- o.displayName = "Noactivity";
36
- const x = n(o);
6
+ import { ILLUSTRATIONS as c } from "../../../assets/illustrations/illustrations.js";
7
+ const r = () => /* @__PURE__ */ t(
8
+ e,
9
+ {
10
+ $flexDirection: "row",
11
+ $alignItems: "center",
12
+ $justifyContent: "space-between",
13
+ $gutterX: 1,
14
+ $gapX: 1.32,
15
+ $borderColor: "BLACK_T_04",
16
+ $background: "BLACK_T_15",
17
+ children: /* @__PURE__ */ o(
18
+ e,
19
+ {
20
+ $flexDirection: "row",
21
+ $alignItems: "center",
22
+ $justifyContent: "center",
23
+ $flexGapX: 0.625,
24
+ children: [
25
+ /* @__PURE__ */ t(n, { src: c.NO_ACTIVITY }),
26
+ /* @__PURE__ */ t(m, { $renderAs: "ab2", children: "No Activity" })
27
+ ]
28
+ }
29
+ )
30
+ }
31
+ );
32
+ r.displayName = "Noactivity";
33
+ const d = i(r);
37
34
  export {
38
- x as default
35
+ d as default
39
36
  };
40
37
  //# sourceMappingURL=no-activity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-activity.js","sources":["../../../../src/features/timeline/comps/no-activity.tsx"],"sourcesContent":["import { memo } from 'react';\n\nimport Image from '../../ui/image/image';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport { getTimelineCardIcon } from './utils';\n\nconst Noactivity = () => {\n const NoActivityIcon = getTimelineCardIcon('NO_ACTIVITY');\n\n return (\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n $gutterX={1}\n $gapX={1.32}\n $borderColor=\"BLACK_T_04\"\n $background=\"BLACK_T_15\"\n >\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $flexGapX={1.125}\n >\n <FlexView>{NoActivityIcon && <Image src={NoActivityIcon} />}</FlexView>\n <Text $renderAs=\"ab2\">No Activity</Text>\n </FlexView>\n </FlexView>\n );\n};\n\nNoactivity.displayName = 'Noactivity';\n\nexport default memo(Noactivity);\n"],"names":["Noactivity","NoActivityIcon","getTimelineCardIcon","jsx","FlexView","jsxs","Image","Text","NoActivity","memo"],"mappings":";;;;;;AAOA,MAAMA,IAAa,MAAM;AACjB,QAAAC,IAAiBC,EAAoB,aAAa;AAGtD,SAAA,gBAAAC;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,gBAAe;AAAA,MACf,aAAY;AAAA,MACZ,iBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,OAAO;AAAA,MACP,cAAa;AAAA,MACb,aAAY;AAAA,MAEZ,UAAA,gBAAAC;AAAA,QAACD;AAAA,QAAA;AAAA,UACC,gBAAe;AAAA,UACf,aAAY;AAAA,UACZ,iBAAgB;AAAA,UAChB,WAAW;AAAA,UAEX,UAAA;AAAA,YAAA,gBAAAD,EAACC,KAAU,UAAkBH,KAAA,gBAAAE,EAACG,GAAM,EAAA,KAAKL,EAAgB,CAAA,GAAG;AAAA,YAC3D,gBAAAE,EAAAI,GAAA,EAAK,WAAU,OAAM,UAAW,eAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MACnC;AAAA,IAAA;AAAA,EAAA;AAGN;AAEAP,EAAW,cAAc;AAEzB,MAAeQ,IAAAC,EAAKT,CAAU;"}
1
+ {"version":3,"file":"no-activity.js","sources":["../../../../src/features/timeline/comps/no-activity.tsx"],"sourcesContent":["import { memo } from 'react';\n\nimport Image from '../../ui/image/image';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\n\nconst Noactivity = () => {\n return (\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n $gutterX={1}\n $gapX={1.32}\n $borderColor=\"BLACK_T_04\"\n $background=\"BLACK_T_15\"\n >\n <FlexView\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $flexGapX={0.625}\n >\n <Image src={ILLUSTRATIONS.NO_ACTIVITY} />\n <Text $renderAs=\"ab2\">No Activity</Text>\n </FlexView>\n </FlexView>\n );\n};\n\nNoactivity.displayName = 'Noactivity';\n\nexport default memo(Noactivity);\n"],"names":["Noactivity","jsx","FlexView","jsxs","Image","ILLUSTRATIONS","Text","NoActivity","memo"],"mappings":";;;;;;AAOA,MAAMA,IAAa,MAEf,gBAAAC;AAAA,EAACC;AAAA,EAAA;AAAA,IACC,gBAAe;AAAA,IACf,aAAY;AAAA,IACZ,iBAAgB;AAAA,IAChB,UAAU;AAAA,IACV,OAAO;AAAA,IACP,cAAa;AAAA,IACb,aAAY;AAAA,IAEZ,UAAA,gBAAAC;AAAA,MAACD;AAAA,MAAA;AAAA,QACC,gBAAe;AAAA,QACf,aAAY;AAAA,QACZ,iBAAgB;AAAA,QAChB,WAAW;AAAA,QAEX,UAAA;AAAA,UAAC,gBAAAD,EAAAG,GAAA,EAAM,KAAKC,EAAc,YAAa,CAAA;AAAA,UACtC,gBAAAJ,EAAAK,GAAA,EAAK,WAAU,OAAM,UAAW,eAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACnC;AAAA,EAAA;AAAA;AAKNN,EAAW,cAAc;AAEzB,MAAeO,IAAAC,EAAKR,CAAU;"}
@@ -1,41 +1,40 @@
1
1
  import { ILLUSTRATIONS as r } from "../../../assets/illustrations/illustrations.js";
2
- import o from "../../../assets/line-icons/icons/check2.js";
3
- import n from "../../../assets/line-icons/icons/cross.js";
4
- import e from "../../../assets/line-icons/icons/status.js";
5
- import { formatDate as a } from "../../../node_modules/date-fns/format.js";
6
- const u = (t) => {
2
+ import a from "../../../assets/line-icons/icons/check2.js";
3
+ import m from "../../../assets/line-icons/icons/cross.js";
4
+ import n from "../../../assets/line-icons/icons/status.js";
5
+ import { CARD_TYPE as e, NODE_STATE as o } from "../enums/enums.js";
6
+ import { formatDate as c } from "../../../node_modules/date-fns/format.js";
7
+ const N = (t) => {
7
8
  switch (t) {
8
- case "COMPLETED":
9
- return [o, "GREEN_2"];
10
- case "IN_PROGRESS":
11
- return [e, "YELLOW_2"];
12
- case "PENDING":
13
- return [n, "ORANGE_2"];
9
+ case o.COMPLETED:
10
+ return [a, "GREEN_2"];
11
+ case o.IN_PROGRESS:
12
+ return [n, "YELLOW_2"];
13
+ case o.PENDING:
14
+ return [m, "ORANGE_2"];
14
15
  default:
15
- return [e, "GREY_2"];
16
+ return [n, "GREY_2"];
16
17
  }
17
- }, N = (t) => {
18
+ }, i = (t) => {
18
19
  switch (t) {
19
- case "CW":
20
+ case e.CW:
20
21
  return r.CW_ICON;
21
- case "HW":
22
+ case e.HW:
22
23
  return r.HW_ICON;
23
- case "CIRCLE":
24
+ case e.CIRCLE:
24
25
  return r.CIRCLE_ICON;
25
- case "NO_ACTIVITY":
26
- return r.NO_ACTIVITY;
27
26
  default:
28
27
  return null;
29
28
  }
30
- }, E = (t) => ({
29
+ }, _ = (t) => ({
31
30
  day: t.getDate(),
32
31
  month: t.getMonth() + 1,
33
32
  year: t.getFullYear(),
34
- monthName: a(t, "MMM")
33
+ monthName: c(t, "MMM")
35
34
  });
36
35
  export {
37
- E as getDayMonthYear,
38
- u as getStateConf,
39
- N as getTimelineCardIcon
36
+ _ as getDayMonthYear,
37
+ N as getStateConf,
38
+ i as getTimelineCardIcon
40
39
  };
41
40
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../src/features/timeline/comps/utils.ts"],"sourcesContent":["import { format } from 'date-fns';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport CrossIcon from '../../../assets/line-icons/icons/cross';\nimport StatusIcon from '../../../assets/line-icons/icons/status';\n\nexport const getStateConf = (state: string) => {\n switch (state) {\n case 'COMPLETED':\n return [Check2Icon, 'GREEN_2'];\n case 'IN_PROGRESS':\n return [StatusIcon, 'YELLOW_2'];\n case 'PENDING':\n return [CrossIcon, 'ORANGE_2'];\n default:\n return [StatusIcon, 'GREY_2'];\n }\n};\n\nexport const getTimelineCardIcon = (type: 'CW' | 'HW' | 'CIRCLE' | 'NO_ACTIVITY') => {\n switch (type) {\n case 'CW':\n return ILLUSTRATIONS.CW_ICON;\n case 'HW':\n return ILLUSTRATIONS.HW_ICON;\n case 'CIRCLE':\n return ILLUSTRATIONS.CIRCLE_ICON;\n case 'NO_ACTIVITY':\n return ILLUSTRATIONS.NO_ACTIVITY;\n default:\n return null;\n }\n};\n\nexport const getDayMonthYear = (dateObj: Date) => ({\n day: dateObj.getDate(),\n month: dateObj.getMonth() + 1,\n year: dateObj.getFullYear(),\n monthName: format(dateObj, 'MMM'),\n});\n"],"names":["getStateConf","state","Check2Icon","StatusIcon","CrossIcon","getTimelineCardIcon","type","ILLUSTRATIONS","getDayMonthYear","dateObj","format"],"mappings":";;;;;AAOa,MAAAA,IAAe,CAACC,MAAkB;AAC7C,UAAQA,GAAO;AAAA,IACb,KAAK;AACI,aAAA,CAACC,GAAY,SAAS;AAAA,IAC/B,KAAK;AACI,aAAA,CAACC,GAAY,UAAU;AAAA,IAChC,KAAK;AACI,aAAA,CAACC,GAAW,UAAU;AAAA,IAC/B;AACS,aAAA,CAACD,GAAY,QAAQ;AAAA,EAChC;AACF,GAEaE,IAAsB,CAACC,MAAiD;AACnF,UAAQA,GAAM;AAAA,IACZ,KAAK;AACH,aAAOC,EAAc;AAAA,IACvB,KAAK;AACH,aAAOA,EAAc;AAAA,IACvB,KAAK;AACH,aAAOA,EAAc;AAAA,IACvB,KAAK;AACH,aAAOA,EAAc;AAAA,IACvB;AACS,aAAA;AAAA,EACX;AACF,GAEaC,IAAkB,CAACC,OAAmB;AAAA,EACjD,KAAKA,EAAQ,QAAQ;AAAA,EACrB,OAAOA,EAAQ,SAAA,IAAa;AAAA,EAC5B,MAAMA,EAAQ,YAAY;AAAA,EAC1B,WAAWC,EAAOD,GAAS,KAAK;AAClC;"}
1
+ {"version":3,"file":"utils.js","sources":["../../../../src/features/timeline/comps/utils.ts"],"sourcesContent":["import { format } from 'date-fns';\n\nimport { ILLUSTRATIONS } from '../../../assets/illustrations/illustrations';\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport CrossIcon from '../../../assets/line-icons/icons/cross';\nimport StatusIcon from '../../../assets/line-icons/icons/status';\nimport { CARD_TYPE, NODE_STATE } from '../enums/enums';\n\nexport const getStateConf = (state: NODE_STATE) => {\n switch (state) {\n case NODE_STATE.COMPLETED:\n return [Check2Icon, 'GREEN_2'];\n case NODE_STATE.IN_PROGRESS:\n return [StatusIcon, 'YELLOW_2'];\n case NODE_STATE.PENDING:\n return [CrossIcon, 'ORANGE_2'];\n default:\n return [StatusIcon, 'GREY_2'];\n }\n};\n\nexport const getTimelineCardIcon = (type: CARD_TYPE) => {\n switch (type) {\n case CARD_TYPE.CW:\n return ILLUSTRATIONS.CW_ICON;\n case CARD_TYPE.HW:\n return ILLUSTRATIONS.HW_ICON;\n case CARD_TYPE.CIRCLE:\n return ILLUSTRATIONS.CIRCLE_ICON;\n default:\n return null;\n }\n};\n\nexport const getDayMonthYear = (dateObj: Date) => ({\n day: dateObj.getDate(),\n month: dateObj.getMonth() + 1,\n year: dateObj.getFullYear(),\n monthName: format(dateObj, 'MMM'),\n});\n"],"names":["getStateConf","state","NODE_STATE","Check2Icon","StatusIcon","CrossIcon","getTimelineCardIcon","type","CARD_TYPE","ILLUSTRATIONS","getDayMonthYear","dateObj","format"],"mappings":";;;;;;AAQa,MAAAA,IAAe,CAACC,MAAsB;AACjD,UAAQA,GAAO;AAAA,IACb,KAAKC,EAAW;AACP,aAAA,CAACC,GAAY,SAAS;AAAA,IAC/B,KAAKD,EAAW;AACP,aAAA,CAACE,GAAY,UAAU;AAAA,IAChC,KAAKF,EAAW;AACP,aAAA,CAACG,GAAW,UAAU;AAAA,IAC/B;AACS,aAAA,CAACD,GAAY,QAAQ;AAAA,EAChC;AACF,GAEaE,IAAsB,CAACC,MAAoB;AACtD,UAAQA,GAAM;AAAA,IACZ,KAAKC,EAAU;AACb,aAAOC,EAAc;AAAA,IACvB,KAAKD,EAAU;AACb,aAAOC,EAAc;AAAA,IACvB,KAAKD,EAAU;AACb,aAAOC,EAAc;AAAA,IACvB;AACS,aAAA;AAAA,EACX;AACF,GAEaC,IAAkB,CAACC,OAAmB;AAAA,EACjD,KAAKA,EAAQ,QAAQ;AAAA,EACrB,OAAOA,EAAQ,SAAA,IAAa;AAAA,EAC5B,MAAMA,EAAQ,YAAY;AAAA,EAC1B,WAAWC,EAAOD,GAAS,KAAK;AAClC;"}
@@ -1,57 +1,57 @@
1
1
  import { jsx as o, jsxs as u } from "react/jsx-runtime";
2
- import { memo as V, useState as v, useCallback as w, useMemo as W, useEffect as p } from "react";
3
- import q from "../ui/error/error.js";
4
- import I from "../ui/layout/flex-view.js";
5
- import H from "../ui/loader/app-loader/app-loader.js";
6
- import J from "../ui/intersection-loader/intersection-loader.js";
2
+ import { memo as W, useState as k, useCallback as v, useMemo as q, useEffect as p } from "react";
3
+ import H from "../ui/error/error.js";
4
+ import w from "../ui/layout/flex-view.js";
5
+ import J from "../ui/loader/app-loader/app-loader.js";
6
+ import Q from "../ui/intersection-loader/intersection-loader.js";
7
7
  import g from "../ui/separator/separator.js";
8
- import Q from "../ui/text/text.js";
9
- import { useDailyTimelineGet as Z } from "./api/use-daily-timeline-get.js";
8
+ import Z from "../ui/text/text.js";
9
+ import { useDailyTimelineGet as ee } from "./api/use-daily-timeline-get.js";
10
10
  import { getDayMonthYear as N } from "./comps/utils.js";
11
- import ee from "./comps/daily-timeline-items/daily-timeline-items.js";
12
- import { ScrollWrapper as oe, DailyTimelineContainer as te, DailyItems as re } from "./daily-timeline-styled.js";
13
- import { USER_TYPE as ie } from "./daily-timeline-types.js";
11
+ import oe from "./comps/daily-timeline-items/daily-timeline-items.js";
12
+ import { ScrollWrapper as te, DailyTimelineContainer as re, DailyItems as ie } from "./daily-timeline-styled.js";
14
13
  import ae from "./comps/month-break/month-break.js";
15
- import se from "./comps/year-break/year-break.js";
16
- import { INITIAL_PAGE as me } from "./comps/constants.js";
14
+ import me from "./comps/year-break/year-break.js";
15
+ import { INITIAL_PAGE as se } from "./comps/constants.js";
17
16
  import { getTimezone as ne } from "../../helpers/date-time.js";
18
17
  import le from "./comps/no-activity.js";
19
18
  import { useUIContext as fe } from "../ui/context/context.js";
19
+ import { USER_TYPE as ce, CARD_TYPE as L } from "./enums/enums.js";
20
20
  import { parseISO as O } from "../../node_modules/date-fns/parseISO.js";
21
- import { isLastDayOfMonth as ce } from "../../node_modules/date-fns/isLastDayOfMonth.js";
22
- const j = V(
23
- ({ userType: d, studentId: i, courseStreams: l, onPuzzlesClick: P, onReviewClick: R, scrollAreaHeight: L }) => {
24
- const [f, T] = v([]), [y, $] = v(!1), { onEvent: c } = fe(), {
25
- get: M,
21
+ import { isLastDayOfMonth as he } from "../../node_modules/date-fns/isLastDayOfMonth.js";
22
+ const P = W(
23
+ ({ userType: d, studentId: i, courseStreams: l, onPuzzlesClick: R, onReviewClick: Y, scrollAreaHeight: T }) => {
24
+ const [f, $] = k([]), [y, C] = k(!1), { onEvent: c } = fe(), {
25
+ get: D,
26
26
  data: e,
27
- isProcessingFailed: X,
28
- isProcessing: Y
29
- } = Z(i), { user_logs: _ } = e ?? {}, m = w(
30
- (t = me, a = !1) => {
31
- a && $(!0), M(i, {
27
+ isProcessingFailed: j,
28
+ isProcessing: X
29
+ } = ee(i), { user_logs: _ } = e ?? {}, s = v(
30
+ (t = se, a = !1) => {
31
+ a && C(!0), D(i, {
32
32
  page: t,
33
33
  size: 10,
34
34
  timezone: ne(),
35
- course_stream: d === ie.TEACHER ? l : []
35
+ course_stream: d === ce.TEACHER ? l : []
36
36
  });
37
37
  },
38
- [M, i, d, l]
39
- ), b = W(() => {
38
+ [D, i, d, l]
39
+ ), b = q(() => {
40
40
  const t = /* @__PURE__ */ new Set();
41
41
  f.forEach((r) => {
42
- r.daily_logs && r.daily_logs.forEach((s) => {
43
- s.course_stream && s.course_stream !== "CIRCLE" && t.add(s.course_stream);
42
+ r.daily_logs && r.daily_logs.forEach((m) => {
43
+ m.course_stream && m.course_stream !== L.CIRCLE && t.add(m.course_stream);
44
44
  });
45
45
  });
46
46
  const a = new Set(
47
- (l || []).filter((r) => String(r) !== "CIRCLE")
47
+ (l || []).filter((r) => String(r) !== L.CIRCLE)
48
48
  );
49
49
  return a.size > 1 || t.size > 1 || a.size > 0 && t.size > 0 && (a.size !== t.size || !Array.from(a).every((r) => t.has(r)));
50
- }, [f, l]), B = w(() => {
51
- e != null && e.next_page && !y && m(e.next_page, !0);
52
- }, [e == null ? void 0 : e.next_page, y, m]);
50
+ }, [f, l]), B = v(() => {
51
+ e != null && e.next_page && !y && s(e.next_page, !0);
52
+ }, [e == null ? void 0 : e.next_page, y, s]);
53
53
  return p(() => {
54
- e && (e.curr_page === 1 ? T(_ ?? []) : (T((t) => [...t, ..._ ?? []]), $(!1)));
54
+ e && (e.curr_page === 1 ? $(_ ?? []) : ($((t) => [...t, ..._ ?? []]), C(!1)));
55
55
  }, [e, _]), p(() => {
56
56
  c("timeline_viewed", {
57
57
  student_id: i
@@ -61,53 +61,53 @@ const j = V(
61
61
  student_id: i
62
62
  });
63
63
  }, [i, c]), p(() => {
64
- m(1, !1);
65
- }, [m]), X ? /* @__PURE__ */ o(q, { height: L || "100vh", onTryAgain: () => m(1, !1) }) : Y && !f.length ? /* @__PURE__ */ o(
66
- I,
64
+ s(1, !1);
65
+ }, [s]), j ? /* @__PURE__ */ o(H, { height: T || "100vh", onTryAgain: s }) : X && !f.length ? /* @__PURE__ */ o(
66
+ w,
67
67
  {
68
68
  $alignItems: "center",
69
69
  $justifyContent: "center",
70
- $height: L || "100vh",
71
- children: /* @__PURE__ */ o(H, { width: "100%", height: "100%" })
70
+ $height: T || "100vh",
71
+ children: /* @__PURE__ */ o(J, { width: "100%", height: "100%" })
72
72
  }
73
- ) : /* @__PURE__ */ o(oe, { $alignItems: "center", children: /* @__PURE__ */ u(te, { children: [
73
+ ) : /* @__PURE__ */ o(te, { $alignItems: "center", children: /* @__PURE__ */ u(re, { children: [
74
74
  f.map((t, a) => {
75
- const { daily_logs: r, from_date: s, to_date: C } = t;
75
+ const { daily_logs: r, from_date: m, to_date: E } = t;
76
76
  if (r) {
77
- const F = O(s), D = O(C), {
78
- day: E,
79
- month: z,
77
+ const F = O(m), M = O(E), {
78
+ day: z,
79
+ month: S,
80
80
  monthName: G
81
81
  } = N(F), {
82
- day: S,
83
- month: x,
82
+ day: x,
83
+ month: A,
84
84
  year: U,
85
85
  monthName: K
86
- } = N(D), h = ce(D), A = h && x === 12 && S === 31;
87
- return /* @__PURE__ */ u(I, { children: [
88
- /* @__PURE__ */ o(se, { toYear: U, isLastDayOfYear: A }),
89
- !A && z && h && /* @__PURE__ */ o(g, { heightX: 1 }),
90
- /* @__PURE__ */ o(ae, { fromMonth: z, isLastDayOfMth: h }),
91
- /* @__PURE__ */ u(re, { $gutterX: 1, $addedMonthBreak: !!(h && x), children: [
86
+ } = N(M), h = he(M), I = h && A === 12 && x === 31;
87
+ return /* @__PURE__ */ u(w, { children: [
88
+ /* @__PURE__ */ o(me, { toYear: U, isLastDayOfYear: I }),
89
+ !I && S && h && /* @__PURE__ */ o(g, { heightX: 1 }),
90
+ /* @__PURE__ */ o(ae, { fromMonth: S, isLastDayOfMth: h }),
91
+ /* @__PURE__ */ u(ie, { $gutterX: 1, $addedMonthBreak: !!(h && A), children: [
92
92
  /* @__PURE__ */ o(g, { heightX: 1 }),
93
- /* @__PURE__ */ o(Q, { $renderAs: "ac4-black", $color: "BLACK_T_60", children: s === C ? `${E} ${G}` : `${E} - ${S} ${K}` }),
93
+ /* @__PURE__ */ o(Z, { $renderAs: "ac4-black", $color: "BLACK_T_60", children: m === E ? `${z} ${G}` : `${z} - ${x} ${K}` }),
94
94
  /* @__PURE__ */ o(g, { heightX: 1 }),
95
- r.length > 0 ? r.map((n, k) => /* @__PURE__ */ o(
96
- ee,
95
+ r.length > 0 ? r.map((n, V) => /* @__PURE__ */ o(
96
+ oe,
97
97
  {
98
98
  type: n.type,
99
99
  summary: n.summary ?? "",
100
100
  courseStream: n.course_stream,
101
101
  cards: n.cards,
102
- onPuzzleClick: P,
103
- onReviewClick: R,
102
+ onPuzzleClick: R,
103
+ onReviewClick: Y,
104
104
  userType: d,
105
- shouldShowTag: b && n.course_stream !== "CIRCLE",
106
- isLastItem: k === r.length - 1,
107
- fromDate: s,
105
+ shouldShowTag: b && n.course_stream !== L.CIRCLE,
106
+ isLastItem: V === r.length - 1,
107
+ fromDate: m,
108
108
  studentId: i
109
109
  },
110
- `timeline-${k}`
110
+ `timeline-${m}`
111
111
  )) : /* @__PURE__ */ o(le, {}),
112
112
  /* @__PURE__ */ o(g, { heightX: 1 })
113
113
  ] })
@@ -115,7 +115,7 @@ const j = V(
115
115
  }
116
116
  }),
117
117
  /* @__PURE__ */ o(
118
- J,
118
+ Q,
119
119
  {
120
120
  onLoadMore: B,
121
121
  isLoading: y,
@@ -125,9 +125,9 @@ const j = V(
125
125
  ] }) });
126
126
  }
127
127
  );
128
- j.displayName = "DailyTimeline";
129
- const Ie = j;
128
+ P.displayName = "DailyTimeline";
129
+ const Ne = P;
130
130
  export {
131
- Ie as default
131
+ Ne as default
132
132
  };
133
133
  //# sourceMappingURL=daily-timeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"daily-timeline.js","sources":["../../../src/features/timeline/daily-timeline.tsx"],"sourcesContent":["import { isLastDayOfMonth, parseISO } from 'date-fns';\nimport { memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport Error from '../ui/error/error';\nimport FlexView from '../ui/layout/flex-view';\nimport AppLoader from '../ui/loader/app-loader/app-loader';\nimport IntersectionLoader from '../ui/intersection-loader/intersection-loader';\nimport Separator from '../ui/separator/separator';\nimport Text from '../ui/text/text';\nimport { type ITimelineData, useDailyTimelineGet } from './api/use-daily-timeline-get';\nimport { getDayMonthYear } from './comps/utils';\nimport DailyTimelineItems from './comps/daily-timeline-items/daily-timeline-items';\nimport * as Styled from './daily-timeline-styled';\nimport { USER_TYPE, type IDailyTimelineProps } from './daily-timeline-types';\nimport MonthBreak from './comps/month-break/month-break';\nimport YearBreak from './comps/year-break/year-break';\nimport { INITIAL_PAGE } from './comps/constants';\nimport { getTimezone } from '../../helpers/date-time';\nimport NoActivity from './comps/no-activity';\nimport { useUIContext } from '../ui/context/context';\n\nconst DailyTimeline: FC<IDailyTimelineProps> = memo(\n ({ userType, studentId, courseStreams, onPuzzlesClick, onReviewClick, scrollAreaHeight }) => {\n const [allTimelineData, setAllTimelineData] = useState<ITimelineData[]>([]);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const { onEvent: trackEvent } = useUIContext();\n\n const {\n get: getTimeline,\n data: timelineData,\n isProcessingFailed,\n isProcessing,\n } = useDailyTimelineGet(studentId);\n const { user_logs: userLogs } = timelineData ?? {};\n\n const fetchTimeline = useCallback(\n (page = INITIAL_PAGE, append = false) => {\n if (append) {\n setIsLoadingMore(true);\n }\n\n getTimeline(studentId, {\n page,\n size: 10,\n timezone: getTimezone(),\n course_stream: userType === USER_TYPE.TEACHER ? courseStreams : [],\n });\n },\n [getTimeline, studentId, userType, courseStreams],\n );\n\n const shouldShowTag = useMemo(() => {\n const allCourseStreams = new Set<string>();\n\n allTimelineData.forEach(entry => {\n if (entry.daily_logs) {\n entry.daily_logs.forEach(log => {\n if (log.course_stream && log.course_stream !== 'CIRCLE') {\n allCourseStreams.add(log.course_stream);\n }\n });\n }\n });\n\n const courseStreamsSet = new Set(\n (courseStreams || []).filter(stream => String(stream) !== 'CIRCLE'),\n );\n\n return (\n courseStreamsSet.size > 1 ||\n allCourseStreams.size > 1 ||\n (courseStreamsSet.size > 0 &&\n allCourseStreams.size > 0 &&\n (courseStreamsSet.size !== allCourseStreams.size ||\n !Array.from(courseStreamsSet).every(stream => allCourseStreams.has(stream))))\n );\n }, [allTimelineData, courseStreams]);\n\n const handleLoadMore = useCallback(() => {\n if (timelineData?.next_page && !isLoadingMore) {\n fetchTimeline(timelineData.next_page, true);\n }\n }, [timelineData?.next_page, isLoadingMore, fetchTimeline]);\n\n useEffect(() => {\n if (timelineData) {\n if (timelineData.curr_page === 1) {\n setAllTimelineData(userLogs ?? []);\n } else {\n setAllTimelineData(prev => [...prev, ...(userLogs ?? [])]);\n setIsLoadingMore(false);\n }\n }\n }, [timelineData, userLogs]);\n\n useEffect(() => {\n trackEvent('timeline_viewed', {\n student_id: studentId,\n });\n }, [studentId, trackEvent]);\n\n useEffect(() => {\n return () => {\n trackEvent('timeline_closed', {\n student_id: studentId,\n });\n };\n }, [studentId, trackEvent]);\n\n useEffect(() => {\n fetchTimeline(1, false);\n }, [fetchTimeline]);\n\n if (isProcessingFailed) {\n return (\n <Error height={scrollAreaHeight || '100vh'} onTryAgain={() => fetchTimeline(1, false)} />\n );\n }\n\n if (isProcessing && !allTimelineData.length) {\n return (\n <FlexView\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $height={scrollAreaHeight || '100vh'}\n >\n <AppLoader width=\"100%\" height=\"100%\" />\n </FlexView>\n );\n }\n\n return (\n <Styled.ScrollWrapper $alignItems=\"center\">\n <Styled.DailyTimelineContainer>\n {allTimelineData.map((entry, index) => {\n const { daily_logs: dailyLogs, from_date: fromDate, to_date: toDate } = entry;\n\n if (dailyLogs) {\n const fromDateObj = parseISO(fromDate);\n const toDateObj = parseISO(toDate);\n\n const {\n day: fromDay,\n month: fromMonth,\n monthName: fromMonthName,\n } = getDayMonthYear(fromDateObj);\n\n const {\n day: toDay,\n month: toMonth,\n year: toYear,\n monthName: toMonthName,\n } = getDayMonthYear(toDateObj);\n\n const isLastDayOfMth = isLastDayOfMonth(toDateObj);\n const isLastDayOfYear = isLastDayOfMth && toMonth === 12 && toDay === 31;\n\n return (\n <FlexView key={`timeline-entry-${index}`}>\n <YearBreak toYear={toYear} isLastDayOfYear={isLastDayOfYear} />\n {!isLastDayOfYear && fromMonth && isLastDayOfMth && <Separator heightX={1} />}\n <MonthBreak fromMonth={fromMonth} isLastDayOfMth={isLastDayOfMth} />\n <Styled.DailyItems $gutterX={1} $addedMonthBreak={!!(isLastDayOfMth && toMonth)}>\n <Separator heightX={1} />\n <Text $renderAs=\"ac4-black\" $color=\"BLACK_T_60\">\n {fromDate === toDate\n ? `${fromDay} ${fromMonthName}`\n : `${fromDay} - ${toDay} ${toMonthName}`}\n </Text>\n <Separator heightX={1} />\n {dailyLogs.length > 0 ? (\n dailyLogs.map((log, logIndex) => (\n <DailyTimelineItems\n key={`timeline-${logIndex}`}\n type={log.type}\n summary={log.summary ?? ''}\n courseStream={log.course_stream}\n cards={log.cards}\n onPuzzleClick={onPuzzlesClick}\n onReviewClick={onReviewClick}\n userType={userType}\n shouldShowTag={shouldShowTag && log.course_stream !== 'CIRCLE'}\n isLastItem={logIndex === dailyLogs.length - 1}\n fromDate={fromDate}\n studentId={studentId}\n />\n ))\n ) : (\n <NoActivity />\n )}\n <Separator heightX={1} />\n </Styled.DailyItems>\n </FlexView>\n );\n }\n })}\n <IntersectionLoader\n onLoadMore={handleLoadMore}\n isLoading={isLoadingMore}\n hasMore={!!timelineData?.next_page}\n />\n </Styled.DailyTimelineContainer>\n </Styled.ScrollWrapper>\n );\n },\n);\n\nDailyTimeline.displayName = 'DailyTimeline';\n\nexport default DailyTimeline;\n"],"names":["DailyTimeline","memo","userType","studentId","courseStreams","onPuzzlesClick","onReviewClick","scrollAreaHeight","allTimelineData","setAllTimelineData","useState","isLoadingMore","setIsLoadingMore","trackEvent","useUIContext","getTimeline","timelineData","isProcessingFailed","isProcessing","useDailyTimelineGet","userLogs","fetchTimeline","useCallback","page","INITIAL_PAGE","append","getTimezone","USER_TYPE","shouldShowTag","useMemo","allCourseStreams","entry","log","courseStreamsSet","stream","handleLoadMore","useEffect","prev","jsx","Error","FlexView","AppLoader","Styled.ScrollWrapper","jsxs","Styled.DailyTimelineContainer","index","dailyLogs","fromDate","toDate","fromDateObj","parseISO","toDateObj","fromDay","fromMonth","fromMonthName","getDayMonthYear","toDay","toMonth","toYear","toMonthName","isLastDayOfMth","isLastDayOfMonth","isLastDayOfYear","YearBreak","Separator","MonthBreak","Styled.DailyItems","Text","logIndex","DailyTimelineItems","NoActivity","IntersectionLoader","DailyTimeline$1"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAqBA,MAAMA,IAAyCC;AAAA,EAC7C,CAAC,EAAE,UAAAC,GAAU,WAAAC,GAAW,eAAAC,GAAe,gBAAAC,GAAgB,eAAAC,GAAe,kBAAAC,QAAuB;AAC3F,UAAM,CAACC,GAAiBC,CAAkB,IAAIC,EAA0B,CAAE,CAAA,GACpE,CAACC,GAAeC,CAAgB,IAAIF,EAAS,EAAK,GAClD,EAAE,SAASG,EAAW,IAAIC,GAAa,GAEvC;AAAA,MACJ,KAAKC;AAAA,MACL,MAAMC;AAAA,MACN,oBAAAC;AAAA,MACA,cAAAC;AAAA,IAAA,IACEC,EAAoBhB,CAAS,GAC3B,EAAE,WAAWiB,MAAaJ,KAAgB,CAAA,GAE1CK,IAAgBC;AAAA,MACpB,CAACC,IAAOC,IAAcC,IAAS,OAAU;AACvC,QAAIA,KACFb,EAAiB,EAAI,GAGvBG,EAAYZ,GAAW;AAAA,UACrB,MAAAoB;AAAA,UACA,MAAM;AAAA,UACN,UAAUG,GAAY;AAAA,UACtB,eAAexB,MAAayB,GAAU,UAAUvB,IAAgB,CAAC;AAAA,QAAA,CAClE;AAAA,MACH;AAAA,MACA,CAACW,GAAaZ,GAAWD,GAAUE,CAAa;AAAA,IAAA,GAG5CwB,IAAgBC,EAAQ,MAAM;AAC5B,YAAAC,wBAAuB;AAE7B,MAAAtB,EAAgB,QAAQ,CAASuB,MAAA;AAC/B,QAAIA,EAAM,cACFA,EAAA,WAAW,QAAQ,CAAOC,MAAA;AAC9B,UAAIA,EAAI,iBAAiBA,EAAI,kBAAkB,YAC5BF,EAAA,IAAIE,EAAI,aAAa;AAAA,QACxC,CACD;AAAA,MACH,CACD;AAED,YAAMC,IAAmB,IAAI;AAAA,SAC1B7B,KAAiB,CAAI,GAAA,OAAO,OAAU,OAAO8B,CAAM,MAAM,QAAQ;AAAA,MAAA;AAIlE,aAAAD,EAAiB,OAAO,KACxBH,EAAiB,OAAO,KACvBG,EAAiB,OAAO,KACvBH,EAAiB,OAAO,MACvBG,EAAiB,SAASH,EAAiB,QAC1C,CAAC,MAAM,KAAKG,CAAgB,EAAE,MAAM,CAAUC,MAAAJ,EAAiB,IAAII,CAAM,CAAC;AAAA,IAAA,GAE/E,CAAC1B,GAAiBJ,CAAa,CAAC,GAE7B+B,IAAiBb,EAAY,MAAM;AACnC,MAAAN,KAAA,QAAAA,EAAc,aAAa,CAACL,KAChBU,EAAAL,EAAa,WAAW,EAAI;AAAA,OAE3C,CAACA,KAAA,gBAAAA,EAAc,WAAWL,GAAeU,CAAa,CAAC;AA+B1D,WA7BAe,EAAU,MAAM;AACd,MAAIpB,MACEA,EAAa,cAAc,IACVP,EAAAW,KAAY,CAAA,CAAE,KAEdX,EAAA,CAAA4B,MAAQ,CAAC,GAAGA,GAAM,GAAIjB,KAAY,CAAG,CAAA,CAAC,GACzDR,EAAiB,EAAK;AAAA,IAE1B,GACC,CAACI,GAAcI,CAAQ,CAAC,GAE3BgB,EAAU,MAAM;AACd,MAAAvB,EAAW,mBAAmB;AAAA,QAC5B,YAAYV;AAAA,MAAA,CACb;AAAA,IAAA,GACA,CAACA,GAAWU,CAAU,CAAC,GAE1BuB,EAAU,MACD,MAAM;AACX,MAAAvB,EAAW,mBAAmB;AAAA,QAC5B,YAAYV;AAAA,MAAA,CACb;AAAA,IAAA,GAEF,CAACA,GAAWU,CAAU,CAAC,GAE1BuB,EAAU,MAAM;AACd,MAAAf,EAAc,GAAG,EAAK;AAAA,IAAA,GACrB,CAACA,CAAa,CAAC,GAEdJ,IAEA,gBAAAqB,EAACC,GAAM,EAAA,QAAQhC,KAAoB,SAAS,YAAY,MAAMc,EAAc,GAAG,EAAK,EAAG,CAAA,IAIvFH,KAAgB,CAACV,EAAgB,SAEjC,gBAAA8B;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,aAAY;AAAA,QACZ,iBAAgB;AAAA,QAChB,SAASjC,KAAoB;AAAA,QAE7B,UAAC,gBAAA+B,EAAAG,GAAA,EAAU,OAAM,QAAO,QAAO,QAAO;AAAA,MAAA;AAAA,IAAA,IAM1C,gBAAAH,EAACI,IAAA,EAAqB,aAAY,UAChC,UAAA,gBAAAC,EAACC,IAAA,EACE,UAAA;AAAA,MAAgBpC,EAAA,IAAI,CAACuB,GAAOc,MAAU;AACrC,cAAM,EAAE,YAAYC,GAAW,WAAWC,GAAU,SAASC,EAAW,IAAAjB;AAExE,YAAIe,GAAW;AACP,gBAAAG,IAAcC,EAASH,CAAQ,GAC/BI,IAAYD,EAASF,CAAM,GAE3B;AAAA,YACJ,KAAKI;AAAA,YACL,OAAOC;AAAA,YACP,WAAWC;AAAA,UAAA,IACTC,EAAgBN,CAAW,GAEzB;AAAA,YACJ,KAAKO;AAAA,YACL,OAAOC;AAAA,YACP,MAAMC;AAAA,YACN,WAAWC;AAAA,UAAA,IACTJ,EAAgBJ,CAAS,GAEvBS,IAAiBC,GAAiBV,CAAS,GAC3CW,IAAkBF,KAAkBH,MAAY,MAAMD,MAAU;AAEtE,mCACGhB,GACC,EAAA,UAAA;AAAA,YAAC,gBAAAF,EAAAyB,IAAA,EAAU,QAAAL,GAAgB,iBAAAI,EAAkC,CAAA;AAAA,YAC5D,CAACA,KAAmBT,KAAaO,KAAmB,gBAAAtB,EAAA0B,GAAA,EAAU,SAAS,GAAG;AAAA,YAC3E,gBAAA1B,EAAC2B,IAAW,EAAA,WAAAZ,GAAsB,gBAAAO,EAAgC,CAAA;AAAA,YAClE,gBAAAjB,EAACuB,IAAA,EAAkB,UAAU,GAAG,kBAAkB,CAAC,EAAEN,KAAkBH,IACrE,UAAA;AAAA,cAAC,gBAAAnB,EAAA0B,GAAA,EAAU,SAAS,EAAG,CAAA;AAAA,gCACtBG,GAAK,EAAA,WAAU,aAAY,QAAO,cAChC,gBAAanB,IACV,GAAGI,CAAO,IAAIE,CAAa,KAC3B,GAAGF,CAAO,MAAMI,CAAK,IAAIG,CAAW,IAC1C;AAAA,cACA,gBAAArB,EAAC0B,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,cACtBlB,EAAU,SAAS,IAClBA,EAAU,IAAI,CAACd,GAAKoC,MAClB,gBAAA9B;AAAA,gBAAC+B;AAAA,gBAAA;AAAA,kBAEC,MAAMrC,EAAI;AAAA,kBACV,SAASA,EAAI,WAAW;AAAA,kBACxB,cAAcA,EAAI;AAAA,kBAClB,OAAOA,EAAI;AAAA,kBACX,eAAe3B;AAAA,kBACf,eAAAC;AAAA,kBACA,UAAAJ;AAAA,kBACA,eAAe0B,KAAiBI,EAAI,kBAAkB;AAAA,kBACtD,YAAYoC,MAAatB,EAAU,SAAS;AAAA,kBAC5C,UAAAC;AAAA,kBACA,WAAA5C;AAAA,gBAAA;AAAA,gBAXK,YAAYiE,CAAQ;AAAA,cAAA,CAa5B,IAED,gBAAA9B,EAACgC,IAAW,EAAA;AAAA,cAEd,gBAAAhC,EAAC0B,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,YAAA,GACzB;AAAA,UAjCa,EAAA,GAAA,kBAAkBnB,CAAK,EAkCtC;AAAA,QAEJ;AAAA,MAAA,CACD;AAAA,MACD,gBAAAP;AAAA,QAACiC;AAAA,QAAA;AAAA,UACC,YAAYpC;AAAA,UACZ,WAAWxB;AAAA,UACX,SAAS,CAAC,EAACK,KAAA,QAAAA,EAAc;AAAA,QAAA;AAAA,MAC3B;AAAA,IAAA,EACF,CAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEAhB,EAAc,cAAc;AAE5B,MAAAwE,KAAexE;"}
1
+ {"version":3,"file":"daily-timeline.js","sources":["../../../src/features/timeline/daily-timeline.tsx"],"sourcesContent":["import { isLastDayOfMonth, parseISO } from 'date-fns';\nimport { memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\nimport Error from '../ui/error/error';\nimport FlexView from '../ui/layout/flex-view';\nimport AppLoader from '../ui/loader/app-loader/app-loader';\nimport IntersectionLoader from '../ui/intersection-loader/intersection-loader';\nimport Separator from '../ui/separator/separator';\nimport Text from '../ui/text/text';\nimport { type ITimelineData, useDailyTimelineGet } from './api/use-daily-timeline-get';\nimport { getDayMonthYear } from './comps/utils';\nimport DailyTimelineItems from './comps/daily-timeline-items/daily-timeline-items';\nimport * as Styled from './daily-timeline-styled';\nimport { type IDailyTimelineProps } from './daily-timeline-types';\nimport MonthBreak from './comps/month-break/month-break';\nimport YearBreak from './comps/year-break/year-break';\nimport { INITIAL_PAGE } from './comps/constants';\nimport { getTimezone } from '../../helpers/date-time';\nimport NoActivity from './comps/no-activity';\nimport { useUIContext } from '../ui/context/context';\nimport { CARD_TYPE, USER_TYPE } from './enums/enums';\n\nconst DailyTimeline: FC<IDailyTimelineProps> = memo(\n ({ userType, studentId, courseStreams, onPuzzlesClick, onReviewClick, scrollAreaHeight }) => {\n const [allTimelineData, setAllTimelineData] = useState<ITimelineData[]>([]);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const { onEvent: trackEvent } = useUIContext();\n\n const {\n get: getTimeline,\n data: timelineData,\n isProcessingFailed,\n isProcessing,\n } = useDailyTimelineGet(studentId);\n const { user_logs: userLogs } = timelineData ?? {};\n\n const fetchTimeline = useCallback(\n (page = INITIAL_PAGE, append = false) => {\n if (append) {\n setIsLoadingMore(true);\n }\n\n getTimeline(studentId, {\n page,\n size: 10,\n timezone: getTimezone(),\n course_stream: userType === USER_TYPE.TEACHER ? courseStreams : [],\n });\n },\n [getTimeline, studentId, userType, courseStreams],\n );\n\n const shouldShowTag = useMemo(() => {\n const allCourseStreams = new Set<string>();\n\n allTimelineData.forEach(entry => {\n if (entry.daily_logs) {\n entry.daily_logs.forEach(log => {\n if (log.course_stream && log.course_stream !== CARD_TYPE.CIRCLE) {\n allCourseStreams.add(log.course_stream);\n }\n });\n }\n });\n\n const courseStreamsSet = new Set(\n (courseStreams || []).filter(stream => String(stream) !== CARD_TYPE.CIRCLE),\n );\n\n return (\n courseStreamsSet.size > 1 ||\n allCourseStreams.size > 1 ||\n (courseStreamsSet.size > 0 &&\n allCourseStreams.size > 0 &&\n (courseStreamsSet.size !== allCourseStreams.size ||\n !Array.from(courseStreamsSet).every(stream => allCourseStreams.has(stream))))\n );\n }, [allTimelineData, courseStreams]);\n\n const handleLoadMore = useCallback(() => {\n if (timelineData?.next_page && !isLoadingMore) {\n fetchTimeline(timelineData.next_page, true);\n }\n }, [timelineData?.next_page, isLoadingMore, fetchTimeline]);\n\n useEffect(() => {\n if (timelineData) {\n if (timelineData.curr_page === 1) {\n setAllTimelineData(userLogs ?? []);\n } else {\n setAllTimelineData(prev => [...prev, ...(userLogs ?? [])]);\n setIsLoadingMore(false);\n }\n }\n }, [timelineData, userLogs]);\n\n useEffect(() => {\n trackEvent('timeline_viewed', {\n student_id: studentId,\n });\n }, [studentId, trackEvent]);\n\n useEffect(() => {\n return () => {\n trackEvent('timeline_closed', {\n student_id: studentId,\n });\n };\n }, [studentId, trackEvent]);\n\n useEffect(() => {\n fetchTimeline(1, false);\n }, [fetchTimeline]);\n\n if (isProcessingFailed) {\n return <Error height={scrollAreaHeight || '100vh'} onTryAgain={fetchTimeline} />;\n }\n\n if (isProcessing && !allTimelineData.length) {\n return (\n <FlexView\n $alignItems=\"center\"\n $justifyContent=\"center\"\n $height={scrollAreaHeight || '100vh'}\n >\n <AppLoader width=\"100%\" height=\"100%\" />\n </FlexView>\n );\n }\n\n return (\n <Styled.ScrollWrapper $alignItems=\"center\">\n <Styled.DailyTimelineContainer>\n {allTimelineData.map((entry, index) => {\n const { daily_logs: dailyLogs, from_date: fromDate, to_date: toDate } = entry;\n\n if (dailyLogs) {\n const fromDateObj = parseISO(fromDate);\n const toDateObj = parseISO(toDate);\n\n const {\n day: fromDay,\n month: fromMonth,\n monthName: fromMonthName,\n } = getDayMonthYear(fromDateObj);\n\n const {\n day: toDay,\n month: toMonth,\n year: toYear,\n monthName: toMonthName,\n } = getDayMonthYear(toDateObj);\n\n const isLastDayOfMth = isLastDayOfMonth(toDateObj);\n const isLastDayOfYear = isLastDayOfMth && toMonth === 12 && toDay === 31;\n\n return (\n <FlexView key={`timeline-entry-${index}`}>\n <YearBreak toYear={toYear} isLastDayOfYear={isLastDayOfYear} />\n {!isLastDayOfYear && fromMonth && isLastDayOfMth && <Separator heightX={1} />}\n <MonthBreak fromMonth={fromMonth} isLastDayOfMth={isLastDayOfMth} />\n <Styled.DailyItems $gutterX={1} $addedMonthBreak={!!(isLastDayOfMth && toMonth)}>\n <Separator heightX={1} />\n <Text $renderAs=\"ac4-black\" $color=\"BLACK_T_60\">\n {fromDate === toDate\n ? `${fromDay} ${fromMonthName}`\n : `${fromDay} - ${toDay} ${toMonthName}`}\n </Text>\n <Separator heightX={1} />\n {dailyLogs.length > 0 ? (\n dailyLogs.map((log, logIndex) => (\n <DailyTimelineItems\n key={`timeline-${fromDate}`}\n type={log.type}\n summary={log.summary ?? ''}\n courseStream={log.course_stream}\n cards={log.cards}\n onPuzzleClick={onPuzzlesClick}\n onReviewClick={onReviewClick}\n userType={userType}\n shouldShowTag={shouldShowTag && log.course_stream !== CARD_TYPE.CIRCLE}\n isLastItem={logIndex === dailyLogs.length - 1}\n fromDate={fromDate}\n studentId={studentId}\n />\n ))\n ) : (\n <NoActivity />\n )}\n <Separator heightX={1} />\n </Styled.DailyItems>\n </FlexView>\n );\n }\n })}\n <IntersectionLoader\n onLoadMore={handleLoadMore}\n isLoading={isLoadingMore}\n hasMore={!!timelineData?.next_page}\n />\n </Styled.DailyTimelineContainer>\n </Styled.ScrollWrapper>\n );\n },\n);\n\nDailyTimeline.displayName = 'DailyTimeline';\n\nexport default DailyTimeline;\n"],"names":["DailyTimeline","memo","userType","studentId","courseStreams","onPuzzlesClick","onReviewClick","scrollAreaHeight","allTimelineData","setAllTimelineData","useState","isLoadingMore","setIsLoadingMore","trackEvent","useUIContext","getTimeline","timelineData","isProcessingFailed","isProcessing","useDailyTimelineGet","userLogs","fetchTimeline","useCallback","page","INITIAL_PAGE","append","getTimezone","USER_TYPE","shouldShowTag","useMemo","allCourseStreams","entry","log","CARD_TYPE","courseStreamsSet","stream","handleLoadMore","useEffect","prev","Error","jsx","FlexView","AppLoader","Styled.ScrollWrapper","jsxs","Styled.DailyTimelineContainer","index","dailyLogs","fromDate","toDate","fromDateObj","parseISO","toDateObj","fromDay","fromMonth","fromMonthName","getDayMonthYear","toDay","toMonth","toYear","toMonthName","isLastDayOfMth","isLastDayOfMonth","isLastDayOfYear","YearBreak","Separator","MonthBreak","Styled.DailyItems","Text","logIndex","DailyTimelineItems","NoActivity","IntersectionLoader","DailyTimeline$1"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ var C = /* @__PURE__ */ ((r) => (r.COMPLETED = "COMPLETED", r.IN_PROGRESS = "IN_PROGRESS", r.PENDING = "PENDING", r))(C || {}), E = /* @__PURE__ */ ((r) => (r.TEACHER = "TEACHER", r.STUDENT = "STUDENT", r.PARENT = "PARENT", r))(E || {}), N = /* @__PURE__ */ ((r) => (r.CW = "CW", r.HW = "HW", r.CIRCLE = "CIRCLE", r))(N || {});
2
+ export {
3
+ N as CARD_TYPE,
4
+ C as NODE_STATE,
5
+ E as USER_TYPE
6
+ };
7
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sources":["../../../../src/features/timeline/enums/enums.ts"],"sourcesContent":["\nexport enum NODE_STATE { COMPLETED = 'COMPLETED', IN_PROGRESS = 'IN_PROGRESS', PENDING = 'PENDING' }\n\nexport enum USER_TYPE { TEACHER = 'TEACHER', STUDENT = 'STUDENT', PARENT = 'PARENT' }\n\nexport enum CARD_TYPE {\n CW = 'CW',\n HW = 'HW',\n CIRCLE = 'CIRCLE',\n}"],"names":["NODE_STATE","USER_TYPE","CARD_TYPE"],"mappings":"AACY,IAAAA,sBAAAA,OAAaA,EAAA,YAAY,aAAaA,EAAA,cAAc,eAAeA,EAAA,UAAU,WAA7EA,IAAAA,KAAA,CAAA,CAAA,GAEAC,sBAAAA,OAAYA,EAAA,UAAU,WAAWA,EAAA,UAAU,WAAWA,EAAA,SAAS,UAA/DA,IAAAA,KAAA,CAAA,CAAA,GAEAC,sBAAAA,OACRA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,SAAS,UAHDA,IAAAA,KAAA,CAAA,CAAA;"}
package/dist/index.d.ts CHANGED
@@ -1566,7 +1566,7 @@ declare interface ICustomVideoProps extends DetailedHTMLProps<VideoHTMLAttribute
1566
1566
  }
1567
1567
 
1568
1568
  declare interface IDailyTimelineProps {
1569
- userType: (typeof USER_TYPE)[keyof typeof USER_TYPE];
1569
+ userType: USER_TYPE;
1570
1570
  studentId: string;
1571
1571
  courseStreams?: TCourseStream[];
1572
1572
  onPuzzlesClick: (userNodeId: string) => void;
@@ -7227,11 +7227,11 @@ export declare const usePuzzleUnassignJourney: () => {
7227
7227
 
7228
7228
  export declare const User2Icon: FC<SVGProps<SVGSVGElement>>;
7229
7229
 
7230
- declare const USER_TYPE: {
7231
- readonly TEACHER: "TEACHER";
7232
- readonly STUDENT: "STUDENT";
7233
- readonly PARENT: "PARENT";
7234
- };
7230
+ declare enum USER_TYPE {
7231
+ TEACHER = "TEACHER",
7232
+ STUDENT = "STUDENT",
7233
+ PARENT = "PARENT"
7234
+ }
7235
7235
 
7236
7236
  export declare const UserIcon: FC<SVGProps<SVGSVGElement>>;
7237
7237
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.5.9-as3",
3
+ "version": "3.5.9-as4",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -1,5 +0,0 @@
1
- const E = { TEACHER: "TEACHER", STUDENT: "STUDENT", PARENT: "PARENT" };
2
- export {
3
- E as USER_TYPE
4
- };
5
- //# sourceMappingURL=daily-timeline-types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"daily-timeline-types.js","sources":["../../../src/features/timeline/daily-timeline-types.ts"],"sourcesContent":["import { type TCourseStream } from '../milestone/create/milestone-create-types';\n\nexport const USER_TYPE = { TEACHER: 'TEACHER', STUDENT: 'STUDENT', PARENT: 'PARENT' } as const;\n\nexport interface IDailyTimelineProps {\n userType: (typeof USER_TYPE)[keyof typeof USER_TYPE];\n studentId: string;\n courseStreams?: TCourseStream[];\n onPuzzlesClick: (userNodeId: string) => void;\n onReviewClick?: (\n userNodeId: string | null,\n isSatMockTestBlock: boolean,\n userBlockId: string | null,\n ) => void;\n scrollAreaHeight?: string | number;\n}\n"],"names":["USER_TYPE"],"mappings":"AAEO,MAAMA,IAAY,EAAE,SAAS,WAAW,SAAS,WAAW,QAAQ,SAAS;"}