@cuemath/leap 3.2.0-aa1 → 3.2.0-aa2

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,26 +1,26 @@
1
- import { jsxs as L, jsx as i, Fragment as Vt } from "react/jsx-runtime";
2
- import { memo as Xt, useMemo as p, useState as T, useRef as K, useCallback as Pt, useEffect as R, useLayoutEffect as jt } from "react";
3
- import { IMAGES as Gt } from "../../../../assets/images/images.js";
4
- import Yt from "../../../cue-canvas/cue-canvas.js";
5
- import Zt from "../../../pointer-sync/pointer.js";
1
+ import { jsxs as T, jsx as i, Fragment as Vt } from "react/jsx-runtime";
2
+ import { memo as Xt, useMemo as R, useState as L, useRef as K, useCallback as Pt, useEffect as g } from "react";
3
+ import { IMAGES as jt } from "../../../../assets/images/images.js";
4
+ import Gt from "../../../cue-canvas/cue-canvas.js";
5
+ import Yt from "../../../pointer-sync/pointer.js";
6
6
  import Ht from "../../../ui/layout/flex-view.js";
7
- import Jt from "../../constants/events.js";
8
- import { QUESTIONS_GAP as kt, LEARNOSITY_KEYBOARD_HEIGHT as St } from "../constants.js";
9
- import { getPaperColorByQuestion as qt, isConceptIntroWidget as te, scrollToQuestion as bt } from "../worksheet-helpers.js";
10
- import ee from "./header/header.js";
11
- import ie from "./learnosity-question.js";
12
- import re from "./question-backdrop/question-backdrop.js";
13
- import oe from "./subjective-review.js";
14
- import ne from "./system-intros/advanced-practice-intro.js";
15
- import ce from "./system-intros/basic-practice-intro.js";
16
- import ae from "./system-intros/exit-ticket-intro.js";
17
- import se from "./system-intros/regular-practice-intro.js";
18
- import { QuestionContainerWrapper as le, StimulusReview as me, QuestionContainer as ue, QuestionWrapper as fe, LessonOverviewBanner as he, CueCanvasWrapper as de, Hint as ge, Solution as Ee } from "./worksheet-question-styled.js";
19
- const Me = Xt(
7
+ import Zt from "../../constants/events.js";
8
+ import { QUESTIONS_GAP as Jt, LEARNOSITY_KEYBOARD_HEIGHT as St } from "../constants.js";
9
+ import { getPaperColorByQuestion as kt, isConceptIntroWidget as qt, scrollToQuestion as bt } from "../worksheet-helpers.js";
10
+ import te from "./header/header.js";
11
+ import ee from "./learnosity-question.js";
12
+ import ie from "./question-backdrop/question-backdrop.js";
13
+ import re from "./subjective-review.js";
14
+ import oe from "./system-intros/advanced-practice-intro.js";
15
+ import ne from "./system-intros/basic-practice-intro.js";
16
+ import ce from "./system-intros/exit-ticket-intro.js";
17
+ import ae from "./system-intros/regular-practice-intro.js";
18
+ import { QuestionContainerWrapper as se, StimulusReview as le, QuestionContainer as me, QuestionWrapper as ue, LessonOverviewBanner as he, CueCanvasWrapper as de, Hint as fe, Solution as ge } from "./worksheet-question-styled.js";
19
+ const Ae = Xt(
20
20
  ({
21
21
  userType: c,
22
22
  signedRequest: Ct,
23
- worksheetCompleted: g,
23
+ worksheetCompleted: E,
24
24
  question: n,
25
25
  response: e,
26
26
  nextQuestionId: v,
@@ -48,15 +48,15 @@ const Me = Xt(
48
48
  onSubscribeMouseMove: et,
49
49
  setActiveQuestionId: it,
50
50
  canResolveDoubt: It,
51
- onResolveDoubt: Lt,
52
- studentId: Tt,
51
+ onResolveDoubt: Tt,
52
+ studentId: Lt,
53
53
  responses: At,
54
54
  subjectiveProps: rt
55
55
  }) => {
56
- const C = p(
57
- () => Y === "paper" ? qt(n) : void 0,
56
+ const C = R(
57
+ () => Y === "paper" ? kt(n) : void 0,
58
58
  [Y, n]
59
- ), [W, Mt] = T(), [ot, Ot] = T(), {
59
+ ), [W, Mt] = L(), [ot, Ot] = L(), {
60
60
  validation: nt,
61
61
  review: N,
62
62
  maximumAttempts: ct,
@@ -64,47 +64,47 @@ const Me = Xt(
64
64
  teacherValidationEnabled: H,
65
65
  solutionHidden: st
66
66
  } = P, { minQuestionHeight: Nt, topOffset: lt, questionsScrollable: y, renderQuestionHeader: Qt } = j, {
67
- type: E,
67
+ type: _,
68
68
  response_id: r,
69
- stimulus_review: _,
70
- item_type: f,
69
+ stimulus_review: $,
70
+ item_type: h,
71
71
  instructor_stimulus: mt,
72
- metadata: { hints: h, solution: B, widget_reference: ut },
73
- item_reference: ft,
74
- question_number: ht,
75
- item_number: dt,
72
+ metadata: { hints: d, solution: B, widget_reference: ut },
73
+ item_reference: ht,
74
+ question_number: dt,
75
+ item_number: ft,
76
76
  item_display_number: gt
77
- } = n, Ft = !!_, x = f === "overview", m = te(mt), d = mt === "SystemIntro", Q = m || d, Et = e == null ? void 0 : e.responseEdited, zt = p(() => {
77
+ } = n, Ft = !!$, x = h === "overview", m = qt(mt), f = mt === "SystemIntro", Q = m || f, Et = e == null ? void 0 : e.responseEdited, zt = R(() => {
78
78
  const t = [];
79
- return Et && c === "TEACHER" && t.push("attempting"), a || t.push("hidden"), E === "hotspot" && t.push("correct-answers-hidden"), a && H && E === "clozetext" && (!m || c === "STUDENT" ? t.push("response-hidden") : t.push("response-code-hidden")), x && t.push("lesson-overview"), m && t.push("concept-intro"), d && t.push("system-intro"), t.join(" ");
79
+ return Et && c === "TEACHER" && t.push("attempting"), a || t.push("hidden"), _ === "hotspot" && t.push("correct-answers-hidden"), a && H && _ === "clozetext" && (!m || c === "STUDENT" ? t.push("response-hidden") : t.push("response-code-hidden")), x && t.push("lesson-overview"), m && t.push("concept-intro"), f && t.push("system-intro"), t.join(" ");
80
80
  }, [
81
81
  a,
82
82
  m,
83
83
  x,
84
- d,
85
- E,
84
+ f,
85
+ _,
86
86
  Et,
87
87
  H,
88
88
  c
89
- ]), F = K({}), z = (e == null ? void 0 : e.hintsUsed) ?? 0, [_t] = T((e == null ? void 0 : e.validatedByTeacher) ?? !1), I = K(null), D = K(null), U = p(() => h == null ? void 0 : h.slice(0, z), [h, z]), $t = p(() => c === "TEACHER" || g ? !0 : !e || !e.response || e.responseEdited ? !1 : nt, [e, c, nt, g]), pt = p(() => {
89
+ ]), F = K({}), z = (e == null ? void 0 : e.hintsUsed) ?? 0, [_t] = L((e == null ? void 0 : e.validatedByTeacher) ?? !1), I = K(null), D = K(null), U = R(() => d == null ? void 0 : d.slice(0, z), [d, z]), $t = R(() => c === "TEACHER" || E ? !0 : !e || !e.response || e.responseEdited ? !1 : nt, [e, c, nt, E]), pt = R(() => {
90
90
  if (c === "TEACHER") return !0;
91
91
  if (N) {
92
92
  const { attemptsHistory: t } = e ?? {};
93
93
  return ((t == null ? void 0 : t.length) ?? 0) >= ct && !at;
94
94
  }
95
95
  return !1;
96
- }, [at, ct, e, N, c]), Dt = p(
97
- () => B && g && !st,
98
- [st, B, g]
99
- ), [Rt, Ut] = T({
96
+ }, [at, ct, e, N, c]), Dt = R(
97
+ () => B && E && !st,
98
+ [st, B, E]
99
+ ), [Rt, Ut] = L({
100
100
  width: 0,
101
101
  height: 0
102
102
  }), Kt = Pt((t) => {
103
103
  Ot(t);
104
104
  }, []);
105
- return R(() => {
105
+ return g(() => {
106
106
  I.current && G.observe(I.current);
107
- }, [G]), R(() => {
107
+ }, [G]), g(() => {
108
108
  if (a && (n.type === "clozeassociation" || n.type === "association" || n.type === "clozeformula")) {
109
109
  const t = document.querySelectorAll(
110
110
  `.widget-${n.response_id} .lrn_draggable`
@@ -117,29 +117,29 @@ const Me = Xt(
117
117
  height: o
118
118
  });
119
119
  }
120
- }, [a, n.response_id, n.type]), R(() => {
120
+ }, [a, n.response_id, n.type]), g(() => {
121
121
  if (a && $t) {
122
122
  const t = b.question(r);
123
123
  t && t.validate({
124
124
  showCorrectAnswers: pt
125
125
  });
126
126
  }
127
- }, [a, b, r, N, pt, c, $t]), R(() => {
127
+ }, [a, b, r, N, pt, c, $t]), g(() => {
128
128
  const t = D.current;
129
- if (a && t && M.current && F.current[r] === void 0 && !m && !d) {
129
+ if (a && t && M.current && F.current[r] === void 0 && !m && !f) {
130
130
  const s = t.clientWidth, o = t.querySelectorAll("*");
131
131
  for (let l = 0; l < o.length; l++) {
132
132
  const u = o[l];
133
133
  if (u != null && u.closest(".resize-sensor"))
134
134
  continue;
135
135
  if (((u == null ? void 0 : u.clientWidth) ?? 0) > s) {
136
- F.current[r] = !0, M.current(Jt.WORKSHEET_V3_GREATER_WIDTH_ELEMENT, {
137
- item_reference: ft,
136
+ F.current[r] = !0, M.current(Zt.WORKSHEET_V3_GREATER_WIDTH_ELEMENT, {
137
+ item_reference: ht,
138
138
  widget_reference: ut,
139
- question_type: E,
140
- question_number: ht,
139
+ question_type: _,
140
+ question_number: dt,
141
141
  responseId: r,
142
- item_number: dt,
142
+ item_number: ft,
143
143
  item_display_number: gt
144
144
  });
145
145
  break;
@@ -150,40 +150,40 @@ const Me = Xt(
150
150
  }, [
151
151
  a,
152
152
  m,
153
- d,
153
+ f,
154
154
  gt,
155
- dt,
156
155
  ft,
157
- M,
158
- E,
159
156
  ht,
157
+ M,
158
+ _,
159
+ dt,
160
160
  r,
161
161
  ut
162
- ]), R(() => {
162
+ ]), g(() => {
163
163
  const t = I.current, s = (o) => {
164
164
  const l = o.querySelector(".lrn_response_wrapper");
165
165
  if (Q || !l)
166
166
  return 0;
167
- const u = o.getBoundingClientRect().bottom, S = l.getBoundingClientRect().bottom, $ = Math.abs(u - S);
168
- return $ < St ? St - $ : 0;
167
+ const u = o.getBoundingClientRect().bottom, S = l.getBoundingClientRect().bottom, p = Math.abs(u - S);
168
+ return p < St ? St - p : 0;
169
169
  };
170
170
  a && t && Mt((o) => {
171
171
  var wt;
172
- const S = ((wt = n.ui_style) == null ? void 0 : wt.type) === "floating-keyboard" && !(H && E === "clozetext"), $ = t.clientHeight;
173
- if ($ === 0)
172
+ const S = ((wt = n.ui_style) == null ? void 0 : wt.type) === "floating-keyboard" && !(H && _ === "clozetext"), p = t.clientHeight;
173
+ if (p === 0)
174
174
  return o;
175
175
  if (!o)
176
176
  return Math.ceil(
177
- $ + (S ? s(t) : 0)
177
+ p + (S ? s(t) : 0)
178
178
  );
179
179
  const vt = Math.ceil(
180
- $ + (S ? s(t) : 0)
180
+ p + (S ? s(t) : 0)
181
181
  );
182
182
  return Math.abs(vt - o) > 4 ? vt : o;
183
- }), (z || Ft || B && g) && b.renderMath("mathjax");
184
- }), jt(() => {
183
+ }), (z || Ft || B && E) && b.renderMath("mathjax");
184
+ }), g(() => {
185
185
  !y && !A && bt(r);
186
- }, [A, y, r, lt]), R(() => {
186
+ }, [A, y, r, lt]), g(() => {
187
187
  if (H && v && !_t && (e != null && e.validatedByTeacher)) {
188
188
  const t = setTimeout(() => {
189
189
  y ? bt(v) : it(v);
@@ -199,38 +199,38 @@ const Me = Xt(
199
199
  y,
200
200
  it,
201
201
  e == null ? void 0 : e.validatedByTeacher
202
- ]), /* @__PURE__ */ L(
203
- le,
202
+ ]), /* @__PURE__ */ T(
203
+ se,
204
204
  {
205
205
  "data-response-id": r,
206
206
  className: `widget-${r}`,
207
207
  ref: I,
208
208
  $topOffset: lt,
209
- $flexDirection: _ ? "row" : "column",
210
- $alignItems: _ ? "flex-start" : "center",
209
+ $flexDirection: $ ? "row" : "column",
210
+ $alignItems: $ ? "flex-start" : "center",
211
211
  $hidden: A,
212
- $marginBottom: kt,
212
+ $marginBottom: Jt,
213
213
  children: [
214
- _ && /* @__PURE__ */ i(
215
- me,
214
+ $ && /* @__PURE__ */ i(
215
+ le,
216
216
  {
217
217
  dangerouslySetInnerHTML: {
218
- __html: _
218
+ __html: $
219
219
  }
220
220
  }
221
221
  ),
222
- /* @__PURE__ */ L(
223
- ue,
222
+ /* @__PURE__ */ T(
223
+ me,
224
224
  {
225
225
  ref: D,
226
- $width: _ ? "50%" : `${X}px`,
226
+ $width: $ ? "50%" : `${X}px`,
227
227
  $minHeight: W ? Math.max(W - 72, ot ?? 0) : Nt,
228
228
  $isActive: w,
229
229
  $paperColor: C,
230
230
  $opacity: w ? 1 : 0.2,
231
231
  children: [
232
232
  w && !!tt && !!et && q && /* @__PURE__ */ i(
233
- Zt,
233
+ Yt,
234
234
  {
235
235
  containerRef: D,
236
236
  onPublish: tt,
@@ -238,15 +238,15 @@ const Me = Xt(
238
238
  responseId: r
239
239
  }
240
240
  ),
241
- /* @__PURE__ */ L(
242
- fe,
241
+ /* @__PURE__ */ T(
242
+ ue,
243
243
  {
244
244
  className: zt,
245
245
  $dropzoneMinWidth: Rt.width,
246
246
  $dropzoneMinHeight: Rt.height,
247
247
  children: [
248
- Qt && !(x || m || d) && /* @__PURE__ */ i(
249
- ee,
248
+ Qt && !(x || m || f) && /* @__PURE__ */ i(
249
+ te,
250
250
  {
251
251
  userType: c,
252
252
  question: n,
@@ -257,20 +257,20 @@ const Me = Xt(
257
257
  onMarkForReview: Bt,
258
258
  actionbarHeight: Wt,
259
259
  canResolveDoubt: It,
260
- onResolveDoubt: Lt,
261
- worksheetCompleted: g
260
+ onResolveDoubt: Tt,
261
+ worksheetCompleted: E
262
262
  }
263
263
  ),
264
- x && /* @__PURE__ */ i(he, { src: Gt.LESSON_OVERVIEW_BANNER }),
265
- m && C && /* @__PURE__ */ i(re, { paperColor: C }),
266
- d ? /* @__PURE__ */ L(Vt, { children: [
267
- f === "practice-basic" && /* @__PURE__ */ i(ce, {}),
268
- f === "practice-regular" && /* @__PURE__ */ i(se, {}),
269
- f === "exit-ticket" && /* @__PURE__ */ i(ae, {}),
270
- (f == null ? void 0 : f.startsWith("advanced-")) && /* @__PURE__ */ i(ne, {})
264
+ x && /* @__PURE__ */ i(he, { src: jt.LESSON_OVERVIEW_BANNER }),
265
+ m && C && /* @__PURE__ */ i(ie, { paperColor: C }),
266
+ f ? /* @__PURE__ */ T(Vt, { children: [
267
+ h === "practice-basic" && /* @__PURE__ */ i(ne, {}),
268
+ h === "practice-regular" && /* @__PURE__ */ i(ae, {}),
269
+ h === "exit-ticket" && /* @__PURE__ */ i(ce, {}),
270
+ (h == null ? void 0 : h.startsWith("advanced-")) && /* @__PURE__ */ i(oe, {})
271
271
  ] }) : void 0,
272
272
  /* @__PURE__ */ i(
273
- ie,
273
+ ee,
274
274
  {
275
275
  signedRequest: Ct,
276
276
  appended: a,
@@ -285,7 +285,7 @@ const Me = Xt(
285
285
  }
286
286
  ),
287
287
  !Q && q && Z && J && W !== void 0 && /* @__PURE__ */ i(de, { $canScribble: k, children: /* @__PURE__ */ i(
288
- Yt,
288
+ Gt,
289
289
  {
290
290
  canRender: V,
291
291
  canScribble: k && w,
@@ -310,10 +310,10 @@ const Me = Xt(
310
310
  $borderRadiusX: 0,
311
311
  $borderColor: "BLUE_2",
312
312
  children: U.map((t, s) => /* @__PURE__ */ i(
313
- ge,
313
+ fe,
314
314
  {
315
315
  dangerouslySetInnerHTML: {
316
- __html: `<span style="color: #DA5107; font-weight: 600;">Hint${((h == null ? void 0 : h.length) ?? 0) > 1 ? ` ${s + 1}` : ""}:</span>&nbsp;${t}`
316
+ __html: `<span style="color: #DA5107; font-weight: 600;">Hint${((d == null ? void 0 : d.length) ?? 0) > 1 ? ` ${s + 1}` : ""}:</span>&nbsp;${t}`
317
317
  }
318
318
  },
319
319
  t
@@ -329,7 +329,7 @@ const Me = Xt(
329
329
  $borderRadiusX: 0,
330
330
  $borderColor: "YELLOW_2",
331
331
  children: /* @__PURE__ */ i(
332
- Ee,
332
+ ge,
333
333
  {
334
334
  dangerouslySetInnerHTML: {
335
335
  __html: `<div style="color: #DA5107; font-weight: 600;">Solution:</div>${B}`
@@ -339,13 +339,13 @@ const Me = Xt(
339
339
  }
340
340
  ),
341
341
  !!rt && /* @__PURE__ */ i(
342
- oe,
342
+ re,
343
343
  {
344
344
  responses: At,
345
345
  response: e,
346
346
  nextQuestionId: v,
347
347
  responseId: r,
348
- studentId: Tt,
348
+ studentId: Lt,
349
349
  userType: c,
350
350
  ...rt
351
351
  }
@@ -362,6 +362,6 @@ const Me = Xt(
362
362
  }
363
363
  );
364
364
  export {
365
- Me as default
365
+ Ae as default
366
366
  };
367
367
  //# sourceMappingURL=worksheet-question.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet-question.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-question/worksheet-question.tsx"],"sourcesContent":["import type { IWorksheetQuestionProps } from './worksheet-question-types';\n\nimport {\n memo,\n useCallback,\n useEffect,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type FC,\n} from 'react';\n\nimport { IMAGES } from '../../../../assets/images/images';\nimport CueCanvas from '../../../cue-canvas/cue-canvas';\nimport Pointer from '../../../pointer-sync/pointer';\nimport FlexView from '../../../ui/layout/flex-view';\nimport EVENTS from '../../constants/events';\nimport { LEARNOSITY_KEYBOARD_HEIGHT, QUESTIONS_GAP } from '../constants';\nimport {\n getPaperColorByQuestion,\n isConceptIntroWidget,\n scrollToQuestion,\n} from '../worksheet-helpers';\nimport QuestionHeader from './header/header';\nimport LearnosityQuestion from './learnosity-question';\nimport QuestionBackdrop from './question-backdrop/question-backdrop';\nimport SubjectiveQuestionReview from './subjective-review';\nimport AdvancedPracticeIntro from './system-intros/advanced-practice-intro';\nimport BasicPracticeIntro from './system-intros/basic-practice-intro';\nimport ExitTicketIntro from './system-intros/exit-ticket-intro';\nimport RegularPracticeIntro from './system-intros/regular-practice-intro';\nimport * as Styled from './worksheet-question-styled';\n\nconst WorksheetQuestion: FC<IWorksheetQuestionProps> = memo(\n ({\n userType,\n signedRequest,\n worksheetCompleted,\n question,\n response,\n nextQuestionId,\n isActive,\n isHidden,\n canRender,\n loggerRef,\n appended,\n maxQuestionWidth,\n behavior,\n layout,\n actionbarHeight,\n learnosity,\n intersectionObserver,\n background = 'paper',\n onMediaStateChange,\n onMarkForReview,\n userId,\n onPublishStrokes,\n onReceiveStrokes,\n isScribblingEnabled,\n initialStrokesData,\n isCanvasEnabled,\n onPublishMouseMove,\n onSubscribeMouseMove,\n setActiveQuestionId,\n canResolveDoubt,\n onResolveDoubt,\n studentId,\n responses,\n subjectiveProps,\n }) => {\n const paperColor = useMemo(\n () => (background === 'paper' ? getPaperColorByQuestion(question) : undefined),\n [background, question],\n );\n const [questionHeight, setQuestionHeight] = useState<number | undefined>();\n const [canvasHeight, setCanvasHeight] = useState<number | undefined>();\n const {\n validation,\n review,\n maximumAttempts,\n canExceedAttempts,\n teacherValidationEnabled,\n solutionHidden,\n } = behavior;\n const { minQuestionHeight, topOffset, questionsScrollable, renderQuestionHeader } = layout;\n const {\n type: questionType,\n response_id: responseId,\n stimulus_review,\n item_type,\n instructor_stimulus,\n metadata: { hints: hintsAvailable, solution, widget_reference },\n item_reference,\n question_number,\n item_number,\n item_display_number,\n } = question;\n const hasStimulusReview = !!stimulus_review;\n const isLessonOverview = item_type === 'overview';\n const isConceptIntro = isConceptIntroWidget(instructor_stimulus);\n const isSystemIntro = instructor_stimulus === 'SystemIntro';\n const isIntro = isConceptIntro || isSystemIntro;\n const responseEdited = response?.responseEdited;\n const wrapperClasses = useMemo(() => {\n const classes = [];\n\n if (responseEdited && userType === 'TEACHER') {\n classes.push('attempting');\n }\n\n if (!appended) {\n classes.push('hidden');\n }\n\n if (questionType === 'hotspot') {\n classes.push('correct-answers-hidden');\n }\n\n if (appended && teacherValidationEnabled && questionType === 'clozetext') {\n if (!isConceptIntro || userType === 'STUDENT') {\n classes.push('response-hidden');\n } else {\n classes.push('response-code-hidden');\n }\n }\n\n if (isLessonOverview) {\n classes.push('lesson-overview');\n }\n\n if (isConceptIntro) {\n classes.push('concept-intro');\n }\n\n if (isSystemIntro) {\n classes.push('system-intro');\n }\n\n return classes.join(' ');\n }, [\n appended,\n isConceptIntro,\n isLessonOverview,\n isSystemIntro,\n questionType,\n responseEdited,\n teacherValidationEnabled,\n userType,\n ]);\n const overflowDetectedRef = useRef<Record<string, boolean>>({});\n\n const hintsUsed = response?.hintsUsed ?? 0;\n const [validatedByTeacherOnMount] = useState(response?.validatedByTeacher ?? false);\n\n const questionRef = useRef<HTMLDivElement>(null);\n const pointerContainerRef = useRef<HTMLDivElement>(null);\n const hints = useMemo(() => hintsAvailable?.slice(0, hintsUsed), [hintsAvailable, hintsUsed]);\n const validateResponse = useMemo(() => {\n if (userType === 'TEACHER') return true;\n\n if (worksheetCompleted) return true;\n\n if (!response) return false;\n\n if (!response.response) return false;\n\n if (response.responseEdited) return false;\n\n return validation;\n }, [response, userType, validation, worksheetCompleted]);\n\n const showCorrectAnswers = useMemo(() => {\n if (userType === 'TEACHER') return true;\n\n if (review) {\n const { attemptsHistory } = response ?? {};\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n return maximumAttemptsReached && !canExceedAttempts;\n }\n\n return false;\n }, [canExceedAttempts, maximumAttempts, response, review, userType]);\n\n const showSolution = useMemo(\n () => solution && worksheetCompleted && !solutionHidden,\n [solutionHidden, solution, worksheetCompleted],\n );\n\n const [dropZoneDimensions, setDropZoneDimensions] = useState({\n width: 0,\n height: 0,\n });\n\n const onUpdateHeight = useCallback((height: number) => {\n setCanvasHeight(height);\n }, []);\n\n useEffect(() => {\n if (questionRef.current) {\n intersectionObserver.observe(questionRef.current);\n }\n }, [intersectionObserver]);\n\n useEffect(() => {\n if (\n appended &&\n (question.type === 'clozeassociation' ||\n question.type === 'association' ||\n question.type === 'clozeformula')\n ) {\n const draggableElements = document.querySelectorAll(\n `.widget-${question.response_id} .lrn_draggable`,\n );\n\n let minWidth = 0;\n let minHeight = 0;\n\n draggableElements.forEach(draggableElement => {\n minWidth = Math.max(minWidth, draggableElement.clientWidth + 33);\n minHeight = Math.max(minHeight, draggableElement.clientHeight + 1);\n });\n\n setDropZoneDimensions({\n width: question.type !== 'association' ? minWidth : 0,\n height: minHeight,\n });\n }\n }, [appended, question.response_id, question.type]);\n\n useEffect(() => {\n if (appended && validateResponse) {\n const learnosityQuestion = learnosity.question(responseId);\n\n if (learnosityQuestion) {\n learnosityQuestion.validate({\n showCorrectAnswers,\n });\n }\n }\n }, [appended, learnosity, responseId, review, showCorrectAnswers, userType, validateResponse]);\n\n useEffect(() => {\n const $questionEl = pointerContainerRef.current;\n\n if (\n appended &&\n $questionEl &&\n loggerRef.current &&\n overflowDetectedRef.current[responseId] === undefined &&\n !isConceptIntro &&\n !isSystemIntro\n ) {\n const parentWidth = $questionEl.clientWidth;\n const nestedElements = $questionEl.querySelectorAll('*');\n\n for (let i = 0; i < nestedElements.length; i++) {\n const element = nestedElements[i];\n\n if (element?.closest('.resize-sensor')) {\n continue;\n }\n\n const elementWidth = element?.clientWidth ?? 0;\n\n if (elementWidth > parentWidth) {\n overflowDetectedRef.current[responseId] = true;\n loggerRef.current(EVENTS.WORKSHEET_V3_GREATER_WIDTH_ELEMENT, {\n item_reference,\n widget_reference,\n question_type: questionType,\n question_number,\n responseId,\n item_number,\n item_display_number,\n });\n break;\n }\n }\n\n overflowDetectedRef.current[responseId] = false;\n }\n }, [\n appended,\n isConceptIntro,\n isSystemIntro,\n item_display_number,\n item_number,\n item_reference,\n loggerRef,\n questionType,\n question_number,\n responseId,\n widget_reference,\n ]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n const $questionEl = questionRef.current;\n\n const getExtraSpaceNeedForFloatingKeyboard = (questionEl: HTMLDivElement) => {\n const $responseWrapper = questionEl.querySelector('.lrn_response_wrapper');\n\n if (isIntro || !$responseWrapper) {\n return 0;\n }\n\n const questionBottom = questionEl.getBoundingClientRect().bottom;\n const responseWrapperBottom = $responseWrapper.getBoundingClientRect().bottom;\n const spaceFromResponseToBottom = Math.abs(questionBottom - responseWrapperBottom);\n\n if (spaceFromResponseToBottom < LEARNOSITY_KEYBOARD_HEIGHT) {\n return LEARNOSITY_KEYBOARD_HEIGHT - spaceFromResponseToBottom;\n }\n\n return 0;\n };\n\n if (appended && $questionEl) {\n setQuestionHeight(qHeight => {\n const hasFloatingKeyboard = question.ui_style?.type === 'floating-keyboard';\n const v3CodeHidden = teacherValidationEnabled && questionType === 'clozetext';\n const hasKeyboard = hasFloatingKeyboard && !v3CodeHidden;\n const height = $questionEl.clientHeight;\n\n if (height === 0) {\n return qHeight;\n }\n\n // If the question has a floating keyboard, we need to add the height of the keyboard to the question height\n if (!qHeight) {\n return Math.ceil(\n height + (hasKeyboard ? getExtraSpaceNeedForFloatingKeyboard($questionEl) : 0),\n );\n }\n\n const newQuestionHeight = Math.ceil(\n height + (hasKeyboard ? getExtraSpaceNeedForFloatingKeyboard($questionEl) : 0),\n );\n\n if (Math.abs(newQuestionHeight - qHeight) > 4) {\n return newQuestionHeight;\n }\n\n return qHeight;\n });\n }\n\n //Dirty fix to render mathjax\n if (hintsUsed || hasStimulusReview || (solution && worksheetCompleted)) {\n learnosity.renderMath('mathjax');\n }\n });\n\n useLayoutEffect(() => {\n if (!questionsScrollable && !isHidden) {\n scrollToQuestion(responseId);\n }\n }, [isHidden, questionsScrollable, responseId, topOffset]);\n\n useEffect(() => {\n if (\n teacherValidationEnabled &&\n nextQuestionId &&\n !validatedByTeacherOnMount &&\n response?.validatedByTeacher\n ) {\n const timer = setTimeout(() => {\n if (questionsScrollable) {\n scrollToQuestion(nextQuestionId);\n } else {\n setActiveQuestionId(nextQuestionId);\n }\n }, 1000);\n\n return () => {\n clearTimeout(timer);\n };\n }\n }, [\n nextQuestionId,\n teacherValidationEnabled,\n validatedByTeacherOnMount,\n questionsScrollable,\n setActiveQuestionId,\n response?.validatedByTeacher,\n ]);\n\n return (\n <Styled.QuestionContainerWrapper\n data-response-id={responseId}\n className={`widget-${responseId}`}\n ref={questionRef}\n $topOffset={topOffset}\n $flexDirection={stimulus_review ? 'row' : 'column'}\n $alignItems={stimulus_review ? 'flex-start' : 'center'}\n $hidden={isHidden}\n $marginBottom={QUESTIONS_GAP}\n >\n {stimulus_review && (\n <Styled.StimulusReview\n dangerouslySetInnerHTML={{\n __html: stimulus_review,\n }}\n />\n )}\n <Styled.QuestionContainer\n ref={pointerContainerRef}\n $width={stimulus_review ? '50%' : `${maxQuestionWidth}px`}\n $minHeight={\n questionHeight ? Math.max(questionHeight - 72, canvasHeight ?? 0) : minQuestionHeight\n }\n $isActive={isActive}\n $paperColor={paperColor}\n $opacity={isActive ? 1 : 0.2}\n >\n {isActive && !!onPublishMouseMove && !!onSubscribeMouseMove && isCanvasEnabled && (\n <Pointer\n containerRef={pointerContainerRef}\n onPublish={onPublishMouseMove}\n onSubscribe={onSubscribeMouseMove}\n responseId={responseId}\n />\n )}\n <Styled.QuestionWrapper\n className={wrapperClasses}\n $dropzoneMinWidth={dropZoneDimensions.width}\n $dropzoneMinHeight={dropZoneDimensions.height}\n >\n {renderQuestionHeader && !(isLessonOverview || isConceptIntro || isSystemIntro) && (\n <QuestionHeader\n userType={userType}\n question={question}\n response={response}\n behavior={behavior}\n layout={layout}\n paperColor={paperColor}\n onMarkForReview={onMarkForReview}\n actionbarHeight={actionbarHeight}\n canResolveDoubt={canResolveDoubt}\n onResolveDoubt={onResolveDoubt}\n worksheetCompleted={worksheetCompleted}\n />\n )}\n {isLessonOverview && (\n <Styled.LessonOverviewBanner src={IMAGES.LESSON_OVERVIEW_BANNER} />\n )}\n {isConceptIntro && paperColor && <QuestionBackdrop paperColor={paperColor} />}\n {isSystemIntro ? (\n <>\n {item_type === 'practice-basic' && <BasicPracticeIntro />}\n {item_type === 'practice-regular' && <RegularPracticeIntro />}\n {item_type === 'exit-ticket' && <ExitTicketIntro />}\n {item_type?.startsWith('advanced-') && <AdvancedPracticeIntro />}\n </>\n ) : undefined}\n <LearnosityQuestion\n signedRequest={signedRequest}\n appended={appended}\n question={question}\n response={response?.response}\n canRender={canRender || isActive}\n learnosity={learnosity}\n canForceAppend={userType === 'TEACHER'}\n isConceptIntro={isConceptIntro}\n simState={response?.simState}\n onMediaStateChange={onMediaStateChange}\n />\n\n {!isIntro &&\n isCanvasEnabled &&\n onPublishStrokes &&\n onReceiveStrokes &&\n questionHeight !== undefined && (\n <Styled.CueCanvasWrapper $canScribble={isScribblingEnabled}>\n <CueCanvas\n canRender={canRender}\n canScribble={isScribblingEnabled && isActive}\n appended={appended}\n canvasId={responseId}\n width={maxQuestionWidth}\n height={Math.max(questionHeight, canvasHeight ?? 0)}\n onUpdateHeight={onUpdateHeight}\n onPublish={onPublishStrokes}\n onSubscribe={onReceiveStrokes}\n userId={userId}\n initialData={initialStrokesData?.[responseId]}\n userType={userType}\n />\n </Styled.CueCanvasWrapper>\n )}\n {!isIntro && hints && hints.length > 0 && (\n <FlexView\n $background=\"BLUE_1\"\n $gutterX={1}\n $gapX={0.5}\n $borderRadiusX={0}\n $borderColor=\"BLUE_2\"\n >\n {hints.map((hint, index) => (\n <Styled.Hint\n key={hint}\n dangerouslySetInnerHTML={{\n __html: `<span style=\"color: #DA5107; font-weight: 600;\">Hint${\n (hintsAvailable?.length ?? 0) > 1 ? ` ${index + 1}` : ''\n }:</span>&nbsp;${hint}`,\n }}\n />\n ))}\n </FlexView>\n )}\n {showSolution && (\n <FlexView\n $background=\"YELLOW_1\"\n $gutterX={1}\n $gapX={0.875}\n $borderRadiusX={0}\n $borderColor=\"YELLOW_2\"\n >\n <Styled.Solution\n dangerouslySetInnerHTML={{\n __html: `<div style=\"color: #DA5107; font-weight: 600;\">Solution:</div>${solution}`,\n }}\n />\n </FlexView>\n )}\n {!!subjectiveProps && (\n <SubjectiveQuestionReview\n responses={responses}\n response={response}\n nextQuestionId={nextQuestionId}\n responseId={responseId}\n studentId={studentId}\n userType={userType}\n {...subjectiveProps}\n />\n )}\n </Styled.QuestionWrapper>\n </Styled.QuestionContainer>\n </Styled.QuestionContainerWrapper>\n );\n },\n);\n\nexport default WorksheetQuestion;\n"],"names":["WorksheetQuestion","memo","userType","signedRequest","worksheetCompleted","question","response","nextQuestionId","isActive","isHidden","canRender","loggerRef","appended","maxQuestionWidth","behavior","layout","actionbarHeight","learnosity","intersectionObserver","background","onMediaStateChange","onMarkForReview","userId","onPublishStrokes","onReceiveStrokes","isScribblingEnabled","initialStrokesData","isCanvasEnabled","onPublishMouseMove","onSubscribeMouseMove","setActiveQuestionId","canResolveDoubt","onResolveDoubt","studentId","responses","subjectiveProps","paperColor","useMemo","getPaperColorByQuestion","questionHeight","setQuestionHeight","useState","canvasHeight","setCanvasHeight","validation","review","maximumAttempts","canExceedAttempts","teacherValidationEnabled","solutionHidden","minQuestionHeight","topOffset","questionsScrollable","renderQuestionHeader","questionType","responseId","stimulus_review","item_type","instructor_stimulus","hintsAvailable","solution","widget_reference","item_reference","question_number","item_number","item_display_number","hasStimulusReview","isLessonOverview","isConceptIntro","isConceptIntroWidget","isSystemIntro","isIntro","responseEdited","wrapperClasses","classes","overflowDetectedRef","useRef","hintsUsed","validatedByTeacherOnMount","questionRef","pointerContainerRef","hints","validateResponse","showCorrectAnswers","attemptsHistory","showSolution","dropZoneDimensions","setDropZoneDimensions","onUpdateHeight","useCallback","height","useEffect","draggableElements","minWidth","minHeight","draggableElement","learnosityQuestion","$questionEl","parentWidth","nestedElements","i","element","EVENTS","getExtraSpaceNeedForFloatingKeyboard","questionEl","$responseWrapper","questionBottom","responseWrapperBottom","spaceFromResponseToBottom","LEARNOSITY_KEYBOARD_HEIGHT","qHeight","hasKeyboard","_a","newQuestionHeight","useLayoutEffect","scrollToQuestion","timer","jsxs","Styled.QuestionContainerWrapper","QUESTIONS_GAP","jsx","Styled.StimulusReview","Styled.QuestionContainer","Pointer","Styled.QuestionWrapper","QuestionHeader","Styled.LessonOverviewBanner","IMAGES","QuestionBackdrop","Fragment","BasicPracticeIntro","RegularPracticeIntro","ExitTicketIntro","AdvancedPracticeIntro","LearnosityQuestion","Styled.CueCanvasWrapper","CueCanvas","FlexView","hint","index","Styled.Hint","Styled.Solution","SubjectiveQuestionReview"],"mappings":"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"}
1
+ {"version":3,"file":"worksheet-question.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-question/worksheet-question.tsx"],"sourcesContent":["import type { IWorksheetQuestionProps } from './worksheet-question-types';\n\nimport { memo, useCallback, useEffect, useMemo, useRef, useState, type FC } from 'react';\n\nimport { IMAGES } from '../../../../assets/images/images';\nimport CueCanvas from '../../../cue-canvas/cue-canvas';\nimport Pointer from '../../../pointer-sync/pointer';\nimport FlexView from '../../../ui/layout/flex-view';\nimport EVENTS from '../../constants/events';\nimport { LEARNOSITY_KEYBOARD_HEIGHT, QUESTIONS_GAP } from '../constants';\nimport {\n getPaperColorByQuestion,\n isConceptIntroWidget,\n scrollToQuestion,\n} from '../worksheet-helpers';\nimport QuestionHeader from './header/header';\nimport LearnosityQuestion from './learnosity-question';\nimport QuestionBackdrop from './question-backdrop/question-backdrop';\nimport SubjectiveQuestionReview from './subjective-review';\nimport AdvancedPracticeIntro from './system-intros/advanced-practice-intro';\nimport BasicPracticeIntro from './system-intros/basic-practice-intro';\nimport ExitTicketIntro from './system-intros/exit-ticket-intro';\nimport RegularPracticeIntro from './system-intros/regular-practice-intro';\nimport * as Styled from './worksheet-question-styled';\n\nconst WorksheetQuestion: FC<IWorksheetQuestionProps> = memo(\n ({\n userType,\n signedRequest,\n worksheetCompleted,\n question,\n response,\n nextQuestionId,\n isActive,\n isHidden,\n canRender,\n loggerRef,\n appended,\n maxQuestionWidth,\n behavior,\n layout,\n actionbarHeight,\n learnosity,\n intersectionObserver,\n background = 'paper',\n onMediaStateChange,\n onMarkForReview,\n userId,\n onPublishStrokes,\n onReceiveStrokes,\n isScribblingEnabled,\n initialStrokesData,\n isCanvasEnabled,\n onPublishMouseMove,\n onSubscribeMouseMove,\n setActiveQuestionId,\n canResolveDoubt,\n onResolveDoubt,\n studentId,\n responses,\n subjectiveProps,\n }) => {\n const paperColor = useMemo(\n () => (background === 'paper' ? getPaperColorByQuestion(question) : undefined),\n [background, question],\n );\n const [questionHeight, setQuestionHeight] = useState<number | undefined>();\n const [canvasHeight, setCanvasHeight] = useState<number | undefined>();\n const {\n validation,\n review,\n maximumAttempts,\n canExceedAttempts,\n teacherValidationEnabled,\n solutionHidden,\n } = behavior;\n const { minQuestionHeight, topOffset, questionsScrollable, renderQuestionHeader } = layout;\n const {\n type: questionType,\n response_id: responseId,\n stimulus_review,\n item_type,\n instructor_stimulus,\n metadata: { hints: hintsAvailable, solution, widget_reference },\n item_reference,\n question_number,\n item_number,\n item_display_number,\n } = question;\n const hasStimulusReview = !!stimulus_review;\n const isLessonOverview = item_type === 'overview';\n const isConceptIntro = isConceptIntroWidget(instructor_stimulus);\n const isSystemIntro = instructor_stimulus === 'SystemIntro';\n const isIntro = isConceptIntro || isSystemIntro;\n const responseEdited = response?.responseEdited;\n const wrapperClasses = useMemo(() => {\n const classes = [];\n\n if (responseEdited && userType === 'TEACHER') {\n classes.push('attempting');\n }\n\n if (!appended) {\n classes.push('hidden');\n }\n\n if (questionType === 'hotspot') {\n classes.push('correct-answers-hidden');\n }\n\n if (appended && teacherValidationEnabled && questionType === 'clozetext') {\n if (!isConceptIntro || userType === 'STUDENT') {\n classes.push('response-hidden');\n } else {\n classes.push('response-code-hidden');\n }\n }\n\n if (isLessonOverview) {\n classes.push('lesson-overview');\n }\n\n if (isConceptIntro) {\n classes.push('concept-intro');\n }\n\n if (isSystemIntro) {\n classes.push('system-intro');\n }\n\n return classes.join(' ');\n }, [\n appended,\n isConceptIntro,\n isLessonOverview,\n isSystemIntro,\n questionType,\n responseEdited,\n teacherValidationEnabled,\n userType,\n ]);\n const overflowDetectedRef = useRef<Record<string, boolean>>({});\n\n const hintsUsed = response?.hintsUsed ?? 0;\n const [validatedByTeacherOnMount] = useState(response?.validatedByTeacher ?? false);\n\n const questionRef = useRef<HTMLDivElement>(null);\n const pointerContainerRef = useRef<HTMLDivElement>(null);\n const hints = useMemo(() => hintsAvailable?.slice(0, hintsUsed), [hintsAvailable, hintsUsed]);\n const validateResponse = useMemo(() => {\n if (userType === 'TEACHER') return true;\n\n if (worksheetCompleted) return true;\n\n if (!response) return false;\n\n if (!response.response) return false;\n\n if (response.responseEdited) return false;\n\n return validation;\n }, [response, userType, validation, worksheetCompleted]);\n\n const showCorrectAnswers = useMemo(() => {\n if (userType === 'TEACHER') return true;\n\n if (review) {\n const { attemptsHistory } = response ?? {};\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n return maximumAttemptsReached && !canExceedAttempts;\n }\n\n return false;\n }, [canExceedAttempts, maximumAttempts, response, review, userType]);\n\n const showSolution = useMemo(\n () => solution && worksheetCompleted && !solutionHidden,\n [solutionHidden, solution, worksheetCompleted],\n );\n\n const [dropZoneDimensions, setDropZoneDimensions] = useState({\n width: 0,\n height: 0,\n });\n\n const onUpdateHeight = useCallback((height: number) => {\n setCanvasHeight(height);\n }, []);\n\n useEffect(() => {\n if (questionRef.current) {\n intersectionObserver.observe(questionRef.current);\n }\n }, [intersectionObserver]);\n\n useEffect(() => {\n if (\n appended &&\n (question.type === 'clozeassociation' ||\n question.type === 'association' ||\n question.type === 'clozeformula')\n ) {\n const draggableElements = document.querySelectorAll(\n `.widget-${question.response_id} .lrn_draggable`,\n );\n\n let minWidth = 0;\n let minHeight = 0;\n\n draggableElements.forEach(draggableElement => {\n minWidth = Math.max(minWidth, draggableElement.clientWidth + 33);\n minHeight = Math.max(minHeight, draggableElement.clientHeight + 1);\n });\n\n setDropZoneDimensions({\n width: question.type !== 'association' ? minWidth : 0,\n height: minHeight,\n });\n }\n }, [appended, question.response_id, question.type]);\n\n useEffect(() => {\n if (appended && validateResponse) {\n const learnosityQuestion = learnosity.question(responseId);\n\n if (learnosityQuestion) {\n learnosityQuestion.validate({\n showCorrectAnswers,\n });\n }\n }\n }, [appended, learnosity, responseId, review, showCorrectAnswers, userType, validateResponse]);\n\n useEffect(() => {\n const $questionEl = pointerContainerRef.current;\n\n if (\n appended &&\n $questionEl &&\n loggerRef.current &&\n overflowDetectedRef.current[responseId] === undefined &&\n !isConceptIntro &&\n !isSystemIntro\n ) {\n const parentWidth = $questionEl.clientWidth;\n const nestedElements = $questionEl.querySelectorAll('*');\n\n for (let i = 0; i < nestedElements.length; i++) {\n const element = nestedElements[i];\n\n if (element?.closest('.resize-sensor')) {\n continue;\n }\n\n const elementWidth = element?.clientWidth ?? 0;\n\n if (elementWidth > parentWidth) {\n overflowDetectedRef.current[responseId] = true;\n loggerRef.current(EVENTS.WORKSHEET_V3_GREATER_WIDTH_ELEMENT, {\n item_reference,\n widget_reference,\n question_type: questionType,\n question_number,\n responseId,\n item_number,\n item_display_number,\n });\n break;\n }\n }\n\n overflowDetectedRef.current[responseId] = false;\n }\n }, [\n appended,\n isConceptIntro,\n isSystemIntro,\n item_display_number,\n item_number,\n item_reference,\n loggerRef,\n questionType,\n question_number,\n responseId,\n widget_reference,\n ]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n useEffect(() => {\n const $questionEl = questionRef.current;\n\n const getExtraSpaceNeedForFloatingKeyboard = (questionEl: HTMLDivElement) => {\n const $responseWrapper = questionEl.querySelector('.lrn_response_wrapper');\n\n if (isIntro || !$responseWrapper) {\n return 0;\n }\n\n const questionBottom = questionEl.getBoundingClientRect().bottom;\n const responseWrapperBottom = $responseWrapper.getBoundingClientRect().bottom;\n const spaceFromResponseToBottom = Math.abs(questionBottom - responseWrapperBottom);\n\n if (spaceFromResponseToBottom < LEARNOSITY_KEYBOARD_HEIGHT) {\n return LEARNOSITY_KEYBOARD_HEIGHT - spaceFromResponseToBottom;\n }\n\n return 0;\n };\n\n if (appended && $questionEl) {\n setQuestionHeight(qHeight => {\n const hasFloatingKeyboard = question.ui_style?.type === 'floating-keyboard';\n const v3CodeHidden = teacherValidationEnabled && questionType === 'clozetext';\n const hasKeyboard = hasFloatingKeyboard && !v3CodeHidden;\n const height = $questionEl.clientHeight;\n\n if (height === 0) {\n return qHeight;\n }\n\n // If the question has a floating keyboard, we need to add the height of the keyboard to the question height\n if (!qHeight) {\n return Math.ceil(\n height + (hasKeyboard ? getExtraSpaceNeedForFloatingKeyboard($questionEl) : 0),\n );\n }\n\n const newQuestionHeight = Math.ceil(\n height + (hasKeyboard ? getExtraSpaceNeedForFloatingKeyboard($questionEl) : 0),\n );\n\n if (Math.abs(newQuestionHeight - qHeight) > 4) {\n return newQuestionHeight;\n }\n\n return qHeight;\n });\n }\n\n //Dirty fix to render mathjax\n if (hintsUsed || hasStimulusReview || (solution && worksheetCompleted)) {\n learnosity.renderMath('mathjax');\n }\n });\n\n useEffect(() => {\n if (!questionsScrollable && !isHidden) {\n scrollToQuestion(responseId);\n }\n }, [isHidden, questionsScrollable, responseId, topOffset]);\n\n useEffect(() => {\n if (\n teacherValidationEnabled &&\n nextQuestionId &&\n !validatedByTeacherOnMount &&\n response?.validatedByTeacher\n ) {\n const timer = setTimeout(() => {\n if (questionsScrollable) {\n scrollToQuestion(nextQuestionId);\n } else {\n setActiveQuestionId(nextQuestionId);\n }\n }, 1000);\n\n return () => {\n clearTimeout(timer);\n };\n }\n }, [\n nextQuestionId,\n teacherValidationEnabled,\n validatedByTeacherOnMount,\n questionsScrollable,\n setActiveQuestionId,\n response?.validatedByTeacher,\n ]);\n\n return (\n <Styled.QuestionContainerWrapper\n data-response-id={responseId}\n className={`widget-${responseId}`}\n ref={questionRef}\n $topOffset={topOffset}\n $flexDirection={stimulus_review ? 'row' : 'column'}\n $alignItems={stimulus_review ? 'flex-start' : 'center'}\n $hidden={isHidden}\n $marginBottom={QUESTIONS_GAP}\n >\n {stimulus_review && (\n <Styled.StimulusReview\n dangerouslySetInnerHTML={{\n __html: stimulus_review,\n }}\n />\n )}\n <Styled.QuestionContainer\n ref={pointerContainerRef}\n $width={stimulus_review ? '50%' : `${maxQuestionWidth}px`}\n $minHeight={\n questionHeight ? Math.max(questionHeight - 72, canvasHeight ?? 0) : minQuestionHeight\n }\n $isActive={isActive}\n $paperColor={paperColor}\n $opacity={isActive ? 1 : 0.2}\n >\n {isActive && !!onPublishMouseMove && !!onSubscribeMouseMove && isCanvasEnabled && (\n <Pointer\n containerRef={pointerContainerRef}\n onPublish={onPublishMouseMove}\n onSubscribe={onSubscribeMouseMove}\n responseId={responseId}\n />\n )}\n <Styled.QuestionWrapper\n className={wrapperClasses}\n $dropzoneMinWidth={dropZoneDimensions.width}\n $dropzoneMinHeight={dropZoneDimensions.height}\n >\n {renderQuestionHeader && !(isLessonOverview || isConceptIntro || isSystemIntro) && (\n <QuestionHeader\n userType={userType}\n question={question}\n response={response}\n behavior={behavior}\n layout={layout}\n paperColor={paperColor}\n onMarkForReview={onMarkForReview}\n actionbarHeight={actionbarHeight}\n canResolveDoubt={canResolveDoubt}\n onResolveDoubt={onResolveDoubt}\n worksheetCompleted={worksheetCompleted}\n />\n )}\n {isLessonOverview && (\n <Styled.LessonOverviewBanner src={IMAGES.LESSON_OVERVIEW_BANNER} />\n )}\n {isConceptIntro && paperColor && <QuestionBackdrop paperColor={paperColor} />}\n {isSystemIntro ? (\n <>\n {item_type === 'practice-basic' && <BasicPracticeIntro />}\n {item_type === 'practice-regular' && <RegularPracticeIntro />}\n {item_type === 'exit-ticket' && <ExitTicketIntro />}\n {item_type?.startsWith('advanced-') && <AdvancedPracticeIntro />}\n </>\n ) : undefined}\n <LearnosityQuestion\n signedRequest={signedRequest}\n appended={appended}\n question={question}\n response={response?.response}\n canRender={canRender || isActive}\n learnosity={learnosity}\n canForceAppend={userType === 'TEACHER'}\n isConceptIntro={isConceptIntro}\n simState={response?.simState}\n onMediaStateChange={onMediaStateChange}\n />\n\n {!isIntro &&\n isCanvasEnabled &&\n onPublishStrokes &&\n onReceiveStrokes &&\n questionHeight !== undefined && (\n <Styled.CueCanvasWrapper $canScribble={isScribblingEnabled}>\n <CueCanvas\n canRender={canRender}\n canScribble={isScribblingEnabled && isActive}\n appended={appended}\n canvasId={responseId}\n width={maxQuestionWidth}\n height={Math.max(questionHeight, canvasHeight ?? 0)}\n onUpdateHeight={onUpdateHeight}\n onPublish={onPublishStrokes}\n onSubscribe={onReceiveStrokes}\n userId={userId}\n initialData={initialStrokesData?.[responseId]}\n userType={userType}\n />\n </Styled.CueCanvasWrapper>\n )}\n {!isIntro && hints && hints.length > 0 && (\n <FlexView\n $background=\"BLUE_1\"\n $gutterX={1}\n $gapX={0.5}\n $borderRadiusX={0}\n $borderColor=\"BLUE_2\"\n >\n {hints.map((hint, index) => (\n <Styled.Hint\n key={hint}\n dangerouslySetInnerHTML={{\n __html: `<span style=\"color: #DA5107; font-weight: 600;\">Hint${\n (hintsAvailable?.length ?? 0) > 1 ? ` ${index + 1}` : ''\n }:</span>&nbsp;${hint}`,\n }}\n />\n ))}\n </FlexView>\n )}\n {showSolution && (\n <FlexView\n $background=\"YELLOW_1\"\n $gutterX={1}\n $gapX={0.875}\n $borderRadiusX={0}\n $borderColor=\"YELLOW_2\"\n >\n <Styled.Solution\n dangerouslySetInnerHTML={{\n __html: `<div style=\"color: #DA5107; font-weight: 600;\">Solution:</div>${solution}`,\n }}\n />\n </FlexView>\n )}\n {!!subjectiveProps && (\n <SubjectiveQuestionReview\n responses={responses}\n response={response}\n nextQuestionId={nextQuestionId}\n responseId={responseId}\n studentId={studentId}\n userType={userType}\n {...subjectiveProps}\n />\n )}\n </Styled.QuestionWrapper>\n </Styled.QuestionContainer>\n </Styled.QuestionContainerWrapper>\n );\n },\n);\n\nexport default WorksheetQuestion;\n"],"names":["WorksheetQuestion","memo","userType","signedRequest","worksheetCompleted","question","response","nextQuestionId","isActive","isHidden","canRender","loggerRef","appended","maxQuestionWidth","behavior","layout","actionbarHeight","learnosity","intersectionObserver","background","onMediaStateChange","onMarkForReview","userId","onPublishStrokes","onReceiveStrokes","isScribblingEnabled","initialStrokesData","isCanvasEnabled","onPublishMouseMove","onSubscribeMouseMove","setActiveQuestionId","canResolveDoubt","onResolveDoubt","studentId","responses","subjectiveProps","paperColor","useMemo","getPaperColorByQuestion","questionHeight","setQuestionHeight","useState","canvasHeight","setCanvasHeight","validation","review","maximumAttempts","canExceedAttempts","teacherValidationEnabled","solutionHidden","minQuestionHeight","topOffset","questionsScrollable","renderQuestionHeader","questionType","responseId","stimulus_review","item_type","instructor_stimulus","hintsAvailable","solution","widget_reference","item_reference","question_number","item_number","item_display_number","hasStimulusReview","isLessonOverview","isConceptIntro","isConceptIntroWidget","isSystemIntro","isIntro","responseEdited","wrapperClasses","classes","overflowDetectedRef","useRef","hintsUsed","validatedByTeacherOnMount","questionRef","pointerContainerRef","hints","validateResponse","showCorrectAnswers","attemptsHistory","showSolution","dropZoneDimensions","setDropZoneDimensions","onUpdateHeight","useCallback","height","useEffect","draggableElements","minWidth","minHeight","draggableElement","learnosityQuestion","$questionEl","parentWidth","nestedElements","i","element","EVENTS","getExtraSpaceNeedForFloatingKeyboard","questionEl","$responseWrapper","questionBottom","responseWrapperBottom","spaceFromResponseToBottom","LEARNOSITY_KEYBOARD_HEIGHT","qHeight","hasKeyboard","_a","newQuestionHeight","scrollToQuestion","timer","jsxs","Styled.QuestionContainerWrapper","QUESTIONS_GAP","jsx","Styled.StimulusReview","Styled.QuestionContainer","Pointer","Styled.QuestionWrapper","QuestionHeader","Styled.LessonOverviewBanner","IMAGES","QuestionBackdrop","Fragment","BasicPracticeIntro","RegularPracticeIntro","ExitTicketIntro","AdvancedPracticeIntro","LearnosityQuestion","Styled.CueCanvasWrapper","CueCanvas","FlexView","hint","index","Styled.Hint","Styled.Solution","SubjectiveQuestionReview"],"mappings":"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"}
@@ -1,40 +1,40 @@
1
1
  import { jsxs as R, Fragment as ut, jsx as o } from "react/jsx-runtime";
2
2
  import { captureMessage as Y } from "@sentry/browser";
3
- import { memo as mt, forwardRef as ft, useMemo as Z, useState as v, useCallback as y, useEffect as b, useLayoutEffect as pt } from "react";
4
- import ht from "../../../assets/line-icons/icons/check2.js";
5
- import gt from "../../../assets/line-icons/icons/info2.js";
6
- import bt from "../../../helpers/get-device-details.js";
7
- import It from "../../sheet-tools/desmos-calculator/desmos-calculator.js";
3
+ import { memo as mt, forwardRef as ft, useMemo as Z, useState as v, useCallback as T, useEffect as h } from "react";
4
+ import pt from "../../../assets/line-icons/icons/check2.js";
5
+ import ht from "../../../assets/line-icons/icons/info2.js";
6
+ import gt from "../../../helpers/get-device-details.js";
7
+ import bt from "../../sheet-tools/desmos-calculator/desmos-calculator.js";
8
8
  import me from "../../ui/layout/flex-view.js";
9
- import St from "../../ui/text/text.js";
10
- import Ct from "../constants/events.js";
11
- import vt from "../user-pointer-pin/user-pin.js";
12
- import { WORKSHEET_NUDGE_BANNER_HEIGHT as fe, TOP_NAVIGATION_HEIGHT as yt, DESMOS_CALC_POSITION as Tt } from "./constants.js";
13
- import $t from "./hooks/use-create-imperative-handle.js";
14
- import _t from "./hooks/use-get-active-question-id.js";
15
- import Et from "./hooks/use-time-on-questions.js";
16
- import kt from "./question-tips.js";
17
- import wt from "./worksheet-action-bar/worksheet-action-bar.js";
18
- import Nt from "./worksheet-blocker/worksheet-blocker.js";
19
- import { getWorksheetDimensions as At, getQuestionsFromItems as Bt, getInitialResponses as Wt, getLastUnlockedQuestionIndex as pe, getInitialQuestionId as Ot, getQuestionMetadata as he, scrollToQuestion as Q, getRenderableQuestions as Rt, getWorksheetNudgeBannerInfo as Dt } from "./worksheet-helpers.js";
20
- import Vt from "./worksheet-navigation/worksheet-navigation.js";
21
- import Ht from "./worksheet-question/worksheet-question.js";
22
- import Mt from "./worksheet-sidebar/navigator.js";
23
- import xt from "./worksheet-sidebar/sidebar.js";
24
- import { NudgeBannerWrapper as qt, NudgeBannerIcon as ge, WorksheetContainer as Pt, NavigationContainer as Qt, NavigationWrapper as Gt, BlockerWrapper as Lt, DesmosCalcWrapper as Ft, ActionbarContainer as jt, ActionbarWrapper as Ut, StudentWorksheetSideBar as Kt, QuestionsWrapper as Xt } from "./worksheet-styled.js";
25
- import zt from "./worksheet-summary/worksheet-summary.js";
26
- const Jt = (be, Ie) => {
9
+ import It from "../../ui/text/text.js";
10
+ import St from "../constants/events.js";
11
+ import Ct from "../user-pointer-pin/user-pin.js";
12
+ import { WORKSHEET_NUDGE_BANNER_HEIGHT as fe, TOP_NAVIGATION_HEIGHT as vt, DESMOS_CALC_POSITION as Tt } from "./constants.js";
13
+ import yt from "./hooks/use-create-imperative-handle.js";
14
+ import $t from "./hooks/use-get-active-question-id.js";
15
+ import _t from "./hooks/use-time-on-questions.js";
16
+ import Et from "./question-tips.js";
17
+ import kt from "./worksheet-action-bar/worksheet-action-bar.js";
18
+ import wt from "./worksheet-blocker/worksheet-blocker.js";
19
+ import { getWorksheetDimensions as Nt, getQuestionsFromItems as At, getInitialResponses as Bt, getLastUnlockedQuestionIndex as pe, getInitialQuestionId as Wt, getQuestionMetadata as he, scrollToQuestion as Q, getRenderableQuestions as Ot, getWorksheetNudgeBannerInfo as Rt } from "./worksheet-helpers.js";
20
+ import Dt from "./worksheet-navigation/worksheet-navigation.js";
21
+ import Vt from "./worksheet-question/worksheet-question.js";
22
+ import Ht from "./worksheet-sidebar/navigator.js";
23
+ import Mt from "./worksheet-sidebar/sidebar.js";
24
+ import { NudgeBannerWrapper as xt, NudgeBannerIcon as ge, WorksheetContainer as qt, NavigationContainer as Pt, NavigationWrapper as Qt, BlockerWrapper as Gt, DesmosCalcWrapper as Lt, ActionbarContainer as Ft, ActionbarWrapper as jt, StudentWorksheetSideBar as Ut, QuestionsWrapper as Kt } from "./worksheet-styled.js";
25
+ import Xt from "./worksheet-summary/worksheet-summary.js";
26
+ const zt = (be, Ie) => {
27
27
  const {
28
28
  userType: s,
29
29
  studentName: Se = "Student",
30
30
  questionsSignedRequest: Ce,
31
31
  worksheetName: ee,
32
32
  initialResponseId: ve,
33
- initialItemIndex: ye,
33
+ initialItemIndex: Te,
34
34
  learnosityActivityRef: E,
35
35
  learnosityItems: k,
36
- learnosityResponses: Te,
37
- layout: T,
36
+ learnosityResponses: ye,
37
+ layout: y,
38
38
  background: $e,
39
39
  behavior: a,
40
40
  updatedResponses: G,
@@ -86,17 +86,17 @@ const Jt = (be, Ie) => {
86
86
  renderSideBar: et,
87
87
  showUserPointer: tt = !0,
88
88
  imageHue: se
89
- } = T, { actionbarHeight: C, maxQuestionWidth: K, questionsContainerWidth: X } = Z(
90
- () => At(k, T),
91
- [T, k]
89
+ } = y, { actionbarHeight: C, maxQuestionWidth: K, questionsContainerWidth: X } = Z(
90
+ () => Nt(k, y),
91
+ [y, k]
92
92
  ), [t] = v(
93
- () => Bt(k, {
93
+ () => At(k, {
94
94
  sectioned: U && p !== "ADAPTIVE" && p !== "CURRENT",
95
95
  adaptive: p === "ADAPTIVE"
96
96
  })
97
97
  ), [c, N] = v(
98
- () => Te ?? Wt(t)
99
- ), [ae, it] = v(!1), h = Z(
98
+ () => ye ?? Bt(t)
99
+ ), [ae, it] = v(!1), g = Z(
100
100
  () => p !== "OPEN" ? pe({
101
101
  questions: t,
102
102
  responses: c,
@@ -104,8 +104,8 @@ const Jt = (be, Ie) => {
104
104
  userType: s
105
105
  }) : t.length - 1,
106
106
  [a, p, t, c, s]
107
- ), l = t[h], r = c[(l == null ? void 0 : l.response_id) ?? ""], { bannerBackgroundColor: nt, label: ot } = Dt(s, !!te), [A] = v(
108
- () => Ot({
107
+ ), l = t[g], r = c[(l == null ? void 0 : l.response_id) ?? ""], { bannerBackgroundColor: nt, label: ot } = Rt(s, !!te), [A] = v(
108
+ () => Wt({
109
109
  questions: t,
110
110
  initialQuestion: ze,
111
111
  lastUnlockedQuestionIndex: pe({
@@ -115,12 +115,12 @@ const Jt = (be, Ie) => {
115
115
  userType: s
116
116
  }),
117
117
  initialResponseId: ve,
118
- initialItemIndex: ye
118
+ initialItemIndex: Te
119
119
  })
120
- ), { activeQuestionId: B, setActiveQuestionId: q, intersectionObserver: z } = _t(A), f = Z(
120
+ ), { activeQuestionId: B, setActiveQuestionId: q, intersectionObserver: z } = $t(A), f = Z(
121
121
  () => t.findIndex((e) => e.response_id === B),
122
122
  [B, t]
123
- ), [g, J] = v(!1), [ce, W] = v(), [le, de] = v(!1), ue = Et(a, c, B), rt = y(
123
+ ), [b, J] = v(!1), [ce, W] = v(), [le, de] = v(!1), ue = _t(a, c, B), rt = T(
124
124
  (e, i, n) => {
125
125
  const d = i === "SIMULATION" ? "simState" : void 0;
126
126
  d && (I ? N((u) => {
@@ -143,7 +143,7 @@ const Jt = (be, Ie) => {
143
143
  }) : F && F(e, i, n));
144
144
  },
145
145
  [F, I, t]
146
- ), st = y(
146
+ ), st = T(
147
147
  (e, i) => {
148
148
  N((n) => {
149
149
  const d = he(t, e);
@@ -158,52 +158,52 @@ const Jt = (be, Ie) => {
158
158
  });
159
159
  },
160
160
  [t]
161
- ), O = y(() => {
161
+ ), O = T(() => {
162
162
  W((e) => {
163
163
  var i;
164
164
  if (e) {
165
- const n = (i = t[h]) == null ? void 0 : i.response_id;
165
+ const n = (i = t[g]) == null ? void 0 : i.response_id;
166
166
  n && setTimeout(() => {
167
167
  Q(n);
168
168
  }, 50);
169
169
  }
170
170
  });
171
- }, [h, t]), P = y(
171
+ }, [g, t]), P = T(
172
172
  (e) => {
173
173
  J(!1), M ? requestAnimationFrame(() => Q(e)) : q(e);
174
174
  },
175
175
  [M, q]
176
- ), at = y(() => {
176
+ ), at = T(() => {
177
177
  de(!1);
178
- }, []), ct = y(() => {
178
+ }, []), ct = T(() => {
179
179
  de(!0);
180
- }, []), lt = y(() => {
180
+ }, []), lt = T(() => {
181
181
  J(!0);
182
182
  }, []);
183
- return b(() => {
183
+ return h(() => {
184
184
  const e = t[f];
185
185
  e && j && j(e);
186
- }, [j, t, f]), $t(Ie, {
186
+ }, [j, t, f]), yt(Ie, {
187
187
  behavior: a,
188
188
  questions: t,
189
189
  setResponses: N,
190
190
  onResponseChange: I,
191
191
  onBulkResponsesChange: Ee,
192
192
  getTimeSpentOnQuestion: ue
193
- }), b(() => () => {
193
+ }), h(() => () => {
194
194
  z.disconnect();
195
- }, [z]), b(() => {
195
+ }, [z]), h(() => {
196
196
  L && c && L(c);
197
- }, [L, c]), b(() => {
197
+ }, [L, c]), h(() => {
198
198
  G && N(G);
199
- }, [G]), pt(() => {
199
+ }, [G]), h(() => {
200
200
  let e;
201
- return S && A && (bt().browser_name === "Safari" ? e = setTimeout(() => {
201
+ return S && A && (gt().browser_name === "Safari" ? e = setTimeout(() => {
202
202
  Q(A);
203
203
  }, 400) : Q(A)), () => {
204
204
  clearTimeout(e);
205
205
  };
206
- }, [S, A, x]), b(() => {
206
+ }, [S, A, x]), h(() => {
207
207
  if (a.teacherValidationEnabled && l) {
208
208
  const { item_type: e, instructor_stimulus: i, is_optional: n } = l;
209
209
  s === "TEACHER" && (e === "exit-ticket" && i !== "SystemIntro" ? r != null && r.submittedByStudent && !(r != null && r.validatedByTeacher) ? W("exit-ticket-review-available") : r != null && r.validatedByTeacher ? O() : W("exit-ticket-teacher-intervention") : n ? r != null && r.assignStatus ? O() : W("optional-items-assignment") : n || O());
@@ -214,7 +214,7 @@ const Jt = (be, Ie) => {
214
214
  l,
215
215
  r,
216
216
  s
217
- ]), b(() => {
217
+ ]), h(() => {
218
218
  if (a.teacherValidationEnabled && l) {
219
219
  const { item_type: e, instructor_stimulus: i } = l;
220
220
  s === "STUDENT" && e === "exit-ticket" && i !== "SystemIntro" && (r != null && r.submittedByStudent ? V == null || V() : D == null || D());
@@ -226,7 +226,7 @@ const Jt = (be, Ie) => {
226
226
  D,
227
227
  V,
228
228
  s
229
- ]), b(() => {
229
+ ]), h(() => {
230
230
  p === "CURRENT" && k.forEach(({ reference: e, questions: i }) => {
231
231
  var n, d, u;
232
232
  i.length < 3 ? Y(`Diagnostics item has Less than 3 questions: ${e}`, {
@@ -250,7 +250,7 @@ const Jt = (be, Ie) => {
250
250
  }
251
251
  );
252
252
  });
253
- }, [E, k, p]), b(() => {
253
+ }, [E, k, p]), h(() => {
254
254
  t.forEach((e) => {
255
255
  const { validation: i, item_reference: n, type: d, question_number: u, metadata: m } = e;
256
256
  if ((U ? d !== "clozetext" : !0) && (i != null && i.valid_response)) {
@@ -265,7 +265,7 @@ const Jt = (be, Ie) => {
265
265
  },
266
266
  fingerprint: [`no-valid-response-${m.widget_reference}`]
267
267
  // Add unique fingerprint
268
- }), w.current(Ct.WORKSHEET_V3_QUESTION_MISSING_VALIDATION, {
268
+ }), w.current(St.WORKSHEET_V3_QUESTION_MISSING_VALIDATION, {
269
269
  item_reference: n,
270
270
  widget_reference: m.widget_reference,
271
271
  question_type: d,
@@ -275,7 +275,7 @@ const Jt = (be, Ie) => {
275
275
  });
276
276
  }, [E, w, t, U]), S ? /* @__PURE__ */ R(ut, { children: [
277
277
  _e && /* @__PURE__ */ R(
278
- qt,
278
+ xt,
279
279
  {
280
280
  $flexDirection: "row",
281
281
  $justifyContent: "center",
@@ -287,35 +287,35 @@ const Jt = (be, Ie) => {
287
287
  $gutter: 8,
288
288
  $flexGap: 8,
289
289
  $background: nt,
290
- $topOffset: T.topOffset - fe,
290
+ $topOffset: y.topOffset - fe,
291
291
  children: [
292
- te ? /* @__PURE__ */ o(ge, { children: /* @__PURE__ */ o(ht, { width: 16, height: 16 }) }) : /* @__PURE__ */ o(ge, { children: /* @__PURE__ */ o(gt, { width: 16, height: 16 }) }),
293
- /* @__PURE__ */ o(St, { $renderAs: "ub3", children: ot })
292
+ te ? /* @__PURE__ */ o(ge, { children: /* @__PURE__ */ o(pt, { width: 16, height: 16 }) }) : /* @__PURE__ */ o(ge, { children: /* @__PURE__ */ o(ht, { width: 16, height: 16 }) }),
293
+ /* @__PURE__ */ o(It, { $renderAs: "ub3", children: ot })
294
294
  ]
295
295
  }
296
296
  ),
297
297
  /* @__PURE__ */ R(
298
- Pt,
298
+ qt,
299
299
  {
300
300
  $background: se ? `${se}_1` : "WHITE",
301
301
  $width: Je,
302
302
  children: [
303
- Ze === "top" && /* @__PURE__ */ o(Qt, { $topOffset: x, $height: yt, children: /* @__PURE__ */ o(Gt, { children: /* @__PURE__ */ o(
304
- Vt,
303
+ Ze === "top" && /* @__PURE__ */ o(Pt, { $topOffset: x, $height: vt, children: /* @__PURE__ */ o(Qt, { children: /* @__PURE__ */ o(
304
+ Dt,
305
305
  {
306
306
  placement: "top",
307
307
  questions: t,
308
308
  responses: c,
309
309
  activeQuestionIndex: f,
310
- lastUnlockedQuestionIndex: h,
310
+ lastUnlockedQuestionIndex: g,
311
311
  behavior: a,
312
312
  onItemNumberClick: P,
313
313
  userType: s,
314
- summaryVisible: g
314
+ summaryVisible: b
315
315
  }
316
316
  ) }) }),
317
- ce && l && /* @__PURE__ */ o(Lt, { $minHeight: re, $topOffset: x, children: /* @__PURE__ */ o(me, { $width: K, $justifyContent: "center", $alignItems: "center", children: /* @__PURE__ */ o(
318
- Nt,
317
+ ce && l && /* @__PURE__ */ o(Gt, { $minHeight: re, $topOffset: x, children: /* @__PURE__ */ o(me, { $width: K, $justifyContent: "center", $alignItems: "center", children: /* @__PURE__ */ o(
318
+ wt,
319
319
  {
320
320
  blocker: ce,
321
321
  lastUnlockedQuestion: l,
@@ -327,7 +327,7 @@ const Jt = (be, Ie) => {
327
327
  }
328
328
  ) }) }),
329
329
  tt && /* @__PURE__ */ o(
330
- vt,
330
+ Ct,
331
331
  {
332
332
  activeQuestionIndex: f,
333
333
  onClick: P,
@@ -337,16 +337,16 @@ const Jt = (be, Ie) => {
337
337
  userType: s
338
338
  }
339
339
  ),
340
- le && /* @__PURE__ */ o(Ft, { children: /* @__PURE__ */ o(It, { initialPosition: Tt, onClose: at }) }),
340
+ le && /* @__PURE__ */ o(Lt, { children: /* @__PURE__ */ o(bt, { initialPosition: Tt, onClose: at }) }),
341
341
  /* @__PURE__ */ R(
342
- jt,
342
+ Ft,
343
343
  {
344
- $marginTop: s === "TEACHER" && g ? "0" : C,
344
+ $marginTop: s === "TEACHER" && b ? "0" : C,
345
345
  $height: C,
346
346
  $isCardView: H === "card",
347
347
  children: [
348
348
  /* @__PURE__ */ o(
349
- kt,
349
+ Et,
350
350
  {
351
351
  width: X - 32,
352
352
  question: t[f],
@@ -355,7 +355,7 @@ const Jt = (be, Ie) => {
355
355
  }
356
356
  ),
357
357
  Xe && /* @__PURE__ */ o(
358
- Ut,
358
+ jt,
359
359
  {
360
360
  $height: C,
361
361
  $width: H === "card" ? X - 32 : "100%",
@@ -369,23 +369,23 @@ const Jt = (be, Ie) => {
369
369
  $alignItems: "center",
370
370
  $width: X - 32,
371
371
  children: /* @__PURE__ */ o(
372
- wt,
372
+ kt,
373
373
  {
374
374
  userType: s,
375
- layout: T,
375
+ layout: y,
376
376
  behavior: a,
377
377
  worksheetName: ee,
378
378
  questions: t,
379
379
  responses: c,
380
380
  onCalculatorOpen: ct,
381
381
  activeQuestionIndex: f,
382
- lastUnlockedQuestionIndex: h,
382
+ lastUnlockedQuestionIndex: g,
383
383
  appendedQuestionIds: ne,
384
384
  learnosity: S,
385
385
  isCanvasEnabled: oe,
386
386
  canSubmitWorksheet: qe,
387
387
  isScribblingEnabled: ae,
388
- isSummaryVisible: g,
388
+ isSummaryVisible: b,
389
389
  setResponses: N,
390
390
  getTimeSpentOnQuestion: ue,
391
391
  setSummaryVisible: J,
@@ -410,38 +410,38 @@ const Jt = (be, Ie) => {
410
410
  )
411
411
  }
412
412
  ),
413
- !g && M && s === "STUDENT" && /* @__PURE__ */ o(Kt, { children: /* @__PURE__ */ o(Mt, {}) })
413
+ !b && M && s === "STUDENT" && /* @__PURE__ */ o(Ut, { children: /* @__PURE__ */ o(Ht, {}) })
414
414
  ]
415
415
  }
416
416
  ),
417
417
  /* @__PURE__ */ R(
418
- Xt,
418
+ Kt,
419
419
  {
420
420
  $actionbarHeight: C,
421
421
  $isCardView: H === "card",
422
422
  children: [
423
- Rt({ questions: t, lastUnlockedQuestionIndex: h, userType: s }).map(
423
+ Ot({ questions: t, lastUnlockedQuestionIndex: g, userType: s }).map(
424
424
  (e, i) => {
425
425
  var m, $;
426
426
  const { response_id: n, is_optional: d } = e, u = (m = c[n]) == null ? void 0 : m.assignStatus;
427
427
  return a.teacherValidationEnabled && (u === "skipped" || d && u !== "assigned" && s === "STUDENT") ? null : /* @__PURE__ */ o(
428
- Ht,
428
+ Vt,
429
429
  {
430
430
  signedRequest: Ce,
431
431
  userType: s,
432
432
  worksheetCompleted: Ae,
433
433
  question: e,
434
434
  response: c[n],
435
- nextQuestionId: p === "ADAPTIVE" || p === "CURRENT" ? l == null ? void 0 : l.response_id : i < h ? ($ = t[i + 1]) == null ? void 0 : $.response_id : void 0,
435
+ nextQuestionId: p === "ADAPTIVE" || p === "CURRENT" ? l == null ? void 0 : l.response_id : i < g ? ($ = t[i + 1]) == null ? void 0 : $.response_id : void 0,
436
436
  maxQuestionWidth: K,
437
437
  learnosity: S,
438
438
  isActive: n === B,
439
- isHidden: !M && n !== B || g,
439
+ isHidden: !M && n !== B || b,
440
440
  canRender: f > -1 && (i === f || p !== "CURRENT" && i === f + 1),
441
441
  background: $e,
442
442
  appended: ne.includes(n),
443
443
  behavior: a,
444
- layout: T,
444
+ layout: y,
445
445
  actionbarHeight: C,
446
446
  intersectionObserver: z,
447
447
  onMarkForReview: st,
@@ -466,26 +466,26 @@ const Jt = (be, Ie) => {
466
466
  );
467
467
  }
468
468
  ),
469
- g && /* @__PURE__ */ o(
470
- zt,
469
+ b && /* @__PURE__ */ o(
470
+ Xt,
471
471
  {
472
472
  worksheetName: ee,
473
473
  questions: t,
474
474
  responses: c,
475
475
  activeQuestionIndex: f,
476
- lastUnlockedQuestionIndex: h,
476
+ lastUnlockedQuestionIndex: g,
477
477
  onItemNumberClick: P,
478
478
  behavior: a,
479
479
  minHeight: Ye,
480
480
  summaryDescription: xe,
481
- summaryVisible: g
481
+ summaryVisible: b
482
482
  }
483
483
  )
484
484
  ]
485
485
  }
486
486
  ),
487
- !g && et && /* @__PURE__ */ o(
488
- xt,
487
+ !b && et && /* @__PURE__ */ o(
488
+ Mt,
489
489
  {
490
490
  questionWidth: K,
491
491
  questions: t,
@@ -502,8 +502,8 @@ const Jt = (be, Ie) => {
502
502
  }
503
503
  )
504
504
  ] }) : null;
505
- }, _i = mt(ft(Jt));
505
+ }, $i = mt(ft(zt));
506
506
  export {
507
- _i as default
507
+ $i as default
508
508
  };
509
509
  //# sourceMappingURL=worksheet.js.map
@@ -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 onUnassign,\n onReview,\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 imageHue,\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 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 {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\n $background={imageHue ? `${imageHue}_1` : 'WHITE'}\n $width={containerWidth}\n >\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 onUnassign={onUnassign}\n onReview={onReview}\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 {getRenderableQuestions({ questions, lastUnlockedQuestionIndex, userType }).map(\n (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 )}\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","onUnassign","onReview","canToggleScribbling","studentId","subjectiveProps","canShowActionBar","initialQuestion","navigationMode","teacherValidationEnabled","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","imageHue","actionbarHeight","maxQuestionWidth","questionsContainerWidth","useMemo","getWorksheetDimensions","questions","useState","getQuestionsFromItems","responses","setResponses","getInitialResponses","isScribblingEnabled","setIsScribblingEnabled","lastUnlockedQuestionIndex","getLastUnlockedQuestionIndex","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","Styled.NudgeBannerWrapper","WORKSHEET_NUDGE_BANNER_HEIGHT","jsx","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","getRenderableQuestions","questionIndex","responseId","assignStatus","WorksheetQuestion","WorksheetSummary","WorksheetSideBar","Worksheet","memo","forwardRef"],"mappings":"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"}
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 { forwardRef, memo, useCallback, useEffect, useMemo, useState } 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 onUnassign,\n onReview,\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 imageHue,\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 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 useEffect(() => {\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 {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\n $background={imageHue ? `${imageHue}_1` : 'WHITE'}\n $width={containerWidth}\n >\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 onUnassign={onUnassign}\n onReview={onReview}\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 {getRenderableQuestions({ questions, lastUnlockedQuestionIndex, userType }).map(\n (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 )}\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","onUnassign","onReview","canToggleScribbling","studentId","subjectiveProps","canShowActionBar","initialQuestion","navigationMode","teacherValidationEnabled","containerStyle","containerWidth","minQuestionHeight","minSummaryHeight","questionsScrollable","navigationBar","topOffset","renderSideBar","showUserPointer","imageHue","actionbarHeight","maxQuestionWidth","questionsContainerWidth","useMemo","getWorksheetDimensions","questions","useState","getQuestionsFromItems","responses","setResponses","getInitialResponses","isScribblingEnabled","setIsScribblingEnabled","lastUnlockedQuestionIndex","getLastUnlockedQuestionIndex","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","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","Styled.NudgeBannerWrapper","WORKSHEET_NUDGE_BANNER_HEIGHT","jsx","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","getRenderableQuestions","questionIndex","responseId","assignStatus","WorksheetQuestion","WorksheetSummary","WorksheetSideBar","Worksheet","memo","forwardRef"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,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,YAAAC;AAAA,IACA,UAAAC;AAAA,IACA,qBAAAC,KAAsB;AAAA,IACtB,WAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,kBAAAC,KAAmB;AAAA,EACjB,IAAAnD,IACE,EAAE,iBAAAoD,IAAiB,gBAAAC,GAAgB,0BAAAC,EAAA,IAA6BzC,GAChE;AAAA,IACJ,gBAAA0C;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,IAClB,UAAAC;AAAA,EACE,IAAArD,GAEE,EAAE,iBAAAsD,GAAiB,kBAAAC,GAAkB,yBAAAC,EAA4B,IAAAC;AAAA,IACrE,MAAMC,GAAuB5D,GAAiBE,CAAM;AAAA,IACpD,CAACA,GAAQF,CAAe;AAAA,EAAA,GAGpB,CAAC6D,CAAS,IAAIC;AAAA,IAAS,MAC3BC,GAAsB/D,GAAiB;AAAA,MACrC,WACE6C,KAA4BD,MAAmB,cAAcA,MAAmB;AAAA,MAClF,UAAUA,MAAmB;AAAA,IAAA,CAC9B;AAAA,EAAA,GAGG,CAACoB,GAAWC,CAAY,IAAIH;AAAA,IAChC,MAAM7D,MAAuBiE,GAAoBL,CAAS;AAAA,EAAA,GAEtD,CAACM,IAAqBC,EAAsB,IAAIN,EAAS,EAAK,GAC9DO,IAA4BV;AAAA,IAChC,MACEf,MAAmB,SACf0B,GAA6B;AAAA,MAC3B,WAAAT;AAAA,MACA,WAAAG;AAAA,MACA,UAAA5D;AAAA,MACA,UAAAX;AAAA,IAAA,CACD,IACDoE,EAAU,SAAS;AAAA,IACzB,CAACzD,GAAUwC,GAAgBiB,GAAWG,GAAWvE,CAAQ;AAAA,EAAA,GAGrD8E,IAAuBV,EAAUQ,CAAyB,GAC1DG,IAA+BR,GAAUO,KAAA,gBAAAA,EAAsB,gBAAe,EAAE,GAEhF,EAAE,uBAAuBE,IAA4B,OAAOC,GAAA,IAChEC,GAA4BlF,GAAU,EAAQc,EAAkB,GAE5D,CAACqE,CAAiB,IAAId;AAAA,IAAS,MACnCe,GAAqB;AAAA,MACnB,WAAAhB;AAAA,MACA,iBAAAlB;AAAA,MACA,2BAA2B2B,GAA6B;AAAA,QACtD,WAAAT;AAAA,QACA,WAAAG;AAAA,QACA,UAAA5D;AAAA,QACA,UAAAX;AAAA,MAAA,CACD;AAAA,MACD,mBAAAI;AAAA,MACA,kBAAAC;AAAA,IAAA,CACD;AAAA,EAAA,GAGG,EAAE,kBAAAgF,GAAkB,qBAAAC,GAAqB,sBAAAC,EAAqB,IAClEC,GAAuBL,CAAiB,GACpCM,IAAsBvB;AAAA,IAC1B,MAAME,EAAU,UAAU,CAAYsB,MAAAA,EAAS,gBAAgBL,CAAgB;AAAA,IAC/E,CAACA,GAAkBjB,CAAS;AAAA,EAAA,GAExB,CAACuB,GAAgBC,CAAiB,IAAIvB,EAAS,EAAK,GACpD,CAACwB,IAASC,CAAU,IAAIzB,EAA4B,GAEpD,CAAC0B,IAAgBC,EAAiB,IAAI3B,EAAS,EAAK,GACpD4B,KAAyBC,GAAwBvF,GAAU4D,GAAWc,CAAgB,GAEtFc,KAAyBC;AAAA,IAC7B,CAACV,GAAUW,GAAWC,MAAe;AAC7B,YAAAC,IAAMF,MAAc,eAAe,aAAa;AAEtD,MAAKE,MAEDxF,IACFyD,EAAa,CAAiBgC,MAAA;AAC5B,cAAMC,IAAaf,EAAS,aACtBgB,IAAeC,GAAoBvC,GAAWqC,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,eAAAvF,KAAA,QAAAA,EAAA;AAAA,UACjB,YAAY0F;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,IACQ1F,KACUA,EAAAwE,GAAUW,GAAWC,CAAU;AAAA,IAEtD;AAAA,IACA,CAACpF,GAAoBH,GAAkBqD,CAAS;AAAA,EAAA,GAG5CyC,KAAsBT;AAAA,IAC1B,CAACK,GAAoBK,MAA6B;AAChD,MAAAtC,EAAa,CAAiBgC,MAAA;AACtB,cAAAE,IAAeC,GAAoBvC,GAAWqC,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,CAACpC,CAAS;AAAA,EAAA,GAGN2C,IAAqBX,EAAY,MAAM;AAC3C,IAAAN,EAAW,CAAekB,MAAA;;AACxB,UAAIA,GAAa;AACT,cAAAC,KAAyBC,IAAA9C,EAAUQ,CAAyB,MAAnC,gBAAAsC,EAAsC;AAErE,QAAID,KACF,WAAW,MAAM;AACf,UAAAE,EAAiBF,CAAsB;AAAA,WACtC,EAAE;AAAA,MAET;AAAA,IAEO,CACR;AAAA,EAAA,GACA,CAACrC,GAA2BR,CAAS,CAAC,GAEnCgD,IAAwBhB;AAAA,IAC5B,CAACK,MAAuB;AACtB,MAAAb,EAAkB,EAAK,GAEnBnC,IACoB,sBAAA,MAAM0D,EAAiBV,CAAU,CAAC,IAExDnB,EAAoBmB,CAAU;AAAA,IAElC;AAAA,IACA,CAAChD,GAAqB6B,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,IAAiBrD,EAAUqB,CAAmB;AAEpD,IAAIgC,KAAkBrF,KACpBA,EAAuBqF,CAAc;AAAA,EAEtC,GAAA,CAACrF,GAAwBgC,GAAWqB,CAAmB,CAAC,GAE3DiC,GAA0B3H,IAAK;AAAA,IAC7B,UAAAY;AAAA,IACA,WAAAyD;AAAA,IACA,cAAAI;AAAA,IACA,kBAAAzD;AAAA,IACA,uBAAAC;AAAA,IACA,wBAAAiF;AAAA,EAAA,CACD,GAEDuB,EAAU,MACD,MAAM;AACX,IAAAjC,EAAqB,WAAW;AAAA,EAAA,GAEjC,CAACA,CAAoB,CAAC,GAEzBiC,EAAU,MAAM;AACd,IAAIvG,KAAqBsD,KACvBtD,EAAkBsD,CAAS;AAAA,EAC7B,GACC,CAACtD,GAAmBsD,CAAS,CAAC,GAEjCiD,EAAU,MAAM;AACd,IAAI5G,KACF4D,EAAa5D,CAAgB;AAAA,EAC/B,GACC,CAACA,CAAgB,CAAC,GAErB4G,EAAU,MAAM;AACV,QAAAG;AAEJ,WAAIlG,KAAc0D,MACZyC,GAAA,EAAmB,iBAAiB,WACtCD,IAAQ,WAAW,MAAM;AACvB,MAAAR,EAAiBhC,CAAiB;AAAA,OACjC,GAAG,IAENgC,EAAiBhC,CAAiB,IAI/B,MAAM;AACX,mBAAawC,CAAK;AAAA,IAAA;AAAA,EAEnB,GAAA,CAAClG,GAAY0D,GAAmBxB,CAAS,CAAC,GAE7C6D,EAAU,MAAM;AACV,QAAA7G,EAAS,4BAA4BmE,GAAsB;AAC7D,YAAM,EAAE,WAAA+C,GAAW,qBAAAC,GAAqB,aAAAC,EAAA,IAAgBjD;AAExD,MAAI9E,MAAa,cACX6H,MAAc,iBAAiBC,MAAwB,gBAEvD/C,KAAA,QAAAA,EAA8B,sBAC9B,EAACA,KAAA,QAAAA,EAA8B,sBAE/Be,EAAW,8BAA8B,IAC/Bf,KAAA,QAAAA,EAA8B,qBAGrBgC,MAFnBjB,EAAW,kCAAkC,IAItCiC,IACJhD,KAAA,QAAAA,EAA8B,eAGdgC,MAFnBjB,EAAW,2BAA2B,IAI9BiC,KACShB;IAGzB;AAAA,EAAA,GACC;AAAA,IACDpG,EAAS;AAAA,IACToG;AAAA,IACAjC;AAAA,IACAC;AAAA,IACA/E;AAAA,EAAA,CACD,GAEDwH,EAAU,MAAM;AACV,QAAA7G,EAAS,4BAA4BmE,GAAsB;AACvD,YAAA,EAAE,WAAA+C,GAAW,qBAAAC,EAAwB,IAAAhD;AAE3C,MAAI9E,MAAa,aACX6H,MAAc,iBAAiBC,MAAwB,kBACrD/C,KAAA,QAAAA,EAA8B,qBACXxD,KAAA,QAAAA,MAEDD,KAAA,QAAAA;AAAA,IAI5B;AAAA,EAAA,GACC;AAAA,IACDX,EAAS;AAAA,IACTmE;AAAA,IACAC,KAAA,gBAAAA,EAA8B;AAAA,IAC9BzD;AAAA,IACAC;AAAA,IACAvB;AAAA,EAAA,CACD,GAEDwH,EAAU,MAAM;AACd,IAAIrE,MAAmB,aACrB5C,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,OAEDd,IAAAe,EAAc,CAAC,MAAf,gBAAAf,EAAkB,yBAAwB,WAC1CiB,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,GAAiB4C,CAAc,CAAC,GAE3DqE,EAAU,MAAM;AACd,IAAApD,EAAU,QAAQ,CAAYsB,MAAA;AAC5B,YAAM,EAAE,YAAA2C,GAAY,gBAAAC,GAAgB,MAAAC,GAAM,iBAAAC,GAAiB,UAAAC,EAAa,IAAA/C;AAGpE,WAFmBtC,IAA2BmF,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,GAAW4B,GAAWhB,CAAwB,CAAC,GAErE3B,IAMA,gBAAAoH,EAAAC,IAAA,EAAA,UAAA;AAAA,IACCjI,MAAA,gBAAAgI;AAAA,MAACE;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,aAAahE;AAAA,QACb,YAAYvE,EAAO,YAAYuI;AAAA,QAE9B,UAAA;AAAA,UACClI,KAAA,gBAAAmI,EAACC,IAAA,EACC,4BAACC,IAAW,EAAA,OAAO,IAAI,QAAQ,GAAI,CAAA,EAAA,CACrC,IAEC,gBAAAF,EAAAC,IAAA,EACC,UAAA,gBAAAD,EAACG,MAAU,OAAO,IAAI,QAAQ,GAAA,CAAI,EACpC,CAAA;AAAA,UAGD,gBAAAH,EAAAI,IAAA,EAAK,WAAU,OAAO,UAAiBpE,IAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAC1C;AAAA,IAGF,gBAAA4D;AAAA,MAACS;AAAAA,MAAA;AAAA,QACC,aAAaxF,KAAW,GAAGA,EAAQ,OAAO;AAAA,QAC1C,QAAQR;AAAA,QAEP,UAAA;AAAA,UAAAI,OAAkB,SACjB,gBAAAuF,EAACM,IAAA,EAA2B,YAAY5F,GAAW,SAAS6F,IAC1D,UAAA,gBAAAP,EAACQ,IAAA,EACC,UAAA,gBAAAR;AAAA,YAACS;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,WAAAtF;AAAA,cACA,WAAAG;AAAA,cACA,qBAAAkB;AAAA,cACA,2BAAAb;AAAA,cACA,UAAAjE;AAAA,cACA,mBAAmByG;AAAA,cACnB,UAAApH;AAAA,cACA,gBAAA2F;AAAA,YAAA;AAAA,aAEJ,EACF,CAAA;AAAA,UAEDE,MAAWf,KACV,gBAAAmE,EAACU,IAAA,EAAsB,YAAYpG,IAAmB,YAAYI,GAChE,4BAACiG,IAAS,EAAA,QAAQ5F,GAAkB,iBAAgB,UAAS,aAAY,UACvE,UAAA,gBAAAiF;AAAA,YAACY;AAAA,YAAA;AAAA,cACC,SAAAhE;AAAA,cACA,sBAAAf;AAAA,cACA,aAAA7E;AAAA,cACA,gBAAgB8G;AAAA,cAChB,0BAAA3F;AAAA,cACA,oBAAAC;AAAA,cACA,qBAAAF;AAAA,YAAA;AAAA,aAEJ,EACF,CAAA;AAAA,UAED0C,MACC,gBAAAoF;AAAA,YAACa;AAAA,YAAA;AAAA,cACC,qBAAArE;AAAA,cACA,SAAS2B;AAAA,cACT,WAAAhD;AAAA,cACA,cAAcL;AAAA,cACd,WAAAJ;AAAA,cACA,UAAA3D;AAAA,YAAA;AAAA,UACF;AAAA,UAED+F,MACE,gBAAAkD,EAAAc,IAAA,EACC,UAAC,gBAAAd,EAAAe,IAAA,EAAiB,iBAAiBC,IAAsB,SAAS5C,GAAA,CAAmB,EACvF,CAAA;AAAA,UAEF,gBAAAwB;AAAA,YAACqB;AAAAA,YAAA;AAAA,cACC,YAAYlK,MAAa,aAAa2F,IAAiB,MAAM5B;AAAA,cAC7D,SAASA;AAAA,cACT,aAAaV,MAAmB;AAAA,cAEhC,UAAA;AAAA,gBAAA,gBAAA4F;AAAA,kBAACkB;AAAA,kBAAA;AAAA,oBACC,OAAOlG,IAA0B;AAAA,oBACjC,UAAUG,EAAUqB,CAAmB;AAAA,oBACvC,YAAAhE;AAAA,oBACA,UAAAzB;AAAA,kBAAA;AAAA,gBACF;AAAA,gBACCiD,MACC,gBAAAgG;AAAA,kBAACmB;AAAAA,kBAAA;AAAA,oBACC,SAASrG;AAAA,oBACT,QAAQV,MAAmB,SAASY,IAA0B,KAAK;AAAA,oBACnE,aAAaZ,MAAmB;AAAA,oBAEhC,UAAA,gBAAA4F;AAAA,sBAACW;AAAA,sBAAA;AAAA,wBACC,UAAU;AAAA,wBACV,gBAAe;AAAA,wBACf,iBAAgB;AAAA,wBAChB,aAAY;AAAA,wBACZ,QAAQ3F,IAA0B;AAAA,wBAElC,UAAA,gBAAAgF;AAAA,0BAACoB;AAAA,0BAAA;AAAA,4BACC,UAAArK;AAAA,4BACA,QAAAS;AAAA,4BACA,UAAAE;AAAA,4BACA,eAAAR;AAAA,4BACA,WAAAiE;AAAA,4BACA,WAAAG;AAAA,4BACA,kBAAA+C;AAAA,4BACA,qBAAA7B;AAAA,4BACA,2BAAAb;AAAA,4BACA,qBAAAlD;AAAA,4BACA,YAAAD;AAAA,4BACA,iBAAAO;AAAA,4BACA,oBAAAO;AAAA,4BACA,qBAAAmC;AAAA,4BACA,kBAAkBiB;AAAA,4BAClB,cAAAnB;AAAA,4BACA,wBAAAyB;AAAA,4BACA,mBAAAL;AAAA,4BACA,YAAAE;AAAA,4BACA,wBAAAnB;AAAA,4BACA,qBAAAW;AAAA,4BACA,mBAAmB8B;AAAA,4BACnB,cAAcG;AAAA,4BACd,kBAAAxG;AAAA,4BACA,QAAAkB;AAAA,4BACA,qBAAAd;AAAA,4BACA,UAAAK;AAAA,4BACA,gBAAAuE;AAAA,4BACA,WAAAvD;AAAA,4BACA,QAAAG;AAAA,4BACA,YAAAC;AAAA,4BACA,UAAAC;AAAA,4BACA,qBAAAC;AAAA,0BAAA;AAAA,wBACF;AAAA,sBAAA;AAAA,oBACF;AAAA,kBAAA;AAAA,gBACF;AAAA,gBAED,CAAC6C,KAAkBlC,KAAuBzD,MAAa,aACrD,gBAAAiJ,EAAAqB,IAAA,EACC,UAAC,gBAAArB,EAAAsB,IAAA,CAAA,CAAU,EACb,CAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAEJ;AAAA,UACA,gBAAA1B;AAAA,YAAC2B;AAAAA,YAAA;AAAA,cACC,kBAAkBzG;AAAA,cAClB,aAAaV,MAAmB;AAAA,cAE/B,UAAA;AAAA,gBAAAoH,GAAuB,EAAE,WAAArG,GAAW,2BAAAQ,GAA2B,UAAA5E,EAAA,CAAU,EAAE;AAAA,kBAC1E,CAAC0F,GAAUgF,MAAkB;;AAC3B,0BAAM,EAAE,aAAaC,GAAY,aAAA5C,EAAA,IAAgBrC,GAC3CkF,KAAe1D,IAAA3C,EAAUoG,CAAU,MAApB,gBAAAzD,EAAuB;AAE5C,2BAAIvG,EAAS,6BACPiK,MAAiB,aAEjB7C,KAAe6C,MAAiB,cAAc5K,MAAa,aACtD,OAKT,gBAAAiJ;AAAA,sBAAC4B;AAAA,sBAAA;AAAA,wBAEC,eAAe3K;AAAA,wBACf,UAAAF;AAAA,wBACA,oBAAA2B;AAAA,wBACA,UAAA+D;AAAA,wBACA,UAAUnB,EAAUoG,CAAU;AAAA,wBAC9B,gBACExH,MAAmB,cAAcA,MAAmB,YAChD2B,KAAA,gBAAAA,EAAsB,cACtB4F,IAAgB9F,KACduD,IAAA/D,EAAUsG,IAAgB,CAAC,MAA3B,gBAAAvC,EAA8B,cAC9B;AAAA,wBAER,kBAAAnE;AAAA,wBACA,YAAAvC;AAAA,wBACA,UAAUkJ,MAAetF;AAAA,wBACzB,UACG,CAAC5B,KAAuBkH,MAAetF,KAAqBM;AAAA,wBAE/D,WACEF,IAAsB,OACrBiF,MAAkBjF,KAChBtC,MAAmB,aAAauH,MAAkBjF,IAAsB;AAAA,wBAE7E,YAAA/E;AAAA,wBACA,UAAUgB,GAAoB,SAASiJ,CAAU;AAAA,wBACjD,UAAAhK;AAAA,wBACA,QAAAF;AAAA,wBACA,iBAAAsD;AAAA,wBACA,sBAAAwB;AAAA,wBACA,iBAAiBsB;AAAA,wBACjB,oBAAoBV;AAAA,wBACpB,QAAAvE;AAAA,wBACA,qBAAA8C;AAAA,wBACA,kBAAA7C;AAAA,wBACA,kBAAAC;AAAA,wBACA,oBAAAC;AAAA,wBACA,iBAAAC;AAAA,wBACA,oBAAAE;AAAA,wBACA,sBAAAC;AAAA,wBACA,qBAAAmD;AAAA,wBACA,iBAAA7C;AAAA,wBACA,gBAAAC;AAAA,wBACA,WAAAK;AAAA,wBACA,iBAAAC;AAAA,wBACA,WAAAuB;AAAA,wBACA,WAAA/B;AAAA,sBAAA;AAAA,sBA9CKmI;AAAA,oBAAA;AAAA,kBAiDX;AAAA,gBACF;AAAA,gBACChF,KACC,gBAAAsD;AAAA,kBAAC6B;AAAA,kBAAA;AAAA,oBACC,eAAA3K;AAAA,oBACA,WAAAiE;AAAA,oBACA,WAAAG;AAAA,oBACA,qBAAAkB;AAAA,oBACA,2BAAAb;AAAA,oBACA,mBAAmBwC;AAAA,oBACnB,UAAAzG;AAAA,oBACA,WAAW6C;AAAA,oBACX,oBAAAlB;AAAA,oBACA,gBAAAqD;AAAA,kBAAA;AAAA,gBACF;AAAA,cAAA;AAAA,YAAA;AAAA,UAEJ;AAAA,UACC,CAACA,KAAkB/B,MAClB,gBAAAqF;AAAA,YAAC8B;AAAA,YAAA;AAAA,cACC,eAAe/G;AAAA,cACf,WAAAI;AAAA,cACA,qBAAAqB;AAAA,cACA,YAAAhE;AAAA,cACA,UAAAzB;AAAA,cACA,QAAQuD;AAAA,cACR,iBAAAQ;AAAA,cACA,2BAAA1B;AAAA,cACA,WAAAG;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAEJ;AAAA,EACF,EAAA,CAAA,IA3PO;AA6PX,GAEMwI,KAAYC,GAAKC,GAAWrL,EAAa,CAAC;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuemath/leap",
3
- "version": "3.2.0-aa1",
3
+ "version": "3.2.0-aa2",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"