@cuemath/leap 3.1.48-aa2 → 3.1.48-aa3
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.
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsxs as R, Fragment as lt, jsx as o } from "react/jsx-runtime";
|
|
2
2
|
import { captureMessage as Z } from "@sentry/browser";
|
|
3
|
-
import { memo as dt, forwardRef as ut, useMemo as Q, useState as y, useCallback as
|
|
3
|
+
import { memo as dt, forwardRef as ut, useMemo as Q, useState as y, useCallback as v, useEffect as b, useLayoutEffect as mt } from "react";
|
|
4
4
|
import ft from "../../../assets/line-icons/icons/check2.js";
|
|
5
5
|
import pt from "../../../assets/line-icons/icons/info2.js";
|
|
6
6
|
import ht from "../../../helpers/get-device-details.js";
|
|
@@ -10,8 +10,8 @@ import bt from "../../ui/text/text.js";
|
|
|
10
10
|
import It from "../constants/events.js";
|
|
11
11
|
import St from "../user-pointer-pin/user-pin.js";
|
|
12
12
|
import { WORKSHEET_NUDGE_BANNER_HEIGHT as me, TOP_NAVIGATION_HEIGHT as Ct, DESMOS_CALC_POSITION as yt } from "./constants.js";
|
|
13
|
-
import
|
|
14
|
-
import
|
|
13
|
+
import vt from "./hooks/use-create-imperative-handle.js";
|
|
14
|
+
import Tt from "./hooks/use-get-active-question-id.js";
|
|
15
15
|
import $t from "./hooks/use-time-on-questions.js";
|
|
16
16
|
import Et from "./question-tips.js";
|
|
17
17
|
import _t from "./worksheet-action-bar/worksheet-action-bar.js";
|
|
@@ -19,9 +19,9 @@ import kt from "./worksheet-blocker/worksheet-blocker.js";
|
|
|
19
19
|
import { getWorksheetDimensions as wt, getQuestionsFromItems as Nt, getInitialResponses as At, getLastUnlockedQuestionIndex as fe, getRenderableQuestions as Bt, getInitialQuestionId as Wt, getQuestionMetadata as pe, scrollToQuestion as L, getWorksheetNudgeBannerInfo as Ot } from "./worksheet-helpers.js";
|
|
20
20
|
import Rt from "./worksheet-navigation/worksheet-navigation.js";
|
|
21
21
|
import Dt from "./worksheet-question/worksheet-question.js";
|
|
22
|
-
import
|
|
23
|
-
import
|
|
24
|
-
import { LearnosityStyleOverrides as
|
|
22
|
+
import Mt from "./worksheet-sidebar/navigator.js";
|
|
23
|
+
import Vt from "./worksheet-sidebar/sidebar.js";
|
|
24
|
+
import { LearnosityStyleOverrides as xt, NudgeBannerWrapper as Ht, NudgeBannerIcon as he, WorksheetContainer as qt, NavigationContainer as Pt, NavigationWrapper as Qt, BlockerWrapper as Lt, DesmosCalcWrapper as Gt, ActionbarContainer as Ft, ActionbarWrapper as jt, StudentWorksheetSideBar as Kt, QuestionsWrapper as Ut } from "./worksheet-styled.js";
|
|
25
25
|
import Xt from "./worksheet-summary/worksheet-summary.js";
|
|
26
26
|
const zt = (ge, be) => {
|
|
27
27
|
const {
|
|
@@ -33,9 +33,9 @@ const zt = (ge, be) => {
|
|
|
33
33
|
initialItemIndex: ye,
|
|
34
34
|
learnosityActivityRef: _,
|
|
35
35
|
learnosityItems: k,
|
|
36
|
-
learnosityResponses:
|
|
37
|
-
layout:
|
|
38
|
-
background:
|
|
36
|
+
learnosityResponses: ve,
|
|
37
|
+
layout: T,
|
|
38
|
+
background: Te,
|
|
39
39
|
behavior: a,
|
|
40
40
|
updatedResponses: G,
|
|
41
41
|
showNudgeBanner: $e,
|
|
@@ -48,7 +48,7 @@ const zt = (ge, be) => {
|
|
|
48
48
|
onOptionalItemAssignment: _e,
|
|
49
49
|
onOptionalItemSkip: ke,
|
|
50
50
|
onExitTicketStart: D,
|
|
51
|
-
onExitTicketSubmit:
|
|
51
|
+
onExitTicketSubmit: M,
|
|
52
52
|
onSubmit: we,
|
|
53
53
|
learnosity: S,
|
|
54
54
|
appendedQuestionIds: ne,
|
|
@@ -60,11 +60,11 @@ const zt = (ge, be) => {
|
|
|
60
60
|
isCanvasEnabled: oe,
|
|
61
61
|
onHelp: Re,
|
|
62
62
|
onPublishMouseMove: De,
|
|
63
|
-
onSubscribeMouseMove:
|
|
63
|
+
onSubscribeMouseMove: Me,
|
|
64
64
|
onActiveQuestionChange: K,
|
|
65
|
-
openQuestionFeedbackModal:
|
|
66
|
-
summaryDescription:
|
|
67
|
-
canSubmitWorksheet:
|
|
65
|
+
openQuestionFeedbackModal: Ve,
|
|
66
|
+
summaryDescription: xe,
|
|
67
|
+
canSubmitWorksheet: He,
|
|
68
68
|
loggerRef: w,
|
|
69
69
|
canResolveDoubt: qe,
|
|
70
70
|
onResolveDoubt: Pe,
|
|
@@ -74,42 +74,42 @@ const zt = (ge, be) => {
|
|
|
74
74
|
subjectiveProps: Fe,
|
|
75
75
|
canShowActionBar: je = !0
|
|
76
76
|
} = ge, { initialQuestion: Ke, navigationMode: p, teacherValidationEnabled: U } = a, {
|
|
77
|
-
containerStyle:
|
|
77
|
+
containerStyle: V,
|
|
78
78
|
containerWidth: Ue,
|
|
79
79
|
minQuestionHeight: re,
|
|
80
80
|
minSummaryHeight: Xe,
|
|
81
|
-
questionsScrollable:
|
|
81
|
+
questionsScrollable: x,
|
|
82
82
|
navigationBar: ze,
|
|
83
|
-
topOffset:
|
|
83
|
+
topOffset: H,
|
|
84
84
|
renderSideBar: Je,
|
|
85
85
|
showUserPointer: Ye = !0
|
|
86
|
-
} =
|
|
87
|
-
() => wt(k,
|
|
88
|
-
[
|
|
89
|
-
), [
|
|
86
|
+
} = T, { actionbarHeight: C, maxQuestionWidth: X, questionsContainerWidth: z } = Q(
|
|
87
|
+
() => wt(k, T),
|
|
88
|
+
[T, k]
|
|
89
|
+
), [i] = y(
|
|
90
90
|
() => Nt(k, {
|
|
91
91
|
sectioned: U && p !== "ADAPTIVE" && p !== "CURRENT",
|
|
92
92
|
adaptive: p === "ADAPTIVE"
|
|
93
93
|
})
|
|
94
94
|
), [c, N] = y(
|
|
95
|
-
() =>
|
|
95
|
+
() => ve ?? At(i)
|
|
96
96
|
), [se, Ze] = y(!1), h = Q(
|
|
97
97
|
() => p !== "OPEN" ? fe({
|
|
98
|
-
questions:
|
|
98
|
+
questions: i,
|
|
99
99
|
responses: c,
|
|
100
100
|
behavior: a,
|
|
101
101
|
userType: r
|
|
102
|
-
}) :
|
|
103
|
-
[a, p,
|
|
102
|
+
}) : i.length - 1,
|
|
103
|
+
[a, p, i, c, r]
|
|
104
104
|
), et = Q(
|
|
105
|
-
() => Bt({ questions:
|
|
106
|
-
[
|
|
107
|
-
), l =
|
|
105
|
+
() => Bt({ questions: i, lastUnlockedQuestionIndex: h, userType: r }),
|
|
106
|
+
[i, h, r]
|
|
107
|
+
), l = i[h], s = c[(l == null ? void 0 : l.response_id) ?? ""], { bannerBackgroundColor: tt, label: it } = Ot(r, !!te), [A] = y(
|
|
108
108
|
() => Wt({
|
|
109
|
-
questions:
|
|
109
|
+
questions: i,
|
|
110
110
|
initialQuestion: Ke,
|
|
111
111
|
lastUnlockedQuestionIndex: fe({
|
|
112
|
-
questions:
|
|
112
|
+
questions: i,
|
|
113
113
|
responses: c,
|
|
114
114
|
behavior: a,
|
|
115
115
|
userType: r
|
|
@@ -117,14 +117,14 @@ const zt = (ge, be) => {
|
|
|
117
117
|
initialResponseId: Ce,
|
|
118
118
|
initialItemIndex: ye
|
|
119
119
|
})
|
|
120
|
-
), { activeQuestionId: B, setActiveQuestionId: q, intersectionObserver: J } =
|
|
121
|
-
() =>
|
|
122
|
-
[B,
|
|
123
|
-
), [g, Y] = y(!1), [ae, W] = y(), [ce, le] = y(!1), de = $t(a, c, B), nt =
|
|
124
|
-
(e,
|
|
125
|
-
const d =
|
|
120
|
+
), { activeQuestionId: B, setActiveQuestionId: q, intersectionObserver: J } = Tt(A), f = Q(
|
|
121
|
+
() => i.findIndex((e) => e.response_id === B),
|
|
122
|
+
[B, i]
|
|
123
|
+
), [g, Y] = y(!1), [ae, W] = y(), [ce, le] = y(!1), de = $t(a, c, B), nt = v(
|
|
124
|
+
(e, t, n) => {
|
|
125
|
+
const d = t === "SIMULATION" ? "simState" : void 0;
|
|
126
126
|
d && (I ? N((u) => {
|
|
127
|
-
const m = e.response_id, $ = pe(
|
|
127
|
+
const m = e.response_id, $ = pe(i, m);
|
|
128
128
|
if (!$) return u;
|
|
129
129
|
const E = {
|
|
130
130
|
...$,
|
|
@@ -140,52 +140,56 @@ const zt = (ge, be) => {
|
|
|
140
140
|
...u,
|
|
141
141
|
[m]: E
|
|
142
142
|
};
|
|
143
|
-
}) : j && j(e,
|
|
143
|
+
}) : j && j(e, t, n));
|
|
144
144
|
},
|
|
145
|
-
[j, I,
|
|
146
|
-
), ot =
|
|
147
|
-
(e,
|
|
145
|
+
[j, I, i]
|
|
146
|
+
), ot = v(
|
|
147
|
+
(e, t) => {
|
|
148
148
|
N((n) => {
|
|
149
|
-
const d = pe(
|
|
149
|
+
const d = pe(i, e);
|
|
150
150
|
return d ? {
|
|
151
151
|
...n,
|
|
152
152
|
[e]: {
|
|
153
153
|
...d,
|
|
154
154
|
...n[e],
|
|
155
|
-
markedForReview:
|
|
155
|
+
markedForReview: t
|
|
156
156
|
}
|
|
157
157
|
} : n;
|
|
158
158
|
});
|
|
159
159
|
},
|
|
160
|
-
[
|
|
161
|
-
), O =
|
|
160
|
+
[i]
|
|
161
|
+
), O = v(() => {
|
|
162
162
|
W((e) => {
|
|
163
|
-
var
|
|
163
|
+
var t;
|
|
164
164
|
if (e) {
|
|
165
|
-
const n = (
|
|
165
|
+
const n = (t = i[h]) == null ? void 0 : t.response_id;
|
|
166
166
|
n && setTimeout(() => {
|
|
167
167
|
L(n);
|
|
168
168
|
}, 50);
|
|
169
169
|
}
|
|
170
170
|
});
|
|
171
|
-
}, [h,
|
|
171
|
+
}, [h, i]), P = v(
|
|
172
172
|
(e) => {
|
|
173
|
-
Y(!1),
|
|
173
|
+
Y(!1), x ? requestAnimationFrame(() => L(e)) : q(e);
|
|
174
174
|
},
|
|
175
|
-
[
|
|
176
|
-
), rt =
|
|
175
|
+
[x, q]
|
|
176
|
+
), rt = v(() => {
|
|
177
177
|
le(!1);
|
|
178
|
-
}, []), st =
|
|
178
|
+
}, []), st = v(() => {
|
|
179
179
|
le(!0);
|
|
180
|
-
}, []), at =
|
|
180
|
+
}, []), at = v(() => {
|
|
181
181
|
Y(!0);
|
|
182
182
|
}, []);
|
|
183
183
|
return b(() => {
|
|
184
|
-
const e =
|
|
185
|
-
e && K
|
|
186
|
-
|
|
184
|
+
const e = i[f];
|
|
185
|
+
if (e && K) {
|
|
186
|
+
K(e);
|
|
187
|
+
const t = document.querySelector('div[role="dialog"][aria-label="Math Response Modal"]');
|
|
188
|
+
t && t.classList.add("lds-flexible-container--hide");
|
|
189
|
+
}
|
|
190
|
+
}, [K, i, f]), vt(be, {
|
|
187
191
|
behavior: a,
|
|
188
|
-
questions:
|
|
192
|
+
questions: i,
|
|
189
193
|
setResponses: N,
|
|
190
194
|
onResponseChange: I,
|
|
191
195
|
onBulkResponsesChange: Ee,
|
|
@@ -203,10 +207,10 @@ const zt = (ge, be) => {
|
|
|
203
207
|
}, 400) : L(A)), () => {
|
|
204
208
|
clearTimeout(e);
|
|
205
209
|
};
|
|
206
|
-
}, [S, A,
|
|
210
|
+
}, [S, A, H]), b(() => {
|
|
207
211
|
if (a.teacherValidationEnabled && l) {
|
|
208
|
-
const { item_type: e, instructor_stimulus:
|
|
209
|
-
r === "TEACHER" && (e === "exit-ticket" &&
|
|
212
|
+
const { item_type: e, instructor_stimulus: t, is_optional: n } = l;
|
|
213
|
+
r === "TEACHER" && (e === "exit-ticket" && t !== "SystemIntro" ? s != null && s.submittedByStudent && !(s != null && s.validatedByTeacher) ? W("exit-ticket-review-available") : s != null && s.validatedByTeacher ? O() : W("exit-ticket-teacher-intervention") : n ? s != null && s.assignStatus ? O() : W("optional-items-assignment") : n || O());
|
|
210
214
|
}
|
|
211
215
|
}, [
|
|
212
216
|
a.teacherValidationEnabled,
|
|
@@ -216,20 +220,20 @@ const zt = (ge, be) => {
|
|
|
216
220
|
r
|
|
217
221
|
]), b(() => {
|
|
218
222
|
if (a.teacherValidationEnabled && l) {
|
|
219
|
-
const { item_type: e, instructor_stimulus:
|
|
220
|
-
r === "STUDENT" && e === "exit-ticket" &&
|
|
223
|
+
const { item_type: e, instructor_stimulus: t } = l;
|
|
224
|
+
r === "STUDENT" && e === "exit-ticket" && t !== "SystemIntro" && (s != null && s.submittedByStudent ? M == null || M() : D == null || D());
|
|
221
225
|
}
|
|
222
226
|
}, [
|
|
223
227
|
a.teacherValidationEnabled,
|
|
224
228
|
l,
|
|
225
229
|
s == null ? void 0 : s.submittedByStudent,
|
|
226
230
|
D,
|
|
227
|
-
|
|
231
|
+
M,
|
|
228
232
|
r
|
|
229
233
|
]), b(() => {
|
|
230
|
-
p === "CURRENT" && k.forEach(({ reference: e, questions:
|
|
234
|
+
p === "CURRENT" && k.forEach(({ reference: e, questions: t }) => {
|
|
231
235
|
var n, d, u;
|
|
232
|
-
|
|
236
|
+
t.length < 3 ? Z(`Diagnostics item has Less than 3 questions: ${e}`, {
|
|
233
237
|
tags: {
|
|
234
238
|
"content-type": "learnosity",
|
|
235
239
|
"activity-reference": _,
|
|
@@ -237,7 +241,7 @@ const zt = (ge, be) => {
|
|
|
237
241
|
},
|
|
238
242
|
fingerprint: [`diagnostics-item-questions-count-${e}`]
|
|
239
243
|
// Add unique fingerprint
|
|
240
|
-
}) : (((n =
|
|
244
|
+
}) : (((n = t[0]) == null ? void 0 : n.instructor_stimulus) !== "Try" || ((d = t[1]) == null ? void 0 : d.instructor_stimulus) !== "Learn" || ((u = t[2]) == null ? void 0 : u.instructor_stimulus) !== "Apply") && Z(
|
|
241
245
|
`Diagnostics questions sequence is incorrect expected [Try, Learn, Apply]: ${e}`,
|
|
242
246
|
{
|
|
243
247
|
tags: {
|
|
@@ -251,11 +255,11 @@ const zt = (ge, be) => {
|
|
|
251
255
|
);
|
|
252
256
|
});
|
|
253
257
|
}, [_, k, p]), b(() => {
|
|
254
|
-
|
|
255
|
-
const { validation:
|
|
256
|
-
if ((U ? d !== "clozetext" : !0) && (
|
|
257
|
-
const E =
|
|
258
|
-
(E == null ? void 0 : E.length) === 0 && ((
|
|
258
|
+
i.forEach((e) => {
|
|
259
|
+
const { validation: t, item_reference: n, type: d, question_number: u, metadata: m } = e;
|
|
260
|
+
if ((U ? d !== "clozetext" : !0) && (t != null && t.valid_response)) {
|
|
261
|
+
const E = t.valid_response.value ?? [];
|
|
262
|
+
(E == null ? void 0 : E.length) === 0 && ((t.alt_responses ?? []).some((ct) => ct.value.length > 0) || (Z(`Question has no valid response: ${m.widget_reference}`, {
|
|
259
263
|
tags: {
|
|
260
264
|
"content-type": "learnosity",
|
|
261
265
|
"activity-reference": _,
|
|
@@ -273,10 +277,10 @@ const zt = (ge, be) => {
|
|
|
273
277
|
})));
|
|
274
278
|
}
|
|
275
279
|
});
|
|
276
|
-
}, [_, w,
|
|
277
|
-
/* @__PURE__ */ o(
|
|
280
|
+
}, [_, w, i, U]), S ? /* @__PURE__ */ R(lt, { children: [
|
|
281
|
+
/* @__PURE__ */ o(xt, {}),
|
|
278
282
|
$e && /* @__PURE__ */ R(
|
|
279
|
-
|
|
283
|
+
Ht,
|
|
280
284
|
{
|
|
281
285
|
$flexDirection: "row",
|
|
282
286
|
$justifyContent: "center",
|
|
@@ -288,7 +292,7 @@ const zt = (ge, be) => {
|
|
|
288
292
|
$gutter: 8,
|
|
289
293
|
$flexGap: 8,
|
|
290
294
|
$background: tt,
|
|
291
|
-
$topOffset:
|
|
295
|
+
$topOffset: T.topOffset - me,
|
|
292
296
|
children: [
|
|
293
297
|
te ? /* @__PURE__ */ o(he, { children: /* @__PURE__ */ o(ft, { width: 16, height: 16 }) }) : /* @__PURE__ */ o(he, { children: /* @__PURE__ */ o(pt, { width: 16, height: 16 }) }),
|
|
294
298
|
/* @__PURE__ */ o(bt, { $renderAs: "ub3", children: it })
|
|
@@ -296,11 +300,11 @@ const zt = (ge, be) => {
|
|
|
296
300
|
}
|
|
297
301
|
),
|
|
298
302
|
/* @__PURE__ */ R(qt, { $background: "WHITE", $width: Ue, children: [
|
|
299
|
-
ze === "top" && /* @__PURE__ */ o(Pt, { $topOffset:
|
|
303
|
+
ze === "top" && /* @__PURE__ */ o(Pt, { $topOffset: H, $height: Ct, children: /* @__PURE__ */ o(Qt, { children: /* @__PURE__ */ o(
|
|
300
304
|
Rt,
|
|
301
305
|
{
|
|
302
306
|
placement: "top",
|
|
303
|
-
questions:
|
|
307
|
+
questions: i,
|
|
304
308
|
responses: c,
|
|
305
309
|
activeQuestionIndex: f,
|
|
306
310
|
lastUnlockedQuestionIndex: h,
|
|
@@ -310,7 +314,7 @@ const zt = (ge, be) => {
|
|
|
310
314
|
summaryVisible: g
|
|
311
315
|
}
|
|
312
316
|
) }) }),
|
|
313
|
-
ae && l && /* @__PURE__ */ o(Lt, { $minHeight: re, $topOffset:
|
|
317
|
+
ae && l && /* @__PURE__ */ o(Lt, { $minHeight: re, $topOffset: H, children: /* @__PURE__ */ o(ue, { $width: X, $justifyContent: "center", $alignItems: "center", children: /* @__PURE__ */ o(
|
|
314
318
|
kt,
|
|
315
319
|
{
|
|
316
320
|
blocker: ae,
|
|
@@ -327,9 +331,9 @@ const zt = (ge, be) => {
|
|
|
327
331
|
{
|
|
328
332
|
activeQuestionIndex: f,
|
|
329
333
|
onClick: P,
|
|
330
|
-
questions:
|
|
334
|
+
questions: i,
|
|
331
335
|
bottomOffset: C,
|
|
332
|
-
topOffset:
|
|
336
|
+
topOffset: H,
|
|
333
337
|
userType: r
|
|
334
338
|
}
|
|
335
339
|
),
|
|
@@ -339,13 +343,13 @@ const zt = (ge, be) => {
|
|
|
339
343
|
{
|
|
340
344
|
$marginTop: r === "TEACHER" && g ? "0" : C,
|
|
341
345
|
$height: C,
|
|
342
|
-
$isCardView:
|
|
346
|
+
$isCardView: V === "card",
|
|
343
347
|
children: [
|
|
344
348
|
/* @__PURE__ */ o(
|
|
345
349
|
Et,
|
|
346
350
|
{
|
|
347
351
|
width: z - 32,
|
|
348
|
-
question:
|
|
352
|
+
question: i[f],
|
|
349
353
|
learnosity: S,
|
|
350
354
|
userType: r
|
|
351
355
|
}
|
|
@@ -354,8 +358,8 @@ const zt = (ge, be) => {
|
|
|
354
358
|
jt,
|
|
355
359
|
{
|
|
356
360
|
$height: C,
|
|
357
|
-
$width:
|
|
358
|
-
$isCardView:
|
|
361
|
+
$width: V === "card" ? z - 32 : "100%",
|
|
362
|
+
$isCardView: V === "card",
|
|
359
363
|
children: /* @__PURE__ */ o(
|
|
360
364
|
ue,
|
|
361
365
|
{
|
|
@@ -368,10 +372,10 @@ const zt = (ge, be) => {
|
|
|
368
372
|
_t,
|
|
369
373
|
{
|
|
370
374
|
userType: r,
|
|
371
|
-
layout:
|
|
375
|
+
layout: T,
|
|
372
376
|
behavior: a,
|
|
373
377
|
worksheetName: ee,
|
|
374
|
-
questions:
|
|
378
|
+
questions: i,
|
|
375
379
|
responses: c,
|
|
376
380
|
onCalculatorOpen: st,
|
|
377
381
|
activeQuestionIndex: f,
|
|
@@ -379,7 +383,7 @@ const zt = (ge, be) => {
|
|
|
379
383
|
appendedQuestionIds: ne,
|
|
380
384
|
learnosity: S,
|
|
381
385
|
isCanvasEnabled: oe,
|
|
382
|
-
canSubmitWorksheet:
|
|
386
|
+
canSubmitWorksheet: He,
|
|
383
387
|
isScribblingEnabled: se,
|
|
384
388
|
isSummaryVisible: g,
|
|
385
389
|
setResponses: N,
|
|
@@ -404,7 +408,7 @@ const zt = (ge, be) => {
|
|
|
404
408
|
)
|
|
405
409
|
}
|
|
406
410
|
),
|
|
407
|
-
!g &&
|
|
411
|
+
!g && x && r === "STUDENT" && /* @__PURE__ */ o(Kt, { children: /* @__PURE__ */ o(Mt, {}) })
|
|
408
412
|
]
|
|
409
413
|
}
|
|
410
414
|
),
|
|
@@ -412,9 +416,9 @@ const zt = (ge, be) => {
|
|
|
412
416
|
Ut,
|
|
413
417
|
{
|
|
414
418
|
$actionbarHeight: C,
|
|
415
|
-
$isCardView:
|
|
419
|
+
$isCardView: V === "card",
|
|
416
420
|
children: [
|
|
417
|
-
et.map((e,
|
|
421
|
+
et.map((e, t) => {
|
|
418
422
|
var m, $;
|
|
419
423
|
const { response_id: n, is_optional: d } = e, u = (m = c[n]) == null ? void 0 : m.assignStatus;
|
|
420
424
|
return a.teacherValidationEnabled && (u === "skipped" || d && u !== "assigned" && r === "STUDENT") ? null : /* @__PURE__ */ o(
|
|
@@ -425,16 +429,16 @@ const zt = (ge, be) => {
|
|
|
425
429
|
worksheetCompleted: Ne,
|
|
426
430
|
question: e,
|
|
427
431
|
response: c[n],
|
|
428
|
-
nextQuestionId: p === "ADAPTIVE" || p === "CURRENT" ? l == null ? void 0 : l.response_id :
|
|
432
|
+
nextQuestionId: p === "ADAPTIVE" || p === "CURRENT" ? l == null ? void 0 : l.response_id : t < h ? ($ = i[t + 1]) == null ? void 0 : $.response_id : void 0,
|
|
429
433
|
maxQuestionWidth: X,
|
|
430
434
|
learnosity: S,
|
|
431
435
|
isActive: n === B,
|
|
432
|
-
isHidden: !
|
|
433
|
-
canRender: f > -1 && (
|
|
434
|
-
background:
|
|
436
|
+
isHidden: !x && n !== B || g,
|
|
437
|
+
canRender: f > -1 && (t === f || p !== "CURRENT" && t === f + 1),
|
|
438
|
+
background: Te,
|
|
435
439
|
appended: ne.includes(n),
|
|
436
440
|
behavior: a,
|
|
437
|
-
layout:
|
|
441
|
+
layout: T,
|
|
438
442
|
actionbarHeight: C,
|
|
439
443
|
intersectionObserver: J,
|
|
440
444
|
onMarkForReview: ot,
|
|
@@ -446,7 +450,7 @@ const zt = (ge, be) => {
|
|
|
446
450
|
initialStrokesData: Oe,
|
|
447
451
|
isCanvasEnabled: oe,
|
|
448
452
|
onPublishMouseMove: De,
|
|
449
|
-
onSubscribeMouseMove:
|
|
453
|
+
onSubscribeMouseMove: Me,
|
|
450
454
|
setActiveQuestionId: q,
|
|
451
455
|
canResolveDoubt: qe,
|
|
452
456
|
onResolveDoubt: Pe,
|
|
@@ -462,14 +466,14 @@ const zt = (ge, be) => {
|
|
|
462
466
|
Xt,
|
|
463
467
|
{
|
|
464
468
|
worksheetName: ee,
|
|
465
|
-
questions:
|
|
469
|
+
questions: i,
|
|
466
470
|
responses: c,
|
|
467
471
|
activeQuestionIndex: f,
|
|
468
472
|
lastUnlockedQuestionIndex: h,
|
|
469
473
|
onItemNumberClick: P,
|
|
470
474
|
behavior: a,
|
|
471
475
|
minHeight: Xe,
|
|
472
|
-
summaryDescription:
|
|
476
|
+
summaryDescription: xe,
|
|
473
477
|
summaryVisible: g
|
|
474
478
|
}
|
|
475
479
|
)
|
|
@@ -477,16 +481,16 @@ const zt = (ge, be) => {
|
|
|
477
481
|
}
|
|
478
482
|
),
|
|
479
483
|
!g && Je && /* @__PURE__ */ o(
|
|
480
|
-
|
|
484
|
+
Vt,
|
|
481
485
|
{
|
|
482
486
|
questionWidth: X,
|
|
483
|
-
questions:
|
|
487
|
+
questions: i,
|
|
484
488
|
activeQuestionIndex: f,
|
|
485
489
|
learnosity: S,
|
|
486
490
|
userType: r,
|
|
487
491
|
height: re,
|
|
488
492
|
actionbarHeight: C,
|
|
489
|
-
openQuestionFeedbackModal:
|
|
493
|
+
openQuestionFeedbackModal: Ve,
|
|
490
494
|
loggerRef: w
|
|
491
495
|
}
|
|
492
496
|
)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worksheet.js","sources":["../../../../src/features/worksheet/worksheet/worksheet.tsx"],"sourcesContent":["import type { TWorksheetBlocker } from './worksheet-blocker/worksheet-blocker-types';\nimport type { IWorksheetProps, IWorksheetRef, IWorksheetResponse } from './worksheet-types';\nimport type { ForwardRefRenderFunction } from 'react';\n\nimport { captureMessage } from '@sentry/browser';\nimport {\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport Info2Icon from '../../../assets/line-icons/icons/info2';\nimport getDeviceDetails from '../../../helpers/get-device-details';\nimport DesmosCalculator from '../../sheet-tools/desmos-calculator/desmos-calculator';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport EVENTS from '../constants/events';\nimport UserPointer from '../user-pointer-pin/user-pin';\nimport {\n DESMOS_CALC_POSITION,\n TOP_NAVIGATION_HEIGHT,\n WORKSHEET_NUDGE_BANNER_HEIGHT,\n} from './constants';\nimport useCreateImperativeHandle from './hooks/use-create-imperative-handle';\nimport useGetActiveQuestionId from './hooks/use-get-active-question-id';\nimport useTimeSpentOnQuestions from './hooks/use-time-on-questions';\nimport QuestionTips from './question-tips';\nimport WorksheetActionBar from './worksheet-action-bar/worksheet-action-bar';\nimport WorksheetBlocker from './worksheet-blocker/worksheet-blocker';\nimport {\n getInitialQuestionId,\n getInitialResponses,\n getLastUnlockedQuestionIndex,\n getQuestionMetadata,\n getQuestionsFromItems,\n getRenderableQuestions,\n getWorksheetDimensions,\n getWorksheetNudgeBannerInfo,\n scrollToQuestion,\n} from './worksheet-helpers';\nimport WorksheetNavigation from './worksheet-navigation/worksheet-navigation';\nimport WorksheetQuestion from './worksheet-question/worksheet-question';\nimport Navigator from './worksheet-sidebar/navigator';\nimport WorksheetSideBar from './worksheet-sidebar/sidebar';\nimport * as Styled from './worksheet-styled';\nimport WorksheetSummary from './worksheet-summary/worksheet-summary';\n\n/**\n *\n * @param learnosityItems cannot not be changed between the renders\n */\nconst WorksheetComp: ForwardRefRenderFunction<IWorksheetRef, IWorksheetProps> = (props, ref) => {\n const {\n userType,\n studentName = 'Student',\n questionsSignedRequest,\n worksheetName,\n initialResponseId,\n initialItemIndex,\n learnosityActivityRef,\n learnosityItems,\n learnosityResponses,\n layout,\n background,\n behavior,\n updatedResponses,\n showNudgeBanner,\n markedAsCompleted,\n onResponseChange,\n onBulkResponsesChange,\n onResponsesChange,\n onMediaStateChange,\n onTeacherValidation,\n onOptionalItemAssignment,\n onOptionalItemSkip,\n onExitTicketStart,\n onExitTicketSubmit,\n onSubmit,\n learnosity,\n appendedQuestionIds,\n worksheetCompleted,\n userId,\n onPublishStrokes,\n onReceiveStrokes,\n initialStrokesData,\n isCanvasEnabled,\n onHelp,\n onPublishMouseMove,\n onSubscribeMouseMove,\n onActiveQuestionChange,\n openQuestionFeedbackModal,\n summaryDescription,\n canSubmitWorksheet,\n loggerRef,\n canResolveDoubt,\n onResolveDoubt,\n onSkip,\n canToggleScribbling = true,\n studentId,\n subjectiveProps,\n canShowActionBar = true,\n } = props;\n const { initialQuestion, navigationMode, teacherValidationEnabled } = behavior;\n const {\n containerStyle,\n containerWidth,\n minQuestionHeight,\n minSummaryHeight,\n questionsScrollable,\n navigationBar,\n topOffset,\n renderSideBar,\n showUserPointer = true,\n } = layout;\n\n const { actionbarHeight, maxQuestionWidth, questionsContainerWidth } = useMemo(\n () => getWorksheetDimensions(learnosityItems, layout),\n [layout, learnosityItems],\n );\n\n const [questions] = useState(() =>\n getQuestionsFromItems(learnosityItems, {\n sectioned:\n teacherValidationEnabled && navigationMode !== 'ADAPTIVE' && navigationMode !== 'CURRENT',\n adaptive: navigationMode === 'ADAPTIVE',\n }),\n );\n\n const [responses, setResponses] = useState<Record<string, IWorksheetResponse>>(\n () => learnosityResponses ?? getInitialResponses(questions),\n );\n const [isScribblingEnabled, setIsScribblingEnabled] = useState(false);\n const lastUnlockedQuestionIndex = useMemo(\n () =>\n navigationMode !== 'OPEN'\n ? getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n })\n : questions.length - 1,\n [behavior, navigationMode, questions, responses, userType],\n );\n\n const questionsToRender = useMemo(\n () => getRenderableQuestions({ questions, lastUnlockedQuestionIndex, userType }),\n [questions, lastUnlockedQuestionIndex, userType],\n );\n\n const lastUnlockedQuestion = questions[lastUnlockedQuestionIndex];\n const lastUnlockedQuestionResponse = responses[lastUnlockedQuestion?.response_id ?? ''];\n\n const { bannerBackgroundColor: nudgeBannerBackgroundColor, label: nudgeBannerLabel } =\n getWorksheetNudgeBannerInfo(userType, Boolean(markedAsCompleted));\n\n const [initialQuestionId] = useState(() =>\n getInitialQuestionId({\n questions,\n initialQuestion,\n lastUnlockedQuestionIndex: getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n }),\n initialResponseId,\n initialItemIndex,\n }),\n );\n\n const { activeQuestionId, setActiveQuestionId, intersectionObserver } =\n useGetActiveQuestionId(initialQuestionId);\n const activeQuestionIndex = useMemo(\n () => questions.findIndex(question => question.response_id === activeQuestionId),\n [activeQuestionId, questions],\n );\n const [summaryVisible, setSummaryVisible] = useState(false);\n const [blocker, setBlocker] = useState<TWorksheetBlocker>();\n\n const [showCalculator, setShowCalculator] = useState(false);\n const getTimeSpentOnQuestion = useTimeSpentOnQuestions(behavior, responses, activeQuestionId);\n\n const handleMediaStateChange = useCallback<NonNullable<typeof onMediaStateChange>>(\n (question, mediaType, mediaState) => {\n const key = mediaType === 'SIMULATION' ? 'simState' : undefined;\n\n if (!key) return;\n\n if (onResponseChange) {\n setResponses(prevResponses => {\n const questionId = question.response_id;\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n const updatedResponse = {\n ...questionMeta,\n ...prevResponses[questionId],\n [key]: mediaState,\n };\n\n onResponseChange?.({\n responseId: questionId,\n response: updatedResponse,\n isNewAttempt: false,\n question,\n });\n\n return {\n ...prevResponses,\n [questionId]: updatedResponse,\n };\n });\n } else if (onMediaStateChange) {\n onMediaStateChange(question, mediaType, mediaState);\n }\n },\n [onMediaStateChange, onResponseChange, questions],\n );\n\n const handleMarkForReview = useCallback(\n (questionId: string, markedForReview: boolean) => {\n setResponses(prevResponses => {\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n return {\n ...prevResponses,\n [questionId]: {\n ...questionMeta,\n ...prevResponses[questionId],\n markedForReview,\n },\n };\n });\n },\n [questions],\n );\n\n const handleBlockerClose = useCallback(() => {\n setBlocker(prevBlocker => {\n if (prevBlocker) {\n const lastUnlockedQuestionId = questions[lastUnlockedQuestionIndex]?.response_id;\n\n if (lastUnlockedQuestionId) {\n setTimeout(() => {\n scrollToQuestion(lastUnlockedQuestionId);\n }, 50);\n }\n }\n\n return undefined;\n });\n }, [lastUnlockedQuestionIndex, questions]);\n\n const handleItemNumberClick = useCallback(\n (questionId: string) => {\n setSummaryVisible(false);\n\n if (questionsScrollable) {\n requestAnimationFrame(() => scrollToQuestion(questionId));\n } else {\n setActiveQuestionId(questionId);\n }\n },\n [questionsScrollable, setActiveQuestionId],\n );\n\n const onCalculatorClose = useCallback(() => {\n setShowCalculator(false);\n }, []);\n\n const onCalculatorOpen = useCallback(() => {\n setShowCalculator(true);\n }, []);\n\n const handleOnGoToReview = useCallback(() => {\n setSummaryVisible(true);\n }, []);\n\n useEffect(() => {\n const activeQuestion = questions[activeQuestionIndex];\n\n if (activeQuestion && onActiveQuestionChange) {\n onActiveQuestionChange(activeQuestion);\n }\n }, [onActiveQuestionChange, questions, activeQuestionIndex]);\n\n useCreateImperativeHandle(ref, {\n behavior,\n questions,\n setResponses,\n onResponseChange,\n onBulkResponsesChange,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, [intersectionObserver]);\n\n useEffect(() => {\n if (onResponsesChange && responses) {\n onResponsesChange(responses);\n }\n }, [onResponsesChange, responses]);\n\n useEffect(() => {\n if (updatedResponses) {\n setResponses(updatedResponses);\n }\n }, [updatedResponses]);\n\n useLayoutEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (learnosity && initialQuestionId) {\n if (getDeviceDetails().browser_name === 'Safari') {\n timer = setTimeout(() => {\n scrollToQuestion(initialQuestionId);\n }, 400);\n } else {\n scrollToQuestion(initialQuestionId);\n }\n }\n\n return () => {\n clearTimeout(timer);\n };\n }, [learnosity, initialQuestionId, topOffset]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\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 setBlocker('exit-ticket-review-available');\n } else if (!lastUnlockedQuestionResponse?.validatedByTeacher) {\n setBlocker('exit-ticket-teacher-intervention');\n } else {\n handleBlockerClose();\n }\n } else if (is_optional) {\n if (!lastUnlockedQuestionResponse?.assignStatus) {\n setBlocker('optional-items-assignment');\n } else {\n handleBlockerClose();\n }\n } else if (!is_optional) {\n handleBlockerClose();\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n handleBlockerClose,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse,\n userType,\n ]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\n const { item_type, instructor_stimulus } = lastUnlockedQuestion;\n\n if (userType === 'STUDENT') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (lastUnlockedQuestionResponse?.submittedByStudent) {\n onExitTicketSubmit?.();\n } else {\n onExitTicketStart?.();\n }\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse?.submittedByStudent,\n onExitTicketStart,\n onExitTicketSubmit,\n userType,\n ]);\n\n useEffect(() => {\n if (navigationMode === 'CURRENT') {\n learnosityItems.forEach(({ reference, questions: itemQuestions }) => {\n if (itemQuestions.length < 3) {\n captureMessage(`Diagnostics item has Less than 3 questions: ${reference}`, {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': reference,\n },\n fingerprint: [`diagnostics-item-questions-count-${reference}`], // Add unique fingerprint\n });\n } else if (\n itemQuestions[0]?.instructor_stimulus !== 'Try' ||\n itemQuestions[1]?.instructor_stimulus !== 'Learn' ||\n itemQuestions[2]?.instructor_stimulus !== 'Apply'\n ) {\n captureMessage(\n `Diagnostics questions sequence is incorrect expected [Try, Learn, Apply]: ${reference}`,\n {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': reference,\n },\n fingerprint: [`diagnostics-item-questions-sequence-${reference}`], // Add unique fingerprint\n },\n );\n }\n });\n }\n }, [learnosityActivityRef, learnosityItems, navigationMode]);\n\n useEffect(() => {\n questions.forEach(question => {\n const { validation, item_reference, type, question_number, metadata } = question;\n const responseNeeded = teacherValidationEnabled ? type !== 'clozetext' : true;\n\n if (responseNeeded && validation?.valid_response) {\n const value = validation.valid_response.value ?? [];\n\n if (value?.length === 0) {\n const altResponses = validation.alt_responses ?? [];\n const hasAltResponse = altResponses.some(altResponse => altResponse.value.length > 0);\n\n if (!hasAltResponse) {\n captureMessage(`Question has no valid response: ${metadata.widget_reference}`, {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': item_reference,\n 'question-number': question_number,\n 'widget-reference': metadata.widget_reference,\n },\n fingerprint: [`no-valid-response-${metadata.widget_reference}`], // Add unique fingerprint\n });\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_MISSING_VALIDATION, {\n item_reference: item_reference,\n widget_reference: metadata.widget_reference,\n question_type: type,\n question_number: question_number,\n });\n }\n }\n }\n });\n }, [learnosityActivityRef, loggerRef, questions, teacherValidationEnabled]);\n\n if (!learnosity) {\n return null;\n }\n\n return (\n <>\n <Styled.LearnosityStyleOverrides />\n {showNudgeBanner && (\n <Styled.NudgeBannerWrapper\n $flexDirection=\"row\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={1.75}\n $height={WORKSHEET_NUDGE_BANNER_HEIGHT}\n $gap={8}\n $gutter={8}\n $flexGap={8}\n $background={nudgeBannerBackgroundColor}\n $topOffset={layout.topOffset - WORKSHEET_NUDGE_BANNER_HEIGHT}\n >\n {markedAsCompleted ? (\n <Styled.NudgeBannerIcon>\n <Check2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n ) : (\n <Styled.NudgeBannerIcon>\n <Info2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n )}\n\n <Text $renderAs=\"ub3\">{nudgeBannerLabel}</Text>\n </Styled.NudgeBannerWrapper>\n )}\n\n <Styled.WorksheetContainer $background=\"WHITE\" $width={containerWidth}>\n {navigationBar === 'top' && (\n <Styled.NavigationContainer $topOffset={topOffset} $height={TOP_NAVIGATION_HEIGHT}>\n <Styled.NavigationWrapper>\n <WorksheetNavigation\n placement=\"top\"\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n behavior={behavior}\n onItemNumberClick={handleItemNumberClick}\n userType={userType}\n summaryVisible={summaryVisible}\n />\n </Styled.NavigationWrapper>\n </Styled.NavigationContainer>\n )}\n {blocker && lastUnlockedQuestion && (\n <Styled.BlockerWrapper $minHeight={minQuestionHeight} $topOffset={topOffset}>\n <FlexView $width={maxQuestionWidth} $justifyContent=\"center\" $alignItems=\"center\">\n <WorksheetBlocker\n blocker={blocker}\n lastUnlockedQuestion={lastUnlockedQuestion}\n studentName={studentName}\n onBlockerClose={handleBlockerClose}\n onOptionalItemAssignment={onOptionalItemAssignment}\n onOptionalItemSkip={onOptionalItemSkip}\n onTeacherValidation={onTeacherValidation}\n />\n </FlexView>\n </Styled.BlockerWrapper>\n )}\n {showUserPointer && (\n <UserPointer\n activeQuestionIndex={activeQuestionIndex}\n onClick={handleItemNumberClick}\n questions={questions}\n bottomOffset={actionbarHeight}\n topOffset={topOffset}\n userType={userType}\n />\n )}\n {showCalculator && (\n <Styled.DesmosCalcWrapper>\n <DesmosCalculator initialPosition={DESMOS_CALC_POSITION} onClose={onCalculatorClose} />\n </Styled.DesmosCalcWrapper>\n )}\n <Styled.ActionbarContainer\n $marginTop={userType === 'TEACHER' && summaryVisible ? '0' : actionbarHeight}\n $height={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n >\n <QuestionTips\n width={questionsContainerWidth - 32}\n question={questions[activeQuestionIndex]}\n learnosity={learnosity}\n userType={userType}\n />\n {canShowActionBar && (\n <Styled.ActionbarWrapper\n $height={actionbarHeight}\n $width={containerStyle === 'card' ? questionsContainerWidth - 32 : '100%'}\n $isCardView={containerStyle === 'card'}\n >\n <FlexView\n $gutterX={1}\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n $width={questionsContainerWidth - 32}\n >\n <WorksheetActionBar\n userType={userType}\n layout={layout}\n behavior={behavior}\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n onCalculatorOpen={onCalculatorOpen}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n appendedQuestionIds={appendedQuestionIds}\n learnosity={learnosity}\n isCanvasEnabled={isCanvasEnabled}\n canSubmitWorksheet={canSubmitWorksheet}\n isScribblingEnabled={isScribblingEnabled}\n isSummaryVisible={summaryVisible}\n setResponses={setResponses}\n getTimeSpentOnQuestion={getTimeSpentOnQuestion}\n setSummaryVisible={setSummaryVisible}\n setBlocker={setBlocker}\n setIsScribblingEnabled={setIsScribblingEnabled}\n setActiveQuestionId={setActiveQuestionId}\n onItemNumberClick={handleItemNumberClick}\n onGoToReview={handleOnGoToReview}\n onResponseChange={onResponseChange}\n onHelp={onHelp}\n onTeacherValidation={onTeacherValidation}\n onSubmit={onSubmit}\n showCalculator={showCalculator}\n loggerRef={loggerRef}\n onSkip={onSkip}\n canToggleScribbling={canToggleScribbling}\n />\n </FlexView>\n </Styled.ActionbarWrapper>\n )}\n {!summaryVisible && questionsScrollable && userType === 'STUDENT' && (\n <Styled.StudentWorksheetSideBar>\n <Navigator />\n </Styled.StudentWorksheetSideBar>\n )}\n </Styled.ActionbarContainer>\n <Styled.QuestionsWrapper\n $actionbarHeight={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n >\n {questionsToRender.map((question, questionIndex) => {\n const { response_id: responseId, is_optional } = question;\n const assignStatus = responses[responseId]?.assignStatus;\n\n if (behavior.teacherValidationEnabled) {\n if (assignStatus === 'skipped') return null;\n\n if (is_optional && assignStatus !== 'assigned' && userType === 'STUDENT') {\n return null;\n }\n }\n\n return (\n <WorksheetQuestion\n key={responseId}\n signedRequest={questionsSignedRequest}\n userType={userType}\n worksheetCompleted={worksheetCompleted}\n question={question}\n response={responses[responseId]}\n nextQuestionId={\n navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT'\n ? lastUnlockedQuestion?.response_id\n : questionIndex < lastUnlockedQuestionIndex\n ? questions[questionIndex + 1]?.response_id\n : undefined\n }\n maxQuestionWidth={maxQuestionWidth}\n learnosity={learnosity}\n isActive={responseId === activeQuestionId}\n isHidden={\n (!questionsScrollable && responseId !== activeQuestionId) || summaryVisible\n }\n canRender={\n activeQuestionIndex > -1 &&\n (questionIndex === activeQuestionIndex ||\n (navigationMode !== 'CURRENT' && questionIndex === activeQuestionIndex + 1))\n }\n background={background}\n appended={appendedQuestionIds.includes(responseId)}\n behavior={behavior}\n layout={layout}\n actionbarHeight={actionbarHeight}\n intersectionObserver={intersectionObserver}\n onMarkForReview={handleMarkForReview}\n onMediaStateChange={handleMediaStateChange}\n userId={userId}\n isScribblingEnabled={isScribblingEnabled}\n onPublishStrokes={onPublishStrokes}\n onReceiveStrokes={onReceiveStrokes}\n initialStrokesData={initialStrokesData}\n isCanvasEnabled={isCanvasEnabled}\n onPublishMouseMove={onPublishMouseMove}\n onSubscribeMouseMove={onSubscribeMouseMove}\n setActiveQuestionId={setActiveQuestionId}\n canResolveDoubt={canResolveDoubt}\n onResolveDoubt={onResolveDoubt}\n studentId={studentId}\n subjectiveProps={subjectiveProps}\n responses={responses}\n loggerRef={loggerRef}\n />\n );\n })}\n {summaryVisible && (\n <WorksheetSummary\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n onItemNumberClick={handleItemNumberClick}\n behavior={behavior}\n minHeight={minSummaryHeight}\n summaryDescription={summaryDescription}\n summaryVisible={summaryVisible}\n />\n )}\n </Styled.QuestionsWrapper>\n {!summaryVisible && renderSideBar && (\n <WorksheetSideBar\n questionWidth={maxQuestionWidth}\n questions={questions}\n activeQuestionIndex={activeQuestionIndex}\n learnosity={learnosity}\n userType={userType}\n height={minQuestionHeight}\n actionbarHeight={actionbarHeight}\n openQuestionFeedbackModal={openQuestionFeedbackModal}\n loggerRef={loggerRef}\n />\n )}\n </Styled.WorksheetContainer>\n </>\n );\n};\n\nconst Worksheet = memo(forwardRef(WorksheetComp));\n\nexport default Worksheet;\n"],"names":["WorksheetComp","props","ref","userType","studentName","questionsSignedRequest","worksheetName","initialResponseId","initialItemIndex","learnosityActivityRef","learnosityItems","learnosityResponses","layout","background","behavior","updatedResponses","showNudgeBanner","markedAsCompleted","onResponseChange","onBulkResponsesChange","onResponsesChange","onMediaStateChange","onTeacherValidation","onOptionalItemAssignment","onOptionalItemSkip","onExitTicketStart","onExitTicketSubmit","onSubmit","learnosity","appendedQuestionIds","worksheetCompleted","userId","onPublishStrokes","onReceiveStrokes","initialStrokesData","isCanvasEnabled","onHelp","onPublishMouseMove","onSubscribeMouseMove","onActiveQuestionChange","openQuestionFeedbackModal","summaryDescription","canSubmitWorksheet","loggerRef","canResolveDoubt","onResolveDoubt","onSkip","canToggleScribbling","studentId","subjectiveProps","canShowActionBar","initialQuestion","navigationMode","teacherValidationEnabled","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","actionbarHeight","maxQuestionWidth","questionsContainerWidth","useMemo","getWorksheetDimensions","questions","useState","getQuestionsFromItems","responses","setResponses","getInitialResponses","isScribblingEnabled","setIsScribblingEnabled","lastUnlockedQuestionIndex","getLastUnlockedQuestionIndex","questionsToRender","getRenderableQuestions","lastUnlockedQuestion","lastUnlockedQuestionResponse","nudgeBannerBackgroundColor","nudgeBannerLabel","getWorksheetNudgeBannerInfo","initialQuestionId","getInitialQuestionId","activeQuestionId","setActiveQuestionId","intersectionObserver","useGetActiveQuestionId","activeQuestionIndex","question","summaryVisible","setSummaryVisible","blocker","setBlocker","showCalculator","setShowCalculator","getTimeSpentOnQuestion","useTimeSpentOnQuestions","handleMediaStateChange","useCallback","mediaType","mediaState","key","prevResponses","questionId","questionMeta","getQuestionMetadata","updatedResponse","handleMarkForReview","markedForReview","handleBlockerClose","prevBlocker","lastUnlockedQuestionId","_a","scrollToQuestion","handleItemNumberClick","onCalculatorClose","onCalculatorOpen","handleOnGoToReview","useEffect","activeQuestion","useCreateImperativeHandle","useLayoutEffect","timer","getDeviceDetails","item_type","instructor_stimulus","is_optional","reference","itemQuestions","captureMessage","_b","_c","validation","item_reference","type","question_number","metadata","value","altResponse","EVENTS","jsxs","Fragment","jsx","Styled.LearnosityStyleOverrides","Styled.NudgeBannerWrapper","WORKSHEET_NUDGE_BANNER_HEIGHT","Styled.NudgeBannerIcon","Check2Icon","Info2Icon","Text","Styled.WorksheetContainer","Styled.NavigationContainer","TOP_NAVIGATION_HEIGHT","Styled.NavigationWrapper","WorksheetNavigation","Styled.BlockerWrapper","FlexView","WorksheetBlocker","UserPointer","Styled.DesmosCalcWrapper","DesmosCalculator","DESMOS_CALC_POSITION","Styled.ActionbarContainer","QuestionTips","Styled.ActionbarWrapper","WorksheetActionBar","Styled.StudentWorksheetSideBar","Navigator","Styled.QuestionsWrapper","questionIndex","responseId","assignStatus","WorksheetQuestion","WorksheetSummary","WorksheetSideBar","Worksheet","memo","forwardRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,MAAMA,KAA0E,CAACC,IAAOC,OAAQ;AACxF,QAAA;AAAA,IACJ,UAAAC;AAAA,IACA,aAAAC,KAAc;AAAA,IACd,wBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,0BAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,UAAAC;AAAA,IACA,YAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,sBAAAC;AAAA,IACA,wBAAAC;AAAA,IACA,2BAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,oBAAAC;AAAA,IACA,WAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,QAAAC;AAAA,IACA,qBAAAC,KAAsB;AAAA,IACtB,WAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,kBAAAC,KAAmB;AAAA,EACjB,IAAAjD,IACE,EAAE,iBAAAkD,IAAiB,gBAAAC,GAAgB,0BAAAC,EAAA,IAA6BvC,GAChE;AAAA,IACJ,gBAAAwC;AAAA,IACA,gBAAAC;AAAA,IACA,mBAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,WAAAC;AAAA,IACA,eAAAC;AAAA,IACA,iBAAAC,KAAkB;AAAA,EAChB,IAAAlD,GAEE,EAAE,iBAAAmD,GAAiB,kBAAAC,GAAkB,yBAAAC,EAA4B,IAAAC;AAAA,IACrE,MAAMC,GAAuBzD,GAAiBE,CAAM;AAAA,IACpD,CAACA,GAAQF,CAAe;AAAA,EAAA,GAGpB,CAAC0D,CAAS,IAAIC;AAAA,IAAS,MAC3BC,GAAsB5D,GAAiB;AAAA,MACrC,WACE2C,KAA4BD,MAAmB,cAAcA,MAAmB;AAAA,MAClF,UAAUA,MAAmB;AAAA,IAAA,CAC9B;AAAA,EAAA,GAGG,CAACmB,GAAWC,CAAY,IAAIH;AAAA,IAChC,MAAM1D,MAAuB8D,GAAoBL,CAAS;AAAA,EAAA,GAEtD,CAACM,IAAqBC,EAAsB,IAAIN,EAAS,EAAK,GAC9DO,IAA4BV;AAAA,IAChC,MACEd,MAAmB,SACfyB,GAA6B;AAAA,MAC3B,WAAAT;AAAA,MACA,WAAAG;AAAA,MACA,UAAAzD;AAAA,MACA,UAAAX;AAAA,IAAA,CACD,IACDiE,EAAU,SAAS;AAAA,IACzB,CAACtD,GAAUsC,GAAgBgB,GAAWG,GAAWpE,CAAQ;AAAA,EAAA,GAGrD2E,KAAoBZ;AAAA,IACxB,MAAMa,GAAuB,EAAE,WAAAX,GAAW,2BAAAQ,GAA2B,UAAAzE,GAAU;AAAA,IAC/E,CAACiE,GAAWQ,GAA2BzE,CAAQ;AAAA,EAAA,GAG3C6E,IAAuBZ,EAAUQ,CAAyB,GAC1DK,IAA+BV,GAAUS,KAAA,gBAAAA,EAAsB,gBAAe,EAAE,GAEhF,EAAE,uBAAuBE,IAA4B,OAAOC,GAAA,IAChEC,GAA4BjF,GAAU,EAAQc,EAAkB,GAE5D,CAACoE,CAAiB,IAAIhB;AAAA,IAAS,MACnCiB,GAAqB;AAAA,MACnB,WAAAlB;AAAA,MACA,iBAAAjB;AAAA,MACA,2BAA2B0B,GAA6B;AAAA,QACtD,WAAAT;AAAA,QACA,WAAAG;AAAA,QACA,UAAAzD;AAAA,QACA,UAAAX;AAAA,MAAA,CACD;AAAA,MACD,mBAAAI;AAAA,MACA,kBAAAC;AAAA,IAAA,CACD;AAAA,EAAA,GAGG,EAAE,kBAAA+E,GAAkB,qBAAAC,GAAqB,sBAAAC,EAAqB,IAClEC,GAAuBL,CAAiB,GACpCM,IAAsBzB;AAAA,IAC1B,MAAME,EAAU,UAAU,CAAYwB,MAAAA,EAAS,gBAAgBL,CAAgB;AAAA,IAC/E,CAACA,GAAkBnB,CAAS;AAAA,EAAA,GAExB,CAACyB,GAAgBC,CAAiB,IAAIzB,EAAS,EAAK,GACpD,CAAC0B,IAASC,CAAU,IAAI3B,EAA4B,GAEpD,CAAC4B,IAAgBC,EAAiB,IAAI7B,EAAS,EAAK,GACpD8B,KAAyBC,GAAwBtF,GAAUyD,GAAWgB,CAAgB,GAEtFc,KAAyBC;AAAA,IAC7B,CAACV,GAAUW,GAAWC,MAAe;AAC7B,YAAAC,IAAMF,MAAc,eAAe,aAAa;AAEtD,MAAKE,MAEDvF,IACFsD,EAAa,CAAiBkC,MAAA;AAC5B,cAAMC,IAAaf,EAAS,aACtBgB,IAAeC,GAAoBzC,GAAWuC,CAAU;AAE1D,YAAA,CAACC,EAAqB,QAAAF;AAE1B,cAAMI,IAAkB;AAAA,UACtB,GAAGF;AAAA,UACH,GAAGF,EAAcC,CAAU;AAAA,UAC3B,CAACF,CAAG,GAAGD;AAAA,QAAA;AAGU,eAAAtF,KAAA,QAAAA,EAAA;AAAA,UACjB,YAAYyF;AAAA,UACZ,UAAUG;AAAA,UACV,cAAc;AAAA,UACd,UAAAlB;AAAA,QAAA,IAGK;AAAA,UACL,GAAGc;AAAA,UACH,CAACC,CAAU,GAAGG;AAAA,QAAA;AAAA,MAChB,CACD,IACQzF,KACUA,EAAAuE,GAAUW,GAAWC,CAAU;AAAA,IAEtD;AAAA,IACA,CAACnF,GAAoBH,GAAkBkD,CAAS;AAAA,EAAA,GAG5C2C,KAAsBT;AAAA,IAC1B,CAACK,GAAoBK,MAA6B;AAChD,MAAAxC,EAAa,CAAiBkC,MAAA;AACtB,cAAAE,IAAeC,GAAoBzC,GAAWuC,CAAU;AAE1D,eAACC,IAEE;AAAA,UACL,GAAGF;AAAA,UACH,CAACC,CAAU,GAAG;AAAA,YACZ,GAAGC;AAAA,YACH,GAAGF,EAAcC,CAAU;AAAA,YAC3B,iBAAAK;AAAA,UACF;AAAA,QAAA,IARwBN;AAAA,MAS1B,CACD;AAAA,IACH;AAAA,IACA,CAACtC,CAAS;AAAA,EAAA,GAGN6C,IAAqBX,EAAY,MAAM;AAC3C,IAAAN,EAAW,CAAekB,MAAA;;AACxB,UAAIA,GAAa;AACT,cAAAC,KAAyBC,IAAAhD,EAAUQ,CAAyB,MAAnC,gBAAAwC,EAAsC;AAErE,QAAID,KACF,WAAW,MAAM;AACf,UAAAE,EAAiBF,CAAsB;AAAA,WACtC,EAAE;AAAA,MAET;AAAA,IAEO,CACR;AAAA,EAAA,GACA,CAACvC,GAA2BR,CAAS,CAAC,GAEnCkD,IAAwBhB;AAAA,IAC5B,CAACK,MAAuB;AACtB,MAAAb,EAAkB,EAAK,GAEnBpC,IACoB,sBAAA,MAAM2D,EAAiBV,CAAU,CAAC,IAExDnB,EAAoBmB,CAAU;AAAA,IAElC;AAAA,IACA,CAACjD,GAAqB8B,CAAmB;AAAA,EAAA,GAGrC+B,KAAoBjB,EAAY,MAAM;AAC1C,IAAAJ,GAAkB,EAAK;AAAA,EACzB,GAAG,CAAE,CAAA,GAECsB,KAAmBlB,EAAY,MAAM;AACzC,IAAAJ,GAAkB,EAAI;AAAA,EACxB,GAAG,CAAE,CAAA,GAECuB,KAAqBnB,EAAY,MAAM;AAC3C,IAAAR,EAAkB,EAAI;AAAA,EACxB,GAAG,CAAE,CAAA;AAqLL,SAnLA4B,EAAU,MAAM;AACR,UAAAC,IAAiBvD,EAAUuB,CAAmB;AAEpD,IAAIgC,KAAkBpF,KACpBA,EAAuBoF,CAAc;AAAA,EAEtC,GAAA,CAACpF,GAAwB6B,GAAWuB,CAAmB,CAAC,GAE3DiC,GAA0B1H,IAAK;AAAA,IAC7B,UAAAY;AAAA,IACA,WAAAsD;AAAA,IACA,cAAAI;AAAA,IACA,kBAAAtD;AAAA,IACA,uBAAAC;AAAA,IACA,wBAAAgF;AAAA,EAAA,CACD,GAEDuB,EAAU,MACD,MAAM;AACX,IAAAjC,EAAqB,WAAW;AAAA,EAAA,GAEjC,CAACA,CAAoB,CAAC,GAEzBiC,EAAU,MAAM;AACd,IAAItG,KAAqBmD,KACvBnD,EAAkBmD,CAAS;AAAA,EAC7B,GACC,CAACnD,GAAmBmD,CAAS,CAAC,GAEjCmD,EAAU,MAAM;AACd,IAAI3G,KACFyD,EAAazD,CAAgB;AAAA,EAC/B,GACC,CAACA,CAAgB,CAAC,GAErB8G,GAAgB,MAAM;AAChB,QAAAC;AAEJ,WAAIlG,KAAcyD,MACZ0C,GAAA,EAAmB,iBAAiB,WACtCD,IAAQ,WAAW,MAAM;AACvB,MAAAT,EAAiBhC,CAAiB;AAAA,OACjC,GAAG,IAENgC,EAAiBhC,CAAiB,IAI/B,MAAM;AACX,mBAAayC,CAAK;AAAA,IAAA;AAAA,EAEnB,GAAA,CAAClG,GAAYyD,GAAmBzB,CAAS,CAAC,GAE7C8D,EAAU,MAAM;AACV,QAAA5G,EAAS,4BAA4BkE,GAAsB;AAC7D,YAAM,EAAE,WAAAgD,GAAW,qBAAAC,GAAqB,aAAAC,EAAA,IAAgBlD;AAExD,MAAI7E,MAAa,cACX6H,MAAc,iBAAiBC,MAAwB,gBAEvDhD,KAAA,QAAAA,EAA8B,sBAC9B,EAACA,KAAA,QAAAA,EAA8B,sBAE/Be,EAAW,8BAA8B,IAC/Bf,KAAA,QAAAA,EAA8B,qBAGrBgC,MAFnBjB,EAAW,kCAAkC,IAItCkC,IACJjD,KAAA,QAAAA,EAA8B,eAGdgC,MAFnBjB,EAAW,2BAA2B,IAI9BkC,KACSjB;IAGzB;AAAA,EAAA,GACC;AAAA,IACDnG,EAAS;AAAA,IACTmG;AAAA,IACAjC;AAAA,IACAC;AAAA,IACA9E;AAAA,EAAA,CACD,GAEDuH,EAAU,MAAM;AACV,QAAA5G,EAAS,4BAA4BkE,GAAsB;AACvD,YAAA,EAAE,WAAAgD,GAAW,qBAAAC,EAAwB,IAAAjD;AAE3C,MAAI7E,MAAa,aACX6H,MAAc,iBAAiBC,MAAwB,kBACrDhD,KAAA,QAAAA,EAA8B,qBACXvD,KAAA,QAAAA,MAEDD,KAAA,QAAAA;AAAA,IAI5B;AAAA,EAAA,GACC;AAAA,IACDX,EAAS;AAAA,IACTkE;AAAA,IACAC,KAAA,gBAAAA,EAA8B;AAAA,IAC9BxD;AAAA,IACAC;AAAA,IACAvB;AAAA,EAAA,CACD,GAEDuH,EAAU,MAAM;AACd,IAAItE,MAAmB,aACrB1C,EAAgB,QAAQ,CAAC,EAAE,WAAAyH,GAAW,WAAWC,QAAoB;;AAC/D,MAAAA,EAAc,SAAS,IACVC,EAAA,+CAA+CF,CAAS,IAAI;AAAA,QACzE,MAAM;AAAA,UACJ,gBAAgB;AAAA,UAChB,sBAAsB1H;AAAA,UACtB,kBAAkB0H;AAAA,QACpB;AAAA,QACA,aAAa,CAAC,oCAAoCA,CAAS,EAAE;AAAA;AAAA,MAAA,CAC9D,OAEDf,IAAAgB,EAAc,CAAC,MAAf,gBAAAhB,EAAkB,yBAAwB,WAC1CkB,IAAAF,EAAc,CAAC,MAAf,gBAAAE,EAAkB,yBAAwB,aAC1CC,IAAAH,EAAc,CAAC,MAAf,gBAAAG,EAAkB,yBAAwB,YAE1CF;AAAA,QACE,6EAA6EF,CAAS;AAAA,QACtF;AAAA,UACE,MAAM;AAAA,YACJ,gBAAgB;AAAA,YAChB,sBAAsB1H;AAAA,YACtB,kBAAkB0H;AAAA,UACpB;AAAA,UACA,aAAa,CAAC,uCAAuCA,CAAS,EAAE;AAAA;AAAA,QAClE;AAAA,MAAA;AAAA,IAEJ,CACD;AAAA,EAEF,GAAA,CAAC1H,GAAuBC,GAAiB0C,CAAc,CAAC,GAE3DsE,EAAU,MAAM;AACd,IAAAtD,EAAU,QAAQ,CAAYwB,MAAA;AAC5B,YAAM,EAAE,YAAA4C,GAAY,gBAAAC,GAAgB,MAAAC,GAAM,iBAAAC,GAAiB,UAAAC,EAAa,IAAAhD;AAGpE,WAFmBvC,IAA2BqF,MAAS,cAAc,QAEnDF,KAAA,QAAAA,EAAY,iBAAgB;AAChD,cAAMK,IAAQL,EAAW,eAAe,SAAS,CAAA;AAE7C,SAAAK,KAAA,gBAAAA,EAAO,YAAW,OACCL,EAAW,iBAAiB,IACb,KAAK,QAAeM,GAAY,MAAM,SAAS,CAAC,MAGnET,EAAA,mCAAmCO,EAAS,gBAAgB,IAAI;AAAA,UAC7E,MAAM;AAAA,YACJ,gBAAgB;AAAA,YAChB,sBAAsBnI;AAAA,YACtB,kBAAkBgI;AAAA,YAClB,mBAAmBE;AAAA,YACnB,oBAAoBC,EAAS;AAAA,UAC/B;AAAA,UACA,aAAa,CAAC,qBAAqBA,EAAS,gBAAgB,EAAE;AAAA;AAAA,QAAA,CAC/D,GACSjG,EAAA,QAAQoG,GAAO,0CAA0C;AAAA,UACjE,gBAAAN;AAAA,UACA,kBAAkBG,EAAS;AAAA,UAC3B,eAAeF;AAAA,UACf,iBAAAC;AAAA,QAAA,CACD;AAAA,MAGP;AAAA,IAAA,CACD;AAAA,KACA,CAAClI,GAAuBkC,GAAWyB,GAAWf,CAAwB,CAAC,GAErEzB,IAMD,gBAAAoH,EAAAC,IAAA,EAAA,UAAA;AAAA,IAAC,gBAAAC,EAAAC,IAAA,EAAgC;AAAA,IAChCnI,MACC,gBAAAgI;AAAA,MAACI;AAAAA,MAAA;AAAA,QACC,gBAAe;AAAA,QACf,iBAAgB;AAAA,QAChB,aAAY;AAAA,QACZ,QAAO;AAAA,QACP,UAAU;AAAA,QACV,SAASC;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,QACT,UAAU;AAAA,QACV,aAAanE;AAAA,QACb,YAAYtE,EAAO,YAAYyI;AAAA,QAE9B,UAAA;AAAA,UACCpI,KAAA,gBAAAiI,EAACI,IAAA,EACC,4BAACC,IAAW,EAAA,OAAO,IAAI,QAAQ,GAAI,CAAA,EAAA,CACrC,IAEC,gBAAAL,EAAAI,IAAA,EACC,UAAA,gBAAAJ,EAACM,MAAU,OAAO,IAAI,QAAQ,GAAA,CAAI,EACpC,CAAA;AAAA,UAGD,gBAAAN,EAAAO,IAAA,EAAK,WAAU,OAAO,UAAiBtE,IAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1C;AAAA,sBAGDuE,IAAA,EAA0B,aAAY,SAAQ,QAAQnG,IACpD,UAAA;AAAA,MAAAI,OAAkB,SACjB,gBAAAuF,EAACS,IAAA,EAA2B,YAAY/F,GAAW,SAASgG,IAC1D,UAAA,gBAAAV,EAACW,IAAA,EACC,UAAA,gBAAAX;AAAA,QAACY;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,WAAA1F;AAAA,UACA,WAAAG;AAAA,UACA,qBAAAoB;AAAA,UACA,2BAAAf;AAAA,UACA,UAAA9D;AAAA,UACA,mBAAmBwG;AAAA,UACnB,UAAAnH;AAAA,UACA,gBAAA0F;AAAA,QAAA;AAAA,SAEJ,EACF,CAAA;AAAA,MAEDE,MAAWf,KACV,gBAAAkE,EAACa,IAAA,EAAsB,YAAYvG,IAAmB,YAAYI,GAChE,4BAACoG,IAAS,EAAA,QAAQhG,GAAkB,iBAAgB,UAAS,aAAY,UACvE,UAAA,gBAAAkF;AAAA,QAACe;AAAA,QAAA;AAAA,UACC,SAAAlE;AAAA,UACA,sBAAAf;AAAA,UACA,aAAA5E;AAAA,UACA,gBAAgB6G;AAAA,UAChB,0BAAA1F;AAAA,UACA,oBAAAC;AAAA,UACA,qBAAAF;AAAA,QAAA;AAAA,SAEJ,EACF,CAAA;AAAA,MAEDwC,MACC,gBAAAoF;AAAA,QAACgB;AAAA,QAAA;AAAA,UACC,qBAAAvE;AAAA,UACA,SAAS2B;AAAA,UACT,WAAAlD;AAAA,UACA,cAAcL;AAAA,UACd,WAAAH;AAAA,UACA,UAAAzD;AAAA,QAAA;AAAA,MACF;AAAA,MAED8F,MACE,gBAAAiD,EAAAiB,IAAA,EACC,UAAC,gBAAAjB,EAAAkB,IAAA,EAAiB,iBAAiBC,IAAsB,SAAS9C,GAAA,CAAmB,EACvF,CAAA;AAAA,MAEF,gBAAAyB;AAAA,QAACsB;AAAAA,QAAA;AAAA,UACC,YAAYnK,MAAa,aAAa0F,IAAiB,MAAM9B;AAAA,UAC7D,SAASA;AAAA,UACT,aAAaT,MAAmB;AAAA,UAEhC,UAAA;AAAA,YAAA,gBAAA4F;AAAA,cAACqB;AAAA,cAAA;AAAA,gBACC,OAAOtG,IAA0B;AAAA,gBACjC,UAAUG,EAAUuB,CAAmB;AAAA,gBACvC,YAAA/D;AAAA,gBACA,UAAAzB;AAAA,cAAA;AAAA,YACF;AAAA,YACC+C,MACC,gBAAAgG;AAAA,cAACsB;AAAAA,cAAA;AAAA,gBACC,SAASzG;AAAA,gBACT,QAAQT,MAAmB,SAASW,IAA0B,KAAK;AAAA,gBACnE,aAAaX,MAAmB;AAAA,gBAEhC,UAAA,gBAAA4F;AAAA,kBAACc;AAAA,kBAAA;AAAA,oBACC,UAAU;AAAA,oBACV,gBAAe;AAAA,oBACf,iBAAgB;AAAA,oBAChB,aAAY;AAAA,oBACZ,QAAQ/F,IAA0B;AAAA,oBAElC,UAAA,gBAAAiF;AAAA,sBAACuB;AAAA,sBAAA;AAAA,wBACC,UAAAtK;AAAA,wBACA,QAAAS;AAAA,wBACA,UAAAE;AAAA,wBACA,eAAAR;AAAA,wBACA,WAAA8D;AAAA,wBACA,WAAAG;AAAA,wBACA,kBAAAiD;AAAA,wBACA,qBAAA7B;AAAA,wBACA,2BAAAf;AAAA,wBACA,qBAAA/C;AAAA,wBACA,YAAAD;AAAA,wBACA,iBAAAO;AAAA,wBACA,oBAAAO;AAAA,wBACA,qBAAAgC;AAAA,wBACA,kBAAkBmB;AAAA,wBAClB,cAAArB;AAAA,wBACA,wBAAA2B;AAAA,wBACA,mBAAAL;AAAA,wBACA,YAAAE;AAAA,wBACA,wBAAArB;AAAA,wBACA,qBAAAa;AAAA,wBACA,mBAAmB8B;AAAA,wBACnB,cAAcG;AAAA,wBACd,kBAAAvG;AAAA,wBACA,QAAAkB;AAAA,wBACA,qBAAAd;AAAA,wBACA,UAAAK;AAAA,wBACA,gBAAAsE;AAAA,wBACA,WAAAtD;AAAA,wBACA,QAAAG;AAAA,wBACA,qBAAAC;AAAA,sBAAA;AAAA,oBACF;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YACF;AAAA,YAED,CAAC8C,KAAkBnC,KAAuBvD,MAAa,aACrD,gBAAA+I,EAAAwB,IAAA,EACC,UAAC,gBAAAxB,EAAAyB,IAAA,CAAA,CAAU,EACb,CAAA;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,MACA,gBAAA3B;AAAA,QAAC4B;AAAAA,QAAA;AAAA,UACC,kBAAkB7G;AAAA,UAClB,aAAaT,MAAmB;AAAA,UAE/B,UAAA;AAAA,YAAkBwB,GAAA,IAAI,CAACc,GAAUiF,MAAkB;;AAClD,oBAAM,EAAE,aAAaC,GAAY,aAAA5C,EAAA,IAAgBtC,GAC3CmF,KAAe3D,IAAA7C,EAAUuG,CAAU,MAApB,gBAAA1D,EAAuB;AAE5C,qBAAItG,EAAS,6BACPiK,MAAiB,aAEjB7C,KAAe6C,MAAiB,cAAc5K,MAAa,aACtD,OAKT,gBAAA+I;AAAA,gBAAC8B;AAAA,gBAAA;AAAA,kBAEC,eAAe3K;AAAA,kBACf,UAAAF;AAAA,kBACA,oBAAA2B;AAAA,kBACA,UAAA8D;AAAA,kBACA,UAAUrB,EAAUuG,CAAU;AAAA,kBAC9B,gBACE1H,MAAmB,cAAcA,MAAmB,YAChD4B,KAAA,gBAAAA,EAAsB,cACtB6F,IAAgBjG,KACd0D,IAAAlE,EAAUyG,IAAgB,CAAC,MAA3B,gBAAAvC,EAA8B,cAC9B;AAAA,kBAER,kBAAAtE;AAAA,kBACA,YAAApC;AAAA,kBACA,UAAUkJ,MAAevF;AAAA,kBACzB,UACG,CAAC7B,KAAuBoH,MAAevF,KAAqBM;AAAA,kBAE/D,WACEF,IAAsB,OACrBkF,MAAkBlF,KAChBvC,MAAmB,aAAayH,MAAkBlF,IAAsB;AAAA,kBAE7E,YAAA9E;AAAA,kBACA,UAAUgB,GAAoB,SAASiJ,CAAU;AAAA,kBACjD,UAAAhK;AAAA,kBACA,QAAAF;AAAA,kBACA,iBAAAmD;AAAA,kBACA,sBAAA0B;AAAA,kBACA,iBAAiBsB;AAAA,kBACjB,oBAAoBV;AAAA,kBACpB,QAAAtE;AAAA,kBACA,qBAAA2C;AAAA,kBACA,kBAAA1C;AAAA,kBACA,kBAAAC;AAAA,kBACA,oBAAAC;AAAA,kBACA,iBAAAC;AAAA,kBACA,oBAAAE;AAAA,kBACA,sBAAAC;AAAA,kBACA,qBAAAkD;AAAA,kBACA,iBAAA5C;AAAA,kBACA,gBAAAC;AAAA,kBACA,WAAAG;AAAA,kBACA,iBAAAC;AAAA,kBACA,WAAAsB;AAAA,kBACA,WAAA5B;AAAA,gBAAA;AAAA,gBA9CKmI;AAAA,cAAA;AAAA,YA+CP,CAEH;AAAA,YACAjF,KACC,gBAAAqD;AAAA,cAAC+B;AAAA,cAAA;AAAA,gBACC,eAAA3K;AAAA,gBACA,WAAA8D;AAAA,gBACA,WAAAG;AAAA,gBACA,qBAAAoB;AAAA,gBACA,2BAAAf;AAAA,gBACA,mBAAmB0C;AAAA,gBACnB,UAAAxG;AAAA,gBACA,WAAW2C;AAAA,gBACX,oBAAAhB;AAAA,gBACA,gBAAAoD;AAAA,cAAA;AAAA,YACF;AAAA,UAAA;AAAA,QAAA;AAAA,MAEJ;AAAA,MACC,CAACA,KAAkBhC,MAClB,gBAAAqF;AAAA,QAACgC;AAAA,QAAA;AAAA,UACC,eAAelH;AAAA,UACf,WAAAI;AAAA,UACA,qBAAAuB;AAAA,UACA,YAAA/D;AAAA,UACA,UAAAzB;AAAA,UACA,QAAQqD;AAAA,UACR,iBAAAO;AAAA,UACA,2BAAAvB;AAAA,UACA,WAAAG;AAAA,QAAA;AAAA,MACF;AAAA,IAAA,GAEJ;AAAA,EACF,EAAA,CAAA,IArPO;AAuPX,GAEMwI,KAAYC,GAAKC,GAAWrL,EAAa,CAAC;"}
|
|
1
|
+
{"version":3,"file":"worksheet.js","sources":["../../../../src/features/worksheet/worksheet/worksheet.tsx"],"sourcesContent":["import type { TWorksheetBlocker } from './worksheet-blocker/worksheet-blocker-types';\nimport type { IWorksheetProps, IWorksheetRef, IWorksheetResponse } from './worksheet-types';\nimport type { ForwardRefRenderFunction } from 'react';\n\nimport { captureMessage } from '@sentry/browser';\nimport {\n forwardRef,\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\n\nimport Check2Icon from '../../../assets/line-icons/icons/check2';\nimport Info2Icon from '../../../assets/line-icons/icons/info2';\nimport getDeviceDetails from '../../../helpers/get-device-details';\nimport DesmosCalculator from '../../sheet-tools/desmos-calculator/desmos-calculator';\nimport FlexView from '../../ui/layout/flex-view';\nimport Text from '../../ui/text/text';\nimport EVENTS from '../constants/events';\nimport UserPointer from '../user-pointer-pin/user-pin';\nimport {\n DESMOS_CALC_POSITION,\n TOP_NAVIGATION_HEIGHT,\n WORKSHEET_NUDGE_BANNER_HEIGHT,\n} from './constants';\nimport useCreateImperativeHandle from './hooks/use-create-imperative-handle';\nimport useGetActiveQuestionId from './hooks/use-get-active-question-id';\nimport useTimeSpentOnQuestions from './hooks/use-time-on-questions';\nimport QuestionTips from './question-tips';\nimport WorksheetActionBar from './worksheet-action-bar/worksheet-action-bar';\nimport WorksheetBlocker from './worksheet-blocker/worksheet-blocker';\nimport {\n getInitialQuestionId,\n getInitialResponses,\n getLastUnlockedQuestionIndex,\n getQuestionMetadata,\n getQuestionsFromItems,\n getRenderableQuestions,\n getWorksheetDimensions,\n getWorksheetNudgeBannerInfo,\n scrollToQuestion,\n} from './worksheet-helpers';\nimport WorksheetNavigation from './worksheet-navigation/worksheet-navigation';\nimport WorksheetQuestion from './worksheet-question/worksheet-question';\nimport Navigator from './worksheet-sidebar/navigator';\nimport WorksheetSideBar from './worksheet-sidebar/sidebar';\nimport * as Styled from './worksheet-styled';\nimport WorksheetSummary from './worksheet-summary/worksheet-summary';\n\n/**\n *\n * @param learnosityItems cannot not be changed between the renders\n */\nconst WorksheetComp: ForwardRefRenderFunction<IWorksheetRef, IWorksheetProps> = (props, ref) => {\n const {\n userType,\n studentName = 'Student',\n questionsSignedRequest,\n worksheetName,\n initialResponseId,\n initialItemIndex,\n learnosityActivityRef,\n learnosityItems,\n learnosityResponses,\n layout,\n background,\n behavior,\n updatedResponses,\n showNudgeBanner,\n markedAsCompleted,\n onResponseChange,\n onBulkResponsesChange,\n onResponsesChange,\n onMediaStateChange,\n onTeacherValidation,\n onOptionalItemAssignment,\n onOptionalItemSkip,\n onExitTicketStart,\n onExitTicketSubmit,\n onSubmit,\n learnosity,\n appendedQuestionIds,\n worksheetCompleted,\n userId,\n onPublishStrokes,\n onReceiveStrokes,\n initialStrokesData,\n isCanvasEnabled,\n onHelp,\n onPublishMouseMove,\n onSubscribeMouseMove,\n onActiveQuestionChange,\n openQuestionFeedbackModal,\n summaryDescription,\n canSubmitWorksheet,\n loggerRef,\n canResolveDoubt,\n onResolveDoubt,\n onSkip,\n canToggleScribbling = true,\n studentId,\n subjectiveProps,\n canShowActionBar = true,\n } = props;\n const { initialQuestion, navigationMode, teacherValidationEnabled } = behavior;\n const {\n containerStyle,\n containerWidth,\n minQuestionHeight,\n minSummaryHeight,\n questionsScrollable,\n navigationBar,\n topOffset,\n renderSideBar,\n showUserPointer = true,\n } = layout;\n\n const { actionbarHeight, maxQuestionWidth, questionsContainerWidth } = useMemo(\n () => getWorksheetDimensions(learnosityItems, layout),\n [layout, learnosityItems],\n );\n\n const [questions] = useState(() =>\n getQuestionsFromItems(learnosityItems, {\n sectioned:\n teacherValidationEnabled && navigationMode !== 'ADAPTIVE' && navigationMode !== 'CURRENT',\n adaptive: navigationMode === 'ADAPTIVE',\n }),\n );\n\n const [responses, setResponses] = useState<Record<string, IWorksheetResponse>>(\n () => learnosityResponses ?? getInitialResponses(questions),\n );\n const [isScribblingEnabled, setIsScribblingEnabled] = useState(false);\n const lastUnlockedQuestionIndex = useMemo(\n () =>\n navigationMode !== 'OPEN'\n ? getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n })\n : questions.length - 1,\n [behavior, navigationMode, questions, responses, userType],\n );\n\n const questionsToRender = useMemo(\n () => getRenderableQuestions({ questions, lastUnlockedQuestionIndex, userType }),\n [questions, lastUnlockedQuestionIndex, userType],\n );\n\n const lastUnlockedQuestion = questions[lastUnlockedQuestionIndex];\n const lastUnlockedQuestionResponse = responses[lastUnlockedQuestion?.response_id ?? ''];\n\n const { bannerBackgroundColor: nudgeBannerBackgroundColor, label: nudgeBannerLabel } =\n getWorksheetNudgeBannerInfo(userType, Boolean(markedAsCompleted));\n\n const [initialQuestionId] = useState(() =>\n getInitialQuestionId({\n questions,\n initialQuestion,\n lastUnlockedQuestionIndex: getLastUnlockedQuestionIndex({\n questions,\n responses,\n behavior,\n userType,\n }),\n initialResponseId,\n initialItemIndex,\n }),\n );\n\n const { activeQuestionId, setActiveQuestionId, intersectionObserver } =\n useGetActiveQuestionId(initialQuestionId);\n const activeQuestionIndex = useMemo(\n () => questions.findIndex(question => question.response_id === activeQuestionId),\n [activeQuestionId, questions],\n );\n const [summaryVisible, setSummaryVisible] = useState(false);\n const [blocker, setBlocker] = useState<TWorksheetBlocker>();\n\n const [showCalculator, setShowCalculator] = useState(false);\n const getTimeSpentOnQuestion = useTimeSpentOnQuestions(behavior, responses, activeQuestionId);\n\n const handleMediaStateChange = useCallback<NonNullable<typeof onMediaStateChange>>(\n (question, mediaType, mediaState) => {\n const key = mediaType === 'SIMULATION' ? 'simState' : undefined;\n\n if (!key) return;\n\n if (onResponseChange) {\n setResponses(prevResponses => {\n const questionId = question.response_id;\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n const updatedResponse = {\n ...questionMeta,\n ...prevResponses[questionId],\n [key]: mediaState,\n };\n\n onResponseChange?.({\n responseId: questionId,\n response: updatedResponse,\n isNewAttempt: false,\n question,\n });\n\n return {\n ...prevResponses,\n [questionId]: updatedResponse,\n };\n });\n } else if (onMediaStateChange) {\n onMediaStateChange(question, mediaType, mediaState);\n }\n },\n [onMediaStateChange, onResponseChange, questions],\n );\n\n const handleMarkForReview = useCallback(\n (questionId: string, markedForReview: boolean) => {\n setResponses(prevResponses => {\n const questionMeta = getQuestionMetadata(questions, questionId);\n\n if (!questionMeta) return prevResponses;\n\n return {\n ...prevResponses,\n [questionId]: {\n ...questionMeta,\n ...prevResponses[questionId],\n markedForReview,\n },\n };\n });\n },\n [questions],\n );\n\n const handleBlockerClose = useCallback(() => {\n setBlocker(prevBlocker => {\n if (prevBlocker) {\n const lastUnlockedQuestionId = questions[lastUnlockedQuestionIndex]?.response_id;\n\n if (lastUnlockedQuestionId) {\n setTimeout(() => {\n scrollToQuestion(lastUnlockedQuestionId);\n }, 50);\n }\n }\n\n return undefined;\n });\n }, [lastUnlockedQuestionIndex, questions]);\n\n const handleItemNumberClick = useCallback(\n (questionId: string) => {\n setSummaryVisible(false);\n\n if (questionsScrollable) {\n requestAnimationFrame(() => scrollToQuestion(questionId));\n } else {\n setActiveQuestionId(questionId);\n }\n },\n [questionsScrollable, setActiveQuestionId],\n );\n\n const onCalculatorClose = useCallback(() => {\n setShowCalculator(false);\n }, []);\n\n const onCalculatorOpen = useCallback(() => {\n setShowCalculator(true);\n }, []);\n\n const handleOnGoToReview = useCallback(() => {\n setSummaryVisible(true);\n }, []);\n\n useEffect(() => {\n const activeQuestion = questions[activeQuestionIndex];\n\n if (activeQuestion && onActiveQuestionChange) {\n onActiveQuestionChange(activeQuestion);\n const modal = document.querySelector('div[role=\"dialog\"][aria-label=\"Math Response Modal\"]');\n\n if (modal) {\n modal.classList.add('lds-flexible-container--hide');\n }\n }\n }, [onActiveQuestionChange, questions, activeQuestionIndex]);\n\n useCreateImperativeHandle(ref, {\n behavior,\n questions,\n setResponses,\n onResponseChange,\n onBulkResponsesChange,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n return () => {\n intersectionObserver.disconnect();\n };\n }, [intersectionObserver]);\n\n useEffect(() => {\n if (onResponsesChange && responses) {\n onResponsesChange(responses);\n }\n }, [onResponsesChange, responses]);\n\n useEffect(() => {\n if (updatedResponses) {\n setResponses(updatedResponses);\n }\n }, [updatedResponses]);\n\n useLayoutEffect(() => {\n let timer: NodeJS.Timeout;\n\n if (learnosity && initialQuestionId) {\n if (getDeviceDetails().browser_name === 'Safari') {\n timer = setTimeout(() => {\n scrollToQuestion(initialQuestionId);\n }, 400);\n } else {\n scrollToQuestion(initialQuestionId);\n }\n }\n\n return () => {\n clearTimeout(timer);\n };\n }, [learnosity, initialQuestionId, topOffset]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\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 setBlocker('exit-ticket-review-available');\n } else if (!lastUnlockedQuestionResponse?.validatedByTeacher) {\n setBlocker('exit-ticket-teacher-intervention');\n } else {\n handleBlockerClose();\n }\n } else if (is_optional) {\n if (!lastUnlockedQuestionResponse?.assignStatus) {\n setBlocker('optional-items-assignment');\n } else {\n handleBlockerClose();\n }\n } else if (!is_optional) {\n handleBlockerClose();\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n handleBlockerClose,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse,\n userType,\n ]);\n\n useEffect(() => {\n if (behavior.teacherValidationEnabled && lastUnlockedQuestion) {\n const { item_type, instructor_stimulus } = lastUnlockedQuestion;\n\n if (userType === 'STUDENT') {\n if (item_type === 'exit-ticket' && instructor_stimulus !== 'SystemIntro') {\n if (lastUnlockedQuestionResponse?.submittedByStudent) {\n onExitTicketSubmit?.();\n } else {\n onExitTicketStart?.();\n }\n }\n }\n }\n }, [\n behavior.teacherValidationEnabled,\n lastUnlockedQuestion,\n lastUnlockedQuestionResponse?.submittedByStudent,\n onExitTicketStart,\n onExitTicketSubmit,\n userType,\n ]);\n\n useEffect(() => {\n if (navigationMode === 'CURRENT') {\n learnosityItems.forEach(({ reference, questions: itemQuestions }) => {\n if (itemQuestions.length < 3) {\n captureMessage(`Diagnostics item has Less than 3 questions: ${reference}`, {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': reference,\n },\n fingerprint: [`diagnostics-item-questions-count-${reference}`], // Add unique fingerprint\n });\n } else if (\n itemQuestions[0]?.instructor_stimulus !== 'Try' ||\n itemQuestions[1]?.instructor_stimulus !== 'Learn' ||\n itemQuestions[2]?.instructor_stimulus !== 'Apply'\n ) {\n captureMessage(\n `Diagnostics questions sequence is incorrect expected [Try, Learn, Apply]: ${reference}`,\n {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': reference,\n },\n fingerprint: [`diagnostics-item-questions-sequence-${reference}`], // Add unique fingerprint\n },\n );\n }\n });\n }\n }, [learnosityActivityRef, learnosityItems, navigationMode]);\n\n useEffect(() => {\n questions.forEach(question => {\n const { validation, item_reference, type, question_number, metadata } = question;\n const responseNeeded = teacherValidationEnabled ? type !== 'clozetext' : true;\n\n if (responseNeeded && validation?.valid_response) {\n const value = validation.valid_response.value ?? [];\n\n if (value?.length === 0) {\n const altResponses = validation.alt_responses ?? [];\n const hasAltResponse = altResponses.some(altResponse => altResponse.value.length > 0);\n\n if (!hasAltResponse) {\n captureMessage(`Question has no valid response: ${metadata.widget_reference}`, {\n tags: {\n 'content-type': 'learnosity',\n 'activity-reference': learnosityActivityRef,\n 'item-reference': item_reference,\n 'question-number': question_number,\n 'widget-reference': metadata.widget_reference,\n },\n fingerprint: [`no-valid-response-${metadata.widget_reference}`], // Add unique fingerprint\n });\n loggerRef.current(EVENTS.WORKSHEET_V3_QUESTION_MISSING_VALIDATION, {\n item_reference: item_reference,\n widget_reference: metadata.widget_reference,\n question_type: type,\n question_number: question_number,\n });\n }\n }\n }\n });\n }, [learnosityActivityRef, loggerRef, questions, teacherValidationEnabled]);\n\n if (!learnosity) {\n return null;\n }\n\n return (\n <>\n <Styled.LearnosityStyleOverrides />\n {showNudgeBanner && (\n <Styled.NudgeBannerWrapper\n $flexDirection=\"row\"\n $justifyContent=\"center\"\n $alignItems=\"center\"\n $width=\"100%\"\n $heightX={1.75}\n $height={WORKSHEET_NUDGE_BANNER_HEIGHT}\n $gap={8}\n $gutter={8}\n $flexGap={8}\n $background={nudgeBannerBackgroundColor}\n $topOffset={layout.topOffset - WORKSHEET_NUDGE_BANNER_HEIGHT}\n >\n {markedAsCompleted ? (\n <Styled.NudgeBannerIcon>\n <Check2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n ) : (\n <Styled.NudgeBannerIcon>\n <Info2Icon width={16} height={16} />\n </Styled.NudgeBannerIcon>\n )}\n\n <Text $renderAs=\"ub3\">{nudgeBannerLabel}</Text>\n </Styled.NudgeBannerWrapper>\n )}\n\n <Styled.WorksheetContainer $background=\"WHITE\" $width={containerWidth}>\n {navigationBar === 'top' && (\n <Styled.NavigationContainer $topOffset={topOffset} $height={TOP_NAVIGATION_HEIGHT}>\n <Styled.NavigationWrapper>\n <WorksheetNavigation\n placement=\"top\"\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n behavior={behavior}\n onItemNumberClick={handleItemNumberClick}\n userType={userType}\n summaryVisible={summaryVisible}\n />\n </Styled.NavigationWrapper>\n </Styled.NavigationContainer>\n )}\n {blocker && lastUnlockedQuestion && (\n <Styled.BlockerWrapper $minHeight={minQuestionHeight} $topOffset={topOffset}>\n <FlexView $width={maxQuestionWidth} $justifyContent=\"center\" $alignItems=\"center\">\n <WorksheetBlocker\n blocker={blocker}\n lastUnlockedQuestion={lastUnlockedQuestion}\n studentName={studentName}\n onBlockerClose={handleBlockerClose}\n onOptionalItemAssignment={onOptionalItemAssignment}\n onOptionalItemSkip={onOptionalItemSkip}\n onTeacherValidation={onTeacherValidation}\n />\n </FlexView>\n </Styled.BlockerWrapper>\n )}\n {showUserPointer && (\n <UserPointer\n activeQuestionIndex={activeQuestionIndex}\n onClick={handleItemNumberClick}\n questions={questions}\n bottomOffset={actionbarHeight}\n topOffset={topOffset}\n userType={userType}\n />\n )}\n {showCalculator && (\n <Styled.DesmosCalcWrapper>\n <DesmosCalculator initialPosition={DESMOS_CALC_POSITION} onClose={onCalculatorClose} />\n </Styled.DesmosCalcWrapper>\n )}\n <Styled.ActionbarContainer\n $marginTop={userType === 'TEACHER' && summaryVisible ? '0' : actionbarHeight}\n $height={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n >\n <QuestionTips\n width={questionsContainerWidth - 32}\n question={questions[activeQuestionIndex]}\n learnosity={learnosity}\n userType={userType}\n />\n {canShowActionBar && (\n <Styled.ActionbarWrapper\n $height={actionbarHeight}\n $width={containerStyle === 'card' ? questionsContainerWidth - 32 : '100%'}\n $isCardView={containerStyle === 'card'}\n >\n <FlexView\n $gutterX={1}\n $flexDirection=\"row\"\n $justifyContent=\"space-between\"\n $alignItems=\"center\"\n $width={questionsContainerWidth - 32}\n >\n <WorksheetActionBar\n userType={userType}\n layout={layout}\n behavior={behavior}\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n onCalculatorOpen={onCalculatorOpen}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n appendedQuestionIds={appendedQuestionIds}\n learnosity={learnosity}\n isCanvasEnabled={isCanvasEnabled}\n canSubmitWorksheet={canSubmitWorksheet}\n isScribblingEnabled={isScribblingEnabled}\n isSummaryVisible={summaryVisible}\n setResponses={setResponses}\n getTimeSpentOnQuestion={getTimeSpentOnQuestion}\n setSummaryVisible={setSummaryVisible}\n setBlocker={setBlocker}\n setIsScribblingEnabled={setIsScribblingEnabled}\n setActiveQuestionId={setActiveQuestionId}\n onItemNumberClick={handleItemNumberClick}\n onGoToReview={handleOnGoToReview}\n onResponseChange={onResponseChange}\n onHelp={onHelp}\n onTeacherValidation={onTeacherValidation}\n onSubmit={onSubmit}\n showCalculator={showCalculator}\n loggerRef={loggerRef}\n onSkip={onSkip}\n canToggleScribbling={canToggleScribbling}\n />\n </FlexView>\n </Styled.ActionbarWrapper>\n )}\n {!summaryVisible && questionsScrollable && userType === 'STUDENT' && (\n <Styled.StudentWorksheetSideBar>\n <Navigator />\n </Styled.StudentWorksheetSideBar>\n )}\n </Styled.ActionbarContainer>\n <Styled.QuestionsWrapper\n $actionbarHeight={actionbarHeight}\n $isCardView={containerStyle === 'card'}\n >\n {questionsToRender.map((question, questionIndex) => {\n const { response_id: responseId, is_optional } = question;\n const assignStatus = responses[responseId]?.assignStatus;\n\n if (behavior.teacherValidationEnabled) {\n if (assignStatus === 'skipped') return null;\n\n if (is_optional && assignStatus !== 'assigned' && userType === 'STUDENT') {\n return null;\n }\n }\n\n return (\n <WorksheetQuestion\n key={responseId}\n signedRequest={questionsSignedRequest}\n userType={userType}\n worksheetCompleted={worksheetCompleted}\n question={question}\n response={responses[responseId]}\n nextQuestionId={\n navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT'\n ? lastUnlockedQuestion?.response_id\n : questionIndex < lastUnlockedQuestionIndex\n ? questions[questionIndex + 1]?.response_id\n : undefined\n }\n maxQuestionWidth={maxQuestionWidth}\n learnosity={learnosity}\n isActive={responseId === activeQuestionId}\n isHidden={\n (!questionsScrollable && responseId !== activeQuestionId) || summaryVisible\n }\n canRender={\n activeQuestionIndex > -1 &&\n (questionIndex === activeQuestionIndex ||\n (navigationMode !== 'CURRENT' && questionIndex === activeQuestionIndex + 1))\n }\n background={background}\n appended={appendedQuestionIds.includes(responseId)}\n behavior={behavior}\n layout={layout}\n actionbarHeight={actionbarHeight}\n intersectionObserver={intersectionObserver}\n onMarkForReview={handleMarkForReview}\n onMediaStateChange={handleMediaStateChange}\n userId={userId}\n isScribblingEnabled={isScribblingEnabled}\n onPublishStrokes={onPublishStrokes}\n onReceiveStrokes={onReceiveStrokes}\n initialStrokesData={initialStrokesData}\n isCanvasEnabled={isCanvasEnabled}\n onPublishMouseMove={onPublishMouseMove}\n onSubscribeMouseMove={onSubscribeMouseMove}\n setActiveQuestionId={setActiveQuestionId}\n canResolveDoubt={canResolveDoubt}\n onResolveDoubt={onResolveDoubt}\n studentId={studentId}\n subjectiveProps={subjectiveProps}\n responses={responses}\n loggerRef={loggerRef}\n />\n );\n })}\n {summaryVisible && (\n <WorksheetSummary\n worksheetName={worksheetName}\n questions={questions}\n responses={responses}\n activeQuestionIndex={activeQuestionIndex}\n lastUnlockedQuestionIndex={lastUnlockedQuestionIndex}\n onItemNumberClick={handleItemNumberClick}\n behavior={behavior}\n minHeight={minSummaryHeight}\n summaryDescription={summaryDescription}\n summaryVisible={summaryVisible}\n />\n )}\n </Styled.QuestionsWrapper>\n {!summaryVisible && renderSideBar && (\n <WorksheetSideBar\n questionWidth={maxQuestionWidth}\n questions={questions}\n activeQuestionIndex={activeQuestionIndex}\n learnosity={learnosity}\n userType={userType}\n height={minQuestionHeight}\n actionbarHeight={actionbarHeight}\n openQuestionFeedbackModal={openQuestionFeedbackModal}\n loggerRef={loggerRef}\n />\n )}\n </Styled.WorksheetContainer>\n </>\n );\n};\n\nconst Worksheet = memo(forwardRef(WorksheetComp));\n\nexport default Worksheet;\n"],"names":["WorksheetComp","props","ref","userType","studentName","questionsSignedRequest","worksheetName","initialResponseId","initialItemIndex","learnosityActivityRef","learnosityItems","learnosityResponses","layout","background","behavior","updatedResponses","showNudgeBanner","markedAsCompleted","onResponseChange","onBulkResponsesChange","onResponsesChange","onMediaStateChange","onTeacherValidation","onOptionalItemAssignment","onOptionalItemSkip","onExitTicketStart","onExitTicketSubmit","onSubmit","learnosity","appendedQuestionIds","worksheetCompleted","userId","onPublishStrokes","onReceiveStrokes","initialStrokesData","isCanvasEnabled","onHelp","onPublishMouseMove","onSubscribeMouseMove","onActiveQuestionChange","openQuestionFeedbackModal","summaryDescription","canSubmitWorksheet","loggerRef","canResolveDoubt","onResolveDoubt","onSkip","canToggleScribbling","studentId","subjectiveProps","canShowActionBar","initialQuestion","navigationMode","teacherValidationEnabled","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","actionbarHeight","maxQuestionWidth","questionsContainerWidth","useMemo","getWorksheetDimensions","questions","useState","getQuestionsFromItems","responses","setResponses","getInitialResponses","isScribblingEnabled","setIsScribblingEnabled","lastUnlockedQuestionIndex","getLastUnlockedQuestionIndex","questionsToRender","getRenderableQuestions","lastUnlockedQuestion","lastUnlockedQuestionResponse","nudgeBannerBackgroundColor","nudgeBannerLabel","getWorksheetNudgeBannerInfo","initialQuestionId","getInitialQuestionId","activeQuestionId","setActiveQuestionId","intersectionObserver","useGetActiveQuestionId","activeQuestionIndex","question","summaryVisible","setSummaryVisible","blocker","setBlocker","showCalculator","setShowCalculator","getTimeSpentOnQuestion","useTimeSpentOnQuestions","handleMediaStateChange","useCallback","mediaType","mediaState","key","prevResponses","questionId","questionMeta","getQuestionMetadata","updatedResponse","handleMarkForReview","markedForReview","handleBlockerClose","prevBlocker","lastUnlockedQuestionId","_a","scrollToQuestion","handleItemNumberClick","onCalculatorClose","onCalculatorOpen","handleOnGoToReview","useEffect","activeQuestion","modal","useCreateImperativeHandle","useLayoutEffect","timer","getDeviceDetails","item_type","instructor_stimulus","is_optional","reference","itemQuestions","captureMessage","_b","_c","validation","item_reference","type","question_number","metadata","value","altResponse","EVENTS","jsxs","Fragment","jsx","Styled.LearnosityStyleOverrides","Styled.NudgeBannerWrapper","WORKSHEET_NUDGE_BANNER_HEIGHT","Styled.NudgeBannerIcon","Check2Icon","Info2Icon","Text","Styled.WorksheetContainer","Styled.NavigationContainer","TOP_NAVIGATION_HEIGHT","Styled.NavigationWrapper","WorksheetNavigation","Styled.BlockerWrapper","FlexView","WorksheetBlocker","UserPointer","Styled.DesmosCalcWrapper","DesmosCalculator","DESMOS_CALC_POSITION","Styled.ActionbarContainer","QuestionTips","Styled.ActionbarWrapper","WorksheetActionBar","Styled.StudentWorksheetSideBar","Navigator","Styled.QuestionsWrapper","questionIndex","responseId","assignStatus","WorksheetQuestion","WorksheetSummary","WorksheetSideBar","Worksheet","memo","forwardRef"],"mappings":"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"}
|