@cuemath/leap 3.3.9 → 3.3.10-j2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/features/auth/comps/linear-progress-bar/linear-progress-bar.js +4 -4
  2. package/dist/features/auth/comps/linear-progress-bar/linear-progress-bar.js.map +1 -1
  3. package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide.js +2 -2
  4. package/dist/features/auth/pla-signup/onboarding-guide/onboarding-guide.js.map +1 -1
  5. package/dist/features/parent-dashboard/api/parent-home.js +10 -0
  6. package/dist/features/parent-dashboard/api/parent-home.js.map +1 -0
  7. package/dist/features/parent-dashboard/comps/compact-header/compact-header.js +30 -0
  8. package/dist/features/parent-dashboard/comps/compact-header/compact-header.js.map +1 -0
  9. package/dist/features/parent-dashboard/comps/cuemath-app-features/cuemath-app-features.js +2 -2
  10. package/dist/features/parent-dashboard/comps/cuemath-app-features/cuemath-app-features.js.map +1 -1
  11. package/dist/features/parent-dashboard/comps/math-practice/math-practice.js +12 -12
  12. package/dist/features/parent-dashboard/comps/math-practice/math-practice.js.map +1 -1
  13. package/dist/features/parent-dashboard/hooks/use-parent-home-data.js +64 -0
  14. package/dist/features/parent-dashboard/hooks/use-parent-home-data.js.map +1 -0
  15. package/dist/features/parent-dashboard/parent-dashboard-constants.js +26 -0
  16. package/dist/features/parent-dashboard/parent-dashboard-constants.js.map +1 -0
  17. package/dist/features/parent-dashboard/parent-dashboard-styled.js +33 -0
  18. package/dist/features/parent-dashboard/parent-dashboard-styled.js.map +1 -0
  19. package/dist/features/parent-dashboard/parent-dashboard-view.js +203 -0
  20. package/dist/features/parent-dashboard/parent-dashboard-view.js.map +1 -0
  21. package/dist/features/parent-dashboard/parent-dashboard.js +8 -0
  22. package/dist/features/parent-dashboard/parent-dashboard.js.map +1 -0
  23. package/dist/features/trial-session/comps/pla/next-steps/next-steps.js +6 -6
  24. package/dist/features/trial-session/comps/pla/next-steps/next-steps.js.map +1 -1
  25. package/dist/features/trial-session/comps/pla/session-status/session-status.js.map +1 -1
  26. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js +13 -13
  27. package/dist/features/trial-session/comps/pla/session-summary/summary-card/summary-card.js.map +1 -1
  28. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions-types.js.map +1 -1
  29. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions.js +9 -9
  30. package/dist/features/trial-session/comps/pla/upcoming-sessions/upcoming-sessions.js.map +1 -1
  31. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +38 -38
  32. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  33. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js +126 -128
  34. package/dist/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.js.map +1 -1
  35. package/dist/index.d.ts +26 -3
  36. package/dist/index.js +32 -28
  37. package/dist/index.js.map +1 -1
  38. package/dist/node_modules/decode-uri-component/index.js.map +1 -0
  39. package/dist/node_modules/query-string/base.js +1 -1
  40. package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
  41. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
  42. package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
  43. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  44. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
  45. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  46. package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
  47. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  48. package/package.json +1 -1
  49. package/dist/node_modules/query-string/node_modules/decode-uri-component/index.js.map +0 -1
  50. package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
  51. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
  52. package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
  53. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
  54. /package/dist/node_modules/{query-string/node_modules/decode-uri-component → decode-uri-component}/index.js +0 -0
