@cuemath/leap 3.5.71 → 3.5.73

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 (133) hide show
  1. package/dist/features/homework/homework-card.js +222 -206
  2. package/dist/features/homework/homework-card.js.map +1 -1
  3. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js +66 -61
  4. package/dist/features/milestone/create/comps/add-custom-chapter/add-custom-chapter.js.map +1 -1
  5. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js +41 -40
  6. package/dist/features/milestone/create/comps/add-custom-chapter/course-catalog.js.map +1 -1
  7. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js +32 -25
  8. package/dist/features/milestone/create/comps/add-custom-chapter/search-chapter/search-chapters.js.map +1 -1
  9. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js +14 -12
  10. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapter-item.js.map +1 -1
  11. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js +17 -10
  12. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/selected-chapters.js.map +1 -1
  13. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js +6 -6
  14. package/dist/features/milestone/create/comps/add-custom-chapter/selected-chapters/tags-render.js.map +1 -1
  15. package/dist/features/milestone/create/comps/body-layout/body-layout.js +23 -22
  16. package/dist/features/milestone/create/comps/body-layout/body-layout.js.map +1 -1
  17. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js +78 -75
  18. package/dist/features/milestone/create/comps/chapters-selection-step/chapters-selection-step.js.map +1 -1
  19. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js +52 -48
  20. package/dist/features/milestone/create/comps/goal-completion-date-selector/goal-completion-date-selector.js.map +1 -1
  21. package/dist/features/milestone/create/milestone-create-styled.js +10 -8
  22. package/dist/features/milestone/create/milestone-create-styled.js.map +1 -1
  23. package/dist/features/milestone/create/milestone-create.js +53 -49
  24. package/dist/features/milestone/create/milestone-create.js.map +1 -1
  25. package/dist/features/milestone/edit/goal-draft-edit-sync.js +25 -0
  26. package/dist/features/milestone/edit/goal-draft-edit-sync.js.map +1 -0
  27. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js +70 -62
  28. package/dist/features/milestone/edit/goal-drafts/goal-draft-edit-container.js.map +1 -1
  29. package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js +82 -0
  30. package/dist/features/milestone/edit/hooks/use-milestone-edit-sync.js.map +1 -0
  31. package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js +49 -0
  32. package/dist/features/milestone/milestone-list-container/hooks/use-milestone-list-sync.js.map +1 -0
  33. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js +111 -107
  34. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-list.js.map +1 -1
  35. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js +14 -14
  36. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/goals/goal-action-ctas.js.map +1 -1
  37. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js +9 -9
  38. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-info.js.map +1 -1
  39. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js +22 -17
  40. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs-styled.js.map +1 -1
  41. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js +102 -96
  42. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-tabs/milestone-tabs.js.map +1 -1
  43. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js +130 -114
  44. package/dist/features/milestone/milestone-list-container/milestone-list/milestone-widget/milestone-widget.js.map +1 -1
  45. package/dist/features/milestone/milestone-list-container/milestone-list-container.js +111 -107
  46. package/dist/features/milestone/milestone-list-container/milestone-list-container.js.map +1 -1
  47. package/dist/features/milestone/milestone-list-container/milestone-list-sync.js +25 -0
  48. package/dist/features/milestone/milestone-list-container/milestone-list-sync.js.map +1 -0
  49. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js +91 -81
  50. package/dist/features/milestone/milestone-resources/resources-assign/added-resource-and-filters.js.map +1 -1
  51. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js +28 -24
  52. package/dist/features/milestone/milestone-resources/resources-assign/comps/filter-item/filter-item.js.map +1 -1
  53. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js +47 -34
  54. package/dist/features/milestone/milestone-resources/resources-assign/comps/resource-item/resource-item.js.map +1 -1
  55. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-store.js +7 -0
  56. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-store.js.map +1 -0
  57. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js +68 -0
  58. package/dist/features/milestone/milestone-resources/resources-assign/hooks/use-resource-assign-sync.js.map +1 -0
  59. package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js +17 -0
  60. package/dist/features/milestone/milestone-resources/resources-assign/resource-assign-sync.js.map +1 -0
  61. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js +45 -49
  62. package/dist/features/milestone/milestone-resources/resources-assign/resource-items/resource-items.js.map +1 -1
  63. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js +211 -162
  64. package/dist/features/milestone/milestone-resources/resources-assign/resources-assign.js.map +1 -1
  65. package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js +150 -0
  66. package/dist/features/milestone/milestone-resources/resources-assign/store/resource-assign-store.js.map +1 -0
  67. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js +70 -68
  68. package/dist/features/milestone/milestone-resources/resources-list/resources-list.js.map +1 -1
  69. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js +62 -60
  70. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-container.js.map +1 -1
  71. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js +36 -34
  72. package/dist/features/milestone/milestone-tests/test-list-v2/test-list-view.js.map +1 -1
  73. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-store.js +7 -0
  74. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-store.js.map +1 -0
  75. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js +65 -0
  76. package/dist/features/milestone/milestone-tests/tests-creation/hooks/use-tests-creation-sync.js.map +1 -0
  77. package/dist/features/milestone/milestone-tests/tests-creation/store/tests-creation-store.js +63 -0
  78. package/dist/features/milestone/milestone-tests/tests-creation/store/tests-creation-store.js.map +1 -0
  79. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js +50 -42
  80. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/chapter-selection/chapter-selection.js.map +1 -1
  81. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js +67 -63
  82. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/difficulty-and-duration-selection/difficulty-and-duration-selection.js.map +1 -1
  83. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js +7 -5
  84. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview-styled.js.map +1 -1
  85. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js +36 -26
  86. package/dist/features/milestone/milestone-tests/tests-creation/test-stages/test-preview/test-preview.js.map +1 -1
  87. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js +17 -0
  88. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-sync.js.map +1 -0
  89. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js +5 -0
  90. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation-types.js.map +1 -0
  91. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js +138 -89
  92. package/dist/features/milestone/milestone-tests/tests-creation/tests-creation.js.map +1 -1
  93. package/dist/features/sheet-v2/resource-list/resource-list.js +28 -26
  94. package/dist/features/sheet-v2/resource-list/resource-list.js.map +1 -1
  95. package/dist/features/trial-session/comps/learning-plan/index.js +303 -91
  96. package/dist/features/trial-session/comps/learning-plan/index.js.map +1 -1
  97. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js +7 -6
  98. package/dist/features/trial-session/comps/learning-plan/learning-plan-styled.js.map +1 -1
  99. package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js +75 -0
  100. package/dist/features/trial-session/hooks/use-learning-plan-scroll-sync.js.map +1 -0
  101. package/dist/features/trial-session/hooks/use-trial-session-navigation.js +113 -116
  102. package/dist/features/trial-session/hooks/use-trial-session-navigation.js.map +1 -1
  103. package/dist/features/trial-session/trial-session-types.js +3 -2
  104. package/dist/features/trial-session/trial-session-types.js.map +1 -1
  105. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js +90 -74
  106. package/dist/features/worksheet/worksheet/worksheet-behavior-helper.js.map +1 -1
  107. package/dist/features/worksheet/worksheet/worksheet-types.js.map +1 -1
  108. package/dist/features/worksheet/worksheet/worksheet.js +39 -28
  109. package/dist/features/worksheet/worksheet/worksheet.js.map +1 -1
  110. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js +27 -27
  111. package/dist/features/worksheet/worksheet-preview/dynamic-worksheet-preview/dynamic-worksheet-preview.js.map +1 -1
  112. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js +27 -24
  113. package/dist/features/worksheet/worksheet-preview/hooks/use-worksheet-layout.js.map +1 -1
  114. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js +41 -37
  115. package/dist/features/worksheet/worksheet-preview/worksheet-preview-view.js.map +1 -1
  116. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js +2 -2
  117. package/dist/features/worksheet/worksheet-preview/worksheet-preview.js.map +1 -1
  118. package/dist/index.d.ts +69 -4
  119. package/dist/node_modules/uuid/dist/esm-browser/native.js +7 -0
  120. package/dist/node_modules/uuid/dist/esm-browser/native.js.map +1 -0
  121. package/dist/node_modules/uuid/dist/esm-browser/rng.js +3 -2
  122. package/dist/node_modules/uuid/dist/esm-browser/rng.js.map +1 -1
  123. package/dist/node_modules/uuid/dist/esm-browser/stringify.js +6 -10
  124. package/dist/node_modules/uuid/dist/esm-browser/stringify.js.map +1 -1
  125. package/dist/node_modules/uuid/dist/esm-browser/v4.js +12 -9
  126. package/dist/node_modules/uuid/dist/esm-browser/v4.js.map +1 -1
  127. package/package.json +1 -1
  128. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js +0 -37
  129. package/dist/features/trial-session/comps/learning-plan/use-learning-plan-scroll-sync.js.map +0 -1
  130. package/dist/node_modules/uuid/dist/esm-browser/regex.js +0 -5
  131. package/dist/node_modules/uuid/dist/esm-browser/regex.js.map +0 -1
  132. package/dist/node_modules/uuid/dist/esm-browser/validate.js +0 -8
  133. package/dist/node_modules/uuid/dist/esm-browser/validate.js.map +0 -1
