@cuemath/leap 3.5.46 → 3.5.47-gg10

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 (182) hide show
  1. package/dist/assets/line-icons/icons/bulb.js +10 -10
  2. package/dist/assets/line-icons/icons/bulb.js.map +1 -1
  3. package/dist/assets/line-icons/icons/chevron-up.js +28 -0
  4. package/dist/assets/line-icons/icons/chevron-up.js.map +1 -0
  5. package/dist/assets/line-icons/icons/close.js +28 -0
  6. package/dist/assets/line-icons/icons/close.js.map +1 -0
  7. package/dist/assets/line-icons/icons/cursor2.js +24 -0
  8. package/dist/assets/line-icons/icons/cursor2.js.map +1 -0
  9. package/dist/assets/line-icons/icons/hand.js.map +1 -1
  10. package/dist/assets/line-icons/icons/hints.js +25 -0
  11. package/dist/assets/line-icons/icons/hints.js.map +1 -0
  12. package/dist/assets/line-icons/icons/question-feedback.js +30 -0
  13. package/dist/assets/line-icons/icons/question-feedback.js.map +1 -0
  14. package/dist/assets/line-icons/icons/scribble.js +13 -36
  15. package/dist/assets/line-icons/icons/scribble.js.map +1 -1
  16. package/dist/assets/line-icons/icons/sticker.js +9 -9
  17. package/dist/assets/line-icons/icons/sticker.js.map +1 -1
  18. package/dist/assets/line-icons/icons/teaching-tools.js +40 -0
  19. package/dist/assets/line-icons/icons/teaching-tools.js.map +1 -0
  20. package/dist/assets/line-icons/icons/tval-question.js +32 -0
  21. package/dist/assets/line-icons/icons/tval-question.js.map +1 -0
  22. package/dist/features/circle-games/hooks/use-circle-sounds/constants.js +4 -7
  23. package/dist/features/circle-games/hooks/use-circle-sounds/constants.js.map +1 -1
  24. package/dist/features/circle-games/hooks/use-circle-sounds/helper.js +19 -0
  25. package/dist/features/circle-games/hooks/use-circle-sounds/helper.js.map +1 -0
  26. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js +110 -51
  27. package/dist/features/circle-games/hooks/use-circle-sounds/use-circle-sounds.js.map +1 -1
  28. package/dist/features/cue-canvas/sidebar/puzzles/api/get-puzzles.js.map +1 -1
  29. package/dist/features/hooks/use-audio-player.js +54 -0
  30. package/dist/features/hooks/use-audio-player.js.map +1 -0
  31. package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js +6 -6
  32. package/dist/features/journey/hooks/use-home-page-journey/home-page-homeworks-mock.js.map +1 -1
  33. package/dist/features/journey/hooks/use-home-page-journey/recent-chapters-mock.js +2 -2
  34. package/dist/features/journey/hooks/use-home-page-journey/recent-chapters-mock.js.map +1 -1
  35. package/dist/features/journey/mocks/chapter-page-journey-mock-data.js +64 -29
  36. package/dist/features/journey/mocks/chapter-page-journey-mock-data.js.map +1 -1
  37. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +9 -9
  38. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
  39. package/dist/features/puzzles/app/puzzle-app-view.js +40 -40
  40. package/dist/features/puzzles/app/puzzle-app-view.js.map +1 -1
  41. package/dist/features/ui/tabs/tabs.js +15 -15
  42. package/dist/features/ui/tabs/tabs.js.map +1 -1
  43. package/dist/features/worksheet/learnosity-preloader/learnosity-preloader.js +0 -1
  44. package/dist/features/worksheet/learnosity-preloader/learnosity-preloader.js.map +1 -1
  45. package/dist/features/worksheet/worksheet/constants.js +12 -13
  46. package/dist/features/worksheet/worksheet/constants.js.map +1 -1
  47. package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js +120 -101
  48. package/dist/features/worksheet/worksheet/hooks/use-create-imperative-handle.js.map +1 -1
  49. package/dist/features/worksheet/worksheet/hooks/use-worksheet-store.js +1 -1
  50. package/dist/features/worksheet/worksheet/hooks/use-worksheet-store.js.map +1 -1
  51. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js +40 -109
  52. package/dist/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.js.map +1 -1
  53. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +49 -46
  54. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  55. package/dist/features/worksheet/worksheet/worksheet-calculator/worksheet-calculator.js +4 -4
  56. package/dist/features/worksheet/worksheet/worksheet-calculator/worksheet-calculator.js.map +1 -1
  57. package/dist/features/worksheet/worksheet/worksheet-helpers.js +127 -274
  58. package/dist/features/worksheet/worksheet/worksheet-helpers.js.map +1 -1
  59. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js +25 -25
  60. package/dist/features/worksheet/worksheet/worksheet-navigation/worksheet-navigation.js.map +1 -1
  61. package/dist/features/worksheet/worksheet/worksheet-provider.js +1 -1
  62. package/dist/features/worksheet/worksheet/worksheet-provider.js.map +1 -1
  63. package/dist/features/worksheet/worksheet/worksheet-question/subjective-styled.js +17 -22
  64. package/dist/features/worksheet/worksheet/worksheet-question/subjective-styled.js.map +1 -1
  65. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js +25 -29
  66. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question-styled.js.map +1 -1
  67. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js +319 -259
  68. package/dist/features/worksheet/worksheet/worksheet-question/worksheet-question.js.map +1 -1
  69. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-allow-retry-button-click.js +15 -0
  70. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-allow-retry-button-click.js.map +1 -0
  71. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-back-button-click.js +18 -0
  72. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-back-button-click.js.map +1 -0
  73. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-check-button-click.js +21 -0
  74. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-check-button-click.js.map +1 -0
  75. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-next-button-click.js +19 -0
  76. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-next-button-click.js.map +1 -0
  77. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-ready-button-click.js +34 -0
  78. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-ready-button-click.js.map +1 -0
  79. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-response-change.js +38 -0
  80. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-response-change.js.map +1 -0
  81. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-retry-button-click.js +16 -0
  82. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-retry-button-click.js.map +1 -0
  83. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-button-click.js +35 -0
  84. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-button-click.js.map +1 -0
  85. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-section-button-click.js +12 -0
  86. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-skip-section-button-click.js.map +1 -0
  87. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-start-button-click.js +44 -0
  88. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-start-button-click.js.map +1 -0
  89. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-submit-quiz.js +51 -0
  90. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-submit-quiz.js.map +1 -0
  91. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-validate-button-click.js +19 -0
  92. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-handle-validate-button-click.js.map +1 -0
  93. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-play-validation-audio.js +23 -0
  94. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-play-validation-audio.js.map +1 -0
  95. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-validate-question.js +36 -0
  96. package/dist/features/worksheet/worksheet/worksheet-questions-controller/hooks/use-validate-question.js.map +1 -0
  97. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3.js +184 -0
  98. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3.js.map +1 -0
  99. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3_1.js +258 -0
  100. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller-lesson-v3_1.js.map +1 -0
  101. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller.js +180 -0
  102. package/dist/features/worksheet/worksheet/worksheet-questions-controller/student/controller.js.map +1 -0
  103. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3.js +77 -0
  104. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3.js.map +1 -0
  105. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3_1.js +103 -0
  106. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller-lesson-v3_1.js.map +1 -0
  107. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller.js +21 -0
  108. package/dist/features/worksheet/worksheet/worksheet-questions-controller/teacher/controller.js.map +1 -0
  109. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller-view.js +22 -0
  110. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller-view.js.map +1 -0
  111. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js +20 -345
  112. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
  113. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.js +49 -0
  114. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar-styled.js.map +1 -0
  115. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.js +184 -0
  116. package/dist/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.js.map +1 -0
  117. package/dist/features/worksheet/worksheet/worksheet-questions-tools/scribble-switch.js +65 -0
  118. package/dist/features/worksheet/worksheet/worksheet-questions-tools/scribble-switch.js.map +1 -0
  119. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-styled.js +9 -0
  120. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-styled.js.map +1 -0
  121. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-tools.js +38 -0
  122. package/dist/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-tools.js.map +1 -0
  123. package/dist/features/worksheet/worksheet/worksheet-sidebar/navigator.js +33 -20
  124. package/dist/features/worksheet/worksheet/worksheet-sidebar/navigator.js.map +1 -1
  125. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-computed-properties.js +73 -0
  126. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-computed-properties.js.map +1 -0
  127. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-derived-blocker.js +20 -0
  128. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-derived-blocker.js.map +1 -0
  129. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-attemptable-question-index.js +69 -0
  130. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-attemptable-question-index.js.map +1 -0
  131. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-unlocked-question-index.js +18 -0
  132. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-last-unlocked-question-index.js.map +1 -0
  133. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-merged-response-state.js +19 -0
  134. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-merged-response-state.js.map +1 -0
  135. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-questions-from-items.js +138 -0
  136. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-questions-from-items.js.map +1 -0
  137. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-renderable-questions.js +9 -0
  138. package/dist/features/worksheet/worksheet/worksheet-store/helpers/get-renderable-questions.js.map +1 -0
  139. package/dist/features/worksheet/worksheet/worksheet-store/worksheet-store.js +230 -0
  140. package/dist/features/worksheet/worksheet/worksheet-store/worksheet-store.js.map +1 -0
  141. package/dist/features/worksheet/worksheet/worksheet-styled.js +29 -83
  142. package/dist/features/worksheet/worksheet/worksheet-styled.js.map +1 -1
  143. package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js +45 -24
  144. package/dist/features/worksheet/worksheet/worksheet-summary-controller/worksheet-summary-controller.js.map +1 -1
  145. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools-styled.js +19 -0
  146. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools-styled.js.map +1 -0
  147. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools.js +66 -0
  148. package/dist/features/worksheet/worksheet/worksheet-teaching-tools/worksheet-teaching-tools.js.map +1 -0
  149. package/dist/features/worksheet/worksheet/worksheet-types.js +3 -2
  150. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  151. package/dist/features/worksheet/worksheet/worksheet-view.js +89 -100
  152. package/dist/features/worksheet/worksheet/worksheet-view.js.map +1 -1
  153. package/dist/features/worksheet/worksheet/worksheet.js +126 -117
  154. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  155. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js +29 -29
  156. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js.map +1 -1
  157. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +16 -16
  158. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  159. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +24 -24
  160. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  161. package/dist/index.d.ts +67 -28
  162. package/dist/index.js +760 -745
  163. package/dist/index.js.map +1 -1
  164. package/dist/types/models/worksheet.js +2 -1
  165. package/dist/types/models/worksheet.js.map +1 -1
  166. package/package.json +2 -2
  167. package/dist/features/hooks/use-audio-player/use-audio-player.js +0 -164
  168. package/dist/features/hooks/use-audio-player/use-audio-player.js.map +0 -1
  169. package/dist/features/worksheet/worksheet/question-tips.js +0 -100
  170. package/dist/features/worksheet/worksheet/question-tips.js.map +0 -1
  171. package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js +0 -53
  172. package/dist/features/worksheet/worksheet/worksheet-questions-controller/scribble-switch.js.map +0 -1
  173. package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js +0 -195
  174. package/dist/features/worksheet/worksheet/worksheet-questions-controller/use-handler-callbacks.js.map +0 -1
  175. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js +0 -112
  176. package/dist/features/worksheet/worksheet/worksheet-sidebar/question-guide.js.map +0 -1
  177. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js +0 -61
  178. package/dist/features/worksheet/worksheet/worksheet-sidebar/sidebar.js.map +0 -1
  179. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js +0 -91
  180. package/dist/features/worksheet/worksheet/worksheet-sidebar/worksheet-sidebar-styled.js.map +0 -1
  181. package/dist/features/worksheet/worksheet/worksheet-store.js +0 -289
  182. package/dist/features/worksheet/worksheet/worksheet-store.js.map +0 -1
