@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
@@ -0,0 +1,184 @@
1
+ import { jsxs as _, jsx as i } from "react/jsx-runtime";
2
+ import { memo as q, useState as V, useMemo as M, useCallback as C, useEffect as J } from "react";
3
+ import P from "../../../../../assets/line-icons/icons/hints.js";
4
+ import T from "../../../../ui/buttons/clickable/clickable.js";
5
+ import X from "../../../constants/events.js";
6
+ import { useWorksheetStore as Y } from "../../hooks/use-worksheet-store.js";
7
+ import { getQuestionMetadata as Z } from "../../worksheet-helpers.js";
8
+ import { EActiveQuestionTool as p } from "../../worksheet-types.js";
9
+ import { WorksheetQuestionsToolbarContainer as ee, IconContainer as f, HintsIconContainer as ie, HintsNumberContainer as te, HintsNumber as oe, TickMark as ne } from "./questions-toolbar-styled.js";
10
+ import { ILLUSTRATIONS as se } from "../../../../../assets/illustrations/illustrations.js";
11
+ import le from "../../../../../assets/line-icons/icons/hand.js";
12
+ import re from "../../../../../assets/line-icons/icons/question-feedback.js";
13
+ import ce from "../../../../../assets/line-icons/icons/teaching-tools.js";
14
+ import x from "../../../../../assets/line-icons/icons/close.js";
15
+ import ae from "../../../../../assets/line-icons/icons/solution.js";
16
+ import de from "../../../../../assets/line-icons/icons/calculator.js";
17
+ const he = ({
18
+ behavior: l,
19
+ question: t,
20
+ response: s,
21
+ hintsTimerFinished: n
22
+ }) => {
23
+ var c;
24
+ if (!l.hints)
25
+ return { visible: !1 };
26
+ const r = ((c = t.metadata.hints) == null ? void 0 : c.length) ?? 0;
27
+ if (r === 0)
28
+ return { visible: !1 };
29
+ const a = (s == null ? void 0 : s.hintsUsed) ?? 0;
30
+ return {
31
+ visible: !0,
32
+ disabled: l.hintsTimer && !n || a >= r,
33
+ nextHintnumber: a + 1,
34
+ allHintsUtilized: a >= r
35
+ };
36
+ }, U = ({
37
+ response: l,
38
+ behavior: t
39
+ }) => {
40
+ if (!l || !l.response || !l.score)
41
+ return !1;
42
+ const { responseEdited: s, score: n, attemptsHistory: r } = l, { maximumAttempts: a, canExceedAttempts: c } = t;
43
+ return ((r == null ? void 0 : r.length) ?? 0) >= a && !c ? !0 : s ? !1 : (n.score ?? 0) === n.max_score;
44
+ }, ue = ({
45
+ hintOptions: l,
46
+ response: t,
47
+ behavior: s,
48
+ canAskForHelp: n
49
+ }) => n && (!l.visible || l.allHintsUtilized) && !U({ response: t, behavior: s }) ? { visible: !0 } : { visible: !1 }, we = q(function() {
50
+ const {
51
+ question: t,
52
+ response: s,
53
+ behavior: n,
54
+ loggerRef: r,
55
+ setResponses: a,
56
+ onResponseChange: c,
57
+ onHelp: m,
58
+ userType: g,
59
+ openQuestionFeedbackModal: H,
60
+ activeQuestionTool: b,
61
+ setActiveQuestionTool: k,
62
+ unsetActiveQuestionTool: v,
63
+ worksheetCompleted: Q,
64
+ toggleCalculator: F
65
+ } = Y((e) => {
66
+ const o = e.questions[e.activeQuestionIndex], d = e.responses[o.response_id];
67
+ return {
68
+ behavior: e.behavior,
69
+ question: o,
70
+ response: d,
71
+ loggerRef: e.loggerRef,
72
+ setResponses: e.setResponses,
73
+ onResponseChange: e.onResponseChange,
74
+ onHelp: e.onHelp,
75
+ userType: e.userType,
76
+ openQuestionFeedbackModal: e.openQuestionFeedbackModal,
77
+ activeQuestionTool: e.activeQuestionTool,
78
+ setActiveQuestionTool: e.setActiveQuestionTool,
79
+ unsetActiveQuestionTool: e.unsetActiveQuestionTool,
80
+ worksheetCompleted: e.worksheetCompleted,
81
+ toggleCalculator: e.toggleCalculator
82
+ };
83
+ }), { response_id: h } = t, { hintsTimer: A } = n, [S, L] = V(!1), { hints: u, solution: E, askTeacher: $, questionFeedback: y, teachingTools: I } = M(() => {
84
+ var w, N, R;
85
+ const e = he({
86
+ behavior: n,
87
+ question: t,
88
+ response: s,
89
+ hintsTimerFinished: S
90
+ }), o = t == null ? void 0 : t.metadata, d = ((w = o == null ? void 0 : o.teacher_tips) == null ? void 0 : w.length) ?? 0, O = ((N = o == null ? void 0 : o.solution) == null ? void 0 : N.length) ?? 0, W = ((R = o == null ? void 0 : o.hints) == null ? void 0 : R.length) ?? 0, j = d + O + W > 0;
91
+ return {
92
+ hints: e,
93
+ askTeacher: ue({
94
+ behavior: n,
95
+ response: s,
96
+ hintOptions: e,
97
+ canAskForHelp: !!m
98
+ }),
99
+ questionFeedback: { visible: g === "TEACHER" },
100
+ teachingTools: { visible: g === "TEACHER", disabled: !j },
101
+ solution: {
102
+ visible: n.solutionHidden || !n.validation ? !1 : g === "STUDENT" && O > 0,
103
+ disabled: Q ? !1 : !U({ response: s, behavior: n })
104
+ }
105
+ };
106
+ }, [n, t, s, S, m, g, Q]), z = C(() => {
107
+ r.current(X.WORKSHEET_V3_HINT_SEEN), a((e) => {
108
+ var d;
109
+ const o = {
110
+ ...Z(t),
111
+ ...e[h],
112
+ hintsUsed: (((d = e[h]) == null ? void 0 : d.hintsUsed) ?? 0) + 1
113
+ };
114
+ return c == null || c({
115
+ responseId: h,
116
+ response: o,
117
+ question: t,
118
+ isNewAttempt: !1
119
+ }), {
120
+ ...e,
121
+ [h]: o
122
+ };
123
+ });
124
+ }, [r, c, t, h, a]), B = C(() => {
125
+ H && H(t.item_reference);
126
+ }, [H, t]), D = C(() => {
127
+ b !== p.TEACHING_TOOLS ? k(p.TEACHING_TOOLS) : v();
128
+ }, [k, v, b]), G = C(() => {
129
+ b !== p.SOLUTION ? k(p.SOLUTION) : v();
130
+ }, [k, v, b]), K = C(() => {
131
+ if (m && t) {
132
+ const { item_number: e, question_number: o, total_questions: d } = t;
133
+ m({
134
+ questionId: h,
135
+ questionNumber: `${e + 1}${d > 1 ? String.fromCharCode(97 + o) : ""}`
136
+ });
137
+ }
138
+ }, [m, t, h]);
139
+ return J(() => {
140
+ if (A) {
141
+ const e = setTimeout(() => {
142
+ L(!0);
143
+ }, A * 1e3);
144
+ return () => clearTimeout(e);
145
+ }
146
+ }, [A]), /* @__PURE__ */ _(
147
+ ee,
148
+ {
149
+ $showBorder: n.canvasEnabled == !0,
150
+ $flexDirection: "row",
151
+ children: [
152
+ u.visible && /* @__PURE__ */ i(T, { label: "Hint", disabled: u.disabled, onClick: z, children: /* @__PURE__ */ i(f, { children: /* @__PURE__ */ _(ie, { children: [
153
+ /* @__PURE__ */ i(P, { width: 24, height: 24, opacity: u.disabled ? 0.38 : 1 }),
154
+ !u.allHintsUtilized && u.nextHintnumber > 1 && /* @__PURE__ */ i(te, { children: /* @__PURE__ */ i(oe, { $renderAs: "ab4-black", $color: "BLACK", children: u.nextHintnumber }) }),
155
+ u.allHintsUtilized && /* @__PURE__ */ i(ne, { src: se.TICK_GREEN })
156
+ ] }) }) }),
157
+ E.visible && /* @__PURE__ */ i(T, { label: "Solution", disabled: E.disabled, onClick: G, children: /* @__PURE__ */ i(f, { children: b === p.SOLUTION ? /* @__PURE__ */ i(x, { width: 24, height: 24 }) : /* @__PURE__ */ i(ae, { width: 24, height: 24, opacity: E.disabled ? 0.38 : 1 }) }) }),
158
+ $.visible && /* @__PURE__ */ i(T, { label: "Ask for help", onClick: K, children: /* @__PURE__ */ i(f, { children: /* @__PURE__ */ i(le, { width: 24, height: 24 }) }) }),
159
+ y.visible && /* @__PURE__ */ i(T, { label: "Question Feedback", onClick: B, children: /* @__PURE__ */ i(f, { children: /* @__PURE__ */ i(re, { width: 24, height: 24 }) }) }),
160
+ n.canShowDesmosCalc && /* @__PURE__ */ i(T, { label: "Desmos Calculator", onClick: F, children: /* @__PURE__ */ i(f, { children: /* @__PURE__ */ i(de, { width: 24, height: 24 }) }) }),
161
+ I.visible && /* @__PURE__ */ i(
162
+ T,
163
+ {
164
+ label: "Teaching Tools",
165
+ disabled: I.disabled,
166
+ onClick: D,
167
+ children: /* @__PURE__ */ i(f, { children: b === p.TEACHING_TOOLS ? /* @__PURE__ */ i(x, { width: 24, height: 24 }) : /* @__PURE__ */ i(
168
+ ce,
169
+ {
170
+ width: 24,
171
+ height: 24,
172
+ opacity: I.disabled ? 0.38 : 1
173
+ }
174
+ ) })
175
+ }
176
+ )
177
+ ]
178
+ }
179
+ );
180
+ });
181
+ export {
182
+ we as default
183
+ };
184
+ //# sourceMappingURL=questions-toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questions-toolbar.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-questions-tools/questions-toolbar/questions-toolbar.tsx"],"sourcesContent":["import { memo, useCallback, useEffect, useMemo, useState } from 'react';\n\nimport HintsIcon from '../../../../../assets/line-icons/icons/hints';\nimport Clickable from '../../../../ui/buttons/clickable/clickable';\nimport EVENTS from '../../../constants/events';\nimport { useWorksheetStore } from '../../hooks/use-worksheet-store';\nimport { getQuestionMetadata } from '../../worksheet-helpers';\nimport {\n EActiveQuestionTool,\n type IWorksheetBehavior,\n type IWorksheetQuestion,\n type IWorksheetResponse,\n} from '../../worksheet-types';\nimport * as Styled from './questions-toolbar-styled';\nimport { ILLUSTRATIONS } from '../../../../../assets/illustrations/illustrations';\nimport HandIcon from '../../../../../assets/line-icons/icons/hand';\nimport QuestionFeedbackIcon from '../../../../../assets/line-icons/icons/question-feedback';\nimport TeachingToolsIcon from '../../../../../assets/line-icons/icons/teaching-tools';\nimport CloseIcon from '../../../../../assets/line-icons/icons/close';\nimport SolutionIcon from '../../../../../assets/line-icons/icons/solution';\nimport CalculatorIcon from '../../../../../assets/line-icons/icons/calculator';\n\ninterface IQuestionToolbarOptions {\n hints:\n | {\n visible: false;\n }\n | {\n visible: true;\n disabled: boolean;\n nextHintnumber: number;\n allHintsUtilized: boolean;\n };\n solution: {\n visible: boolean;\n disabled: boolean;\n };\n teachingTools: {\n visible: boolean;\n disabled: boolean;\n };\n stickers?: {\n visible: boolean;\n };\n askTeacher: {\n visible: boolean;\n };\n questionFeedback: {\n visible: boolean;\n };\n}\n\ninterface IGetHintsOptions {\n (options: {\n behavior: IWorksheetBehavior;\n question: IWorksheetQuestion;\n response?: IWorksheetResponse;\n hintsTimerFinished: boolean;\n }): IQuestionToolbarOptions['hints'];\n}\n\nconst getHintsOptions: IGetHintsOptions = ({\n behavior,\n question,\n response,\n hintsTimerFinished,\n}) => {\n if (!behavior.hints) {\n return { visible: false };\n }\n\n const hintsAvailable = question.metadata.hints?.length ?? 0;\n\n if (hintsAvailable === 0) {\n return { visible: false };\n }\n\n const hintsUsed = response?.hintsUsed ?? 0;\n\n return {\n visible: true,\n disabled: (behavior.hintsTimer && !hintsTimerFinished) || hintsUsed >= hintsAvailable,\n nextHintnumber: hintsUsed + 1,\n allHintsUtilized: hintsUsed >= hintsAvailable,\n };\n};\n\ninterface IIsResponseCompletedOrExhausted {\n (options: { response?: IWorksheetResponse; behavior: IWorksheetBehavior }): boolean;\n}\n\nconst isResponseCompletedOrExhausted: IIsResponseCompletedOrExhausted = ({\n response,\n behavior,\n}) => {\n if (!response || !response.response || !response.score) {\n return false;\n }\n\n const { responseEdited, score, attemptsHistory } = response;\n\n const { maximumAttempts, canExceedAttempts } = behavior;\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n if (maximumAttemptsReached && !canExceedAttempts) return true;\n\n if (responseEdited) return false;\n\n if ((score.score ?? 0) === score.max_score) return true;\n\n return false;\n};\n\ninterface IGetAskTeacherOptions {\n (options: {\n canAskForHelp: boolean;\n hintOptions: IQuestionToolbarOptions['hints'];\n behavior: IWorksheetBehavior;\n response?: IWorksheetResponse;\n }): IQuestionToolbarOptions['askTeacher'];\n}\n\nconst getAskTeacherOptions: IGetAskTeacherOptions = ({\n hintOptions,\n response,\n behavior,\n canAskForHelp,\n}) => {\n if (\n canAskForHelp &&\n (!hintOptions.visible || hintOptions.allHintsUtilized) &&\n !isResponseCompletedOrExhausted({ response, behavior })\n ) {\n return { visible: true };\n }\n\n return { visible: false };\n};\n\nconst QuestionsToolbar = memo(function QuestionsToolbar() {\n const {\n question,\n response,\n behavior,\n loggerRef,\n setResponses,\n onResponseChange,\n onHelp,\n userType,\n openQuestionFeedbackModal,\n activeQuestionTool,\n setActiveQuestionTool,\n unsetActiveQuestionTool,\n worksheetCompleted,\n toggleCalculator,\n } = useWorksheetStore(store => {\n const activeQuestion = store.questions[store.activeQuestionIndex]!;\n const activeQuesttionResponse = store.responses[activeQuestion.response_id];\n\n return {\n behavior: store.behavior,\n question: activeQuestion,\n response: activeQuesttionResponse,\n loggerRef: store.loggerRef,\n setResponses: store.setResponses,\n onResponseChange: store.onResponseChange,\n onHelp: store.onHelp,\n userType: store.userType,\n openQuestionFeedbackModal: store.openQuestionFeedbackModal,\n activeQuestionTool: store.activeQuestionTool,\n setActiveQuestionTool: store.setActiveQuestionTool,\n unsetActiveQuestionTool: store.unsetActiveQuestionTool,\n worksheetCompleted: store.worksheetCompleted,\n toggleCalculator: store.toggleCalculator,\n };\n });\n const { response_id: responseId } = question;\n const { hintsTimer } = behavior;\n const [hintsTimerFinished, setHintsTimerFinished] = useState(false);\n const { hints, solution, askTeacher, questionFeedback, teachingTools } =\n useMemo<IQuestionToolbarOptions>(() => {\n const hintsOptions = getHintsOptions({\n behavior,\n question,\n response,\n hintsTimerFinished,\n });\n const questionMetadata = question?.metadata;\n const teacherTipsCount = questionMetadata?.teacher_tips?.length ?? 0;\n const solutionsCount = questionMetadata?.solution?.length ?? 0;\n const hintsCount = questionMetadata?.hints?.length ?? 0;\n const teachingToolEnabled = teacherTipsCount + solutionsCount + hintsCount > 0;\n\n return {\n hints: hintsOptions,\n askTeacher: getAskTeacherOptions({\n behavior,\n response,\n hintOptions: hintsOptions,\n canAskForHelp: !!onHelp,\n }),\n questionFeedback: { visible: userType === 'TEACHER' },\n teachingTools: { visible: userType === 'TEACHER', disabled: !teachingToolEnabled },\n solution: {\n visible:\n behavior.solutionHidden || !behavior.validation\n ? false\n : userType === 'STUDENT' && solutionsCount > 0,\n disabled: worksheetCompleted\n ? false\n : !isResponseCompletedOrExhausted({ response, behavior }),\n },\n };\n }, [behavior, question, response, hintsTimerFinished, onHelp, userType, worksheetCompleted]);\n\n const handleHintButtonClick = useCallback(() => {\n loggerRef.current(EVENTS.WORKSHEET_V3_HINT_SEEN);\n setResponses(prevResponses => {\n const newResponse = {\n ...getQuestionMetadata(question),\n ...prevResponses[responseId],\n hintsUsed: (prevResponses[responseId]?.hintsUsed ?? 0) + 1,\n };\n\n onResponseChange?.({\n responseId,\n response: newResponse,\n question,\n isNewAttempt: false,\n });\n\n return {\n ...prevResponses,\n [responseId]: newResponse,\n };\n });\n }, [loggerRef, onResponseChange, question, responseId, setResponses]);\n\n const handleQuestionFeedbackClick = useCallback(() => {\n if (openQuestionFeedbackModal) {\n openQuestionFeedbackModal(question.item_reference);\n }\n }, [openQuestionFeedbackModal, question]);\n\n const handleTeachingToolsClick = useCallback(() => {\n if (activeQuestionTool !== EActiveQuestionTool.TEACHING_TOOLS) {\n setActiveQuestionTool(EActiveQuestionTool.TEACHING_TOOLS);\n } else {\n unsetActiveQuestionTool();\n }\n }, [setActiveQuestionTool, unsetActiveQuestionTool, activeQuestionTool]);\n\n const handleSolutionClick = useCallback(() => {\n if (activeQuestionTool !== EActiveQuestionTool.SOLUTION) {\n setActiveQuestionTool(EActiveQuestionTool.SOLUTION);\n } else {\n unsetActiveQuestionTool();\n }\n }, [setActiveQuestionTool, unsetActiveQuestionTool, activeQuestionTool]);\n\n const handleHelpButtonClick = useCallback(() => {\n if (onHelp && question) {\n const { item_number, question_number, total_questions } = question;\n\n onHelp({\n questionId: responseId,\n questionNumber: `${item_number + 1}${\n total_questions > 1 ? String.fromCharCode('a'.charCodeAt(0) + question_number) : ''\n }`,\n });\n }\n }, [onHelp, question, responseId]);\n\n useEffect(() => {\n if (hintsTimer) {\n const timeoutId = setTimeout(() => {\n setHintsTimerFinished(true);\n }, hintsTimer * 1000);\n\n return () => clearTimeout(timeoutId);\n }\n }, [hintsTimer]);\n\n return (\n <Styled.WorksheetQuestionsToolbarContainer\n $showBorder={behavior.canvasEnabled == true}\n $flexDirection=\"row\"\n >\n {hints.visible && (\n <Clickable label=\"Hint\" disabled={hints.disabled} onClick={handleHintButtonClick}>\n <Styled.IconContainer>\n <Styled.HintsIconContainer>\n <HintsIcon width={24} height={24} opacity={hints.disabled ? 0.38 : 1} />\n {!hints.allHintsUtilized && hints.nextHintnumber > 1 && (\n <Styled.HintsNumberContainer>\n <Styled.HintsNumber $renderAs=\"ab4-black\" $color=\"BLACK\">\n {hints.nextHintnumber}\n </Styled.HintsNumber>\n </Styled.HintsNumberContainer>\n )}\n {hints.allHintsUtilized && <Styled.TickMark src={ILLUSTRATIONS.TICK_GREEN} />}\n </Styled.HintsIconContainer>\n </Styled.IconContainer>\n </Clickable>\n )}\n {solution.visible && (\n <Clickable label=\"Solution\" disabled={solution.disabled} onClick={handleSolutionClick}>\n <Styled.IconContainer>\n {activeQuestionTool === EActiveQuestionTool.SOLUTION ? (\n <CloseIcon width={24} height={24} />\n ) : (\n <SolutionIcon width={24} height={24} opacity={solution.disabled ? 0.38 : 1} />\n )}\n </Styled.IconContainer>\n </Clickable>\n )}\n {askTeacher.visible && (\n <Clickable label=\"Ask for help\" onClick={handleHelpButtonClick}>\n <Styled.IconContainer>\n <HandIcon width={24} height={24} />\n </Styled.IconContainer>\n </Clickable>\n )}\n {questionFeedback.visible && (\n <Clickable label=\"Question Feedback\" onClick={handleQuestionFeedbackClick}>\n <Styled.IconContainer>\n <QuestionFeedbackIcon width={24} height={24} />\n </Styled.IconContainer>\n </Clickable>\n )}\n {behavior.canShowDesmosCalc && (\n <Clickable label=\"Desmos Calculator\" onClick={toggleCalculator}>\n <Styled.IconContainer>\n <CalculatorIcon width={24} height={24} />\n </Styled.IconContainer>\n </Clickable>\n )}\n {teachingTools.visible && (\n <Clickable\n label=\"Teaching Tools\"\n disabled={teachingTools.disabled}\n onClick={handleTeachingToolsClick}\n >\n <Styled.IconContainer>\n {activeQuestionTool === EActiveQuestionTool.TEACHING_TOOLS ? (\n <CloseIcon width={24} height={24} />\n ) : (\n <TeachingToolsIcon\n width={24}\n height={24}\n opacity={teachingTools.disabled ? 0.38 : 1}\n />\n )}\n </Styled.IconContainer>\n </Clickable>\n )}\n </Styled.WorksheetQuestionsToolbarContainer>\n );\n});\n\nexport default QuestionsToolbar;\n"],"names":["getHintsOptions","behavior","question","response","hintsTimerFinished","hintsAvailable","_a","hintsUsed","isResponseCompletedOrExhausted","responseEdited","score","attemptsHistory","maximumAttempts","canExceedAttempts","getAskTeacherOptions","hintOptions","canAskForHelp","QuestionsToolbar","memo","loggerRef","setResponses","onResponseChange","onHelp","userType","openQuestionFeedbackModal","activeQuestionTool","setActiveQuestionTool","unsetActiveQuestionTool","worksheetCompleted","toggleCalculator","useWorksheetStore","store","activeQuestion","activeQuesttionResponse","responseId","hintsTimer","setHintsTimerFinished","useState","hints","solution","askTeacher","questionFeedback","teachingTools","useMemo","hintsOptions","questionMetadata","teacherTipsCount","solutionsCount","_b","hintsCount","_c","teachingToolEnabled","handleHintButtonClick","useCallback","EVENTS","prevResponses","newResponse","getQuestionMetadata","handleQuestionFeedbackClick","handleTeachingToolsClick","EActiveQuestionTool","handleSolutionClick","handleHelpButtonClick","item_number","question_number","total_questions","useEffect","timeoutId","jsxs","Styled.WorksheetQuestionsToolbarContainer","jsx","Clickable","Styled.IconContainer","Styled.HintsIconContainer","HintsIcon","Styled.HintsNumberContainer","Styled.HintsNumber","Styled.TickMark","ILLUSTRATIONS","CloseIcon","SolutionIcon","HandIcon","QuestionFeedbackIcon","CalculatorIcon","TeachingToolsIcon"],"mappings":"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"}
@@ -0,0 +1,65 @@
1
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
2
+ import { memo as a, useEffect as g } from "react";
3
+ import t from "styled-components";
4
+ import d from "../../../../assets/line-icons/icons/scribble.js";
5
+ import p from "../../../ui/buttons/clickable/clickable.js";
6
+ import m from "../../../ui/layout/flex-view.js";
7
+ import f from "../../constants/events.js";
8
+ import { useWorksheetStore as h } from "../hooks/use-worksheet-store.js";
9
+ import S from "../../../../assets/line-icons/icons/cursor2.js";
10
+ const u = t(m)(
11
+ ({ theme: r }) => `
12
+ position: relative;
13
+ height: 32px;
14
+ border-radius: 40px;
15
+ background-color: ${r.colors.WHITE_4};
16
+ `
17
+ ), n = t.div(
18
+ ({ $active: r, theme: e }) => `
19
+ z-index: 1;
20
+ color: ${r ? e.colors.BLACK : e.colors.BLACK_T_38};
21
+ `
22
+ ), x = t.div(
23
+ ({ $active: r, theme: e }) => `
24
+ position: absolute;
25
+ top: 4px;
26
+ left: 0;
27
+ width: 24px;
28
+ height: 24px;
29
+ border-radius: 50%;
30
+ background-color: ${e.colors.WHITE};
31
+ transform: translateX(${r ? 4 : 32}px);
32
+ transition: transform 0.3s ease;
33
+ z-index: 0;
34
+ `
35
+ ), C = a(function() {
36
+ const { toggleScribble: e, scribblingEnabled: i, canToggleScribbling: b, loggerRef: c } = h(
37
+ (l) => ({
38
+ scribblingEnabled: l.scribblingEnabled,
39
+ toggleScribble: l.toggleScribble,
40
+ canToggleScribbling: l.behavior.canScribble ?? !0,
41
+ loggerRef: l.loggerRef
42
+ })
43
+ );
44
+ return g(() => {
45
+ c.current(f.WORKSHEET_V3_SCRIBBLE_TOGGLE, {
46
+ scribbling_enabled: i
47
+ });
48
+ }, [i, c]), /* @__PURE__ */ o(
49
+ p,
50
+ {
51
+ label: "ScribbleSwitch Toggled",
52
+ onClick: e,
53
+ disabled: !b,
54
+ children: /* @__PURE__ */ s(u, { $flexDirection: "row", $gutter: 4, $flexGap: 4, $alignItems: "center", children: [
55
+ /* @__PURE__ */ o(x, { $active: i }),
56
+ /* @__PURE__ */ o(n, { $active: i, children: /* @__PURE__ */ o(d, { width: 24, height: 24 }) }),
57
+ /* @__PURE__ */ o(n, { $active: !i, children: /* @__PURE__ */ o(S, { width: 24, height: 24 }) })
58
+ ] })
59
+ }
60
+ );
61
+ });
62
+ export {
63
+ C as default
64
+ };
65
+ //# sourceMappingURL=scribble-switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scribble-switch.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-tools/scribble-switch.tsx"],"sourcesContent":["import { memo, useEffect, type FC } from 'react';\nimport styled from 'styled-components';\n\nimport ScribbleIcon from '../../../../assets/line-icons/icons/scribble';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\nimport EVENTS from '../../constants/events';\nimport { useWorksheetStore } from '../hooks/use-worksheet-store';\nimport Cursor2Icon from '../../../../assets/line-icons/icons/cursor2';\n\nconst IconsWrapper = styled(FlexView)(\n ({ theme }) => `\n position: relative;\n height: 32px;\n border-radius: 40px;\n background-color: ${theme.colors.WHITE_4};\n`,\n);\n\ninterface IWhiteMaskProps {\n $active: boolean;\n}\n\nconst IconWrapper = styled.div<IWhiteMaskProps>(\n ({ $active, theme }) => ` \n z-index: 1;\n color: ${$active ? theme.colors.BLACK : theme.colors.BLACK_T_38};\n`,\n);\n\nconst WhiteMask = styled.div<IWhiteMaskProps>(\n ({ $active, theme }) => `\n position: absolute;\n top: 4px;\n left: 0;\n width: 24px;\n height: 24px;\n border-radius: 50%;\n background-color: ${theme.colors.WHITE};\n transform: translateX(${$active ? 4 : 32}px);\n transition: transform 0.3s ease;\n z-index: 0;\n`,\n);\n\nconst ScribbleSwitch: FC = memo(function ScribbleSwitch() {\n const { toggleScribble, scribblingEnabled, canToggleScribbling, loggerRef } = useWorksheetStore(\n store => ({\n scribblingEnabled: store.scribblingEnabled,\n toggleScribble: store.toggleScribble,\n canToggleScribbling: store.behavior.canScribble ?? true,\n loggerRef: store.loggerRef,\n }),\n );\n\n useEffect(() => {\n loggerRef.current(EVENTS.WORKSHEET_V3_SCRIBBLE_TOGGLE, {\n scribbling_enabled: scribblingEnabled,\n });\n }, [scribblingEnabled, loggerRef]);\n\n return (\n <Clickable\n label=\"ScribbleSwitch Toggled\"\n onClick={toggleScribble}\n disabled={!canToggleScribbling}\n >\n <IconsWrapper $flexDirection=\"row\" $gutter={4} $flexGap={4} $alignItems=\"center\">\n <WhiteMask $active={scribblingEnabled} />\n <IconWrapper $active={scribblingEnabled}>\n <ScribbleIcon width={24} height={24} />\n </IconWrapper>\n <IconWrapper $active={!scribblingEnabled}>\n <Cursor2Icon width={24} height={24} />\n </IconWrapper>\n </IconsWrapper>\n </Clickable>\n );\n});\n\nexport default ScribbleSwitch;\n"],"names":["IconsWrapper","styled","FlexView","theme","IconWrapper","$active","WhiteMask","ScribbleSwitch","memo","toggleScribble","scribblingEnabled","canToggleScribbling","loggerRef","useWorksheetStore","store","useEffect","EVENTS","jsx","Clickable","jsxs","ScribbleIcon","Cursor2Icon"],"mappings":";;;;;;;;;AAUA,MAAMA,IAAeC,EAAOC,CAAQ;AAAA,EAClC,CAAC,EAAE,OAAAC,EAAA,MAAY;AAAA;AAAA;AAAA;AAAA,sBAIKA,EAAM,OAAO,OAAO;AAAA;AAE1C,GAMMC,IAAcH,EAAO;AAAA,EACzB,CAAC,EAAE,SAAAI,GAAS,OAAAF,EAAA,MAAY;AAAA;AAAA,WAEfE,IAAUF,EAAM,OAAO,QAAQA,EAAM,OAAO,UAAU;AAAA;AAEjE,GAEMG,IAAYL,EAAO;AAAA,EACvB,CAAC,EAAE,SAAAI,GAAS,OAAAF,EAAA,MAAY;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAOJA,EAAM,OAAO,KAAK;AAAA,0BACdE,IAAU,IAAI,EAAE;AAAA;AAAA;AAAA;AAI1C,GAEME,IAAqBC,EAAK,WAA0B;AACxD,QAAM,EAAE,gBAAAC,GAAgB,mBAAAC,GAAmB,qBAAAC,GAAqB,WAAAC,EAAc,IAAAC;AAAA,IAC5E,CAAUC,OAAA;AAAA,MACR,mBAAmBA,EAAM;AAAA,MACzB,gBAAgBA,EAAM;AAAA,MACtB,qBAAqBA,EAAM,SAAS,eAAe;AAAA,MACnD,WAAWA,EAAM;AAAA,IAAA;AAAA,EACnB;AAGF,SAAAC,EAAU,MAAM;AACJ,IAAAH,EAAA,QAAQI,EAAO,8BAA8B;AAAA,MACrD,oBAAoBN;AAAA,IAAA,CACrB;AAAA,EAAA,GACA,CAACA,GAAmBE,CAAS,CAAC,GAG/B,gBAAAK;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,OAAM;AAAA,MACN,SAAST;AAAA,MACT,UAAU,CAACE;AAAA,MAEX,UAAA,gBAAAQ,EAACnB,KAAa,gBAAe,OAAM,SAAS,GAAG,UAAU,GAAG,aAAY,UACtE,UAAA;AAAA,QAAC,gBAAAiB,EAAAX,GAAA,EAAU,SAASI,EAAmB,CAAA;AAAA,QACvC,gBAAAO,EAACb,GAAY,EAAA,SAASM,GACpB,UAAA,gBAAAO,EAACG,KAAa,OAAO,IAAI,QAAQ,GAAA,CAAI,EACvC,CAAA;AAAA,QACA,gBAAAH,EAACb,GAAY,EAAA,SAAS,CAACM,GACrB,UAAC,gBAAAO,EAAAI,GAAA,EAAY,OAAO,IAAI,QAAQ,GAAA,CAAI,EACtC,CAAA;AAAA,MAAA,GACF;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
@@ -0,0 +1,9 @@
1
+ import o from "styled-components";
2
+ import e from "../../../ui/layout/flex-view.js";
3
+ const s = o(e)`
4
+ pointer-events: auto;
5
+ `;
6
+ export {
7
+ s as WorksheetQuestionsToolsContainer
8
+ };
9
+ //# sourceMappingURL=worksheet-questions-styled.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worksheet-questions-styled.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-styled.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nimport FlexView from '../../../ui/layout/flex-view';\n\nconst WorksheetQuestionsToolsContainer = styled(FlexView)`\n pointer-events: auto;\n`;\n\nexport { WorksheetQuestionsToolsContainer };\n"],"names":["WorksheetQuestionsToolsContainer","styled","FlexView"],"mappings":";;AAIM,MAAAA,IAAmCC,EAAOC,CAAQ;AAAA;AAAA;"}
@@ -0,0 +1,38 @@
1
+ import { jsxs as t, jsx as r } from "react/jsx-runtime";
2
+ import { memo as a } from "react";
3
+ import b from "./scribble-switch.js";
4
+ import { WorksheetQuestionsToolsContainer as l } from "./worksheet-questions-styled.js";
5
+ import { useWorksheetStore as c } from "../hooks/use-worksheet-store.js";
6
+ import m from "../../../cue-canvas/toolbar/toolbar.js";
7
+ import u from "./questions-toolbar/questions-toolbar.js";
8
+ const k = a(function() {
9
+ const { actionbarHeight: e, isCanvasEnabled: i, scribblingEnabled: s, userType: n } = c(
10
+ (o) => ({
11
+ actionbarHeight: o.actionbarHeight,
12
+ isCanvasEnabled: !!o.behavior.canvasEnabled,
13
+ scribblingEnabled: o.scribblingEnabled,
14
+ userType: o.userType
15
+ })
16
+ );
17
+ return /* @__PURE__ */ t(
18
+ l,
19
+ {
20
+ $flexDirection: "row",
21
+ $height: e,
22
+ $borderRadius: 48,
23
+ $background: "WHITE",
24
+ $borderColor: "BLACK_T_15",
25
+ $gutter: 4,
26
+ $alignItems: "center",
27
+ children: [
28
+ i && /* @__PURE__ */ r(b, {}),
29
+ s && /* @__PURE__ */ r(m, { userType: n, renderAs: "canvas" }),
30
+ /* @__PURE__ */ r(u, {})
31
+ ]
32
+ }
33
+ );
34
+ });
35
+ export {
36
+ k as default
37
+ };
38
+ //# sourceMappingURL=worksheet-questions-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worksheet-questions-tools.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-tools/worksheet-questions-tools.tsx"],"sourcesContent":["import { memo } from 'react';\n\nimport ScribbleSwitch from './scribble-switch';\nimport * as Styled from './worksheet-questions-styled';\nimport { useWorksheetStore } from '../hooks/use-worksheet-store';\nimport Toolbar from '../../../cue-canvas/toolbar/toolbar';\nimport QuestionsToolbar from './questions-toolbar/questions-toolbar';\n\nconst WorksheetQuestionsTools = memo(function WorksheetQuestionsTools() {\n const { actionbarHeight, isCanvasEnabled, scribblingEnabled, userType } = useWorksheetStore(\n store => ({\n actionbarHeight: store.actionbarHeight,\n isCanvasEnabled: !!store.behavior.canvasEnabled,\n scribblingEnabled: store.scribblingEnabled,\n userType: store.userType,\n }),\n );\n\n return (\n <Styled.WorksheetQuestionsToolsContainer\n $flexDirection=\"row\"\n $height={actionbarHeight}\n $borderRadius={48}\n $background=\"WHITE\"\n $borderColor=\"BLACK_T_15\"\n $gutter={4}\n $alignItems=\"center\"\n >\n {isCanvasEnabled && <ScribbleSwitch />}\n {scribblingEnabled && <Toolbar userType={userType} renderAs=\"canvas\" />}\n <QuestionsToolbar />\n </Styled.WorksheetQuestionsToolsContainer>\n );\n});\n\nexport default WorksheetQuestionsTools;\n"],"names":["WorksheetQuestionsTools","memo","actionbarHeight","isCanvasEnabled","scribblingEnabled","userType","useWorksheetStore","store","jsxs","Styled.WorksheetQuestionsToolsContainer","ScribbleSwitch","jsx","Toolbar","QuestionsToolbar"],"mappings":";;;;;;;AAQM,MAAAA,IAA0BC,EAAK,WAAmC;AACtE,QAAM,EAAE,iBAAAC,GAAiB,iBAAAC,GAAiB,mBAAAC,GAAmB,UAAAC,EAAa,IAAAC;AAAA,IACxE,CAAUC,OAAA;AAAA,MACR,iBAAiBA,EAAM;AAAA,MACvB,iBAAiB,CAAC,CAACA,EAAM,SAAS;AAAA,MAClC,mBAAmBA,EAAM;AAAA,MACzB,UAAUA,EAAM;AAAA,IAAA;AAAA,EAClB;AAIA,SAAA,gBAAAC;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,gBAAe;AAAA,MACf,SAASP;AAAA,MACT,eAAe;AAAA,MACf,aAAY;AAAA,MACZ,cAAa;AAAA,MACb,SAAS;AAAA,MACT,aAAY;AAAA,MAEX,UAAA;AAAA,QAAAC,uBAAoBO,GAAe,EAAA;AAAA,QACnCN,KAAqB,gBAAAO,EAACC,GAAQ,EAAA,UAAAP,GAAoB,UAAS,UAAS;AAAA,0BACpEQ,GAAiB,EAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGxB,CAAC;"}
@@ -1,25 +1,38 @@
1
- import { jsxs as c, jsx as o } from "react/jsx-runtime";
2
- import { useCallback as a } from "react";
3
- import m from "../../../../assets/line-icons/icons/down.js";
4
- import s from "../../../../assets/line-icons/icons/up.js";
5
- import n from "../../../ui/buttons/clickable/clickable.js";
6
- import p from "../../../ui/separator/separator.js";
7
- import { GuideContainer as d } from "./worksheet-sidebar-styled.js";
8
- const g = () => {
9
- const r = a((i) => {
10
- const l = document.getElementById("live-sheet-scroll-wrapper"), t = document.getElementById("tab-content-container"), e = {
11
- top: i === "up" ? -100 : 100,
1
+ import { jsxs as m, jsx as o } from "react/jsx-runtime";
2
+ import { memo as h, useCallback as n } from "react";
3
+ import p from "../../../../assets/line-icons/icons/chevron-down.js";
4
+ import f from "../../../../assets/line-icons/icons/chevron-up.js";
5
+ import c from "../../../ui/buttons/clickable/clickable.js";
6
+ import r from "../../../ui/layout/flex-view.js";
7
+ const v = h(function() {
8
+ const e = n((d) => {
9
+ const l = document.getElementById("live-sheet-scroll-wrapper"), i = document.getElementById("tab-content-container"), t = {
10
+ top: d === "up" ? -250 : 250,
12
11
  behavior: "smooth"
13
12
  };
14
- l ? l.scrollBy(e) : t ? t.scrollBy(e) : window.scrollBy(e);
15
- }, []);
16
- return /* @__PURE__ */ c(d, { $background: "WHITE", children: [
17
- /* @__PURE__ */ o(n, { label: "up", onClick: () => r("up"), children: /* @__PURE__ */ o(s, {}) }),
18
- /* @__PURE__ */ o(p, { height: 16 }),
19
- /* @__PURE__ */ o(n, { label: "down", onClick: () => r("down"), children: /* @__PURE__ */ o(m, {}) })
20
- ] });
21
- };
13
+ l ? l.scrollBy(t) : i ? i.scrollBy(t) : window.scrollBy(t);
14
+ }, []), s = n(() => {
15
+ e("up");
16
+ }, [e]), a = n(() => {
17
+ e("down");
18
+ }, [e]);
19
+ return /* @__PURE__ */ m(
20
+ r,
21
+ {
22
+ $background: "WHITE",
23
+ $borderRadius: 48,
24
+ $gutter: 8,
25
+ $flexGap: 8,
26
+ $flexDirection: "row",
27
+ $borderColor: "BLACK_T_15",
28
+ children: [
29
+ /* @__PURE__ */ o(c, { label: "up", onClick: s, children: /* @__PURE__ */ o(r, { $height: 38, $justifyContent: "center", children: /* @__PURE__ */ o(f, {}) }) }),
30
+ /* @__PURE__ */ o(c, { label: "down", onClick: a, children: /* @__PURE__ */ o(r, { $height: 38, $justifyContent: "center", children: /* @__PURE__ */ o(p, {}) }) })
31
+ ]
32
+ }
33
+ );
34
+ });
22
35
  export {
23
- g as default
36
+ v as default
24
37
  };
25
38
  //# sourceMappingURL=navigator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigator.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-sidebar/navigator.tsx"],"sourcesContent":["import { useCallback, type FC } from 'react';\n\nimport DownIcon from '../../../../assets/line-icons/icons/down';\nimport UpIcon from '../../../../assets/line-icons/icons/up';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport Separator from '../../../ui/separator/separator';\nimport { GuideContainer } from './worksheet-sidebar-styled';\n\nconst Navigator: FC = () => {\n const handleClick = useCallback((val: 'up' | 'down') => {\n const liveScrollView = document.getElementById('live-sheet-scroll-wrapper');\n const tabScrollView = document.getElementById('tab-content-container');\n const position = {\n top: val === 'up' ? -100 : 100,\n behavior: 'smooth',\n } as const;\n\n if (liveScrollView) {\n liveScrollView.scrollBy(position);\n } else if (tabScrollView) {\n tabScrollView.scrollBy(position);\n } else {\n window.scrollBy(position);\n }\n }, []);\n\n return (\n <GuideContainer $background=\"WHITE\">\n <Clickable label=\"up\" onClick={() => handleClick('up')}>\n <UpIcon />\n </Clickable>\n <Separator height={16} />\n <Clickable label=\"down\" onClick={() => handleClick('down')}>\n <DownIcon />\n </Clickable>\n </GuideContainer>\n );\n};\n\nexport default Navigator;\n"],"names":["Navigator","handleClick","useCallback","val","liveScrollView","tabScrollView","position","jsxs","GuideContainer","jsx","Clickable","UpIcon","Separator","DownIcon"],"mappings":";;;;;;;AAQA,MAAMA,IAAgB,MAAM;AACpB,QAAAC,IAAcC,EAAY,CAACC,MAAuB;AAChD,UAAAC,IAAiB,SAAS,eAAe,2BAA2B,GACpEC,IAAgB,SAAS,eAAe,uBAAuB,GAC/DC,IAAW;AAAA,MACf,KAAKH,MAAQ,OAAO,OAAO;AAAA,MAC3B,UAAU;AAAA,IAAA;AAGZ,IAAIC,IACFA,EAAe,SAASE,CAAQ,IACvBD,IACTA,EAAc,SAASC,CAAQ,IAE/B,OAAO,SAASA,CAAQ;AAAA,EAE5B,GAAG,CAAE,CAAA;AAGH,SAAA,gBAAAC,EAACC,GAAe,EAAA,aAAY,SAC1B,UAAA;AAAA,IAAC,gBAAAC,EAAAC,GAAA,EAAU,OAAM,MAAK,SAAS,MAAMT,EAAY,IAAI,GACnD,UAAC,gBAAAQ,EAAAE,GAAA,CAAA,CAAO,EACV,CAAA;AAAA,IACA,gBAAAF,EAACG,GAAU,EAAA,QAAQ,GAAI,CAAA;AAAA,IACvB,gBAAAH,EAACC,GAAU,EAAA,OAAM,QAAO,SAAS,MAAMT,EAAY,MAAM,GACvD,UAAC,gBAAAQ,EAAAI,GAAA,CAAA,CAAS,EACZ,CAAA;AAAA,EACF,EAAA,CAAA;AAEJ;"}
1
+ {"version":3,"file":"navigator.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-sidebar/navigator.tsx"],"sourcesContent":["import { memo, useCallback, type FC } from 'react';\n\nimport ChevronDownIcon from '../../../../assets/line-icons/icons/chevron-down';\nimport ChevronUpIcon from '../../../../assets/line-icons/icons/chevron-up';\nimport Clickable from '../../../ui/buttons/clickable/clickable';\nimport FlexView from '../../../ui/layout/flex-view';\n\nconst Navigator: FC = memo(function Navigator() {\n const handleClick = useCallback((val: 'up' | 'down') => {\n const liveScrollView = document.getElementById('live-sheet-scroll-wrapper');\n const tabScrollView = document.getElementById('tab-content-container');\n const position = {\n top: val === 'up' ? -250 : 250,\n behavior: 'smooth',\n } as const;\n\n if (liveScrollView) {\n liveScrollView.scrollBy(position);\n } else if (tabScrollView) {\n tabScrollView.scrollBy(position);\n } else {\n window.scrollBy(position);\n }\n }, []);\n\n const handleUpClick = useCallback(() => {\n handleClick('up');\n }, [handleClick]);\n\n const handleDownClick = useCallback(() => {\n handleClick('down');\n }, [handleClick]);\n\n return (\n <FlexView\n $background=\"WHITE\"\n $borderRadius={48}\n $gutter={8}\n $flexGap={8}\n $flexDirection=\"row\"\n $borderColor=\"BLACK_T_15\"\n >\n <Clickable label=\"up\" onClick={handleUpClick}>\n <FlexView $height={38} $justifyContent=\"center\">\n <ChevronUpIcon />\n </FlexView>\n </Clickable>\n <Clickable label=\"down\" onClick={handleDownClick}>\n <FlexView $height={38} $justifyContent=\"center\">\n <ChevronDownIcon />\n </FlexView>\n </Clickable>\n </FlexView>\n );\n});\n\nexport default Navigator;\n"],"names":["Navigator","memo","handleClick","useCallback","val","liveScrollView","tabScrollView","position","handleUpClick","handleDownClick","jsxs","FlexView","jsx","Clickable","ChevronUpIcon","ChevronDownIcon"],"mappings":";;;;;;AAOM,MAAAA,IAAgBC,EAAK,WAAqB;AACxC,QAAAC,IAAcC,EAAY,CAACC,MAAuB;AAChD,UAAAC,IAAiB,SAAS,eAAe,2BAA2B,GACpEC,IAAgB,SAAS,eAAe,uBAAuB,GAC/DC,IAAW;AAAA,MACf,KAAKH,MAAQ,OAAO,OAAO;AAAA,MAC3B,UAAU;AAAA,IAAA;AAGZ,IAAIC,IACFA,EAAe,SAASE,CAAQ,IACvBD,IACTA,EAAc,SAASC,CAAQ,IAE/B,OAAO,SAASA,CAAQ;AAAA,EAE5B,GAAG,CAAE,CAAA,GAECC,IAAgBL,EAAY,MAAM;AACtC,IAAAD,EAAY,IAAI;AAAA,EAAA,GACf,CAACA,CAAW,CAAC,GAEVO,IAAkBN,EAAY,MAAM;AACxC,IAAAD,EAAY,MAAM;AAAA,EAAA,GACjB,CAACA,CAAW,CAAC;AAGd,SAAA,gBAAAQ;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,aAAY;AAAA,MACZ,eAAe;AAAA,MACf,SAAS;AAAA,MACT,UAAU;AAAA,MACV,gBAAe;AAAA,MACf,cAAa;AAAA,MAEb,UAAA;AAAA,QAAA,gBAAAC,EAACC,GAAU,EAAA,OAAM,MAAK,SAASL,GAC7B,UAAC,gBAAAI,EAAAD,GAAA,EAAS,SAAS,IAAI,iBAAgB,UACrC,UAAC,gBAAAC,EAAAE,GAAA,CAAA,CAAc,EACjB,CAAA,GACF;AAAA,QACC,gBAAAF,EAAAC,GAAA,EAAU,OAAM,QAAO,SAASJ,GAC/B,UAAA,gBAAAG,EAACD,GAAS,EAAA,SAAS,IAAI,iBAAgB,UACrC,UAAC,gBAAAC,EAAAG,GAAA,CAAA,CAAgB,EACnB,CAAA,GACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN,CAAC;"}
@@ -0,0 +1,73 @@
1
+ import { getInitialResponses as k, getInitialQuestionId as v, getWorksheetDimensions as r } from "../../worksheet-helpers.js";
2
+ import { getLastAttemptableQuestionIndex as x } from "./get-last-attemptable-question-index.js";
3
+ import { getQuestionsFromItems as C } from "./get-questions-from-items.js";
4
+ import { getLastUnlockedQuestionIndex as h } from "./get-last-unlocked-question-index.js";
5
+ import { getDerivedBlocker as R } from "./get-derived-blocker.js";
6
+ import { getRenderableQuestions as T } from "./get-renderable-questions.js";
7
+ const D = (n, e) => {
8
+ var m;
9
+ const {
10
+ learnosityItems: d,
11
+ learnosityResponses: b,
12
+ updatedResponses: I,
13
+ layout: Q,
14
+ behavior: s,
15
+ userType: a,
16
+ initialResponseId: p,
17
+ initialItemIndex: g
18
+ } = n, { initialQuestion: y } = s, i = (e == null ? void 0 : e.questions) ?? C(d, {
19
+ nodeType: n.nodeType,
20
+ activityType: n.activityType
21
+ }), l = I ?? (e == null ? void 0 : e.responses) ?? b ?? k(i), t = h({
22
+ questions: i,
23
+ responses: l,
24
+ behavior: s,
25
+ userType: a,
26
+ inClass: !!n.inClass
27
+ }), c = (e == null ? void 0 : e.initialQuestionId) ?? v({
28
+ questions: i,
29
+ initialQuestion: y,
30
+ lastUnlockedQuestionIndex: t,
31
+ lastAttemptableQuestionIndex: x({
32
+ questions: i,
33
+ responses: l,
34
+ behavior: s,
35
+ userType: a,
36
+ inClass: !!n.inClass
37
+ }),
38
+ initialResponseId: p,
39
+ initialItemIndex: g
40
+ }), u = (e == null ? void 0 : e.activeQuestionId) ?? c, o = i.findIndex(
41
+ (f) => f.response_id === u
42
+ );
43
+ return setTimeout(() => {
44
+ !e && i[o] && n.onActiveQuestionChange && n.onActiveQuestionChange(i[o]);
45
+ }, 0), {
46
+ questions: i,
47
+ renderableQuestions: T({
48
+ questions: i,
49
+ userType: a,
50
+ lastUnlockedQuestionIndex: t
51
+ }),
52
+ responses: l,
53
+ lastUnlockedQuestionIndex: t,
54
+ initialQuestionId: c,
55
+ activeQuestionId: u,
56
+ activeQuestionIndex: o,
57
+ summaryVisible: e ? e.summaryVisible : !1,
58
+ calculatorVisible: e ? e.calculatorVisible : !1,
59
+ scribblingEnabled: e ? e.scribblingEnabled : !1,
60
+ blocker: R({
61
+ currentBlocker: e == null ? void 0 : e.blocker,
62
+ teacherValidationEnabled: s.teacherValidationEnabled,
63
+ userType: a,
64
+ lastUnlockedQuestion: i[t],
65
+ lastUnlockedQuestionResponse: l[((m = i[t]) == null ? void 0 : m.response_id) ?? ""]
66
+ }),
67
+ ...r(d, Q)
68
+ };
69
+ };
70
+ export {
71
+ D as getComputedProperties
72
+ };
73
+ //# sourceMappingURL=get-computed-properties.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-computed-properties.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-store/helpers/get-computed-properties.ts"],"sourcesContent":["import {\n getInitialQuestionId,\n getInitialResponses,\n getWorksheetDimensions,\n} from '../../worksheet-helpers';\nimport { getLastAttemptableQuestionIndex } from './get-last-attemptable-question-index';\nimport { getQuestionsFromItems } from './get-questions-from-items';\nimport { getLastUnlockedQuestionIndex } from './get-last-unlocked-question-index';\nimport type {\n IWorksheetStore,\n IWorksheetStoreState,\n TWorksheetStoreProps,\n} from '../../worksheet-types';\nimport { getDerivedBlocker } from './get-derived-blocker';\nimport { getRenderableQuestions } from './get-renderable-questions';\n\ninterface IGetComputedProperties {\n (props: TWorksheetStoreProps, store?: IWorksheetStore): IWorksheetStoreState;\n}\nexport const getComputedProperties: IGetComputedProperties = (props, store) => {\n const {\n learnosityItems,\n learnosityResponses,\n updatedResponses,\n layout,\n behavior,\n userType,\n initialResponseId,\n initialItemIndex,\n } = props;\n const { initialQuestion } = behavior;\n const questions =\n store?.questions ??\n getQuestionsFromItems(learnosityItems, {\n nodeType: props.nodeType,\n activityType: props.activityType,\n });\n const responses =\n updatedResponses ?? store?.responses ?? learnosityResponses ?? getInitialResponses(questions);\n const lastUnlockedQuestionIndex = getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n inClass: !!props.inClass,\n });\n const initialQuestionId =\n store?.initialQuestionId ??\n getInitialQuestionId({\n questions,\n initialQuestion,\n lastUnlockedQuestionIndex,\n lastAttemptableQuestionIndex: getLastAttemptableQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n inClass: !!props.inClass,\n }),\n initialResponseId,\n initialItemIndex,\n });\n\n const activeQuestionId = store?.activeQuestionId ?? initialQuestionId;\n const activeQuestionIndex = questions.findIndex(\n question => question.response_id === activeQuestionId,\n );\n\n setTimeout(() => {\n if (!store && questions[activeQuestionIndex] && props.onActiveQuestionChange) {\n props.onActiveQuestionChange(questions[activeQuestionIndex]);\n }\n }, 0);\n\n return {\n questions,\n renderableQuestions: getRenderableQuestions({\n questions,\n userType,\n lastUnlockedQuestionIndex,\n }),\n responses,\n lastUnlockedQuestionIndex,\n initialQuestionId,\n activeQuestionId,\n activeQuestionIndex,\n summaryVisible: store ? store.summaryVisible : false,\n calculatorVisible: store ? store.calculatorVisible : false,\n scribblingEnabled: store ? store.scribblingEnabled : false,\n blocker: getDerivedBlocker({\n currentBlocker: store?.blocker,\n teacherValidationEnabled: behavior.teacherValidationEnabled,\n userType,\n lastUnlockedQuestion: questions[lastUnlockedQuestionIndex]!,\n lastUnlockedQuestionResponse:\n responses[questions[lastUnlockedQuestionIndex]?.response_id ?? ''],\n }),\n ...getWorksheetDimensions(learnosityItems, layout),\n };\n};\n"],"names":["getComputedProperties","props","store","learnosityItems","learnosityResponses","updatedResponses","layout","behavior","userType","initialResponseId","initialItemIndex","initialQuestion","questions","getQuestionsFromItems","responses","getInitialResponses","lastUnlockedQuestionIndex","getLastUnlockedQuestionIndex","initialQuestionId","getInitialQuestionId","getLastAttemptableQuestionIndex","activeQuestionId","activeQuestionIndex","question","getRenderableQuestions","getDerivedBlocker","_a","getWorksheetDimensions"],"mappings":";;;;;;AAmBa,MAAAA,IAAgD,CAACC,GAAOC,MAAU;;AACvE,QAAA;AAAA,IACJ,iBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,kBAAAC;AAAA,EACE,IAAAT,GACE,EAAE,iBAAAU,EAAoB,IAAAJ,GACtBK,KACJV,KAAA,gBAAAA,EAAO,cACPW,EAAsBV,GAAiB;AAAA,IACrC,UAAUF,EAAM;AAAA,IAChB,cAAcA,EAAM;AAAA,EAAA,CACrB,GACGa,IACJT,MAAoBH,KAAA,gBAAAA,EAAO,cAAaE,KAAuBW,EAAoBH,CAAS,GACxFI,IAA4BC,EAA6B;AAAA,IAC7D,WAAAL;AAAA,IACA,WAAAE;AAAA,IACA,UAAAP;AAAA,IACA,UAAAC;AAAA,IACA,SAAS,CAAC,CAACP,EAAM;AAAA,EAAA,CAClB,GACKiB,KACJhB,KAAA,gBAAAA,EAAO,sBACPiB,EAAqB;AAAA,IACnB,WAAAP;AAAA,IACA,iBAAAD;AAAA,IACA,2BAAAK;AAAA,IACA,8BAA8BI,EAAgC;AAAA,MAC5D,WAAAR;AAAA,MACA,WAAAE;AAAA,MACA,UAAAP;AAAA,MACA,UAAAC;AAAA,MACA,SAAS,CAAC,CAACP,EAAM;AAAA,IAAA,CAClB;AAAA,IACD,mBAAAQ;AAAA,IACA,kBAAAC;AAAA,EAAA,CACD,GAEGW,KAAmBnB,KAAA,gBAAAA,EAAO,qBAAoBgB,GAC9CI,IAAsBV,EAAU;AAAA,IACpC,CAAAW,MAAYA,EAAS,gBAAgBF;AAAA,EAAA;AAGvC,oBAAW,MAAM;AACf,IAAI,CAACnB,KAASU,EAAUU,CAAmB,KAAKrB,EAAM,0BAC9CA,EAAA,uBAAuBW,EAAUU,CAAmB,CAAC;AAAA,KAE5D,CAAC,GAEG;AAAA,IACL,WAAAV;AAAA,IACA,qBAAqBY,EAAuB;AAAA,MAC1C,WAAAZ;AAAA,MACA,UAAAJ;AAAA,MACA,2BAAAQ;AAAA,IAAA,CACD;AAAA,IACD,WAAAF;AAAA,IACA,2BAAAE;AAAA,IACA,mBAAAE;AAAA,IACA,kBAAAG;AAAA,IACA,qBAAAC;AAAA,IACA,gBAAgBpB,IAAQA,EAAM,iBAAiB;AAAA,IAC/C,mBAAmBA,IAAQA,EAAM,oBAAoB;AAAA,IACrD,mBAAmBA,IAAQA,EAAM,oBAAoB;AAAA,IACrD,SAASuB,EAAkB;AAAA,MACzB,gBAAgBvB,KAAA,gBAAAA,EAAO;AAAA,MACvB,0BAA0BK,EAAS;AAAA,MACnC,UAAAC;AAAA,MACA,sBAAsBI,EAAUI,CAAyB;AAAA,MACzD,8BACEF,IAAUY,IAAAd,EAAUI,CAAyB,MAAnC,gBAAAU,EAAsC,gBAAe,EAAE;AAAA,IAAA,CACpE;AAAA,IACD,GAAGC,EAAuBxB,GAAiBG,CAAM;AAAA,EAAA;AAErD;"}
@@ -0,0 +1,20 @@
1
+ const B = ({
2
+ teacherValidationEnabled: i,
3
+ userType: v,
4
+ lastUnlockedQuestion: f,
5
+ lastUnlockedQuestionResponse: r
6
+ }) => {
7
+ if (i) {
8
+ const { item_type: m, instructor_stimulus: y, is_optional: x } = f;
9
+ if (v === "TEACHER") {
10
+ if (m === "exit-ticket" && y !== "SystemIntro")
11
+ return r != null && r.submittedByStudent && !(r != null && r.validatedByTeacher) ? "exit-ticket-review-available" : r != null && r.validatedByTeacher ? void 0 : "exit-ticket-teacher-intervention";
12
+ if (x)
13
+ return r != null && r.assignStatus ? void 0 : "optional-items-assignment";
14
+ }
15
+ }
16
+ };
17
+ export {
18
+ B as getDerivedBlocker
19
+ };
20
+ //# sourceMappingURL=get-derived-blocker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-derived-blocker.js","sources":["../../../../../../src/features/worksheet/worksheet/worksheet-store/helpers/get-derived-blocker.ts"],"sourcesContent":["import type {\n IWorksheetQuestion,\n IWorksheetResponse,\n IWorksheetStore,\n} from '../../worksheet-types';\n\ninterface IGetDerivedBlocker {\n (options: {\n currentBlocker?: IWorksheetStore['blocker'];\n teacherValidationEnabled: IWorksheetStore['behavior']['teacherValidationEnabled'];\n userType: IWorksheetStore['userType'];\n lastUnlockedQuestion: IWorksheetQuestion;\n lastUnlockedQuestionResponse?: IWorksheetResponse;\n }): IWorksheetStore['blocker'] | undefined;\n}\n\nexport const getDerivedBlocker: IGetDerivedBlocker = ({\n teacherValidationEnabled,\n userType,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse,\n}) => {\n if (teacherValidationEnabled) {\n const { item_type, instructor_stimulus, is_optional } = lastUnlockedQuestion;\n\n if (userType === 'TEACHER') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (\n lastUnlockedQuestionResponse?.submittedByStudent &&\n !lastUnlockedQuestionResponse?.validatedByTeacher\n ) {\n return 'exit-ticket-review-available';\n }\n\n if (!lastUnlockedQuestionResponse?.validatedByTeacher) {\n return 'exit-ticket-teacher-intervention';\n }\n\n return undefined;\n }\n\n if (is_optional) {\n if (!lastUnlockedQuestionResponse?.assignStatus) {\n return 'optional-items-assignment';\n }\n\n return undefined;\n }\n }\n }\n\n return undefined;\n};\n"],"names":["getDerivedBlocker","teacherValidationEnabled","userType","lastUnlockedQuestion","lastUnlockedQuestionResponse","item_type","instructor_stimulus","is_optional"],"mappings":"AAgBO,MAAMA,IAAwC,CAAC;AAAA,EACpD,0BAAAC;AAAA,EACA,UAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,8BAAAC;AACF,MAAM;AACJ,MAAIH,GAA0B;AAC5B,UAAM,EAAE,WAAAI,GAAW,qBAAAC,GAAqB,aAAAC,EAAA,IAAgBJ;AAExD,QAAID,MAAa,WAAW;AACtB,UAAAG,MAAc,iBAAiBC,MAAwB;AACzD,eACEF,KAAA,QAAAA,EAA8B,sBAC9B,EAACA,KAAA,QAAAA,EAA8B,sBAExB,iCAGJA,KAAA,QAAAA,EAA8B,qBAI5B,SAHE;AAMX,UAAIG;AACE,eAACH,KAAA,QAAAA,EAA8B,eAI5B,SAHE;AAAA,IAKb;AAAA,EACF;AAGF;"}
@@ -0,0 +1,69 @@
1
+ import { isTeacherInterventionNeeded as l } from "../../worksheet-helpers.js";
2
+ const m = ({
3
+ questions: e,
4
+ responses: c,
5
+ userType: s
6
+ }) => {
7
+ const d = [...e].reverse().findIndex((i) => {
8
+ const r = c[i.response_id], { validatedByTeacher: t, assignStatus: n } = r ?? {};
9
+ return !!(t || n === "skipped");
10
+ });
11
+ if (d === -1)
12
+ return 0;
13
+ if (d === 0) {
14
+ const i = [...e].reverse().findIndex((r) => {
15
+ var t;
16
+ return ((t = c[r.response_id]) == null ? void 0 : t.assignStatus) !== "skipped";
17
+ });
18
+ return e.length - i - 1;
19
+ }
20
+ if (s === "STUDENT") {
21
+ const i = e.length - d, r = e[i], { assignStatus: t } = c[r.response_id] ?? {};
22
+ return r.is_optional && !t ? i - 1 : i;
23
+ }
24
+ return e.length - d;
25
+ }, x = ({
26
+ questions: e,
27
+ responses: c,
28
+ behavior: s,
29
+ inClass: d
30
+ }) => {
31
+ const { attemptsAfterTeacherInterventionNeeded: i } = s, r = e.findIndex((t) => {
32
+ var u;
33
+ const n = c[t.response_id], { attemptsHistory: a } = n ?? {};
34
+ if (t.is_non_question)
35
+ return (n == null ? void 0 : n.responseGiven) !== !0;
36
+ if (t.item_type === "exit-ticket")
37
+ return (n == null ? void 0 : n.skipped) !== !0 && (n == null ? void 0 : n.response) === void 0;
38
+ const o = (u = a == null ? void 0 : a.slice(-1)[0]) == null ? void 0 : u.score;
39
+ return o ? (o.score ?? 0) === o.max_score ? !!(d && t.metadata.acknowledgements && !(n != null && n.validatedByTeacher)) : l({
40
+ attemptsAfterTeacherInterventionNeeded: i,
41
+ attemptsHistory: a
42
+ }) ? d : !0 : !0;
43
+ });
44
+ return r === -1 ? e.length - 1 : r === 0 ? 0 : r;
45
+ }, I = ({
46
+ questions: e,
47
+ responses: c,
48
+ behavior: s
49
+ }) => {
50
+ const { maximumAttempts: d, validation: i, navigationMode: r } = s, t = [...e].reverse().findIndex((n) => {
51
+ var f;
52
+ const a = c[n.response_id], { attemptsHistory: o } = a ?? {}, u = (f = o == null ? void 0 : o.slice(-1)[0]) == null ? void 0 : f.score;
53
+ return u ? (u.score ?? 0) === u.max_score || ((o == null ? void 0 : o.length) ?? 0) >= d : !!(!i && r === "LINEAR" && (a != null && a.response || a != null && a.skipped));
54
+ });
55
+ return t === -1 ? 0 : t === 0 ? e.length - 1 : e.length - t;
56
+ }, p = ({
57
+ questions: e,
58
+ responses: c,
59
+ behavior: s,
60
+ userType: d,
61
+ inClass: i
62
+ }) => {
63
+ const { teacherValidationEnabled: r, teacherDiscussionEnabled: t } = s;
64
+ return r ? m({ questions: e, responses: c, userType: d }) : t ? x({ questions: e, responses: c, behavior: s, inClass: i }) : I({ questions: e, responses: c, behavior: s });
65
+ };
66
+ export {
67
+ p as getLastAttemptableQuestionIndex
68
+ };
69
+ //# sourceMappingURL=get-last-attemptable-question-index.js.map