@@ -1,174 +1,190 @@
1
- import { EWorksheetActivity as s } from "../../../types/models/worksheet.js";
2
- import { NODE_TYPE as a } from "../../sheets/constants/sheet.js";
3
- const o = [
4
- a.SAT_ENGLISH_ASSESSMENT,
5
- a.SAT_MATH_ASSESSMENT,
6
- a.ASSESSMENT,
7
- a.CHAPTER_ASSESSMENT,
8
- a.MASTERY,
9
- a.TURING_ASSESSMENT,
10
- a.DYNAMIC,
11
- a.DIAGNOSTIC,
12
- a.TURING_ASSESSMENT
13
- ], N = [
14
- a.TRIAL,
15
- a.TRIAL_BASIC,
16
- a.TRIAL_INTERMEDIATE,
17
- a.TRIAL_ADVANCED,
18
- a.TRIAL_DIAGNOSTIC
19
- ], _ = (m) => {
1
+ import { EWorksheetActivity as c } from "../../../types/models/worksheet.js";
2
+ import { NODE_TYPE as t } from "../../sheets/constants/sheet.js";
3
+ const u = [
4
+ t.SAT_ENGLISH_ASSESSMENT,
5
+ t.SAT_MATH_ASSESSMENT,
6
+ t.ASSESSMENT,
7
+ t.CHAPTER_ASSESSMENT,
8
+ t.MASTERY,
9
+ t.TURING_ASSESSMENT,
10
+ t.DYNAMIC,
11
+ t.DIAGNOSTIC,
12
+ t.TURING_ASSESSMENT
13
+ ], R = [
14
+ t.TRIAL,
15
+ t.TRIAL_BASIC,
16
+ t.TRIAL_INTERMEDIATE,
17
+ t.TRIAL_ADVANCED,
18
+ t.TRIAL_DIAGNOSTIC
19
+ ], L = (N) => {
20
20
  const {
21
- nodeType: c,
22
- activityType: A,
21
+ nodeType: S,
22
+ activityType: s,
23
23
  inClass: r,
24
- isDesmosEnabled: u = !1,
24
+ isDesmosEnabled: I = !1,
25
25
  userType: E,
26
26
  mode: n,
27
- worksheetCompleted: t
28
- } = m, S = N.includes(c), T = o.includes(c), i = n === "resume", e = {
29
- hints: i,
27
+ worksheetCompleted: i,
28
+ behaviorOverride: T
29
+ } = N, m = R.includes(S), o = u.includes(S), A = n === "resume", a = {
30
+ hints: A,
30
31
  navigationMode: "OPEN",
31
- initialQuestion: i || E === "TEACHER" && !t ? "CURRENT" : "FIRST",
32
- maximumAttempts: T ? -1 : 99999,
32
+ initialQuestion: A || E === "TEACHER" && !i ? "CURRENT" : "FIRST",
33
+ maximumAttempts: o ? -1 : 99999,
33
34
  minimumAccuracy: 100,
34
- teacherDiscussionEnabled: A === s.LESSON_V3_1,
35
- teacherValidationEnabled: A === s.LESSON_V3 || S,
36
- canTeacherValidate: !!r && (A === s.LESSON_V3 || S),
37
- validation: E === "STUDENT" && T ? !!t : !0,
35
+ teacherDiscussionEnabled: s === c.LESSON_V3_1,
36
+ teacherValidationEnabled: s === c.LESSON_V3 || m,
37
+ canTeacherValidate: !!r && (s === c.LESSON_V3 || m),
38
+ validation: E === "STUDENT" && o ? !!i : !0,
38
39
  review: !1,
39
- canAttempt: E === "STUDENT" ? i : !1,
40
+ canAttempt: E === "STUDENT" ? A : !1,
40
41
  canExceedAttempts: !0,
41
42
  checkButtonLabel: "Check",
42
43
  retryButtonLabel: "Retry",
43
44
  canMarkForReview: !1,
44
- canShowDesmosCalc: u,
45
+ canShowDesmosCalc: I,
45
46
  canvasEnabled: n !== "preview",
46
47
  canScribble: n !== "preview",
47
48
  solutionHidden: !1
48
49
  };
49
- switch (c) {
50
+ let e;
51
+ switch (S) {
50
52
  case "LEARNING":
51
53
  case "SAT_MATH_LEARNING":
52
54
  case "SAT_ENGLISH_LEARNING":
53
- return {
54
- ...e,
55
- navigationMode: A === s.LESSON_V3 && i && !r ? "OPEN" : "LINEAR",
55
+ e = {
56
+ ...a,
57
+ navigationMode: s === c.LESSON_V3 && A && !r ? "OPEN" : "LINEAR",
56
58
  attemptsAfterTeacherInterventionNeeded: 2,
57
59
  review: !0
58
60
  };
61
+ break;
59
62
  case "GENERAL":
60
63
  case "REMEDIAL":
61
64
  case "RECAP":
62
65
  case "SAT_MATH_RECAP":
63
- return {
64
- ...e,
66
+ e = {
67
+ ...a,
65
68
  maximumAttempts: 1,
66
- navigationMode: t ? "OPEN" : "LINEAR",
69
+ navigationMode: i ? "OPEN" : "LINEAR",
67
70
  review: !0
68
71
  };
72
+ break;
69
73
  case "EXTRA_PRACTICE":
70
74
  case "TARGET_PRACTICE":
71
75
  case "PRACTICE":
72
- return { ...e, maximumAttempts: 1, review: !0 };
76
+ e = { ...a, maximumAttempts: 1, review: !0 };
77
+ break;
73
78
  case "TURING_PRACTICE":
74
- return { ...e, maximumAttempts: 1 };
79
+ e = { ...a, maximumAttempts: 1 };
80
+ break;
75
81
  case "PUZZLE_CARD":
76
- return {
77
- ...e,
82
+ e = {
83
+ ...a,
78
84
  navigationMode: "LINEAR",
79
85
  maximumAttempts: -2,
80
86
  solutionHidden: !0,
81
87
  validation: !1,
82
88
  minimumAccuracy: 0
83
89
  };
90
+ break;
84
91
  case "PUZZLE_EASY":
85
92
  case "PUZZLE_MEDIUM":
86
93
  case "PUZZLE_HARD":
87
- return { ...e, navigationMode: "LINEAR" };
94
+ e = { ...a, navigationMode: "LINEAR" };
95
+ break;
88
96
  case "TRIAL_DIAGNOSTIC":
89
- return { ...e, navigationMode: "ADAPTIVE", review: !0 };
97
+ e = { ...a, navigationMode: "ADAPTIVE", review: !0 };
98
+ break;
90
99
  case "TRIAL":
91
100
  case "TRIAL_BASIC":
92
101
  case "TRIAL_INTERMEDIATE":
93
102
  case "TRIAL_ADVANCED":
94
- return {
95
- ...e,
103
+ e = {
104
+ ...a,
96
105
  navigationMode: "CURRENT",
97
106
  review: !0
98
107
  };
108
+ break;
99
109
  case "ASSESSMENT":
100
110
  case "CHAPTER_ASSESSMENT":
101
111
  case "DIAGNOSTIC":
102
112
  case "TURING_ASSESSMENT":
103
- return {
104
- ...e,
113
+ e = {
114
+ ...a,
105
115
  minimumAccuracy: 0
106
116
  };
117
+ break;
107
118
  case "DYNAMIC":
108
119
  return {
109
- ...e,
120
+ ...a,
110
121
  minimumAccuracy: 0,
111
122
  hints: !1
112
123
  };
113
124
  case "SAT_MATH_ASSESSMENT":
114
125
  case "SAT_ENGLISH_ASSESSMENT":
115
- return {
116
- ...e,
126
+ e = {
127
+ ...a,
117
128
  canMarkForReview: !0,
118
129
  minimumAccuracy: 0,
119
130
  canvasEnabled: !1
120
131
  };
132
+ break;
121
133
  case "MASTERY":
122
- return {
123
- ...e,
124
- hintsTimer: E === "STUDENT" && i ? 90 : void 0,
125
- navigationMode: t ? "OPEN" : "LINEAR",
134
+ e = {
135
+ ...a,
136
+ hintsTimer: E === "STUDENT" && A ? 90 : void 0,
137
+ navigationMode: i ? "OPEN" : "LINEAR",
126
138
  skippable: !0,
127
139
  skippableTime: 90,
128
- solutionHidden: !t,
140
+ solutionHidden: !i,
129
141
  minimumAccuracy: 0,
130
- canScribble: E === "TEACHER" ? t : !0
142
+ canScribble: E === "TEACHER" ? i : !0
131
143
  };
144
+ break;
132
145
  case "SUBJECTIVE":
133
146
  case "TURING_SUBJECTIVE":
134
- return {
135
- ...e,
147
+ e = {
148
+ ...a,
136
149
  maximumAttempts: 1,
137
150
  minimumAccuracy: 0,
138
151
  validation: !1,
139
- solutionHidden: !t
152
+ solutionHidden: !i
140
153
  };
154
+ break;
141
155
  case "LEGACY":
142
156
  case "REVISION":
143
- return {
144
- ...e,
157
+ e = {
158
+ ...a,
145
159
  maximumAttempts: 2,
146
160
  canExceedAttempts: !1,
147
161
  minimumAccuracy: 0,
148
162
  review: !0
149
163
  };
164
+ break;
150
165
  case "LEVEL2":
151
166
  case "LEVEL3":
152
- return {
153
- ...e,
167
+ e = {
168
+ ...a,
154
169
  maximumAttempts: 1,
155
170
  canExceedAttempts: !1,
156
171
  minimumAccuracy: 0,
157
172
  review: !0,
158
- navigationMode: t ? "OPEN" : "LINEAR"
173
+ navigationMode: i ? "OPEN" : "LINEAR"
159
174
  };
175
+ break;
160
176
  default:
161
- return {
162
- ...e,
177
+ e = {
178
+ ...a,
163
179
  maximumAttempts: 1,
164
- navigationMode: t ? "OPEN" : "LINEAR"
180
+ navigationMode: i ? "OPEN" : "LINEAR"
165
181
  };
166
182
  }
167
- return e;
183
+ return T ? { ...e, ...T } : e;
168
184
  };
169
185
  export {
170
- o as ASSESSMENT_NODE_TYPES,
171
- N as TRIAL_V3_NODE_TYPES,
172
- _ as getWorksheetBehaviour
186
+ u as ASSESSMENT_NODE_TYPES,
187
+ R as TRIAL_V3_NODE_TYPES,
188
+ L as getWorksheetBehaviour
173
189
  };
174
190
  //# sourceMappingURL=worksheet-behavior-helper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet-behavior-helper.js","sources":["../../../../src/features/worksheet/worksheet/worksheet-behavior-helper.ts"],"sourcesContent":["import { EWorksheetActivity, type TNodeTypes } from '../../../types/models/worksheet';\nimport { NODE_TYPE } from '../../sheets/constants/sheet';\nimport type { TUserTypes } from '../../ui/types';\nimport type { IWorksheetBehavior } from './worksheet-types';\n\nexport const ASSESSMENT_NODE_TYPES: TNodeTypes[] = [\n NODE_TYPE.SAT_ENGLISH_ASSESSMENT,\n NODE_TYPE.SAT_MATH_ASSESSMENT,\n NODE_TYPE.ASSESSMENT,\n NODE_TYPE.CHAPTER_ASSESSMENT,\n NODE_TYPE.MASTERY,\n NODE_TYPE.TURING_ASSESSMENT,\n NODE_TYPE.DYNAMIC,\n NODE_TYPE.DIAGNOSTIC,\n NODE_TYPE.TURING_ASSESSMENT,\n];\n\nexport const TRIAL_V3_NODE_TYPES: TNodeTypes[] = [\n NODE_TYPE.TRIAL,\n NODE_TYPE.TRIAL_BASIC,\n NODE_TYPE.TRIAL_INTERMEDIATE,\n NODE_TYPE.TRIAL_ADVANCED,\n NODE_TYPE.TRIAL_DIAGNOSTIC,\n];\n\ninterface IGetWorksheetBehaviour {\n (params: {\n nodeType: TNodeTypes;\n activityType: EWorksheetActivity | null;\n inClass?: boolean;\n isDesmosEnabled?: boolean;\n userType: TUserTypes;\n mode: 'resume' | 'review' | 'preview';\n worksheetCompleted?: boolean;\n }): IWorksheetBehavior;\n}\n\nexport const getWorksheetBehaviour: IGetWorksheetBehaviour = params => {\n const {\n nodeType,\n activityType,\n inClass,\n isDesmosEnabled = false,\n userType,\n mode,\n worksheetCompleted,\n } = params;\n const isTrialV3 = TRIAL_V3_NODE_TYPES.includes(nodeType);\n const isAssessment = ASSESSMENT_NODE_TYPES.includes(nodeType);\n const canAttempt = mode === 'resume';\n\n const baseBehavior: IWorksheetBehavior = {\n hints: canAttempt,\n navigationMode: 'OPEN',\n initialQuestion:\n canAttempt || (userType === 'TEACHER' && !worksheetCompleted) ? 'CURRENT' : 'FIRST',\n maximumAttempts: isAssessment ? -1 : 99999,\n minimumAccuracy: 100,\n teacherDiscussionEnabled: activityType === EWorksheetActivity.LESSON_V3_1,\n teacherValidationEnabled: activityType === EWorksheetActivity.LESSON_V3 || isTrialV3,\n canTeacherValidate: !!inClass && (activityType === EWorksheetActivity.LESSON_V3 || isTrialV3),\n validation: userType === 'STUDENT' && isAssessment ? !!worksheetCompleted : true,\n review: false,\n canAttempt: userType === 'STUDENT' ? canAttempt : false,\n canExceedAttempts: true,\n checkButtonLabel: 'Check',\n retryButtonLabel: 'Retry',\n canMarkForReview: false,\n canShowDesmosCalc: isDesmosEnabled,\n canvasEnabled: mode !== 'preview',\n canScribble: mode !== 'preview',\n solutionHidden: false,\n };\n\n switch (nodeType) {\n // LEARNING SHEETS\n case 'LEARNING':\n case 'SAT_MATH_LEARNING':\n case 'SAT_ENGLISH_LEARNING': {\n return {\n ...baseBehavior,\n navigationMode:\n activityType === EWorksheetActivity.LESSON_V3 && canAttempt && !inClass\n ? 'OPEN'\n : 'LINEAR',\n attemptsAfterTeacherInterventionNeeded: 2,\n review: true,\n };\n }\n\n // RECAP SHEETS\n case 'GENERAL':\n case 'REMEDIAL':\n case 'RECAP':\n case 'SAT_MATH_RECAP':\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n review: true,\n };\n\n // PRACTICE SHEETS\n case 'EXTRA_PRACTICE':\n case 'TARGET_PRACTICE':\n case 'PRACTICE':\n return { ...baseBehavior, maximumAttempts: 1, review: true };\n\n case 'TURING_PRACTICE':\n return { ...baseBehavior, maximumAttempts: 1 };\n\n //PUZZLE SHEETS\n case 'PUZZLE_CARD':\n return {\n ...baseBehavior,\n navigationMode: 'LINEAR',\n maximumAttempts: -2,\n solutionHidden: true,\n validation: false,\n minimumAccuracy: 0,\n };\n\n case 'PUZZLE_EASY':\n case 'PUZZLE_MEDIUM':\n case 'PUZZLE_HARD':\n return { ...baseBehavior, navigationMode: 'LINEAR' };\n\n // TRIAL SHEETS\n case 'TRIAL_DIAGNOSTIC':\n return { ...baseBehavior, navigationMode: 'ADAPTIVE', review: true };\n\n case 'TRIAL':\n case 'TRIAL_BASIC':\n case 'TRIAL_INTERMEDIATE':\n case 'TRIAL_ADVANCED':\n return {\n ...baseBehavior,\n navigationMode: 'CURRENT',\n review: true,\n };\n\n // ASSESSMENT SHEETS\n case 'ASSESSMENT':\n case 'CHAPTER_ASSESSMENT':\n case 'DIAGNOSTIC':\n case 'TURING_ASSESSMENT':\n return {\n ...baseBehavior,\n minimumAccuracy: 0,\n };\n\n case 'DYNAMIC':\n return {\n ...baseBehavior,\n minimumAccuracy: 0,\n hints: false,\n };\n\n case 'SAT_MATH_ASSESSMENT':\n case 'SAT_ENGLISH_ASSESSMENT':\n return {\n ...baseBehavior,\n canMarkForReview: true,\n minimumAccuracy: 0,\n canvasEnabled: false,\n };\n\n case 'MASTERY':\n return {\n ...baseBehavior,\n hintsTimer: userType === 'STUDENT' && canAttempt ? 90 : undefined,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n skippable: true,\n skippableTime: 90,\n solutionHidden: !worksheetCompleted,\n minimumAccuracy: 0,\n canScribble: userType === 'TEACHER' ? worksheetCompleted : true,\n };\n\n // SUBJECTIVE SHEETS\n case 'SUBJECTIVE':\n case 'TURING_SUBJECTIVE':\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n minimumAccuracy: 0,\n validation: false,\n solutionHidden: !worksheetCompleted,\n };\n\n // REVISION SHEETS\n case 'LEGACY':\n case 'REVISION':\n return {\n ...baseBehavior,\n maximumAttempts: 2,\n canExceedAttempts: false,\n minimumAccuracy: 0,\n review: true,\n };\n\n case 'LEVEL2':\n case 'LEVEL3':\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n canExceedAttempts: false,\n minimumAccuracy: 0,\n review: true,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n };\n\n default:\n return {\n ...baseBehavior,\n maximumAttempts: 1,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n };\n }\n\n return baseBehavior;\n};\n"],"names":["ASSESSMENT_NODE_TYPES","NODE_TYPE","TRIAL_V3_NODE_TYPES","getWorksheetBehaviour","params","nodeType","activityType","inClass","isDesmosEnabled","userType","mode","worksheetCompleted","isTrialV3","isAssessment","canAttempt","baseBehavior","EWorksheetActivity"],"mappings":"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"}
1
+ {"version":3,"file":"worksheet-behavior-helper.js","sources":["../../../../src/features/worksheet/worksheet/worksheet-behavior-helper.ts"],"sourcesContent":["import { EWorksheetActivity, type TNodeTypes } from '../../../types/models/worksheet';\nimport { NODE_TYPE } from '../../sheets/constants/sheet';\nimport type { TUserTypes } from '../../ui/types';\nimport type { IWorksheetBehavior } from './worksheet-types';\n\nexport const ASSESSMENT_NODE_TYPES: TNodeTypes[] = [\n NODE_TYPE.SAT_ENGLISH_ASSESSMENT,\n NODE_TYPE.SAT_MATH_ASSESSMENT,\n NODE_TYPE.ASSESSMENT,\n NODE_TYPE.CHAPTER_ASSESSMENT,\n NODE_TYPE.MASTERY,\n NODE_TYPE.TURING_ASSESSMENT,\n NODE_TYPE.DYNAMIC,\n NODE_TYPE.DIAGNOSTIC,\n NODE_TYPE.TURING_ASSESSMENT,\n];\n\nexport const TRIAL_V3_NODE_TYPES: TNodeTypes[] = [\n NODE_TYPE.TRIAL,\n NODE_TYPE.TRIAL_BASIC,\n NODE_TYPE.TRIAL_INTERMEDIATE,\n NODE_TYPE.TRIAL_ADVANCED,\n NODE_TYPE.TRIAL_DIAGNOSTIC,\n];\n\ninterface IGetWorksheetBehaviour {\n (params: {\n nodeType: TNodeTypes;\n activityType: EWorksheetActivity | null;\n inClass?: boolean;\n isDesmosEnabled?: boolean;\n userType: TUserTypes;\n mode: 'resume' | 'review' | 'preview';\n worksheetCompleted?: boolean;\n behaviorOverride?: Partial<IWorksheetBehavior>;\n }): IWorksheetBehavior;\n}\n\nexport const getWorksheetBehaviour: IGetWorksheetBehaviour = params => {\n const {\n nodeType,\n activityType,\n inClass,\n isDesmosEnabled = false,\n userType,\n mode,\n worksheetCompleted,\n behaviorOverride,\n } = params;\n const isTrialV3 = TRIAL_V3_NODE_TYPES.includes(nodeType);\n const isAssessment = ASSESSMENT_NODE_TYPES.includes(nodeType);\n const canAttempt = mode === 'resume';\n\n const baseBehavior: IWorksheetBehavior = {\n hints: canAttempt,\n navigationMode: 'OPEN',\n initialQuestion:\n canAttempt || (userType === 'TEACHER' && !worksheetCompleted) ? 'CURRENT' : 'FIRST',\n maximumAttempts: isAssessment ? -1 : 99999,\n minimumAccuracy: 100,\n teacherDiscussionEnabled: activityType === EWorksheetActivity.LESSON_V3_1,\n teacherValidationEnabled: activityType === EWorksheetActivity.LESSON_V3 || isTrialV3,\n canTeacherValidate: !!inClass && (activityType === EWorksheetActivity.LESSON_V3 || isTrialV3),\n validation: userType === 'STUDENT' && isAssessment ? !!worksheetCompleted : true,\n review: false,\n canAttempt: userType === 'STUDENT' ? canAttempt : false,\n canExceedAttempts: true,\n checkButtonLabel: 'Check',\n retryButtonLabel: 'Retry',\n canMarkForReview: false,\n canShowDesmosCalc: isDesmosEnabled,\n canvasEnabled: mode !== 'preview',\n canScribble: mode !== 'preview',\n solutionHidden: false,\n };\n\n let behavior: IWorksheetBehavior;\n\n switch (nodeType) {\n // LEARNING SHEETS\n case 'LEARNING':\n case 'SAT_MATH_LEARNING':\n case 'SAT_ENGLISH_LEARNING':\n behavior = {\n ...baseBehavior,\n navigationMode:\n activityType === EWorksheetActivity.LESSON_V3 && canAttempt && !inClass\n ? 'OPEN'\n : 'LINEAR',\n attemptsAfterTeacherInterventionNeeded: 2,\n review: true,\n };\n break;\n\n // RECAP SHEETS\n case 'GENERAL':\n case 'REMEDIAL':\n case 'RECAP':\n case 'SAT_MATH_RECAP':\n behavior = {\n ...baseBehavior,\n maximumAttempts: 1,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n review: true,\n };\n break;\n\n // PRACTICE SHEETS\n case 'EXTRA_PRACTICE':\n case 'TARGET_PRACTICE':\n case 'PRACTICE':\n behavior = { ...baseBehavior, maximumAttempts: 1, review: true };\n break;\n\n case 'TURING_PRACTICE':\n behavior = { ...baseBehavior, maximumAttempts: 1 };\n break;\n\n //PUZZLE SHEETS\n case 'PUZZLE_CARD':\n behavior = {\n ...baseBehavior,\n navigationMode: 'LINEAR',\n maximumAttempts: -2,\n solutionHidden: true,\n validation: false,\n minimumAccuracy: 0,\n };\n break;\n\n case 'PUZZLE_EASY':\n case 'PUZZLE_MEDIUM':\n case 'PUZZLE_HARD':\n behavior = { ...baseBehavior, navigationMode: 'LINEAR' };\n break;\n\n // TRIAL SHEETS\n case 'TRIAL_DIAGNOSTIC':\n behavior = { ...baseBehavior, navigationMode: 'ADAPTIVE', review: true };\n break;\n\n case 'TRIAL':\n case 'TRIAL_BASIC':\n case 'TRIAL_INTERMEDIATE':\n case 'TRIAL_ADVANCED':\n behavior = {\n ...baseBehavior,\n navigationMode: 'CURRENT',\n review: true,\n };\n break;\n\n // ASSESSMENT SHEETS\n case 'ASSESSMENT':\n case 'CHAPTER_ASSESSMENT':\n case 'DIAGNOSTIC':\n case 'TURING_ASSESSMENT':\n behavior = {\n ...baseBehavior,\n minimumAccuracy: 0,\n };\n break;\n\n case 'DYNAMIC':\n return {\n ...baseBehavior,\n minimumAccuracy: 0,\n hints: false,\n };\n\n case 'SAT_MATH_ASSESSMENT':\n case 'SAT_ENGLISH_ASSESSMENT':\n behavior = {\n ...baseBehavior,\n canMarkForReview: true,\n minimumAccuracy: 0,\n canvasEnabled: false,\n };\n break;\n\n case 'MASTERY':\n behavior = {\n ...baseBehavior,\n hintsTimer: userType === 'STUDENT' && canAttempt ? 90 : undefined,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n skippable: true,\n skippableTime: 90,\n solutionHidden: !worksheetCompleted,\n minimumAccuracy: 0,\n canScribble: userType === 'TEACHER' ? worksheetCompleted : true,\n };\n break;\n\n // SUBJECTIVE SHEETS\n case 'SUBJECTIVE':\n case 'TURING_SUBJECTIVE':\n behavior = {\n ...baseBehavior,\n maximumAttempts: 1,\n minimumAccuracy: 0,\n validation: false,\n solutionHidden: !worksheetCompleted,\n };\n break;\n\n // REVISION SHEETS\n case 'LEGACY':\n case 'REVISION':\n behavior = {\n ...baseBehavior,\n maximumAttempts: 2,\n canExceedAttempts: false,\n minimumAccuracy: 0,\n review: true,\n };\n break;\n\n case 'LEVEL2':\n case 'LEVEL3':\n behavior = {\n ...baseBehavior,\n maximumAttempts: 1,\n canExceedAttempts: false,\n minimumAccuracy: 0,\n review: true,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n };\n break;\n\n default:\n behavior = {\n ...baseBehavior,\n maximumAttempts: 1,\n navigationMode: !worksheetCompleted ? 'LINEAR' : 'OPEN',\n };\n }\n\n return behaviorOverride ? { ...behavior, ...behaviorOverride } : behavior;\n};\n"],"names":["ASSESSMENT_NODE_TYPES","NODE_TYPE","TRIAL_V3_NODE_TYPES","getWorksheetBehaviour","params","nodeType","activityType","inClass","isDesmosEnabled","userType","mode","worksheetCompleted","behaviorOverride","isTrialV3","isAssessment","canAttempt","baseBehavior","EWorksheetActivity","behavior"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet-types.js","sources":["../../../../src/features/worksheet/worksheet/worksheet-types.ts"],"sourcesContent":["import type { MutableRefObject, ReactElement, ReactNode } from 'react';\n\nimport type { EWorksheetActivity, TNodeTypes } from '../../../types/models/worksheet';\nimport type { IActionData, TPublish, TSubscribe } from '../../cue-canvas/types/cue-canvas';\nimport type { TPublishMouseMove, TSubscribeMouseMove } from '../../pointer-sync/pointer-types';\nimport type { TColorNames, THueNames, TUserTypes } from '../../ui/types';\nimport type { IFile } from './worksheet-question/subjective-review';\nimport type { TWorksheetBlocker } from './worksheet-blocker/worksheet-blocker-types';\n\nexport enum QUESTION_TAGS {\n TRIAL_TOPIC = 'trial-topic',\n QUESTION_CODE = 'question code',\n}\n\nexport enum QUESTIONS_RATING {\n E = 3,\n S = 2, // Just right\n H = 1,\n}\n\nexport interface ILearnosityError {\n code: number;\n consumerKey: string;\n detail: string;\n errorUI: string;\n msg: string;\n}\n\ninterface ILearnosityQuestionMetadata {\n widget_reference: string;\n sheet_reference: string;\n acknowledgements?: string;\n sample_answer?: string;\n hints?: string[];\n solution?: string[];\n teacher_tips?: string[];\n valid_response_count: number;\n source: {\n organisation_id: number;\n };\n}\n\nexport type TInstructorStimulus =\n | 'SystemIntro' // lesson v3\n | 'Intro' // lesson v3\n | 'Concept-Intro' // lesson v3\n | 'Instruction' // lesson v3\n | 'Task' // lesson v3\n | 'Try' // trial v3\n | 'Learn' // trial v3\n | 'Apply'; // trial v3\n\nexport type TItemType =\n | 'overview'\n | 'learning'\n | 'learning-we-do'\n | 'learning-your-turn'\n | 'learning-explore'\n | 'practice'\n | 'practice-basic'\n | 'practice-basic-optional'\n | 'practice-regular'\n | 'practice-regular-optional'\n | 'exit-ticket'\n | 'advanced-we-do'\n | 'advanced-your-turn'\n | 'advanced-explore'\n | 'advanced-practice';\n\nexport type TSectionName =\n | 'overview'\n | 'learning'\n | 'practice'\n | 'practice-basic'\n | 'practice-regular'\n | 'exit-ticket'\n | 'advanced';\n\ninterface IQuestionValidResponse {\n score: number;\n value: unknown[];\n}\n\nexport interface ISheetNudgeBannerInfo {\n bannerBackgroundColor: TColorNames;\n label: string;\n}\n\nexport interface ILearnosityQuestion {\n response_id: string;\n instructor_stimulus?: TInstructorStimulus;\n metadata: ILearnosityQuestionMetadata;\n instant_feedback?: boolean;\n math_renderer?: string;\n template?: string;\n tokenization?: string;\n numberPad?: string[];\n symbols?: unknown[];\n response_container?: Record<string, unknown>;\n ui_style?: Record<string, unknown>;\n shuffle_options?: boolean;\n // for custom type question validation is undefined.\n validation?: {\n scoring_type?: string;\n unscored?: boolean;\n valid_response?: IQuestionValidResponse;\n alt_responses?: IQuestionValidResponse[];\n penalty?: number;\n min_score_if_attempted?: number;\n };\n is_math?: boolean;\n labels?: Record<string, unknown>;\n line?: Record<string, unknown>;\n points?: string[];\n snap_to_ticks?: boolean;\n ticks?: Record<string, unknown>;\n max_length?: number;\n type:\n | 'hotspot'\n | 'tokenhighlight'\n | 'numberline'\n | 'clozeassociation'\n | 'clozetext'\n | 'association'\n | 'classification'\n | 'clozedropdown'\n | 'clozeformula'\n | 'mcq'\n | 'choicematrix'\n | 'plaintext'\n | 'drawing';\n case_sensitive?: boolean;\n show_copy?: boolean;\n show_cut?: boolean;\n show_paste?: boolean;\n spellcheck?: boolean;\n stimulus?: string;\n stimulus_review?: string;\n stimulus_list?: string[];\n image?: Record<string, unknown>;\n areas?: unknown[];\n area_attributes?: Record<string, unknown>;\n possible_responses?: string[][] | string[];\n duplicate_responses?: boolean;\n response_containers?: unknown[];\n options?: Record<string, unknown>[] | string[];\n feedback_attempts?: number;\n stems?: string[];\n multiple_responses?: boolean;\n}\n\nexport interface ILearnosityItem {\n reference: string;\n questions: ILearnosityQuestion[];\n source: Record<string, unknown>;\n content: string;\n metadata: Record<string, unknown> | unknown[];\n workflow: unknown[];\n response_ids: string[];\n feature_ids: unknown[];\n features: unknown[];\n itemType?: TItemType;\n tags?: string[];\n}\n\nexport interface IWorksheetQuestion extends ILearnosityQuestion {\n item_reference: string;\n item_type?: TItemType;\n section_name?: TSectionName;\n is_optional?: boolean;\n /**\n * If true, the question is not a question, but a content only item\n * e.g. Intro, Overview, Instruction etc.\n */\n is_non_question?: boolean;\n concept_intro_stimulus?: string; // Content for concept intro widget\n item_tags: string[];\n item_tags_map: Record<string, string>;\n item_number: number;\n item_display_number: number;\n question_number: number;\n total_questions: number;\n /**\n * if true, scribbler button will be shown on the question\n */\n can_scribble: boolean; // If true, the question can be scribbled on\n}\n\nexport interface ILearnosityQuestionScore {\n score?: number | null;\n max_score: number;\n unscored?: boolean;\n}\n\nexport interface ILearnosityQuestionResponse {\n value: unknown;\n responses?: unknown;\n type: unknown;\n updatedFormat?: boolean;\n wordCount?: number;\n apiVersion: string;\n revision: number;\n feedbackAttemptsCount?: number;\n}\n\ninterface IAttempt {\n response: ILearnosityQuestionResponse;\n score: ILearnosityQuestionScore;\n}\n\ninterface ITeacherReview {\n reviewComment?: string;\n images?: string[];\n}\nexport interface IWorksheetResponse {\n widgetReference: string;\n itemReference: string;\n itemPosition: number; // 0 based\n questionPosition: number; // 0 based\n isOkayTypeQuestion: boolean;\n response?: ILearnosityQuestionResponse;\n /**\n * For non question questions, when user click on start, responseGiven will be true\n */\n responseGiven?: boolean;\n retryEnabled?: boolean;\n simState?: Record<string, unknown>;\n score?: ILearnosityQuestionScore;\n responseEdited?: boolean;\n hintsUsed?: number;\n markedForReview?: boolean;\n attemptsHistory?: IAttempt[];\n validatedByTeacher?: boolean;\n submittedByStudent?: boolean;\n assignStatus?: 'assigned' | 'skipped';\n rating?: number;\n skipped?: boolean;\n doubtResolved?: boolean;\n teacherReview?: ITeacherReview;\n tags?: Record<string, string>;\n timeSpent?: number;\n discussionQuestionOffset?: number;\n}\n\ntype TMathRenderer = 'mathjax' | 'mathquill';\nexport interface ILearnosity {\n ready: () => void;\n questions: () => Record<string, unknown>;\n question: (responseId: string) =>\n | {\n enable: () => boolean;\n disable: () => boolean;\n getQuestion: () => ILearnosityQuestion;\n getMetadata: () => ILearnosityQuestionMetadata;\n getResponse: () => ILearnosityQuestionResponse;\n getScore: (\n callback?: (score: ILearnosityQuestionScore | null) => void,\n ) => ILearnosityQuestionScore;\n validate: (\n options?: { showCorrectAnswers?: boolean; feedbackAttempts?: boolean },\n callback?: () => void,\n ) => void;\n resetValidationUI: () => void;\n on: (eventName: 'changed', callback: () => void) => void;\n off: (eventName: 'changed', callback?: () => void) => void;\n }\n | undefined;\n append: (toAppend: {\n questions: ILearnosityQuestion[];\n responses?: Record<string, unknown>;\n }) => void;\n appendQuestion: (toAppend: {\n questions: ILearnosityQuestion[];\n responses?: Record<string, unknown>;\n }) => void;\n reset: () => void;\n renderMath: (renderer: TMathRenderer) => void;\n}\n\nexport interface IWorksheetBehavior {\n /**\n * If true, Opens the worksheet in resume mode.\n * - If false, Opens the worksheet in review mode.\n */\n canAttempt: boolean;\n /**\n * If true, the user can mark the question for review.\n */\n canMarkForReview: boolean;\n /**\n * The mode of navigation for the worksheet.\n * - `OPEN` mode allows the user to navigate to any question in the worksheet.\n * - `LINEAR` mode allows the user to navigate to the next question only.\n * - `ADAPTIVE` mode allows the user to navigate future questions based on the rating of the current question.\n * - `CURRENT` mode allows the user to navigate to the current question only. Back and forth not allowed.\n */\n navigationMode: 'OPEN' | 'LINEAR' | 'ADAPTIVE' | 'CURRENT';\n /**\n * The initial question to display when the worksheet is loaded.\n * - `FIRST` mode displays the first question in the worksheet.\n * - `CURRENT` mode displays the question that the user was last on.\n */\n initialQuestion: 'FIRST' | 'CURRENT';\n /**\n * If hints are available, on clicking the help button, first availble hint will be shown.\n * Clicking again will show the next hint.\n * If no more hints are available, onHelp will be called.\n */\n hints: boolean;\n /**\n * The time in seconds after which the hints button will be shown.\n */\n hintsTimer?: number; // in seconds\n /**\n * If true, the user can skip the question without attempting it.\n * Skip button will be shown only after the hints are exausted and skipTimer is reached.\n */\n skippable?: boolean;\n /**\n * The time in seconds after which the user can skip the question.\n */\n skippableTime?: number; // in seconds\n /**\n * If true, after the question is system validated, teacher discussion button will be shown when the question has discussion points.\n */\n teacherDiscussionEnabled?: boolean;\n /**\n * If true, teacher validation is needed for the question to proceed\n */\n teacherValidationEnabled: boolean;\n /**\n * If worksheet is attempting outside the class setting\n * This needs teacherValidationEnabled to be true\n * TODO: Consider changing to accept validation type: 'system' | 'teacher' | undefined instead of boolean\n */\n canTeacherValidate: boolean;\n /**\n * If true, questions will be validated and feedback will be shown.\n */\n validation: boolean;\n /**\n * If true, solution wont be shown to the user.\n */\n solutionHidden?: boolean;\n /**\n * If true, questions will be validated and feedback will be shown along with the correct answer.\n */\n review: boolean;\n /**\n * The maximum number of attempts allowed for each question.\n * 0 means unlimited attempts.\n * -1 means attempts will not be validated, hence not pushed to attempt history.\n * -2 means the sheet is a puzzle sheet\n * After reaching the maximum number of attempts, the user cannot attempt the question anymore.\n * If maxAtttmpts reached and canExceedAttempts is true, the user can still attempt the question\n * , also user will have the option to move to next question\n */\n maximumAttempts: number;\n /**\n * If true, the user can exceed the maximum number of attempts.\n */\n canExceedAttempts: boolean;\n\n /**\n * After attemptsAfterTeacherInterventionNeeded incorrect attempts, retry button will be disabled in class, move ahead button will show ouside class.\n */\n attemptsAfterTeacherInterventionNeeded?: number;\n /**\n * If the worksheet minimumAccuracy is not met, on clicking the final submit button, onMinimumAccuracyNotMet will be called.\n */\n minimumAccuracy: number;\n /**\n * Label for the check button\n * For example,\n * - \"Check\" for Checking the answer\n * - \"Submit\" for Submitting the answer when doing assessment\n */\n checkButtonLabel: string;\n /**\n * If attempt is incorrect, we show retry button, this is the label for the retry button\n * For example,\n * - 'Try Again' for retrying the question\n */\n retryButtonLabel: string;\n /**\n * If true show demos calculator https://www.desmos.com/calculator\n */\n canShowDesmosCalc: boolean;\n\n // If true, canvas is enabled and user can use canvas to scribble on the worksheet by toggling the scribble button\n canvasEnabled?: boolean;\n\n // If true, the user can scribble on workheet\n canScribble?: boolean;\n}\n\nexport type TWORKSHEET_QUESTION_MEDIA_TYPE = 'SIMULATION' | 'VIDEO' | 'AUDIO';\n\nexport interface IWorksheetCallbackProps {\n onResponseChange?: (options: {\n responseId: string;\n response: IWorksheetResponse;\n isNewAttempt: boolean;\n question: IWorksheetQuestion;\n }) => void;\n onBulkResponsesChange?: (responses: Record<string, IWorksheetResponse>) => void;\n onResponsesChange?: (responses: Record<string, IWorksheetResponse>) => void;\n onMediaStateChange?: (\n question: IWorksheetQuestion,\n mediaType: TWORKSHEET_QUESTION_MEDIA_TYPE,\n mediaState: Record<string, unknown>,\n ) => void;\n onTeacherValidation?: (questionId: string, rating?: keyof typeof QUESTIONS_RATING) => void;\n onAllowRetry?: (questionId: string) => void;\n onOptionalItemAssignment?: (itemType: TItemType) => void;\n onOptionalItemSkip?: (itemType: TItemType) => void;\n onHelp?: (options: { questionId: string; questionNumber: string }) => void;\n onMinimumAccuracyNotMet?: (accuracy: number) => void;\n onExitTicketStart?: () => void;\n onExitTicketSubmit?: () => void;\n onSubmit?: (\n responses: Record<string, IWorksheetResponse>,\n questions: IWorksheetQuestion[],\n ) => void;\n onActiveQuestionChange?: (question: IWorksheetQuestion) => void;\n onResolveDoubt?: (responseId: string) => void;\n onSkip?: (itemIndex: number, widgetIndex: number) => void;\n onLoaded: () => void;\n onErrored: (error: { code?: number; message: string }) => void;\n onResponsesLoaded?: (responses: Record<string, IWorksheetResponse>) => void;\n openQuestionFeedbackModal?: (itemRef: string) => void;\n}\n\ninterface ICueCanvasCallbackProps {\n onPublishStrokes?: TPublish;\n onReceiveStrokes?: TSubscribe;\n}\n\ninterface ICueCanvasProps {\n initialStrokesData?: Record<string, IActionData[]>;\n}\n\ninterface IPointerSyncCallbackProps {\n onPublishMouseMove?: TPublishMouseMove;\n onSubscribeMouseMove?: TSubscribeMouseMove;\n}\n\nexport interface IWorksheetLayout {\n containerStyle: 'none' | 'card';\n navigationBar: 'none' | 'top' | 'bottom';\n actionBar: 'none' | 'bottom';\n containerWidth: string;\n topOffset: number; // Offset from the top of the screen, for eg: height of the header\n questionsScrollable: boolean;\n minQuestionHeight: string | number;\n minSummaryHeight: string | number;\n showUserPointer?: boolean;\n renderQuestionHeader?: boolean;\n imageHue?: THueNames;\n background?: 'none' | 'paper';\n questionPadding: number;\n}\n\nexport interface ISubjectiveSheetProps {\n onAddReviewComment?: (\n responseId: string,\n commentData: {\n score: ILearnosityQuestionScore;\n teacherReview: ITeacherReview;\n },\n ) => void;\n openImagesReviewModal?: (props: IOpenImageReviewModalProps) => void;\n handleReviewSubmit?: () => void;\n isSubmittingReview?: boolean;\n isReviewPending?: boolean;\n}\n\ninterface IBaseWorksheetProps {\n userType: TUserTypes;\n userId: string;\n studentId: string;\n studentName?: string;\n worksheetName: string;\n initialResponseId?: string;\n initialItemIndex?: number;\n layout: IWorksheetLayout;\n updatedResponses?: Record<string, IWorksheetResponse>;\n worksheetCompleted: boolean;\n showNudgeBanner?: boolean;\n markedAsCompleted?: boolean;\n canResolveDoubt?: boolean;\n actionBarRightElement?: ReactElement; // Extra Elements to be rendered in the action bar\n attemptId?: string;\n itemsSignedRequest: string;\n questionsSignedRequest: string;\n summaryDescription?: ReactElement | null;\n canSubmitWorksheet?: boolean;\n selectedTopics?: string[];\n subjectiveProps?: ISubjectiveSheetProps;\n inClass?: boolean; // If true, the worksheet is rendered inside class\n activityType: EWorksheetActivity | null;\n isDesmosEnabled?: boolean; // If true, the worksheet can show desmos calculator\n nodeType: TNodeTypes; // NodeType of the worksheet\n mode: 'resume' | 'review' | 'preview'; // mode of the worksheet\n loggerRef: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>;\n}\n\ninterface IWorksheetPlugins {\n plugins?: {\n stickers?: ReactNode;\n };\n}\n\ninterface IUpdateImages {\n filteredImages: string[];\n newImages: IFile[];\n}\ninterface IOpenImageReviewModalProps {\n isReviewed?: boolean;\n disableScoreForm?: boolean;\n imageUrls?: string[];\n filteredImageUrls?: (props: IUpdateImages) => void;\n uploadedImages?: (IFile | string)[];\n image?: string;\n}\n\nexport interface IWorksheetProps\n extends IBaseWorksheetProps,\n IWorksheetCallbackProps,\n ICueCanvasProps,\n ICueCanvasCallbackProps,\n IPointerSyncCallbackProps,\n IWorksheetPlugins {}\n\nexport interface IWorksheetRef {\n validateQuestion: (\n responseId: string,\n rating?: keyof typeof QUESTIONS_RATING,\n skipRemainingQuestions?: boolean,\n ) => void;\n assignOptionalItems: (itemType: TItemType) => void;\n skipOptionalItems: (itemType: TItemType) => void;\n updateMediaState: (\n responseId: string,\n mediaType: TWORKSHEET_QUESTION_MEDIA_TYPE,\n mediaState: Record<string, unknown>,\n ) => void;\n allowRetry: (responseId: string) => void;\n}\n\ninterface IWorksheetHeaderLayoutArgs {\n isPuzzleWorksheet?: boolean;\n isTestWorksheet?: boolean;\n imageHue?: THueNames;\n}\n\nexport interface IWorksheetHeaderLayoutProps {\n (args: IWorksheetHeaderLayoutArgs): {\n bgColor: TColorNames;\n borderColor?: TColorNames;\n textColor?: TColorNames;\n };\n}\n\nexport type TWorksheetStoreProps = Omit<\n IBaseWorksheetProps,\n 'studentName' | 'itemsSignedRequest' | 'mode'\n> &\n Required<Pick<IBaseWorksheetProps, 'studentName'>> &\n Omit<IWorksheetCallbackProps, 'onLoaded' | 'onErrored'> &\n ICueCanvasProps &\n ICueCanvasCallbackProps &\n IPointerSyncCallbackProps &\n IWorksheetPlugins & {\n behavior: IWorksheetBehavior;\n learnosityItems: ILearnosityItem[];\n learnosityResponses?: Record<string, IWorksheetResponse>;\n learnosity: ILearnosity;\n appendedQuestionIds: string[];\n };\n\nexport enum EActiveQuestionTool {\n TEACHING_TOOLS = 'TEACHING_TOOLS',\n SOLUTION = 'SOLUTION',\n DISCUSSION = 'DISCUSSION',\n}\n\nexport interface IWorksheetStoreState {\n questions: IWorksheetQuestion[];\n renderableQuestions: IWorksheetQuestion[];\n responses: Record<string, IWorksheetResponse>;\n lastUnlockedQuestionIndex: number;\n initialQuestionId: string;\n activeQuestionId: string;\n activeQuestionIndex: number;\n questionsContainerWidth: number;\n maxQuestionWidth: number;\n actionbarHeight: number;\n summaryVisible: boolean;\n calculatorVisible: boolean;\n scribblingEnabled: boolean;\n activeQuestionTool?: EActiveQuestionTool;\n blocker?: TWorksheetBlocker;\n scrolledToInitialQuestion: boolean;\n}\n\n// Actions interface - contains all the methods\ninterface IWorksheetStoreActions {\n mergeWorksheetProps: (data: TWorksheetStoreProps) => void;\n setResponses: (\n responses:\n | IWorksheetStore['responses']\n | ((prevResponses: IWorksheetStore['responses']) => IWorksheetStore['responses']),\n ) => void;\n showSummary: () => void;\n hideSummary: () => void;\n toggleSummary: () => void;\n toggleCalculator: () => void;\n toggleScribble: () => void;\n setBlocker: (blocker?: TWorksheetBlocker) => void;\n /**\n *\n * @param scrollToLastUnlockedQuestion - If true, scrolls to the last unlocked question after removing the blocker. Default is true.\n * @returns\n */\n removeBlocker: (scrollToLastUnlockedQuestion?: boolean) => void;\n updateResponse: (options: {\n responseId: string;\n response: ILearnosityQuestionResponse;\n score: ILearnosityQuestionScore;\n timeSpent: number;\n answerChecked?: boolean;\n }) => void;\n updateMediaState: (\n responseId: string,\n mediaType: TWORKSHEET_QUESTION_MEDIA_TYPE,\n mediaState: Record<string, unknown>,\n ) => void;\n setDiscussionQuestionOffset: (responseId: string, offset: number) => void;\n markForReview: (responseId: string, markedForReview: boolean) => void;\n changeQuestion: (questionId: string, shouldScroll?: boolean, scrollDelay?: number) => void;\n setActiveQuestionTool: (tool: EActiveQuestionTool) => void;\n unsetActiveQuestionTool: () => void;\n destroy: () => void;\n}\n\n// Combined store interface\nexport interface IWorksheetStore\n extends IWorksheetStoreState,\n TWorksheetStoreProps,\n IWorksheetStoreActions {}\n"],"names":["QUESTION_TAGS","QUESTIONS_RATING","EActiveQuestionTool"],"mappings":"AASY,IAAAA,sBAAAA,OACVA,EAAA,cAAc,eACdA,EAAA,gBAAgB,iBAFNA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACVA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KACAA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KACAA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KAHUA,IAAAA,KAAA,CAAA,CAAA,GAujBAC,sBAAAA,OACVA,EAAA,iBAAiB,kBACjBA,EAAA,WAAW,YACXA,EAAA,aAAa,cAHHA,IAAAA,KAAA,CAAA,CAAA;"}
1
+ {"version":3,"file":"worksheet-types.js","sources":["../../../../src/features/worksheet/worksheet/worksheet-types.ts"],"sourcesContent":["import type { MutableRefObject, ReactElement, ReactNode } from 'react';\n\nimport type { EWorksheetActivity, TNodeTypes } from '../../../types/models/worksheet';\nimport type { IActionData, TPublish, TSubscribe } from '../../cue-canvas/types/cue-canvas';\nimport type { TPublishMouseMove, TSubscribeMouseMove } from '../../pointer-sync/pointer-types';\nimport type { TColorNames, THueNames, TUserTypes } from '../../ui/types';\nimport type { IFile } from './worksheet-question/subjective-review';\nimport type { TWorksheetBlocker } from './worksheet-blocker/worksheet-blocker-types';\n\nexport enum QUESTION_TAGS {\n TRIAL_TOPIC = 'trial-topic',\n QUESTION_CODE = 'question code',\n}\n\nexport enum QUESTIONS_RATING {\n E = 3,\n S = 2, // Just right\n H = 1,\n}\n\nexport interface ILearnosityError {\n code: number;\n consumerKey: string;\n detail: string;\n errorUI: string;\n msg: string;\n}\n\ninterface ILearnosityQuestionMetadata {\n widget_reference: string;\n sheet_reference: string;\n acknowledgements?: string;\n sample_answer?: string;\n hints?: string[];\n solution?: string[];\n teacher_tips?: string[];\n valid_response_count: number;\n source: {\n organisation_id: number;\n };\n}\n\nexport type TInstructorStimulus =\n | 'SystemIntro' // lesson v3\n | 'Intro' // lesson v3\n | 'Concept-Intro' // lesson v3\n | 'Instruction' // lesson v3\n | 'Task' // lesson v3\n | 'Try' // trial v3\n | 'Learn' // trial v3\n | 'Apply'; // trial v3\n\nexport type TItemType =\n | 'overview'\n | 'learning'\n | 'learning-we-do'\n | 'learning-your-turn'\n | 'learning-explore'\n | 'practice'\n | 'practice-basic'\n | 'practice-basic-optional'\n | 'practice-regular'\n | 'practice-regular-optional'\n | 'exit-ticket'\n | 'advanced-we-do'\n | 'advanced-your-turn'\n | 'advanced-explore'\n | 'advanced-practice';\n\nexport type TSectionName =\n | 'overview'\n | 'learning'\n | 'practice'\n | 'practice-basic'\n | 'practice-regular'\n | 'exit-ticket'\n | 'advanced';\n\ninterface IQuestionValidResponse {\n score: number;\n value: unknown[];\n}\n\nexport interface ISheetNudgeBannerInfo {\n bannerBackgroundColor: TColorNames;\n label: string;\n}\n\nexport interface ILearnosityQuestion {\n response_id: string;\n instructor_stimulus?: TInstructorStimulus;\n metadata: ILearnosityQuestionMetadata;\n instant_feedback?: boolean;\n math_renderer?: string;\n template?: string;\n tokenization?: string;\n numberPad?: string[];\n symbols?: unknown[];\n response_container?: Record<string, unknown>;\n ui_style?: Record<string, unknown>;\n shuffle_options?: boolean;\n // for custom type question validation is undefined.\n validation?: {\n scoring_type?: string;\n unscored?: boolean;\n valid_response?: IQuestionValidResponse;\n alt_responses?: IQuestionValidResponse[];\n penalty?: number;\n min_score_if_attempted?: number;\n };\n is_math?: boolean;\n labels?: Record<string, unknown>;\n line?: Record<string, unknown>;\n points?: string[];\n snap_to_ticks?: boolean;\n ticks?: Record<string, unknown>;\n max_length?: number;\n type:\n | 'hotspot'\n | 'tokenhighlight'\n | 'numberline'\n | 'clozeassociation'\n | 'clozetext'\n | 'association'\n | 'classification'\n | 'clozedropdown'\n | 'clozeformula'\n | 'mcq'\n | 'choicematrix'\n | 'plaintext'\n | 'drawing';\n case_sensitive?: boolean;\n show_copy?: boolean;\n show_cut?: boolean;\n show_paste?: boolean;\n spellcheck?: boolean;\n stimulus?: string;\n stimulus_review?: string;\n stimulus_list?: string[];\n image?: Record<string, unknown>;\n areas?: unknown[];\n area_attributes?: Record<string, unknown>;\n possible_responses?: string[][] | string[];\n duplicate_responses?: boolean;\n response_containers?: unknown[];\n options?: Record<string, unknown>[] | string[];\n feedback_attempts?: number;\n stems?: string[];\n multiple_responses?: boolean;\n}\n\nexport interface ILearnosityItem {\n reference: string;\n questions: ILearnosityQuestion[];\n source: Record<string, unknown>;\n content: string;\n metadata: Record<string, unknown> | unknown[];\n workflow: unknown[];\n response_ids: string[];\n feature_ids: unknown[];\n features: unknown[];\n itemType?: TItemType;\n tags?: string[];\n}\n\nexport interface IWorksheetQuestion extends ILearnosityQuestion {\n item_reference: string;\n item_type?: TItemType;\n section_name?: TSectionName;\n is_optional?: boolean;\n /**\n * If true, the question is not a question, but a content only item\n * e.g. Intro, Overview, Instruction etc.\n */\n is_non_question?: boolean;\n concept_intro_stimulus?: string; // Content for concept intro widget\n item_tags: string[];\n item_tags_map: Record<string, string>;\n item_number: number;\n item_display_number: number;\n question_number: number;\n total_questions: number;\n /**\n * if true, scribbler button will be shown on the question\n */\n can_scribble: boolean; // If true, the question can be scribbled on\n}\n\nexport interface ILearnosityQuestionScore {\n score?: number | null;\n max_score: number;\n unscored?: boolean;\n}\n\nexport interface ILearnosityQuestionResponse {\n value: unknown;\n responses?: unknown;\n type: unknown;\n updatedFormat?: boolean;\n wordCount?: number;\n apiVersion: string;\n revision: number;\n feedbackAttemptsCount?: number;\n}\n\ninterface IAttempt {\n response: ILearnosityQuestionResponse;\n score: ILearnosityQuestionScore;\n}\n\ninterface ITeacherReview {\n reviewComment?: string;\n images?: string[];\n}\nexport interface IWorksheetResponse {\n widgetReference: string;\n itemReference: string;\n itemPosition: number; // 0 based\n questionPosition: number; // 0 based\n isOkayTypeQuestion: boolean;\n response?: ILearnosityQuestionResponse;\n /**\n * For non question questions, when user click on start, responseGiven will be true\n */\n responseGiven?: boolean;\n retryEnabled?: boolean;\n simState?: Record<string, unknown>;\n score?: ILearnosityQuestionScore;\n responseEdited?: boolean;\n hintsUsed?: number;\n markedForReview?: boolean;\n attemptsHistory?: IAttempt[];\n validatedByTeacher?: boolean;\n submittedByStudent?: boolean;\n assignStatus?: 'assigned' | 'skipped';\n rating?: number;\n skipped?: boolean;\n doubtResolved?: boolean;\n teacherReview?: ITeacherReview;\n tags?: Record<string, string>;\n timeSpent?: number;\n discussionQuestionOffset?: number;\n}\n\ntype TMathRenderer = 'mathjax' | 'mathquill';\nexport interface ILearnosity {\n ready: () => void;\n questions: () => Record<string, unknown>;\n question: (responseId: string) =>\n | {\n enable: () => boolean;\n disable: () => boolean;\n getQuestion: () => ILearnosityQuestion;\n getMetadata: () => ILearnosityQuestionMetadata;\n getResponse: () => ILearnosityQuestionResponse;\n getScore: (\n callback?: (score: ILearnosityQuestionScore | null) => void,\n ) => ILearnosityQuestionScore;\n validate: (\n options?: { showCorrectAnswers?: boolean; feedbackAttempts?: boolean },\n callback?: () => void,\n ) => void;\n resetValidationUI: () => void;\n on: (eventName: 'changed', callback: () => void) => void;\n off: (eventName: 'changed', callback?: () => void) => void;\n }\n | undefined;\n append: (toAppend: {\n questions: ILearnosityQuestion[];\n responses?: Record<string, unknown>;\n }) => void;\n appendQuestion: (toAppend: {\n questions: ILearnosityQuestion[];\n responses?: Record<string, unknown>;\n }) => void;\n reset: () => void;\n renderMath: (renderer: TMathRenderer) => void;\n}\n\nexport interface IWorksheetBehavior {\n /**\n * If true, Opens the worksheet in resume mode.\n * - If false, Opens the worksheet in review mode.\n */\n canAttempt: boolean;\n /**\n * If true, the user can mark the question for review.\n */\n canMarkForReview: boolean;\n /**\n * The mode of navigation for the worksheet.\n * - `OPEN` mode allows the user to navigate to any question in the worksheet.\n * - `LINEAR` mode allows the user to navigate to the next question only.\n * - `ADAPTIVE` mode allows the user to navigate future questions based on the rating of the current question.\n * - `CURRENT` mode allows the user to navigate to the current question only. Back and forth not allowed.\n */\n navigationMode: 'OPEN' | 'LINEAR' | 'ADAPTIVE' | 'CURRENT';\n /**\n * The initial question to display when the worksheet is loaded.\n * - `FIRST` mode displays the first question in the worksheet.\n * - `CURRENT` mode displays the question that the user was last on.\n */\n initialQuestion: 'FIRST' | 'CURRENT';\n /**\n * If hints are available, on clicking the help button, first availble hint will be shown.\n * Clicking again will show the next hint.\n * If no more hints are available, onHelp will be called.\n */\n hints: boolean;\n /**\n * The time in seconds after which the hints button will be shown.\n */\n hintsTimer?: number; // in seconds\n /**\n * If true, the user can skip the question without attempting it.\n * Skip button will be shown only after the hints are exausted and skipTimer is reached.\n */\n skippable?: boolean;\n /**\n * The time in seconds after which the user can skip the question.\n */\n skippableTime?: number; // in seconds\n /**\n * If true, after the question is system validated, teacher discussion button will be shown when the question has discussion points.\n */\n teacherDiscussionEnabled?: boolean;\n /**\n * If true, teacher validation is needed for the question to proceed\n */\n teacherValidationEnabled: boolean;\n /**\n * If worksheet is attempting outside the class setting\n * This needs teacherValidationEnabled to be true\n * TODO: Consider changing to accept validation type: 'system' | 'teacher' | undefined instead of boolean\n */\n canTeacherValidate: boolean;\n /**\n * If true, questions will be validated and feedback will be shown.\n */\n validation: boolean;\n /**\n * If true, solution wont be shown to the user.\n */\n solutionHidden?: boolean;\n /**\n * If true, questions will be validated and feedback will be shown along with the correct answer.\n */\n review: boolean;\n /**\n * The maximum number of attempts allowed for each question.\n * 0 means unlimited attempts.\n * -1 means attempts will not be validated, hence not pushed to attempt history.\n * -2 means the sheet is a puzzle sheet\n * After reaching the maximum number of attempts, the user cannot attempt the question anymore.\n * If maxAtttmpts reached and canExceedAttempts is true, the user can still attempt the question\n * , also user will have the option to move to next question\n */\n maximumAttempts: number;\n /**\n * If true, the user can exceed the maximum number of attempts.\n */\n canExceedAttempts: boolean;\n\n /**\n * After attemptsAfterTeacherInterventionNeeded incorrect attempts, retry button will be disabled in class, move ahead button will show ouside class.\n */\n attemptsAfterTeacherInterventionNeeded?: number;\n /**\n * If the worksheet minimumAccuracy is not met, on clicking the final submit button, onMinimumAccuracyNotMet will be called.\n */\n minimumAccuracy: number;\n /**\n * Label for the check button\n * For example,\n * - \"Check\" for Checking the answer\n * - \"Submit\" for Submitting the answer when doing assessment\n */\n checkButtonLabel: string;\n /**\n * If attempt is incorrect, we show retry button, this is the label for the retry button\n * For example,\n * - 'Try Again' for retrying the question\n */\n retryButtonLabel: string;\n /**\n * If true show demos calculator https://www.desmos.com/calculator\n */\n canShowDesmosCalc: boolean;\n\n // If true, canvas is enabled and user can use canvas to scribble on the worksheet by toggling the scribble button\n canvasEnabled?: boolean;\n\n // If true, the user can scribble on workheet\n canScribble?: boolean;\n}\n\nexport type TWORKSHEET_QUESTION_MEDIA_TYPE = 'SIMULATION' | 'VIDEO' | 'AUDIO';\n\nexport interface IWorksheetCallbackProps {\n onResponseChange?: (options: {\n responseId: string;\n response: IWorksheetResponse;\n isNewAttempt: boolean;\n question: IWorksheetQuestion;\n }) => void;\n onBulkResponsesChange?: (responses: Record<string, IWorksheetResponse>) => void;\n onResponsesChange?: (responses: Record<string, IWorksheetResponse>) => void;\n onMediaStateChange?: (\n question: IWorksheetQuestion,\n mediaType: TWORKSHEET_QUESTION_MEDIA_TYPE,\n mediaState: Record<string, unknown>,\n ) => void;\n onTeacherValidation?: (questionId: string, rating?: keyof typeof QUESTIONS_RATING) => void;\n onAllowRetry?: (questionId: string) => void;\n onOptionalItemAssignment?: (itemType: TItemType) => void;\n onOptionalItemSkip?: (itemType: TItemType) => void;\n onHelp?: (options: { questionId: string; questionNumber: string }) => void;\n onMinimumAccuracyNotMet?: (accuracy: number) => void;\n onExitTicketStart?: () => void;\n onExitTicketSubmit?: () => void;\n onSubmit?: (\n responses: Record<string, IWorksheetResponse>,\n questions: IWorksheetQuestion[],\n ) => void;\n onActiveQuestionChange?: (question: IWorksheetQuestion) => void;\n onResolveDoubt?: (responseId: string) => void;\n onSkip?: (itemIndex: number, widgetIndex: number) => void;\n onLoaded: () => void;\n onErrored: (error: { code?: number; message: string }) => void;\n onResponsesLoaded?: (responses: Record<string, IWorksheetResponse>) => void;\n openQuestionFeedbackModal?: (itemRef: string) => void;\n}\n\ninterface ICueCanvasCallbackProps {\n onPublishStrokes?: TPublish;\n onReceiveStrokes?: TSubscribe;\n}\n\ninterface ICueCanvasProps {\n initialStrokesData?: Record<string, IActionData[]>;\n}\n\ninterface IPointerSyncCallbackProps {\n onPublishMouseMove?: TPublishMouseMove;\n onSubscribeMouseMove?: TSubscribeMouseMove;\n}\n\nexport interface IWorksheetLayout {\n containerStyle: 'none' | 'card';\n navigationBar: 'none' | 'top' | 'bottom';\n actionBar: 'none' | 'bottom';\n containerWidth: string;\n topOffset: number; // Offset from the top of the screen, for eg: height of the header\n questionsScrollable: boolean;\n minQuestionHeight: string | number;\n minSummaryHeight: string | number;\n showUserPointer?: boolean;\n renderQuestionHeader?: boolean;\n imageHue?: THueNames;\n background?: 'none' | 'paper';\n questionPadding: number;\n}\n\nexport interface ISubjectiveSheetProps {\n onAddReviewComment?: (\n responseId: string,\n commentData: {\n score: ILearnosityQuestionScore;\n teacherReview: ITeacherReview;\n },\n ) => void;\n openImagesReviewModal?: (props: IOpenImageReviewModalProps) => void;\n handleReviewSubmit?: () => void;\n isSubmittingReview?: boolean;\n isReviewPending?: boolean;\n}\n\ninterface IBaseWorksheetProps {\n userType: TUserTypes;\n userId: string;\n studentId: string;\n studentName?: string;\n worksheetName: string;\n initialResponseId?: string;\n initialItemIndex?: number;\n layout: IWorksheetLayout;\n updatedResponses?: Record<string, IWorksheetResponse>;\n worksheetCompleted: boolean;\n showNudgeBanner?: boolean;\n markedAsCompleted?: boolean;\n canResolveDoubt?: boolean;\n actionBarRightElement?: ReactElement; // Extra Elements to be rendered in the action bar\n attemptId?: string;\n itemsSignedRequest: string;\n questionsSignedRequest: string;\n summaryDescription?: ReactElement | null;\n canSubmitWorksheet?: boolean;\n selectedTopics?: string[];\n subjectiveProps?: ISubjectiveSheetProps;\n inClass?: boolean; // If true, the worksheet is rendered inside class\n activityType: EWorksheetActivity | null;\n isDesmosEnabled?: boolean; // If true, the worksheet can show desmos calculator\n nodeType: TNodeTypes; // NodeType of the worksheet\n mode: 'resume' | 'review' | 'preview'; // mode of the worksheet\n loggerRef: MutableRefObject<(eventName: string, data?: Record<string, unknown>) => void>;\n behaviorOverride?: Partial<IWorksheetBehavior>;\n}\n\ninterface IWorksheetPlugins {\n plugins?: {\n stickers?: ReactNode;\n };\n}\n\ninterface IUpdateImages {\n filteredImages: string[];\n newImages: IFile[];\n}\ninterface IOpenImageReviewModalProps {\n isReviewed?: boolean;\n disableScoreForm?: boolean;\n imageUrls?: string[];\n filteredImageUrls?: (props: IUpdateImages) => void;\n uploadedImages?: (IFile | string)[];\n image?: string;\n}\n\nexport interface IWorksheetProps\n extends IBaseWorksheetProps,\n IWorksheetCallbackProps,\n ICueCanvasProps,\n ICueCanvasCallbackProps,\n IPointerSyncCallbackProps,\n IWorksheetPlugins {}\n\nexport interface IWorksheetRef {\n validateQuestion: (\n responseId: string,\n rating?: keyof typeof QUESTIONS_RATING,\n skipRemainingQuestions?: boolean,\n ) => void;\n assignOptionalItems: (itemType: TItemType) => void;\n skipOptionalItems: (itemType: TItemType) => void;\n updateMediaState: (\n responseId: string,\n mediaType: TWORKSHEET_QUESTION_MEDIA_TYPE,\n mediaState: Record<string, unknown>,\n ) => void;\n allowRetry: (responseId: string) => void;\n}\n\ninterface IWorksheetHeaderLayoutArgs {\n isPuzzleWorksheet?: boolean;\n isTestWorksheet?: boolean;\n imageHue?: THueNames;\n}\n\nexport interface IWorksheetHeaderLayoutProps {\n (args: IWorksheetHeaderLayoutArgs): {\n bgColor: TColorNames;\n borderColor?: TColorNames;\n textColor?: TColorNames;\n };\n}\n\nexport type TWorksheetStoreProps = Omit<\n IBaseWorksheetProps,\n 'studentName' | 'itemsSignedRequest' | 'mode'\n> &\n Required<Pick<IBaseWorksheetProps, 'studentName'>> &\n Omit<IWorksheetCallbackProps, 'onLoaded' | 'onErrored'> &\n ICueCanvasProps &\n ICueCanvasCallbackProps &\n IPointerSyncCallbackProps &\n IWorksheetPlugins & {\n behavior: IWorksheetBehavior;\n learnosityItems: ILearnosityItem[];\n learnosityResponses?: Record<string, IWorksheetResponse>;\n learnosity: ILearnosity;\n appendedQuestionIds: string[];\n };\n\nexport enum EActiveQuestionTool {\n TEACHING_TOOLS = 'TEACHING_TOOLS',\n SOLUTION = 'SOLUTION',\n DISCUSSION = 'DISCUSSION',\n}\n\nexport interface IWorksheetStoreState {\n questions: IWorksheetQuestion[];\n renderableQuestions: IWorksheetQuestion[];\n responses: Record<string, IWorksheetResponse>;\n lastUnlockedQuestionIndex: number;\n initialQuestionId: string;\n activeQuestionId: string;\n activeQuestionIndex: number;\n questionsContainerWidth: number;\n maxQuestionWidth: number;\n actionbarHeight: number;\n summaryVisible: boolean;\n calculatorVisible: boolean;\n scribblingEnabled: boolean;\n activeQuestionTool?: EActiveQuestionTool;\n blocker?: TWorksheetBlocker;\n scrolledToInitialQuestion: boolean;\n}\n\n// Actions interface - contains all the methods\ninterface IWorksheetStoreActions {\n mergeWorksheetProps: (data: TWorksheetStoreProps) => void;\n setResponses: (\n responses:\n | IWorksheetStore['responses']\n | ((prevResponses: IWorksheetStore['responses']) => IWorksheetStore['responses']),\n ) => void;\n showSummary: () => void;\n hideSummary: () => void;\n toggleSummary: () => void;\n toggleCalculator: () => void;\n toggleScribble: () => void;\n setBlocker: (blocker?: TWorksheetBlocker) => void;\n /**\n *\n * @param scrollToLastUnlockedQuestion - If true, scrolls to the last unlocked question after removing the blocker. Default is true.\n * @returns\n */\n removeBlocker: (scrollToLastUnlockedQuestion?: boolean) => void;\n updateResponse: (options: {\n responseId: string;\n response: ILearnosityQuestionResponse;\n score: ILearnosityQuestionScore;\n timeSpent: number;\n answerChecked?: boolean;\n }) => void;\n updateMediaState: (\n responseId: string,\n mediaType: TWORKSHEET_QUESTION_MEDIA_TYPE,\n mediaState: Record<string, unknown>,\n ) => void;\n setDiscussionQuestionOffset: (responseId: string, offset: number) => void;\n markForReview: (responseId: string, markedForReview: boolean) => void;\n changeQuestion: (questionId: string, shouldScroll?: boolean, scrollDelay?: number) => void;\n setActiveQuestionTool: (tool: EActiveQuestionTool) => void;\n unsetActiveQuestionTool: () => void;\n destroy: () => void;\n}\n\n// Combined store interface\nexport interface IWorksheetStore\n extends IWorksheetStoreState,\n TWorksheetStoreProps,\n IWorksheetStoreActions {}\n"],"names":["QUESTION_TAGS","QUESTIONS_RATING","EActiveQuestionTool"],"mappings":"AASY,IAAAA,sBAAAA,OACVA,EAAA,cAAc,eACdA,EAAA,gBAAgB,iBAFNA,IAAAA,KAAA,CAAA,CAAA,GAKAC,sBAAAA,OACVA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KACAA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KACAA,EAAAA,EAAA,IAAI,CAAJ,IAAA,KAHUA,IAAAA,KAAA,CAAA,CAAA,GAwjBAC,sBAAAA,OACVA,EAAA,iBAAiB,kBACjBA,EAAA,WAAW,YACXA,EAAA,aAAa,cAHHA,IAAAA,KAAA,CAAA,CAAA;"}
@@ -1,17 +1,17 @@
1
1
  import { jsx as f } from "react/jsx-runtime";
2
- import { memo as b, forwardRef as D, useMemo as I, useCallback as N, useEffect as l } from "react";
3
- import V from "../../cue-canvas/cue-canvas-provider.js";
4
- import x from "../constants/events.js";
5
- import A from "./hooks/use-learnosity.js";
6
- import B from "./hooks/use-worksheet-data-helper.js";
7
- import { getWorksheetBehaviour as H } from "./worksheet-behavior-helper.js";
2
+ import { memo as D, forwardRef as I, useMemo as N, useCallback as V, useEffect as l } from "react";
3
+ import x from "../../cue-canvas/cue-canvas-provider.js";
4
+ import A from "../constants/events.js";
5
+ import B from "./hooks/use-learnosity.js";
6
+ import H from "./hooks/use-worksheet-data-helper.js";
7
+ import { getWorksheetBehaviour as O } from "./worksheet-behavior-helper.js";
8
8
  import _ from "./worksheet-provider.js";
9
9
  import j from "./worksheet-view.js";
10
- const K = b(
11
- D((R, v) => {
10
+ const K = D(
11
+ I((R, S) => {
12
12
  const {
13
- attemptId: S,
14
- itemsSignedRequest: W,
13
+ attemptId: W,
14
+ itemsSignedRequest: w,
15
15
  questionsSignedRequest: h,
16
16
  onLoaded: t,
17
17
  onErrored: n,
@@ -24,24 +24,35 @@ const K = b(
24
24
  mode: k,
25
25
  activityType: c,
26
26
  isDesmosEnabled: g = !1,
27
- studentName: w,
28
- ...C
29
- } = R, T = I(
30
- () => H({
27
+ behaviorOverride: v,
28
+ studentName: C,
29
+ ...T
30
+ } = R, b = N(
31
+ () => O({
31
32
  nodeType: p,
32
33
  inClass: u,
33
34
  activityType: c,
34
35
  isDesmosEnabled: g,
35
36
  mode: k,
36
37
  userType: i,
37
- worksheetCompleted: d
38
+ worksheetCompleted: d,
39
+ behaviorOverride: v
38
40
  }),
39
- [p, u, c, g, k, i, d]
40
- ), { loadingState: s, data: e, error: E } = B({
41
- attemptId: S,
42
- signedRequest: W,
41
+ [
42
+ p,
43
+ u,
44
+ c,
45
+ g,
46
+ k,
47
+ i,
48
+ d,
49
+ v
50
+ ]
51
+ ), { loadingState: s, data: e, error: E } = H({
52
+ attemptId: W,
53
+ signedRequest: w,
43
54
  loggerRef: o
44
- }), q = N(
55
+ }), q = V(
45
56
  (m) => {
46
57
  n({
47
58
  code: m.code,
@@ -49,7 +60,7 @@ const K = b(
49
60
  });
50
61
  },
51
62
  [n]
52
- ), { learnosity: r, appendedQuestionIds: L } = A(
63
+ ), { learnosity: r, appendedQuestionIds: L } = B(
53
64
  h,
54
65
  q,
55
66
  o
@@ -59,8 +70,8 @@ const K = b(
59
70
  return {
60
71
  learnosityItems: m,
61
72
  learnosityResponses: P,
62
- behavior: T,
63
- studentName: w ?? "Student",
73
+ behavior: b,
74
+ studentName: C ?? "Student",
64
75
  userType: i,
65
76
  questionsSignedRequest: h,
66
77
  worksheetCompleted: d,
@@ -70,7 +81,7 @@ const K = b(
70
81
  nodeType: p,
71
82
  activityType: c,
72
83
  inClass: u,
73
- ...C
84
+ ...T
74
85
  };
75
86
  }
76
87
  return null;
@@ -80,13 +91,13 @@ const K = b(
80
91
  message: E ?? "Error loading worksheet"
81
92
  });
82
93
  }, [s, E, t, n]), l(() => {
83
- r && s === "success" && t && (o.current(x.WORKSHEET_V3_READY), t());
94
+ r && s === "success" && t && (o.current(A.WORKSHEET_V3_READY), t());
84
95
  }, [r, s, o, t]), l(() => {
85
96
  e != null && e.responses && a && a(e.responses ?? {});
86
- }, [e == null ? void 0 : e.responses, a]), s === "success" && e && r && y ? /* @__PURE__ */ f(_, { ...y, children: /* @__PURE__ */ f(V, { userType: i, renderAs: "canvas", children: /* @__PURE__ */ f(j, { ref: v }) }) }) : null;
97
+ }, [e == null ? void 0 : e.responses, a]), s === "success" && e && r && y ? /* @__PURE__ */ f(_, { ...y, children: /* @__PURE__ */ f(x, { userType: i, renderAs: "canvas", children: /* @__PURE__ */ f(j, { ref: S }) }) }) : null;
87
98
  })
88
- ), U = K;
99
+ ), X = K;
89
100
  export {
90
- U as default
101
+ X as default
91
102
  };
92
103
  //# sourceMappingURL=worksheet.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"worksheet.js","sources":["../../../../src/features/worksheet/worksheet/worksheet.tsx"],"sourcesContent":["import { forwardRef, memo, useCallback, useEffect, useMemo } from 'react';\n\nimport CueCanvasProvider from '../../cue-canvas/cue-canvas-provider';\nimport EVENTS from '../constants/events';\nimport useLearnosity from './hooks/use-learnosity';\nimport useWorksheetDataHelper from './hooks/use-worksheet-data-helper';\nimport { getWorksheetBehaviour } from './worksheet-behavior-helper';\nimport WorksheetProvider from './worksheet-provider';\nimport type {\n ILearnosityError,\n IWorksheetProps,\n IWorksheetRef,\n TWorksheetStoreProps,\n} from './worksheet-types';\nimport WorksheetView from './worksheet-view';\n\nconst Worksheet = memo(\n forwardRef<IWorksheetRef, IWorksheetProps>((props, ref) => {\n const {\n attemptId,\n itemsSignedRequest,\n questionsSignedRequest,\n onLoaded,\n onErrored,\n onResponsesLoaded,\n loggerRef,\n userType,\n worksheetCompleted,\n inClass,\n nodeType,\n mode,\n activityType,\n isDesmosEnabled = false,\n studentName,\n ...otherProps\n } = props;\n\n const worksheetBehavior = useMemo(\n () =>\n getWorksheetBehaviour({\n nodeType,\n inClass,\n activityType,\n isDesmosEnabled,\n mode,\n userType,\n worksheetCompleted,\n }),\n [nodeType, inClass, activityType, isDesmosEnabled, mode, userType, worksheetCompleted],\n );\n\n const { loadingState, data, error } = useWorksheetDataHelper({\n attemptId,\n signedRequest: itemsSignedRequest,\n loggerRef,\n });\n\n const onLearnosityErrored = useCallback(\n (err: ILearnosityError) => {\n onErrored({\n code: err.code,\n message: err.detail,\n });\n },\n [onErrored],\n );\n\n const { learnosity, appendedQuestionIds } = useLearnosity(\n questionsSignedRequest,\n onLearnosityErrored,\n loggerRef,\n );\n\n const worksheetStoreProps: TWorksheetStoreProps | null = (() => {\n if (loadingState === 'success' && data && learnosity) {\n const { learnosityItems, responses } = data;\n\n return {\n learnosityItems,\n learnosityResponses: responses,\n behavior: worksheetBehavior,\n studentName: studentName ?? 'Student',\n userType,\n questionsSignedRequest,\n worksheetCompleted,\n learnosity,\n loggerRef,\n appendedQuestionIds,\n nodeType,\n activityType,\n inClass,\n ...otherProps,\n };\n }\n\n return null;\n })();\n\n useEffect(() => {\n if (loadingState === 'error') {\n onErrored({\n message: error ?? 'Error loading worksheet',\n });\n }\n }, [loadingState, error, onLoaded, onErrored]);\n\n useEffect(() => {\n if (learnosity && loadingState === 'success' && onLoaded) {\n loggerRef.current(EVENTS.WORKSHEET_V3_READY);\n onLoaded();\n }\n }, [learnosity, loadingState, loggerRef, onLoaded]);\n\n useEffect(() => {\n if (data?.responses && onResponsesLoaded) {\n onResponsesLoaded(data.responses ?? {});\n }\n }, [data?.responses, onResponsesLoaded]);\n\n if (loadingState === 'success' && data && learnosity && worksheetStoreProps) {\n return (\n <WorksheetProvider {...worksheetStoreProps}>\n <CueCanvasProvider userType={userType} renderAs=\"canvas\">\n <WorksheetView ref={ref} />\n </CueCanvasProvider>\n </WorksheetProvider>\n );\n }\n\n return null;\n }),\n);\n\nexport default Worksheet;\n"],"names":["Worksheet","memo","forwardRef","props","ref","attemptId","itemsSignedRequest","questionsSignedRequest","onLoaded","onErrored","onResponsesLoaded","loggerRef","userType","worksheetCompleted","inClass","nodeType","mode","activityType","isDesmosEnabled","studentName","otherProps","worksheetBehavior","useMemo","getWorksheetBehaviour","loadingState","data","error","useWorksheetDataHelper","onLearnosityErrored","useCallback","err","learnosity","appendedQuestionIds","useLearnosity","worksheetStoreProps","learnosityItems","responses","useEffect","EVENTS","jsx","WorksheetProvider","CueCanvasProvider","WorksheetView","Worksheet$1"],"mappings":";;;;;;;;;AAgBA,MAAMA,IAAYC;AAAA,EAChBC,EAA2C,CAACC,GAAOC,MAAQ;AACnD,UAAA;AAAA,MACJ,WAAAC;AAAA,MACA,oBAAAC;AAAA,MACA,wBAAAC;AAAA,MACA,UAAAC;AAAA,MACA,WAAAC;AAAA,MACA,mBAAAC;AAAA,MACA,WAAAC;AAAA,MACA,UAAAC;AAAA,MACA,oBAAAC;AAAA,MACA,SAAAC;AAAA,MACA,UAAAC;AAAA,MACA,MAAAC;AAAA,MACA,cAAAC;AAAA,MACA,iBAAAC,IAAkB;AAAA,MAClB,aAAAC;AAAA,MACA,GAAGC;AAAA,IACD,IAAAjB,GAEEkB,IAAoBC;AAAA,MACxB,MACEC,EAAsB;AAAA,QACpB,UAAAR;AAAA,QACA,SAAAD;AAAA,QACA,cAAAG;AAAA,QACA,iBAAAC;AAAA,QACA,MAAAF;AAAA,QACA,UAAAJ;AAAA,QACA,oBAAAC;AAAA,MAAA,CACD;AAAA,MACH,CAACE,GAAUD,GAASG,GAAcC,GAAiBF,GAAMJ,GAAUC,CAAkB;AAAA,IAAA,GAGjF,EAAE,cAAAW,GAAc,MAAAC,GAAM,OAAAC,EAAA,IAAUC,EAAuB;AAAA,MAC3D,WAAAtB;AAAA,MACA,eAAeC;AAAA,MACf,WAAAK;AAAA,IAAA,CACD,GAEKiB,IAAsBC;AAAA,MAC1B,CAACC,MAA0B;AACf,QAAArB,EAAA;AAAA,UACR,MAAMqB,EAAI;AAAA,UACV,SAASA,EAAI;AAAA,QAAA,CACd;AAAA,MACH;AAAA,MACA,CAACrB,CAAS;AAAA,IAAA,GAGN,EAAE,YAAAsB,GAAY,qBAAAC,EAAA,IAAwBC;AAAA,MAC1C1B;AAAA,MACAqB;AAAA,MACAjB;AAAA,IAAA,GAGIuB,KAAoD,MAAM;AAC1D,UAAAV,MAAiB,aAAaC,KAAQM,GAAY;AAC9C,cAAA,EAAE,iBAAAI,GAAiB,WAAAC,EAAc,IAAAX;AAEhC,eAAA;AAAA,UACL,iBAAAU;AAAA,UACA,qBAAqBC;AAAA,UACrB,UAAUf;AAAA,UACV,aAAaF,KAAe;AAAA,UAC5B,UAAAP;AAAA,UACA,wBAAAL;AAAA,UACA,oBAAAM;AAAA,UACA,YAAAkB;AAAA,UACA,WAAApB;AAAA,UACA,qBAAAqB;AAAA,UACA,UAAAjB;AAAA,UACA,cAAAE;AAAA,UACA,SAAAH;AAAA,UACA,GAAGM;AAAA,QAAA;AAAA,MAEP;AAEO,aAAA;AAAA,IAAA;AAwBT,WArBAiB,EAAU,MAAM;AACd,MAAIb,MAAiB,WACTf,EAAA;AAAA,QACR,SAASiB,KAAS;AAAA,MAAA,CACnB;AAAA,OAEF,CAACF,GAAcE,GAAOlB,GAAUC,CAAS,CAAC,GAE7C4B,EAAU,MAAM;AACV,MAAAN,KAAcP,MAAiB,aAAahB,MACpCG,EAAA,QAAQ2B,EAAO,kBAAkB,GAClC9B;OAEV,CAACuB,GAAYP,GAAcb,GAAWH,CAAQ,CAAC,GAElD6B,EAAU,MAAM;AACV,MAAAZ,KAAA,QAAAA,EAAM,aAAaf,KACHA,EAAAe,EAAK,aAAa,CAAA,CAAE;AAAA,IAEvC,GAAA,CAACA,KAAA,gBAAAA,EAAM,WAAWf,CAAiB,CAAC,GAEnCc,MAAiB,aAAaC,KAAQM,KAAcG,IAEnD,gBAAAK,EAAAC,GAAA,EAAmB,GAAGN,GACrB,UAAC,gBAAAK,EAAAE,GAAA,EAAkB,UAAA7B,GAAoB,UAAS,UAC9C,UAAA,gBAAA2B,EAACG,GAAc,EAAA,KAAAtC,GAAU,GAC3B,EACF,CAAA,IAIG;AAAA,EAAA,CACR;AACH,GAEAuC,IAAe3C;"}
1
+ {"version":3,"file":"worksheet.js","sources":["../../../../src/features/worksheet/worksheet/worksheet.tsx"],"sourcesContent":["import { forwardRef, memo, useCallback, useEffect, useMemo } from 'react';\n\nimport CueCanvasProvider from '../../cue-canvas/cue-canvas-provider';\nimport EVENTS from '../constants/events';\nimport useLearnosity from './hooks/use-learnosity';\nimport useWorksheetDataHelper from './hooks/use-worksheet-data-helper';\nimport { getWorksheetBehaviour } from './worksheet-behavior-helper';\nimport WorksheetProvider from './worksheet-provider';\nimport type {\n ILearnosityError,\n IWorksheetProps,\n IWorksheetRef,\n TWorksheetStoreProps,\n} from './worksheet-types';\nimport WorksheetView from './worksheet-view';\n\nconst Worksheet = memo(\n forwardRef<IWorksheetRef, IWorksheetProps>((props, ref) => {\n const {\n attemptId,\n itemsSignedRequest,\n questionsSignedRequest,\n onLoaded,\n onErrored,\n onResponsesLoaded,\n loggerRef,\n userType,\n worksheetCompleted,\n inClass,\n nodeType,\n mode,\n activityType,\n isDesmosEnabled = false,\n behaviorOverride,\n studentName,\n ...otherProps\n } = props;\n\n const worksheetBehavior = useMemo(\n () =>\n getWorksheetBehaviour({\n nodeType,\n inClass,\n activityType,\n isDesmosEnabled,\n mode,\n userType,\n worksheetCompleted,\n behaviorOverride,\n }),\n [\n nodeType,\n inClass,\n activityType,\n isDesmosEnabled,\n mode,\n userType,\n worksheetCompleted,\n behaviorOverride,\n ],\n );\n\n const { loadingState, data, error } = useWorksheetDataHelper({\n attemptId,\n signedRequest: itemsSignedRequest,\n loggerRef,\n });\n\n const onLearnosityErrored = useCallback(\n (err: ILearnosityError) => {\n onErrored({\n code: err.code,\n message: err.detail,\n });\n },\n [onErrored],\n );\n\n const { learnosity, appendedQuestionIds } = useLearnosity(\n questionsSignedRequest,\n onLearnosityErrored,\n loggerRef,\n );\n\n const worksheetStoreProps: TWorksheetStoreProps | null = (() => {\n if (loadingState === 'success' && data && learnosity) {\n const { learnosityItems, responses } = data;\n\n return {\n learnosityItems,\n learnosityResponses: responses,\n behavior: worksheetBehavior,\n studentName: studentName ?? 'Student',\n userType,\n questionsSignedRequest,\n worksheetCompleted,\n learnosity,\n loggerRef,\n appendedQuestionIds,\n nodeType,\n activityType,\n inClass,\n ...otherProps,\n };\n }\n\n return null;\n })();\n\n useEffect(() => {\n if (loadingState === 'error') {\n onErrored({\n message: error ?? 'Error loading worksheet',\n });\n }\n }, [loadingState, error, onLoaded, onErrored]);\n\n useEffect(() => {\n if (learnosity && loadingState === 'success' && onLoaded) {\n loggerRef.current(EVENTS.WORKSHEET_V3_READY);\n onLoaded();\n }\n }, [learnosity, loadingState, loggerRef, onLoaded]);\n\n useEffect(() => {\n if (data?.responses && onResponsesLoaded) {\n onResponsesLoaded(data.responses ?? {});\n }\n }, [data?.responses, onResponsesLoaded]);\n\n if (loadingState === 'success' && data && learnosity && worksheetStoreProps) {\n return (\n <WorksheetProvider {...worksheetStoreProps}>\n <CueCanvasProvider userType={userType} renderAs=\"canvas\">\n <WorksheetView ref={ref} />\n </CueCanvasProvider>\n </WorksheetProvider>\n );\n }\n\n return null;\n }),\n);\n\nexport default Worksheet;\n"],"names":["Worksheet","memo","forwardRef","props","ref","attemptId","itemsSignedRequest","questionsSignedRequest","onLoaded","onErrored","onResponsesLoaded","loggerRef","userType","worksheetCompleted","inClass","nodeType","mode","activityType","isDesmosEnabled","behaviorOverride","studentName","otherProps","worksheetBehavior","useMemo","getWorksheetBehaviour","loadingState","data","error","useWorksheetDataHelper","onLearnosityErrored","useCallback","err","learnosity","appendedQuestionIds","useLearnosity","worksheetStoreProps","learnosityItems","responses","useEffect","EVENTS","jsx","WorksheetProvider","CueCanvasProvider","WorksheetView","Worksheet$1"],"mappings":"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"}