analytica-frontend-lib 1.0.86 → 1.0.87

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 (291) hide show
  1. package/dist/Accordation/index.js +0 -1
  2. package/dist/Accordation/index.mjs +0 -1
  3. package/dist/Alert/index.js +0 -1
  4. package/dist/Alert/index.mjs +0 -1
  5. package/dist/AlertDialog/index.js +0 -1
  6. package/dist/AlertDialog/index.mjs +0 -1
  7. package/dist/Alternative/index.js +0 -1
  8. package/dist/Alternative/index.mjs +0 -1
  9. package/dist/Auth/AuthProvider/index.js +0 -1
  10. package/dist/Auth/AuthProvider/index.mjs +0 -1
  11. package/dist/Auth/ProtectedRoute/index.js +0 -1
  12. package/dist/Auth/ProtectedRoute/index.mjs +0 -1
  13. package/dist/Auth/PublicRoute/index.js +0 -1
  14. package/dist/Auth/PublicRoute/index.mjs +0 -1
  15. package/dist/Auth/getRootDomain/index.js +0 -1
  16. package/dist/Auth/getRootDomain/index.mjs +0 -1
  17. package/dist/Auth/index.js +0 -1
  18. package/dist/Auth/index.mjs +0 -1
  19. package/dist/Auth/useApiConfig/index.js +0 -1
  20. package/dist/Auth/useApiConfig/index.mjs +0 -1
  21. package/dist/Auth/useAuth/index.js +0 -1
  22. package/dist/Auth/useAuth/index.mjs +0 -1
  23. package/dist/Auth/useAuthGuard/index.js +0 -1
  24. package/dist/Auth/useAuthGuard/index.mjs +0 -1
  25. package/dist/Auth/useRouteAuth/index.js +0 -1
  26. package/dist/Auth/useRouteAuth/index.mjs +0 -1
  27. package/dist/Auth/useUrlAuthentication/index.js +0 -1
  28. package/dist/Auth/useUrlAuthentication/index.mjs +0 -1
  29. package/dist/Auth/withAuth/index.js +0 -1
  30. package/dist/Auth/withAuth/index.mjs +0 -1
  31. package/dist/Auth/zustandAuthAdapter/index.js +0 -1
  32. package/dist/Auth/zustandAuthAdapter/index.mjs +0 -1
  33. package/dist/Badge/index.js +0 -1
  34. package/dist/Badge/index.mjs +0 -1
  35. package/dist/Button/index.js +0 -1
  36. package/dist/Button/index.mjs +0 -1
  37. package/dist/Calendar/index.js +0 -1
  38. package/dist/Calendar/index.mjs +0 -1
  39. package/dist/Card/index.js +0 -1
  40. package/dist/Card/index.mjs +0 -1
  41. package/dist/CheckBox/index.js +0 -1
  42. package/dist/CheckBox/index.mjs +0 -1
  43. package/dist/Chips/index.js +0 -1
  44. package/dist/Chips/index.mjs +0 -1
  45. package/dist/Divider/index.js +0 -1
  46. package/dist/Divider/index.mjs +0 -1
  47. package/dist/DropdownMenu/index.js +0 -1
  48. package/dist/DropdownMenu/index.mjs +0 -1
  49. package/dist/IconButton/index.js +0 -1
  50. package/dist/IconButton/index.mjs +0 -1
  51. package/dist/IconRoundedButton/index.js +0 -1
  52. package/dist/IconRoundedButton/index.mjs +0 -1
  53. package/dist/Input/index.js +0 -1
  54. package/dist/Input/index.mjs +0 -1
  55. package/dist/Menu/index.js +0 -1
  56. package/dist/Menu/index.mjs +0 -1
  57. package/dist/Modal/index.js +0 -1
  58. package/dist/Modal/index.mjs +0 -1
  59. package/dist/MultipleChoice/index.js +660 -0
  60. package/dist/MultipleChoice/index.mjs +647 -0
  61. package/dist/NavButton/index.js +0 -1
  62. package/dist/NavButton/index.mjs +0 -1
  63. package/dist/NotFound/index.js +0 -1
  64. package/dist/NotFound/index.mjs +0 -1
  65. package/dist/ProgressBar/index.js +0 -1
  66. package/dist/ProgressBar/index.mjs +0 -1
  67. package/dist/ProgressCircle/index.js +0 -1
  68. package/dist/ProgressCircle/index.mjs +0 -1
  69. package/dist/Quiz/index.js +955 -296
  70. package/dist/Quiz/index.mjs +972 -295
  71. package/dist/Quiz/useQuizStore/index.js +79 -35
  72. package/dist/Quiz/useQuizStore/index.mjs +79 -35
  73. package/dist/Radio/index.js +0 -1
  74. package/dist/Radio/index.mjs +0 -1
  75. package/dist/Select/index.js +0 -1
  76. package/dist/Select/index.mjs +0 -1
  77. package/dist/SelectionButton/index.js +0 -1
  78. package/dist/SelectionButton/index.mjs +0 -1
  79. package/dist/Skeleton/index.js +0 -1
  80. package/dist/Skeleton/index.mjs +0 -1
  81. package/dist/Stepper/index.js +0 -1
  82. package/dist/Stepper/index.mjs +0 -1
  83. package/dist/Table/index.js +0 -1
  84. package/dist/Table/index.mjs +0 -1
  85. package/dist/Text/index.js +0 -1
  86. package/dist/Text/index.mjs +0 -1
  87. package/dist/TextArea/index.js +0 -1
  88. package/dist/TextArea/index.mjs +0 -1
  89. package/dist/Toast/ToastStore/index.js +0 -1
  90. package/dist/Toast/ToastStore/index.mjs +0 -1
  91. package/dist/Toast/Toaster/index.js +0 -1
  92. package/dist/Toast/Toaster/index.mjs +0 -1
  93. package/dist/Toast/index.js +0 -1
  94. package/dist/Toast/index.mjs +0 -1
  95. package/dist/index.css +42 -1
  96. package/dist/index.js +1397 -935
  97. package/dist/index.mjs +1338 -866
  98. package/dist/styles.css +42 -1
  99. package/package.json +4 -2
  100. package/dist/Accordation/index.d.mts +0 -12
  101. package/dist/Accordation/index.d.ts +0 -12
  102. package/dist/Accordation/index.js.map +0 -1
  103. package/dist/Accordation/index.mjs.map +0 -1
  104. package/dist/Alert/index.d.mts +0 -13
  105. package/dist/Alert/index.d.ts +0 -13
  106. package/dist/Alert/index.js.map +0 -1
  107. package/dist/Alert/index.mjs.map +0 -1
  108. package/dist/AlertDialog/index.d.mts +0 -36
  109. package/dist/AlertDialog/index.d.ts +0 -36
  110. package/dist/AlertDialog/index.js.map +0 -1
  111. package/dist/AlertDialog/index.mjs.map +0 -1
  112. package/dist/Alternative/index.d.mts +0 -81
  113. package/dist/Alternative/index.d.ts +0 -81
  114. package/dist/Alternative/index.js.map +0 -1
  115. package/dist/Alternative/index.mjs.map +0 -1
  116. package/dist/Auth/AuthProvider/index.d.mts +0 -3
  117. package/dist/Auth/AuthProvider/index.d.ts +0 -3
  118. package/dist/Auth/AuthProvider/index.js.map +0 -1
  119. package/dist/Auth/AuthProvider/index.mjs.map +0 -1
  120. package/dist/Auth/ProtectedRoute/index.d.mts +0 -3
  121. package/dist/Auth/ProtectedRoute/index.d.ts +0 -3
  122. package/dist/Auth/ProtectedRoute/index.js.map +0 -1
  123. package/dist/Auth/ProtectedRoute/index.mjs.map +0 -1
  124. package/dist/Auth/PublicRoute/index.d.mts +0 -3
  125. package/dist/Auth/PublicRoute/index.d.ts +0 -3
  126. package/dist/Auth/PublicRoute/index.js.map +0 -1
  127. package/dist/Auth/PublicRoute/index.mjs.map +0 -1
  128. package/dist/Auth/getRootDomain/index.d.mts +0 -3
  129. package/dist/Auth/getRootDomain/index.d.ts +0 -3
  130. package/dist/Auth/getRootDomain/index.js.map +0 -1
  131. package/dist/Auth/getRootDomain/index.mjs.map +0 -1
  132. package/dist/Auth/index.d.mts +0 -312
  133. package/dist/Auth/index.d.ts +0 -312
  134. package/dist/Auth/index.js.map +0 -1
  135. package/dist/Auth/index.mjs.map +0 -1
  136. package/dist/Auth/useApiConfig/index.d.mts +0 -43
  137. package/dist/Auth/useApiConfig/index.d.ts +0 -43
  138. package/dist/Auth/useApiConfig/index.js.map +0 -1
  139. package/dist/Auth/useApiConfig/index.mjs.map +0 -1
  140. package/dist/Auth/useAuth/index.d.mts +0 -3
  141. package/dist/Auth/useAuth/index.d.ts +0 -3
  142. package/dist/Auth/useAuth/index.js.map +0 -1
  143. package/dist/Auth/useAuth/index.mjs.map +0 -1
  144. package/dist/Auth/useAuthGuard/index.d.mts +0 -3
  145. package/dist/Auth/useAuthGuard/index.d.ts +0 -3
  146. package/dist/Auth/useAuthGuard/index.js.map +0 -1
  147. package/dist/Auth/useAuthGuard/index.mjs.map +0 -1
  148. package/dist/Auth/useRouteAuth/index.d.mts +0 -3
  149. package/dist/Auth/useRouteAuth/index.d.ts +0 -3
  150. package/dist/Auth/useRouteAuth/index.js.map +0 -1
  151. package/dist/Auth/useRouteAuth/index.mjs.map +0 -1
  152. package/dist/Auth/useUrlAuthentication/index.d.mts +0 -58
  153. package/dist/Auth/useUrlAuthentication/index.d.ts +0 -58
  154. package/dist/Auth/useUrlAuthentication/index.js.map +0 -1
  155. package/dist/Auth/useUrlAuthentication/index.mjs.map +0 -1
  156. package/dist/Auth/withAuth/index.d.mts +0 -3
  157. package/dist/Auth/withAuth/index.d.ts +0 -3
  158. package/dist/Auth/withAuth/index.js.map +0 -1
  159. package/dist/Auth/withAuth/index.mjs.map +0 -1
  160. package/dist/Auth/zustandAuthAdapter/index.d.mts +0 -75
  161. package/dist/Auth/zustandAuthAdapter/index.d.ts +0 -75
  162. package/dist/Auth/zustandAuthAdapter/index.js.map +0 -1
  163. package/dist/Auth/zustandAuthAdapter/index.mjs.map +0 -1
  164. package/dist/Badge/index.d.mts +0 -46
  165. package/dist/Badge/index.d.ts +0 -46
  166. package/dist/Badge/index.js.map +0 -1
  167. package/dist/Badge/index.mjs.map +0 -1
  168. package/dist/Button/index.d.mts +0 -45
  169. package/dist/Button/index.d.ts +0 -45
  170. package/dist/Button/index.js.map +0 -1
  171. package/dist/Button/index.mjs.map +0 -1
  172. package/dist/Calendar/index.d.mts +0 -60
  173. package/dist/Calendar/index.d.ts +0 -60
  174. package/dist/Calendar/index.js.map +0 -1
  175. package/dist/Calendar/index.mjs.map +0 -1
  176. package/dist/Card/index.d.mts +0 -150
  177. package/dist/Card/index.d.ts +0 -150
  178. package/dist/Card/index.js.map +0 -1
  179. package/dist/Card/index.mjs.map +0 -1
  180. package/dist/CheckBox/index.d.mts +0 -74
  181. package/dist/CheckBox/index.d.ts +0 -74
  182. package/dist/CheckBox/index.js.map +0 -1
  183. package/dist/CheckBox/index.mjs.map +0 -1
  184. package/dist/Chips/index.d.mts +0 -41
  185. package/dist/Chips/index.d.ts +0 -41
  186. package/dist/Chips/index.js.map +0 -1
  187. package/dist/Chips/index.mjs.map +0 -1
  188. package/dist/Divider/index.d.mts +0 -32
  189. package/dist/Divider/index.d.ts +0 -32
  190. package/dist/Divider/index.js.map +0 -1
  191. package/dist/Divider/index.mjs.map +0 -1
  192. package/dist/DropdownMenu/index.d.mts +0 -68
  193. package/dist/DropdownMenu/index.d.ts +0 -68
  194. package/dist/DropdownMenu/index.js.map +0 -1
  195. package/dist/DropdownMenu/index.mjs.map +0 -1
  196. package/dist/IconButton/index.d.mts +0 -76
  197. package/dist/IconButton/index.d.ts +0 -76
  198. package/dist/IconButton/index.js.map +0 -1
  199. package/dist/IconButton/index.mjs.map +0 -1
  200. package/dist/IconRoundedButton/index.d.mts +0 -34
  201. package/dist/IconRoundedButton/index.d.ts +0 -34
  202. package/dist/IconRoundedButton/index.js.map +0 -1
  203. package/dist/IconRoundedButton/index.mjs.map +0 -1
  204. package/dist/Input/index.d.mts +0 -27
  205. package/dist/Input/index.d.ts +0 -27
  206. package/dist/Input/index.js.map +0 -1
  207. package/dist/Input/index.mjs.map +0 -1
  208. package/dist/Menu/index.d.mts +0 -48
  209. package/dist/Menu/index.d.ts +0 -48
  210. package/dist/Menu/index.js.map +0 -1
  211. package/dist/Menu/index.mjs.map +0 -1
  212. package/dist/Modal/index.d.mts +0 -66
  213. package/dist/Modal/index.d.ts +0 -66
  214. package/dist/Modal/index.js.map +0 -1
  215. package/dist/Modal/index.mjs.map +0 -1
  216. package/dist/NavButton/index.d.mts +0 -57
  217. package/dist/NavButton/index.d.ts +0 -57
  218. package/dist/NavButton/index.js.map +0 -1
  219. package/dist/NavButton/index.mjs.map +0 -1
  220. package/dist/NotFound/index.d.mts +0 -58
  221. package/dist/NotFound/index.d.ts +0 -58
  222. package/dist/NotFound/index.js.map +0 -1
  223. package/dist/NotFound/index.mjs.map +0 -1
  224. package/dist/ProgressBar/index.d.mts +0 -95
  225. package/dist/ProgressBar/index.d.ts +0 -95
  226. package/dist/ProgressBar/index.js.map +0 -1
  227. package/dist/ProgressBar/index.mjs.map +0 -1
  228. package/dist/ProgressCircle/index.d.mts +0 -60
  229. package/dist/ProgressCircle/index.d.ts +0 -60
  230. package/dist/ProgressCircle/index.js.map +0 -1
  231. package/dist/ProgressCircle/index.mjs.map +0 -1
  232. package/dist/Quiz/index.d.mts +0 -52
  233. package/dist/Quiz/index.d.ts +0 -52
  234. package/dist/Quiz/index.js.map +0 -1
  235. package/dist/Quiz/index.mjs.map +0 -1
  236. package/dist/Quiz/useQuizStore/index.d.mts +0 -140
  237. package/dist/Quiz/useQuizStore/index.d.ts +0 -140
  238. package/dist/Quiz/useQuizStore/index.js.map +0 -1
  239. package/dist/Quiz/useQuizStore/index.mjs.map +0 -1
  240. package/dist/Radio/index.d.mts +0 -203
  241. package/dist/Radio/index.d.ts +0 -203
  242. package/dist/Radio/index.js.map +0 -1
  243. package/dist/Radio/index.mjs.map +0 -1
  244. package/dist/Select/index.d.mts +0 -58
  245. package/dist/Select/index.d.ts +0 -58
  246. package/dist/Select/index.js.map +0 -1
  247. package/dist/Select/index.mjs.map +0 -1
  248. package/dist/SelectionButton/index.d.mts +0 -57
  249. package/dist/SelectionButton/index.d.ts +0 -57
  250. package/dist/SelectionButton/index.js.map +0 -1
  251. package/dist/SelectionButton/index.mjs.map +0 -1
  252. package/dist/Skeleton/index.d.mts +0 -40
  253. package/dist/Skeleton/index.d.ts +0 -40
  254. package/dist/Skeleton/index.js.map +0 -1
  255. package/dist/Skeleton/index.mjs.map +0 -1
  256. package/dist/Stepper/index.d.mts +0 -169
  257. package/dist/Stepper/index.d.ts +0 -169
  258. package/dist/Stepper/index.js.map +0 -1
  259. package/dist/Stepper/index.mjs.map +0 -1
  260. package/dist/Table/index.d.mts +0 -17
  261. package/dist/Table/index.d.ts +0 -17
  262. package/dist/Table/index.js.map +0 -1
  263. package/dist/Table/index.mjs.map +0 -1
  264. package/dist/Text/index.d.mts +0 -58
  265. package/dist/Text/index.d.ts +0 -58
  266. package/dist/Text/index.js.map +0 -1
  267. package/dist/Text/index.mjs.map +0 -1
  268. package/dist/TextArea/index.d.mts +0 -70
  269. package/dist/TextArea/index.d.ts +0 -70
  270. package/dist/TextArea/index.js.map +0 -1
  271. package/dist/TextArea/index.mjs.map +0 -1
  272. package/dist/Toast/ToastStore/index.d.mts +0 -19
  273. package/dist/Toast/ToastStore/index.d.ts +0 -19
  274. package/dist/Toast/ToastStore/index.js.map +0 -1
  275. package/dist/Toast/ToastStore/index.mjs.map +0 -1
  276. package/dist/Toast/Toaster/index.d.mts +0 -16
  277. package/dist/Toast/Toaster/index.d.ts +0 -16
  278. package/dist/Toast/Toaster/index.js.map +0 -1
  279. package/dist/Toast/Toaster/index.mjs.map +0 -1
  280. package/dist/Toast/index.d.mts +0 -17
  281. package/dist/Toast/index.d.ts +0 -17
  282. package/dist/Toast/index.js.map +0 -1
  283. package/dist/Toast/index.mjs.map +0 -1
  284. package/dist/index.css.map +0 -1
  285. package/dist/index.d.mts +0 -41
  286. package/dist/index.d.ts +0 -41
  287. package/dist/index.js.map +0 -1
  288. package/dist/index.mjs.map +0 -1
  289. package/dist/styles.css.map +0 -1
  290. package/dist/styles.d.mts +0 -2
  291. package/dist/styles.d.ts +0 -2