@@ -1,52 +1,51 @@
1
- import { jsxs as Qt, jsx as i } from "react/jsx-runtime";
2
- import { deepEqual as Mt } from "../../../../node_modules/fast-equals/dist/esm/index.js";
3
- import { memo as Xt, useState as N, useEffect as C, useMemo as $t } from "react";
4
- import jt from "../../../../assets/line-icons/icons/check2.js";
5
- import Wt from "../../../../assets/line-icons/icons/hand.js";
6
- import Pt from "../../../../assets/line-icons/icons/question.js";
7
- import Ft from "../../../../assets/line-icons/icons/skip.js";
8
- import r from "../../../ui/buttons/button/button.js";
9
- import A from "../../../ui/buttons/icon-button/icon-button.js";
10
- import Gt from "../../../ui/layout/flex-view.js";
11
- import Ot from "./use-handler-callbacks.js";
12
- const re = Xt((L) => {
13
- var nt, it, ot;
1
+ import { jsxs as Ht, jsx as i } from "react/jsx-runtime";
2
+ import { deepEqual as Qt } from "../../../../node_modules/fast-equals/dist/esm/index.js";
3
+ import { memo as Mt, useState as N, useEffect as C, useMemo as Xt } from "react";
4
+ import $t from "../../../../assets/line-icons/icons/check2.js";
5
+ import jt from "../../../../assets/line-icons/icons/hand.js";
6
+ import Wt from "../../../../assets/line-icons/icons/question.js";
7
+ import Pt from "../../../../assets/line-icons/icons/skip.js";
8
+ import u from "../../../ui/buttons/button/button.js";
9
+ import T from "../../../ui/buttons/icon-button/icon-button.js";
10
+ import Ft from "../../../ui/layout/flex-view.js";
11
+ import Gt from "./use-handler-callbacks.js";
12
+ const ae = Mt((L) => {
13
+ var et, nt, it;
14
14
  const {
15
- layout: at,
16
- learnosity: p,
17
- question: u,
18
- questions: T,
15
+ layout: st,
16
+ learnosity: f,
17
+ question: l,
18
+ questions: A,
19
19
  responses: U,
20
20
  questionIndex: H,
21
21
  canSubmitWorksheet: Q,
22
22
  isQuestionUnlocked: M,
23
23
  isQuestionAppended: d,
24
24
  response: t,
25
- behavior: f,
25
+ behavior: p,
26
26
  userType: m,
27
- setActiveQuestionId: rt,
28
- setSummaryVisible: lt,
27
+ setActiveQuestionId: at,
28
+ setSummaryVisible: rt,
29
29
  setBlocker: ut,
30
- setResponses: ct,
31
- getTimeSpentOnQuestion: dt,
30
+ setResponses: lt,
31
+ getTimeSpentOnQuestion: ct,
32
32
  onSkip: g,
33
- actionBarRightElement: X,
34
- onSubmit: mt
35
- } = L, { onHelp: Bt, onResponseChange: ht, onTeacherValidation: kt, loggerRef: pt } = L, {
33
+ actionBarRightElement: X
34
+ } = L, { onHelp: dt, onResponseChange: mt, onTeacherValidation: Bt, loggerRef: ht } = L, {
36
35
  navigationMode: I,
37
36
  canAttempt: o,
38
- hints: ft,
39
- checkButtonLabel: bt,
40
- retryButtonLabel: St,
37
+ hints: kt,
38
+ checkButtonLabel: ft,
39
+ retryButtonLabel: pt,
41
40
  validation: c,
42
41
  maximumAttempts: v,
43
42
  canExceedAttempts: $,
44
43
  teacherValidationEnabled: j,
45
- canTeacherValidate: l,
44
+ canTeacherValidate: r,
46
45
  hintsTimer: E,
47
46
  skippableTime: W,
48
47
  skippable: P
49
- } = f, { response_id: _, item_type: yt, type: R, instructor_stimulus: xt, is_optional: F } = u, b = ft ? ((ot = (it = (nt = p.question(_)) == null ? void 0 : nt.getMetadata()) == null ? void 0 : it.hints) == null ? void 0 : ot.length) ?? 0 : 0, w = xt === "SystemIntro", D = yt === "exit-ticket", B = o && b - ((t == null ? void 0 : t.hintsUsed) ?? 0) > 0, [s, G] = N(!1), [O, J] = N(!1), [K, S] = N(!1);
48
+ } = p, { response_id: _, item_type: bt, type: R, instructor_stimulus: St, is_optional: F } = l, b = kt ? ((it = (nt = (et = f.question(_)) == null ? void 0 : et.getMetadata()) == null ? void 0 : nt.hints) == null ? void 0 : it.length) ?? 0 : 0, w = St === "SystemIntro", D = bt === "exit-ticket", B = o && b - ((t == null ? void 0 : t.hintsUsed) ?? 0) > 0, [s, G] = N(!1), [O, J] = N(!1), [K, S] = N(!1);
50
49
  C(() => {
51
50
  if (E && B) {
52
51
  const n = setTimeout(() => {
@@ -73,20 +72,20 @@ const re = Xt((L) => {
73
72
  }, [b, B, t, P, W]);
74
73
  const {
75
74
  checkButton: h,
76
- checkButtonDisabled: Ct,
75
+ checkButtonDisabled: yt,
77
76
  hintsButton: Y,
78
77
  retryButton: y,
79
- nextButton: At,
80
- nextButtonDisabled: Tt,
81
- startButton: gt,
82
- readyButton: It,
83
- validateButton: vt,
84
- skipSectionButton: Et,
85
- submitAttemptButton: Z,
86
- skipButton: _t
87
- } = $t(() => {
88
- const n = l && F && (t == null ? void 0 : t.assignStatus) === "assigned", x = () => {
89
- var st;
78
+ nextButton: xt,
79
+ nextButtonDisabled: Ct,
80
+ startButton: Tt,
81
+ readyButton: At,
82
+ validateButton: gt,
83
+ skipSectionButton: It,
84
+ submitAttemptButton: vt,
85
+ skipButton: Et
86
+ } = Xt(() => {
87
+ const n = r && F && (t == null ? void 0 : t.assignStatus) === "assigned", x = () => {
88
+ var ot;
90
89
  if (v === -2)
91
90
  return m === "STUDENT" && o ? {
92
91
  hintsButton: s
@@ -95,7 +94,7 @@ const re = Xt((L) => {
95
94
  return {
96
95
  nextButton: !0
97
96
  };
98
- if (!c && f.navigationMode === "LINEAR")
97
+ if (!c && p.navigationMode === "LINEAR")
99
98
  return {
100
99
  nextButton: !0,
101
100
  nextButtonDisabled: !(t != null && t.response),
@@ -113,28 +112,28 @@ const re = Xt((L) => {
113
112
  checkButtonDisabled: !0,
114
113
  hintsButton: s
115
114
  };
116
- const { responseEdited: k, score: a, attemptsHistory: e } = t, q = ((e == null ? void 0 : e.length) ?? 0) >= v;
117
- if (q && !$)
115
+ const { responseEdited: k, score: a, attemptsHistory: e } = t, z = ((e == null ? void 0 : e.length) ?? 0) >= v;
116
+ if (z && !$)
118
117
  return {
119
118
  nextButton: !0
120
119
  };
121
120
  if (k) {
122
- const Ht = (st = e == null ? void 0 : e.slice(-1)[0]) == null ? void 0 : st.response;
121
+ const Ut = (ot = e == null ? void 0 : e.slice(-1)[0]) == null ? void 0 : ot.response;
123
122
  return {
124
- nextButton: q,
123
+ nextButton: z,
125
124
  checkButton: !0,
126
- checkButtonDisabled: Mt(t.response, Ht),
125
+ checkButtonDisabled: Qt(t.response, Ut),
127
126
  hintsButton: s
128
127
  };
129
128
  }
130
129
  return (a.score ?? 0) < a.max_score ? {
131
- nextButton: q,
130
+ nextButton: z,
132
131
  retryButton: !0,
133
132
  hintsButton: s
134
133
  } : (a.score ?? 0) === a.max_score ? {
135
134
  nextButton: !0
136
135
  } : {};
137
- }, Ut = () => T.some(({ response_id: k }) => {
136
+ }, Lt = () => A.some(({ response_id: k }) => {
138
137
  const { assignStatus: a, validatedByTeacher: e } = U[k] ?? {};
139
138
  return a === "skipped" ? !1 : e !== !0;
140
139
  });
@@ -150,19 +149,19 @@ const re = Xt((L) => {
150
149
  if (k)
151
150
  return {
152
151
  validateButton: !0,
153
- submitAttemptButton: l && o && m === "STUDENT" && Q ? !Ut() : !1
152
+ submitAttemptButton: r && o && m === "STUDENT" && Q ? !Lt() : !1
154
153
  };
155
154
  if (!M)
156
155
  return {};
157
156
  if (m === "STUDENT")
158
157
  return w ? {
159
- startButton: l && o
158
+ startButton: r && o
160
159
  } : R !== "clozetext" ? {
161
160
  ...x(),
162
161
  nextButton: !1
163
162
  } : {
164
163
  hintsButton: s,
165
- readyButton: l && D && !(t != null && t.submittedByStudent)
164
+ readyButton: r && D && !(t != null && t.submittedByStudent)
166
165
  };
167
166
  if (w)
168
167
  return {
@@ -172,28 +171,28 @@ const re = Xt((L) => {
172
171
  const { responseEdited: a, score: e } = t ?? {};
173
172
  return {
174
173
  skipSectionButton: n,
175
- validateButton: a || !l ? !1 : !!(e != null && e.score && (e != null && e.max_score) && !((e.score ?? 0) < e.max_score))
174
+ validateButton: a || !r ? !1 : !!(e != null && e.score && (e != null && e.max_score) && !((e.score ?? 0) < e.max_score))
176
175
  };
177
176
  }
178
177
  return {
179
178
  skipSectionButton: n,
180
- validateButton: l && (D ? t == null ? void 0 : t.submittedByStudent : !0)
179
+ validateButton: r && (D ? t == null ? void 0 : t.submittedByStudent : !0)
181
180
  };
182
181
  }
183
182
  return x();
184
183
  }, [
185
- l,
184
+ r,
186
185
  F,
187
186
  t,
188
187
  j,
189
188
  o,
190
189
  c,
191
- f.navigationMode,
190
+ p.navigationMode,
192
191
  v,
193
192
  $,
194
193
  s,
195
194
  K,
196
- T,
195
+ A,
197
196
  U,
198
197
  I,
199
198
  M,
@@ -203,59 +202,59 @@ const re = Xt((L) => {
203
202
  D,
204
203
  Q
205
204
  ]), {
206
- handleResponseChange: z,
207
- handleHelpButtonClick: tt,
208
- handleBackButtonClick: et,
209
- handleNextButtonClick: V,
210
- handleCheckButtonClick: Rt,
211
- handleRetryButtonClick: wt,
212
- handleHintButtonClick: Dt,
213
- handleValidateButtonClick: zt,
205
+ handleResponseChange: V,
206
+ handleHelpButtonClick: Z,
207
+ handleBackButtonClick: tt,
208
+ handleNextButtonClick: q,
209
+ handleCheckButtonClick: _t,
210
+ handleRetryButtonClick: Rt,
211
+ handleHintButtonClick: wt,
212
+ handleValidateButtonClick: Dt,
214
213
  handleStartButtonClick: Vt,
215
214
  handleSkipSectionButtonClick: qt,
216
- handleReadyButtonClick: Nt,
217
- handleSkipButtonClick: Lt
218
- } = Ot({
219
- layout: at,
220
- question: u,
221
- questions: T,
222
- learnosity: p,
215
+ handleReadyButtonClick: zt,
216
+ handleSkipButtonClick: Nt
217
+ } = Gt({
218
+ layout: st,
219
+ question: l,
220
+ questions: A,
221
+ learnosity: f,
223
222
  questionIndex: H,
224
- setActiveQuestionId: rt,
225
- setSummaryVisible: lt,
223
+ setActiveQuestionId: at,
224
+ setSummaryVisible: rt,
226
225
  setBlocker: ut,
227
- setResponses: ct,
228
- onResponseChange: ht,
229
- onTeacherValidation: kt,
230
- onHelp: Bt,
231
- behavior: f,
232
- loggerRef: pt,
226
+ setResponses: lt,
227
+ onResponseChange: mt,
228
+ onTeacherValidation: Bt,
229
+ onHelp: dt,
230
+ behavior: p,
231
+ loggerRef: ht,
233
232
  setSkipped: J,
234
- getTimeSpentOnQuestion: dt
233
+ getTimeSpentOnQuestion: ct
235
234
  });
236
235
  return C(() => {
237
- O && (J(!1), S(!1), V(), g && g(u.item_display_number, u.question_number));
236
+ O && (J(!1), S(!1), q(), g && g(l.item_display_number, l.question_number));
238
237
  }, [
239
- V,
238
+ q,
240
239
  g,
241
- u.item_display_number,
242
- u.question_number,
240
+ l.item_display_number,
241
+ l.question_number,
243
242
  O
244
243
  ]), C(() => {
245
- const n = d ? p.question(_) : void 0;
246
- return n && o && (!c || h) && (n.on("changed", z), n.enable()), () => {
247
- n && o && (!c || h) && (n.off("changed", z), n.disable());
244
+ const n = d ? f.question(_) : void 0;
245
+ return n && o && (!c || h) && (n.on("changed", V), n.enable()), () => {
246
+ n && o && (!c || h) && (n.off("changed", V), n.disable());
248
247
  };
249
248
  }, [
250
249
  o,
251
250
  h,
252
- z,
251
+ V,
253
252
  d,
254
- p,
253
+ f,
255
254
  _,
256
255
  c
257
- ]), /* @__PURE__ */ Qt(
258
- Gt,
256
+ ]), /* @__PURE__ */ Ht(
257
+ Ft,
259
258
  {
260
259
  $background: "WHITE",
261
260
  $flexDirection: "row",
@@ -264,105 +263,104 @@ const re = Xt((L) => {
264
263
  $justifyContent: "flex-end",
265
264
  children: [
266
265
  Y && /* @__PURE__ */ i(
267
- A,
266
+ T,
268
267
  {
269
- Icon: Pt,
268
+ Icon: Wt,
270
269
  analyticsLabel: "Hint",
271
270
  renderAs: "secondary",
272
271
  disabled: !d,
273
- onClick: Dt
272
+ onClick: wt
274
273
  }
275
274
  ),
276
- !Y && tt && (h || y) && /* @__PURE__ */ i(
277
- A,
275
+ !Y && Z && (h || y) && /* @__PURE__ */ i(
276
+ T,
278
277
  {
279
- Icon: Wt,
278
+ Icon: jt,
280
279
  analyticsLabel: "Ask for help",
281
280
  renderAs: "secondary",
282
- onClick: tt
281
+ onClick: Z
283
282
  }
284
283
  ),
285
- et && /* @__PURE__ */ i(
286
- r,
284
+ tt && /* @__PURE__ */ i(
285
+ u,
287
286
  {
288
287
  widthX: 6,
289
288
  renderAs: "secondary",
290
289
  size: "small",
291
290
  label: "Back",
292
291
  disabled: H === 0,
293
- onClick: et
292
+ onClick: tt
294
293
  }
295
294
  ),
296
- _t && /* @__PURE__ */ i(
297
- r,
295
+ Et && /* @__PURE__ */ i(
296
+ u,
298
297
  {
299
298
  widthX: 6,
300
299
  renderAs: y ? "secondary" : "primary",
301
300
  size: "small",
302
301
  label: "Skip",
303
- onClick: Lt
302
+ onClick: Nt
304
303
  }
305
304
  ),
306
- At && /* @__PURE__ */ i(
307
- r,
305
+ xt && /* @__PURE__ */ i(
306
+ u,
308
307
  {
309
308
  widthX: 6,
310
309
  renderAs: y ? "secondary" : "primary",
311
310
  size: "small",
312
311
  label: "Next",
313
- onClick: V,
314
- disabled: Tt === !0
312
+ onClick: q,
313
+ disabled: Ct === !0
315
314
  }
316
315
  ),
317
316
  y && /* @__PURE__ */ i(
318
- r,
317
+ u,
319
318
  {
320
319
  widthX: 6,
321
320
  renderAs: "primary",
322
321
  size: "small",
323
- label: St,
322
+ label: pt,
324
323
  disabled: !d,
325
- onClick: wt
324
+ onClick: Rt
326
325
  }
327
326
  ),
328
327
  h && /* @__PURE__ */ i(
329
- r,
328
+ u,
330
329
  {
331
330
  renderAs: "primary",
332
331
  size: "small",
333
- label: bt,
334
- disabled: Ct === !0 || !d,
335
- onClick: Rt
332
+ label: ft,
333
+ disabled: yt === !0 || !d,
334
+ onClick: _t
336
335
  }
337
336
  ),
338
- gt && /* @__PURE__ */ i(r, { renderAs: "primary", size: "small", label: "Start", onClick: Vt }),
339
- It && /* @__PURE__ */ i(r, { renderAs: "primary", size: "small", label: "Submit", onClick: Nt }),
340
- Et && /* @__PURE__ */ i(
341
- A,
337
+ Tt && /* @__PURE__ */ i(u, { renderAs: "primary", size: "small", label: "Start", onClick: Vt }),
338
+ At && /* @__PURE__ */ i(u, { renderAs: "primary", size: "small", label: "Submit", onClick: zt }),
339
+ It && /* @__PURE__ */ i(
340
+ T,
342
341
  {
343
342
  renderAs: "primary",
344
- Icon: Ft,
343
+ Icon: Pt,
345
344
  analyticsLabel: "Skip Section",
346
345
  onClick: qt
347
346
  }
348
347
  ),
349
- !Z && vt && /* @__PURE__ */ i(
350
- A,
348
+ !vt && gt && /* @__PURE__ */ i(
349
+ T,
351
350
  {
352
351
  renderAs: "primary",
353
- Icon: jt,
352
+ Icon: $t,
354
353
  disabled: t == null ? void 0 : t.validatedByTeacher,
355
354
  analyticsLabel: "Validate",
356
- onClick: zt
355
+ onClick: Dt
357
356
  }
358
357
  ),
359
- Z && /* @__PURE__ */ i(r, { renderAs: "primary", size: "small", label: "Submit", onClick: mt }),
360
358
  X && X
361
359
  ]
362
360
  }
363
361
  );
364
362
  });
365
363
  export {
366
- re as default
364
+ ae as default
367
365
  };
368
366
  //# sourceMappingURL=worksheet-questions-controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet-questions-controller.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.tsx"],"sourcesContent":["import type {\n IButtonTypes,\n IWorksheetQuestionsControllerProps,\n} from './worksheet-questions-controller-types';\nimport type { FC } from 'react';\n\nimport { deepEqual } from 'fast-equals';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport HandIcon from '../../../../assets/line-icons/icons/hand';\nimport QuestionIcon from '../../../../assets/line-icons/icons/question';\nimport SkipIcon from '../../../../assets/line-icons/icons/skip';\nimport Button from '../../../ui/buttons/button/button';\nimport IconButton from '../../../ui/buttons/icon-button/icon-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport useHandlerCallbacks from './use-handler-callbacks';\n\nconst WorksheetQuestionsController: FC<IWorksheetQuestionsControllerProps> = memo(props => {\n const {\n layout,\n learnosity,\n question,\n questions,\n responses,\n questionIndex,\n canSubmitWorksheet,\n isQuestionUnlocked,\n isQuestionAppended,\n response,\n behavior,\n userType,\n setActiveQuestionId,\n setSummaryVisible,\n setBlocker,\n setResponses,\n getTimeSpentOnQuestion,\n onSkip,\n actionBarRightElement,\n onSubmit,\n } = props;\n\n const { onHelp, onResponseChange, onTeacherValidation, loggerRef } = props;\n const {\n navigationMode,\n canAttempt,\n hints,\n checkButtonLabel,\n retryButtonLabel,\n validation,\n maximumAttempts,\n canExceedAttempts,\n teacherValidationEnabled,\n canTeacherValidate,\n hintsTimer,\n skippableTime,\n skippable,\n } = behavior;\n\n const { response_id, item_type, type, instructor_stimulus, is_optional } = question;\n const hintsAvailable = !hints\n ? 0\n : learnosity.question(response_id)?.getMetadata()?.hints?.length ?? 0;\n\n const isSystemIntro = instructor_stimulus === 'SystemIntro';\n const isExitTicket = item_type === 'exit-ticket';\n const hintsRemaining = canAttempt && hintsAvailable - (response?.hintsUsed ?? 0) > 0;\n\n const [showHintsButton, setShowHintsButton] = useState(false);\n const [skipped, setSkipped] = useState(false);\n const [showSkipButton, setShowSkipButton] = useState(false);\n\n useEffect(() => {\n if (hintsTimer && hintsRemaining) {\n const timeoutId = setTimeout(() => {\n setShowHintsButton(true);\n }, hintsTimer * 1000);\n\n return () => clearTimeout(timeoutId);\n }\n setShowHintsButton(hintsRemaining);\n }, [hintsTimer, hintsRemaining]);\n\n useEffect(() => {\n const canShowSkip = !response?.response && !response?.skipped;\n\n //* If hints are available and user has exhausted all hints then we show skip button.\n //* If hints are not available and user has not given any response or have not skipped a question then we show skip button after skippableTime/ 90 seconds.\n //* Else skip button is hidden.\n if (skippable) {\n if (hintsAvailable > 0 && !hintsRemaining) {\n setShowSkipButton(canShowSkip);\n } else if (hintsAvailable === 0 && canShowSkip) {\n const timeoutId = setTimeout(\n () => {\n setShowSkipButton(canShowSkip);\n },\n (skippableTime ?? 0) * 1000,\n );\n\n return () => clearTimeout(timeoutId);\n } else {\n setShowSkipButton(false);\n }\n }\n }, [hintsAvailable, hintsRemaining, response, skippable, skippableTime]);\n\n const {\n checkButton,\n checkButtonDisabled,\n hintsButton,\n retryButton,\n nextButton,\n nextButtonDisabled,\n startButton,\n readyButton,\n validateButton,\n skipSectionButton,\n submitAttemptButton,\n skipButton,\n } = useMemo<IButtonTypes>(() => {\n const showSkipSectionButton =\n canTeacherValidate && is_optional && response?.assignStatus === 'assigned';\n\n const getSystemValidationButtons = (): IButtonTypes => {\n //* maximumAttempts = -2 means this is a puzzle card.\n if (maximumAttempts === -2) {\n if (userType === 'STUDENT') {\n if (canAttempt) {\n return {\n hintsButton: showHintsButton,\n };\n }\n }\n\n return {};\n }\n\n if (!canAttempt) {\n return {\n nextButton: true,\n };\n }\n\n if (!validation && behavior.navigationMode === 'LINEAR') {\n return {\n nextButton: true,\n nextButtonDisabled: !response?.response,\n hintsButton: showHintsButton,\n skipButton: showSkipButton,\n };\n }\n\n if (!validation) {\n return {\n nextButton: true,\n hintsButton: showHintsButton,\n };\n }\n\n if (!response || !response.response || !response.score) {\n return {\n checkButton: true,\n checkButtonDisabled: true,\n hintsButton: showHintsButton,\n };\n }\n\n const { responseEdited, score, attemptsHistory } = response;\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n if (maximumAttemptsReached && !canExceedAttempts) {\n return {\n nextButton: true,\n };\n }\n\n if (responseEdited) {\n const lastAttemptResponse = attemptsHistory?.slice(-1)[0]?.response;\n\n return {\n nextButton: maximumAttemptsReached,\n checkButton: true,\n checkButtonDisabled: deepEqual(response.response, lastAttemptResponse),\n hintsButton: showHintsButton,\n };\n }\n\n if ((score.score ?? 0) < score.max_score) {\n return {\n nextButton: maximumAttemptsReached,\n retryButton: true,\n hintsButton: showHintsButton,\n };\n }\n\n if ((score.score ?? 0) === score.max_score) {\n return {\n nextButton: true,\n };\n }\n\n return {};\n };\n\n const isPendingTeacherValidation = () =>\n questions.some(({ response_id: questionId }) => {\n const { assignStatus, validatedByTeacher } = responses[questionId] ?? {};\n\n return assignStatus === 'skipped' ? false : validatedByTeacher !== true;\n });\n\n if (teacherValidationEnabled) {\n const { validatedByTeacher } = response ?? {};\n\n // TODO: change the condition to if teacher validator is needed or not\n if (navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT') {\n if (userType === 'STUDENT') {\n return {\n hintsButton: showHintsButton,\n validateButton: false,\n };\n }\n\n return {\n validateButton: false,\n };\n }\n\n if (validatedByTeacher) {\n return {\n validateButton: true,\n submitAttemptButton:\n canTeacherValidate && canAttempt && userType === 'STUDENT' && canSubmitWorksheet\n ? !isPendingTeacherValidation()\n : false,\n };\n }\n\n if (!isQuestionUnlocked) {\n return {};\n }\n\n if (userType === 'STUDENT') {\n if (isSystemIntro) {\n return {\n startButton: canTeacherValidate && canAttempt,\n };\n }\n\n if (type !== 'clozetext') {\n return {\n ...getSystemValidationButtons(),\n nextButton: false,\n };\n }\n\n return {\n hintsButton: showHintsButton,\n readyButton: canTeacherValidate && isExitTicket && !response?.submittedByStudent,\n };\n }\n\n if (isSystemIntro) {\n return {\n skipSectionButton: showSkipSectionButton,\n };\n }\n\n if (type !== 'clozetext') {\n const { responseEdited, score } = response ?? {};\n\n return {\n skipSectionButton: showSkipSectionButton,\n validateButton:\n responseEdited || !canTeacherValidate\n ? false\n : !!(score?.score && score?.max_score && !((score.score ?? 0) < score.max_score)),\n };\n }\n\n return {\n skipSectionButton: showSkipSectionButton,\n validateButton: canTeacherValidate && (isExitTicket ? response?.submittedByStudent : true),\n };\n }\n\n return getSystemValidationButtons();\n }, [\n canTeacherValidate,\n is_optional,\n response,\n teacherValidationEnabled,\n canAttempt,\n validation,\n behavior.navigationMode,\n maximumAttempts,\n canExceedAttempts,\n showHintsButton,\n showSkipButton,\n questions,\n responses,\n navigationMode,\n isQuestionUnlocked,\n userType,\n isSystemIntro,\n type,\n isExitTicket,\n canSubmitWorksheet,\n ]);\n\n const {\n handleResponseChange,\n handleHelpButtonClick,\n handleBackButtonClick,\n handleNextButtonClick,\n handleCheckButtonClick,\n handleRetryButtonClick,\n handleHintButtonClick,\n handleValidateButtonClick,\n handleStartButtonClick,\n handleSkipSectionButtonClick,\n handleReadyButtonClick,\n handleSkipButtonClick,\n } = useHandlerCallbacks({\n layout,\n question,\n questions,\n learnosity,\n questionIndex,\n setActiveQuestionId,\n setSummaryVisible,\n setBlocker,\n setResponses,\n onResponseChange,\n onTeacherValidation,\n onHelp,\n behavior,\n loggerRef,\n setSkipped,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n if (skipped) {\n setSkipped(false);\n setShowSkipButton(false);\n handleNextButtonClick();\n if (onSkip) {\n onSkip(question.item_display_number, question.question_number);\n }\n }\n }, [\n handleNextButtonClick,\n onSkip,\n question.item_display_number,\n question.question_number,\n skipped,\n ]);\n\n useEffect(() => {\n const questionInstance = isQuestionAppended ? learnosity.question(response_id) : undefined;\n\n if (questionInstance && canAttempt && (!validation || checkButton)) {\n questionInstance.on('changed', handleResponseChange);\n questionInstance.enable();\n }\n\n return () => {\n if (questionInstance && canAttempt && (!validation || checkButton)) {\n questionInstance.off('changed', handleResponseChange);\n questionInstance.disable();\n }\n };\n }, [\n canAttempt,\n checkButton,\n handleResponseChange,\n isQuestionAppended,\n learnosity,\n response_id,\n validation,\n ]);\n\n return (\n <FlexView\n $background=\"WHITE\"\n $flexDirection=\"row\"\n $flexGapX={0.5}\n $alignItems=\"center\"\n $justifyContent=\"flex-end\"\n >\n {hintsButton && (\n <IconButton\n Icon={QuestionIcon}\n analyticsLabel=\"Hint\"\n renderAs=\"secondary\"\n disabled={!isQuestionAppended}\n onClick={handleHintButtonClick}\n />\n )}\n {!hintsButton && handleHelpButtonClick && (checkButton || retryButton) && (\n <IconButton\n Icon={HandIcon}\n analyticsLabel=\"Ask for help\"\n renderAs=\"secondary\"\n onClick={handleHelpButtonClick}\n />\n )}\n {handleBackButtonClick && (\n <Button\n widthX={6}\n renderAs=\"secondary\"\n size=\"small\"\n label=\"Back\"\n disabled={questionIndex === 0}\n onClick={handleBackButtonClick}\n />\n )}\n {skipButton && (\n <Button\n widthX={6}\n renderAs={retryButton ? 'secondary' : 'primary'}\n size=\"small\"\n label=\"Skip\"\n onClick={handleSkipButtonClick}\n />\n )}\n {nextButton && (\n <Button\n widthX={6}\n renderAs={retryButton ? 'secondary' : 'primary'}\n size=\"small\"\n label=\"Next\"\n onClick={handleNextButtonClick}\n disabled={nextButtonDisabled === true}\n />\n )}\n {retryButton && (\n <Button\n widthX={6}\n renderAs=\"primary\"\n size=\"small\"\n label={retryButtonLabel}\n disabled={!isQuestionAppended}\n onClick={handleRetryButtonClick}\n />\n )}\n {checkButton && (\n <Button\n renderAs=\"primary\"\n size=\"small\"\n label={checkButtonLabel}\n disabled={checkButtonDisabled === true || !isQuestionAppended}\n onClick={handleCheckButtonClick}\n />\n )}\n {startButton && (\n <Button renderAs=\"primary\" size=\"small\" label=\"Start\" onClick={handleStartButtonClick} />\n )}\n {readyButton && (\n <Button renderAs=\"primary\" size=\"small\" label=\"Submit\" onClick={handleReadyButtonClick} />\n )}\n {skipSectionButton && (\n <IconButton\n renderAs=\"primary\"\n Icon={SkipIcon}\n analyticsLabel=\"Skip Section\"\n onClick={handleSkipSectionButtonClick}\n />\n )}\n {!submitAttemptButton && validateButton && (\n <IconButton\n renderAs=\"primary\"\n Icon={Check2Icon}\n disabled={response?.validatedByTeacher}\n analyticsLabel=\"Validate\"\n onClick={handleValidateButtonClick}\n />\n )}\n {submitAttemptButton && (\n <Button renderAs=\"primary\" size=\"small\" label=\"Submit\" onClick={onSubmit} />\n )}\n {actionBarRightElement && actionBarRightElement}\n </FlexView>\n );\n});\n\nexport default WorksheetQuestionsController;\n"],"names":["WorksheetQuestionsController","memo","props","layout","learnosity","question","questions","responses","questionIndex","canSubmitWorksheet","isQuestionUnlocked","isQuestionAppended","response","behavior","userType","setActiveQuestionId","setSummaryVisible","setBlocker","setResponses","getTimeSpentOnQuestion","onSkip","actionBarRightElement","onSubmit","onHelp","onResponseChange","onTeacherValidation","loggerRef","navigationMode","canAttempt","hints","checkButtonLabel","retryButtonLabel","validation","maximumAttempts","canExceedAttempts","teacherValidationEnabled","canTeacherValidate","hintsTimer","skippableTime","skippable","response_id","item_type","type","instructor_stimulus","is_optional","hintsAvailable","_c","_b","_a","isSystemIntro","isExitTicket","hintsRemaining","showHintsButton","setShowHintsButton","useState","skipped","setSkipped","showSkipButton","setShowSkipButton","useEffect","timeoutId","canShowSkip","checkButton","checkButtonDisabled","hintsButton","retryButton","nextButton","nextButtonDisabled","startButton","readyButton","validateButton","skipSectionButton","submitAttemptButton","skipButton","useMemo","showSkipSectionButton","getSystemValidationButtons","responseEdited","score","attemptsHistory","maximumAttemptsReached","lastAttemptResponse","deepEqual","isPendingTeacherValidation","questionId","assignStatus","validatedByTeacher","handleResponseChange","handleHelpButtonClick","handleBackButtonClick","handleNextButtonClick","handleCheckButtonClick","handleRetryButtonClick","handleHintButtonClick","handleValidateButtonClick","handleStartButtonClick","handleSkipSectionButtonClick","handleReadyButtonClick","handleSkipButtonClick","useHandlerCallbacks","questionInstance","jsxs","FlexView","jsx","IconButton","QuestionIcon","HandIcon","Button","SkipIcon","Check2Icon"],"mappings":"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"}
1
+ {"version":3,"file":"worksheet-questions-controller.js","sources":["../../../../../src/features/worksheet/worksheet/worksheet-questions-controller/worksheet-questions-controller.tsx"],"sourcesContent":["import type {\n IButtonTypes,\n IWorksheetQuestionsControllerProps,\n} from './worksheet-questions-controller-types';\nimport type { FC } from 'react';\n\nimport { deepEqual } from 'fast-equals';\nimport { memo, useEffect, useMemo, useState } from 'react';\n\nimport Check2Icon from '../../../../assets/line-icons/icons/check2';\nimport HandIcon from '../../../../assets/line-icons/icons/hand';\nimport QuestionIcon from '../../../../assets/line-icons/icons/question';\nimport SkipIcon from '../../../../assets/line-icons/icons/skip';\nimport Button from '../../../ui/buttons/button/button';\nimport IconButton from '../../../ui/buttons/icon-button/icon-button';\nimport FlexView from '../../../ui/layout/flex-view';\nimport useHandlerCallbacks from './use-handler-callbacks';\n\nconst WorksheetQuestionsController: FC<IWorksheetQuestionsControllerProps> = memo(props => {\n const {\n layout,\n learnosity,\n question,\n questions,\n responses,\n questionIndex,\n canSubmitWorksheet,\n isQuestionUnlocked,\n isQuestionAppended,\n response,\n behavior,\n userType,\n setActiveQuestionId,\n setSummaryVisible,\n setBlocker,\n setResponses,\n getTimeSpentOnQuestion,\n onSkip,\n actionBarRightElement,\n } = props;\n\n const { onHelp, onResponseChange, onTeacherValidation, loggerRef } = props;\n const {\n navigationMode,\n canAttempt,\n hints,\n checkButtonLabel,\n retryButtonLabel,\n validation,\n maximumAttempts,\n canExceedAttempts,\n teacherValidationEnabled,\n canTeacherValidate,\n hintsTimer,\n skippableTime,\n skippable,\n } = behavior;\n\n const { response_id, item_type, type, instructor_stimulus, is_optional } = question;\n const hintsAvailable = !hints\n ? 0\n : learnosity.question(response_id)?.getMetadata()?.hints?.length ?? 0;\n\n const isSystemIntro = instructor_stimulus === 'SystemIntro';\n const isExitTicket = item_type === 'exit-ticket';\n const hintsRemaining = canAttempt && hintsAvailable - (response?.hintsUsed ?? 0) > 0;\n\n const [showHintsButton, setShowHintsButton] = useState(false);\n const [skipped, setSkipped] = useState(false);\n const [showSkipButton, setShowSkipButton] = useState(false);\n\n useEffect(() => {\n if (hintsTimer && hintsRemaining) {\n const timeoutId = setTimeout(() => {\n setShowHintsButton(true);\n }, hintsTimer * 1000);\n\n return () => clearTimeout(timeoutId);\n }\n setShowHintsButton(hintsRemaining);\n }, [hintsTimer, hintsRemaining]);\n\n useEffect(() => {\n const canShowSkip = !response?.response && !response?.skipped;\n\n //* If hints are available and user has exhausted all hints then we show skip button.\n //* If hints are not available and user has not given any response or have not skipped a question then we show skip button after skippableTime/ 90 seconds.\n //* Else skip button is hidden.\n if (skippable) {\n if (hintsAvailable > 0 && !hintsRemaining) {\n setShowSkipButton(canShowSkip);\n } else if (hintsAvailable === 0 && canShowSkip) {\n const timeoutId = setTimeout(\n () => {\n setShowSkipButton(canShowSkip);\n },\n (skippableTime ?? 0) * 1000,\n );\n\n return () => clearTimeout(timeoutId);\n } else {\n setShowSkipButton(false);\n }\n }\n }, [hintsAvailable, hintsRemaining, response, skippable, skippableTime]);\n\n const {\n checkButton,\n checkButtonDisabled,\n hintsButton,\n retryButton,\n nextButton,\n nextButtonDisabled,\n startButton,\n readyButton,\n validateButton,\n skipSectionButton,\n submitAttemptButton,\n skipButton,\n } = useMemo<IButtonTypes>(() => {\n const showSkipSectionButton =\n canTeacherValidate && is_optional && response?.assignStatus === 'assigned';\n\n const getSystemValidationButtons = (): IButtonTypes => {\n //* maximumAttempts = -2 means this is a puzzle card.\n if (maximumAttempts === -2) {\n if (userType === 'STUDENT') {\n if (canAttempt) {\n return {\n hintsButton: showHintsButton,\n };\n }\n }\n\n return {};\n }\n\n if (!canAttempt) {\n return {\n nextButton: true,\n };\n }\n\n if (!validation && behavior.navigationMode === 'LINEAR') {\n return {\n nextButton: true,\n nextButtonDisabled: !response?.response,\n hintsButton: showHintsButton,\n skipButton: showSkipButton,\n };\n }\n\n if (!validation) {\n return {\n nextButton: true,\n hintsButton: showHintsButton,\n };\n }\n\n if (!response || !response.response || !response.score) {\n return {\n checkButton: true,\n checkButtonDisabled: true,\n hintsButton: showHintsButton,\n };\n }\n\n const { responseEdited, score, attemptsHistory } = response;\n const maximumAttemptsReached = (attemptsHistory?.length ?? 0) >= maximumAttempts;\n\n if (maximumAttemptsReached && !canExceedAttempts) {\n return {\n nextButton: true,\n };\n }\n\n if (responseEdited) {\n const lastAttemptResponse = attemptsHistory?.slice(-1)[0]?.response;\n\n return {\n nextButton: maximumAttemptsReached,\n checkButton: true,\n checkButtonDisabled: deepEqual(response.response, lastAttemptResponse),\n hintsButton: showHintsButton,\n };\n }\n\n if ((score.score ?? 0) < score.max_score) {\n return {\n nextButton: maximumAttemptsReached,\n retryButton: true,\n hintsButton: showHintsButton,\n };\n }\n\n if ((score.score ?? 0) === score.max_score) {\n return {\n nextButton: true,\n };\n }\n\n return {};\n };\n\n const isPendingTeacherValidation = () =>\n questions.some(({ response_id: questionId }) => {\n const { assignStatus, validatedByTeacher } = responses[questionId] ?? {};\n\n return assignStatus === 'skipped' ? false : validatedByTeacher !== true;\n });\n\n if (teacherValidationEnabled) {\n const { validatedByTeacher } = response ?? {};\n\n // TODO: change the condition to if teacher validator is needed or not\n if (navigationMode === 'ADAPTIVE' || navigationMode === 'CURRENT') {\n if (userType === 'STUDENT') {\n return {\n hintsButton: showHintsButton,\n validateButton: false,\n };\n }\n\n return {\n validateButton: false,\n };\n }\n\n if (validatedByTeacher) {\n return {\n validateButton: true,\n submitAttemptButton:\n canTeacherValidate && canAttempt && userType === 'STUDENT' && canSubmitWorksheet\n ? !isPendingTeacherValidation()\n : false,\n };\n }\n\n if (!isQuestionUnlocked) {\n return {};\n }\n\n if (userType === 'STUDENT') {\n if (isSystemIntro) {\n return {\n startButton: canTeacherValidate && canAttempt,\n };\n }\n\n if (type !== 'clozetext') {\n return {\n ...getSystemValidationButtons(),\n nextButton: false,\n };\n }\n\n return {\n hintsButton: showHintsButton,\n readyButton: canTeacherValidate && isExitTicket && !response?.submittedByStudent,\n };\n }\n\n if (isSystemIntro) {\n return {\n skipSectionButton: showSkipSectionButton,\n };\n }\n\n if (type !== 'clozetext') {\n const { responseEdited, score } = response ?? {};\n\n return {\n skipSectionButton: showSkipSectionButton,\n validateButton:\n responseEdited || !canTeacherValidate\n ? false\n : !!(score?.score && score?.max_score && !((score.score ?? 0) < score.max_score)),\n };\n }\n\n return {\n skipSectionButton: showSkipSectionButton,\n validateButton: canTeacherValidate && (isExitTicket ? response?.submittedByStudent : true),\n };\n }\n\n return getSystemValidationButtons();\n }, [\n canTeacherValidate,\n is_optional,\n response,\n teacherValidationEnabled,\n canAttempt,\n validation,\n behavior.navigationMode,\n maximumAttempts,\n canExceedAttempts,\n showHintsButton,\n showSkipButton,\n questions,\n responses,\n navigationMode,\n isQuestionUnlocked,\n userType,\n isSystemIntro,\n type,\n isExitTicket,\n canSubmitWorksheet,\n ]);\n\n const {\n handleResponseChange,\n handleHelpButtonClick,\n handleBackButtonClick,\n handleNextButtonClick,\n handleCheckButtonClick,\n handleRetryButtonClick,\n handleHintButtonClick,\n handleValidateButtonClick,\n handleStartButtonClick,\n handleSkipSectionButtonClick,\n handleReadyButtonClick,\n handleSkipButtonClick,\n } = useHandlerCallbacks({\n layout,\n question,\n questions,\n learnosity,\n questionIndex,\n setActiveQuestionId,\n setSummaryVisible,\n setBlocker,\n setResponses,\n onResponseChange,\n onTeacherValidation,\n onHelp,\n behavior,\n loggerRef,\n setSkipped,\n getTimeSpentOnQuestion,\n });\n\n useEffect(() => {\n if (skipped) {\n setSkipped(false);\n setShowSkipButton(false);\n handleNextButtonClick();\n if (onSkip) {\n onSkip(question.item_display_number, question.question_number);\n }\n }\n }, [\n handleNextButtonClick,\n onSkip,\n question.item_display_number,\n question.question_number,\n skipped,\n ]);\n\n useEffect(() => {\n const questionInstance = isQuestionAppended ? learnosity.question(response_id) : undefined;\n\n if (questionInstance && canAttempt && (!validation || checkButton)) {\n questionInstance.on('changed', handleResponseChange);\n questionInstance.enable();\n }\n\n return () => {\n if (questionInstance && canAttempt && (!validation || checkButton)) {\n questionInstance.off('changed', handleResponseChange);\n questionInstance.disable();\n }\n };\n }, [\n canAttempt,\n checkButton,\n handleResponseChange,\n isQuestionAppended,\n learnosity,\n response_id,\n validation,\n ]);\n\n return (\n <FlexView\n $background=\"WHITE\"\n $flexDirection=\"row\"\n $flexGapX={0.5}\n $alignItems=\"center\"\n $justifyContent=\"flex-end\"\n >\n {hintsButton && (\n <IconButton\n Icon={QuestionIcon}\n analyticsLabel=\"Hint\"\n renderAs=\"secondary\"\n disabled={!isQuestionAppended}\n onClick={handleHintButtonClick}\n />\n )}\n {!hintsButton && handleHelpButtonClick && (checkButton || retryButton) && (\n <IconButton\n Icon={HandIcon}\n analyticsLabel=\"Ask for help\"\n renderAs=\"secondary\"\n onClick={handleHelpButtonClick}\n />\n )}\n {handleBackButtonClick && (\n <Button\n widthX={6}\n renderAs=\"secondary\"\n size=\"small\"\n label=\"Back\"\n disabled={questionIndex === 0}\n onClick={handleBackButtonClick}\n />\n )}\n {skipButton && (\n <Button\n widthX={6}\n renderAs={retryButton ? 'secondary' : 'primary'}\n size=\"small\"\n label=\"Skip\"\n onClick={handleSkipButtonClick}\n />\n )}\n {nextButton && (\n <Button\n widthX={6}\n renderAs={retryButton ? 'secondary' : 'primary'}\n size=\"small\"\n label=\"Next\"\n onClick={handleNextButtonClick}\n disabled={nextButtonDisabled === true}\n />\n )}\n {retryButton && (\n <Button\n widthX={6}\n renderAs=\"primary\"\n size=\"small\"\n label={retryButtonLabel}\n disabled={!isQuestionAppended}\n onClick={handleRetryButtonClick}\n />\n )}\n {checkButton && (\n <Button\n renderAs=\"primary\"\n size=\"small\"\n label={checkButtonLabel}\n disabled={checkButtonDisabled === true || !isQuestionAppended}\n onClick={handleCheckButtonClick}\n />\n )}\n {startButton && (\n <Button renderAs=\"primary\" size=\"small\" label=\"Start\" onClick={handleStartButtonClick} />\n )}\n {readyButton && (\n <Button renderAs=\"primary\" size=\"small\" label=\"Submit\" onClick={handleReadyButtonClick} />\n )}\n {skipSectionButton && (\n <IconButton\n renderAs=\"primary\"\n Icon={SkipIcon}\n analyticsLabel=\"Skip Section\"\n onClick={handleSkipSectionButtonClick}\n />\n )}\n {!submitAttemptButton && validateButton && (\n <IconButton\n renderAs=\"primary\"\n Icon={Check2Icon}\n disabled={response?.validatedByTeacher}\n analyticsLabel=\"Validate\"\n onClick={handleValidateButtonClick}\n />\n )}\n {actionBarRightElement && actionBarRightElement}\n </FlexView>\n );\n});\n\nexport default WorksheetQuestionsController;\n"],"names":["WorksheetQuestionsController","memo","props","layout","learnosity","question","questions","responses","questionIndex","canSubmitWorksheet","isQuestionUnlocked","isQuestionAppended","response","behavior","userType","setActiveQuestionId","setSummaryVisible","setBlocker","setResponses","getTimeSpentOnQuestion","onSkip","actionBarRightElement","onHelp","onResponseChange","onTeacherValidation","loggerRef","navigationMode","canAttempt","hints","checkButtonLabel","retryButtonLabel","validation","maximumAttempts","canExceedAttempts","teacherValidationEnabled","canTeacherValidate","hintsTimer","skippableTime","skippable","response_id","item_type","type","instructor_stimulus","is_optional","hintsAvailable","_c","_b","_a","isSystemIntro","isExitTicket","hintsRemaining","showHintsButton","setShowHintsButton","useState","skipped","setSkipped","showSkipButton","setShowSkipButton","useEffect","timeoutId","canShowSkip","checkButton","checkButtonDisabled","hintsButton","retryButton","nextButton","nextButtonDisabled","startButton","readyButton","validateButton","skipSectionButton","submitAttemptButton","skipButton","useMemo","showSkipSectionButton","getSystemValidationButtons","responseEdited","score","attemptsHistory","maximumAttemptsReached","lastAttemptResponse","deepEqual","isPendingTeacherValidation","questionId","assignStatus","validatedByTeacher","handleResponseChange","handleHelpButtonClick","handleBackButtonClick","handleNextButtonClick","handleCheckButtonClick","handleRetryButtonClick","handleHintButtonClick","handleValidateButtonClick","handleStartButtonClick","handleSkipSectionButtonClick","handleReadyButtonClick","handleSkipButtonClick","useHandlerCallbacks","questionInstance","jsxs","FlexView","jsx","IconButton","QuestionIcon","HandIcon","Button","SkipIcon","Check2Icon"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -335,6 +335,8 @@ export declare const Coachmark: React_2.FC<{
335
335
 
336
336
  export declare const CodeIcon: React.FC<React.SVGProps<SVGSVGElement>>;
337
337
 
338
+ export declare const CompactHeader: MemoExoticComponent<({ progressPercentage, showProgress, HeaderAvatar }: ICompactHeaderProps) => JSX.Element | null>;
339
+
338
340
  export declare const COMPLETED_SHEET_STATE: TSheetStateProps[];
339
341
 
340
342
  export declare const ContextMenu: FC<IContextMenuProps>;
@@ -1327,6 +1329,12 @@ export declare interface ICoachmarkProps {
1327
1329
  isActive: boolean;
1328
1330
  }
1329
1331
 
1332
+ declare interface ICompactHeaderProps {
1333
+ showProgress?: boolean;
1334
+ progressPercentage?: number;
1335
+ HeaderAvatar: ReactElement;
1336
+ }
1337
+
1330
1338
  export declare const IconButton: FC<IIconButtonProps>;
1331
1339
 
1332
1340
  declare interface IconProps extends React_2.SVGProps<SVGSVGElement> {
@@ -2401,7 +2409,7 @@ declare interface IMaintenanceProps {
2401
2409
  }
2402
2410
 
2403
2411
  declare interface IMathPracticeProps {
2404
- onSwitchUser: () => void;
2412
+ onSwitchUser?: () => void;
2405
2413
  }
2406
2414
 
2407
2415
  export declare interface IMessageProps {
@@ -2887,6 +2895,19 @@ export declare interface IOutcomeStageData {
2887
2895
  achievementAction?: string | null;
2888
2896
  }
2889
2897
 
2898
+ declare interface IParentDashboardProps {
2899
+ studentName: string;
2900
+ studentServiceId: string;
2901
+ onRescheduleDemo: (demoId?: string) => void;
2902
+ onChangeTutor: (demoId: string) => void;
2903
+ onGetStartedAgain?: () => void;
2904
+ onViewSummary?: (key: string) => void;
2905
+ onSwitchUser?: () => void;
2906
+ canChangeTutor: boolean;
2907
+ isSubscriptionCancelled: boolean;
2908
+ HeaderAvatar: ReactElement;
2909
+ }
2910
+
2890
2911
  declare interface IPercentileProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'>, Omit<IBaseInputProps, 'inputElement'> {
2891
2912
  }
2892
2913
 
@@ -3372,7 +3393,7 @@ declare interface ISessionStatusProps {
3372
3393
  declare interface ISessionSummaryProps {
3373
3394
  isDemoDone: boolean;
3374
3395
  studentName: string;
3375
- onViewSummary: (key: string) => void;
3396
+ onViewSummary?: (key: string) => void;
3376
3397
  }
3377
3398
 
3378
3399
  declare interface IShareInstructionModalProps {
@@ -3998,7 +4019,7 @@ export declare interface ITutorialProps {
3998
4019
  }
3999
4020
 
4000
4021
  declare interface IUpcomingSessionsProps {
4001
- sessions: TSession[];
4022
+ sessions?: TSession[];
4002
4023
  }
4003
4024
 
4004
4025
  declare interface IUpdateImages {
@@ -4951,6 +4972,8 @@ export declare const OverlayLoader: MemoExoticComponent<({ isLoading }: {
4951
4972
  isLoading?: boolean | undefined;
4952
4973
  }) => JSX.Element | null>;
4953
4974
 
4975
+ export declare const ParentDashboard: MemoExoticComponent<(props: IParentDashboardProps) => JSX.Element>;
4976
+
4954
4977
  export declare const ParentDashboardFaqs: () => JSX.Element;
4955
4978
 
4956
4979
  export declare const PencilIcon: React.FC<React.SVGProps<SVGSVGElement>>;