@@ -1,188 +1,207 @@
1
- import { useCallback as O, useImperativeHandle as k } from "react";
2
- import { useAudioPlayer as H } from "../../../hooks/use-audio-player/use-audio-player.js";
3
- import { useAutoPlayPermission as V } from "../../../hooks/use-auto-play-permission/use-auto-play-permission.js";
4
- import { TEACHER_VALIDATION_AUDIO_LIST as G } from "../constants.js";
5
- import { getQuestionMetadata as u, isConceptIntroWidget as $ } from "../worksheet-helpers.js";
6
- import { QUESTIONS_RATING as j, QUESTION_TAGS as l } from "../worksheet-types.js";
7
- import { useWorksheetStore as z } from "./use-worksheet-store.js";
8
- const B = (b, { getTimeSpentOnQuestion: y }) => {
9
- const { onResponseChange: Q, onBulkResponsesChange: n, behavior: w, questions: s, setResponses: m } = z((t) => ({
1
+ import { useCallback as E, useImperativeHandle as k } from "react";
2
+ import H from "../../../hooks/use-audio-player.js";
3
+ import { TEACHER_VALIDATION_AUDIO_LIST as V } from "../constants.js";
4
+ import { getQuestionMetadata as m, isConceptIntroWidget as C } from "../worksheet-helpers.js";
5
+ import { QUESTIONS_RATING as G, QUESTION_TAGS as Q } from "../worksheet-types.js";
6
+ import { useWorksheetStore as $ } from "./use-worksheet-store.js";
7
+ const Y = (W, { getTimeSpentOnQuestion: O }) => {
8
+ const { onResponseChange: p, onBulkResponsesChange: s, behavior: M, questions: i, setResponses: c } = $((t) => ({
10
9
  onResponseChange: t.onResponseChange,
11
10
  onBulkResponsesChange: t.onBulkResponsesChange,
12
11
  behavior: t.behavior,
13
12
  questions: t.questions,
14
13
  setResponses: t.setResponses
15
- })), { navigationMode: g } = w, { canAutoPlayAudio: C } = V(), M = G.reduce(
16
- (t, { name: r, url: d }) => (t[r] = d, t),
17
- {}
18
- ), h = H(M, C), N = O(
14
+ })), { navigationMode: N } = M, h = H(V), x = E(
19
15
  (t, r, d) => {
20
- h.play("VALIDATE");
21
- const a = y(t);
22
- m((e) => {
23
- var L, D;
24
- const _ = s.findIndex((p) => p.response_id === t), i = s[_], o = {
25
- ...u(s, t),
16
+ h("VALIDATE");
17
+ const a = O(t);
18
+ c((e) => {
19
+ var b, g;
20
+ const o = i.findIndex((l) => l.response_id === t), n = i[o], _ = {
21
+ ...m(i, t),
26
22
  ...e[t],
27
23
  validatedByTeacher: !0,
28
- rating: r ? j[r] : void 0,
24
+ rating: r ? G[r] : void 0,
29
25
  timeSpent: a
30
26
  };
31
- if (g === "ADAPTIVE") {
32
- if ((L = e[t]) != null && L.validatedByTeacher)
27
+ if (N === "ADAPTIVE") {
28
+ if ((b = e[t]) != null && b.validatedByTeacher)
33
29
  return e;
34
- const p = i.item_tags_map[l.TRIAL_TOPIC], I = i.item_tags_map[l.QUESTION_CODE], A = I && I.length < 3 ? `${I}${r}` : "Q", c = s.findIndex((f, S) => S <= _ ? !1 : A !== "Q" ? f.item_tags_map[l.TRIAL_TOPIC] === p && f.item_tags_map[l.QUESTION_CODE] === A : f.item_tags_map[l.TRIAL_TOPIC] !== p), T = {
35
- [t]: o,
36
- ...s.reduce(
37
- (f, S, W) => (W <= _ || c > -1 && W >= c || (f[S.response_id] = {
38
- ...u(s, S.response_id),
39
- ...e[S.response_id],
30
+ const l = n.item_tags_map[Q.TRIAL_TOPIC], S = n.item_tags_map[Q.QUESTION_CODE], T = S && S.length < 3 ? `${S}${r}` : "Q", f = i.findIndex((u, A) => A <= o ? !1 : T !== "Q" ? u.item_tags_map[Q.TRIAL_TOPIC] === l && u.item_tags_map[Q.QUESTION_CODE] === T : u.item_tags_map[Q.TRIAL_TOPIC] !== l), I = {
31
+ [t]: _,
32
+ ...i.reduce(
33
+ (u, A, D) => (D <= o || f > -1 && D >= f || (u[A.response_id] = {
34
+ ...m(i, A.response_id),
35
+ ...e[A.response_id],
40
36
  assignStatus: "skipped"
41
- }), f),
37
+ }), u),
42
38
  {}
43
39
  )
44
- }, E = (D = s[c]) == null ? void 0 : D.response_id;
45
- return E ? n == null || n({
46
- ...T,
47
- [E]: {
48
- ...e[E],
49
- ...u(s, E),
40
+ }, y = (g = i[f]) == null ? void 0 : g.response_id;
41
+ return y ? s == null || s({
42
+ ...I,
43
+ [y]: {
44
+ ...e[y],
45
+ ...m(i, y),
50
46
  assignStatus: void 0
51
47
  }
52
- }) : n == null || n(T), {
48
+ }) : s == null || s(I), {
53
49
  ...e,
54
- ...T
50
+ ...I
55
51
  };
56
52
  }
57
53
  if (d) {
58
- const { item_reference: p } = i, I = {
59
- [t]: o,
60
- ...s.reduce(
61
- (A, c) => {
62
- var T;
63
- return c.response_id !== i.response_id && c.item_reference === p && !((T = e[c.response_id]) != null && T.validatedByTeacher) && (A[c.response_id] = {
64
- ...u(s, c.response_id),
65
- ...e[c.response_id],
54
+ const { item_reference: l } = n, S = {
55
+ [t]: _,
56
+ ...i.reduce(
57
+ (T, f) => {
58
+ var I;
59
+ return f.response_id !== n.response_id && f.item_reference === l && !((I = e[f.response_id]) != null && I.validatedByTeacher) && (T[f.response_id] = {
60
+ ...m(i, f.response_id),
61
+ ...e[f.response_id],
66
62
  assignStatus: "skipped"
67
- }), A;
63
+ }), T;
68
64
  },
69
65
  {}
70
66
  )
71
67
  };
72
- return n == null || n({
68
+ return s == null || s({
73
69
  ...e,
74
- ...I
70
+ ...S
75
71
  }), {
76
72
  ...e,
77
- ...I
73
+ ...S
78
74
  };
79
75
  }
80
- return g === "CURRENT" && i.item_number === 0 ? n == null || n({
76
+ return N === "CURRENT" && n.item_number === 0 ? s == null || s({
81
77
  ...e,
82
- [t]: o
83
- }) : Q == null || Q({
78
+ [t]: _
79
+ }) : p == null || p({
84
80
  responseId: t,
85
- response: o,
86
- question: i,
81
+ response: _,
82
+ question: n,
87
83
  isNewAttempt: !1
88
84
  }), {
89
85
  ...e,
90
- [t]: o
86
+ [t]: _
91
87
  };
92
88
  });
93
89
  },
94
90
  [
95
- y,
96
- g,
97
- n,
98
- Q,
99
- h,
91
+ O,
92
+ N,
100
93
  s,
101
- m
94
+ p,
95
+ h,
96
+ i,
97
+ c
102
98
  ]
103
- ), P = O(
99
+ ), U = E(
104
100
  (t) => {
105
- m((r) => {
106
- const d = s.filter(
101
+ c((r) => {
102
+ const d = i.filter(
107
103
  (e) => {
108
- var _;
109
- return t.startsWith("advanced-") ? (_ = e.item_type) == null ? void 0 : _.startsWith("advanced-") : e.item_type === t;
104
+ var o;
105
+ return t.startsWith("advanced-") ? (o = e.item_type) == null ? void 0 : o.startsWith("advanced-") : e.item_type === t;
110
106
  }
111
107
  ), a = {};
112
108
  return d.length > 0 ? (d.forEach((e) => {
113
109
  a[e.response_id] = {
114
- ...u(s, e.response_id),
110
+ ...m(i, e.response_id),
115
111
  ...r[e.response_id],
116
112
  assignStatus: "assigned"
117
113
  };
118
- }), n == null || n(a), {
114
+ }), s == null || s(a), {
119
115
  ...r,
120
116
  ...a
121
117
  }) : r;
122
118
  });
123
119
  },
124
- [n, s, m]
125
- ), U = O(
120
+ [s, i, c]
121
+ ), w = E(
126
122
  (t) => {
127
- m((r) => {
128
- const d = s.filter(
129
- (_) => {
130
- var i;
131
- return t.startsWith("advanced-") ? (i = _.item_type) == null ? void 0 : i.startsWith("advanced-") : _.item_type === t;
123
+ c((r) => {
124
+ const d = i.filter(
125
+ (o) => {
126
+ var n;
127
+ return t.startsWith("advanced-") ? (n = o.item_type) == null ? void 0 : n.startsWith("advanced-") : o.item_type === t;
132
128
  }
133
129
  ), a = {}, e = [];
134
- return d.length > 0 ? (d.forEach((i) => {
135
- const o = r[i.response_id];
136
- o != null && o.validatedByTeacher ? e.push(i) : a[i.response_id] = {
137
- ...u(s, i.response_id),
138
- ...o,
130
+ return d.length > 0 ? (d.forEach((n) => {
131
+ const _ = r[n.response_id];
132
+ _ != null && _.validatedByTeacher ? e.push(n) : a[n.response_id] = {
133
+ ...m(i, n.response_id),
134
+ ..._,
139
135
  assignStatus: "skipped"
140
136
  };
141
137
  }), e.some(
142
- ({ instructor_stimulus: i }) => !(i === "SystemIntro" || $(i))
143
- ) || e.forEach((i) => {
144
- a[i.response_id] = {
145
- ...u(s, i.response_id),
146
- ...r[i.response_id],
138
+ ({ instructor_stimulus: n }) => !(n === "SystemIntro" || C(n))
139
+ ) || e.forEach((n) => {
140
+ a[n.response_id] = {
141
+ ...m(i, n.response_id),
142
+ ...r[n.response_id],
147
143
  assignStatus: "skipped"
148
144
  };
149
- }), n == null || n(a), {
145
+ }), s == null || s(a), {
150
146
  ...r,
151
147
  ...a
152
148
  }) : r;
153
149
  });
154
150
  },
155
- [n, s, m]
156
- ), x = O(
151
+ [s, i, c]
152
+ ), L = E(
157
153
  (t, r, d) => {
158
154
  const a = r === "SIMULATION" ? "simState" : void 0;
159
- a && m((e) => {
160
- if (!s.find((o) => o.response_id === t)) return e;
161
- const i = {
162
- ...u(s, t),
155
+ a && c((e) => {
156
+ if (!i.find((_) => _.response_id === t)) return e;
157
+ const n = {
158
+ ...m(i, t),
163
159
  ...e[t],
164
160
  [a]: d
165
161
  };
166
162
  return {
167
163
  ...e,
168
- [t]: i
164
+ [t]: n
165
+ };
166
+ });
167
+ },
168
+ [i, c]
169
+ ), P = E(
170
+ (t) => {
171
+ const r = O(t);
172
+ c((d) => {
173
+ const a = i.findIndex((n) => n.response_id === t), e = i[a], o = {
174
+ ...m(i, t),
175
+ ...d[t],
176
+ timeSpent: r,
177
+ retryEnabled: !0
178
+ };
179
+ return p == null || p({
180
+ responseId: t,
181
+ response: o,
182
+ question: e,
183
+ isNewAttempt: !1
184
+ }), {
185
+ ...d,
186
+ [t]: o
169
187
  };
170
188
  });
171
189
  },
172
- [s, m]
190
+ [O, p, i, c]
173
191
  );
174
192
  k(
175
- b,
193
+ W,
176
194
  () => ({
177
- validateQuestion: N,
178
- assignOptionalItems: P,
179
- skipOptionalItems: U,
180
- updateMediaState: x
195
+ validateQuestion: x,
196
+ assignOptionalItems: U,
197
+ skipOptionalItems: w,
198
+ updateMediaState: L,
199
+ allowRetry: P
181
200
  }),
182
- [P, U, x, N]
201
+ [P, U, w, L, x]
183
202
  );
184
203
  };
185
204
  export {
186
- B as default
205
+ Y as default
187
206
  };
188
207
  //# sourceMappingURL=use-create-imperative-handle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-create-imperative-handle.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-create-imperative-handle.ts"],"sourcesContent":["import { useCallback, useImperativeHandle, type ForwardedRef } from 'react';\n\nimport { useAudioPlayer } from '../../../hooks/use-audio-player/use-audio-player';\nimport { useAutoPlayPermission } from '../../../hooks/use-auto-play-permission/use-auto-play-permission';\nimport { TEACHER_VALIDATION_AUDIO_LIST } from '../constants';\nimport { getQuestionMetadata, isConceptIntroWidget } from '../worksheet-helpers';\nimport {\n QUESTION_TAGS,\n QUESTIONS_RATING,\n type IWorksheetQuestion,\n type IWorksheetRef,\n type IWorksheetResponse,\n} from '../worksheet-types';\nimport { useWorksheetStore } from './use-worksheet-store';\n\ninterface IUseCreateImperativeHandle {\n (\n ref: ForwardedRef<IWorksheetRef>,\n options: {\n getTimeSpentOnQuestion: (questionId: string) => number;\n },\n ): void;\n}\n\nconst useCreateImperativeHandle: IUseCreateImperativeHandle = (ref, { getTimeSpentOnQuestion }) => {\n const { onResponseChange, onBulkResponsesChange, behavior, questions, setResponses } =\n useWorksheetStore(store => ({\n onResponseChange: store.onResponseChange,\n onBulkResponsesChange: store.onBulkResponsesChange,\n behavior: store.behavior,\n questions: store.questions,\n setResponses: store.setResponses,\n }));\n const { navigationMode } = behavior;\n const { canAutoPlayAudio } = useAutoPlayPermission();\n\n // Convert array to object config for new useAudioPlayer\n const audioConfig = TEACHER_VALIDATION_AUDIO_LIST.reduce(\n (acc, { name, url }) => {\n acc[name] = url;\n\n return acc;\n },\n {} as Record<string, string>,\n );\n\n const audioManager = useAudioPlayer(audioConfig, canAutoPlayAudio);\n const validateQuestion = useCallback<IWorksheetRef['validateQuestion']>(\n (questionId, rating, skipRemainingQuestions) => {\n audioManager.play('VALIDATE');\n const timeSpentOnQuestion = getTimeSpentOnQuestion(questionId);\n\n setResponses(prevResponses => {\n const questionIndex = questions.findIndex(q => q.response_id === questionId);\n const question = questions[questionIndex]!;\n\n const newResponse = {\n ...getQuestionMetadata(questions, questionId),\n ...prevResponses[questionId],\n validatedByTeacher: true,\n rating: rating ? QUESTIONS_RATING[rating] : undefined,\n timeSpent: timeSpentOnQuestion,\n };\n\n if (navigationMode === 'ADAPTIVE') {\n if (prevResponses[questionId]?.validatedByTeacher) {\n return prevResponses;\n }\n\n const topicName = question.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC];\n const questionCode = question.item_tags_map[QUESTION_TAGS.QUESTION_CODE];\n const nextQuestionCode =\n questionCode && questionCode.length < 3 ? `${questionCode}${rating}` : 'Q';\n const nextQuestionIndex = questions.findIndex((q, qIndex) => {\n if (qIndex <= questionIndex) return false;\n\n if (nextQuestionCode !== 'Q') {\n return (\n q.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC] === topicName &&\n q.item_tags_map[QUESTION_TAGS.QUESTION_CODE] === nextQuestionCode\n );\n }\n\n return q.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC] !== topicName;\n });\n\n const newResponses = {\n [questionId]: newResponse,\n ...questions.reduce(\n (acc, q, qIndex) => {\n if (qIndex <= questionIndex) return acc;\n\n if (nextQuestionIndex > -1 && qIndex >= nextQuestionIndex) return acc;\n\n acc[q.response_id] = {\n ...getQuestionMetadata(questions, q.response_id),\n ...prevResponses[q.response_id],\n assignStatus: 'skipped',\n };\n\n return acc;\n },\n {} as Record<string, IWorksheetResponse>,\n ),\n };\n const nextQuestionResponseId = questions[nextQuestionIndex]?.response_id;\n\n if (nextQuestionResponseId) {\n onBulkResponsesChange?.({\n ...newResponses,\n [nextQuestionResponseId]: {\n ...prevResponses[nextQuestionResponseId],\n ...getQuestionMetadata(questions, nextQuestionResponseId),\n assignStatus: undefined,\n },\n });\n } else {\n onBulkResponsesChange?.(newResponses);\n }\n\n return {\n ...prevResponses,\n ...newResponses,\n };\n }\n\n if (skipRemainingQuestions) {\n const { item_reference } = question;\n const newResponses = {\n [questionId]: newResponse,\n ...questions.reduce(\n (acc, q) => {\n if (\n q.response_id !== question.response_id &&\n q.item_reference === item_reference &&\n !prevResponses[q.response_id]?.validatedByTeacher\n ) {\n acc[q.response_id] = {\n ...getQuestionMetadata(questions, q.response_id),\n ...prevResponses[q.response_id],\n assignStatus: 'skipped',\n };\n }\n\n return acc;\n },\n {} as Record<string, IWorksheetResponse>,\n ),\n };\n\n onBulkResponsesChange?.({\n ...prevResponses,\n ...newResponses,\n });\n\n return {\n ...prevResponses,\n ...newResponses,\n };\n }\n\n if (navigationMode === 'CURRENT' && question.item_number === 0) {\n onBulkResponsesChange?.({\n ...prevResponses,\n [questionId]: newResponse,\n });\n } else {\n onResponseChange?.({\n responseId: questionId,\n response: newResponse,\n question,\n isNewAttempt: false,\n });\n }\n\n return {\n ...prevResponses,\n [questionId]: newResponse,\n };\n });\n },\n [\n getTimeSpentOnQuestion,\n navigationMode,\n onBulkResponsesChange,\n onResponseChange,\n audioManager,\n questions,\n setResponses,\n ],\n );\n\n const assignOptionalItems = useCallback<IWorksheetRef['assignOptionalItems']>(\n itemType => {\n setResponses(prevResponses => {\n const optionalQuestions = questions.filter(q =>\n itemType.startsWith('advanced-')\n ? q.item_type?.startsWith('advanced-')\n : q.item_type === itemType,\n );\n const assignedResponses: Record<string, IWorksheetResponse> = {};\n\n if (optionalQuestions.length > 0) {\n optionalQuestions.forEach(question => {\n assignedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponses[question.response_id],\n assignStatus: 'assigned',\n };\n });\n\n onBulkResponsesChange?.(assignedResponses);\n\n return {\n ...prevResponses,\n ...assignedResponses,\n };\n }\n\n return prevResponses;\n });\n },\n [onBulkResponsesChange, questions, setResponses],\n );\n\n const skipOptionalItems = useCallback<IWorksheetRef['skipOptionalItems']>(\n itemType => {\n setResponses(prevResponses => {\n const optionalQuestions = questions.filter(q =>\n itemType.startsWith('advanced-')\n ? q.item_type?.startsWith('advanced-')\n : q.item_type === itemType,\n );\n const skippedResponses: Record<string, IWorksheetResponse> = {};\n const unskippedQuestions: IWorksheetQuestion[] = [];\n\n if (optionalQuestions.length > 0) {\n optionalQuestions.forEach(question => {\n const prevResponse = prevResponses[question.response_id];\n\n if (!prevResponse?.validatedByTeacher) {\n skippedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponse,\n assignStatus: 'skipped',\n };\n } else {\n unskippedQuestions.push(question);\n }\n });\n\n const nonIntroUnskippedQuestionsPresent = unskippedQuestions.some(\n ({ instructor_stimulus }) =>\n !(instructor_stimulus === 'SystemIntro' || isConceptIntroWidget(instructor_stimulus)),\n );\n\n if (!nonIntroUnskippedQuestionsPresent) {\n unskippedQuestions.forEach(question => {\n skippedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponses[question.response_id],\n assignStatus: 'skipped',\n };\n });\n }\n\n onBulkResponsesChange?.(skippedResponses);\n\n return {\n ...prevResponses,\n ...skippedResponses,\n };\n }\n\n return prevResponses;\n });\n },\n [onBulkResponsesChange, questions, setResponses],\n );\n\n const updateMediaState = useCallback<IWorksheetRef['updateMediaState']>(\n (responseId, mediaType, mediaState) => {\n const key = mediaType === 'SIMULATION' ? 'simState' : undefined;\n\n if (!key) return;\n\n setResponses(prevResponses => {\n const question = questions.find(q => q.response_id === responseId);\n\n if (!question) return prevResponses;\n\n const newResponse = {\n ...getQuestionMetadata(questions, responseId),\n ...prevResponses[responseId],\n [key]: mediaState,\n };\n\n return {\n ...prevResponses,\n [responseId]: newResponse,\n };\n });\n },\n [questions, setResponses],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n validateQuestion,\n assignOptionalItems,\n skipOptionalItems,\n updateMediaState,\n }),\n [assignOptionalItems, skipOptionalItems, updateMediaState, validateQuestion],\n );\n};\n\nexport default useCreateImperativeHandle;\n"],"names":["useCreateImperativeHandle","ref","getTimeSpentOnQuestion","onResponseChange","onBulkResponsesChange","behavior","questions","setResponses","useWorksheetStore","store","navigationMode","canAutoPlayAudio","useAutoPlayPermission","audioConfig","TEACHER_VALIDATION_AUDIO_LIST","acc","name","url","audioManager","useAudioPlayer","validateQuestion","useCallback","questionId","rating","skipRemainingQuestions","timeSpentOnQuestion","prevResponses","questionIndex","q","question","newResponse","getQuestionMetadata","QUESTIONS_RATING","_a","topicName","QUESTION_TAGS","questionCode","nextQuestionCode","nextQuestionIndex","qIndex","newResponses","nextQuestionResponseId","_b","item_reference","assignOptionalItems","itemType","optionalQuestions","assignedResponses","skipOptionalItems","skippedResponses","unskippedQuestions","prevResponse","instructor_stimulus","isConceptIntroWidget","updateMediaState","responseId","mediaType","mediaState","key","useImperativeHandle"],"mappings":"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"}
1
+ {"version":3,"file":"use-create-imperative-handle.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-create-imperative-handle.ts"],"sourcesContent":["import { useCallback, useImperativeHandle, type ForwardedRef } from 'react';\n\nimport useAudioPlayer from '../../../hooks/use-audio-player';\nimport { TEACHER_VALIDATION_AUDIO_LIST } from '../constants';\nimport { getQuestionMetadata, isConceptIntroWidget } from '../worksheet-helpers';\nimport {\n QUESTION_TAGS,\n QUESTIONS_RATING,\n type IWorksheetQuestion,\n type IWorksheetRef,\n type IWorksheetResponse,\n} from '../worksheet-types';\nimport { useWorksheetStore } from './use-worksheet-store';\n\ninterface IUseCreateImperativeHandle {\n (\n ref: ForwardedRef<IWorksheetRef>,\n options: {\n getTimeSpentOnQuestion: (questionId: string) => number;\n },\n ): void;\n}\n\nconst useCreateImperativeHandle: IUseCreateImperativeHandle = (ref, { getTimeSpentOnQuestion }) => {\n const { onResponseChange, onBulkResponsesChange, behavior, questions, setResponses } =\n useWorksheetStore(store => ({\n onResponseChange: store.onResponseChange,\n onBulkResponsesChange: store.onBulkResponsesChange,\n behavior: store.behavior,\n questions: store.questions,\n setResponses: store.setResponses,\n }));\n const { navigationMode } = behavior;\n const playNotifSound = useAudioPlayer(TEACHER_VALIDATION_AUDIO_LIST);\n const validateQuestion = useCallback<IWorksheetRef['validateQuestion']>(\n (questionId, rating, skipRemainingQuestions) => {\n playNotifSound('VALIDATE');\n const timeSpentOnQuestion = getTimeSpentOnQuestion(questionId);\n\n setResponses(prevResponses => {\n const questionIndex = questions.findIndex(q => q.response_id === questionId);\n const question = questions[questionIndex]!;\n\n const newResponse = {\n ...getQuestionMetadata(questions, questionId),\n ...prevResponses[questionId],\n validatedByTeacher: true,\n rating: rating ? QUESTIONS_RATING[rating] : undefined,\n timeSpent: timeSpentOnQuestion,\n };\n\n if (navigationMode === 'ADAPTIVE') {\n if (prevResponses[questionId]?.validatedByTeacher) {\n return prevResponses;\n }\n\n const topicName = question.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC];\n const questionCode = question.item_tags_map[QUESTION_TAGS.QUESTION_CODE];\n const nextQuestionCode =\n questionCode && questionCode.length < 3 ? `${questionCode}${rating}` : 'Q';\n const nextQuestionIndex = questions.findIndex((q, qIndex) => {\n if (qIndex <= questionIndex) return false;\n\n if (nextQuestionCode !== 'Q') {\n return (\n q.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC] === topicName &&\n q.item_tags_map[QUESTION_TAGS.QUESTION_CODE] === nextQuestionCode\n );\n }\n\n return q.item_tags_map[QUESTION_TAGS.TRIAL_TOPIC] !== topicName;\n });\n\n const newResponses = {\n [questionId]: newResponse,\n ...questions.reduce(\n (acc, q, qIndex) => {\n if (qIndex <= questionIndex) return acc;\n\n if (nextQuestionIndex > -1 && qIndex >= nextQuestionIndex) return acc;\n\n acc[q.response_id] = {\n ...getQuestionMetadata(questions, q.response_id),\n ...prevResponses[q.response_id],\n assignStatus: 'skipped',\n };\n\n return acc;\n },\n {} as Record<string, IWorksheetResponse>,\n ),\n };\n const nextQuestionResponseId = questions[nextQuestionIndex]?.response_id;\n\n if (nextQuestionResponseId) {\n onBulkResponsesChange?.({\n ...newResponses,\n [nextQuestionResponseId]: {\n ...prevResponses[nextQuestionResponseId],\n ...getQuestionMetadata(questions, nextQuestionResponseId),\n assignStatus: undefined,\n },\n });\n } else {\n onBulkResponsesChange?.(newResponses);\n }\n\n return {\n ...prevResponses,\n ...newResponses,\n };\n }\n\n if (skipRemainingQuestions) {\n const { item_reference } = question;\n const newResponses = {\n [questionId]: newResponse,\n ...questions.reduce(\n (acc, q) => {\n if (\n q.response_id !== question.response_id &&\n q.item_reference === item_reference &&\n !prevResponses[q.response_id]?.validatedByTeacher\n ) {\n acc[q.response_id] = {\n ...getQuestionMetadata(questions, q.response_id),\n ...prevResponses[q.response_id],\n assignStatus: 'skipped',\n };\n }\n\n return acc;\n },\n {} as Record<string, IWorksheetResponse>,\n ),\n };\n\n onBulkResponsesChange?.({\n ...prevResponses,\n ...newResponses,\n });\n\n return {\n ...prevResponses,\n ...newResponses,\n };\n }\n\n if (navigationMode === 'CURRENT' && question.item_number === 0) {\n onBulkResponsesChange?.({\n ...prevResponses,\n [questionId]: newResponse,\n });\n } else {\n onResponseChange?.({\n responseId: questionId,\n response: newResponse,\n question,\n isNewAttempt: false,\n });\n }\n\n return {\n ...prevResponses,\n [questionId]: newResponse,\n };\n });\n },\n [\n getTimeSpentOnQuestion,\n navigationMode,\n onBulkResponsesChange,\n onResponseChange,\n playNotifSound,\n questions,\n setResponses,\n ],\n );\n\n const assignOptionalItems = useCallback<IWorksheetRef['assignOptionalItems']>(\n itemType => {\n setResponses(prevResponses => {\n const optionalQuestions = questions.filter(q =>\n itemType.startsWith('advanced-')\n ? q.item_type?.startsWith('advanced-')\n : q.item_type === itemType,\n );\n const assignedResponses: Record<string, IWorksheetResponse> = {};\n\n if (optionalQuestions.length > 0) {\n optionalQuestions.forEach(question => {\n assignedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponses[question.response_id],\n assignStatus: 'assigned',\n };\n });\n\n onBulkResponsesChange?.(assignedResponses);\n\n return {\n ...prevResponses,\n ...assignedResponses,\n };\n }\n\n return prevResponses;\n });\n },\n [onBulkResponsesChange, questions, setResponses],\n );\n\n const skipOptionalItems = useCallback<IWorksheetRef['skipOptionalItems']>(\n itemType => {\n setResponses(prevResponses => {\n const optionalQuestions = questions.filter(q =>\n itemType.startsWith('advanced-')\n ? q.item_type?.startsWith('advanced-')\n : q.item_type === itemType,\n );\n const skippedResponses: Record<string, IWorksheetResponse> = {};\n const unskippedQuestions: IWorksheetQuestion[] = [];\n\n if (optionalQuestions.length > 0) {\n optionalQuestions.forEach(question => {\n const prevResponse = prevResponses[question.response_id];\n\n if (!prevResponse?.validatedByTeacher) {\n skippedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponse,\n assignStatus: 'skipped',\n };\n } else {\n unskippedQuestions.push(question);\n }\n });\n\n const nonIntroUnskippedQuestionsPresent = unskippedQuestions.some(\n ({ instructor_stimulus }) =>\n !(instructor_stimulus === 'SystemIntro' || isConceptIntroWidget(instructor_stimulus)),\n );\n\n if (!nonIntroUnskippedQuestionsPresent) {\n unskippedQuestions.forEach(question => {\n skippedResponses[question.response_id] = {\n ...getQuestionMetadata(questions, question.response_id),\n ...prevResponses[question.response_id],\n assignStatus: 'skipped',\n };\n });\n }\n\n onBulkResponsesChange?.(skippedResponses);\n\n return {\n ...prevResponses,\n ...skippedResponses,\n };\n }\n\n return prevResponses;\n });\n },\n [onBulkResponsesChange, questions, setResponses],\n );\n\n const updateMediaState = useCallback<IWorksheetRef['updateMediaState']>(\n (responseId, mediaType, mediaState) => {\n const key = mediaType === 'SIMULATION' ? 'simState' : undefined;\n\n if (!key) return;\n\n setResponses(prevResponses => {\n const question = questions.find(q => q.response_id === responseId);\n\n if (!question) return prevResponses;\n\n const newResponse = {\n ...getQuestionMetadata(questions, responseId),\n ...prevResponses[responseId],\n [key]: mediaState,\n };\n\n return {\n ...prevResponses,\n [responseId]: newResponse,\n };\n });\n },\n [questions, setResponses],\n );\n const allowRetry = useCallback<IWorksheetRef['allowRetry']>(\n questionId => {\n const timeSpentOnQuestion = getTimeSpentOnQuestion(questionId);\n\n setResponses(prevResponses => {\n const questionIndex = questions.findIndex(q => q.response_id === questionId);\n const question = questions[questionIndex]!;\n\n const newResponse = {\n ...getQuestionMetadata(questions, questionId),\n ...prevResponses[questionId],\n timeSpent: timeSpentOnQuestion,\n retryEnabled: true,\n };\n\n onResponseChange?.({\n responseId: questionId,\n response: newResponse,\n question,\n isNewAttempt: false,\n });\n\n return {\n ...prevResponses,\n [questionId]: newResponse,\n };\n });\n },\n [getTimeSpentOnQuestion, onResponseChange, questions, setResponses],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n validateQuestion,\n assignOptionalItems,\n skipOptionalItems,\n updateMediaState,\n allowRetry,\n }),\n [allowRetry, assignOptionalItems, skipOptionalItems, updateMediaState, validateQuestion],\n );\n};\n\nexport default useCreateImperativeHandle;\n"],"names":["useCreateImperativeHandle","ref","getTimeSpentOnQuestion","onResponseChange","onBulkResponsesChange","behavior","questions","setResponses","useWorksheetStore","store","navigationMode","playNotifSound","useAudioPlayer","TEACHER_VALIDATION_AUDIO_LIST","validateQuestion","useCallback","questionId","rating","skipRemainingQuestions","timeSpentOnQuestion","prevResponses","questionIndex","q","question","newResponse","getQuestionMetadata","QUESTIONS_RATING","_a","topicName","QUESTION_TAGS","questionCode","nextQuestionCode","nextQuestionIndex","qIndex","newResponses","acc","nextQuestionResponseId","_b","item_reference","assignOptionalItems","itemType","optionalQuestions","assignedResponses","skipOptionalItems","skippedResponses","unskippedQuestions","prevResponse","instructor_stimulus","isConceptIntroWidget","updateMediaState","responseId","mediaType","mediaState","key","allowRetry","useImperativeHandle"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { useContext as e } from "react";
2
2
  import { useStore as t } from "zustand";
3
- import { WorksheetContext as n } from "../worksheet-store.js";
3
+ import { WorksheetContext as n } from "../worksheet-store/worksheet-store.js";
4
4
  import { useShallow as s } from "../../../../node_modules/zustand/esm/react/shallow.js";
5
5
  function u(r) {
6
6
  const o = e(n);
@@ -1 +1 @@
1
- {"version":3,"file":"use-worksheet-store.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-worksheet-store.ts"],"sourcesContent":["import { useContext } from 'react';\nimport { useStore } from 'zustand';\nimport { useShallow } from 'zustand/shallow';\n\nimport { WorksheetContext } from '../worksheet-store';\nimport { type IWorksheetStore } from '../worksheet-types';\n\nexport function useWorksheetStore<T>(selector: (state: IWorksheetStore) => T) {\n const store = useContext(WorksheetContext);\n\n if (!store) throw new Error('Missing WorksheetProvider in component tree');\n\n return useStore(store, useShallow(selector));\n}\n"],"names":["useWorksheetStore","selector","store","useContext","WorksheetContext","useStore","useShallow"],"mappings":";;;;AAOO,SAASA,EAAqBC,GAAyC;AACtE,QAAAC,IAAQC,EAAWC,CAAgB;AAEzC,MAAI,CAACF,EAAa,OAAA,IAAI,MAAM,6CAA6C;AAEzE,SAAOG,EAASH,GAAOI,EAAWL,CAAQ,CAAC;AAC7C;"}
1
+ {"version":3,"file":"use-worksheet-store.js","sources":["../../../../../src/features/worksheet/worksheet/hooks/use-worksheet-store.ts"],"sourcesContent":["import { useContext } from 'react';\nimport { useStore } from 'zustand';\nimport { useShallow } from 'zustand/shallow';\n\nimport { WorksheetContext } from '../worksheet-store/worksheet-store';\nimport { type IWorksheetStore } from '../worksheet-types';\n\nexport function useWorksheetStore<T>(selector: (state: IWorksheetStore) => T) {\n const store = useContext(WorksheetContext);\n\n if (!store) throw new Error('Missing WorksheetProvider in component tree');\n\n return useStore(store, useShallow(selector));\n}\n"],"names":["useWorksheetStore","selector","store","useContext","WorksheetContext","useStore","useShallow"],"mappings":";;;;AAOO,SAASA,EAAqBC,GAAyC;AACtE,QAAAC,IAAQC,EAAWC,CAAgB;AAEzC,MAAI,CAACF,EAAa,OAAA,IAAI,MAAM,6CAA6C;AAEzE,SAAOG,EAASH,GAAOI,EAAWL,CAAQ,CAAC;AAC7C;"}
@@ -1,117 +1,48 @@
1
- import { jsx as o, jsxs as c, Fragment as d } from "react/jsx-runtime";
2
- import { memo as V, useCallback as b } from "react";
3
- import A from "../../../../assets/line-icons/icons/calculator.js";
4
- import T from "../../../../assets/line-icons/icons/down.js";
5
- import q from "../../../../assets/line-icons/icons/up.js";
6
- import j from "../../../cue-canvas/toolbar/toolbar.js";
7
- import D from "../../../ui/buttons/button/button.js";
8
- import E from "../../../ui/layout/flex-view.js";
9
- import { useWorksheetStore as F } from "../hooks/use-worksheet-store.js";
10
- import N from "../worksheet-questions-controller/scribble-switch.js";
11
- import G from "../worksheet-questions-controller/worksheet-questions-controller.js";
12
- import _ from "../worksheet-questions-summary/worksheet-questions-summary.js";
13
- import { IconContainer as z, SummaryWrapper as O } from "../worksheet-styled.js";
14
- import P from "../worksheet-summary-controller/worksheet-summary-controller.js";
15
- const se = V(function(f) {
16
- const {
17
- behavior: S,
18
- layout: g,
19
- activeQuestionIndex: a,
20
- questions: n,
21
- userType: k,
22
- summaryVisible: s,
23
- toggleSummary: l,
24
- changeQuestion: u,
25
- calculatorVisible: y,
26
- showCalculator: w,
27
- worksheetName: Q,
28
- onSubmit: r,
29
- canSubmitWorksheet: C,
30
- responses: t,
31
- appendedQuestionIds: I,
32
- scribblingEnabled: v
33
- } = F((e) => ({
34
- behavior: e.behavior,
35
- layout: e.layout,
36
- activeQuestionIndex: e.activeQuestionIndex,
37
- questions: e.questions,
38
- userType: e.userType,
39
- summaryVisible: e.summaryVisible,
40
- toggleSummary: e.toggleSummary,
41
- changeQuestion: e.changeQuestion,
42
- calculatorVisible: e.calculatorVisible,
43
- showCalculator: e.showCalculator,
44
- worksheetName: e.worksheetName,
45
- onSubmit: e.onSubmit,
46
- canSubmitWorksheet: e.canSubmitWorksheet,
47
- responses: e.responses,
48
- appendedQuestionIds: e.appendedQuestionIds,
49
- scribblingEnabled: e.scribblingEnabled
50
- })), { getTimeSpentOnQuestion: W } = f, { navigationBar: x } = g, m = n[a], { response_id: i } = m ?? {}, $ = i ? I.includes(i) : !1, B = b(() => {
51
- var h;
52
- const e = (h = n[n.length - 1]) == null ? void 0 : h.response_id;
53
- e && u(e);
54
- }, [u, n]), p = b(() => {
55
- r == null || r(t);
56
- }, [r, t]);
57
- return s ? /* @__PURE__ */ o(
58
- P,
59
- {
60
- onBack: B,
61
- onSubmit: p,
62
- canSubmitWorksheet: !!C
63
- }
64
- ) : /* @__PURE__ */ c(d, { children: [
65
- /* @__PURE__ */ c(E, { $flexDirection: "row", $flexGap: 12, children: [
66
- /* @__PURE__ */ o(N, {}),
67
- S.canShowDesmosCalc && /* @__PURE__ */ o(
68
- z,
69
- {
70
- $active: y,
71
- $alignItems: "center",
72
- $justifyContent: "space-between",
73
- onClick: w,
74
- children: /* @__PURE__ */ o(A, {})
75
- }
76
- )
77
- ] }),
78
- v && /* @__PURE__ */ o(j, { userType: k, renderAs: "canvas" }),
79
- x === "bottom" && /* @__PURE__ */ c(d, { children: [
80
- s && /* @__PURE__ */ o(O, { $alignItems: "center", children: /* @__PURE__ */ o(
81
- _,
82
- {
83
- worksheetName: Q,
84
- onClose: l,
85
- showGoToReview: !0
86
- }
87
- ) }),
88
- /* @__PURE__ */ o(
89
- D,
90
- {
91
- renderAs: "secondary",
92
- widthX: 13.25,
93
- label: `Question ${a + 1} of ${n.length}`,
94
- size: "small",
95
- Icon: s ? T : q,
96
- iconPosition: "right",
97
- justifyContent: "space-between",
98
- onClick: l
99
- }
100
- )
101
- ] }),
102
- m && i && /* @__PURE__ */ o(
103
- G,
1
+ import { jsxs as a, jsx as o } from "react/jsx-runtime";
2
+ import { memo as l, useState as c, useCallback as p } from "react";
3
+ import f from "../../../../assets/line-icons/icons/down.js";
4
+ import h from "../../../../assets/line-icons/icons/up.js";
5
+ import g from "../../../ui/buttons/button/button.js";
6
+ import y from "../../../ui/layout/flex-view.js";
7
+ import { useWorksheetStore as d } from "../hooks/use-worksheet-store.js";
8
+ import k from "../worksheet-questions-summary/worksheet-questions-summary.js";
9
+ import { SummaryWrapper as w } from "../worksheet-styled.js";
10
+ const q = l(function() {
11
+ const { activeQuestionIndex: r, questions: s, toggleSummary: n, worksheetName: i } = d(
12
+ (e) => ({
13
+ activeQuestionIndex: e.activeQuestionIndex,
14
+ questions: e.questions,
15
+ toggleSummary: e.toggleSummary,
16
+ worksheetName: e.worksheetName
17
+ })
18
+ ), [t, m] = c(!1), u = p(() => {
19
+ m((e) => !e);
20
+ }, []);
21
+ return /* @__PURE__ */ a(y, { style: { pointerEvents: "auto" }, children: [
22
+ t && /* @__PURE__ */ o(w, { $alignItems: "center", children: /* @__PURE__ */ o(
23
+ k,
104
24
  {
105
- question: m,
106
- isQuestionAppended: $,
107
- response: t[i],
108
- onSubmit: p,
109
- getTimeSpentOnQuestion: W
25
+ worksheetName: i,
26
+ onClose: n,
27
+ showGoToReview: !0
28
+ }
29
+ ) }),
30
+ /* @__PURE__ */ o(
31
+ g,
32
+ {
33
+ renderAs: "secondary",
34
+ widthX: 13.25,
35
+ label: `Question ${r + 1} of ${s.length}`,
36
+ size: "small",
37
+ Icon: t ? f : h,
38
+ iconPosition: "right",
39
+ justifyContent: "space-between",
40
+ onClick: u
110
41
  }
111
42
  )
112
43
  ] });
113
44
  });
114
45
  export {
115
- se as default
46
+ q as default
116
47
  };
117
48
  //# sourceMappingURL=worksheet-action-bar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet-action-bar.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.tsx"],"sourcesContent":["import { memo, useCallback, type FC } from 'react';\n\nimport CalculatorIcon from '../../../../assets/line-icons/icons/calculator';\nimport DownIcon from '../../../../assets/line-icons/icons/down';\nimport UpIcon from '../../../../assets/line-icons/icons/up';\nimport Toolbar from '../../../cue-canvas/toolbar/toolbar';\nimport Button from '../../../ui/buttons/button/button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport { useWorksheetStore } from '../hooks/use-worksheet-store';\nimport ScribbleSwitch from '../worksheet-questions-controller/scribble-switch';\nimport WorksheetQuestionsController from '../worksheet-questions-controller/worksheet-questions-controller';\nimport WorksheetQuestionsSummary from '../worksheet-questions-summary/worksheet-questions-summary';\nimport * as Styled from '../worksheet-styled';\nimport WorksheetSummaryController from '../worksheet-summary-controller/worksheet-summary-controller';\nimport type { IWorksheetActionBarProps } from './worksheet-action-bar-types';\n\nconst WorksheetActionBar: FC<IWorksheetActionBarProps> = memo(function WorksheetActionBar(props) {\n const {\n behavior,\n layout,\n activeQuestionIndex,\n questions,\n userType,\n summaryVisible,\n toggleSummary,\n changeQuestion,\n calculatorVisible,\n showCalculator,\n worksheetName,\n onSubmit,\n canSubmitWorksheet,\n responses,\n appendedQuestionIds,\n scribblingEnabled,\n } = useWorksheetStore(state => ({\n behavior: state.behavior,\n layout: state.layout,\n activeQuestionIndex: state.activeQuestionIndex,\n questions: state.questions,\n userType: state.userType,\n summaryVisible: state.summaryVisible,\n toggleSummary: state.toggleSummary,\n changeQuestion: state.changeQuestion,\n calculatorVisible: state.calculatorVisible,\n showCalculator: state.showCalculator,\n worksheetName: state.worksheetName,\n onSubmit: state.onSubmit,\n canSubmitWorksheet: state.canSubmitWorksheet,\n responses: state.responses,\n appendedQuestionIds: state.appendedQuestionIds,\n scribblingEnabled: state.scribblingEnabled,\n }));\n const { getTimeSpentOnQuestion } = props;\n const { navigationBar } = layout;\n const activeQuestion = questions[activeQuestionIndex];\n const { response_id: activeQuestionId } = activeQuestion ?? {};\n const isAppended = activeQuestionId ? appendedQuestionIds.includes(activeQuestionId) : false;\n\n const handleBackFromSummary = useCallback(() => {\n const questionId = questions[questions.length - 1]?.response_id;\n\n if (questionId) {\n changeQuestion(questionId);\n }\n }, [changeQuestion, questions]);\n\n const handleSheetSubmitButtonClick = useCallback(() => {\n onSubmit?.(responses);\n }, [onSubmit, responses]);\n\n if (summaryVisible) {\n return (\n <WorksheetSummaryController\n onBack={handleBackFromSummary}\n onSubmit={handleSheetSubmitButtonClick}\n canSubmitWorksheet={!!canSubmitWorksheet}\n />\n );\n }\n\n return (\n <>\n <FlexView $flexDirection=\"row\" $flexGap={12}>\n <ScribbleSwitch />\n {behavior.canShowDesmosCalc && (\n <Styled.IconContainer\n $active={calculatorVisible}\n $alignItems=\"center\"\n $justifyContent=\"space-between\"\n onClick={showCalculator}\n >\n <CalculatorIcon />\n </Styled.IconContainer>\n )}\n </FlexView>\n {scribblingEnabled && <Toolbar userType={userType} renderAs=\"canvas\" />}\n {navigationBar === 'bottom' && (\n <>\n {summaryVisible && (\n <Styled.SummaryWrapper $alignItems=\"center\">\n <WorksheetQuestionsSummary\n worksheetName={worksheetName}\n onClose={toggleSummary}\n showGoToReview\n />\n </Styled.SummaryWrapper>\n )}\n <Button\n renderAs=\"secondary\"\n widthX={13.25}\n label={`Question ${activeQuestionIndex + 1} of ${questions.length}`}\n size=\"small\"\n Icon={summaryVisible ? DownIcon : UpIcon}\n iconPosition=\"right\"\n justifyContent=\"space-between\"\n onClick={toggleSummary}\n />\n </>\n )}\n {activeQuestion && activeQuestionId && (\n <WorksheetQuestionsController\n question={activeQuestion}\n isQuestionAppended={isAppended}\n response={responses[activeQuestionId]}\n onSubmit={handleSheetSubmitButtonClick}\n getTimeSpentOnQuestion={getTimeSpentOnQuestion}\n />\n )}\n </>\n );\n});\n\nexport default WorksheetActionBar;\n"],"names":["WorksheetActionBar","memo","props","behavior","layout","activeQuestionIndex","questions","userType","summaryVisible","toggleSummary","changeQuestion","calculatorVisible","showCalculator","worksheetName","onSubmit","canSubmitWorksheet","responses","appendedQuestionIds","scribblingEnabled","useWorksheetStore","state","getTimeSpentOnQuestion","navigationBar","activeQuestion","activeQuestionId","isAppended","handleBackFromSummary","useCallback","questionId","_a","handleSheetSubmitButtonClick","jsx","WorksheetSummaryController","jsxs","Fragment","FlexView","ScribbleSwitch","Styled.IconContainer","CalculatorIcon","Toolbar","Styled.SummaryWrapper","WorksheetQuestionsSummary","Button","DownIcon","UpIcon","WorksheetQuestionsController"],"mappings":"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"}
1
+ {"version":3,"file":"worksheet-action-bar.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-action-bar/worksheet-action-bar.tsx"],"sourcesContent":["import { memo, useCallback, useState, type FC } from 'react';\n\nimport DownIcon from '../../../../assets/line-icons/icons/down';\nimport UpIcon from '../../../../assets/line-icons/icons/up';\nimport Button from '../../../ui/buttons/button/button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport { useWorksheetStore } from '../hooks/use-worksheet-store';\nimport WorksheetQuestionsSummary from '../worksheet-questions-summary/worksheet-questions-summary';\nimport * as Styled from '../worksheet-styled';\n\nconst WorksheetActionBar: FC = memo(function WorksheetActionBar() {\n const { activeQuestionIndex, questions, toggleSummary, worksheetName } = useWorksheetStore(\n state => ({\n activeQuestionIndex: state.activeQuestionIndex,\n questions: state.questions,\n toggleSummary: state.toggleSummary,\n worksheetName: state.worksheetName,\n }),\n );\n const [summaryPopupVisible, setSummaryPopupVisible] = useState(false);\n\n const handleSummaryPopupToggle = useCallback(() => {\n setSummaryPopupVisible(prevState => !prevState);\n }, []);\n\n return (\n <FlexView style={{ pointerEvents: 'auto' }}>\n {summaryPopupVisible && (\n <Styled.SummaryWrapper $alignItems=\"center\">\n <WorksheetQuestionsSummary\n worksheetName={worksheetName}\n onClose={toggleSummary}\n showGoToReview\n />\n </Styled.SummaryWrapper>\n )}\n <Button\n renderAs=\"secondary\"\n widthX={13.25}\n label={`Question ${activeQuestionIndex + 1} of ${questions.length}`}\n size=\"small\"\n Icon={summaryPopupVisible ? DownIcon : UpIcon}\n iconPosition=\"right\"\n justifyContent=\"space-between\"\n onClick={handleSummaryPopupToggle}\n />\n </FlexView>\n );\n});\n\nexport default WorksheetActionBar;\n"],"names":["WorksheetActionBar","memo","activeQuestionIndex","questions","toggleSummary","worksheetName","useWorksheetStore","state","summaryPopupVisible","setSummaryPopupVisible","useState","handleSummaryPopupToggle","useCallback","prevState","FlexView","jsx","Styled.SummaryWrapper","WorksheetQuestionsSummary","Button","DownIcon","UpIcon"],"mappings":";;;;;;;;;AAUM,MAAAA,IAAyBC,EAAK,WAA8B;AAChE,QAAM,EAAE,qBAAAC,GAAqB,WAAAC,GAAW,eAAAC,GAAe,eAAAC,EAAkB,IAAAC;AAAA,IACvE,CAAUC,OAAA;AAAA,MACR,qBAAqBA,EAAM;AAAA,MAC3B,WAAWA,EAAM;AAAA,MACjB,eAAeA,EAAM;AAAA,MACrB,eAAeA,EAAM;AAAA,IAAA;AAAA,EACvB,GAEI,CAACC,GAAqBC,CAAsB,IAAIC,EAAS,EAAK,GAE9DC,IAA2BC,EAAY,MAAM;AAC1B,IAAAH,EAAA,CAAAI,MAAa,CAACA,CAAS;AAAA,EAChD,GAAG,CAAE,CAAA;AAEL,2BACGC,GAAS,EAAA,OAAO,EAAE,eAAe,OAC/B,GAAA,UAAA;AAAA,IAAAN,KACE,gBAAAO,EAAAC,GAAA,EAAsB,aAAY,UACjC,UAAA,gBAAAD;AAAA,MAACE;AAAA,MAAA;AAAA,QACC,eAAAZ;AAAA,QACA,SAASD;AAAA,QACT,gBAAc;AAAA,MAAA;AAAA,IAAA,GAElB;AAAA,IAEF,gBAAAW;AAAA,MAACG;AAAA,MAAA;AAAA,QACC,UAAS;AAAA,QACT,QAAQ;AAAA,QACR,OAAO,YAAYhB,IAAsB,CAAC,OAAOC,EAAU,MAAM;AAAA,QACjE,MAAK;AAAA,QACL,MAAMK,IAAsBW,IAAWC;AAAA,QACvC,cAAa;AAAA,QACb,gBAAe;AAAA,QACf,SAAST;AAAA,MAAA;AAAA,IACX;AAAA,EACF,EAAA,CAAA;AAEJ,CAAC;"}