@cuemath/leap 3.2.9-link.0 → 3.2.9-pzd-0.1-testing

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 (185) hide show
  1. package/dist/assets/illustrations/illustrations.js +1 -6
  2. package/dist/assets/illustrations/illustrations.js.map +1 -1
  3. package/dist/assets/lottie/lottie.js +5 -9
  4. package/dist/assets/lottie/lottie.js.map +1 -1
  5. package/dist/features/analytics-events/platform-events-student.js +2 -1
  6. package/dist/features/analytics-events/platform-events-student.js.map +1 -1
  7. package/dist/features/analytics-events/platform-events-teacher.js +6 -4
  8. package/dist/features/analytics-events/platform-events-teacher.js.map +1 -1
  9. package/dist/features/analytics-events/whitelist-events.js +10 -8
  10. package/dist/features/analytics-events/whitelist-events.js.map +1 -1
  11. package/dist/features/auth/comps/auth-page-layout/auth-page-layout.js +12 -17
  12. package/dist/features/auth/comps/auth-page-layout/auth-page-layout.js.map +1 -1
  13. package/dist/features/auth/comps/resend-otp/resend-otp.js +47 -54
  14. package/dist/features/auth/comps/resend-otp/resend-otp.js.map +1 -1
  15. package/dist/features/auth/comps/tabs/tab-tem/tab-item.js +17 -29
  16. package/dist/features/auth/comps/tabs/tab-tem/tab-item.js.map +1 -1
  17. package/dist/features/auth/comps/tabs/tabs-styled.js +10 -22
  18. package/dist/features/auth/comps/tabs/tabs-styled.js.map +1 -1
  19. package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js +19 -19
  20. package/dist/features/circle-games/game-launcher/hooks/use-game-launcher-journey/use-game-launcher-journey.js.map +1 -1
  21. package/dist/features/circle-games/sign-up/comp/grade-input/grade-input-styled.js +2 -2
  22. package/dist/features/circle-games/sign-up/comp/grade-input/grade-input-styled.js.map +1 -1
  23. package/dist/features/circle-games/sign-up/comp/grade-input/grade-input.js +1 -1
  24. package/dist/features/circle-games/sign-up/comp/grade-input/grade-input.js.map +1 -1
  25. package/dist/features/circle-games/sign-up/constants.js +3 -1
  26. package/dist/features/circle-games/sign-up/constants.js.map +1 -1
  27. package/dist/features/communication/pub-sub/constants.js +7 -4
  28. package/dist/features/communication/pub-sub/constants.js.map +1 -1
  29. package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js +42 -42
  30. package/dist/features/cue-canvas/hooks/use-canvas-sync-broker.js.map +1 -1
  31. package/dist/features/homework/homework-card-view.js +85 -97
  32. package/dist/features/homework/homework-card-view.js.map +1 -1
  33. package/dist/features/homework/homework-card.js +44 -42
  34. package/dist/features/homework/homework-card.js.map +1 -1
  35. package/dist/features/homework/hw-card-list/hw-card-list-view.js +31 -29
  36. package/dist/features/homework/hw-card-list/hw-card-list-view.js.map +1 -1
  37. package/dist/features/homework/hw-card-list/hw-card-list.js +57 -50
  38. package/dist/features/homework/hw-card-list/hw-card-list.js.map +1 -1
  39. package/dist/features/homework/utils.js +33 -27
  40. package/dist/features/homework/utils.js.map +1 -1
  41. package/dist/features/journey/hooks/use-home-page-journey/tooltip-item.js +17 -11
  42. package/dist/features/journey/hooks/use-home-page-journey/tooltip-item.js.map +1 -1
  43. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-assigned.js +72 -0
  44. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-assigned.js.map +1 -0
  45. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-attempt-journey.js +59 -0
  46. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-attempt-journey.js.map +1 -0
  47. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-dashboard-journey.js +63 -0
  48. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-dashboard-journey.js.map +1 -0
  49. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-intro-journey.js +67 -0
  50. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-intro-journey.js.map +1 -0
  51. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-progress-journey.js +70 -0
  52. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-progress-journey.js.map +1 -0
  53. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-review-journey.js +59 -0
  54. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-review-journey.js.map +1 -0
  55. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-unassign-journey.js +59 -0
  56. package/dist/features/journey/hooks/use-puzzles-journey/use-puzzle-unassign-journey.js.map +1 -0
  57. package/dist/features/journey/hooks/use-puzzles-journey/use-teacher-puzzle-assigned-journey.js +70 -0
  58. package/dist/features/journey/hooks/use-puzzles-journey/use-teacher-puzzle-assigned-journey.js.map +1 -0
  59. package/dist/features/journey/journey-id/journey-id-student.js +2 -2
  60. package/dist/features/journey/journey-id/journey-id-student.js.map +1 -1
  61. package/dist/features/journey/journey-id/journey-id-teacher.js +2 -2
  62. package/dist/features/journey/journey-id/journey-id-teacher.js.map +1 -1
  63. package/dist/features/puzzles/api/puzzle-dashboard.js +10 -0
  64. package/dist/features/puzzles/api/puzzle-dashboard.js.map +1 -0
  65. package/dist/features/puzzles/comps/puzzle-card-styled.js +24 -69
  66. package/dist/features/puzzles/comps/puzzle-card-styled.js.map +1 -1
  67. package/dist/features/puzzles/comps/puzzle-card.js +72 -30
  68. package/dist/features/puzzles/comps/puzzle-card.js.map +1 -1
  69. package/dist/features/puzzles/constants/puzzle-container.js +8 -0
  70. package/dist/features/puzzles/constants/puzzle-container.js.map +1 -0
  71. package/dist/features/puzzles/puzzle-analytics-events.js +11 -0
  72. package/dist/features/puzzles/puzzle-analytics-events.js.map +1 -0
  73. package/dist/features/puzzles/puzzle-container/puzzle-container-styled.js +55 -25
  74. package/dist/features/puzzles/puzzle-container/puzzle-container-styled.js.map +1 -1
  75. package/dist/features/puzzles/puzzle-container/puzzle-container-view.js +55 -0
  76. package/dist/features/puzzles/puzzle-container/puzzle-container-view.js.map +1 -0
  77. package/dist/features/puzzles/puzzle-container/puzzle-container.js +98 -108
  78. package/dist/features/puzzles/puzzle-container/puzzle-container.js.map +1 -1
  79. package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard-styled.js +37 -0
  80. package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard-styled.js.map +1 -0
  81. package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard.js +110 -0
  82. package/dist/features/puzzles/puzzle-dashboard/puzzle-dashboard.js.map +1 -0
  83. package/dist/features/puzzles/utils/puzzle-pattern.js +28 -13
  84. package/dist/features/puzzles/utils/puzzle-pattern.js.map +1 -1
  85. package/dist/features/ui/error/error.js +65 -27
  86. package/dist/features/ui/error/error.js.map +1 -1
  87. package/dist/features/ui/image/image.js +1 -1
  88. package/dist/features/ui/image/image.js.map +1 -1
  89. package/dist/features/ui/inputs/base-input/base-input.js +11 -11
  90. package/dist/features/ui/inputs/base-input/base-input.js.map +1 -1
  91. package/dist/features/ui/inputs/text-input/text-input.js +18 -19
  92. package/dist/features/ui/inputs/text-input/text-input.js.map +1 -1
  93. package/dist/features/ui/modals/modal-styled.js +35 -28
  94. package/dist/features/ui/modals/modal-styled.js.map +1 -1
  95. package/dist/features/ui/modals/modal.js +40 -14
  96. package/dist/features/ui/modals/modal.js.map +1 -1
  97. package/dist/features/ui/streak-icon/streak-icon-styled.js +13 -13
  98. package/dist/features/ui/streak-icon/streak-icon-styled.js.map +1 -1
  99. package/dist/features/ui/streak-icon/streak-icon.js +17 -15
  100. package/dist/features/ui/streak-icon/streak-icon.js.map +1 -1
  101. package/dist/features/ui/theme/button.js +78 -78
  102. package/dist/features/ui/theme/button.js.map +1 -1
  103. package/dist/features/worksheet/worksheet/hooks/use-worksheet-journey.js +28 -0
  104. package/dist/features/worksheet/worksheet/hooks/use-worksheet-journey.js.map +1 -0
  105. package/dist/features/worksheet/worksheet/worksheet-helpers.js +20 -19
  106. package/dist/features/worksheet/worksheet/worksheet-helpers.js.map +1 -1
  107. package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js +29 -25
  108. package/dist/features/worksheet/worksheet/worksheet-question/learnosity-question.js.map +1 -1
  109. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js +97 -47
  110. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js.map +1 -1
  111. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +204 -196
  112. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
  113. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js +242 -207
  114. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
  115. package/dist/features/worksheet/worksheet/worksheet-styled.js +37 -37
  116. package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
  117. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  118. package/dist/features/worksheet/worksheet/worksheet.js +307 -313
  119. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  120. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +1 -1
  121. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  122. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +44 -35
  123. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
  124. package/dist/index.d.ts +89 -97
  125. package/dist/index.js +517 -531
  126. package/dist/index.js.map +1 -1
  127. package/dist/static/puzzle-blue-lottie.7017e2e8.json +1 -0
  128. package/dist/static/puzzle-blue-lottie.bf64ebc5.json +12760 -0
  129. package/dist/static/puzzle-dashboard-banner.b7956519.svg +1 -0
  130. package/dist/static/puzzle-green-lottie.1da90698.json +1 -0
  131. package/dist/static/puzzle-orange-lottie.cfcf3724.json +1 -0
  132. package/dist/static/puzzle-purple-lottie.e70de110.json +9860 -0
  133. package/dist/static/puzzle-yellow-lottie.275b5cf4.json +1 -0
  134. package/package.json +3 -2
  135. package/dist/assets/line-icons/icons/after-noon.js +0 -34
  136. package/dist/assets/line-icons/icons/after-noon.js.map +0 -1
  137. package/dist/assets/line-icons/icons/apple-icon-white.js +0 -42
  138. package/dist/assets/line-icons/icons/apple-icon-white.js.map +0 -1
  139. package/dist/assets/line-icons/icons/evening.js +0 -35
  140. package/dist/assets/line-icons/icons/evening.js.map +0 -1
  141. package/dist/assets/line-icons/icons/morning.js +0 -35
  142. package/dist/assets/line-icons/icons/morning.js.map +0 -1
  143. package/dist/assets/line-icons/icons/star3.js +0 -32
  144. package/dist/assets/line-icons/icons/star3.js.map +0 -1
  145. package/dist/features/auth/comps/linear-progress-bar/linear-progress-bar-styled.js +0 -12
  146. package/dist/features/auth/comps/linear-progress-bar/linear-progress-bar-styled.js.map +0 -1
  147. package/dist/features/auth/comps/linear-progress-bar/linear-progress-bar.js +0 -33
  148. package/dist/features/auth/comps/linear-progress-bar/linear-progress-bar.js.map +0 -1
  149. package/dist/features/auth/comps/otp-input/otp-input-styled.js +0 -22
  150. package/dist/features/auth/comps/otp-input/otp-input-styled.js.map +0 -1
  151. package/dist/features/auth/comps/otp-input/otp-input.js +0 -51
  152. package/dist/features/auth/comps/otp-input/otp-input.js.map +0 -1
  153. package/dist/features/auth/comps/pill-button/pill-button-styled.js +0 -63
  154. package/dist/features/auth/comps/pill-button/pill-button-styled.js.map +0 -1
  155. package/dist/features/auth/comps/pill-button/pill-button.js +0 -66
  156. package/dist/features/auth/comps/pill-button/pill-button.js.map +0 -1
  157. package/dist/features/auth/comps/selectable-info-card/selectable-info-card-styled.js +0 -17
  158. package/dist/features/auth/comps/selectable-info-card/selectable-info-card-styled.js.map +0 -1
  159. package/dist/features/auth/comps/selectable-info-card/selectable-info-card.js +0 -60
  160. package/dist/features/auth/comps/selectable-info-card/selectable-info-card.js.map +0 -1
  161. package/dist/features/auth/signup-v2/onboarding-guide/onboarding-guide-constants.js +0 -19
  162. package/dist/features/auth/signup-v2/onboarding-guide/onboarding-guide-constants.js.map +0 -1
  163. package/dist/features/auth/signup-v2/onboarding-guide/onboarding-guide-styled.js +0 -22
  164. package/dist/features/auth/signup-v2/onboarding-guide/onboarding-guide-styled.js.map +0 -1
  165. package/dist/features/auth/signup-v2/onboarding-guide/onboarding-guide.js +0 -18
  166. package/dist/features/auth/signup-v2/onboarding-guide/onboarding-guide.js.map +0 -1
  167. package/dist/features/auth/signup-v2/signup-header/signup-header.js +0 -25
  168. package/dist/features/auth/signup-v2/signup-header/signup-header.js.map +0 -1
  169. package/dist/features/auth/signup-v2/signup-options/signup-options.js +0 -71
  170. package/dist/features/auth/signup-v2/signup-options/signup-options.js.map +0 -1
  171. package/dist/static/calendar-purple.1a840b41.svg +0 -1
  172. package/dist/static/flying-disk.c7f6ed39.json +0 -1
  173. package/dist/static/graduation-cap.3be3340a.json +0 -1
  174. package/dist/static/handshake.287e7dfb.svg +0 -1
  175. package/dist/static/light-bulb.c6db0b23.json +0 -1
  176. package/dist/static/money.332aacf1.svg +0 -1
  177. package/dist/static/muscle.9bcfb8a7.json +0 -1
  178. package/dist/static/parent-avatar.822c7b9b.svg +0 -1
  179. package/dist/static/pencil.23df9da0.json +0 -1
  180. package/dist/static/plus-sign.de6af957.json +0 -1
  181. package/dist/static/racing-car.2cbf864e.json +0 -1
  182. package/dist/static/rocket.0a3ccab0.json +0 -1
  183. package/dist/static/shovel.abeec04c.json +0 -1
  184. package/dist/static/stripe-blurple.6abf422f.svg +0 -1
  185. package/dist/static/trustpilot.bd3d79e1.svg +0 -1
