@cuemath/leap 3.5.63 → 3.5.65

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 (43) hide show
  1. package/dist/features/sheets/constants/sheet.js +1 -0
  2. package/dist/features/sheets/constants/sheet.js.map +1 -1
  3. package/dist/features/timeline/daily-timeline/daily-timeline.js +47 -56
  4. package/dist/features/timeline/daily-timeline/daily-timeline.js.map +1 -1
  5. package/dist/features/timeline/monthly-timeline/monthly-report/monthly-report-types.js +1 -1
  6. package/dist/features/timeline/monthly-timeline/monthly-report/monthly-report-types.js.map +1 -1
  7. package/dist/features/timeline/monthly-timeline/monthly-report/monthly-report.js +39 -40
  8. package/dist/features/timeline/monthly-timeline/monthly-report/monthly-report.js.map +1 -1
  9. package/dist/features/timeline/monthly-timeline/monthly-timeline-styled.js +8 -5
  10. package/dist/features/timeline/monthly-timeline/monthly-timeline-styled.js.map +1 -1
  11. package/dist/features/timeline/monthly-timeline/monthly-timeline.js +42 -42
  12. package/dist/features/timeline/monthly-timeline/monthly-timeline.js.map +1 -1
  13. package/dist/features/timeline/monthly-timeline/ptm-report/ptm-report.js +63 -63
  14. package/dist/features/timeline/monthly-timeline/ptm-report/ptm-report.js.map +1 -1
  15. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +51 -32
  16. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  17. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-computed-properties.js +36 -35
  18. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-computed-properties.js.map +1 -1
  19. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-questions-from-items.js +61 -58
  20. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-questions-from-items.js.map +1 -1
  21. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  22. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +32 -30
  23. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  24. package/dist/index.d.ts +5 -3
  25. package/dist/index.js +147 -149
  26. package/dist/index.js.map +1 -1
  27. package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
  28. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
  29. package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
  30. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  31. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
  32. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  33. package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
  34. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  35. package/dist/types/models/worksheet.js +1 -1
  36. package/dist/types/models/worksheet.js.map +1 -1
  37. package/package.json +1 -1
  38. package/dist/features/sheets/utils/is-v3-worksheet.js +0 -55
  39. package/dist/features/sheets/utils/is-v3-worksheet.js.map +0 -1
  40. package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
  41. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
  42. package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
  43. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
