@cuemath/leap 3.5.12 → 3.5.13

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 (25) hide show
  1. package/dist/features/analytics-events/whitelist-events.js +16 -14
  2. package/dist/features/analytics-events/whitelist-events.js.map +1 -1
  3. package/dist/features/timeline/api/use-daily-timeline-get.js.map +1 -1
  4. package/dist/features/timeline/comps/accordion-item/accordion-item.js +42 -41
  5. package/dist/features/timeline/comps/accordion-item/accordion-item.js.map +1 -1
  6. package/dist/features/timeline/comps/constants.js +24 -26
  7. package/dist/features/timeline/comps/constants.js.map +1 -1
  8. package/dist/features/timeline/comps/daily-timeline-items/daily-timeline-items-styled.js +13 -18
  9. package/dist/features/timeline/comps/daily-timeline-items/daily-timeline-items-styled.js.map +1 -1
  10. package/dist/features/timeline/comps/daily-timeline-items/daily-timeline-items.js +77 -93
  11. package/dist/features/timeline/comps/daily-timeline-items/daily-timeline-items.js.map +1 -1
  12. package/dist/features/timeline/daily-timeline-events.js +14 -0
  13. package/dist/features/timeline/daily-timeline-events.js.map +1 -0
  14. package/dist/features/timeline/daily-timeline-styled.js +12 -9
  15. package/dist/features/timeline/daily-timeline-styled.js.map +1 -1
  16. package/dist/features/timeline/daily-timeline-types.js +4 -4
  17. package/dist/features/timeline/daily-timeline-types.js.map +1 -1
  18. package/dist/features/timeline/daily-timeline-view.js +78 -0
  19. package/dist/features/timeline/daily-timeline-view.js.map +1 -0
  20. package/dist/features/timeline/daily-timeline.js +76 -132
  21. package/dist/features/timeline/daily-timeline.js.map +1 -1
  22. package/dist/index.d.ts +8 -1
  23. package/dist/types/models/worksheet.js +5 -0
  24. package/dist/types/models/worksheet.js.map +1 -0
  25. package/package.json +1 -1
@@ -1,30 +1,32 @@
1
- import { PLA_ANALYTICS_WHITELIST_EVENTS as T } from "../auth/pla-signup/pla-analytics-events.js";
2
- import { GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS as E } from "../circle-games/game-launcher/game-launcher-analytics-events.js";
1
+ import { PLA_ANALYTICS_WHITELIST_EVENTS as E } from "../auth/pla-signup/pla-analytics-events.js";
2
+ import { GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS as T } from "../circle-games/game-launcher/game-launcher-analytics-events.js";
3
3
  import { WEBVIEW_ANALYTICS_WHITELIST_EVENTS as S } from "../circle-games/games/web-view/web-view-analytics-events.js";
4
- import { LEADERBOARD_ANALYTICS_WHITELIST_EVENTS as _ } from "../circle-games/leaderboard/leaderboard-analytics-events.js";
5
- import { HOMEWORK_ANALYTICS_WHITELIST_EVENTS as I } from "../homework/homework-analytics-events.js";
6
- import { RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS as A } from "../milestone/milestone-resources/resources-assign/resource-assign-analytics-events.js";
7
- import { TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS as L } from "../milestone/milestone-tests/tests-creation/tests-creation-analytics-events.js";
4
+ import { LEADERBOARD_ANALYTICS_WHITELIST_EVENTS as I } from "../circle-games/leaderboard/leaderboard-analytics-events.js";
5
+ import { HOMEWORK_ANALYTICS_WHITELIST_EVENTS as _ } from "../homework/homework-analytics-events.js";
6
+ import { RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS as L } from "../milestone/milestone-resources/resources-assign/resource-assign-analytics-events.js";
7
+ import { TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS as A } from "../milestone/milestone-tests/tests-creation/tests-creation-analytics-events.js";
8
8
  import { PUZZLE_ANALYTICS_WHITELIST_EVENTS as N } from "../puzzles/puzzle-analytics-events.js";
9
9
  import { SHEETS_ANALYTICS_WHITELIST_EVENTS as o } from "../sheets/sheets-analytics-events.js";
10
10
  import { PLATFORM_WHITELIST_EVENTS_STUDENT as r } from "./platform-events-student.js";
11
11
  import { PLATFORM_WHITELIST_EVENTS_TEACHER as m } from "./platform-events-teacher.js";