@@ -1,72 +1,72 @@
1
- import { useMessageBrokerChannel as W } from "@cuemath/cue-message-broker";
2
- import { useMemo as m, useState as $, useRef as j, useCallback as f } from "react";
3
- const C = (e) => ({
1
+ import { useMessageBrokerChannel as $ } from "@cuemath/cue-message-broker";
2
+ import { useMemo as C, useState as j, useRef as z, useCallback as f } from "react";
3
+ const M = (e) => ({
4
4
  userId: e.userId,
5
5
  data: e.data,
6
6
  height: e.height,
7
7
  responseId: e.responseId
8
- }), z = (e) => {
9
- var i, r;
8
+ }), A = (e) => {
9
+ var a, i;
10
10
  const n = {};
11
11
  if (!e) return n;
12
12
  for (const { message: u } of e) {
13
- const t = (i = u.payload) == null ? void 0 : i.eventPayload, a = t == null ? void 0 : t.responseId;
13
+ const t = (a = u.payload) == null ? void 0 : a.eventPayload, r = t == null ? void 0 : t.responseId;
14
14
  if (!(t != null && t.responseId)) continue;
15
- const o = C(t);
16
- a && n[a] ? (r = n[a]) == null || r.push(o) : n[a] = [o];
15
+ const c = M(t);
16
+ r && n[r] ? (i = n[r]) == null || i.push(c) : n[r] = [c];
17
17
  }
18
18
  return n;
19
- }, A = (e, n, i, r = "canvas") => {
20
- const u = m(
21
- () => z(i),
22
- [i]
23
- ), [t, a] = $(void 0), o = j({}), M = m(
19
+ }, E = (e, n, a, i = "canvas") => {
20
+ const u = C(
21
+ () => A(a),
22
+ [a]
23
+ ), [t, r] = j(void 0), c = z({}), g = i === "canvas" || e.includes("practice") ? 0 : 24, S = C(
24
24
  () => ({
25
25
  channelId: e,
26
- ttl: r === "canvas" ? 0 : 24,
26
+ ttl: g,
27
27
  logger: n
28
28
  }),
29
- [e, n, r]
30
- ), S = f((k, l) => {
31
- o.current = { ...o.current, [k]: l };
32
- }, []), b = f(
29
+ [e, n, g]
30
+ ), b = f((k, l) => {
31
+ c.current = { ...c.current, [k]: l };
32
+ }, []), D = f(
33
33
  (k, l) => {
34
34
  const h = u;
35
- k.forEach((x) => {
35
+ k.forEach((F) => {
36
36
  var I;
37
- const { payload: F } = x.message, { eventPayload: s } = F, c = s == null ? void 0 : s.responseId, O = s == null ? void 0 : s.data, v = s == null ? void 0 : s.userId, H = s == null ? void 0 : s.height, g = o.current[c];
38
- if (!l && g)
39
- g({
40
- data: O,
41
- height: H,
42
- userId: v,
43
- responseId: c
37
+ const { payload: O } = F.message, { eventPayload: s } = O, o = s == null ? void 0 : s.responseId, v = s == null ? void 0 : s.data, H = s == null ? void 0 : s.userId, W = s == null ? void 0 : s.height, p = c.current[o];
38
+ if (!l && p)
39
+ p({
40
+ data: v,
41
+ height: W,
42
+ userId: H,
43
+ responseId: o
44
44
  });
45
45
  else {
46
- const p = C(s);
47
- c && h[c] ? (I = h[c]) == null || I.push(p) : h[c] = [p];
46
+ const m = M(s);
47
+ o && h[o] ? (I = h[o]) == null || I.push(m) : h[o] = [m];
48
48
  }
49
- }), a(h);
49
+ }), r(h);
50
50
  },
51
51
  [u]
52
- ), { publish: D, channelStatus: R, channel: d, channelMetadata: q, setChannelMetadata: B } = W({
53
- channelOptions: M,
54
- consumerFn: b,
55
- metadataRequired: r === "whiteboard"
56
- }), w = f(() => {
52
+ ), { publish: R, channelStatus: q, channel: d, channelMetadata: B, setChannelMetadata: w } = $({
53
+ channelOptions: S,
54
+ consumerFn: D,
55
+ metadataRequired: i === "whiteboard"
56
+ }), x = f(() => {
57
57
  d && d.destroyChannel();
58
58
  }, [d]);
59
59
  return {
60
- publishStrokes: D,
61
- channelStatus: R,
62
- closeChannel: w,
60
+ publishStrokes: R,
61
+ channelStatus: q,
62
+ closeChannel: x,
63
63
  initialStrokesData: t,
64
- registerCallback: S,
65
- setChannelMetadata: B,
66
- channelMetadata: q
64
+ registerCallback: b,
65
+ setChannelMetadata: w,
66
+ channelMetadata: B
67
67
  };
68
- }, J = A;
68
+ }, K = E;
69
69
  export {
70
- J as default
70
+ K as default
71
71
  };
72
72
  //# sourceMappingURL=use-canvas-sync-broker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-canvas-sync-broker.js","sources":["../../../../src/features/cue-canvas/hooks/use-canvas-sync-broker.ts"],"sourcesContent":["import type {\n IActionData,\n ICanvasUpdateConfig,\n IPublishData,\n TCueCanvasChangeDataObject,\n TRenderAs,\n} from '../types/cue-canvas';\n\nimport { useMessageBrokerChannel, type IChannelMessage } from '@cuemath/cue-message-broker';\nimport { useMemo, useCallback, useState, useRef } from 'react';\n\ninterface IMessage {\n eventName: string;\n eventPayload: {\n responseId: string;\n data: TCueCanvasChangeDataObject;\n userId: string;\n height: number;\n };\n}\n\nconst extractStrokeData = (payload: IMessage['eventPayload']): IActionData => ({\n userId: payload.userId,\n data: payload.data,\n height: payload.height,\n responseId: payload.responseId,\n});\n\nconst getCanvasDataFromInitialData = (\n initialCanvasData: Array<IChannelMessage> | undefined,\n): Record<string, IActionData[]> => {\n const map: Record<string, IActionData[]> = {};\n\n if (!initialCanvasData) return map;\n\n for (const { message } of initialCanvasData) {\n const payload = (message.payload as IMessage)?.eventPayload;\n const qrId = payload?.responseId;\n\n if (!payload?.responseId) continue;\n\n const strokeData = extractStrokeData(payload);\n\n if (qrId && map[qrId]) {\n map[qrId]?.push(strokeData);\n } else {\n map[qrId] = [strokeData];\n }\n }\n\n return map;\n};\n\nconst useCanvasSyncBroker = (\n channelId: string,\n logEvent: (type: string, payload?: Record<string, unknown>) => void,\n initialCanvasData?: Array<IChannelMessage>,\n type: TRenderAs = 'canvas',\n) => {\n const initialCanvasDataMap = useMemo(\n () => getCanvasDataFromInitialData(initialCanvasData),\n [initialCanvasData],\n );\n const [initialStrokesData, setInitialStrokesData] = useState<\n Record<string, IActionData[]> | undefined\n >(undefined);\n const callbacksMapRef = useRef<Record<string, (data: IActionData) => void>>({});\n\n const channelOptions = useMemo(\n () => ({\n channelId,\n ttl: type === 'canvas' ? 0 : 24,\n logger: logEvent,\n }),\n [channelId, logEvent, type],\n );\n\n const registerCallback = useCallback((qrId: string, cb: (data: IActionData) => void) => {\n callbacksMapRef.current = { ...callbacksMapRef.current, [qrId]: cb };\n }, []);\n\n const onMessageReceive = useCallback(\n (messages: Array<IChannelMessage>, initialData?: boolean) => {\n const strokesPerWidgetMap: Record<string, Array<IActionData>> = initialCanvasDataMap;\n\n messages.forEach(message => {\n const { payload } = message.message;\n const { eventPayload } = payload as IMessage;\n const qrId = eventPayload?.responseId as string;\n const strokes = eventPayload?.data;\n const userId = eventPayload?.userId;\n const canvasHeight = eventPayload?.height;\n const widgetOnReceiveCallback = callbacksMapRef.current[qrId];\n\n if (!initialData && widgetOnReceiveCallback) {\n widgetOnReceiveCallback({\n data: strokes,\n height: canvasHeight,\n userId,\n responseId: qrId,\n });\n } else {\n const strokeData = extractStrokeData(eventPayload);\n\n if (qrId && strokesPerWidgetMap[qrId]) {\n strokesPerWidgetMap[qrId]?.push(strokeData);\n } else {\n strokesPerWidgetMap[qrId] = [strokeData];\n }\n }\n });\n setInitialStrokesData(strokesPerWidgetMap);\n },\n [initialCanvasDataMap],\n );\n\n const { publish, channelStatus, channel, channelMetadata, setChannelMetadata } =\n useMessageBrokerChannel<IPublishData, ICanvasUpdateConfig>({\n channelOptions,\n consumerFn: onMessageReceive,\n metadataRequired: type === 'whiteboard',\n });\n\n const closeChannel = useCallback(() => {\n if (channel) {\n channel.destroyChannel();\n }\n }, [channel]);\n\n return {\n publishStrokes: publish,\n channelStatus,\n closeChannel,\n initialStrokesData,\n registerCallback,\n setChannelMetadata,\n channelMetadata,\n };\n};\n\nexport default useCanvasSyncBroker;\n"],"names":["extractStrokeData","payload","getCanvasDataFromInitialData","initialCanvasData","map","message","_a","qrId","strokeData","_b","useCanvasSyncBroker","channelId","logEvent","type","initialCanvasDataMap","useMemo","initialStrokesData","setInitialStrokesData","useState","callbacksMapRef","useRef","channelOptions","registerCallback","useCallback","cb","onMessageReceive","messages","initialData","strokesPerWidgetMap","eventPayload","strokes","userId","canvasHeight","widgetOnReceiveCallback","publish","channelStatus","channel","channelMetadata","setChannelMetadata","useMessageBrokerChannel","closeChannel","useCanvasSyncBroker$1"],"mappings":"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"}
1
+ {"version":3,"file":"use-canvas-sync-broker.js","sources":["../../../../src/features/cue-canvas/hooks/use-canvas-sync-broker.ts"],"sourcesContent":["import type {\n IActionData,\n ICanvasUpdateConfig,\n IPublishData,\n TCueCanvasChangeDataObject,\n TRenderAs,\n} from '../types/cue-canvas';\n\nimport { useMessageBrokerChannel, type IChannelMessage } from '@cuemath/cue-message-broker';\nimport { useMemo, useCallback, useState, useRef } from 'react';\n\ninterface IMessage {\n eventName: string;\n eventPayload: {\n responseId: string;\n data: TCueCanvasChangeDataObject;\n userId: string;\n height: number;\n };\n}\n\nconst extractStrokeData = (payload: IMessage['eventPayload']): IActionData => ({\n userId: payload.userId,\n data: payload.data,\n height: payload.height,\n responseId: payload.responseId,\n});\n\nconst getCanvasDataFromInitialData = (\n initialCanvasData: Array<IChannelMessage> | undefined,\n): Record<string, IActionData[]> => {\n const map: Record<string, IActionData[]> = {};\n\n if (!initialCanvasData) return map;\n\n for (const { message } of initialCanvasData) {\n const payload = (message.payload as IMessage)?.eventPayload;\n const qrId = payload?.responseId;\n\n if (!payload?.responseId) continue;\n\n const strokeData = extractStrokeData(payload);\n\n if (qrId && map[qrId]) {\n map[qrId]?.push(strokeData);\n } else {\n map[qrId] = [strokeData];\n }\n }\n\n return map;\n};\n\nconst useCanvasSyncBroker = (\n channelId: string,\n logEvent: (type: string, payload?: Record<string, unknown>) => void,\n initialCanvasData?: Array<IChannelMessage>,\n type: TRenderAs = 'canvas',\n) => {\n const initialCanvasDataMap = useMemo(\n () => getCanvasDataFromInitialData(initialCanvasData),\n [initialCanvasData],\n );\n const [initialStrokesData, setInitialStrokesData] = useState<\n Record<string, IActionData[]> | undefined\n >(undefined);\n const callbacksMapRef = useRef<Record<string, (data: IActionData) => void>>({});\n const ttl = type === 'canvas' ? 0 : channelId.includes('practice') ? 0 : 24;\n\n const channelOptions = useMemo(\n () => ({\n channelId,\n ttl: ttl,\n logger: logEvent,\n }),\n [channelId, logEvent, ttl],\n );\n\n const registerCallback = useCallback((qrId: string, cb: (data: IActionData) => void) => {\n callbacksMapRef.current = { ...callbacksMapRef.current, [qrId]: cb };\n }, []);\n\n const onMessageReceive = useCallback(\n (messages: Array<IChannelMessage>, initialData?: boolean) => {\n const strokesPerWidgetMap: Record<string, Array<IActionData>> = initialCanvasDataMap;\n\n messages.forEach(message => {\n const { payload } = message.message;\n const { eventPayload } = payload as IMessage;\n const qrId = eventPayload?.responseId as string;\n const strokes = eventPayload?.data;\n const userId = eventPayload?.userId;\n const canvasHeight = eventPayload?.height;\n const widgetOnReceiveCallback = callbacksMapRef.current[qrId];\n\n if (!initialData && widgetOnReceiveCallback) {\n widgetOnReceiveCallback({\n data: strokes,\n height: canvasHeight,\n userId,\n responseId: qrId,\n });\n } else {\n const strokeData = extractStrokeData(eventPayload);\n\n if (qrId && strokesPerWidgetMap[qrId]) {\n strokesPerWidgetMap[qrId]?.push(strokeData);\n } else {\n strokesPerWidgetMap[qrId] = [strokeData];\n }\n }\n });\n setInitialStrokesData(strokesPerWidgetMap);\n },\n [initialCanvasDataMap],\n );\n\n const { publish, channelStatus, channel, channelMetadata, setChannelMetadata } =\n useMessageBrokerChannel<IPublishData, ICanvasUpdateConfig>({\n channelOptions,\n consumerFn: onMessageReceive,\n metadataRequired: type === 'whiteboard',\n });\n\n const closeChannel = useCallback(() => {\n if (channel) {\n channel.destroyChannel();\n }\n }, [channel]);\n\n return {\n publishStrokes: publish,\n channelStatus,\n closeChannel,\n initialStrokesData,\n registerCallback,\n setChannelMetadata,\n channelMetadata,\n };\n};\n\nexport default useCanvasSyncBroker;\n"],"names":["extractStrokeData","payload","getCanvasDataFromInitialData","initialCanvasData","map","message","_a","qrId","strokeData","_b","useCanvasSyncBroker","channelId","logEvent","type","initialCanvasDataMap","useMemo","initialStrokesData","setInitialStrokesData","useState","callbacksMapRef","useRef","ttl","channelOptions","registerCallback","useCallback","cb","onMessageReceive","messages","initialData","strokesPerWidgetMap","eventPayload","strokes","userId","canvasHeight","widgetOnReceiveCallback","publish","channelStatus","channel","channelMetadata","setChannelMetadata","useMessageBrokerChannel","closeChannel","useCanvasSyncBroker$1"],"mappings":"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"}
@@ -1,130 +1,118 @@
1
1
  import { jsx as e, jsxs as n } from "react/jsx-runtime";
2
- import { memo as X, useState as B, useRef as T, useCallback as I, useLayoutEffect as R } from "react";
3
- import P from "../../assets/line-icons/icons/closed-eye.js";
4
- import b from "../chapters-v2/comps/node-card/node-card-tags.js";
5
- import { getNodeTypeBasedBgImage as W } from "../chapters-v2/utils/index.js";
6
- import { getNodeCardBasedIcon as j } from "../chapters-v2/utils/node-card-utils.js";
2
+ import { memo as B, useState as L, useRef as b, useCallback as w, useLayoutEffect as R } from "react";
3
+ import W from "../../assets/line-icons/icons/closed-eye.js";
4
+ import I from "../chapters-v2/comps/node-card/node-card-tags.js";
5
+ import { getNodeTypeBasedBgImage as P } from "../chapters-v2/utils/index.js";
6
+ import { getNodeCardBasedIcon as U } from "../chapters-v2/utils/node-card-utils.js";
7
7
  import G from "../puzzles/comps/puzzle-card.js";
8
- import h from "../ui/arrow-tooltip/arrow-tooltip.js";
9
- import U from "../ui/image/image.js";
10
- import t from "../ui/layout/flex-view.js";
11
- import V from "../ui/lottie-animation/lottie-animation.js";
12
- import K from "./card-title.js";
13
- import C from "./node-progress.js";
14
- import { PuzzleCardWrapper as Z, HeaderText as _, CardWrapper as F, IconWrapper as M, BannerImageWrapper as q, BannerImage as J, SubHeaderText as Q } from "./styles.js";
8
+ import g from "../ui/arrow-tooltip/arrow-tooltip.js";
9
+ import a from "../ui/layout/flex-view.js";
10
+ import j from "../ui/lottie-animation/lottie-animation.js";
11
+ import V from "./card-title.js";
12
+ import _ from "./node-progress.js";
13
+ import { PuzzleCardWrapper as K, CardWrapper as Z, IconWrapper as F, BannerImageWrapper as M, BannerImage as q, HeaderText as J, SubHeaderText as Q } from "./styles.js";
15
14
  const Y = { renderer: "canvas", autoplay: !1 }, ee = ({
16
- header: $,
17
- isInQueue: y,
18
- nodeData: x,
19
- studentContainerRef: g,
20
- subHeader: z,
15
+ header: h,
16
+ isInQueue: C,
17
+ nodeData: E,
18
+ studentContainerRef: $,
19
+ subHeader: x,
21
20
  userType: c,
22
- isMilestone: d = !1
21
+ isMilestone: d = !1,
22
+ puzzleHWCardRef: y
23
23
  }) => {
24
24
  const {
25
- node_type: r,
25
+ node_type: t,
26
26
  state: m,
27
27
  accuracy: f,
28
- due_date_ts: o,
29
- image_url: u,
30
- image_hue: i,
31
- card_header: E = "",
32
- unlocked_on_ts: l,
28
+ due_date_ts: r,
29
+ image_url: p,
30
+ image_hue: o,
31
+ card_header: z = "",
32
+ unlocked_on_ts: s,
33
33
  course_type: A,
34
34
  title: k
35
- } = x, D = r === "PUZZLE_CARD", w = c === "STUDENT" && m === "LOCKED", [N, H] = B(!1), s = T(null), S = W(r), p = T(null), { lottie: v } = j(r), L = I(() => {
36
- var a;
37
- (a = p.current) == null || a.play();
38
- }, []), O = I(() => {
39
- var a;
40
- (a = p.current) == null || a.stop();
35
+ } = E, D = t === "PUZZLE_CARD", T = c === "STUDENT" && m === "LOCKED", [N, v] = L(!1), l = b(null), H = P(t), u = b(null), { lottie: S } = U(t), O = w(() => {
36
+ var i;
37
+ (i = u.current) == null || i.play();
38
+ }, []), X = w(() => {
39
+ var i;
40
+ (i = u.current) == null || i.stop();
41
41
  }, []);
42
42
  return R(() => {
43
- s.current && s.current.scrollHeight > s.current.clientHeight && H(!0);
43
+ l.current && l.current.scrollHeight > l.current.clientHeight && v(!0);
44
44
  }, []), D ? /* @__PURE__ */ e(
45
- h,
45
+ g,
46
46
  {
47
47
  renderAs: "primary",
48
48
  tooltipItem: "Solve puzzle after class",
49
49
  position: "bottom",
50
- hidden: !w,
51
- children: /* @__PURE__ */ n(
52
- Z,
50
+ hidden: !T,
51
+ children: /* @__PURE__ */ e("div", { ref: y, children: /* @__PURE__ */ n(
52
+ K,
53
53
  {
54
- ref: g,
54
+ ref: $,
55
55
  $position: "relative",
56
- $background: `${i}_2`,
57
- $disabled: w,
56
+ $background: `${o}_2`,
57
+ $disabled: T,
58
58
  children: [
59
- /* @__PURE__ */ e(t, { $width: 126, $height: 160, $justifyContent: "center", $alignItems: "center", children: /* @__PURE__ */ e(
59
+ /* @__PURE__ */ e(
60
60
  G,
61
61
  {
62
- imageHue: i,
63
- backgroundColor: `${i}_2`,
64
- width: "100%",
65
- height: "100%",
66
- children: /* @__PURE__ */ n(t, { $justifyContent: "center", $alignItems: "center", $flexGap: 12, children: [
67
- /* @__PURE__ */ e(
68
- U,
69
- {
70
- src: u ?? "",
71
- width: 68,
72
- height: 68,
73
- withLoader: !1,
74
- alt: "Puzzle"
75
- }
76
- ),
77
- /* @__PURE__ */ e(_, { $renderAs: "ab3", $align: "center", $width: "80%", children: k })
78
- ] })
62
+ imageHue: o,
63
+ imageUrl: p ?? "",
64
+ title: k,
65
+ width: 126,
66
+ height: 159
79
67
  }
80
- ) }),
68
+ ),
81
69
  /* @__PURE__ */ e(
82
- b,
70
+ I,
83
71
  {
84
- nodeType: r,
72
+ nodeType: t,
85
73
  state: m,
86
74
  accuracy: f,
87
- dueDateTs: o,
75
+ dueDateTs: r,
88
76
  isStudent: c === "STUDENT",
89
77
  isMilestone: d
90
78
  }
91
79
  ),
92
- !d && o && l && /* @__PURE__ */ e(
93
- C,
80
+ !d && r && s && /* @__PURE__ */ e(
81
+ _,
94
82
  {
95
- dueDate: o * 1e3,
96
- unlockedOn: l * 1e3,
97
- progressBg: `${i || "ORANGE"}_5`
83
+ dueDate: r * 1e3,
84
+ unlockedOn: s * 1e3,
85
+ progressBg: `${o || "ORANGE"}_5`
98
86
  }
99
87
  )
100
88
  ]
101
89
  }
102
- )
90
+ ) })
103
91
  }
104
92
  ) : /* @__PURE__ */ n(
105
- t,
93
+ a,
106
94
  {
107
- ref: g,
95
+ ref: $,
108
96
  $widthX: 12.38,
109
97
  $position: "relative",
110
- $background: `${i || "ORANGE"}_2`,
111
- onMouseEnter: L,
112
- onMouseLeave: O,
98
+ $background: `${o || "ORANGE"}_2`,
99
+ onMouseEnter: O,
100
+ onMouseLeave: X,
113
101
  children: [
114
102
  /* @__PURE__ */ n(
115
- F,
103
+ Z,
116
104
  {
117
105
  $flexDirection: "row",
118
106
  $alignItems: "center",
119
107
  $width: "100%",
120
108
  $heightX: 3.5,
121
- $bgImage: S,
109
+ $bgImage: H,
122
110
  $gutterX: 0.78125,
123
111
  $flexGap: 8.5,
124
112
  $position: "relative",
125
113
  children: [
126
114
  /* @__PURE__ */ e(
127
- M,
115
+ F,
128
116
  {
129
117
  $width: 31,
130
118
  $height: 31,
@@ -133,67 +121,67 @@ const Y = { renderer: "canvas", autoplay: !1 }, ee = ({
133
121
  $position: "relative",
134
122
  $alignItems: "center",
135
123
  $justifyContent: "center",
136
- children: /* @__PURE__ */ e(V, { src: v, ref: p, settings: Y })
124
+ children: /* @__PURE__ */ e(j, { src: S, ref: u, settings: Y })
137
125
  }
138
126
  ),
139
- /* @__PURE__ */ e(K, { cardHeader: E, nodeType: r, courseType: A }),
140
- y && /* @__PURE__ */ e(
141
- h,
127
+ /* @__PURE__ */ e(V, { cardHeader: z, nodeType: t, courseType: A }),
128
+ C && /* @__PURE__ */ e(
129
+ g,
142
130
  {
143
131
  renderAs: "primary",
144
132
  tooltipItem: "Not visible to student",
145
133
  position: "bottom",
146
134
  zIndex: 6,
147
- children: /* @__PURE__ */ e(P, {})
135
+ children: /* @__PURE__ */ e(W, {})
148
136
  }
149
137
  ),
150
- !!u && /* @__PURE__ */ e(q, { children: /* @__PURE__ */ e(J, { src: u, alt: "Chapter image" }) })
138
+ !!p && /* @__PURE__ */ e(M, { children: /* @__PURE__ */ e(q, { src: p, alt: "Chapter image" }) })
151
139
  ]
152
140
  }
153
141
  ),
154
142
  /* @__PURE__ */ e(
155
- b,
143
+ I,
156
144
  {
157
- nodeType: r,
145
+ nodeType: t,
158
146
  state: m,
159
147
  accuracy: f,
160
- dueDateTs: o,
148
+ dueDateTs: r,
161
149
  isStudent: c === "STUDENT",
162
150
  isMilestone: d
163
151
  }
164
152
  ),
165
- !d && o && l && /* @__PURE__ */ e(
166
- C,
153
+ !d && r && s && /* @__PURE__ */ e(
154
+ _,
167
155
  {
168
- dueDate: o * 1e3,
169
- unlockedOn: l * 1e3,
170
- progressBg: `${i || "ORANGE"}_4`
156
+ dueDate: r * 1e3,
157
+ unlockedOn: s * 1e3,
158
+ progressBg: `${o || "ORANGE"}_4`
171
159
  }
172
160
  ),
173
- /* @__PURE__ */ n(t, { $gutterX: 0.75, $gapX: 1, $flexRowGapX: 0.5, $background: "WHITE", children: [
161
+ /* @__PURE__ */ n(a, { $gutterX: 0.75, $gapX: 1, $flexRowGapX: 0.5, $background: "WHITE", children: [
174
162
  /* @__PURE__ */ e(
175
- h,
163
+ g,
176
164
  {
177
165
  renderAs: "primary",
178
166
  position: "bottom",
179
- tooltipItem: $,
167
+ tooltipItem: h,
180
168
  width: 300,
181
169
  hidden: !N,
182
170
  parentWidth: "auto",
183
171
  zIndex: 6,
184
- children: /* @__PURE__ */ e(t, { $heightX: 2.5, children: /* @__PURE__ */ e(_, { ref: s, $renderAs: "ab3", children: $ }) })
172
+ children: /* @__PURE__ */ e(a, { $heightX: 2.5, children: /* @__PURE__ */ e(J, { ref: l, $renderAs: "ab3", children: h }) })
185
173
  }
186
174
  ),
187
175
  /* @__PURE__ */ n(
188
- t,
176
+ a,
189
177
  {
190
178
  $flexDirection: "row",
191
179
  $heightX: 1.25,
192
180
  $alignItems: "center",
193
181
  $justifyContent: "space-between",
194
182
  children: [
195
- /* @__PURE__ */ e(Q, { $renderAs: "ub3", $color: "BLACK_T_60", children: z }),
196
- /* @__PURE__ */ e(t, { $width: 32 })
183
+ /* @__PURE__ */ e(Q, { $renderAs: "ub3", $color: "BLACK_T_60", children: x }),
184
+ /* @__PURE__ */ e(a, { $width: 32 })
197
185
  ]
198
186
  }
199
187
  )
@@ -201,8 +189,8 @@ const Y = { renderer: "canvas", autoplay: !1 }, ee = ({
201
189
  ]
202
190
  }
203
191
  );
204
- }, $e = X(ee);
192
+ }, ge = B(ee);
205
193
  export {
206
- $e as default
194
+ ge as default
207
195
  };
208
196
  //# sourceMappingURL=homework-card-view.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"homework-card-view.js","sources":["../../../src/features/homework/homework-card-view.tsx"],"sourcesContent":["import type { INodeDataProps } from '../chapters-v2/comps/node-card/node-card-types';\nimport type { ILottieAnimationRef } from '../ui/lottie-animation/types';\nimport type { TUserTypes } from '../ui/types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useLayoutEffect, useRef, useState } from 'react';\n\nimport ClosedEyeIcon from '../../assets/line-icons/icons/closed-eye';\nimport NodeCardTags from '../chapters-v2/comps/node-card/node-card-tags';\nimport { getNodeTypeBasedBgImage } from '../chapters-v2/utils';\nimport { getNodeCardBasedIcon } from '../chapters-v2/utils/node-card-utils';\nimport PuzzleCard from '../puzzles/comps/puzzle-card';\nimport ArrowTooltip from '../ui/arrow-tooltip/arrow-tooltip';\nimport Image from '../ui/image/image';\nimport FlexView from '../ui/layout/flex-view';\nimport LottieAnimation from '../ui/lottie-animation/lottie-animation';\nimport CardTitle from './card-title';\nimport NodeProgress from './node-progress';\nimport * as Styled from './styles';\n\nconst renderSettings = { renderer: 'canvas', autoplay: false };\n\ninterface IHomeworkCardViewProps {\n header: string;\n isInQueue?: boolean;\n nodeData: INodeDataProps;\n studentContainerRef: React.RefObject<HTMLDivElement>;\n subHeader: string;\n userType: TUserTypes;\n isMilestone?: boolean;\n}\n\nconst HomeworkView: FC<IHomeworkCardViewProps> = ({\n header,\n isInQueue,\n nodeData,\n studentContainerRef,\n subHeader,\n userType,\n isMilestone = false,\n}) => {\n const {\n node_type: nodeType,\n state,\n accuracy,\n due_date_ts: dueDateTs,\n image_url: imageUrl,\n image_hue: imageHue,\n card_header: cardHeader = '',\n unlocked_on_ts: unlockedOnTs,\n course_type: courseType,\n title,\n } = nodeData;\n const isPuzzleCard = nodeType === 'PUZZLE_CARD';\n const isPuzzleDisabled = userType === 'STUDENT' && state === 'LOCKED';\n\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n const titleTextRef = useRef<HTMLDivElement>(null);\n const bgImage = getNodeTypeBasedBgImage(nodeType);\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n const { lottie: nodeCardLottie } = getNodeCardBasedIcon(nodeType);\n\n const handleOnMouseEnter = useCallback(() => {\n animationRef.current?.play();\n }, []);\n\n const handleOnMouseLeave = useCallback(() => {\n animationRef.current?.stop();\n }, []);\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, []);\n\n if (isPuzzleCard) {\n return (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Solve puzzle after class\"\n position=\"bottom\"\n hidden={!isPuzzleDisabled}\n >\n <Styled.PuzzleCardWrapper\n ref={studentContainerRef}\n $position=\"relative\"\n $background={`${imageHue}_2`}\n $disabled={isPuzzleDisabled}\n >\n <FlexView $width={126} $height={160} $justifyContent=\"center\" $alignItems=\"center\">\n <PuzzleCard\n imageHue={imageHue}\n backgroundColor={`${imageHue}_2`}\n width=\"100%\"\n height=\"100%\"\n >\n <FlexView $justifyContent=\"center\" $alignItems=\"center\" $flexGap={12}>\n <Image\n src={imageUrl ?? ''}\n width={68}\n height={68}\n withLoader={false}\n alt=\"Puzzle\"\n />\n\n <Styled.HeaderText $renderAs=\"ab3\" $align=\"center\" $width=\"80%\">\n {title}\n </Styled.HeaderText>\n </FlexView>\n </PuzzleCard>\n </FlexView>\n\n <NodeCardTags\n nodeType={nodeType}\n state={state}\n accuracy={accuracy}\n dueDateTs={dueDateTs}\n isStudent={userType === 'STUDENT'}\n isMilestone={isMilestone}\n />\n {!isMilestone && dueDateTs && unlockedOnTs && (\n <NodeProgress\n dueDate={dueDateTs * 1000}\n unlockedOn={unlockedOnTs * 1000}\n progressBg={`${imageHue || 'ORANGE'}_5`}\n />\n )}\n </Styled.PuzzleCardWrapper>\n </ArrowTooltip>\n );\n }\n\n return (\n <FlexView\n ref={studentContainerRef}\n $widthX={12.38}\n $position=\"relative\"\n $background={`${imageHue || 'ORANGE'}_2`}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n >\n <Styled.CardWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={3.5}\n $bgImage={bgImage}\n $gutterX={0.78125}\n $flexGap={8.5}\n $position=\"relative\"\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $borderRadiusX={2}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n <LottieAnimation src={nodeCardLottie} ref={animationRef} settings={renderSettings} />\n </Styled.IconWrapper>\n <CardTitle cardHeader={cardHeader} nodeType={nodeType} courseType={courseType} />\n {isInQueue && (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Not visible to student\"\n position=\"bottom\"\n zIndex={6}\n >\n <ClosedEyeIcon />\n </ArrowTooltip>\n )}\n {!!imageUrl && (\n <Styled.BannerImageWrapper>\n <Styled.BannerImage src={imageUrl} alt=\"Chapter image\" />\n </Styled.BannerImageWrapper>\n )}\n </Styled.CardWrapper>\n <NodeCardTags\n nodeType={nodeType}\n state={state}\n accuracy={accuracy}\n dueDateTs={dueDateTs}\n isStudent={userType === 'STUDENT'}\n isMilestone={isMilestone}\n />\n {!isMilestone && dueDateTs && unlockedOnTs && (\n <NodeProgress\n dueDate={dueDateTs * 1000}\n unlockedOn={unlockedOnTs * 1000}\n progressBg={`${imageHue || 'ORANGE'}_4`}\n />\n )}\n <FlexView $gutterX={0.75} $gapX={1} $flexRowGapX={0.5} $background=\"WHITE\">\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={header}\n width={300}\n hidden={!showTitleTooltip}\n parentWidth=\"auto\"\n zIndex={6}\n >\n <FlexView $heightX={2.5}>\n <Styled.HeaderText ref={titleTextRef} $renderAs=\"ab3\">\n {header}\n </Styled.HeaderText>\n </FlexView>\n </ArrowTooltip>\n <FlexView\n $flexDirection=\"row\"\n $heightX={1.25}\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n >\n <Styled.SubHeaderText $renderAs=\"ub3\" $color=\"BLACK_T_60\">\n {subHeader}\n </Styled.SubHeaderText>\n <FlexView $width={32} />\n </FlexView>\n </FlexView>\n </FlexView>\n );\n};\n\nexport default memo(HomeworkView);\n"],"names":["renderSettings","HomeworkView","header","isInQueue","nodeData","studentContainerRef","subHeader","userType","isMilestone","nodeType","state","accuracy","dueDateTs","imageUrl","imageHue","cardHeader","unlockedOnTs","courseType","title","isPuzzleCard","isPuzzleDisabled","showTitleTooltip","setShowTitleTooltip","useState","titleTextRef","useRef","bgImage","getNodeTypeBasedBgImage","animationRef","nodeCardLottie","getNodeCardBasedIcon","handleOnMouseEnter","useCallback","_a","handleOnMouseLeave","useLayoutEffect","jsx","ArrowTooltip","jsxs","Styled.PuzzleCardWrapper","FlexView","PuzzleCard","Image","Styled.HeaderText","NodeCardTags","NodeProgress","Styled.CardWrapper","Styled.IconWrapper","LottieAnimation","CardTitle","ClosedEyeIcon","Styled.BannerImageWrapper","Styled.BannerImage","Styled.SubHeaderText","HomeworkView$1","memo"],"mappings":"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"}
1
+ {"version":3,"file":"homework-card-view.js","sources":["../../../src/features/homework/homework-card-view.tsx"],"sourcesContent":["import type { INodeDataProps } from '../chapters-v2/comps/node-card/node-card-types';\nimport type { ILottieAnimationRef } from '../ui/lottie-animation/types';\nimport type { TUserTypes } from '../ui/types';\nimport type { FC } from 'react';\n\nimport { memo, useCallback, useLayoutEffect, useRef, useState } from 'react';\n\nimport ClosedEyeIcon from '../../assets/line-icons/icons/closed-eye';\nimport NodeCardTags from '../chapters-v2/comps/node-card/node-card-tags';\nimport { getNodeTypeBasedBgImage } from '../chapters-v2/utils';\nimport { getNodeCardBasedIcon } from '../chapters-v2/utils/node-card-utils';\nimport PuzzleCard from '../puzzles/comps/puzzle-card';\nimport ArrowTooltip from '../ui/arrow-tooltip/arrow-tooltip';\nimport FlexView from '../ui/layout/flex-view';\nimport LottieAnimation from '../ui/lottie-animation/lottie-animation';\nimport CardTitle from './card-title';\nimport NodeProgress from './node-progress';\nimport * as Styled from './styles';\n\nconst renderSettings = { renderer: 'canvas', autoplay: false };\n\ninterface IHomeworkCardViewProps {\n header: string;\n isInQueue?: boolean;\n nodeData: INodeDataProps;\n studentContainerRef: React.RefObject<HTMLDivElement>;\n subHeader: string;\n userType: TUserTypes;\n isMilestone?: boolean;\n puzzleHWCardRef?: React.RefObject<HTMLDivElement>;\n}\n\nconst HomeworkView: FC<IHomeworkCardViewProps> = ({\n header,\n isInQueue,\n nodeData,\n studentContainerRef,\n subHeader,\n userType,\n isMilestone = false,\n puzzleHWCardRef,\n}) => {\n const {\n node_type: nodeType,\n state,\n accuracy,\n due_date_ts: dueDateTs,\n image_url: imageUrl,\n image_hue: imageHue,\n card_header: cardHeader = '',\n unlocked_on_ts: unlockedOnTs,\n course_type: courseType,\n title,\n } = nodeData;\n const isPuzzleCard = nodeType === 'PUZZLE_CARD';\n const isPuzzleDisabled = userType === 'STUDENT' && state === 'LOCKED';\n\n const [showTitleTooltip, setShowTitleTooltip] = useState(false);\n const titleTextRef = useRef<HTMLDivElement>(null);\n const bgImage = getNodeTypeBasedBgImage(nodeType);\n const animationRef = useRef<ILottieAnimationRef | null>(null);\n const { lottie: nodeCardLottie } = getNodeCardBasedIcon(nodeType);\n\n const handleOnMouseEnter = useCallback(() => {\n animationRef.current?.play();\n }, []);\n\n const handleOnMouseLeave = useCallback(() => {\n animationRef.current?.stop();\n }, []);\n\n useLayoutEffect(() => {\n if (\n titleTextRef.current &&\n titleTextRef.current.scrollHeight > titleTextRef.current.clientHeight\n ) {\n setShowTitleTooltip(true);\n }\n }, []);\n\n if (isPuzzleCard) {\n return (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Solve puzzle after class\"\n position=\"bottom\"\n hidden={!isPuzzleDisabled}\n >\n <div ref={puzzleHWCardRef}>\n <Styled.PuzzleCardWrapper\n ref={studentContainerRef}\n $position=\"relative\"\n $background={`${imageHue}_2`}\n $disabled={isPuzzleDisabled}\n >\n <PuzzleCard\n imageHue={imageHue}\n imageUrl={imageUrl ?? ''}\n title={title}\n width={126}\n height={159}\n />\n\n <NodeCardTags\n nodeType={nodeType}\n state={state}\n accuracy={accuracy}\n dueDateTs={dueDateTs}\n isStudent={userType === 'STUDENT'}\n isMilestone={isMilestone}\n />\n {!isMilestone && dueDateTs && unlockedOnTs && (\n <NodeProgress\n dueDate={dueDateTs * 1000}\n unlockedOn={unlockedOnTs * 1000}\n progressBg={`${imageHue || 'ORANGE'}_5`}\n />\n )}\n </Styled.PuzzleCardWrapper>\n </div>\n </ArrowTooltip>\n );\n }\n\n return (\n <FlexView\n ref={studentContainerRef}\n $widthX={12.38}\n $position=\"relative\"\n $background={`${imageHue || 'ORANGE'}_2`}\n onMouseEnter={handleOnMouseEnter}\n onMouseLeave={handleOnMouseLeave}\n >\n <Styled.CardWrapper\n $flexDirection=\"row\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={3.5}\n $bgImage={bgImage}\n $gutterX={0.78125}\n $flexGap={8.5}\n $position=\"relative\"\n >\n <Styled.IconWrapper\n $width={31}\n $height={31}\n $borderRadiusX={2}\n $background=\"WHITE_1\"\n $position=\"relative\"\n $alignItems=\"center\"\n $justifyContent=\"center\"\n >\n <LottieAnimation src={nodeCardLottie} ref={animationRef} settings={renderSettings} />\n </Styled.IconWrapper>\n <CardTitle cardHeader={cardHeader} nodeType={nodeType} courseType={courseType} />\n {isInQueue && (\n <ArrowTooltip\n renderAs=\"primary\"\n tooltipItem=\"Not visible to student\"\n position=\"bottom\"\n zIndex={6}\n >\n <ClosedEyeIcon />\n </ArrowTooltip>\n )}\n {!!imageUrl && (\n <Styled.BannerImageWrapper>\n <Styled.BannerImage src={imageUrl} alt=\"Chapter image\" />\n </Styled.BannerImageWrapper>\n )}\n </Styled.CardWrapper>\n <NodeCardTags\n nodeType={nodeType}\n state={state}\n accuracy={accuracy}\n dueDateTs={dueDateTs}\n isStudent={userType === 'STUDENT'}\n isMilestone={isMilestone}\n />\n {!isMilestone && dueDateTs && unlockedOnTs && (\n <NodeProgress\n dueDate={dueDateTs * 1000}\n unlockedOn={unlockedOnTs * 1000}\n progressBg={`${imageHue || 'ORANGE'}_4`}\n />\n )}\n <FlexView $gutterX={0.75} $gapX={1} $flexRowGapX={0.5} $background=\"WHITE\">\n <ArrowTooltip\n renderAs=\"primary\"\n position=\"bottom\"\n tooltipItem={header}\n width={300}\n hidden={!showTitleTooltip}\n parentWidth=\"auto\"\n zIndex={6}\n >\n <FlexView $heightX={2.5}>\n <Styled.HeaderText ref={titleTextRef} $renderAs=\"ab3\">\n {header}\n </Styled.HeaderText>\n </FlexView>\n </ArrowTooltip>\n <FlexView\n $flexDirection=\"row\"\n $heightX={1.25}\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n >\n <Styled.SubHeaderText $renderAs=\"ub3\" $color=\"BLACK_T_60\">\n {subHeader}\n </Styled.SubHeaderText>\n <FlexView $width={32} />\n </FlexView>\n </FlexView>\n </FlexView>\n );\n};\n\nexport default memo(HomeworkView);\n"],"names":["renderSettings","HomeworkView","header","isInQueue","nodeData","studentContainerRef","subHeader","userType","isMilestone","puzzleHWCardRef","nodeType","state","accuracy","dueDateTs","imageUrl","imageHue","cardHeader","unlockedOnTs","courseType","title","isPuzzleCard","isPuzzleDisabled","showTitleTooltip","setShowTitleTooltip","useState","titleTextRef","useRef","bgImage","getNodeTypeBasedBgImage","animationRef","nodeCardLottie","getNodeCardBasedIcon","handleOnMouseEnter","useCallback","_a","handleOnMouseLeave","useLayoutEffect","jsx","ArrowTooltip","jsxs","Styled.PuzzleCardWrapper","PuzzleCard","NodeCardTags","NodeProgress","FlexView","Styled.CardWrapper","Styled.IconWrapper","LottieAnimation","CardTitle","ClosedEyeIcon","Styled.BannerImageWrapper","Styled.BannerImage","Styled.HeaderText","Styled.SubHeaderText","HomeworkCardView","memo"],"mappings":"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"}