@@ -87,6 +87,7 @@ const { TETRA: S, HEXO: I, OCTO: R, DODA: _, CHATVA: N, COSA: C, ASHTA: P, ZODAS
87
87
  MASTERY: "MASTERY",
88
88
  TRIAL_DIAGNOSTIC: "TRIAL_DIAGNOSTIC",
89
89
  PDF: "PDF",
90
+ TRIAL: "TRIAL",
90
91
  TRIAL_BASIC: "TRIAL_BASIC",
91
92
  TRIAL_INTERMEDIATE: "TRIAL_INTERMEDIATE",
92
93
  TRIAL_ADVANCED: "TRIAL_ADVANCED",
@@ -1 +1 @@
1
- {"version":3,"file":"sheet.js","sources":["../../../../src/features/sheets/constants/sheet.ts"],"sourcesContent":["import { REWARD_BADGE } from '../../../constants/reward-badge';\nimport type {\n TSheetAttemptLocation,\n TSheetStateProps,\n} from '../sheets-list/sheet-item/sheet-item-types';\n\nconst { TETRA, HEXO, OCTO, DODA, CHATVA, COSA, ASHTA, ZODASA, DVI, EKA } = REWARD_BADGE;\n\nconst MATH_REWARDS = [TETRA, HEXO, OCTO, DODA, COSA];\n\nconst INSTRUCTION_REWARDS = [EKA, DVI, CHATVA, ASHTA, ZODASA];\n\nconst REWARDS_LIST = [...MATH_REWARDS, ...INSTRUCTION_REWARDS];\n\nconst SHEET_STATE: Record<TSheetStateProps, TSheetStateProps> = {\n NOT_STARTED: 'NOT_STARTED',\n LOCKED: 'LOCKED',\n FAMILIAR: 'FAMILIAR',\n IN_PROGRESS: 'IN_PROGRESS',\n PROFICIENT: 'PROFICIENT',\n MASTERED: 'MASTERED',\n RE_ATTEMPT: 'RE_ATTEMPT',\n COMPLETED: 'COMPLETED',\n WAIT_FOR_REVIEW: 'WAIT_FOR_REVIEW',\n EXPIRED: 'EXPIRED',\n};\n\nconst COMPLETED_SHEET_STATE = [\n SHEET_STATE.FAMILIAR,\n SHEET_STATE.MASTERED,\n SHEET_STATE.PROFICIENT,\n SHEET_STATE.COMPLETED,\n];\n\nconst NODE_LABELS = {\n ASSESSMENT: 'ASSESSMENT',\n CHAPTER_ASSESSMENT: 'ASSESSMENT',\n DIAGNOSTIC: 'READINESS',\n EXTRA_PRACTICE: 'EXTRA PRACTICE',\n LEARNING: 'LEARNING',\n LEVEL2: 'ADVANCED',\n LEVEL3: 'ADVANCED',\n PPT_BASIC: 'PRESENTATION',\n PPT_CONTENT: 'PRESENTATION',\n PPT_VIVA: 'PRESENTATION',\n PRACTICE: 'PRACTICE',\n PUZZLE: 'PUZZLE',\n PYTHON_BASIC: 'CODING ACTIVITY',\n PYTHON_VISUAL: 'CODING ACTIVITY',\n RECAP: 'RECAP',\n REMEDIAL: 'BRUSH UP',\n REVISION: 'REVISION',\n SUBJECTIVE: 'SUBJECTIVE',\n TEST_SERIES: 'TEST SERIES',\n TURING_ASSESSMENT: 'CODING ASSESSMENT',\n TURING_BASIC: 'CODING ACTIVITY',\n TURING_LINK: 'CODING ACTIVITY',\n TURING_PRACTICE: 'CODING PRACTICE',\n TURING_SHARE: 'CODING ACTIVITY',\n TURING_SUBJECTIVE: 'CODING SUBJECTIVE',\n TEST: 'TEST',\n TARGET_PRACTICE: 'TARGET PRACTICE',\n} as const;\n\nconst PYTHON_NODE_TYPES = {\n PPT_BASIC: 'PPT_BASIC',\n PPT_CONTENT: 'PPT_CONTENT',\n PPT_VIVA: 'PPT_VIVA',\n} as const;\n\nconst NODE_TYPE = {\n ASSESSMENT: 'ASSESSMENT',\n CHAPTER_ASSESSMENT: 'CHAPTER_ASSESSMENT',\n DECK: 'DECK',\n DIAGNOSTIC: 'DIAGNOSTIC',\n DYNAMIC: 'DYNAMIC',\n EXTRA_PRACTICE: 'EXTRA_PRACTICE',\n GENERAL: 'GENERAL',\n HIDDEN_BASIC: 'HIDDEN_BASIC',\n LEARNING: 'LEARNING',\n LEGACY: 'LEGACY',\n LEVEL2: 'LEVEL2',\n LEVEL3: 'LEVEL3',\n NOTE: 'NOTE',\n PRACTICE: 'PRACTICE',\n PUZZLE_EASY: 'PUZZLE_EASY',\n PUZZLE_HARD: 'PUZZLE_HARD',\n PUZZLE_MEDIUM: 'PUZZLE_MEDIUM',\n PUZZLE: 'PUZZLE',\n PUZZLE_CARD: 'PUZZLE_CARD',\n PYTHON_BASIC: 'PYTHON_BASIC',\n PYTHON_VISUAL: 'PYTHON_VISUAL',\n RECAP: 'RECAP',\n REMEDIAL: 'REMEDIAL',\n REVISION: 'REVISION',\n SIMULATION: 'SIMULATION',\n SUBJECTIVE: 'SUBJECTIVE',\n TEST_SERIES: 'TEST_SERIES',\n TEST: 'TEST',\n TURING_ASSESSMENT: 'TURING_ASSESSMENT',\n TURING_BASIC: 'TURING_BASIC',\n TURING_LINK: 'TURING_LINK',\n TURING_PRACTICE: 'TURING_PRACTICE',\n TURING_SHARE: 'TURING_SHARE',\n TURING_SUBJECTIVE: 'TURING_SUBJECTIVE',\n VIDEO: 'VIDEO',\n TARGET_PRACTICE: 'TARGET_PRACTICE',\n MASTERY: 'MASTERY',\n TRIAL_DIAGNOSTIC: 'TRIAL_DIAGNOSTIC',\n PDF: 'PDF',\n TRIAL_BASIC: 'TRIAL_BASIC',\n TRIAL_INTERMEDIATE: 'TRIAL_INTERMEDIATE',\n TRIAL_ADVANCED: 'TRIAL_ADVANCED',\n SAT_ENGLISH_ASSESSMENT: 'SAT_ENGLISH_ASSESSMENT',\n SAT_MATH_ASSESSMENT: 'SAT_MATH_ASSESSMENT',\n} as const;\n\nexport const NODE_SUB_GROUP = {\n CORE: 'CORE',\n TESTS: 'TESTS',\n CATCH_UP: 'CATCH_UP',\n STEP_UP: 'STEP_UP',\n PUZZLE: 'PUZZLE',\n PRACTICE: 'PRACTICE',\n} as const;\n\nconst SHEET_ATTEMPT_STATE = {\n COMPLETED: 'COMPLETED',\n IN_PROGRESS: 'IN_PROGRESS',\n IN_REVIEW: 'IN_REVIEW',\n NO_JUSTIFY: 'NO_JUSTIFY',\n REJECTED: 'REJECTED',\n REVIEWED: 'REVIEWED',\n SKIPPED: 'SKIPPED',\n WAIT_FOR_END_REVIEW: 'WAIT_FOR_END_REVIEW',\n WAIT_FOR_REVIEW: 'WAIT_FOR_REVIEW',\n} as const;\n\nconst SHEET_ATTEMPT_LOCATION = {\n INCLASS: 'INCLASS',\n ATHOME: 'ATHOME',\n ANY: 'ANY',\n} as const;\n\nconst SHEET_ACTIONS = {\n START: 'START',\n RESUME: 'RESUME',\n RE_ATTEMPT: 'RE_ATTEMPT',\n} as const;\n\nconst SHEET_ATTEMPT_LOCATION_MAP: Record<TSheetAttemptLocation, string> = {\n [SHEET_ATTEMPT_LOCATION.INCLASS]: 'CW',\n [SHEET_ATTEMPT_LOCATION.ATHOME]: 'HW',\n [SHEET_ATTEMPT_LOCATION.ANY]: 'CW/HW',\n};\n\nconst SHEET_DATA_TYPE = {\n LESSON: 'lesson',\n SUPPLEMENTARY: 'supplementary-sheets-grouped',\n} as const;\n\nconst SAT_NODE_TYPE = {\n SAT_ENGLISH_ASSESSMENT: 'SAT_ENGLISH_ASSESSMENT',\n SAT_MATH_ASSESSMENT: 'SAT_MATH_ASSESSMENT',\n SAT_MATH_RECAP: 'SAT_MATH_RECAP',\n SAT_ENGLISH_RECAP: 'SAT_ENGLISH_RECAP',\n SAT_ENGLISH_LEARNING: 'SAT_ENGLISH_LEARNING',\n SAT_MATH_LEARNING: 'SAT_MATH_LEARNING',\n} as const;\n\nexport {\n COMPLETED_SHEET_STATE,\n NODE_TYPE,\n REWARDS_LIST,\n SHEET_ACTIONS,\n SHEET_ATTEMPT_LOCATION,\n SHEET_ATTEMPT_STATE,\n SHEET_STATE,\n SHEET_ATTEMPT_LOCATION_MAP,\n SHEET_DATA_TYPE,\n NODE_LABELS,\n PYTHON_NODE_TYPES,\n SAT_NODE_TYPE,\n};\n"],"names":["TETRA","HEXO","OCTO","DODA","CHATVA","COSA","ASHTA","ZODASA","DVI","EKA","REWARD_BADGE","MATH_REWARDS","INSTRUCTION_REWARDS","REWARDS_LIST","SHEET_STATE","COMPLETED_SHEET_STATE","NODE_LABELS","PYTHON_NODE_TYPES","NODE_TYPE","NODE_SUB_GROUP","SHEET_ATTEMPT_STATE","SHEET_ATTEMPT_LOCATION","SHEET_ACTIONS","SHEET_ATTEMPT_LOCATION_MAP","SHEET_DATA_TYPE","SAT_NODE_TYPE"],"mappings":"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"}
1
+ {"version":3,"file":"sheet.js","sources":["../../../../src/features/sheets/constants/sheet.ts"],"sourcesContent":["import { REWARD_BADGE } from '../../../constants/reward-badge';\nimport type {\n TSheetAttemptLocation,\n TSheetStateProps,\n} from '../sheets-list/sheet-item/sheet-item-types';\n\nconst { TETRA, HEXO, OCTO, DODA, CHATVA, COSA, ASHTA, ZODASA, DVI, EKA } = REWARD_BADGE;\n\nconst MATH_REWARDS = [TETRA, HEXO, OCTO, DODA, COSA];\n\nconst INSTRUCTION_REWARDS = [EKA, DVI, CHATVA, ASHTA, ZODASA];\n\nconst REWARDS_LIST = [...MATH_REWARDS, ...INSTRUCTION_REWARDS];\n\nconst SHEET_STATE: Record<TSheetStateProps, TSheetStateProps> = {\n NOT_STARTED: 'NOT_STARTED',\n LOCKED: 'LOCKED',\n FAMILIAR: 'FAMILIAR',\n IN_PROGRESS: 'IN_PROGRESS',\n PROFICIENT: 'PROFICIENT',\n MASTERED: 'MASTERED',\n RE_ATTEMPT: 'RE_ATTEMPT',\n COMPLETED: 'COMPLETED',\n WAIT_FOR_REVIEW: 'WAIT_FOR_REVIEW',\n EXPIRED: 'EXPIRED',\n};\n\nconst COMPLETED_SHEET_STATE = [\n SHEET_STATE.FAMILIAR,\n SHEET_STATE.MASTERED,\n SHEET_STATE.PROFICIENT,\n SHEET_STATE.COMPLETED,\n];\n\nconst NODE_LABELS = {\n ASSESSMENT: 'ASSESSMENT',\n CHAPTER_ASSESSMENT: 'ASSESSMENT',\n DIAGNOSTIC: 'READINESS',\n EXTRA_PRACTICE: 'EXTRA PRACTICE',\n LEARNING: 'LEARNING',\n LEVEL2: 'ADVANCED',\n LEVEL3: 'ADVANCED',\n PPT_BASIC: 'PRESENTATION',\n PPT_CONTENT: 'PRESENTATION',\n PPT_VIVA: 'PRESENTATION',\n PRACTICE: 'PRACTICE',\n PUZZLE: 'PUZZLE',\n PYTHON_BASIC: 'CODING ACTIVITY',\n PYTHON_VISUAL: 'CODING ACTIVITY',\n RECAP: 'RECAP',\n REMEDIAL: 'BRUSH UP',\n REVISION: 'REVISION',\n SUBJECTIVE: 'SUBJECTIVE',\n TEST_SERIES: 'TEST SERIES',\n TURING_ASSESSMENT: 'CODING ASSESSMENT',\n TURING_BASIC: 'CODING ACTIVITY',\n TURING_LINK: 'CODING ACTIVITY',\n TURING_PRACTICE: 'CODING PRACTICE',\n TURING_SHARE: 'CODING ACTIVITY',\n TURING_SUBJECTIVE: 'CODING SUBJECTIVE',\n TEST: 'TEST',\n TARGET_PRACTICE: 'TARGET PRACTICE',\n} as const;\n\nconst PYTHON_NODE_TYPES = {\n PPT_BASIC: 'PPT_BASIC',\n PPT_CONTENT: 'PPT_CONTENT',\n PPT_VIVA: 'PPT_VIVA',\n} as const;\n\nconst NODE_TYPE = {\n ASSESSMENT: 'ASSESSMENT',\n CHAPTER_ASSESSMENT: 'CHAPTER_ASSESSMENT',\n DECK: 'DECK',\n DIAGNOSTIC: 'DIAGNOSTIC',\n DYNAMIC: 'DYNAMIC',\n EXTRA_PRACTICE: 'EXTRA_PRACTICE',\n GENERAL: 'GENERAL',\n HIDDEN_BASIC: 'HIDDEN_BASIC',\n LEARNING: 'LEARNING',\n LEGACY: 'LEGACY',\n LEVEL2: 'LEVEL2',\n LEVEL3: 'LEVEL3',\n NOTE: 'NOTE',\n PRACTICE: 'PRACTICE',\n PUZZLE_EASY: 'PUZZLE_EASY',\n PUZZLE_HARD: 'PUZZLE_HARD',\n PUZZLE_MEDIUM: 'PUZZLE_MEDIUM',\n PUZZLE: 'PUZZLE',\n PUZZLE_CARD: 'PUZZLE_CARD',\n PYTHON_BASIC: 'PYTHON_BASIC',\n PYTHON_VISUAL: 'PYTHON_VISUAL',\n RECAP: 'RECAP',\n REMEDIAL: 'REMEDIAL',\n REVISION: 'REVISION',\n SIMULATION: 'SIMULATION',\n SUBJECTIVE: 'SUBJECTIVE',\n TEST_SERIES: 'TEST_SERIES',\n TEST: 'TEST',\n TURING_ASSESSMENT: 'TURING_ASSESSMENT',\n TURING_BASIC: 'TURING_BASIC',\n TURING_LINK: 'TURING_LINK',\n TURING_PRACTICE: 'TURING_PRACTICE',\n TURING_SHARE: 'TURING_SHARE',\n TURING_SUBJECTIVE: 'TURING_SUBJECTIVE',\n VIDEO: 'VIDEO',\n TARGET_PRACTICE: 'TARGET_PRACTICE',\n MASTERY: 'MASTERY',\n TRIAL_DIAGNOSTIC: 'TRIAL_DIAGNOSTIC',\n PDF: 'PDF',\n TRIAL: 'TRIAL',\n TRIAL_BASIC: 'TRIAL_BASIC',\n TRIAL_INTERMEDIATE: 'TRIAL_INTERMEDIATE',\n TRIAL_ADVANCED: 'TRIAL_ADVANCED',\n SAT_ENGLISH_ASSESSMENT: 'SAT_ENGLISH_ASSESSMENT',\n SAT_MATH_ASSESSMENT: 'SAT_MATH_ASSESSMENT',\n} as const;\n\nexport const NODE_SUB_GROUP = {\n CORE: 'CORE',\n TESTS: 'TESTS',\n CATCH_UP: 'CATCH_UP',\n STEP_UP: 'STEP_UP',\n PUZZLE: 'PUZZLE',\n PRACTICE: 'PRACTICE',\n} as const;\n\nconst SHEET_ATTEMPT_STATE = {\n COMPLETED: 'COMPLETED',\n IN_PROGRESS: 'IN_PROGRESS',\n IN_REVIEW: 'IN_REVIEW',\n NO_JUSTIFY: 'NO_JUSTIFY',\n REJECTED: 'REJECTED',\n REVIEWED: 'REVIEWED',\n SKIPPED: 'SKIPPED',\n WAIT_FOR_END_REVIEW: 'WAIT_FOR_END_REVIEW',\n WAIT_FOR_REVIEW: 'WAIT_FOR_REVIEW',\n} as const;\n\nconst SHEET_ATTEMPT_LOCATION = {\n INCLASS: 'INCLASS',\n ATHOME: 'ATHOME',\n ANY: 'ANY',\n} as const;\n\nconst SHEET_ACTIONS = {\n START: 'START',\n RESUME: 'RESUME',\n RE_ATTEMPT: 'RE_ATTEMPT',\n} as const;\n\nconst SHEET_ATTEMPT_LOCATION_MAP: Record<TSheetAttemptLocation, string> = {\n [SHEET_ATTEMPT_LOCATION.INCLASS]: 'CW',\n [SHEET_ATTEMPT_LOCATION.ATHOME]: 'HW',\n [SHEET_ATTEMPT_LOCATION.ANY]: 'CW/HW',\n};\n\nconst SHEET_DATA_TYPE = {\n LESSON: 'lesson',\n SUPPLEMENTARY: 'supplementary-sheets-grouped',\n} as const;\n\nconst SAT_NODE_TYPE = {\n SAT_ENGLISH_ASSESSMENT: 'SAT_ENGLISH_ASSESSMENT',\n SAT_MATH_ASSESSMENT: 'SAT_MATH_ASSESSMENT',\n SAT_MATH_RECAP: 'SAT_MATH_RECAP',\n SAT_ENGLISH_RECAP: 'SAT_ENGLISH_RECAP',\n SAT_ENGLISH_LEARNING: 'SAT_ENGLISH_LEARNING',\n SAT_MATH_LEARNING: 'SAT_MATH_LEARNING',\n} as const;\n\nexport {\n COMPLETED_SHEET_STATE,\n NODE_TYPE,\n REWARDS_LIST,\n SHEET_ACTIONS,\n SHEET_ATTEMPT_LOCATION,\n SHEET_ATTEMPT_STATE,\n SHEET_STATE,\n SHEET_ATTEMPT_LOCATION_MAP,\n SHEET_DATA_TYPE,\n NODE_LABELS,\n PYTHON_NODE_TYPES,\n SAT_NODE_TYPE,\n};\n"],"names":["TETRA","HEXO","OCTO","DODA","CHATVA","COSA","ASHTA","ZODASA","DVI","EKA","REWARD_BADGE","MATH_REWARDS","INSTRUCTION_REWARDS","REWARDS_LIST","SHEET_STATE","COMPLETED_SHEET_STATE","NODE_LABELS","PYTHON_NODE_TYPES","NODE_TYPE","NODE_SUB_GROUP","SHEET_ATTEMPT_STATE","SHEET_ATTEMPT_LOCATION","SHEET_ACTIONS","SHEET_ATTEMPT_LOCATION_MAP","SHEET_DATA_TYPE","SAT_NODE_TYPE"],"mappings":"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"}
@@ -1,100 +1,91 @@
1
- import { jsx as s, jsxs as R } from "react/jsx-runtime";
2
- import { memo as A, useState as M, useCallback as u, useMemo as F, useEffect as m, Fragment as V } from "react";
3
- import { useDailyTimelineGet as Y } from "./api/use-daily-timeline-get.js";
4
- import { ScrollWrapper as j, DailyTimelineContainer as P } from "./daily-timeline-styled.js";
1
+ import { jsx as n, jsxs as A } from "react/jsx-runtime";
2
+ import { memo as Y, useState as C, useCallback as L, useMemo as $, useEffect as m, Fragment as F } from "react";
3
+ import { useDailyTimelineGet as P } from "./api/use-daily-timeline-get.js";
4
+ import { ScrollWrapper as V, DailyTimelineContainer as j } from "./daily-timeline-styled.js";
5
5
  import { USER_TYPE as k, CARD_TYPE as z } from "./daily-timeline-types.js";
6
6
  import { INITIAL_PAGE as G } from "./comps/constants.js";
7
7
  import { getTimezone as O } from "../../../helpers/date-time.js";
8
- import { DAILY_TIMELINE_ANALYTICS_EVENTS as L } from "./daily-timeline-events.js";
8
+ import { DAILY_TIMELINE_ANALYTICS_EVENTS as h } from "./daily-timeline-events.js";
9
9
  import U from "./daily-timeline-view.js";
10
10
  import { useUIContext as W } from "../../ui/context/context.js";
11
11
  import b from "../../hooks/use-previous.js";
12
12
  import X from "../../ui/error/error.js";
13
- import q from "../../ui/layout/flex-view.js";
14
- import B from "../../ui/intersection-loader/intersection-loader.js";
15
- import H from "../../ui/loader/app-loader/app-loader.js";
16
- const N = A(
13
+ import q from "../../ui/intersection-loader/intersection-loader.js";
14
+ import B from "../../ui/loader/app-loader/app-loader.js";
15
+ const N = Y(
17
16
  ({
18
- userType: g,
17
+ userType: _,
19
18
  studentId: i,
20
19
  courseStreams: f,
21
20
  onPuzzleClick: v,
22
21
  onReviewClick: x,
23
- scrollAreaHeight: y,
22
+ scrollAreaHeight: d,
24
23
  onAPIComplete: l
25
24
  }) => {
26
- const [c, _] = M([]), [p, S] = M(!1), { onEvent: t } = W(), {
27
- get: d,
25
+ const [c, g] = C([]), [p, S] = C(!1), { onEvent: s } = W(), {
26
+ get: y,
28
27
  data: e,
29
28
  isProcessingFailed: E,
30
- isProcessing: I,
31
- isProcessed: h
32
- } = Y(i), C = b(e == null ? void 0 : e.curr_page), n = u(
29
+ isProcessing: D,
30
+ isProcessed: T
31
+ } = P(i), M = b(e == null ? void 0 : e.curr_page), a = L(
33
32
  (r = G, o = !1) => {
34
- o && S(!0), d(i, {
33
+ o && S(!0), y(i, {
35
34
  page: r,
36
35
  timezone: O(),
37
- course_stream: g === k.TEACHER ? f : []
36
+ course_stream: _ === k.TEACHER ? f : []
38
37
  });
39
38
  },
40
- [d, i, g, f]
41
- ), $ = F(() => {
39
+ [y, i, _, f]
40
+ ), I = $(() => {
42
41
  const r = /* @__PURE__ */ new Set();
43
- c.forEach((a) => {
44
- a.daily_logs && a.daily_logs.forEach((T) => {
45
- T.course_stream && T.course_stream !== z.CIRCLE && r.add(T.course_stream);
42
+ c.forEach((t) => {
43
+ t.daily_logs && t.daily_logs.forEach((u) => {
44
+ u.course_stream && u.course_stream !== z.CIRCLE && r.add(u.course_stream);
46
45
  });
47
46
  });
48
47
  const o = new Set(
49
- (f || []).filter((a) => String(a) !== z.CIRCLE)
48
+ (f || []).filter((t) => String(t) !== z.CIRCLE)
50
49
  );
51
- 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)));
52
- }, [c, f]), w = u(() => {
53
- e != null && e.next_page && !p && (n(e.next_page, !0), t(L.TIMELINE_SCROLLED, {
50
+ return o.size > 1 || r.size > 1 || o.size > 0 && r.size > 0 && (o.size !== r.size || !Array.from(o).every((t) => r.has(t)));
51
+ }, [c, f]), R = L(() => {
52
+ e != null && e.next_page && !p && (a(e.next_page, !0), s(h.TIMELINE_SCROLLED, {
54
53
  student_id: i
55
54
  }));
56
- }, [e, i, t, p, n]), D = u(() => {
57
- n(1, !1), _([]);
58
- }, [n]);
55
+ }, [e, i, s, p, a]), w = L(() => {
56
+ a(1, !1), g([]);
57
+ }, [a]);
59
58
  return m(() => {
60
- e && (e.curr_page === 1 ? _((e == null ? void 0 : e.user_logs) ?? []) : e.curr_page && C !== e.curr_page && (_((r) => [...r, ...e.user_logs ?? []]), S(!1)));
61
- }, [e, C]), m(() => {
62
- t(L.TIMELINE_VIEWED, {
59
+ e && (e.curr_page === 1 ? g((e == null ? void 0 : e.user_logs) ?? []) : e.curr_page && M !== e.curr_page && (g((r) => [...r, ...e.user_logs ?? []]), S(!1)));
60
+ }, [e, M]), m(() => {
61
+ s(h.TIMELINE_VIEWED, {
63
62
  student_id: i
64
63
  });
65
- }, [i, t]), m(() => () => {
66
- t(L.TIMELINE_CLOSED, {
64
+ }, [i, s]), m(() => () => {
65
+ s(h.TIMELINE_CLOSED, {
67
66
  student_id: i
68
67
  });
69
- }, [i, t]), m(() => {
70
- n(1, !1);
71
- }, [n]), m(() => {
72
- (h || E) && (l == null || l(h && !E));
73
- }, [h, E, l]), E ? /* @__PURE__ */ s(X, { height: y ?? "100vh", onTryAgain: D }) : I && !c.length ? /* @__PURE__ */ s(
74
- q,
75
- {
76
- $alignItems: "center",
77
- $justifyContent: "center",
78
- $height: y || "100vh",
79
- children: /* @__PURE__ */ s(H, { width: "100%", height: "100%" })
80
- }
81
- ) : /* @__PURE__ */ s(j, { $alignItems: "center", $gapX: 1, children: /* @__PURE__ */ R(P, { children: [
82
- c.map((r, o) => /* @__PURE__ */ s(V, { children: /* @__PURE__ */ s(
68
+ }, [i, s]), m(() => {
69
+ a(1, !1);
70
+ }, [a]), m(() => {
71
+ (T || E) && (l == null || l(T && !E));
72
+ }, [T, E, l]), E ? /* @__PURE__ */ n(X, { height: d ?? "100dvh", onTryAgain: w }) : D && !c.length ? /* @__PURE__ */ n(B, { width: "100%", height: d ?? "100dvh" }) : /* @__PURE__ */ n(V, { $alignItems: "center", $gapX: 1, children: /* @__PURE__ */ A(j, { children: [
73
+ c.map((r, o) => /* @__PURE__ */ n(F, { children: /* @__PURE__ */ n(
83
74
  U,
84
75
  {
85
76
  entry: r,
86
77
  isFirstElement: o === 0,
87
- shouldShowTag: $,
78
+ shouldShowTag: I,
88
79
  onPuzzleClick: v,
89
80
  onReviewClick: x,
90
- userType: g,
81
+ userType: _,
91
82
  studentId: i
92
83
  }
93
84
  ) }, `timeline-entry-${o}`)),
94
- /* @__PURE__ */ s(
95
- B,
85
+ /* @__PURE__ */ n(
86
+ q,
96
87
  {
97
- onLoadMore: w,
88
+ onLoadMore: R,
98
89
  isLoading: p,
99
90
  hasMore: !!(e != null && e.next_page)
100
91
  }
@@ -103,8 +94,8 @@ const N = A(
103
94
  }
104
95
  );
105
96
  N.displayName = "DailyTimeline";
106
- const ce = N;
97
+ const fe = N;
107
98
  export {
108
- ce as default
99
+ fe as default
109
100
  };
110
101
  //# sourceMappingURL=daily-timeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"daily-timeline.js","sources":["../../../../src/features/timeline/daily-timeline/daily-timeline.tsx"],"sourcesContent":["import { Fragment, memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\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 { DAILY_TIMELINE_ANALYTICS_EVENTS } from './daily-timeline-events';\nimport DailyTimelineView from './daily-timeline-view';\nimport { useUIContext } from '../../ui/context/context';\nimport usePrevious from '../../hooks/use-previous';\nimport Error from '../../ui/error/error';\nimport FlexView from '../../ui/layout/flex-view';\nimport IntersectionLoader from '../../ui/intersection-loader/intersection-loader';\nimport AppLoader from '../../ui/loader/app-loader/app-loader';\n\nconst DailyTimeline: FC<IDailyTimelineProps> = memo(\n ({\n userType,\n studentId,\n courseStreams,\n onPuzzleClick,\n onReviewClick,\n scrollAreaHeight,\n onAPIComplete,\n }) => {\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 isProcessed,\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 useEffect(() => {\n if (isProcessed || isProcessingFailed) {\n onAPIComplete?.(isProcessed && !isProcessingFailed);\n }\n }, [isProcessed, isProcessingFailed, onAPIComplete]);\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","onAPIComplete","allTimelineData","setAllTimelineData","useState","isLoadingMore","setIsLoadingMore","trackEvent","useUIContext","getTimeline","timelineData","isProcessingFailed","isProcessing","isProcessed","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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"}
1
+ {"version":3,"file":"daily-timeline.js","sources":["../../../../src/features/timeline/daily-timeline/daily-timeline.tsx"],"sourcesContent":["import { Fragment, memo, useCallback, useEffect, useMemo, useState, type FC } from 'react';\n\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 { DAILY_TIMELINE_ANALYTICS_EVENTS } from './daily-timeline-events';\nimport DailyTimelineView from './daily-timeline-view';\nimport { useUIContext } from '../../ui/context/context';\nimport usePrevious from '../../hooks/use-previous';\nimport Error from '../../ui/error/error';\nimport IntersectionLoader from '../../ui/intersection-loader/intersection-loader';\nimport AppLoader from '../../ui/loader/app-loader/app-loader';\n\nconst DailyTimeline: FC<IDailyTimelineProps> = memo(\n ({\n userType,\n studentId,\n courseStreams,\n onPuzzleClick,\n onReviewClick,\n scrollAreaHeight,\n onAPIComplete,\n }) => {\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 isProcessed,\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 useEffect(() => {\n if (isProcessed || isProcessingFailed) {\n onAPIComplete?.(isProcessed && !isProcessingFailed);\n }\n }, [isProcessed, isProcessingFailed, onAPIComplete]);\n\n if (isProcessingFailed) {\n return <Error height={scrollAreaHeight ?? '100dvh'} onTryAgain={onTryAgain} />;\n }\n\n if (isProcessing && !allTimelineData.length) {\n return <AppLoader width=\"100%\" height={scrollAreaHeight ?? '100dvh'} />;\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","onAPIComplete","allTimelineData","setAllTimelineData","useState","isLoadingMore","setIsLoadingMore","trackEvent","useUIContext","getTimeline","timelineData","isProcessingFailed","isProcessing","isProcessed","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","AppLoader","Styled.ScrollWrapper","jsxs","Styled.DailyTimelineContainer","index","Fragment","DailyTimelineView","IntersectionLoader","DailyTimeline$1"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- var e = /* @__PURE__ */ ((t) => (t.general = "general", t.legacy = "legacy", t.diagnostic = "diagnostic", t.remedial = "remedial", t.recap = "recap", t.learn = "learn", t.extra_practice = "extra_practice", t.practice = "practice", t.test = "test", t.revision = "revision", t.advanced = "advanced", t.challenge = "challenge", t.video = "video", t.simulation = "simulation", t.note = "note", t.subjective = "subjective", t.deck = "deck", t.puzzle = "puzzle", t.test_series = "test_series", t.activity = "activity", t.project = "project", t.certificate = "certificate", t.ppt_viva = "ppt_viva", t.ppt_content = "ppt_content", t.wb_activity = "wb_activity", t.smart_practice = "smart_practice", t.exit_ticket = "exit_ticket", t.monthly_mastery_test = "monthly_mastery_test", t.supplementary_mastery_test = "supplementary_mastery_test", t.trial_diagnostic = "trial_diagnostic", t.trial_basic = "trial_basic", t.trial_intermediate = "trial_intermediate", t.trial_advanced = "trial_advanced", t.sat_mock_test = "sat_mock_test", t.pdf = "pdf", t))(e || {});
1
+ var e = /* @__PURE__ */ ((t) => (t.general = "general", t.legacy = "legacy", t.diagnostic = "diagnostic", t.remedial = "remedial", t.recap = "recap", t.learn = "learn", t.extra_practice = "extra_practice", t.practice = "practice", t.test = "test", t.revision = "revision", t.advanced = "advanced", t.challenge = "challenge", t.video = "video", t.simulation = "simulation", t.note = "note", t.subjective = "subjective", t.deck = "deck", t.puzzle = "puzzle", t.test_series = "test_series", t.activity = "activity", t.project = "project", t.certificate = "certificate", t.ppt_viva = "ppt_viva", t.ppt_content = "ppt_content", t.wb_activity = "wb_activity", t.smart_practice = "smart_practice", t.exit_ticket = "exit_ticket", t.monthly_mastery_test = "monthly_mastery_test", t.supplementary_mastery_test = "supplementary_mastery_test", t.trial_diagnostic = "trial_diagnostic", t.trial = "trial", t.trial_basic = "trial_basic", t.trial_intermediate = "trial_intermediate", t.trial_advanced = "trial_advanced", t.sat_mock_test = "sat_mock_test", t.pdf = "pdf", t))(e || {});
2
2
  export {
3
3
  e as CARD_TYPE
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"monthly-report-types.js","sources":["../../../../../src/features/timeline/monthly-timeline/monthly-report/monthly-report-types.ts"],"sourcesContent":["import { type NODE_TYPES } from '../../../../types/models/worksheet';\nimport { type TCourseStream } from '../../../milestone/create/milestone-create-types';\nimport { type THueNames } from '../../../ui/types';\nimport { type NODE_STATE } from '../../daily-timeline/daily-timeline-types';\nimport { type IUserMilestone } from '../monthly-timeline-types';\n\nexport enum CARD_TYPE {\n 'general' = 'general',\n 'legacy' = 'legacy',\n 'diagnostic' = 'diagnostic',\n 'remedial' = 'remedial',\n 'recap' = 'recap',\n 'learn' = 'learn',\n 'extra_practice' = 'extra_practice',\n 'practice' = 'practice',\n 'test' = 'test',\n 'revision' = 'revision',\n 'advanced' = 'advanced',\n 'challenge' = 'challenge',\n 'video' = 'video',\n 'simulation' = 'simulation',\n 'note' = 'note',\n 'subjective' = 'subjective',\n 'deck' = 'deck',\n 'puzzle' = 'puzzle',\n 'test_series' = 'test_series',\n 'activity' = 'activity',\n 'project' = 'project',\n 'certificate' = 'certificate',\n 'ppt_viva' = 'ppt_viva',\n 'ppt_content' = 'ppt_content',\n 'wb_activity' = 'wb_activity',\n 'smart_practice' = 'smart_practice',\n 'exit_ticket' = 'exit_ticket',\n 'monthly_mastery_test' = 'monthly_mastery_test',\n 'supplementary_mastery_test' = 'supplementary_mastery_test',\n 'trial_diagnostic' = 'trial_diagnostic',\n 'trial_basic' = 'trial_basic',\n 'trial_intermediate' = 'trial_intermediate',\n 'trial_advanced' = 'trial_advanced',\n 'sat_mock_test' = 'sat_mock_test',\n 'pdf' = 'pdf',\n}\n\nexport type ActivitiesByCardType = Partial<{\n [K in CARD_TYPE]: IMonthlyActivity[];\n}>;\n\nexport type TFeedback = 'positive' | 'negative';\n\nexport interface IMonthlyReportResponse {\n course_stream: TCourseStream;\n id: string;\n created_on_ts: number;\n is_deleted: boolean;\n report_date: string;\n report_date_ts: number;\n report_month: number;\n report_year: number;\n student_course_ids: string[];\n user_id: string;\n updated_on_ts: number;\n calendar_data: TCalendarData | null;\n progress_data: {\n user_milestones: IUserMilestone[];\n activities: ActivitiesByCardType;\n user_achievements: IAchievementAsset[];\n };\n feedback: TFeedback | null;\n}\n\nexport interface IProgressStat {\n completed: number;\n total: number;\n}\n\nexport interface IMonthlyActivity {\n id: string;\n node_type: NODE_TYPES;\n card_type: CARD_TYPE;\n card_header: CARD_TYPE | null;\n feedback_comments: string | null;\n state: NODE_STATE;\n title?: string;\n accuracy?: number | null;\n subtext?: string | null;\n is_timed?: boolean;\n image_hue?: THueNames;\n image_url?: string;\n sat_max_score?: number | null;\n sat_total_score?: number | null;\n item_ref?: string | null;\n thumbnail_url?: string;\n user_attempt_id?: string | null;\n tip: string | null;\n user_block_id: string | null;\n user_chapter_id: string | null;\n user_node_id: string | null;\n}\n\nexport interface IAchievementAsset {\n asset_id: string;\n url: string;\n}\n\nexport interface IMonthlyReportProps {\n reportId: string;\n studentName: string;\n onPuzzleClick?: (params: {\n item_ref: IMonthlyActivity['item_ref'];\n feedback_comments: IMonthlyActivity['feedback_comments'];\n image_hue: IMonthlyActivity['image_hue'];\n title: IMonthlyActivity['title'];\n tip: IMonthlyActivity['tip'];\n }) => void;\n showSnackbar?: (params: { type: 'error' | 'info'; message: string; bgColor: string }) => void;\n onFeedback?: (feedback: TFeedback, studentCourseId: string) => void;\n onAPIComplete?: (success: boolean) => void;\n}\n\nexport type TClassType = 'REGULAR' | 'EXTRA';\nexport interface IClassEvent {\n class_type: TClassType;\n is_paused: boolean;\n is_present: boolean;\n status: string;\n tag: string | null;\n theme: string;\n time: number;\n}\n\nexport type TCalendarData = Record<string, IClassEvent[]>;\n"],"names":["CARD_TYPE"],"mappings":"AAMY,IAAAA,sBAAAA,OACVA,EAAA,UAAY,WACZA,EAAA,SAAW,UACXA,EAAA,aAAe,cACfA,EAAA,WAAa,YACbA,EAAA,QAAU,SACVA,EAAA,QAAU,SACVA,EAAA,iBAAmB,kBACnBA,EAAA,WAAa,YACbA,EAAA,OAAS,QACTA,EAAA,WAAa,YACbA,EAAA,WAAa,YACbA,EAAA,YAAc,aACdA,EAAA,QAAU,SACVA,EAAA,aAAe,cACfA,EAAA,OAAS,QACTA,EAAA,aAAe,cACfA,EAAA,OAAS,QACTA,EAAA,SAAW,UACXA,EAAA,cAAgB,eAChBA,EAAA,WAAa,YACbA,EAAA,UAAY,WACZA,EAAA,cAAgB,eAChBA,EAAA,WAAa,YACbA,EAAA,cAAgB,eAChBA,EAAA,cAAgB,eAChBA,EAAA,iBAAmB,kBACnBA,EAAA,cAAgB,eAChBA,EAAA,uBAAyB,wBACzBA,EAAA,6BAA+B,8BAC/BA,EAAA,mBAAqB,oBACrBA,EAAA,cAAgB,eAChBA,EAAA,qBAAuB,sBACvBA,EAAA,iBAAmB,kBACnBA,EAAA,gBAAkB,iBAClBA,EAAA,MAAQ,OAnCEA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"monthly-report-types.js","sources":["../../../../../src/features/timeline/monthly-timeline/monthly-report/monthly-report-types.ts"],"sourcesContent":["import { type NODE_TYPES } from '../../../../types/models/worksheet';\nimport { type TCourseStream } from '../../../milestone/create/milestone-create-types';\nimport { type THueNames } from '../../../ui/types';\nimport { type NODE_STATE } from '../../daily-timeline/daily-timeline-types';\nimport { type IUserMilestone } from '../monthly-timeline-types';\n\nexport enum CARD_TYPE {\n 'general' = 'general',\n 'legacy' = 'legacy',\n 'diagnostic' = 'diagnostic',\n 'remedial' = 'remedial',\n 'recap' = 'recap',\n 'learn' = 'learn',\n 'extra_practice' = 'extra_practice',\n 'practice' = 'practice',\n 'test' = 'test',\n 'revision' = 'revision',\n 'advanced' = 'advanced',\n 'challenge' = 'challenge',\n 'video' = 'video',\n 'simulation' = 'simulation',\n 'note' = 'note',\n 'subjective' = 'subjective',\n 'deck' = 'deck',\n 'puzzle' = 'puzzle',\n 'test_series' = 'test_series',\n 'activity' = 'activity',\n 'project' = 'project',\n 'certificate' = 'certificate',\n 'ppt_viva' = 'ppt_viva',\n 'ppt_content' = 'ppt_content',\n 'wb_activity' = 'wb_activity',\n 'smart_practice' = 'smart_practice',\n 'exit_ticket' = 'exit_ticket',\n 'monthly_mastery_test' = 'monthly_mastery_test',\n 'supplementary_mastery_test' = 'supplementary_mastery_test',\n 'trial_diagnostic' = 'trial_diagnostic',\n 'trial' = 'trial',\n 'trial_basic' = 'trial_basic',\n 'trial_intermediate' = 'trial_intermediate',\n 'trial_advanced' = 'trial_advanced',\n 'sat_mock_test' = 'sat_mock_test',\n 'pdf' = 'pdf',\n}\n\nexport type ActivitiesByCardType = Partial<{\n [K in CARD_TYPE]: IMonthlyActivity[];\n}>;\n\nexport type TFeedback = 'positive' | 'negative';\n\nexport interface IMonthlyReportResponse {\n course_stream: TCourseStream;\n id: string;\n created_on_ts: number;\n is_deleted: boolean;\n report_date: string;\n report_date_ts: number;\n report_month: number;\n report_year: number;\n student_course_ids: string[];\n user_id: string;\n updated_on_ts: number;\n calendar_data: TCalendarData | null;\n progress_data: {\n user_milestones: IUserMilestone[];\n activities: ActivitiesByCardType;\n user_achievements: IAchievementAsset[];\n };\n feedback: TFeedback | null;\n}\n\nexport interface IProgressStat {\n completed: number;\n total: number;\n}\n\nexport interface IMonthlyActivity {\n id: string;\n node_type: NODE_TYPES;\n card_type: CARD_TYPE;\n card_header: CARD_TYPE | null;\n feedback_comments: string | null;\n state: NODE_STATE;\n title?: string;\n accuracy?: number | null;\n subtext?: string | null;\n is_timed?: boolean;\n image_hue?: THueNames;\n image_url?: string;\n sat_max_score?: number | null;\n sat_total_score?: number | null;\n item_ref?: string | null;\n thumbnail_url?: string;\n user_attempt_id?: string | null;\n tip: string | null;\n user_block_id: string | null;\n user_chapter_id: string | null;\n user_node_id: string | null;\n}\n\nexport interface IAchievementAsset {\n asset_id: string;\n url: string;\n}\n\nexport interface IMonthlyReportProps {\n reportId: string;\n studentName: string;\n onPuzzleClick?: (params: {\n item_ref: IMonthlyActivity['item_ref'];\n feedback_comments: IMonthlyActivity['feedback_comments'];\n image_hue: IMonthlyActivity['image_hue'];\n title: IMonthlyActivity['title'];\n tip: IMonthlyActivity['tip'];\n }) => void;\n showSnackbar?: (params: { type: 'error' | 'info'; message: string; bgColor: string }) => void;\n onFeedback?: (feedback: TFeedback, studentCourseId: string) => void;\n onAPIComplete?: (success: boolean) => void;\n}\n\nexport type TClassType = 'REGULAR' | 'EXTRA';\nexport interface IClassEvent {\n class_type: TClassType;\n is_paused: boolean;\n is_present: boolean;\n status: string;\n tag: string | null;\n theme: string;\n time: number;\n}\n\nexport type TCalendarData = Record<string, IClassEvent[]>;\n"],"names":["CARD_TYPE"],"mappings":"AAMY,IAAAA,sBAAAA,OACVA,EAAA,UAAY,WACZA,EAAA,SAAW,UACXA,EAAA,aAAe,cACfA,EAAA,WAAa,YACbA,EAAA,QAAU,SACVA,EAAA,QAAU,SACVA,EAAA,iBAAmB,kBACnBA,EAAA,WAAa,YACbA,EAAA,OAAS,QACTA,EAAA,WAAa,YACbA,EAAA,WAAa,YACbA,EAAA,YAAc,aACdA,EAAA,QAAU,SACVA,EAAA,aAAe,cACfA,EAAA,OAAS,QACTA,EAAA,aAAe,cACfA,EAAA,OAAS,QACTA,EAAA,SAAW,UACXA,EAAA,cAAgB,eAChBA,EAAA,WAAa,YACbA,EAAA,UAAY,WACZA,EAAA,cAAgB,eAChBA,EAAA,WAAa,YACbA,EAAA,cAAgB,eAChBA,EAAA,cAAgB,eAChBA,EAAA,iBAAmB,kBACnBA,EAAA,cAAgB,eAChBA,EAAA,uBAAyB,wBACzBA,EAAA,6BAA+B,8BAC/BA,EAAA,mBAAqB,oBACrBA,EAAA,QAAU,SACVA,EAAA,cAAgB,eAChBA,EAAA,qBAAuB,sBACvBA,EAAA,iBAAmB,kBACnBA,EAAA,gBAAkB,iBAClBA,EAAA,MAAQ,OApCEA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -1,23 +1,22 @@
1
- import { jsx as t, jsxs as S } from "react/jsx-runtime";
2
- import { memo as b, useCallback as N, useEffect as f } from "react";
1
+ import { jsx as t, jsxs as j } from "react/jsx-runtime";
2
+ import { memo as x, useCallback as N, useEffect as l } from "react";
3
3
  import { monthlyReportGet as Y } from "./api/use-monthly-report-api.js";
4
- import w from "../../../ui/loader/app-loader/app-loader.js";
5
- import C from "../../../ui/error/error.js";
6
- import { MonthlyReportContainer as E } from "./monthly-report-styled.js";
7
- import G from "./comps/goals/goals.js";
8
- import A from "./comps/activities/activities.js";
9
- import F from "../../../ui/layout/flex-view.js";
4
+ import E from "../../../ui/loader/app-loader/app-loader.js";
5
+ import G from "../../../ui/error/error.js";
6
+ import { MonthlyReportContainer as w } from "./monthly-report-styled.js";
7
+ import A from "./comps/goals/goals.js";
8
+ import C from "./comps/activities/activities.js";
10
9
  import T from "./comps/attendance/attendance.js";
11
10
  import U from "./comps/feedback/feedback.js";
12
- import V from "./comps/achievements/achievements.js";
13
- import { IS_APP_RUNNING_IN_RN as X } from "../../../../constants/app-config.js";
14
- import q from "../../../ui/separator/separator.js";
15
- const z = ({
11
+ import X from "./comps/achievements/achievements.js";
12
+ import { IS_APP_RUNNING_IN_RN as q } from "../../../../constants/app-config.js";
13
+ import z from "../../../ui/separator/separator.js";
14
+ const B = ({
16
15
  studentName: p,
17
16
  reportId: r,
18
- onPuzzleClick: R,
17
+ onPuzzleClick: F,
19
18
  showSnackbar: u,
20
- onFeedback: j,
19
+ onFeedback: k,
21
20
  onAPIComplete: o
22
21
  }) => {
23
22
  const {
@@ -28,56 +27,56 @@ const z = ({
28
27
  isStale: M,
29
28
  isProcessed: n
30
29
  } = Y(r), {
31
- progress_data: $,
32
- calendar_data: y,
30
+ progress_data: L,
31
+ calendar_data: D,
33
32
  report_month: i,
34
33
  report_year: c,
35
- feedback: k,
36
- student_course_ids: m
34
+ feedback: S,
35
+ student_course_ids: h
37
36
  } = _ || {}, {
38
- user_milestones: D,
39
- activities: v,
40
- user_achievements: x
41
- } = $ || {}, e = N(() => {
37
+ user_milestones: v,
38
+ activities: y,
39
+ user_achievements: R
40
+ } = L || {}, e = N(() => {
42
41
  g(r);
43
42
  }, [g, r]);
44
- if (f(() => {
43
+ if (l(() => {
45
44
  e();
46
- }, [e]), f(() => {
45
+ }, [e]), l(() => {
47
46
  M && !a && e();
48
- }, [M, a, e]), f(() => {
47
+ }, [M, a, e]), l(() => {
49
48
  (n || s) && (o == null || o(n && !s));
50
49
  }, [n, s, o]), a && !_)
51
- return /* @__PURE__ */ t(F, { $flex: 1, $alignItems: "center", $justifyContent: "center", children: /* @__PURE__ */ t(w, { height: "100dvh" }) });
50
+ return /* @__PURE__ */ t(E, { height: "100dvh" });
52
51
  if (s)
53
- return /* @__PURE__ */ t(F, { $flex: 1, $alignItems: "center", $justifyContent: "center", children: /* @__PURE__ */ t(C, { onTryAgain: e }) });
54
- const h = m == null ? void 0 : m[0], l = /* @__PURE__ */ new Date(), d = l.getMonth(), L = d === 0 ? l.getFullYear() - 1 : l.getFullYear();
55
- return /* @__PURE__ */ S(E, { children: [
56
- D && /* @__PURE__ */ t(G, { milestones: D, isExpended: !0 }),
57
- v && /* @__PURE__ */ t(A, { activities: v, onPuzzleClick: R }),
58
- x && /* @__PURE__ */ t(V, { achievements: x, studentName: p }),
59
- y && i && c && /* @__PURE__ */ t(
52
+ return /* @__PURE__ */ t(G, { height: "100dvh", onTryAgain: e });
53
+ const m = h == null ? void 0 : h[0], d = /* @__PURE__ */ new Date(), f = d.getMonth(), b = f === 0 ? d.getFullYear() - 1 : d.getFullYear();
54
+ return /* @__PURE__ */ j(w, { children: [
55
+ v && /* @__PURE__ */ t(A, { milestones: v, isExpended: !0 }),
56
+ y && /* @__PURE__ */ t(C, { activities: y, onPuzzleClick: F }),
57
+ R && /* @__PURE__ */ t(X, { achievements: R, studentName: p }),
58
+ D && i && c && /* @__PURE__ */ t(
60
59
  T,
61
60
  {
62
- calendarData: y,
61
+ calendarData: D,
63
62
  reportMonth: i,
64
63
  reportYear: c,
65
64
  onDateClick: u
66
65
  }
67
66
  ),
68
- X && !k && h && (i === (d === 0 ? 12 : d) && c === L) && h ? /* @__PURE__ */ t(
67
+ q && !S && m && (i === (f === 0 ? 12 : f) && c === b) && m ? /* @__PURE__ */ t(
69
68
  U,
70
69
  {
71
70
  reportId: r,
72
71
  studentName: p,
73
- onFeedback: j,
74
- studentCourseId: h,
72
+ onFeedback: k,
73
+ studentCourseId: m,
75
74
  showSnackbar: u
76
75
  }
77
- ) : /* @__PURE__ */ t(q, { heightX: 1 })
76
+ ) : /* @__PURE__ */ t(z, { heightX: 1 })
78
77
  ] });
79
- }, ct = b(z);
78
+ }, nt = x(B);
80
79
  export {
81
- ct as default
80
+ nt as default
82
81
  };
83
82
  //# sourceMappingURL=monthly-report.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"monthly-report.js","sources":["../../../../../src/features/timeline/monthly-timeline/monthly-report/monthly-report.tsx"],"sourcesContent":["import { type FC, memo, useCallback, useEffect } from 'react';\n\nimport { type IMonthlyReportProps } from './monthly-report-types';\nimport { monthlyReportGet } from './api/use-monthly-report-api';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Error from '../../../ui/error/error';\nimport * as Styled from './monthly-report-styled';\nimport Goals from './comps/goals/goals';\nimport Activities from './comps/activities/activities';\nimport FlexView from '../../../ui/layout/flex-view';\nimport Attendance from './comps/attendance/attendance';\nimport Feedback from './comps/feedback/feedback';\nimport Achievements from './comps/achievements/achievements';\nimport { IS_APP_RUNNING_IN_RN } from '../../../../constants/app-config';\nimport Separator from '../../../ui/separator/separator';\n\nconst MonthlyReport: FC<IMonthlyReportProps> = ({\n studentName,\n reportId,\n onPuzzleClick,\n showSnackbar,\n onFeedback,\n onAPIComplete,\n}) => {\n const {\n get: getReport,\n data: reportData,\n isProcessing,\n isProcessingFailed,\n isStale,\n isProcessed,\n } = monthlyReportGet(reportId);\n\n const {\n progress_data: progressData,\n calendar_data: calendarData,\n report_month: month,\n report_year: year,\n feedback,\n student_course_ids: studentCourseIds,\n } = reportData || {};\n\n const {\n user_milestones: userMilestones,\n activities,\n user_achievements: userAchievements,\n } = progressData || {};\n\n const fetchData = useCallback(() => {\n getReport(reportId);\n }, [getReport, reportId]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n useEffect(() => {\n if (isStale && !isProcessing) {\n fetchData();\n }\n }, [isStale, isProcessing, fetchData]);\n\n useEffect(() => {\n if (isProcessed || isProcessingFailed) {\n onAPIComplete?.(isProcessed && !isProcessingFailed);\n }\n }, [isProcessed, isProcessingFailed, onAPIComplete]);\n\n if (isProcessing && !reportData) {\n return (\n <FlexView $flex={1} $alignItems=\"center\" $justifyContent=\"center\">\n <AppLoader height=\"100dvh\" />\n </FlexView>\n );\n }\n\n if (isProcessingFailed) {\n return (\n <FlexView $flex={1} $alignItems=\"center\" $justifyContent=\"center\">\n <Error onTryAgain={fetchData} />\n </FlexView>\n );\n }\n\n const firstStudentCourseId = studentCourseIds?.[0];\n\n // Check if the report is for the last month (previous month)\n const currentDate = new Date();\n const lastMonth = currentDate.getMonth(); // Current month - 1 (getMonth() returns 0-11)\n const lastMonthYear = lastMonth === 0 ? currentDate.getFullYear() - 1 : currentDate.getFullYear();\n const adjustedLastMonth = lastMonth === 0 ? 12 : lastMonth; // Handle January edge case\n const isLastMonth = month === adjustedLastMonth && year === lastMonthYear;\n\n const shouldShowFeedback =\n IS_APP_RUNNING_IN_RN && !feedback && firstStudentCourseId && isLastMonth;\n const hasCalendarData = calendarData && month && year;\n\n return (\n <Styled.MonthlyReportContainer>\n {userMilestones && <Goals milestones={userMilestones} isExpended={true} />}\n\n {activities && <Activities activities={activities} onPuzzleClick={onPuzzleClick} />}\n\n {userAchievements && (\n <Achievements achievements={userAchievements} studentName={studentName} />\n )}\n\n {hasCalendarData && (\n <Attendance\n calendarData={calendarData}\n reportMonth={month}\n reportYear={year}\n onDateClick={showSnackbar}\n />\n )}\n\n {shouldShowFeedback && firstStudentCourseId ? (\n <Feedback\n reportId={reportId}\n studentName={studentName}\n onFeedback={onFeedback}\n studentCourseId={firstStudentCourseId}\n showSnackbar={showSnackbar}\n />\n ) : (\n <Separator heightX={1} />\n )}\n </Styled.MonthlyReportContainer>\n );\n};\n\nexport default memo(MonthlyReport);\n"],"names":["MonthlyReport","studentName","reportId","onPuzzleClick","showSnackbar","onFeedback","onAPIComplete","getReport","reportData","isProcessing","isProcessingFailed","isStale","isProcessed","monthlyReportGet","progressData","calendarData","month","year","feedback","studentCourseIds","userMilestones","activities","userAchievements","fetchData","useCallback","useEffect","jsx","FlexView","AppLoader","Error","firstStudentCourseId","currentDate","lastMonth","lastMonthYear","jsxs","Styled.MonthlyReportContainer","Goals","Activities","Achievements","Attendance","IS_APP_RUNNING_IN_RN","Feedback","Separator","monthlyReport","memo"],"mappings":";;;;;;;;;;;;;;AAgBA,MAAMA,IAAyC,CAAC;AAAA,EAC9C,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AACF,MAAM;AACE,QAAA;AAAA,IACJ,KAAKC;AAAA,IACL,MAAMC;AAAA,IACN,cAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,EAAA,IACEC,EAAiBX,CAAQ,GAEvB;AAAA,IACJ,eAAeY;AAAA,IACf,eAAeC;AAAA,IACf,cAAcC;AAAA,IACd,aAAaC;AAAA,IACb,UAAAC;AAAA,IACA,oBAAoBC;AAAA,EAAA,IAClBX,KAAc,CAAA,GAEZ;AAAA,IACJ,iBAAiBY;AAAA,IACjB,YAAAC;AAAA,IACA,mBAAmBC;AAAA,EAAA,IACjBR,KAAgB,CAAA,GAEdS,IAAYC,EAAY,MAAM;AAClC,IAAAjB,EAAUL,CAAQ;AAAA,EAAA,GACjB,CAACK,GAAWL,CAAQ,CAAC;AAkBpB,MAhBJuB,EAAU,MAAM;AACJ,IAAAF;EAAA,GACT,CAACA,CAAS,CAAC,GAEdE,EAAU,MAAM;AACV,IAAAd,KAAW,CAACF,KACJc;EAEX,GAAA,CAACZ,GAASF,GAAcc,CAAS,CAAC,GAErCE,EAAU,MAAM;AACd,KAAIb,KAAeF,OACDJ,KAAA,QAAAA,EAAAM,KAAe,CAACF;AAAA,EAEjC,GAAA,CAACE,GAAaF,GAAoBJ,CAAa,CAAC,GAE/CG,KAAgB,CAACD;AACnB,WACG,gBAAAkB,EAAAC,GAAA,EAAS,OAAO,GAAG,aAAY,UAAS,iBAAgB,UACvD,UAAC,gBAAAD,EAAAE,GAAA,EAAU,QAAO,SAAA,CAAS,EAC7B,CAAA;AAIJ,MAAIlB;AACF,WACG,gBAAAgB,EAAAC,GAAA,EAAS,OAAO,GAAG,aAAY,UAAS,iBAAgB,UACvD,UAAC,gBAAAD,EAAAG,GAAA,EAAM,YAAYN,EAAA,CAAW,EAChC,CAAA;AAIE,QAAAO,IAAuBX,KAAA,gBAAAA,EAAmB,IAG1CY,wBAAkB,QAClBC,IAAYD,EAAY,YACxBE,IAAgBD,MAAc,IAAID,EAAY,gBAAgB,IAAIA,EAAY;AASlF,SAAA,gBAAAG,EAACC,GAAA,EACE,UAAA;AAAA,IAAAf,KAAmB,gBAAAM,EAAAU,GAAA,EAAM,YAAYhB,GAAgB,YAAY,IAAM;AAAA,IAEvEC,KAAc,gBAAAK,EAACW,GAAW,EAAA,YAAAhB,GAAwB,eAAAlB,EAA8B,CAAA;AAAA,IAEhFmB,KACC,gBAAAI,EAACY,GAAa,EAAA,cAAchB,GAAkB,aAAArB,GAA0B;AAAA,IATtDc,KAAgBC,KAASC,KAa3C,gBAAAS;AAAA,MAACa;AAAA,MAAA;AAAA,QACC,cAAAxB;AAAA,QACA,aAAaC;AAAA,QACb,YAAYC;AAAA,QACZ,aAAab;AAAA,MAAA;AAAA,IACf;AAAA,IAnBJoC,KAAwB,CAACtB,KAAYY,MAHnBd,OADMgB,MAAc,IAAI,KAAKA,MACEf,MAASgB,MAyBjCH,IACrB,gBAAAJ;AAAA,MAACe;AAAA,MAAA;AAAA,QACC,UAAAvC;AAAA,QACA,aAAAD;AAAA,QACA,YAAAI;AAAA,QACA,iBAAiByB;AAAA,QACjB,cAAA1B;AAAA,MAAA;AAAA,IAGF,IAAA,gBAAAsB,EAACgB,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,EAE3B,EAAA,CAAA;AAEJ,GAEeC,KAAAC,EAAK5C,CAAa;"}
1
+ {"version":3,"file":"monthly-report.js","sources":["../../../../../src/features/timeline/monthly-timeline/monthly-report/monthly-report.tsx"],"sourcesContent":["import { type FC, memo, useCallback, useEffect } from 'react';\n\nimport { type IMonthlyReportProps } from './monthly-report-types';\nimport { monthlyReportGet } from './api/use-monthly-report-api';\nimport AppLoader from '../../../ui/loader/app-loader/app-loader';\nimport Error from '../../../ui/error/error';\nimport * as Styled from './monthly-report-styled';\nimport Goals from './comps/goals/goals';\nimport Activities from './comps/activities/activities';\nimport Attendance from './comps/attendance/attendance';\nimport Feedback from './comps/feedback/feedback';\nimport Achievements from './comps/achievements/achievements';\nimport { IS_APP_RUNNING_IN_RN } from '../../../../constants/app-config';\nimport Separator from '../../../ui/separator/separator';\n\nconst MonthlyReport: FC<IMonthlyReportProps> = ({\n studentName,\n reportId,\n onPuzzleClick,\n showSnackbar,\n onFeedback,\n onAPIComplete,\n}) => {\n const {\n get: getReport,\n data: reportData,\n isProcessing,\n isProcessingFailed,\n isStale,\n isProcessed,\n } = monthlyReportGet(reportId);\n\n const {\n progress_data: progressData,\n calendar_data: calendarData,\n report_month: month,\n report_year: year,\n feedback,\n student_course_ids: studentCourseIds,\n } = reportData || {};\n\n const {\n user_milestones: userMilestones,\n activities,\n user_achievements: userAchievements,\n } = progressData || {};\n\n const fetchData = useCallback(() => {\n getReport(reportId);\n }, [getReport, reportId]);\n\n useEffect(() => {\n fetchData();\n }, [fetchData]);\n\n useEffect(() => {\n if (isStale && !isProcessing) {\n fetchData();\n }\n }, [isStale, isProcessing, fetchData]);\n\n useEffect(() => {\n if (isProcessed || isProcessingFailed) {\n onAPIComplete?.(isProcessed && !isProcessingFailed);\n }\n }, [isProcessed, isProcessingFailed, onAPIComplete]);\n\n if (isProcessing && !reportData) {\n return <AppLoader height=\"100dvh\" />;\n }\n\n if (isProcessingFailed) {\n return <Error height=\"100dvh\" onTryAgain={fetchData} />;\n }\n\n const firstStudentCourseId = studentCourseIds?.[0];\n\n // Check if the report is for the last month (previous month)\n const currentDate = new Date();\n const lastMonth = currentDate.getMonth(); // Current month - 1 (getMonth() returns 0-11)\n const lastMonthYear = lastMonth === 0 ? currentDate.getFullYear() - 1 : currentDate.getFullYear();\n const adjustedLastMonth = lastMonth === 0 ? 12 : lastMonth; // Handle January edge case\n const isLastMonth = month === adjustedLastMonth && year === lastMonthYear;\n\n const shouldShowFeedback =\n IS_APP_RUNNING_IN_RN && !feedback && firstStudentCourseId && isLastMonth;\n const hasCalendarData = calendarData && month && year;\n\n return (\n <Styled.MonthlyReportContainer>\n {userMilestones && <Goals milestones={userMilestones} isExpended={true} />}\n\n {activities && <Activities activities={activities} onPuzzleClick={onPuzzleClick} />}\n\n {userAchievements && (\n <Achievements achievements={userAchievements} studentName={studentName} />\n )}\n\n {hasCalendarData && (\n <Attendance\n calendarData={calendarData}\n reportMonth={month}\n reportYear={year}\n onDateClick={showSnackbar}\n />\n )}\n\n {shouldShowFeedback && firstStudentCourseId ? (\n <Feedback\n reportId={reportId}\n studentName={studentName}\n onFeedback={onFeedback}\n studentCourseId={firstStudentCourseId}\n showSnackbar={showSnackbar}\n />\n ) : (\n <Separator heightX={1} />\n )}\n </Styled.MonthlyReportContainer>\n );\n};\n\nexport default memo(MonthlyReport);\n"],"names":["MonthlyReport","studentName","reportId","onPuzzleClick","showSnackbar","onFeedback","onAPIComplete","getReport","reportData","isProcessing","isProcessingFailed","isStale","isProcessed","monthlyReportGet","progressData","calendarData","month","year","feedback","studentCourseIds","userMilestones","activities","userAchievements","fetchData","useCallback","useEffect","jsx","AppLoader","Error","firstStudentCourseId","currentDate","lastMonth","lastMonthYear","jsxs","Styled.MonthlyReportContainer","Goals","Activities","Achievements","Attendance","IS_APP_RUNNING_IN_RN","Feedback","Separator","monthlyReport","memo"],"mappings":";;;;;;;;;;;;;AAeA,MAAMA,IAAyC,CAAC;AAAA,EAC9C,aAAAC;AAAA,EACA,UAAAC;AAAA,EACA,eAAAC;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AAAA,EACA,eAAAC;AACF,MAAM;AACE,QAAA;AAAA,IACJ,KAAKC;AAAA,IACL,MAAMC;AAAA,IACN,cAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,SAAAC;AAAA,IACA,aAAAC;AAAA,EAAA,IACEC,EAAiBX,CAAQ,GAEvB;AAAA,IACJ,eAAeY;AAAA,IACf,eAAeC;AAAA,IACf,cAAcC;AAAA,IACd,aAAaC;AAAA,IACb,UAAAC;AAAA,IACA,oBAAoBC;AAAA,EAAA,IAClBX,KAAc,CAAA,GAEZ;AAAA,IACJ,iBAAiBY;AAAA,IACjB,YAAAC;AAAA,IACA,mBAAmBC;AAAA,EAAA,IACjBR,KAAgB,CAAA,GAEdS,IAAYC,EAAY,MAAM;AAClC,IAAAjB,EAAUL,CAAQ;AAAA,EAAA,GACjB,CAACK,GAAWL,CAAQ,CAAC;AAkBpB,MAhBJuB,EAAU,MAAM;AACJ,IAAAF;EAAA,GACT,CAACA,CAAS,CAAC,GAEdE,EAAU,MAAM;AACV,IAAAd,KAAW,CAACF,KACJc;EAEX,GAAA,CAACZ,GAASF,GAAcc,CAAS,CAAC,GAErCE,EAAU,MAAM;AACd,KAAIb,KAAeF,OACDJ,KAAA,QAAAA,EAAAM,KAAe,CAACF;AAAA,EAEjC,GAAA,CAACE,GAAaF,GAAoBJ,CAAa,CAAC,GAE/CG,KAAgB,CAACD;AACZ,WAAA,gBAAAkB,EAACC,GAAU,EAAA,QAAO,SAAS,CAAA;AAGpC,MAAIjB;AACF,WAAQ,gBAAAgB,EAAAE,GAAA,EAAM,QAAO,UAAS,YAAYL,EAAW,CAAA;AAGjD,QAAAM,IAAuBV,KAAA,gBAAAA,EAAmB,IAG1CW,wBAAkB,QAClBC,IAAYD,EAAY,YACxBE,IAAgBD,MAAc,IAAID,EAAY,gBAAgB,IAAIA,EAAY;AASlF,SAAA,gBAAAG,EAACC,GAAA,EACE,UAAA;AAAA,IAAAd,KAAmB,gBAAAM,EAAAS,GAAA,EAAM,YAAYf,GAAgB,YAAY,IAAM;AAAA,IAEvEC,KAAc,gBAAAK,EAACU,GAAW,EAAA,YAAAf,GAAwB,eAAAlB,EAA8B,CAAA;AAAA,IAEhFmB,KACC,gBAAAI,EAACW,GAAa,EAAA,cAAcf,GAAkB,aAAArB,GAA0B;AAAA,IATtDc,KAAgBC,KAASC,KAa3C,gBAAAS;AAAA,MAACY;AAAA,MAAA;AAAA,QACC,cAAAvB;AAAA,QACA,aAAaC;AAAA,QACb,YAAYC;AAAA,QACZ,aAAab;AAAA,MAAA;AAAA,IACf;AAAA,IAnBJmC,KAAwB,CAACrB,KAAYW,MAHnBb,OADMe,MAAc,IAAI,KAAKA,MACEd,MAASe,MAyBjCH,IACrB,gBAAAH;AAAA,MAACc;AAAA,MAAA;AAAA,QACC,UAAAtC;AAAA,QACA,aAAAD;AAAA,QACA,YAAAI;AAAA,QACA,iBAAiBwB;AAAA,QACjB,cAAAzB;AAAA,MAAA;AAAA,IAGF,IAAA,gBAAAsB,EAACe,GAAU,EAAA,SAAS,EAAG,CAAA;AAAA,EAE3B,EAAA,CAAA;AAEJ,GAEeC,KAAAC,EAAK3C,CAAa;"}
@@ -1,13 +1,16 @@
1
- import e from "styled-components";
2
- import t from "../../ui/layout/flex-view.js";
1
+ import t from "styled-components";
2
+ import e from "../../ui/layout/flex-view.js";
3
3
  import o from "../../ui/text/text.js";
4
- const n = e(t)`
4
+ const n = t(e)`
5
5
  z-index: -1;
6
- `, x = e(o)`
6
+ `, p = t(o)`
7
7
  line-height: 8px;
8
+ `, x = t(e)`
9
+ min-height: 60dvh;
8
10
  `;
9
11
  export {
10
- x as DateText,
12
+ p as DateText,
13
+ x as EmptyWrapper,
11
14
  n as ImageContainer
12
15
  };
13
16
  //# sourceMappingURL=monthly-timeline-styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"monthly-timeline-styled.js","sources":["../../../../src/features/timeline/monthly-timeline/monthly-timeline-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\n\nexport const ImageContainer = styled(FlexView)<{ $marginBottom?: number }>`\n z-index: -1;\n`;\n\nexport const DateText = styled(Text)`\n line-height: 8px;\n`;\n"],"names":["ImageContainer","styled","FlexView","DateText","Text"],"mappings":";;;AAKa,MAAAA,IAAiBC,EAAOC,CAAQ;AAAA;AAAA,GAIhCC,IAAWF,EAAOG,CAAI;AAAA;AAAA;"}
1
+ {"version":3,"file":"monthly-timeline-styled.js","sources":["../../../../src/features/timeline/monthly-timeline/monthly-timeline-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\n\nexport const ImageContainer = styled(FlexView)<{ $marginBottom?: number }>`\n z-index: -1;\n`;\n\nexport const DateText = styled(Text)`\n line-height: 8px;\n`;\n\nexport const EmptyWrapper = styled(FlexView)`\n min-height: 60dvh;\n`;\n"],"names":["ImageContainer","styled","FlexView","DateText","Text","EmptyWrapper"],"mappings":";;;AAKa,MAAAA,IAAiBC,EAAOC,CAAQ;AAAA;AAAA,GAIhCC,IAAWF,EAAOG,CAAI;AAAA;AAAA,GAItBC,IAAeJ,EAAOC,CAAQ;AAAA;AAAA;"}
@@ -1,53 +1,53 @@
1
- import { jsx as r, Fragment as w, jsxs as c } from "react/jsx-runtime";
2
- import { memo as L, useMemo as R, useCallback as X, useEffect as y } from "react";
3
- import { monthlyTimelineGet as j } from "./api/use-monthly-timeline-get.js";
4
- import F from "./monthly-timeline-view.js";
5
- import M from "../../ui/loader/app-loader/app-loader.js";
6
- import t from "../../ui/layout/flex-view.js";
7
- import S from "../../ui/text/text.js";
1
+ import { jsx as r, Fragment as w, jsxs as s } from "react/jsx-runtime";
2
+ import { memo as L, useMemo as R, useCallback as X, useEffect as $ } from "react";
3
+ import { monthlyTimelineGet as F } from "./api/use-monthly-timeline-get.js";
4
+ import M from "./monthly-timeline-view.js";
5
+ import S from "../../ui/loader/app-loader/app-loader.js";
6
+ import c from "../../ui/layout/flex-view.js";
7
+ import j from "../../ui/text/text.js";
8
8
  import u from "../../ui/image/image.js";
9
9
  import l from "../../ui/separator/separator.js";
10
- import { yearImages as A, monthNames as B } from "./constants.js";
11
- import I from "../../ui/error/error.js";
12
- import { ImageContainer as v, DateText as z } from "./monthly-timeline-styled.js";
13
- import { getTimezone as C } from "../../../helpers/date-time.js";
14
- import { ILLUSTRATIONS as D } from "../../../assets/illustrations/illustrations.js";
15
- const K = ({
16
- userType: f,
17
- studentId: m,
18
- courseStreams: g,
10
+ import { yearImages as v, monthNames as A } from "./constants.js";
11
+ import B from "../../ui/error/error.js";
12
+ import { ImageContainer as z, DateText as D, EmptyWrapper as I } from "./monthly-timeline-styled.js";
13
+ import { getTimezone as K } from "../../../helpers/date-time.js";
14
+ import { ILLUSTRATIONS as N } from "../../../assets/illustrations/illustrations.js";
15
+ const O = ({
16
+ userType: g,
17
+ studentId: n,
18
+ courseStreams: f,
19
19
  onReportClick: x,
20
20
  onAPIComplete: o
21
21
  }) => {
22
- const a = R(
22
+ const m = R(
23
23
  () => ({
24
- course_streams: f === "TEACHER" ? g : [],
25
- timezone: C()
24
+ course_streams: g === "TEACHER" ? f : [],
25
+ timezone: K()
26
26
  }),
27
- [g, f]
27
+ [f, g]
28
28
  ), {
29
29
  get: p,
30
- data: i = [],
30
+ data: t = [],
31
31
  isProcessing: E,
32
- isProcessingFailed: n,
33
- isProcessed: s
34
- } = j(m, a), h = X(() => {
35
- p(m, a);
36
- }, [p, a, m]);
37
- return y(() => {
32
+ isProcessingFailed: i,
33
+ isProcessed: a
34
+ } = F(n, m), h = X(() => {
35
+ p(n, m);
36
+ }, [p, m, n]);
37
+ return $(() => {
38
38
  h();
39
- }, [h]), y(() => {
40
- (s || n) && (o == null || o(s && !n));
41
- }, [s, n, o]), E ? /* @__PURE__ */ r(M, { height: "100dvh" }) : n ? /* @__PURE__ */ r(t, { $flex: 1, $alignItems: "center", $justifyContent: "center", children: /* @__PURE__ */ r(I, { onTryAgain: h }) }) : /* @__PURE__ */ r(w, { children: (i == null ? void 0 : i.length) > 0 ? /* @__PURE__ */ r(t, { $gapX: 2, children: i.map((e, _) => {
42
- const T = _ === 0, b = e.month === 12, $ = !T && b, d = A[e.year];
43
- return /* @__PURE__ */ c(t, { $width: "100%", children: [
44
- !T && !$ && /* @__PURE__ */ r(l, { heightX: 2 }),
45
- $ && d && /* @__PURE__ */ r(v, { $marginBottom: -122, children: /* @__PURE__ */ r(u, { src: d, alt: e.year.toString() }) }),
46
- /* @__PURE__ */ c(t, { $gutterX: 1, children: [
47
- /* @__PURE__ */ r(z, { $renderAs: "ac4", $color: "BLACK_T_60", children: B[e.month - 1] }),
39
+ }, [h]), $(() => {
40
+ (a || i) && (o == null || o(a && !i));
41
+ }, [a, i, o]), E && !t.length ? /* @__PURE__ */ r(S, { height: "100dvh" }) : i ? /* @__PURE__ */ r(B, { onTryAgain: h, height: "100dvh" }) : /* @__PURE__ */ r(w, { children: (t == null ? void 0 : t.length) > 0 ? /* @__PURE__ */ r(c, { $gapX: 2, children: t.map((e, _) => {
42
+ const T = _ === 0, b = e.month === 12, d = !T && b, y = v[e.year];
43
+ return /* @__PURE__ */ s(c, { $width: "100%", children: [
44
+ !T && !d && /* @__PURE__ */ r(l, { heightX: 2 }),
45
+ d && y && /* @__PURE__ */ r(z, { $marginBottom: -122, children: /* @__PURE__ */ r(u, { src: y, alt: e.year.toString() }) }),
46
+ /* @__PURE__ */ s(c, { $gutterX: 1, children: [
47
+ /* @__PURE__ */ r(D, { $renderAs: "ac4", $color: "BLACK_T_60", children: A[e.month - 1] }),
48
48
  /* @__PURE__ */ r(l, { heightX: 1 }),
49
49
  /* @__PURE__ */ r(
50
- F,
50
+ M,
51
51
  {
52
52
  reports: e.reports,
53
53
  month: e.month,
@@ -57,13 +57,13 @@ const K = ({
57
57
  )
58
58
  ] })
59
59
  ] }, `${e.month}-${e.year}`);
60
- }) }) : /* @__PURE__ */ c(t, { $justifyContent: "center", $alignItems: "center", $height: "100%", children: [
61
- /* @__PURE__ */ r(u, { src: D.EMPTY_REPORTS }),
60
+ }) }) : /* @__PURE__ */ s(I, { $justifyContent: "center", $alignItems: "center", $height: "100%", children: [
61
+ /* @__PURE__ */ r(u, { src: N.EMPTY_REPORTS }),
62
62
  /* @__PURE__ */ r(l, { heightX: 1.5 }),
63
- /* @__PURE__ */ r(S, { $renderAs: "ab2", color: "BLACK_T_60", children: "Report will be available next month." })
63
+ /* @__PURE__ */ r(j, { $renderAs: "ab2", color: "BLACK_T_60", children: "Report will be available next month." })
64
64
  ] }) });
65
- }, rr = L(K);
65
+ }, er = L(O);
66
66
  export {
67
- rr as default
67
+ er as default
68
68
  };
69
69
  //# sourceMappingURL=monthly-timeline.js.map