12
- const M = {
12
+ import { DAILY_TIMELINE_WHITELIST_EVENTS as H } from "../timeline/daily-timeline-events.js";
13
+ const P = {
13
14
  //* Global/Platform specific events
14
15
  ...r,
15
16
  ...m,
16
17
  //* Feature specific events
17
- ...E,
18
- ..._,
19
- ...A,
20
- ...o,
21
- ...L,
18
+ ...T,
22
19
  ...I,
20
+ ...L,
21
+ ...o,
22
+ ...A,
23
+ ..._,
23
24
  ...S,
24
25
  ...N,
25
- ...T
26
+ ...E,
27
+ ...H
26
28
  };
27
29
  export {
28
- M as WHITELIST_EVENTS
30
+ P as WHITELIST_EVENTS
29
31
  };
30
32
  //# sourceMappingURL=whitelist-events.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"whitelist-events.js","sources":["../../../src/features/analytics-events/whitelist-events.ts"],"sourcesContent":["import type { PLUGIN_NAME } from '@cuemath/analytics-v2/dist/constants';\n\nimport { PLA_ANALYTICS_WHITELIST_EVENTS } from '../auth/pla-signup/pla-analytics-events';\nimport { GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/game-launcher/game-launcher-analytics-events';\nimport { WEBVIEW_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/games/web-view/web-view-analytics-events';\nimport { LEADERBOARD_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/leaderboard/leaderboard-analytics-events';\nimport { HOMEWORK_ANALYTICS_WHITELIST_EVENTS } from '../homework/homework-analytics-events';\nimport { RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS } from '../milestone/milestone-resources/resources-assign/resource-assign-analytics-events';\nimport { TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS } from '../milestone/milestone-tests/tests-creation/tests-creation-analytics-events';\nimport { PUZZLE_ANALYTICS_WHITELIST_EVENTS } from '../puzzles/puzzle-analytics-events';\nimport { SHEETS_ANALYTICS_WHITELIST_EVENTS } from '../sheets/sheets-analytics-events';\nimport { PLATFORM_WHITELIST_EVENTS_STUDENT } from './platform-events-student';\nimport { PLATFORM_WHITELIST_EVENTS_TEACHER } from './platform-events-teacher';\n\n/**\n ** Feature specific & Global/Platform specific events are imported here\n */\nconst WHITELIST_EVENTS: Record<string, PLUGIN_NAME[]> = {\n //* Global/Platform specific events\n ...PLATFORM_WHITELIST_EVENTS_STUDENT,\n ...PLATFORM_WHITELIST_EVENTS_TEACHER,\n\n //* Feature specific events\n ...GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS,\n ...LEADERBOARD_ANALYTICS_WHITELIST_EVENTS,\n ...RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS,\n ...SHEETS_ANALYTICS_WHITELIST_EVENTS,\n ...TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS,\n ...HOMEWORK_ANALYTICS_WHITELIST_EVENTS,\n ...WEBVIEW_ANALYTICS_WHITELIST_EVENTS,\n ...PUZZLE_ANALYTICS_WHITELIST_EVENTS,\n ...PLA_ANALYTICS_WHITELIST_EVENTS,\n};\n\nexport { WHITELIST_EVENTS };\n"],"names":["WHITELIST_EVENTS","PLATFORM_WHITELIST_EVENTS_STUDENT","PLATFORM_WHITELIST_EVENTS_TEACHER","GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS","LEADERBOARD_ANALYTICS_WHITELIST_EVENTS","RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS","SHEETS_ANALYTICS_WHITELIST_EVENTS","TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS","HOMEWORK_ANALYTICS_WHITELIST_EVENTS","WEBVIEW_ANALYTICS_WHITELIST_EVENTS","PUZZLE_ANALYTICS_WHITELIST_EVENTS","PLA_ANALYTICS_WHITELIST_EVENTS"],"mappings":";;;;;;;;;;;AAiBA,MAAMA,IAAkD;AAAA;AAAA,EAEtD,GAAGC;AAAA,EACH,GAAGC;AAAA;AAAA,EAGH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AACL;"}
1
+ {"version":3,"file":"whitelist-events.js","sources":["../../../src/features/analytics-events/whitelist-events.ts"],"sourcesContent":["import type { PLUGIN_NAME } from '@cuemath/analytics-v2/dist/constants';\n\nimport { PLA_ANALYTICS_WHITELIST_EVENTS } from '../auth/pla-signup/pla-analytics-events';\nimport { GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/game-launcher/game-launcher-analytics-events';\nimport { WEBVIEW_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/games/web-view/web-view-analytics-events';\nimport { LEADERBOARD_ANALYTICS_WHITELIST_EVENTS } from '../circle-games/leaderboard/leaderboard-analytics-events';\nimport { HOMEWORK_ANALYTICS_WHITELIST_EVENTS } from '../homework/homework-analytics-events';\nimport { RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS } from '../milestone/milestone-resources/resources-assign/resource-assign-analytics-events';\nimport { TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS } from '../milestone/milestone-tests/tests-creation/tests-creation-analytics-events';\nimport { PUZZLE_ANALYTICS_WHITELIST_EVENTS } from '../puzzles/puzzle-analytics-events';\nimport { SHEETS_ANALYTICS_WHITELIST_EVENTS } from '../sheets/sheets-analytics-events';\nimport { PLATFORM_WHITELIST_EVENTS_STUDENT } from './platform-events-student';\nimport { PLATFORM_WHITELIST_EVENTS_TEACHER } from './platform-events-teacher';\nimport { DAILY_TIMELINE_WHITELIST_EVENTS } from '../timeline/daily-timeline-events';\n\n/**\n ** Feature specific & Global/Platform specific events are imported here\n */\nconst WHITELIST_EVENTS: Record<string, PLUGIN_NAME[]> = {\n //* Global/Platform specific events\n ...PLATFORM_WHITELIST_EVENTS_STUDENT,\n ...PLATFORM_WHITELIST_EVENTS_TEACHER,\n\n //* Feature specific events\n ...GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS,\n ...LEADERBOARD_ANALYTICS_WHITELIST_EVENTS,\n ...RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS,\n ...SHEETS_ANALYTICS_WHITELIST_EVENTS,\n ...TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS,\n ...HOMEWORK_ANALYTICS_WHITELIST_EVENTS,\n ...WEBVIEW_ANALYTICS_WHITELIST_EVENTS,\n ...PUZZLE_ANALYTICS_WHITELIST_EVENTS,\n ...PLA_ANALYTICS_WHITELIST_EVENTS,\n ...DAILY_TIMELINE_WHITELIST_EVENTS,\n};\n\nexport { WHITELIST_EVENTS };\n"],"names":["WHITELIST_EVENTS","PLATFORM_WHITELIST_EVENTS_STUDENT","PLATFORM_WHITELIST_EVENTS_TEACHER","GAME_LAUNCHER_ANALYTICS_WHITELIST_EVENTS","LEADERBOARD_ANALYTICS_WHITELIST_EVENTS","RESOURCE_ASSIGN_ANALYTICS_WHITELIST_EVENTS","SHEETS_ANALYTICS_WHITELIST_EVENTS","TESTS_CREATION_ANALYTICS_WHITELIST_EVENTS","HOMEWORK_ANALYTICS_WHITELIST_EVENTS","WEBVIEW_ANALYTICS_WHITELIST_EVENTS","PUZZLE_ANALYTICS_WHITELIST_EVENTS","PLA_ANALYTICS_WHITELIST_EVENTS","DAILY_TIMELINE_WHITELIST_EVENTS"],"mappings":";;;;;;;;;;;;AAkBA,MAAMA,IAAkD;AAAA;AAAA,EAEtD,GAAGC;AAAA,EACH,GAAGC;AAAA;AAAA,EAGH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AAAA,EACH,GAAGC;AACL;"}
@@ -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';\nimport { type CARD_TYPE, type NODE_STATE } from '../daily-timeline-types';\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
+ {"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 { type CARD_TYPE, type NODE_STATE } from '../daily-timeline-types';\nimport { type TNodeDataTestItemsDataProps } from '../../chapters-v2/comps/node-card/node-card-types';\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: TNodeDataTestItemsDataProps[] | 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 total_pages: number | null;\n user_logs: ITimelineData[];\n}\n\ninterface IGetUserTimelineParams {\n course_stream?: TCourseStream[];\n page?: 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":";;;AA8DA,MAAM,EAAE,QAAQA,EAAoB,IAAIC,EAAwD;AAAA,EAC9F,QAAQ,CAACC,GAAmBC,MACnB,GAAGC,CAAW,kBAAkBF,CAAS,IAAIG,EAAUF,CAAW,CAAC;AAE9E,CAAC;"}
@@ -1,58 +1,59 @@
1
- import { jsxs as r, jsx as o } from "react/jsx-runtime";
2
- import { memo as B, useMemo as L, useCallback as $ } from "react";
3
- import C from "../../../ui/buttons/text-button/text-button.js";
4
- import t from "../../../ui/layout/flex-view.js";
5
- import d from "../../../ui/text/text.js";
6
- import { getStateConf as S } from "../utils.js";
7
- import { BLOCK_TYPE as D } from "../../../chapters-v2/constants/block-constants.js";
8
- import { CODING_ACTIVITY_NODE_TYPES as K } from "../constants.js";
9
- import { NODE_STATE as R, CARD_TYPE as z, USER_TYPE as p } from "../../daily-timeline-types.js";
10
- const N = B(
11
- ({ type: m, userType: n, card: E, onPuzzleClick: c, onReviewClick: s }) => {
1
+ import { jsxs as i, jsx as o } from "react/jsx-runtime";
2
+ import { memo as k, useMemo as B, useCallback as C } from "react";
3
+ import h from "../../../ui/buttons/text-button/text-button.js";
4
+ import l from "../../../ui/layout/flex-view.js";
5
+ import T from "../../../ui/text/text.js";
6
+ import { getStateConf as L } from "../utils.js";
7
+ import { BLOCK_TYPE as N } from "../../../chapters-v2/constants/block-constants.js";
8
+ import { CODING_ACTIVITY_NODE_TYPES as z } from "../constants.js";
9
+ import { NODE_STATE as $, CARD_TYPE as O, USER_TYPE as d } from "../../daily-timeline-types.js";
10
+ import { NODE_TYPES as P } from "../../../../types/models/worksheet.js";
11
+ const K = k(
12
+ ({ type: f, userType: r, card: A, onPuzzleClick: s, onReviewClick: m }) => {
12
13
  const {
13
- label: a,
14
+ label: p,
14
15
  title: b,
15
- state: f,
16
- subtext: u,
16
+ state: t,
17
+ subtext: _,
17
18
  user_node_id: e,
18
- block_type: A,
19
- user_block_id: _,
20
- node_type: T
21
- } = E, i = A === D.SAT_MOCK_TEST, x = a === "PUZZLE", [h, w] = S(f), l = f === R.COMPLETED, I = L(() => m === z.CIRCLE ? !1 : n === p.TEACHER ? !i || l : n === p.STUDENT ? l && !K.includes(
22
- T
23
- ) : !1, [n, m, i, l, T]), g = $(() => {
24
- e && c && c(e);
25
- }, [c, e]), k = $(() => {
26
- s && e && s(e, i, _);
27
- }, [i, s, _, e]);
28
- return /* @__PURE__ */ r(t, { $flexDirection: "row", $flexGapX: 1.5, children: [
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 }) }) }),
30
- /* @__PURE__ */ r(t, { $flexRowGapX: 0.25, children: [
31
- /* @__PURE__ */ r(d, { $renderAs: "ub2", $color: "BLACK_1", children: [
32
- /* @__PURE__ */ r(d, { $renderAs: "ub2-bold", $inline: !0, $color: "BLACK_1", children: [
33
- a,
19
+ block_type: x,
20
+ user_block_id: u,
21
+ node_type: a
22
+ } = A, n = x === N.SAT_MOCK_TEST, w = a === P.PUZZLE_CARD, [E, D] = L(t), c = t === $.COMPLETED, S = B(() => f === O.CIRCLE ? !1 : r === d.TEACHER ? !n || c : r === d.STUDENT ? c && !z.includes(
23
+ a
24
+ ) : !1, [r, f, n, c, a]), I = t !== $.NOT_STARTED && r === d.STUDENT || r === d.TEACHER, R = C(() => {
25
+ e && s && s(e, t);
26
+ }, [s, e, t]), g = C(() => {
27
+ m && e && m(e, n, u);
28
+ }, [n, m, u, e]);
29
+ return /* @__PURE__ */ i(l, { $flexDirection: "row", $flexGapX: 1.5, children: [
30
+ /* @__PURE__ */ o(l, { $justifyContent: "flex-end", $height: 18, $background: "WHITE", children: /* @__PURE__ */ o(l, { $background: D, $borderRadiusX: 0.5, $width: 16, $height: 16, children: E && /* @__PURE__ */ o(E, { width: 16, height: 16 }) }) }),
31
+ /* @__PURE__ */ i(l, { $flexRowGapX: 0.25, children: [
32
+ /* @__PURE__ */ i(T, { $renderAs: "ub2", $color: "BLACK_1", children: [
33
+ /* @__PURE__ */ i(T, { $renderAs: "ub2-bold", $inline: !0, $color: "BLACK_1", children: [
34
+ p,
34
35
  ":"
35
36
  ] }),
36
37
  " ",
37
38
  b
38
39
  ] }),
39
- x ? /* @__PURE__ */ o(
40
- C,
40
+ w ? I && /* @__PURE__ */ o(
41
+ h,
41
42
  {
42
- label: l ? "View reviewed puzzle" : "View assigned puzzle",
43
+ label: c ? "View reviewed puzzle" : "View assigned puzzle",
43
44
  size: "small",
44
45
  color: "BLACK_T_60",
45
- onClick: g
46
+ onClick: R
46
47
  }
47
- ) : /* @__PURE__ */ r(t, { $flexDirection: "row", $flexGapX: 0.75, $alignItems: "center", children: [
48
- u && /* @__PURE__ */ o(d, { $renderAs: "ub3", $color: "BLACK_T_60", children: u }),
49
- I && /* @__PURE__ */ o(
50
- C,
48
+ ) : /* @__PURE__ */ i(l, { $flexDirection: "row", $flexGapX: 0.75, $alignItems: "center", children: [
49
+ _ && /* @__PURE__ */ o(T, { $renderAs: "ub3", $color: "BLACK_T_60", children: _ }),
50
+ S && /* @__PURE__ */ o(
51
+ h,
51
52
  {
52
53
  label: "Review",
53
54
  size: "small",
54
55
  color: "BLACK_T_60",
55
- onClick: k
56
+ onClick: g
56
57
  }
57
58
  )
58
59
  ] })
@@ -60,8 +61,8 @@ const N = B(
60
61
  ] });
61
62
  }
62
63
  );
63
- N.displayName = "AccordionItem";
64
+ K.displayName = "AccordionItem";
64
65
  export {
65
- N as default
66
+ K as default
66
67
  };
67
68
  //# 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, 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 '../../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 === NODE_STATE.COMPLETED;\n const shouldShowReview = useMemo(() => {\n if (type === CARD_TYPE.CIRCLE) return false;\n\n if (userType === USER_TYPE.TEACHER) return !isSatMockTestBlock || isCompleted;\n\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\" $color=\"BLACK_1\">\n <Text $renderAs=\"ub2-bold\" $inline $color=\"BLACK_1\">\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,KAElCtB,MAAauB,EAAU,UAAgB,CAACX,KAAsBM,IAE9DlB,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,QAAA,gBAAAD,EAACG,GAAK,EAAA,WAAU,OAAM,QAAO,WAC3B,UAAA;AAAA,UAAA,gBAAAH,EAACG,KAAK,WAAU,YAAW,SAAO,IAAC,QAAO,WACvC,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
+ {"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 '../../daily-timeline-types';\nimport { NODE_TYPES } from '../../../../types/models/worksheet';\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 isPuzzleCard = nodeType === NODE_TYPES.PUZZLE_CARD;\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\n if (userType === USER_TYPE.TEACHER) return !isSatMockTestBlock || isCompleted;\n\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 canReviewPuzzle =\n (state !== NODE_STATE.NOT_STARTED && userType === USER_TYPE.STUDENT) ||\n userType === USER_TYPE.TEACHER;\n\n const handlePuzzleClick = useCallback(() => {\n if (userNodeId && onPuzzleClick) {\n onPuzzleClick(userNodeId, state);\n }\n }, [onPuzzleClick, userNodeId, state]);\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\" $color=\"BLACK_1\">\n <Text $renderAs=\"ub2-bold\" $inline $color=\"BLACK_1\">\n {label}:\n </Text>{' '}\n {title}\n </Text>\n {isPuzzleCard ? (\n canReviewPuzzle && (\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 ) : (\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","isPuzzleCard","NODE_TYPES","Icon","bgColor","getStateConf","isCompleted","NODE_STATE","shouldShowReview","useMemo","CARD_TYPE","USER_TYPE","CODING_ACTIVITY_NODE_TYPES","canReviewPuzzle","handlePuzzleClick","useCallback","handleReviewClick","jsxs","FlexView","jsx","Text","TextButton"],"mappings":";;;;;;;;;;AAaA,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,IAAeH,MAAaI,EAAW,aACvC,CAACC,GAAMC,CAAO,IAAIC,EAAaZ,CAAK,GACpCa,IAAcb,MAAUc,EAAW,WACnCC,IAAmBC,EAAQ,MAC3BvB,MAASwB,EAAU,SAAe,KAElCvB,MAAawB,EAAU,UAAgB,CAACZ,KAAsBO,IAE9DnB,MAAawB,EAAU,UAEvBL,KACA,CAACM,EAA2B;AAAA,MAC1Bd;AAAA,IAAA,IAIC,IACN,CAACX,GAAUD,GAAMa,GAAoBO,GAAaR,CAAQ,CAAC,GAExDe,IACHpB,MAAUc,EAAW,eAAepB,MAAawB,EAAU,WAC5DxB,MAAawB,EAAU,SAEnBG,IAAoBC,EAAY,MAAM;AAC1C,MAAIpB,KAAcN,KAChBA,EAAcM,GAAYF,CAAK;AAAA,IAEhC,GAAA,CAACJ,GAAeM,GAAYF,CAAK,CAAC,GAE/BuB,IAAoBD,EAAY,MAAM;AAC1C,MAAIzB,KAAiBK,KACLL,EAAAK,GAAYI,GAAoBF,CAAW;AAAA,OAE1D,CAACE,GAAoBT,GAAeO,GAAaF,CAAU,CAAC;AAE/D,WACG,gBAAAsB,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,aAAad,GAAS,gBAAgB,KAAK,QAAQ,IAAI,SAAS,IACvE,UAAQD,KAAA,gBAAAgB,EAAChB,GAAK,EAAA,OAAO,IAAI,QAAQ,GAAI,CAAA,EACxC,CAAA,GACF;AAAA,MACA,gBAAAc,EAACC,GAAS,EAAA,cAAc,MACtB,UAAA;AAAA,QAAA,gBAAAD,EAACG,GAAK,EAAA,WAAU,OAAM,QAAO,WAC3B,UAAA;AAAA,UAAA,gBAAAH,EAACG,KAAK,WAAU,YAAW,SAAO,IAAC,QAAO,WACvC,UAAA;AAAA,YAAA7B;AAAA,YAAM;AAAA,UAAA,GACT;AAAA,UAAQ;AAAA,UACPC;AAAA,QAAA,GACH;AAAA,QACCS,IACCY,KACE,gBAAAM;AAAA,UAACE;AAAA,UAAA;AAAA,YACC,OAAOf,IAAc,yBAAyB;AAAA,YAC9C,MAAK;AAAA,YACL,OAAM;AAAA,YACN,SAASQ;AAAA,UAAA;AAAA,QAAA,sBAIZI,GAAS,EAAA,gBAAe,OAAM,WAAW,MAAM,aAAY,UACzD,UAAA;AAAA,UAAAxB,uBACE0B,GAAK,EAAA,WAAU,OAAM,QAAO,cAC1B,UACH1B,GAAA;AAAA,UAEDc,KACC,gBAAAW;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;AAEAhC,EAAc,cAAc;"}
@@ -1,30 +1,28 @@
1
- import { IMAGES as e } from "../../../assets/images/images.js";
2
- import { NODE_TYPE as I } from "../../sheets/constants/sheet.js";
3
- const n = 1, o = {
4
- "01": e.JAN,
5
- "02": e.FEB,
6
- "03": e.MAR,
7
- "04": e.APR,
8
- "05": e.MAY,
9
- "06": e.JUN,
10
- "07": e.JUL,
11
- "08": e.AUG,
12
- "09": e.SEP,
13
- 10: e.OCT,
14
- 11: e.NOV,
15
- 12: e.DEC
16
- }, E = [
17
- I.TURING_BASIC,
18
- I.TURING_LINK,
19
- I.TURING_SHARE,
20
- I.PYTHON_BASIC,
21
- I.PYTHON_VISUAL
1
+ import { IMAGES as I } from "../../../assets/images/images.js";
2
+ import { NODE_TYPE as A } from "../../sheets/constants/sheet.js";
3
+ const E = 1, _ = {
4
+ "01": I.JAN,
5
+ "02": I.FEB,
6
+ "03": I.MAR,
7
+ "04": I.APR,
8
+ "05": I.MAY,
9
+ "06": I.JUN,
10
+ "07": I.JUL,
11
+ "08": I.AUG,
12
+ "09": I.SEP,
13
+ 10: I.OCT,
14
+ 11: I.NOV,
15
+ 12: I.DEC
16
+ }, o = [
17
+ A.TURING_BASIC,
18
+ A.TURING_LINK,
19
+ A.TURING_SHARE,
20
+ A.PYTHON_BASIC,
21
+ A.PYTHON_VISUAL
22
22
  ];
23
- var i = /* @__PURE__ */ ((_) => (_.TIMELINE_VIEWED = "timeline_viewed", _.TIMELINE_CLOSED = "timeline_closed", _.TIMELINE_SCROLL_CONTINUED = "timeline_scroll_continued", _.TIMELINE_VIEW_EXPANDED = "timeline_view_expanded", _.TIMELINE_VIEW_COLLAPSED = "timeline_view_collapsed", _))(i || {});
24
23
  export {
25
- E as CODING_ACTIVITY_NODE_TYPES,
26
- n as INITIAL_PAGE,
27
- i as TIMELINE_EVENTS,
28
- o as monthImageMap
24
+ o as CODING_ACTIVITY_NODE_TYPES,
25
+ E as INITIAL_PAGE,
26
+ _ as monthImageMap
29
27
  };
30
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';\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\nexport enum TIMELINE_EVENTS {\n TIMELINE_VIEWED = 'timeline_viewed',\n TIMELINE_CLOSED = 'timeline_closed',\n TIMELINE_SCROLL_CONTINUED = 'timeline_scroll_continued',\n TIMELINE_VIEW_EXPANDED = 'timeline_view_expanded',\n TIMELINE_VIEW_COLLAPSED = 'timeline_view_collapsed',\n}\n"],"names":["INITIAL_PAGE","monthImageMap","IMAGES","CODING_ACTIVITY_NODE_TYPES","NODE_TYPE","TIMELINE_EVENTS"],"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;AAEY,IAAAC,sBAAAA,OACVA,EAAA,kBAAkB,mBAClBA,EAAA,kBAAkB,mBAClBA,EAAA,4BAA4B,6BAC5BA,EAAA,yBAAyB,0BACzBA,EAAA,0BAA0B,2BALhBA,IAAAA,KAAA,CAAA,CAAA;"}
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,31 +1,26 @@
1
- import e from "styled-components";
2
- import n from "../../../ui/layout/flex-view.js";
3
- const i = e(n)`
4
- border-bottom: ${({ $shouldAddBorder: o, theme: t }) => o ? `1px solid ${t.colors.BLACK}` : "none"};
5
- `, p = e(n)`
6
- border-top: none;
7
- border-bottom: ${({ $isExpanded: o }) => o && "none"};
1
+ import t from "styled-components";
2
+ import e from "../../../ui/layout/flex-view.js";
3
+ const p = t(e)`
4
+ border-bottom: ${({ $shouldAddBorder: o, theme: n }) => o ? `1px solid ${n.colors.BLACK}` : "none"};
5
+ transition: all 0.2s ease-in-out;
6
+ `, s = t(e)`
8
7
  padding-bottom: 24px;
9
- `, s = e(n)`
8
+ `, d = t(e)`
10
9
  position: absolute;
11
10
  top: 0px;
12
11
  left: 0px;
13
12
  z-index: 2;
14
- `;
15
- e(n)`
16
- border-bottom: ${({ $isLastItem: o, theme: t }) => o ? `1px solid ${t.colors.BLACK}` : "none"};
17
- `;
18
- const b = e(n)`
19
- border-left: ${({ $isLastCard: o, theme: t }) => o ? "none" : `1px dashed ${t.colors.GREY_3}`};
13
+ `, a = t(e)`
14
+ border-left: ${({ $isLastCard: o, theme: n }) => o ? "none" : `1px dashed ${n.colors.GREY_3}`};
20
15
  padding-bottom: ${({ $isLastCard: o }) => o ? "0" : "20px"};
21
16
  > div {
22
17
  margin-left: -8px;
23
18
  }
24
19
  `;
25
20
  export {
26
- b as Card,
27
- i as SectionContainer,
28
- p as SectionFooter,
29
- s as TagContainer
21
+ a as Card,
22
+ s as SectionFooter,
23
+ d as TagContainer,
24
+ p as Wrapper
30
25
  };
31
26
  //# sourceMappingURL=daily-timeline-items-styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"daily-timeline-items-styled.js","sources":["../../../../../src/features/timeline/comps/daily-timeline-items/daily-timeline-items-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\n\nexport const SectionContainer = styled(FlexView)<{ $shouldAddBorder?: boolean }>`\n border-bottom: ${({ $shouldAddBorder, theme }) =>\n $shouldAddBorder ? `1px solid ${theme.colors.BLACK}` : 'none'};\n`;\n\nexport const SectionFooter = styled(FlexView)<{ $isExpanded?: boolean }>`\n border-top: none;\n border-bottom: ${({ $isExpanded }) => $isExpanded && 'none'};\n padding-bottom: 24px;\n`;\n\nexport const TagContainer = styled(FlexView)`\n position: absolute;\n top: 0px;\n left: 0px;\n z-index: 2;\n`;\n\nexport const SectionChild = styled(FlexView)<{ $isLastItem?: boolean }>`\n border-bottom: ${({ $isLastItem, theme }) =>\n $isLastItem ? `1px solid ${theme.colors.BLACK}` : 'none'};\n`;\n\nexport const Card = styled(FlexView)<{ $isLastCard: boolean }>`\n border-left: ${({ $isLastCard, theme }) =>\n $isLastCard ? 'none' : `1px dashed ${theme.colors.GREY_3}`};\n padding-bottom: ${({ $isLastCard }) => ($isLastCard ? '0' : '20px')};\n > div {\n margin-left: -8px;\n }\n`;\n"],"names":["SectionContainer","styled","FlexView","$shouldAddBorder","theme","SectionFooter","$isExpanded","TagContainer","$isLastItem","Card","$isLastCard"],"mappings":";;AAIa,MAAAA,IAAmBC,EAAOC,CAAQ;AAAA,mBAC5B,CAAC,EAAE,kBAAAC,GAAkB,OAAAC,EAAM,MAC1CD,IAAmB,aAAaC,EAAM,OAAO,KAAK,KAAK,MAAM;AAAA,GAGpDC,IAAgBJ,EAAOC,CAAQ;AAAA;AAAA,mBAEzB,CAAC,EAAE,aAAAI,QAAkBA,KAAe,MAAM;AAAA;AAAA,GAIhDC,IAAeN,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAOfD,EAAOC,CAAQ;AAAA,mBACxB,CAAC,EAAE,aAAAM,GAAa,OAAAJ,EAAM,MACrCI,IAAc,aAAaJ,EAAM,OAAO,KAAK,KAAK,MAAM;AAAA;AAG/C,MAAAK,IAAOR,EAAOC,CAAQ;AAAA,iBAClB,CAAC,EAAE,aAAAQ,GAAa,OAAAN,EAAM,MACnCM,IAAc,SAAS,cAAcN,EAAM,OAAO,MAAM,EAAE;AAAA,oBAC1C,CAAC,EAAE,aAAAM,EAAA,MAAmBA,IAAc,MAAM,MAAO;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"daily-timeline-items-styled.js","sources":["../../../../../src/features/timeline/comps/daily-timeline-items/daily-timeline-items-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\n\nexport const Wrapper = styled(FlexView)<{ $shouldAddBorder: boolean }>`\n border-bottom: ${({ $shouldAddBorder, theme }) =>\n $shouldAddBorder ? `1px solid ${theme.colors.BLACK}` : 'none'};\n transition: all 0.2s ease-in-out;\n`;\n\nexport const SectionFooter = styled(FlexView)<{ $isExpanded?: boolean }>`\n padding-bottom: 24px;\n`;\n\nexport const TagContainer = styled(FlexView)`\n position: absolute;\n top: 0px;\n left: 0px;\n z-index: 2;\n`;\n\nexport const Card = styled(FlexView)<{ $isLastCard: boolean }>`\n border-left: ${({ $isLastCard, theme }) =>\n $isLastCard ? 'none' : `1px dashed ${theme.colors.GREY_3}`};\n padding-bottom: ${({ $isLastCard }) => ($isLastCard ? '0' : '20px')};\n > div {\n margin-left: -8px;\n }\n`;\n"],"names":["Wrapper","styled","FlexView","$shouldAddBorder","theme","SectionFooter","TagContainer","Card","$isLastCard"],"mappings":";;AAIa,MAAAA,IAAUC,EAAOC,CAAQ;AAAA,mBACnB,CAAC,EAAE,kBAAAC,GAAkB,OAAAC,EAAM,MAC1CD,IAAmB,aAAaC,EAAM,OAAO,KAAK,KAAK,MAAM;AAAA;AAAA,GAIpDC,IAAgBJ,EAAOC,CAAQ;AAAA;AAAA,GAI/BI,IAAeL,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,GAO9BK,IAAON,EAAOC,CAAQ;AAAA,iBAClB,CAAC,EAAE,aAAAM,GAAa,OAAAJ,EAAM,MACnCI,IAAc,SAAS,cAAcJ,EAAM,OAAO,MAAM,EAAE;AAAA,oBAC1C,CAAC,EAAE,aAAAI,EAAA,MAAmBA,IAAc,MAAM,MAAO;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,114 +1,98 @@
1
- import { jsx as e, jsxs as m, Fragment as y } from "react/jsx-runtime";
2
- import { memo as T, useState as A, useMemo as L, useCallback as w } from "react";
1
+ import { jsx as e, jsxs as m, Fragment as b } from "react/jsx-runtime";
2
+ import { memo as y, useState as L, useMemo as x, useCallback as w } from "react";
3
3
  import D from "../../../../assets/line-icons/icons/plus.js";
4
4
  import S from "../../../ui/accordion-section/accordion-section.js";
5
- import s from "../../../ui/layout/flex-view.js";
6
- import k from "../../../../assets/line-icons/icons/minus.js";
7
- import B from "../../../ui/image/image.js";
8
- import $ from "../../../ui/text/text.js";
9
- import N from "../accordion-item/accordion-item.js";
10
- import { SectionContainer as V, TagContainer as X, SectionFooter as j, Card as M } from "./daily-timeline-items-styled.js";
11
- import { getTimelineCardIcon as K } from "../utils.js";
12
- import { useUIContext as P } from "../../../ui/context/context.js";
13
- import { TIMELINE_EVENTS as f } from "../constants.js";
14
- const F = T((I) => {
5
+ import r from "../../../ui/layout/flex-view.js";
6
+ import N from "../../../../assets/line-icons/icons/minus.js";
7
+ import k from "../../../ui/image/image.js";
8
+ import h from "../../../ui/text/text.js";
9
+ import V from "../accordion-item/accordion-item.js";
10
+ import { Wrapper as X, TagContainer as j, SectionFooter as B, Card as M } from "./daily-timeline-items-styled.js";
11
+ import { getTimelineCardIcon as P } from "../utils.js";
12
+ import { useUIContext as W } from "../../../ui/context/context.js";
13
+ import { DAILY_TIMELINE_ANALYTICS_EVENTS as u } from "../../daily-timeline-events.js";
14
+ const F = y((I) => {
15
15
  const {
16
16
  type: t,
17
17
  summary: i,
18
- cards: r,
19
- onPuzzleClick: E,
20
- onReviewClick: C,
21
- courseStream: l,
22
- shouldShowTag: g,
23
- userType: _,
24
- isLastItem: d,
25
- fromDate: c,
26
- studentId: a
27
- } = I, [n, b] = A(!1), p = L(() => K(t), [t]), { onEvent: h } = P(), x = w(
18
+ cards: n,
19
+ onPuzzleClick: f,
20
+ onReviewClick: $,
21
+ courseStream: s,
22
+ shouldShowTag: E,
23
+ userType: g,
24
+ isLastItem: C,
25
+ fromDate: l,
26
+ studentId: c
27
+ } = I, [_, A] = L(!1), d = x(() => P(t), [t]), { onEvent: a } = W(), T = w(
28
28
  (o) => {
29
- b(o), h(
30
- o ? f.TIMELINE_VIEW_EXPANDED : f.TIMELINE_VIEW_COLLAPSED,
29
+ A(o), a(
30
+ o ? u.TIMELINE_VIEW_EXPANDED : u.TIMELINE_VIEW_COLLAPSED,
31
31
  {
32
- timeline_date: c,
33
- student_id: a,
32
+ timeline_date: l,
33
+ student_id: c,
34
34
  timeline_section_type: t,
35
35
  timeline_section_subject: i
36
- },
37
- { mixpanel: !0 }
36
+ }
38
37
  );
39
38
  },
40
- [c, h, a, t, i]
39
+ [l, a, c, t, i]
41
40
  );
42
- return /* @__PURE__ */ e(
41
+ return /* @__PURE__ */ e(X, { $borderColor: "BLACK_1", $shouldAddBorder: C, children: /* @__PURE__ */ e(
43
42
  S,
44
43
  {
45
- headerElement: /* @__PURE__ */ m(
46
- V,
47
- {
48
- $borderColor: "BLACK_1",
49
- $shouldAddBorder: d && !n,
50
- children: [
51
- g && l && /* @__PURE__ */ e(X, { $position: "absolute", $background: "BLACK_5", $gutter: 4, children: /* @__PURE__ */ e($, { $renderAs: "ab4-black", $color: "WHITE", children: l }) }),
52
- /* @__PURE__ */ m(
53
- s,
54
- {
55
- $flexDirection: "row",
56
- $alignItems: "center",
57
- $justifyContent: "space-between",
58
- $heightX: 4,
59
- $widthX: 30,
60
- $gutterX: 1,
61
- $gapX: 1.32,
62
- children: [
63
- /* @__PURE__ */ m(
64
- s,
65
- {
66
- $flexDirection: "row",
67
- $alignItems: "center",
68
- $justifyContent: "center",
69
- $flexGapX: 1.125,
70
- children: [
71
- /* @__PURE__ */ e(s, { children: p && /* @__PURE__ */ e(B, { src: p }) }),
72
- /* @__PURE__ */ e($, { $renderAs: "ab2", $color: "BLACK_1", children: i ?? "" })
73
- ]
74
- }
75
- ),
76
- n ? /* @__PURE__ */ e(k, { width: 20, height: 20 }) : /* @__PURE__ */ e(D, { width: 20, height: 20 })
77
- ]
78
- }
79
- )
80
- ]
81
- }
82
- ),
83
- bodyElement: r.length > 0 ? /* @__PURE__ */ e(
84
- j,
85
- {
86
- $gutter: 32,
87
- $borderColor: "BLACK_1",
88
- $isExpanded: n && !d,
89
- children: r.map((o, u) => /* @__PURE__ */ e(
90
- M,
91
- {
92
- $isLastCard: u === r.length - 1,
93
- children: /* @__PURE__ */ e(
94
- N,
44
+ headerElement: /* @__PURE__ */ m(r, { children: [
45
+ E && s && /* @__PURE__ */ e(j, { $position: "absolute", $background: "BLACK_5", $gutter: 4, children: /* @__PURE__ */ e(h, { $renderAs: "ab4-black", $color: "WHITE", children: s }) }),
46
+ /* @__PURE__ */ m(
47
+ r,
48
+ {
49
+ $flexDirection: "row",
50
+ $alignItems: "center",
51
+ $justifyContent: "space-between",
52
+ $heightX: 4,
53
+ $widthX: 30,
54
+ $gutterX: 1,
55
+ $gapX: 1.32,
56
+ children: [
57
+ /* @__PURE__ */ m(
58
+ r,
95
59
  {
96
- card: o,
97
- onPuzzleClick: E,
98
- onReviewClick: C,
99
- type: t,
100
- userType: _
60
+ $flexDirection: "row",
61
+ $alignItems: "center",
62
+ $justifyContent: "center",
63
+ $flexGapX: 1.125,
64
+ children: [
65
+ /* @__PURE__ */ e(r, { children: d && /* @__PURE__ */ e(k, { src: d }) }),
66
+ /* @__PURE__ */ e(h, { $renderAs: "ab2", $color: "BLACK_1", children: i ?? "" })
67
+ ]
101
68
  }
102
- )
103
- },
104
- `${o.node_id}-${u}`
105
- ))
106
- }
107
- ) : /* @__PURE__ */ e(y, {}),
69
+ ),
70
+ _ ? /* @__PURE__ */ e(N, { width: 20, height: 20 }) : /* @__PURE__ */ e(D, { width: 20, height: 20 })
71
+ ]
72
+ }
73
+ )
74
+ ] }),
75
+ bodyElement: n.length > 0 ? /* @__PURE__ */ e(B, { $gutter: 32, children: n.map((o, p) => /* @__PURE__ */ e(
76
+ M,
77
+ {
78
+ $isLastCard: p === n.length - 1,
79
+ children: /* @__PURE__ */ e(
80
+ V,
81
+ {
82
+ card: o,
83
+ onPuzzleClick: f,
84
+ onReviewClick: $,
85
+ type: t,
86
+ userType: g
87
+ }
88
+ )
89
+ },
90
+ o.node_id ?? `card-${p}`
91
+ )) }) : /* @__PURE__ */ e(b, {}),
108
92
  defaultVisible: !1,
109
- onBodyVisibilityChange: x
93
+ onBodyVisibilityChange: T
110
94
  }
111
- );
95
+ ) });
112
96
  });
113
97
  F.displayName = "DailyTimelineItems";
114
98
  export {
@@ -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';\nimport { TIMELINE_EVENTS } from '../constants';\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(\n val ? TIMELINE_EVENTS.TIMELINE_VIEW_EXPANDED : TIMELINE_EVENTS.TIMELINE_VIEW_COLLAPSED,\n {\n timeline_date: fromDate,\n student_id: studentId,\n timeline_section_type: type,\n timeline_section_subject: summary,\n },\n { mixpanel: true },\n );\n },\n [fromDate, trackEvent, 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_5\" $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 $heightX={4}\n $widthX={30}\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\" $color=\"BLACK_1\">\n {summary ?? ''}\n </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","TIMELINE_EVENTS","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';\nimport { DAILY_TIMELINE_ANALYTICS_EVENTS } from '../../daily-timeline-events';\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 trackEvent(\n val\n ? DAILY_TIMELINE_ANALYTICS_EVENTS.TIMELINE_VIEW_EXPANDED\n : DAILY_TIMELINE_ANALYTICS_EVENTS.TIMELINE_VIEW_COLLAPSED,\n {\n timeline_date: fromDate,\n student_id: studentId,\n timeline_section_type: type,\n timeline_section_subject: summary,\n },\n );\n },\n [fromDate, trackEvent, studentId, type, summary],\n );\n\n return (\n <Styled.Wrapper $borderColor=\"BLACK_1\" $shouldAddBorder={isLastItem}>\n <AccordionSection\n headerElement={\n <FlexView>\n {shouldShowTag && courseStream && (\n <Styled.TagContainer $position=\"absolute\" $background=\"BLACK_5\" $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 $heightX={4}\n $widthX={30}\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\" $color=\"BLACK_1\">\n {summary ?? ''}\n </Text>\n </FlexView>\n {isExpended ? (\n <MinusIcon width={20} height={20} />\n ) : (\n <PlusIcon width={20} height={20} />\n )}\n </FlexView>\n </FlexView>\n }\n bodyElement={\n cards.length > 0 ? (\n <Styled.SectionFooter $gutter={32}>\n {cards.map((card, index) => (\n <Styled.Card\n key={card.node_id ?? `card-${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 </Styled.Wrapper>\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","DAILY_TIMELINE_ANALYTICS_EVENTS","Styled.Wrapper","jsx","AccordionSection","FlexView","Styled.TagContainer","Text","jsxs","Image","MinusIcon","PlusIcon","Styled.SectionFooter","card","index","Styled.Card","AccordionItem","Fragment"],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { PLUGINS as i } from "../../node_modules/@cuemath/analytics-v2/dist/constants.js";
2
+ var l = /* @__PURE__ */ ((e) => (e.TIMELINE_VIEWED = "timeline_viewed", e.TIMELINE_CLOSED = "timeline_closed", e.TIMELINE_SCROLLED = "timeline_scrolled", e.TIMELINE_VIEW_EXPANDED = "timeline_view_expanded", e.TIMELINE_VIEW_COLLAPSED = "timeline_view_collapsed", e))(l || {});
3
+ const t = {
4
+ timeline_viewed: [i.MIXPANEL],
5
+ timeline_closed: [i.MIXPANEL],
6
+ timeline_scrolled: [i.MIXPANEL],
7
+ timeline_view_expanded: [i.MIXPANEL],
8
+ timeline_view_collapsed: [i.MIXPANEL]
9
+ };
10
+ export {
11
+ l as DAILY_TIMELINE_ANALYTICS_EVENTS,
12
+ t as DAILY_TIMELINE_WHITELIST_EVENTS
13
+ };
14
+ //# sourceMappingURL=daily-timeline-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daily-timeline-events.js","sources":["../../../src/features/timeline/daily-timeline-events.ts"],"sourcesContent":["import { PLUGINS } from '@cuemath/analytics-v2/dist/constants';\n\nexport enum DAILY_TIMELINE_ANALYTICS_EVENTS {\n TIMELINE_VIEWED = 'timeline_viewed',\n TIMELINE_CLOSED = 'timeline_closed',\n TIMELINE_SCROLLED = 'timeline_scrolled',\n TIMELINE_VIEW_EXPANDED = 'timeline_view_expanded',\n TIMELINE_VIEW_COLLAPSED = 'timeline_view_collapsed',\n}\n\nexport const DAILY_TIMELINE_WHITELIST_EVENTS = {\n [DAILY_TIMELINE_ANALYTICS_EVENTS.TIMELINE_VIEWED]: [PLUGINS.MIXPANEL],\n [DAILY_TIMELINE_ANALYTICS_EVENTS.TIMELINE_CLOSED]: [PLUGINS.MIXPANEL],\n [DAILY_TIMELINE_ANALYTICS_EVENTS.TIMELINE_SCROLLED]: [PLUGINS.MIXPANEL],\n [DAILY_TIMELINE_ANALYTICS_EVENTS.TIMELINE_VIEW_EXPANDED]: [PLUGINS.MIXPANEL],\n [DAILY_TIMELINE_ANALYTICS_EVENTS.TIMELINE_VIEW_COLLAPSED]: [PLUGINS.MIXPANEL],\n};\n"],"names":["DAILY_TIMELINE_ANALYTICS_EVENTS","DAILY_TIMELINE_WHITELIST_EVENTS","PLUGINS"],"mappings":";AAEY,IAAAA,sBAAAA,OACVA,EAAA,kBAAkB,mBAClBA,EAAA,kBAAkB,mBAClBA,EAAA,oBAAoB,qBACpBA,EAAA,yBAAyB,0BACzBA,EAAA,0BAA0B,2BALhBA,IAAAA,KAAA,CAAA,CAAA;AAQL,MAAMC,IAAkC;AAAA,EAC5C,iBAAkD,CAACC,EAAQ,QAAQ;AAAA,EACnE,iBAAkD,CAACA,EAAQ,QAAQ;AAAA,EACnE,mBAAoD,CAACA,EAAQ,QAAQ;AAAA,EACrE,wBAAyD,CAACA,EAAQ,QAAQ;AAAA,EAC1E,yBAA0D,CAACA,EAAQ,QAAQ;AAC9E;"}
@@ -1,18 +1,21 @@
1
- import o from "styled-components";
2
- import t from "../ui/layout/flex-view.js";
3
- const l = o(t)`
1
+ import i from "styled-components";
2
+ import o from "../ui/layout/flex-view.js";
3
+ const r = i(o)`
4
4
  overflow-y: auto;
5
5
  width: 100%;
6
- `, m = o(t)`
6
+ scroll-behavior: smooth;
7
+ will-change: height;
8
+ `, h = i(o)`
7
9
  max-width: 512px;
8
10
  width: 100%;
9
- `, n = o(t)`
10
- margin-top: ${({ $addedMonthBreak: i }) => i ? "-108px" : "0"};
11
+ will-change: height;
12
+ `, a = i(o)`
13
+ margin-top: ${({ $addedMonthBreak: t }) => t ? "-108px" : "0"};
11
14
  z-index: 1;
12
15
  `;
13
16
  export {
14
- n as DailyItems,
15
- m as DailyTimelineContainer,
16
- l as ScrollWrapper
17
+ a as DailyItems,
18
+ h as DailyTimelineContainer,
19
+ r as ScrollWrapper
17
20
  };
18
21
  //# sourceMappingURL=daily-timeline-styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"daily-timeline-styled.js","sources":["../../../src/features/timeline/daily-timeline-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../ui/layout/flex-view';\n\nconst ScrollWrapper = styled(FlexView)`\n overflow-y: auto;\n width: 100%;\n`;\n\nconst DailyTimelineContainer = styled(FlexView)`\n max-width: 512px;\n width: 100%;\n`;\n\nconst DailyItems = styled(FlexView)<{ $addedMonthBreak?: boolean }>`\n margin-top: ${({ $addedMonthBreak }) =>\n $addedMonthBreak\n ? '-108px' // 64px card height + 16px(separator) + 16(date text) + 12(separator)\n : '0'};\n z-index: 1;\n`;\n\nexport { DailyTimelineContainer, DailyItems, ScrollWrapper };\n"],"names":["ScrollWrapper","styled","FlexView","DailyTimelineContainer","DailyItems","$addedMonthBreak"],"mappings":";;AAIM,MAAAA,IAAgBC,EAAOC,CAAQ;AAAA;AAAA;AAAA,GAK/BC,IAAyBF,EAAOC,CAAQ;AAAA;AAAA;AAAA,GAKxCE,IAAaH,EAAOC,CAAQ;AAAA,gBAClB,CAAC,EAAE,kBAAAG,EAAA,MACfA,IACI,WACA,GAAG;AAAA;AAAA;"}
1
+ {"version":3,"file":"daily-timeline-styled.js","sources":["../../../src/features/timeline/daily-timeline-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../ui/layout/flex-view';\n\nconst ScrollWrapper = styled(FlexView)`\n overflow-y: auto;\n width: 100%;\n scroll-behavior: smooth;\n will-change: height;\n`;\n\nconst DailyTimelineContainer = styled(FlexView)`\n max-width: 512px;\n width: 100%;\n will-change: height;\n`;\n\nconst DailyItems = styled(FlexView)<{ $addedMonthBreak?: boolean }>`\n margin-top: ${({ $addedMonthBreak }) =>\n $addedMonthBreak\n ? '-108px' // 64px card height + 16px(separator) + 16(date text) + 12(separator)\n : '0'};\n z-index: 1;\n`;\n\nexport { DailyTimelineContainer, DailyItems, ScrollWrapper };\n"],"names":["ScrollWrapper","styled","FlexView","DailyTimelineContainer","DailyItems","$addedMonthBreak"],"mappings":";;AAIM,MAAAA,IAAgBC,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA;AAAA,GAO/BC,IAAyBF,EAAOC,CAAQ;AAAA;AAAA;AAAA;AAAA,GAMxCE,IAAaH,EAAOC,CAAQ;AAAA,gBAClB,CAAC,EAAE,kBAAAG,EAAA,MACfA,IACI,WACA,GAAG;AAAA;AAAA;"}
@@ -1,7 +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 || {});
1
+ var N = /* @__PURE__ */ ((r) => (r.COMPLETED = "COMPLETED", r.IN_PROGRESS = "IN_PROGRESS", r.PENDING = "PENDING", r.NOT_STARTED = "NOT_STARTED", r))(N || {}), C = /* @__PURE__ */ ((r) => (r.TEACHER = "TEACHER", r.STUDENT = "STUDENT", r.PARENT = "PARENT", r))(C || {}), E = /* @__PURE__ */ ((r) => (r.CW = "CW", r.HW = "HW", r.CIRCLE = "CIRCLE", r))(E || {});
2
2
  export {
3
- N as CARD_TYPE,
4
- C as NODE_STATE,
5
- E as USER_TYPE
3
+ E as CARD_TYPE,
4
+ N as NODE_STATE,
5
+ C as USER_TYPE
6
6
  };
7
7
  //# sourceMappingURL=daily-timeline-types.js.map
@@ -1 +1 @@
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 enum NODE_STATE {\n COMPLETED = 'COMPLETED',\n IN_PROGRESS = 'IN_PROGRESS',\n PENDING = 'PENDING',\n}\n\nexport enum USER_TYPE {\n TEACHER = 'TEACHER',\n STUDENT = 'STUDENT',\n PARENT = 'PARENT',\n}\n\nexport enum CARD_TYPE {\n CW = 'CW',\n HW = 'HW',\n CIRCLE = 'CIRCLE',\n}\n\nexport interface IDailyTimelineProps {\n userType: 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":["NODE_STATE","USER_TYPE","CARD_TYPE"],"mappings":"AAEY,IAAAA,sBAAAA,OACVA,EAAA,YAAY,aACZA,EAAA,cAAc,eACdA,EAAA,UAAU,WAHAA,IAAAA,KAAA,CAAA,CAAA,GAMAC,sBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,UAAU,WACVA,EAAA,SAAS,UAHCA,IAAAA,KAAA,CAAA,CAAA,GAMAC,sBAAAA,OACVA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,SAAS,UAHCA,IAAAA,KAAA,CAAA,CAAA;"}
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';\nimport { type ITimelineData } from './api/use-daily-timeline-get';\n\nexport enum NODE_STATE {\n COMPLETED = 'COMPLETED',\n IN_PROGRESS = 'IN_PROGRESS',\n PENDING = 'PENDING',\n NOT_STARTED = 'NOT_STARTED',\n}\n\nexport enum USER_TYPE {\n TEACHER = 'TEACHER',\n STUDENT = 'STUDENT',\n PARENT = 'PARENT',\n}\n\nexport enum CARD_TYPE {\n CW = 'CW',\n HW = 'HW',\n CIRCLE = 'CIRCLE',\n}\n\nexport interface IDailyTimelineProps {\n userType: USER_TYPE;\n studentId: string;\n courseStreams?: TCourseStream[];\n onPuzzleClick?: (userNodeId: string, state: NODE_STATE) => void;\n onReviewClick?: (\n userNodeId: string | null,\n isSatMockTestBlock: boolean,\n userBlockId: string | null,\n ) => void;\n scrollAreaHeight?: string | number;\n}\n\nexport interface IDailyTimelineItemsProps extends IDailyTimelineProps {\n entry: ITimelineData;\n isFirstElement: boolean;\n shouldShowTag: boolean;\n}\n"],"names":["NODE_STATE","USER_TYPE","CARD_TYPE"],"mappings":"AAGY,IAAAA,sBAAAA,OACVA,EAAA,YAAY,aACZA,EAAA,cAAc,eACdA,EAAA,UAAU,WACVA,EAAA,cAAc,eAJJA,IAAAA,KAAA,CAAA,CAAA,GAOAC,sBAAAA,OACVA,EAAA,UAAU,WACVA,EAAA,UAAU,WACVA,EAAA,SAAS,UAHCA,IAAAA,KAAA,CAAA,CAAA,GAMAC,sBAAAA,OACVA,EAAA,KAAK,MACLA,EAAA,KAAK,MACLA,EAAA,SAAS,UAHCA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -0,0 +1,78 @@
1
+ import { jsxs as s, Fragment as j, jsx as t } from "react/jsx-runtime";
2
+ import { getDayMonthYear as D } from "./comps/utils.js";
3
+ import w from "../ui/layout/flex-view.js";
4
+ import x from "./comps/year-break/year-break.js";
5
+ import m from "../ui/separator/separator.js";
6
+ import A from "./comps/month-break/month-break.js";
7
+ import { DailyItems as B } from "./daily-timeline-styled.js";
8
+ import C from "../ui/text/text.js";
9
+ import I from "./comps/daily-timeline-items/daily-timeline-items.js";
10
+ import S from "./comps/no-activity.js";
11
+ import { CARD_TYPE as k } from "./daily-timeline-types.js";
12
+ import { parseISO as u } from "../../node_modules/date-fns/parseISO.js";
13
+ import { isLastDayOfMonth as V } from "../../node_modules/date-fns/isLastDayOfMonth.js";
14
+ const b = ({
15
+ entry: $,
16
+ isFirstElement: n,
17
+ onPuzzleClick: M,
18
+ onReviewClick: _,
19
+ shouldShowTag: g,
20
+ studentId: L,
21
+ userType: T
22
+ }) => {
23
+ const { daily_logs: r, from_date: a, to_date: h } = $, N = u(a), f = u(h), { day: y, month: c, monthName: O } = D(N), {
24
+ day: p,
25
+ month: d,
26
+ year: X,
27
+ monthName: Y
28
+ } = D(f), i = V(f), e = i && d === 12 && p === 31;
29
+ return r ? /* @__PURE__ */ s(w, { children: [
30
+ !n && /* @__PURE__ */ s(j, { children: [
31
+ /* @__PURE__ */ t(x, { toYear: X, isLastDayOfYear: e }),
32
+ !e && c && e && /* @__PURE__ */ t(m, { heightX: 1 }),
33
+ /* @__PURE__ */ t(
34
+ A,
35
+ {
36
+ fromMonth: c,
37
+ isLastDayOfMth: i,
38
+ isLastDayOfYear: e
39
+ }
40
+ )
41
+ ] }),
42
+ /* @__PURE__ */ s(
43
+ B,
44
+ {
45
+ $gutterX: 1,
46
+ $addedMonthBreak: !!(i && d && !n),
47
+ children: [
48
+ /* @__PURE__ */ t(m, { heightX: 1 }),
49
+ /* @__PURE__ */ t(C, { $renderAs: "ac4", $color: "BLACK_T_60", children: a === h ? `${y} ${O}` : `${y} - ${p} ${Y}` }),
50
+ /* @__PURE__ */ t(m, { heightX: 0.75 }),
51
+ r.length > 0 ? r.map((o, l) => /* @__PURE__ */ t(
52
+ I,
53
+ {
54
+ type: o.type,
55
+ summary: o.summary ?? "",
56
+ courseStream: o.course_stream,
57
+ cards: o.cards,
58
+ onPuzzleClick: M,
59
+ onReviewClick: _,
60
+ userType: T,
61
+ shouldShowTag: g && o.course_stream !== k.CIRCLE,
62
+ isLastItem: l === r.length - 1,
63
+ fromDate: a,
64
+ studentId: L
65
+ },
66
+ `timeline-${l}`
67
+ )) : /* @__PURE__ */ t(S, {}),
68
+ /* @__PURE__ */ t(m, { heightX: 1 })
69
+ ]
70
+ }
71
+ )
72
+ ] }) : null;
73
+ };
74
+ b.displayName = "DailyTimelineView";
75
+ export {
76
+ b as default
77
+ };
78
+ //# sourceMappingURL=daily-timeline-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daily-timeline-view.js","sources":["../../../src/features/timeline/daily-timeline-view.tsx"],"sourcesContent":["import { isLastDayOfMonth, parseISO } from 'date-fns';\nimport { type FC } from 'react';\n\nimport { getDayMonthYear } from './comps/utils';\nimport FlexView from '../ui/layout/flex-view';\nimport YearBreak from './comps/year-break/year-break';\nimport Separator from '../ui/separator/separator';\nimport MonthBreak from './comps/month-break/month-break';\nimport * as Styled from './daily-timeline-styled';\nimport Text from '../ui/text/text';\nimport DailyTimelineItems from './comps/daily-timeline-items/daily-timeline-items';\nimport NoActivity from './comps/no-activity';\nimport { CARD_TYPE, type IDailyTimelineItemsProps } from './daily-timeline-types';\n\nconst DailyTimelineView: FC<IDailyTimelineItemsProps> = ({\n entry,\n isFirstElement,\n onPuzzleClick,\n onReviewClick,\n shouldShowTag,\n studentId,\n userType,\n}) => {\n const { daily_logs: dailyLogs, from_date: fromDate, to_date: toDate } = entry;\n const fromDateObj = parseISO(fromDate);\n const toDateObj = parseISO(toDate);\n\n const { day: fromDay, month: fromMonth, monthName: fromMonthName } = 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 if (!dailyLogs) {\n return null;\n }\n\n return (\n <FlexView>\n {!isFirstElement && (\n <>\n <YearBreak toYear={toYear} isLastDayOfYear={isLastDayOfYear} />\n {!isLastDayOfYear && fromMonth && isLastDayOfYear && <Separator heightX={1} />}\n <MonthBreak\n fromMonth={fromMonth}\n isLastDayOfMth={isLastDayOfMth}\n isLastDayOfYear={isLastDayOfYear}\n />\n </>\n )}\n <Styled.DailyItems\n $gutterX={1}\n $addedMonthBreak={!!(isLastDayOfMth && toMonth && !isFirstElement)}\n >\n <Separator heightX={1} />\n <Text $renderAs=\"ac4\" $color=\"BLACK_T_60\">\n {fromDate === toDate\n ? `${fromDay} ${fromMonthName}`\n : `${fromDay} - ${toDay} ${toMonthName}`}\n </Text>\n <Separator heightX={0.75} />\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={onPuzzleClick}\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\nDailyTimelineView.displayName = 'DailyTimelineView';\n\nexport default DailyTimelineView;\n"],"names":["DailyTimelineView","entry","isFirstElement","onPuzzleClick","onReviewClick","shouldShowTag","studentId","userType","dailyLogs","fromDate","toDate","fromDateObj","parseISO","toDateObj","fromDay","fromMonth","fromMonthName","getDayMonthYear","toDay","toMonth","toYear","toMonthName","isLastDayOfMth","isLastDayOfMonth","isLastDayOfYear","FlexView","jsxs","Fragment","jsx","YearBreak","Separator","MonthBreak","Styled.DailyItems","Text","log","logIndex","DailyTimelineItems","CARD_TYPE","NoActivity"],"mappings":";;;;;;;;;;;;;AAcA,MAAMA,IAAkD,CAAC;AAAA,EACvD,OAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,eAAAC;AAAA,EACA,WAAAC;AAAA,EACA,UAAAC;AACF,MAAM;AACJ,QAAM,EAAE,YAAYC,GAAW,WAAWC,GAAU,SAASC,EAAW,IAAAT,GAClEU,IAAcC,EAASH,CAAQ,GAC/BI,IAAYD,EAASF,CAAM,GAE3B,EAAE,KAAKI,GAAS,OAAOC,GAAW,WAAWC,EAAkB,IAAAC,EAAgBN,CAAW,GAE1F;AAAA,IACJ,KAAKO;AAAA,IACL,OAAOC;AAAA,IACP,MAAMC;AAAA,IACN,WAAWC;AAAA,EAAA,IACTJ,EAAgBJ,CAAS,GAEvBS,IAAiBC,EAAiBV,CAAS,GAC3CW,IAAkBF,KAAkBH,MAAY,MAAMD,MAAU;AAEtE,SAAKV,sBAKFiB,GACE,EAAA,UAAA;AAAA,IAAA,CAACvB,KAEE,gBAAAwB,EAAAC,GAAA,EAAA,UAAA;AAAA,MAAC,gBAAAC,EAAAC,GAAA,EAAU,QAAAT,GAAgB,iBAAAI,EAAkC,CAAA;AAAA,MAC5D,CAACA,KAAmBT,KAAaS,KAAoB,gBAAAI,EAAAE,GAAA,EAAU,SAAS,GAAG;AAAA,MAC5E,gBAAAF;AAAA,QAACG;AAAA,QAAA;AAAA,UACC,WAAAhB;AAAA,UACA,gBAAAO;AAAA,UACA,iBAAAE;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GACF;AAAA,IAEF,gBAAAE;AAAA,MAACM;AAAAA,MAAA;AAAA,QACC,UAAU;AAAA,QACV,kBAAkB,CAAC,EAAEV,KAAkBH,KAAW,CAACjB;AAAA,QAEnD,UAAA;AAAA,UAAC,gBAAA0B,EAAAE,GAAA,EAAU,SAAS,EAAG,CAAA;AAAA,4BACtBG,GAAK,EAAA,WAAU,OAAM,QAAO,cAC1B,gBAAavB,IACV,GAAGI,CAAO,IAAIE,CAAa,KAC3B,GAAGF,CAAO,MAAMI,CAAK,IAAIG,CAAW,IAC1C;AAAA,UACA,gBAAAO,EAACE,GAAU,EAAA,SAAS,KAAM,CAAA;AAAA,UACzBtB,EAAU,SAAS,IAClBA,EAAU,IAAI,CAAC0B,GAAKC,MAClB,gBAAAP;AAAA,YAACQ;AAAA,YAAA;AAAA,cAEC,MAAMF,EAAI;AAAA,cACV,SAASA,EAAI,WAAW;AAAA,cACxB,cAAcA,EAAI;AAAA,cAClB,OAAOA,EAAI;AAAA,cACX,eAAA/B;AAAA,cACA,eAAAC;AAAA,cACA,UAAAG;AAAA,cACA,eAAeF,KAAiB6B,EAAI,kBAAkBG,EAAU;AAAA,cAChE,YAAYF,MAAa3B,EAAU,SAAS;AAAA,cAC5C,UAAAC;AAAA,cACA,WAAAH;AAAA,YAAA;AAAA,YAXK,YAAY6B,CAAQ;AAAA,UAAA,CAa5B,IAED,gBAAAP,EAACU,GAAW,EAAA;AAAA,UAEd,gBAAAV,EAACE,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IACzB;AAAA,EACF,EAAA,CAAA,IAjDO;AAmDX;AAEA9B,EAAkB,cAAc;"}
@@ -1,155 +1,99 @@
1
- import { jsx as r, jsxs as y } from "react/jsx-runtime";
2
- import { memo as q, useState as v, useCallback as P, useMemo as H, useEffect as p } from "react";
3
- import J from "../ui/error/error.js";
4
- import R from "../ui/layout/flex-view.js";
5
- import Q from "../ui/loader/app-loader/app-loader.js";
6
- import Z from "../ui/intersection-loader/intersection-loader.js";
7
- import g from "../ui/separator/separator.js";
8
- import ee from "../ui/text/text.js";
9
- import { useDailyTimelineGet as re } from "./api/use-daily-timeline-get.js";
10
- import { getDayMonthYear as k } from "./comps/utils.js";
11
- import oe from "./comps/daily-timeline-items/daily-timeline-items.js";
12
- import { ScrollWrapper as te, DailyTimelineContainer as ie, DailyItems as ae } from "./daily-timeline-styled.js";
13
- import { USER_TYPE as me, CARD_TYPE as d } from "./daily-timeline-types.js";
14
- import se from "./comps/month-break/month-break.js";
15
- import ne from "./comps/year-break/year-break.js";
16
- import { INITIAL_PAGE as fe, TIMELINE_EVENTS as L } from "./comps/constants.js";
17
- import { getTimezone as ce } from "../../helpers/date-time.js";
18
- import le from "./comps/no-activity.js";
19
- import { useUIContext as he } from "../ui/context/context.js";
20
- import pe from "../hooks/use-previous.js";
21
- import { parseISO as w } from "../../node_modules/date-fns/parseISO.js";
22
- import { isLastDayOfMonth as ge } from "../../node_modules/date-fns/isLastDayOfMonth.js";
23
- const X = q(
24
- ({ userType: _, studentId: i, courseStreams: c, onPuzzlesClick: Y, onReviewClick: j, scrollAreaHeight: T }) => {
25
- const [l, C] = v([]), [u, M] = v(!1), { onEvent: s } = he(), {
26
- get: $,
1
+ import { jsx as s, jsxs as P } from "react/jsx-runtime";
2
+ import { memo as $, useState as I, useCallback as _, useMemo as w, useEffect as f, Fragment as D } from "react";
3
+ import R from "../ui/error/error.js";
4
+ import F from "../ui/layout/flex-view.js";
5
+ import V from "../ui/loader/app-loader/app-loader.js";
6
+ import Y from "../ui/intersection-loader/intersection-loader.js";
7
+ import { useDailyTimelineGet as j } from "./api/use-daily-timeline-get.js";
8
+ import { ScrollWrapper as k, DailyTimelineContainer as G } from "./daily-timeline-styled.js";
9
+ import { USER_TYPE as O, CARD_TYPE as y } from "./daily-timeline-types.js";
10
+ import { INITIAL_PAGE as U } from "./comps/constants.js";
11
+ import { getTimezone as W } from "../../helpers/date-time.js";
12
+ import { useUIContext as b } from "../ui/context/context.js";
13
+ import X from "../hooks/use-previous.js";
14
+ import { DAILY_TIMELINE_ANALYTICS_EVENTS as h } from "./daily-timeline-events.js";
15
+ import q from "./daily-timeline-view.js";
16
+ const S = $(
17
+ ({ userType: c, studentId: i, courseStreams: m, onPuzzleClick: A, onReviewClick: M, scrollAreaHeight: T }) => {
18
+ const [l, p] = I([]), [E, u] = I(!1), { onEvent: t } = b(), {
19
+ get: L,
27
20
  data: e,
28
- isProcessingFailed: B,
29
- isProcessing: b
30
- } = re(i), D = pe(e == null ? void 0 : e.curr_page), n = P(
31
- (o = fe, a = !1) => {
32
- a && M(!0), $(i, {
33
- page: o,
34
- size: 10,
35
- timezone: ce(),
36
- course_stream: _ === me.TEACHER ? c : []
21
+ isProcessingFailed: d,
22
+ isProcessing: z
23
+ } = j(i), C = X(e == null ? void 0 : e.curr_page), n = _(
24
+ (r = U, o = !1) => {
25
+ o && u(!0), L(i, {
26
+ page: r,
27
+ timezone: W(),
28
+ course_stream: c === O.TEACHER ? m : []
37
29
  });
38
30
  },
39
- [$, i, _, c]
40
- ), U = H(() => {
41
- const o = /* @__PURE__ */ new Set();
42
- l.forEach((t) => {
43
- t.daily_logs && t.daily_logs.forEach((m) => {
44
- m.course_stream && m.course_stream !== d.CIRCLE && o.add(m.course_stream);
31
+ [L, i, c, m]
32
+ ), N = w(() => {
33
+ const r = /* @__PURE__ */ new Set();
34
+ l.forEach((a) => {
35
+ a.daily_logs && a.daily_logs.forEach((g) => {
36
+ g.course_stream && g.course_stream !== y.CIRCLE && r.add(g.course_stream);
45
37
  });
46
38
  });
47
- const a = new Set(
48
- (c || []).filter((t) => String(t) !== d.CIRCLE)
39
+ const o = new Set(
40
+ (m || []).filter((a) => String(a) !== y.CIRCLE)
49
41
  );
50
- return a.size > 1 || o.size > 1 || a.size > 0 && o.size > 0 && (a.size !== o.size || !Array.from(a).every((t) => o.has(t)));
51
- }, [l, c]), V = P(() => {
52
- e != null && e.next_page && !u && (n(e.next_page, !0), s(
53
- L.TIMELINE_SCROLL_CONTINUED,
54
- {
55
- student_id: i
56
- },
57
- { mixpanel: !0 }
58
- ));
59
- }, [e, i, s, u, n]);
60
- return p(() => {
61
- e && e.curr_page && D !== e.curr_page && (e.curr_page === 1 ? C((e == null ? void 0 : e.user_logs) ?? []) : (C((o) => [...o, ...e.user_logs ?? []]), M(!1)));
62
- }, [e, D]), p(() => {
63
- s(
64
- L.TIMELINE_VIEWED,
65
- {
66
- student_id: i
67
- },
68
- { mixpanel: !0 }
69
- );
70
- }, [i, s]), p(() => () => {
71
- s(
72
- L.TIMELINE_CLOSED,
73
- {
74
- student_id: i
75
- },
76
- { mixpanel: !0 }
77
- );
78
- }, [i, s]), p(() => {
42
+ return o.size > 1 || r.size > 1 || o.size > 0 && r.size > 0 && (o.size !== r.size || !Array.from(o).every((a) => r.has(a)));
43
+ }, [l, m]), v = _(() => {
44
+ e != null && e.next_page && !E && (n(e.next_page, !0), t(h.TIMELINE_SCROLLED, {
45
+ student_id: i
46
+ }));
47
+ }, [e, i, t, E, n]), x = _(() => {
48
+ n(1, !1), p([]);
49
+ }, [n]);
50
+ return f(() => {
51
+ e && (e.curr_page === 1 ? p((e == null ? void 0 : e.user_logs) ?? []) : e.curr_page && C !== e.curr_page && (p((r) => [...r, ...e.user_logs ?? []]), u(!1)));
52
+ }, [e, C]), f(() => {
53
+ t(h.TIMELINE_VIEWED, {
54
+ student_id: i
55
+ });
56
+ }, [i, t]), f(() => () => {
57
+ t(h.TIMELINE_CLOSED, {
58
+ student_id: i
59
+ });
60
+ }, [i, t]), f(() => {
79
61
  n(1, !1);
80
- }, [n]), B ? /* @__PURE__ */ r(J, { height: T || "100vh", onTryAgain: n }) : b && !l.length ? /* @__PURE__ */ r(
81
- R,
62
+ }, [n]), d ? /* @__PURE__ */ s(R, { height: T ?? "100vh", onTryAgain: x }) : z && !l.length ? /* @__PURE__ */ s(
63
+ F,
82
64
  {
83
65
  $alignItems: "center",
84
66
  $justifyContent: "center",
85
67
  $height: T || "100vh",
86
- children: /* @__PURE__ */ r(Q, { width: "100%", height: "100%" })
68
+ children: /* @__PURE__ */ s(V, { width: "100%", height: "100%" })
87
69
  }
88
- ) : /* @__PURE__ */ r(te, { $alignItems: "center", $gapX: 1, children: /* @__PURE__ */ y(ie, { children: [
89
- l.map((o, a) => {
90
- const { daily_logs: t, from_date: m, to_date: I } = o;
91
- if (t) {
92
- const F = w(m), N = w(I), {
93
- day: S,
94
- month: x,
95
- monthName: G
96
- } = k(F), {
97
- day: z,
98
- month: A,
99
- year: W,
100
- monthName: K
101
- } = k(N), E = ge(N), h = E && A === 12 && z === 31;
102
- return /* @__PURE__ */ y(R, { children: [
103
- /* @__PURE__ */ r(ne, { toYear: W, isLastDayOfYear: h }),
104
- !h && x && h && /* @__PURE__ */ r(g, { heightX: 1 }),
105
- /* @__PURE__ */ r(
106
- se,
107
- {
108
- fromMonth: x,
109
- isLastDayOfMth: E,
110
- isLastDayOfYear: h
111
- }
112
- ),
113
- /* @__PURE__ */ y(ae, { $gutterX: 1, $addedMonthBreak: !!(E && A), children: [
114
- /* @__PURE__ */ r(g, { heightX: 1 }),
115
- /* @__PURE__ */ r(ee, { $renderAs: "ac4", $color: "BLACK_T_60", children: m === I ? `${S} ${G}` : `${S} - ${z} ${K}` }),
116
- /* @__PURE__ */ r(g, { heightX: 0.75 }),
117
- t.length > 0 ? t.map((f, O) => /* @__PURE__ */ r(
118
- oe,
119
- {
120
- type: f.type,
121
- summary: f.summary ?? "",
122
- courseStream: f.course_stream,
123
- cards: f.cards,
124
- onPuzzleClick: Y,
125
- onReviewClick: j,
126
- userType: _,
127
- shouldShowTag: U && f.course_stream !== d.CIRCLE,
128
- isLastItem: O === t.length - 1,
129
- fromDate: m,
130
- studentId: i
131
- },
132
- `timeline-${O}`
133
- )) : /* @__PURE__ */ r(le, {}),
134
- /* @__PURE__ */ r(g, { heightX: 1 })
135
- ] })
136
- ] }, `timeline-entry-${a}`);
70
+ ) : /* @__PURE__ */ s(k, { $alignItems: "center", $gapX: 1, children: /* @__PURE__ */ P(G, { children: [
71
+ l.map((r, o) => /* @__PURE__ */ s(D, { children: /* @__PURE__ */ s(
72
+ q,
73
+ {
74
+ entry: r,
75
+ isFirstElement: o === 0,
76
+ shouldShowTag: N,
77
+ onPuzzleClick: A,
78
+ onReviewClick: M,
79
+ userType: c,
80
+ studentId: i
137
81
  }
138
- }),
139
- /* @__PURE__ */ r(
140
- Z,
82
+ ) }, `timeline-entry-${o}`)),
83
+ /* @__PURE__ */ s(
84
+ Y,
141
85
  {
142
- onLoadMore: V,
143
- isLoading: u,
86
+ onLoadMore: v,
87
+ isLoading: E,
144
88
  hasMore: !!(e != null && e.next_page)
145
89
  }
146
90
  )
147
91
  ] }) });
148
92
  }
149
93
  );
150
- X.displayName = "DailyTimeline";
151
- const we = X;
94
+ S.displayName = "DailyTimeline";
95
+ const le = S;
152
96
  export {
153
- we as default
97
+ le as default
154
98
  };
155
99
  //# 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 { CARD_TYPE, 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, TIMELINE_EVENTS } from './comps/constants';\nimport { getTimezone } from '../../helpers/date-time';\nimport NoActivity from './comps/no-activity';\nimport { useUIContext } from '../ui/context/context';\nimport usePrevious from '../hooks/use-previous';\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 const {\n get: getTimeline,\n data: timelineData,\n isProcessingFailed,\n isProcessing,\n } = useDailyTimelineGet(studentId);\n\n const prevCurrentPage = usePrevious(timelineData?.curr_page);\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 trackEvent(\n TIMELINE_EVENTS.TIMELINE_SCROLL_CONTINUED,\n {\n student_id: studentId,\n },\n { mixpanel: true },\n );\n }\n }, [timelineData, studentId, trackEvent, isLoadingMore, fetchTimeline]);\n\n useEffect(() => {\n if (timelineData && timelineData.curr_page && prevCurrentPage !== timelineData.curr_page) {\n if (timelineData.curr_page === 1) {\n setAllTimelineData(timelineData?.user_logs ?? []);\n } else {\n setAllTimelineData(prev => [...prev, ...(timelineData.user_logs ?? [])]);\n setIsLoadingMore(false);\n }\n }\n }, [timelineData, prevCurrentPage]);\n\n useEffect(() => {\n trackEvent(\n TIMELINE_EVENTS.TIMELINE_VIEWED,\n {\n student_id: studentId,\n },\n { mixpanel: true },\n );\n }, [studentId, trackEvent]);\n\n useEffect(() => {\n return () => {\n trackEvent(\n TIMELINE_EVENTS.TIMELINE_CLOSED,\n {\n student_id: studentId,\n },\n { mixpanel: true },\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\" $gapX={1}>\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 && isLastDayOfYear && <Separator heightX={1} />}\n <MonthBreak\n fromMonth={fromMonth}\n isLastDayOfMth={isLastDayOfMth}\n isLastDayOfYear={isLastDayOfYear}\n />\n <Styled.DailyItems $gutterX={1} $addedMonthBreak={!!(isLastDayOfMth && toMonth)}>\n <Separator heightX={1} />\n <Text $renderAs=\"ac4\" $color=\"BLACK_T_60\">\n {fromDate === toDate\n ? `${fromDay} ${fromMonthName}`\n : `${fromDay} - ${toDay} ${toMonthName}`}\n </Text>\n <Separator heightX={0.75} />\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 !== 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","prevCurrentPage","usePrevious","fetchTimeline","useCallback","page","INITIAL_PAGE","append","getTimezone","USER_TYPE","shouldShowTag","useMemo","allCourseStreams","entry","log","CARD_TYPE","courseStreamsSet","stream","handleLoadMore","TIMELINE_EVENTS","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":";;;;;;;;;;;;;;;;;;;;;;AAsBA,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,GACvC;AAAA,MACJ,KAAKC;AAAA,MACL,MAAMC;AAAA,MACN,oBAAAC;AAAA,MACA,cAAAC;AAAA,IAAA,IACEC,GAAoBhB,CAAS,GAE3BiB,IAAkBC,GAAYL,KAAA,gBAAAA,EAAc,SAAS,GAErDM,IAAgBC;AAAA,MACpB,CAACC,IAAOC,IAAcC,IAAS,OAAU;AACvC,QAAIA,KACFd,EAAiB,EAAI,GAGvBG,EAAYZ,GAAW;AAAA,UACrB,MAAAqB;AAAA,UACA,MAAM;AAAA,UACN,UAAUG,GAAY;AAAA,UACtB,eAAezB,MAAa0B,GAAU,UAAUxB,IAAgB,CAAC;AAAA,QAAA,CAClE;AAAA,MACH;AAAA,MACA,CAACW,GAAaZ,GAAWD,GAAUE,CAAa;AAAA,IAAA,GAG5CyB,IAAgBC,EAAQ,MAAM;AAC5B,YAAAC,wBAAuB;AAE7B,MAAAvB,EAAgB,QAAQ,CAASwB,MAAA;AAC/B,QAAIA,EAAM,cACFA,EAAA,WAAW,QAAQ,CAAOC,MAAA;AAC9B,UAAIA,EAAI,iBAAiBA,EAAI,kBAAkBC,EAAU,UACtCH,EAAA,IAAIE,EAAI,aAAa;AAAA,QACxC,CACD;AAAA,MACH,CACD;AAED,YAAME,IAAmB,IAAI;AAAA,SAC1B/B,KAAiB,IAAI,OAAO,OAAU,OAAOgC,CAAM,MAAMF,EAAU,MAAM;AAAA,MAAA;AAI1E,aAAAC,EAAiB,OAAO,KACxBJ,EAAiB,OAAO,KACvBI,EAAiB,OAAO,KACvBJ,EAAiB,OAAO,MACvBI,EAAiB,SAASJ,EAAiB,QAC1C,CAAC,MAAM,KAAKI,CAAgB,EAAE,MAAM,CAAUC,MAAAL,EAAiB,IAAIK,CAAM,CAAC;AAAA,IAAA,GAE/E,CAAC5B,GAAiBJ,CAAa,CAAC,GAE7BiC,IAAiBd,EAAY,MAAM;AACnC,MAAAP,KAAA,QAAAA,EAAc,aAAa,CAACL,MAChBW,EAAAN,EAAa,WAAW,EAAI,GAC1CH;AAAA,QACEyB,EAAgB;AAAA,QAChB;AAAA,UACE,YAAYnC;AAAA,QACd;AAAA,QACA,EAAE,UAAU,GAAK;AAAA,MAAA;AAAA,IAErB,GACC,CAACa,GAAcb,GAAWU,GAAYF,GAAeW,CAAa,CAAC;AAuCtE,WArCAiB,EAAU,MAAM;AACd,MAAIvB,KAAgBA,EAAa,aAAaI,MAAoBJ,EAAa,cACzEA,EAAa,cAAc,IACVP,GAAAO,KAAA,gBAAAA,EAAc,cAAa,CAAA,CAAE,KAE7BP,EAAA,CAAA+B,MAAQ,CAAC,GAAGA,GAAM,GAAIxB,EAAa,aAAa,CAAG,CAAA,CAAC,GACvEJ,EAAiB,EAAK;AAAA,IAE1B,GACC,CAACI,GAAcI,CAAe,CAAC,GAElCmB,EAAU,MAAM;AACd,MAAA1B;AAAA,QACEyB,EAAgB;AAAA,QAChB;AAAA,UACE,YAAYnC;AAAA,QACd;AAAA,QACA,EAAE,UAAU,GAAK;AAAA,MAAA;AAAA,IACnB,GACC,CAACA,GAAWU,CAAU,CAAC,GAE1B0B,EAAU,MACD,MAAM;AACX,MAAA1B;AAAA,QACEyB,EAAgB;AAAA,QAChB;AAAA,UACE,YAAYnC;AAAA,QACd;AAAA,QACA,EAAE,UAAU,GAAK;AAAA,MAAA;AAAA,IACnB,GAED,CAACA,GAAWU,CAAU,CAAC,GAE1B0B,EAAU,MAAM;AACd,MAAAjB,EAAc,GAAG,EAAK;AAAA,IAAA,GACrB,CAACA,CAAa,CAAC,GAEdL,sBACMwB,GAAM,EAAA,QAAQlC,KAAoB,SAAS,YAAYe,EAAe,CAAA,IAG5EJ,KAAgB,CAACV,EAAgB,SAEjC,gBAAAkC;AAAA,MAACC;AAAA,MAAA;AAAA,QACC,aAAY;AAAA,QACZ,iBAAgB;AAAA,QAChB,SAASpC,KAAoB;AAAA,QAE7B,UAAC,gBAAAmC,EAAAE,GAAA,EAAU,OAAM,QAAO,QAAO,QAAO;AAAA,MAAA;AAAA,IAAA,IAM1C,gBAAAF,EAACG,IAAA,EAAqB,aAAY,UAAS,OAAO,GAChD,UAAA,gBAAAC,EAACC,IAAA,EACE,UAAA;AAAA,MAAgBvC,EAAA,IAAI,CAACwB,GAAOgB,MAAU;AACrC,cAAM,EAAE,YAAYC,GAAW,WAAWC,GAAU,SAASC,EAAW,IAAAnB;AAExE,YAAIiB,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,gBAAAD,EAAAwB,IAAA,EAAU,QAAAL,GAAgB,iBAAAI,EAAkC,CAAA;AAAA,YAC5D,CAACA,KAAmBT,KAAaS,KAAoB,gBAAAvB,EAAAyB,GAAA,EAAU,SAAS,GAAG;AAAA,YAC5E,gBAAAzB;AAAA,cAAC0B;AAAA,cAAA;AAAA,gBACC,WAAAZ;AAAA,gBACA,gBAAAO;AAAA,gBACA,iBAAAE;AAAA,cAAA;AAAA,YACF;AAAA,YACA,gBAAAnB,EAACuB,IAAA,EAAkB,UAAU,GAAG,kBAAkB,CAAC,EAAEN,KAAkBH,IACrE,UAAA;AAAA,cAAC,gBAAAlB,EAAAyB,GAAA,EAAU,SAAS,EAAG,CAAA;AAAA,gCACtBG,IAAK,EAAA,WAAU,OAAM,QAAO,cAC1B,gBAAanB,IACV,GAAGI,CAAO,IAAIE,CAAa,KAC3B,GAAGF,CAAO,MAAMI,CAAK,IAAIG,CAAW,IAC1C;AAAA,cACA,gBAAApB,EAACyB,GAAU,EAAA,SAAS,KAAM,CAAA;AAAA,cACzBlB,EAAU,SAAS,IAClBA,EAAU,IAAI,CAAChB,GAAKsC,MAClB,gBAAA7B;AAAA,gBAAC8B;AAAA,gBAAA;AAAA,kBAEC,MAAMvC,EAAI;AAAA,kBACV,SAASA,EAAI,WAAW;AAAA,kBACxB,cAAcA,EAAI;AAAA,kBAClB,OAAOA,EAAI;AAAA,kBACX,eAAe5B;AAAA,kBACf,eAAAC;AAAA,kBACA,UAAAJ;AAAA,kBACA,eAAe2B,KAAiBI,EAAI,kBAAkBC,EAAU;AAAA,kBAChE,YAAYqC,MAAatB,EAAU,SAAS;AAAA,kBAC5C,UAAAC;AAAA,kBACA,WAAA/C;AAAA,gBAAA;AAAA,gBAXK,YAAYoE,CAAQ;AAAA,cAAA,CAa5B,IAED,gBAAA7B,EAAC+B,IAAW,EAAA;AAAA,cAEd,gBAAA/B,EAACyB,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,YAAA,GACzB;AAAA,UArCa,EAAA,GAAA,kBAAkBnB,CAAK,EAsCtC;AAAA,QAEJ;AAAA,MAAA,CACD;AAAA,MACD,gBAAAN;AAAA,QAACgC;AAAA,QAAA;AAAA,UACC,YAAYrC;AAAA,UACZ,WAAW1B;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,MAAA2E,KAAe3E;"}
1
+ {"version":3,"file":"daily-timeline.js","sources":["../../../src/features/timeline/daily-timeline.tsx"],"sourcesContent":["import { Fragment, 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 { type ITimelineData, useDailyTimelineGet } from './api/use-daily-timeline-get';\nimport * as Styled from './daily-timeline-styled';\nimport { CARD_TYPE, USER_TYPE, type IDailyTimelineProps } from './daily-timeline-types';\nimport { INITIAL_PAGE } from './comps/constants';\nimport { getTimezone } from '../../helpers/date-time';\nimport { useUIContext } from '../ui/context/context';\nimport usePrevious from '../hooks/use-previous';\nimport { DAILY_TIMELINE_ANALYTICS_EVENTS } from './daily-timeline-events';\nimport DailyTimelineView from './daily-timeline-view';\n\nconst DailyTimeline: FC<IDailyTimelineProps> = memo(\n ({ userType, studentId, courseStreams, onPuzzleClick, onReviewClick, scrollAreaHeight }) => {\n const [allTimelineData, setAllTimelineData] = useState<ITimelineData[]>([]);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n const { onEvent: trackEvent } = useUIContext();\n const {\n get: getTimeline,\n data: timelineData,\n isProcessingFailed,\n isProcessing,\n } = useDailyTimelineGet(studentId);\n\n const prevCurrentPage = usePrevious(timelineData?.curr_page);\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 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 trackEvent(DAILY_TIMELINE_ANALYTICS_EVENTS.TIMELINE_SCROLLED, {\n student_id: studentId,\n });\n }\n }, [timelineData, studentId, trackEvent, isLoadingMore, fetchTimeline]);\n\n const onTryAgain = useCallback(() => {\n fetchTimeline(1, false);\n setAllTimelineData([]);\n }, [fetchTimeline]);\n\n useEffect(() => {\n if (timelineData) {\n if (timelineData.curr_page === 1) {\n setAllTimelineData(timelineData?.user_logs ?? []);\n } else if (timelineData.curr_page && prevCurrentPage !== timelineData.curr_page) {\n setAllTimelineData(prev => [...prev, ...(timelineData.user_logs ?? [])]);\n setIsLoadingMore(false);\n }\n }\n }, [timelineData, prevCurrentPage]);\n\n useEffect(() => {\n trackEvent(DAILY_TIMELINE_ANALYTICS_EVENTS.TIMELINE_VIEWED, {\n student_id: studentId,\n });\n }, [studentId, trackEvent]);\n\n useEffect(() => {\n return () => {\n trackEvent(DAILY_TIMELINE_ANALYTICS_EVENTS.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={onTryAgain} />;\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\" $gapX={1}>\n <Styled.DailyTimelineContainer>\n {allTimelineData.map((entry, index) => (\n <Fragment key={`timeline-entry-${index}`}>\n <DailyTimelineView\n entry={entry}\n isFirstElement={index === 0}\n shouldShowTag={shouldShowTag}\n onPuzzleClick={onPuzzleClick}\n onReviewClick={onReviewClick}\n userType={userType}\n studentId={studentId}\n />\n </Fragment>\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","onPuzzleClick","onReviewClick","scrollAreaHeight","allTimelineData","setAllTimelineData","useState","isLoadingMore","setIsLoadingMore","trackEvent","useUIContext","getTimeline","timelineData","isProcessingFailed","isProcessing","useDailyTimelineGet","prevCurrentPage","usePrevious","fetchTimeline","useCallback","page","INITIAL_PAGE","append","getTimezone","USER_TYPE","shouldShowTag","useMemo","allCourseStreams","entry","log","CARD_TYPE","courseStreamsSet","stream","handleLoadMore","DAILY_TIMELINE_ANALYTICS_EVENTS","onTryAgain","useEffect","prev","jsx","Error","FlexView","AppLoader","Styled.ScrollWrapper","jsxs","Styled.DailyTimelineContainer","index","Fragment","DailyTimelineView","IntersectionLoader","DailyTimeline$1"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1569,7 +1569,7 @@ declare interface IDailyTimelineProps {
1569
1569
  userType: USER_TYPE;
1570
1570
  studentId: string;
1571
1571
  courseStreams?: TCourseStream[];
1572
- onPuzzlesClick: (userNodeId: string) => void;
1572
+ onPuzzleClick?: (userNodeId: string, state: NODE_STATE) => void;
1573
1573
  onReviewClick?: (userNodeId: string | null, isSatMockTestBlock: boolean, userBlockId: string | null) => void;
1574
1574
  scrollAreaHeight?: string | number;
1575
1575
  }
@@ -5110,6 +5110,13 @@ export declare const NODE_LABELS: {
5110
5110
  readonly TARGET_PRACTICE: "TARGET PRACTICE";
5111
5111
  };
5112
5112
 
5113
+ declare enum NODE_STATE {
5114
+ COMPLETED = "COMPLETED",
5115
+ IN_PROGRESS = "IN_PROGRESS",
5116
+ PENDING = "PENDING",
5117
+ NOT_STARTED = "NOT_STARTED"
5118
+ }
5119
+
5113
5120
  export declare const NODE_SUB_GROUP: {
5114
5121
  readonly CORE: "CORE";
5115
5122
  readonly TESTS: "TESTS";
@@ -0,0 +1,5 @@
1
+ var R = /* @__PURE__ */ ((A) => (A.LEGACY = "LEGACY", A.LEARNING = "LEARNING", A.REMEDIAL = "REMEDIAL", A.GENERAL = "GENERAL", A.SAT_MATH_RECAP = "SAT_MATH_RECAP", A.SAT_MATH_LEARNING = "SAT_MATH_LEARNING", A.SAT_MATH_ASSESSMENT = "SAT_MATH_ASSESSMENT", A.SAT_ENGLISH_RECAP = "SAT_ENGLISH_RECAP", A.SAT_ENGLISH_LEARNING = "SAT_ENGLISH_LEARNING", A.SAT_ENGLISH_ASSESSMENT = "SAT_ENGLISH_ASSESSMENT", A.LEVEL3 = "LEVEL3", A.RECAP = "RECAP", A.REVISION = "REVISION", A.LEVEL2 = "LEVEL2", A.TARGET_PRACTICE = "TARGET_PRACTICE", A.PRACTICE = "PRACTICE", A.EXTRA_PRACTICE = "EXTRA_PRACTICE", A.PUZZLE_EASY = "PUZZLE_EASY", A.PUZZLE_MEDIUM = "PUZZLE_MEDIUM", A.PUZZLE_HARD = "PUZZLE_HARD", A.CHAPTER_ASSESSMENT = "CHAPTER_ASSESSMENT", A.ASSESSMENT = "ASSESSMENT", A.TRIAL_DIAGNOSTIC = "TRIAL_DIAGNOSTIC", A.TRIAL_BASIC = "TRIAL_BASIC", A.TRIAL_INTERMEDIATE = "TRIAL_INTERMEDIATE", A.TRIAL_ADVANCED = "TRIAL_ADVANCED", A.MASTERY = "MASTERY", A.PUZZLE_CARD = "PUZZLE_CARD", A))(R || {});
2
+ export {
3
+ R as NODE_TYPES
4
+ };
5
+ //# sourceMappingURL=worksheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worksheet.js","sources":["../../../src/types/models/worksheet.ts"],"sourcesContent":["import type { IChannelMessage } from '@cuemath/cue-message-broker';\n\nimport type { TLPARSheetAttemptState } from '../../features/chapters/lpar-chapter/block-section/sheet-item/sheet-item-type';\nimport type {\n TSheetAttemptLocation,\n TSheetStateProps,\n} from '../../features/sheets/sheets-list/sheet-item/sheet-item-types';\nimport type { THueNames } from '../../features/ui/types';\n\nexport type TNodeTypes =\n | 'LEGACY'\n | 'LEARNING'\n | 'REMEDIAL'\n | 'GENERAL'\n | 'SAT_MATH_RECAP'\n | 'SAT_MATH_LEARNING'\n | 'SAT_MATH_ASSESSMENT'\n | 'SAT_ENGLISH_RECAP'\n | 'SAT_ENGLISH_LEARNING'\n | 'SAT_ENGLISH_ASSESSMENT'\n | 'LEVEL3'\n | 'RECAP'\n | 'REVISION'\n | 'LEVEL2'\n | 'TARGET_PRACTICE'\n | 'PRACTICE'\n | 'EXTRA_PRACTICE'\n | 'PUZZLE_EASY'\n | 'PUZZLE_MEDIUM'\n | 'PUZZLE_HARD'\n | 'CHAPTER_ASSESSMENT'\n | 'ASSESSMENT'\n | 'TRIAL_DIAGNOSTIC'\n | 'TRIAL_BASIC'\n | 'TRIAL_INTERMEDIATE'\n | 'TRIAL_ADVANCED'\n | 'MASTERY'\n | 'DYNAMIC'\n | 'TURING_ASSESSMENT'\n | 'TURING_SUBJECTIVE'\n | 'TURING_PRACTICE'\n | 'DIAGNOSTIC'\n | 'SUBJECTIVE'\n | 'VIDEO'\n | 'PUZZLE_CARD';\n\nexport enum NODE_TYPES {\n 'LEGACY' = 'LEGACY',\n 'LEARNING' = 'LEARNING',\n 'REMEDIAL' = 'REMEDIAL',\n 'GENERAL' = 'GENERAL',\n 'SAT_MATH_RECAP' = 'SAT_MATH_RECAP',\n 'SAT_MATH_LEARNING' = 'SAT_MATH_LEARNING',\n 'SAT_MATH_ASSESSMENT' = 'SAT_MATH_ASSESSMENT',\n 'SAT_ENGLISH_RECAP' = 'SAT_ENGLISH_RECAP',\n 'SAT_ENGLISH_LEARNING' = 'SAT_ENGLISH_LEARNING',\n 'SAT_ENGLISH_ASSESSMENT' = 'SAT_ENGLISH_ASSESSMENT',\n 'LEVEL3' = 'LEVEL3',\n 'RECAP' = 'RECAP',\n 'REVISION' = 'REVISION',\n 'LEVEL2' = 'LEVEL2',\n 'TARGET_PRACTICE' = 'TARGET_PRACTICE',\n 'PRACTICE' = 'PRACTICE',\n 'EXTRA_PRACTICE' = 'EXTRA_PRACTICE',\n 'PUZZLE_EASY' = 'PUZZLE_EASY',\n 'PUZZLE_MEDIUM' = 'PUZZLE_MEDIUM',\n 'PUZZLE_HARD' = 'PUZZLE_HARD',\n 'CHAPTER_ASSESSMENT' = 'CHAPTER_ASSESSMENT',\n 'ASSESSMENT' = 'ASSESSMENT',\n 'TRIAL_DIAGNOSTIC' = 'TRIAL_DIAGNOSTIC',\n 'TRIAL_BASIC' = 'TRIAL_BASIC',\n 'TRIAL_INTERMEDIATE' = 'TRIAL_INTERMEDIATE',\n 'TRIAL_ADVANCED' = 'TRIAL_ADVANCED',\n 'MASTERY' = 'MASTERY',\n 'PUZZLE_CARD' = 'PUZZLE_CARD',\n}\n\nexport interface IWorksheetModel {\n name: string;\n learnosity_activity_ref: string;\n is_lesson_v3_enabled: boolean;\n desmos_calculator_enabled: boolean;\n image_hue: THueNames | null;\n}\n\nexport interface IWorksheetAttemptModel {\n id: string; // userAttemptId\n node_id: string;\n user_node_id: string;\n node_type: TNodeTypes;\n is_timed: boolean;\n timer_type: 'FLEXIBLE' | 'FIXED' | null;\n sheet_time: number;\n time_spent: number;\n vm_time_spent: number | null;\n started_on_ts: number | null; // epoch time\n completed_on_ts: number | null; // epoch time\n scheduled_start_ts: number | null; // epoch time\n scheduled_end_ts: number | null; // epoch time\n break_interval: number;\n chapter_name: string | null;\n is_worksheet_v3: boolean | null;\n is_lesson_v3_enabled: boolean;\n user_chapter_id?: string | null;\n desmos_calculator_enabled: boolean;\n due_date: number | null;\n state: TLPARSheetAttemptState;\n canvas_data?: Array<IChannelMessage>;\n image_hue?: THueNames | null;\n feedback_comments?: string | null;\n user_block_id?: string | null;\n}\n\nexport interface IWorksheetModelV3 extends IWorksheetAttemptModel {\n permissions: {\n can_attempt: boolean;\n can_change_attempt_location: boolean;\n can_mark_familiar: boolean;\n can_reattempt: boolean;\n can_reset: boolean;\n can_resume: boolean;\n can_review: boolean;\n can_start: boolean;\n can_teacher_review: boolean;\n can_teacher_score: boolean;\n can_unlock: boolean;\n can_view_solution: boolean;\n is_review_disabled: boolean;\n };\n}\n\ninterface IWorksheetPermissionV2 {\n access: boolean;\n code: string;\n reason: string;\n}\n\nexport interface IResumeWorksheetModel extends IWorksheetAttemptModel {\n worksheet_name: string;\n signed_request: string;\n questions_signed_request: string;\n player_config: {\n minimumAccuracy: number;\n validation: boolean;\n }; // this is needed as we are using thsi in submit\n user_attempt_id: string;\n permissions: {\n can_access: IWorksheetPermissionV2;\n can_do: IWorksheetPermissionV2;\n };\n learnosity_activity_ref: string;\n}\n\ntype TWorksheetItems = {\n ref: string;\n};\n\nexport interface IReviewWorksheetModel {\n signed_request: string;\n questions_signed_request: string;\n attempt: IWorksheetAttemptModel;\n worksheet: IWorksheetModel;\n chapter_name?: string;\n node_id?: string;\n sheet_time?: number;\n time_spent?: number;\n is_timed?: boolean;\n attempt_location: TSheetAttemptLocation;\n state?: TSheetStateProps;\n marked_as_completed?: boolean;\n mastery_summary: Record<string, unknown>;\n title?: string;\n worksheet_id?: string;\n node_type: TNodeTypes;\n items?: TWorksheetItems[];\n}\n\nexport interface IPreviewWorksheetModel {\n signed_request: string;\n questions_signed_request: string;\n worksheet_name: string;\n}\n"],"names":["NODE_TYPES"],"mappings":"AA8CY,IAAAA,sBAAAA,OACVA,EAAA,SAAW,UACXA,EAAA,WAAa,YACbA,EAAA,WAAa,YACbA,EAAA,UAAY,WACZA,EAAA,iBAAmB,kBACnBA,EAAA,oBAAsB,qBACtBA,EAAA,sBAAwB,uBACxBA,EAAA,oBAAsB,qBACtBA,EAAA,uBAAyB,wBACzBA,EAAA,yBAA2B,0BAC3BA,EAAA,SAAW,UACXA,EAAA,QAAU,SACVA,EAAA,WAAa,YACbA,EAAA,SAAW,UACXA,EAAA,kBAAoB,mBACpBA,EAAA,WAAa,YACbA,EAAA,iBAAmB,kBACnBA,EAAA,cAAgB,eAChBA,EAAA,gBAAkB,iBAClBA,EAAA,cAAgB,eAChBA,EAAA,qBAAuB,sBACvBA,EAAA,aAAe,cACfA,EAAA,mBAAqB,oBACrBA,EAAA,cAAgB,eAChBA,EAAA,qBAAuB,sBACvBA,EAAA,iBAAmB,kBACnBA,EAAA,UAAY,WACZA,EAAA,cAAgB,eA5BNA,IAAAA,KAAA,CAAA,CAAA;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.5.12",
3
+ "version": "3.5.13",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"