@@ -81,6 +81,7 @@ var useQuizStore = (0, import_zustand.create)()(
81
81
  setByActivity: (atividade) => set({ byActivity: atividade }),
82
82
  setByQuestionary: (aula) => set({ byQuestionary: aula }),
83
83
  setUserId: (userId) => set({ userId }),
84
+ setUserAnswers: (userAnswers) => set({ userAnswers }),
84
85
  getUserId: () => get().userId,
85
86
  // Navigation
86
87
  goToNextQuestion: () => {
@@ -117,16 +118,9 @@ var useQuizStore = (0, import_zustand.create)()(
117
118
  const { getActiveQuiz, userAnswers } = get();
118
119
  const activeQuiz = getActiveQuiz();
119
120
  if (!activeQuiz) return;
120
- const updatedQuestions = activeQuiz.quiz.questions.map(
121
- (question) => question.id === questionId ? { ...question, answerKey: answerId } : question
122
- );
123
- const updatedQuiz = {
124
- ...activeQuiz.quiz,
125
- questions: updatedQuestions
126
- };
127
121
  const activityId = activeQuiz.quiz.id;
128
122
  const userId = get().getUserId();
129
- if (!userId) {
123
+ if (!userId || userId === "") {
130
124
  console.warn("selectAnswer called before userId is set");
131
125
  return;
132
126
  }
@@ -137,7 +131,7 @@ var useQuizStore = (0, import_zustand.create)()(
137
131
  questionId,
138
132
  activityId,
139
133
  userId,
140
- answer: answerId,
134
+ answer: null,
141
135
  optionId: answerId
142
136
  };
143
137
  let updatedUserAnswers;
@@ -148,7 +142,36 @@ var useQuizStore = (0, import_zustand.create)()(
148
142
  updatedUserAnswers = [...userAnswers, newUserAnswer];
149
143
  }
150
144
  set({
151
- [activeQuiz.type]: updatedQuiz,
145
+ userAnswers: updatedUserAnswers
146
+ });
147
+ },
148
+ selectMultipleAnswer: (questionId, answerIds) => {
149
+ const { getActiveQuiz, userAnswers } = get();
150
+ const activeQuiz = getActiveQuiz();
151
+ if (!activeQuiz) return;
152
+ const activityId = activeQuiz.quiz.id;
153
+ const userId = get().getUserId();
154
+ if (!userId || userId === "") {
155
+ console.warn("selectMultipleAnswer called before userId is set");
156
+ return;
157
+ }
158
+ const filteredUserAnswers = userAnswers.filter(
159
+ (answer) => answer.questionId !== questionId
160
+ );
161
+ const newUserAnswers = answerIds.map(
162
+ (answerId) => ({
163
+ questionId,
164
+ activityId,
165
+ userId,
166
+ answer: null,
167
+ optionId: answerId
168
+ })
169
+ );
170
+ const updatedUserAnswers = [
171
+ ...filteredUserAnswers,
172
+ ...newUserAnswers
173
+ ];
174
+ set({
152
175
  userAnswers: updatedUserAnswers
153
176
  });
154
177
  },
@@ -160,6 +183,10 @@ var useQuizStore = (0, import_zustand.create)()(
160
183
  if (currentQuestion) {
161
184
  const activityId = activeQuiz.quiz.id;
162
185
  const userId = get().getUserId();
186
+ if (!userId || userId === "") {
187
+ console.warn("skipQuestion called before userId is set");
188
+ return;
189
+ }
163
190
  const existingAnswerIndex = userAnswers.findIndex(
164
191
  (answer) => answer.questionId === currentQuestion.id
165
192
  );
@@ -188,6 +215,10 @@ var useQuizStore = (0, import_zustand.create)()(
188
215
  if (!activeQuiz) return;
189
216
  const activityId = activeQuiz.quiz.id;
190
217
  const userId = get().getUserId();
218
+ if (!userId || userId === "") {
219
+ console.warn("addUserAnswer called before userId is set");
220
+ return;
221
+ }
191
222
  const existingAnswerIndex = userAnswers.findIndex(
192
223
  (answer) => answer.questionId === questionId
193
224
  );
@@ -195,7 +226,7 @@ var useQuizStore = (0, import_zustand.create)()(
195
226
  questionId,
196
227
  activityId,
197
228
  userId,
198
- answer: answerId || null,
229
+ answer: null,
199
230
  optionId: answerId || null
200
231
  };
201
232
  if (existingAnswerIndex !== -1) {
@@ -246,7 +277,7 @@ var useQuizStore = (0, import_zustand.create)()(
246
277
  },
247
278
  getAnsweredQuestions: () => {
248
279
  const { userAnswers } = get();
249
- return userAnswers.filter((answer) => answer.answer !== null).length;
280
+ return userAnswers.filter((answer) => answer.optionId !== null).length;
250
281
  },
251
282
  getUnansweredQuestions: () => {
252
283
  const { getActiveQuiz, userAnswers } = get();
@@ -257,8 +288,8 @@ var useQuizStore = (0, import_zustand.create)()(
257
288
  const userAnswer = userAnswers.find(
258
289
  (answer) => answer.questionId === question.id
259
290
  );
260
- const isAnswered = userAnswer && userAnswer.answer !== null;
261
- const isSkipped = userAnswer && userAnswer.answer === null;
291
+ const isAnswered = userAnswer && userAnswer.optionId !== null;
292
+ const isSkipped = userAnswer && userAnswer.optionId === null;
262
293
  if (!isAnswered && !isSkipped) {
263
294
  unansweredQuestions.push(index + 1);
264
295
  }
@@ -267,7 +298,7 @@ var useQuizStore = (0, import_zustand.create)()(
267
298
  },
268
299
  getSkippedQuestions: () => {
269
300
  const { userAnswers } = get();
270
- return userAnswers.filter((answer) => answer.answer === null).length;
301
+ return userAnswers.filter((answer) => answer.optionId === null).length;
271
302
  },
272
303
  getProgress: () => {
273
304
  const { getTotalQuestions, getAnsweredQuestions } = get();
@@ -280,14 +311,14 @@ var useQuizStore = (0, import_zustand.create)()(
280
311
  const userAnswer = userAnswers.find(
281
312
  (answer) => answer.questionId === questionId
282
313
  );
283
- return userAnswer ? userAnswer.answer !== null : false;
314
+ return userAnswer ? userAnswer.optionId !== null : false;
284
315
  },
285
316
  isQuestionSkipped: (questionId) => {
286
317
  const { userAnswers } = get();
287
318
  const userAnswer = userAnswers.find(
288
319
  (answer) => answer.questionId === questionId
289
320
  );
290
- return userAnswer ? userAnswer.answer === null : false;
321
+ return userAnswer ? userAnswer.optionId === null : false;
291
322
  },
292
323
  getCurrentAnswer: () => {
293
324
  const { getCurrentQuestion, userAnswers } = get();
@@ -296,7 +327,16 @@ var useQuizStore = (0, import_zustand.create)()(
296
327
  const userAnswer = userAnswers.find(
297
328
  (answer) => answer.questionId === currentQuestion.id
298
329
  );
299
- return userAnswer?.answer;
330
+ return userAnswer?.optionId;
331
+ },
332
+ getAllCurrentAnswer: () => {
333
+ const { getCurrentQuestion, userAnswers } = get();
334
+ const currentQuestion = getCurrentQuestion();
335
+ if (!currentQuestion) return void 0;
336
+ const userAnswer = userAnswers.filter(
337
+ (answer) => answer.questionId === currentQuestion.id
338
+ );
339
+ return userAnswer;
300
340
  },
301
341
  getQuizTitle: () => {
302
342
  const { getActiveQuiz } = get();
@@ -309,18 +349,8 @@ var useQuizStore = (0, import_zustand.create)()(
309
349
  return `${minutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`;
310
350
  },
311
351
  getUserAnswers: () => {
312
- const { getActiveQuiz, userAnswers } = get();
313
- const activeQuiz = getActiveQuiz();
314
- if (!activeQuiz) return [];
315
- return activeQuiz.quiz.questions.map((question) => {
316
- const userAnswer = userAnswers.find(
317
- (answer) => answer.questionId === question.id
318
- );
319
- return {
320
- ...question,
321
- isSkipped: userAnswer ? userAnswer.answer === null : false
322
- };
323
- });
352
+ const { userAnswers } = get();
353
+ return userAnswers;
324
354
  },
325
355
  getUnansweredQuestionsFromUserAnswers: () => {
326
356
  const { getActiveQuiz, userAnswers } = get();
@@ -331,8 +361,8 @@ var useQuizStore = (0, import_zustand.create)()(
331
361
  const userAnswer = userAnswers.find(
332
362
  (answer) => answer.questionId === question.id
333
363
  );
334
- const hasAnswer = userAnswer && userAnswer.answer !== null;
335
- const isSkipped = userAnswer && userAnswer.answer === null;
364
+ const hasAnswer = userAnswer && userAnswer.optionId !== null;
365
+ const isSkipped = userAnswer && userAnswer.optionId === null;
336
366
  if (!hasAnswer || isSkipped) {
337
367
  unansweredQuestions.push(index + 1);
338
368
  }
@@ -363,7 +393,7 @@ var useQuizStore = (0, import_zustand.create)()(
363
393
  const answer = userAnswers.find(
364
394
  (answer2) => answer2.questionId === questionId
365
395
  );
366
- return answer ? answer.answer !== null : false;
396
+ return answer ? answer.optionId !== null : false;
367
397
  },
368
398
  getQuestionStatusFromUserAnswers: (questionId) => {
369
399
  const { userAnswers } = get();
@@ -371,12 +401,27 @@ var useQuizStore = (0, import_zustand.create)()(
371
401
  (answer2) => answer2.questionId === questionId
372
402
  );
373
403
  if (!answer) return "unanswered";
374
- if (answer.answer === null) return "skipped";
404
+ if (answer.optionId === null) return "skipped";
375
405
  return "answered";
376
406
  },
377
407
  getUserAnswersForActivity: () => {
378
408
  const { userAnswers } = get();
379
409
  return userAnswers;
410
+ },
411
+ setCurrentQuestion: (question) => {
412
+ const { getActiveQuiz } = get();
413
+ const activeQuiz = getActiveQuiz();
414
+ if (!activeQuiz) return;
415
+ const questionIndex = activeQuiz.quiz.questions.findIndex(
416
+ (q) => q.id === question.id
417
+ );
418
+ if (questionIndex === -1) {
419
+ console.warn(
420
+ `Question with id "${question.id}" not found in active quiz`
421
+ );
422
+ return;
423
+ }
424
+ set({ currentQuestionIndex: questionIndex });
380
425
  }
381
426
  };
382
427
  },
@@ -392,4 +437,3 @@ var useQuizStore = (0, import_zustand.create)()(
392
437
  QUESTION_TYPE,
393
438
  useQuizStore
394
439
  });
395
- //# sourceMappingURL=index.js.map
@@ -54,6 +54,7 @@ var useQuizStore = create()(
54
54
  setByActivity: (atividade) => set({ byActivity: atividade }),
55
55
  setByQuestionary: (aula) => set({ byQuestionary: aula }),
56
56
  setUserId: (userId) => set({ userId }),
57
+ setUserAnswers: (userAnswers) => set({ userAnswers }),
57
58
  getUserId: () => get().userId,
58
59
  // Navigation
59
60
  goToNextQuestion: () => {
@@ -90,16 +91,9 @@ var useQuizStore = create()(
90
91
  const { getActiveQuiz, userAnswers } = get();
91
92
  const activeQuiz = getActiveQuiz();
92
93
  if (!activeQuiz) return;
93
- const updatedQuestions = activeQuiz.quiz.questions.map(
94
- (question) => question.id === questionId ? { ...question, answerKey: answerId } : question
95
- );
96
- const updatedQuiz = {
97
- ...activeQuiz.quiz,
98
- questions: updatedQuestions
99
- };
100
94
  const activityId = activeQuiz.quiz.id;
101
95
  const userId = get().getUserId();
102
- if (!userId) {
96
+ if (!userId || userId === "") {
103
97
  console.warn("selectAnswer called before userId is set");
104
98
  return;
105
99
  }
@@ -110,7 +104,7 @@ var useQuizStore = create()(
110
104
  questionId,
111
105
  activityId,
112
106
  userId,
113
- answer: answerId,
107
+ answer: null,
114
108
  optionId: answerId
115
109
  };
116
110
  let updatedUserAnswers;
@@ -121,7 +115,36 @@ var useQuizStore = create()(
121
115
  updatedUserAnswers = [...userAnswers, newUserAnswer];
122
116
  }
123
117
  set({
124
- [activeQuiz.type]: updatedQuiz,
118
+ userAnswers: updatedUserAnswers
119
+ });
120
+ },
121
+ selectMultipleAnswer: (questionId, answerIds) => {
122
+ const { getActiveQuiz, userAnswers } = get();
123
+ const activeQuiz = getActiveQuiz();
124
+ if (!activeQuiz) return;
125
+ const activityId = activeQuiz.quiz.id;
126
+ const userId = get().getUserId();
127
+ if (!userId || userId === "") {
128
+ console.warn("selectMultipleAnswer called before userId is set");
129
+ return;
130
+ }
131
+ const filteredUserAnswers = userAnswers.filter(
132
+ (answer) => answer.questionId !== questionId
133
+ );
134
+ const newUserAnswers = answerIds.map(
135
+ (answerId) => ({
136
+ questionId,
137
+ activityId,
138
+ userId,
139
+ answer: null,
140
+ optionId: answerId
141
+ })
142
+ );
143
+ const updatedUserAnswers = [
144
+ ...filteredUserAnswers,
145
+ ...newUserAnswers
146
+ ];
147
+ set({
125
148
  userAnswers: updatedUserAnswers
126
149
  });
127
150
  },
@@ -133,6 +156,10 @@ var useQuizStore = create()(
133
156
  if (currentQuestion) {
134
157
  const activityId = activeQuiz.quiz.id;
135
158
  const userId = get().getUserId();
159
+ if (!userId || userId === "") {
160
+ console.warn("skipQuestion called before userId is set");
161
+ return;
162
+ }
136
163
  const existingAnswerIndex = userAnswers.findIndex(
137
164
  (answer) => answer.questionId === currentQuestion.id
138
165
  );
@@ -161,6 +188,10 @@ var useQuizStore = create()(
161
188
  if (!activeQuiz) return;
162
189
  const activityId = activeQuiz.quiz.id;
163
190
  const userId = get().getUserId();
191
+ if (!userId || userId === "") {
192
+ console.warn("addUserAnswer called before userId is set");
193
+ return;
194
+ }
164
195
  const existingAnswerIndex = userAnswers.findIndex(
165
196
  (answer) => answer.questionId === questionId
166
197
  );
@@ -168,7 +199,7 @@ var useQuizStore = create()(
168
199
  questionId,
169
200
  activityId,
170
201
  userId,
171
- answer: answerId || null,
202
+ answer: null,
172
203
  optionId: answerId || null
173
204
  };
174
205
  if (existingAnswerIndex !== -1) {
@@ -219,7 +250,7 @@ var useQuizStore = create()(
219
250
  },
220
251
  getAnsweredQuestions: () => {
221
252
  const { userAnswers } = get();
222
- return userAnswers.filter((answer) => answer.answer !== null).length;
253
+ return userAnswers.filter((answer) => answer.optionId !== null).length;
223
254
  },
224
255
  getUnansweredQuestions: () => {
225
256
  const { getActiveQuiz, userAnswers } = get();
@@ -230,8 +261,8 @@ var useQuizStore = create()(
230
261
  const userAnswer = userAnswers.find(
231
262
  (answer) => answer.questionId === question.id
232
263
  );
233
- const isAnswered = userAnswer && userAnswer.answer !== null;
234
- const isSkipped = userAnswer && userAnswer.answer === null;
264
+ const isAnswered = userAnswer && userAnswer.optionId !== null;
265
+ const isSkipped = userAnswer && userAnswer.optionId === null;
235
266
  if (!isAnswered && !isSkipped) {
236
267
  unansweredQuestions.push(index + 1);
237
268
  }
@@ -240,7 +271,7 @@ var useQuizStore = create()(
240
271
  },
241
272
  getSkippedQuestions: () => {
242
273
  const { userAnswers } = get();
243
- return userAnswers.filter((answer) => answer.answer === null).length;
274
+ return userAnswers.filter((answer) => answer.optionId === null).length;
244
275
  },
245
276
  getProgress: () => {
246
277
  const { getTotalQuestions, getAnsweredQuestions } = get();
@@ -253,14 +284,14 @@ var useQuizStore = create()(
253
284
  const userAnswer = userAnswers.find(
254
285
  (answer) => answer.questionId === questionId
255
286
  );
256
- return userAnswer ? userAnswer.answer !== null : false;
287
+ return userAnswer ? userAnswer.optionId !== null : false;
257
288
  },
258
289
  isQuestionSkipped: (questionId) => {
259
290
  const { userAnswers } = get();
260
291
  const userAnswer = userAnswers.find(
261
292
  (answer) => answer.questionId === questionId
262
293
  );
263
- return userAnswer ? userAnswer.answer === null : false;
294
+ return userAnswer ? userAnswer.optionId === null : false;
264
295
  },
265
296
  getCurrentAnswer: () => {
266
297
  const { getCurrentQuestion, userAnswers } = get();
@@ -269,7 +300,16 @@ var useQuizStore = create()(
269
300
  const userAnswer = userAnswers.find(
270
301
  (answer) => answer.questionId === currentQuestion.id
271
302
  );
272
- return userAnswer?.answer;
303
+ return userAnswer?.optionId;
304
+ },
305
+ getAllCurrentAnswer: () => {
306
+ const { getCurrentQuestion, userAnswers } = get();
307
+ const currentQuestion = getCurrentQuestion();
308
+ if (!currentQuestion) return void 0;
309
+ const userAnswer = userAnswers.filter(
310
+ (answer) => answer.questionId === currentQuestion.id
311
+ );
312
+ return userAnswer;
273
313
  },
274
314
  getQuizTitle: () => {
275
315
  const { getActiveQuiz } = get();
@@ -282,18 +322,8 @@ var useQuizStore = create()(
282
322
  return `${minutes.toString().padStart(2, "0")}:${remainingSeconds.toString().padStart(2, "0")}`;
283
323
  },
284
324
  getUserAnswers: () => {
285
- const { getActiveQuiz, userAnswers } = get();
286
- const activeQuiz = getActiveQuiz();
287
- if (!activeQuiz) return [];
288
- return activeQuiz.quiz.questions.map((question) => {
289
- const userAnswer = userAnswers.find(
290
- (answer) => answer.questionId === question.id
291
- );
292
- return {
293
- ...question,
294
- isSkipped: userAnswer ? userAnswer.answer === null : false
295
- };
296
- });
325
+ const { userAnswers } = get();
326
+ return userAnswers;
297
327
  },
298
328
  getUnansweredQuestionsFromUserAnswers: () => {
299
329
  const { getActiveQuiz, userAnswers } = get();
@@ -304,8 +334,8 @@ var useQuizStore = create()(
304
334
  const userAnswer = userAnswers.find(
305
335
  (answer) => answer.questionId === question.id
306
336
  );
307
- const hasAnswer = userAnswer && userAnswer.answer !== null;
308
- const isSkipped = userAnswer && userAnswer.answer === null;
337
+ const hasAnswer = userAnswer && userAnswer.optionId !== null;
338
+ const isSkipped = userAnswer && userAnswer.optionId === null;
309
339
  if (!hasAnswer || isSkipped) {
310
340
  unansweredQuestions.push(index + 1);
311
341
  }
@@ -336,7 +366,7 @@ var useQuizStore = create()(
336
366
  const answer = userAnswers.find(
337
367
  (answer2) => answer2.questionId === questionId
338
368
  );
339
- return answer ? answer.answer !== null : false;
369
+ return answer ? answer.optionId !== null : false;
340
370
  },
341
371
  getQuestionStatusFromUserAnswers: (questionId) => {
342
372
  const { userAnswers } = get();
@@ -344,12 +374,27 @@ var useQuizStore = create()(
344
374
  (answer2) => answer2.questionId === questionId
345
375
  );
346
376
  if (!answer) return "unanswered";
347
- if (answer.answer === null) return "skipped";
377
+ if (answer.optionId === null) return "skipped";
348
378
  return "answered";
349
379
  },
350
380
  getUserAnswersForActivity: () => {
351
381
  const { userAnswers } = get();
352
382
  return userAnswers;
383
+ },
384
+ setCurrentQuestion: (question) => {
385
+ const { getActiveQuiz } = get();
386
+ const activeQuiz = getActiveQuiz();
387
+ if (!activeQuiz) return;
388
+ const questionIndex = activeQuiz.quiz.questions.findIndex(
389
+ (q) => q.id === question.id
390
+ );
391
+ if (questionIndex === -1) {
392
+ console.warn(
393
+ `Question with id "${question.id}" not found in active quiz`
394
+ );
395
+ return;
396
+ }
397
+ set({ currentQuestionIndex: questionIndex });
353
398
  }
354
399
  };
355
400
  },
@@ -364,4 +409,3 @@ export {
364
409
  QUESTION_TYPE,
365
410
  useQuizStore
366
411
  };
367
- //# sourceMappingURL=index.mjs.map
@@ -472,4 +472,3 @@ var Radio_default = Radio;
472
472
  RadioGroupItem,
473
473
  useRadioGroupStore
474
474
  });
475
- //# sourceMappingURL=index.js.map
@@ -454,4 +454,3 @@ export {
454
454
  Radio_default as default,
455
455
  useRadioGroupStore
456
456
  };
457
- //# sourceMappingURL=index.mjs.map
@@ -390,4 +390,3 @@ var Select_default = Select;
390
390
  getLabelAsNode,
391
391
  useSelectStore
392
392
  });
393
- //# sourceMappingURL=index.js.map
@@ -367,4 +367,3 @@ export {
367
367
  getLabelAsNode,
368
368
  useSelectStore
369
369
  };
370
- //# sourceMappingURL=index.mjs.map
@@ -85,4 +85,3 @@ var SelectionButton = (0, import_react.forwardRef)(
85
85
  );
86
86
  SelectionButton.displayName = "SelectionButton";
87
87
  var SelectionButton_default = SelectionButton;
88
- //# sourceMappingURL=index.js.map
@@ -64,4 +64,3 @@ var SelectionButton_default = SelectionButton;
64
64
  export {
65
65
  SelectionButton_default as default
66
66
  };
67
- //# sourceMappingURL=index.mjs.map
@@ -200,4 +200,3 @@ var SkeletonTable = (0, import_react.forwardRef)(
200
200
  SkeletonTable,
201
201
  SkeletonText
202
202
  });
203
- //# sourceMappingURL=index.js.map
@@ -168,4 +168,3 @@ export {
168
168
  SkeletonTable,
169
169
  SkeletonText
170
170
  };
171
- //# sourceMappingURL=index.mjs.map
@@ -387,4 +387,3 @@ var Stepper_default = Stepper;
387
387
  0 && (module.exports = {
388
388
  Step
389
389
  });
390
- //# sourceMappingURL=index.js.map
@@ -360,4 +360,3 @@ export {
360
360
  Step,
361
361
  Stepper_default as default
362
362
  };
363
- //# sourceMappingURL=index.mjs.map
@@ -161,4 +161,3 @@ var Table_default = Table;
161
161
  TableHeader,
162
162
  TableRow
163
163
  });
164
- //# sourceMappingURL=index.js.map
@@ -130,4 +130,3 @@ export {
130
130
  TableRow,
131
131
  Table_default as default
132
132
  };
133
- //# sourceMappingURL=index.mjs.map
@@ -81,4 +81,3 @@ var Text = ({
81
81
  );
82
82
  };
83
83
  var Text_default = Text;
84
- //# sourceMappingURL=index.js.map
@@ -58,4 +58,3 @@ var Text_default = Text;
58
58
  export {
59
59
  Text_default as default
60
60
  };
61
- //# sourceMappingURL=index.mjs.map
@@ -217,4 +217,3 @@ var TextArea = (0, import_react.forwardRef)(
217
217
  );
218
218
  TextArea.displayName = "TextArea";
219
219
  var TextArea_default = TextArea;
220
- //# sourceMappingURL=index.js.map
@@ -200,4 +200,3 @@ var TextArea_default = TextArea;
200
200
  export {
201
201
  TextArea_default as default
202
202
  };
203
- //# sourceMappingURL=index.mjs.map
@@ -39,4 +39,3 @@ var useToastStore = (0, import_zustand.create)((set) => ({
39
39
  }
40
40
  }));
41
41
  var ToastStore_default = useToastStore;
42
- //# sourceMappingURL=index.js.map
@@ -18,4 +18,3 @@ var ToastStore_default = useToastStore;
18
18
  export {
19
19
  ToastStore_default as default
20
20
  };
21
- //# sourceMappingURL=index.mjs.map
@@ -158,4 +158,3 @@ var Toaster_default = Toaster;
158
158
  0 && (module.exports = {
159
159
  useToast
160
160
  });
161
- //# sourceMappingURL=index.js.map
@@ -131,4 +131,3 @@ export {
131
131
  Toaster_default as default,
132
132
  useToast
133
133
  };
134
- //# sourceMappingURL=index.mjs.map
@@ -108,4 +108,3 @@ var Toast = ({
108
108
  );
109
109
  };
110
110
  var Toast_default = Toast;
111
- //# sourceMappingURL=index.js.map
@@ -87,4 +87,3 @@ var Toast_default = Toast;
87
87
  export {
88
88
  Toast_default as default
89
89
  };
90
- //# sourceMappingURL=index.mjs.map